Commit 2f669943 by wanglizhen

知识库导入

parent 755912ad
......@@ -104,3 +104,32 @@ export function delValue(data) {
})
}
/**
* 知识库 - 导出excel
* @param {*} data
* @returns
*/
export function exportExcel(data) {
return request({
url: '/core/dictionaryexcel/export',
method: 'post',
data: data,
responseType: 'blob'
})
}
/**
* 知识库 - 导入
* @param {*} data
* @returns
*/
export function importfile(data) {
return request({
url: '/core/dictionaryexcel/importfile',
method: 'post',
data: data,
headers: {
'Content-Type': 'multipart/form-data'
}
})
}
\ No newline at end of file
......@@ -8,7 +8,7 @@ import AddClass from './modules/AddClass.vue' // 分类
import AddValue from './modules/AddValue.vue' // 值
import uploadModule from './modules/uploadModule.vue' // 上传模块
import { dictinaryTypes, query, delDictionaryType, delValue } from '@/api/ruleConfig/dictionary'
import { dictinaryTypes, query, delDictionaryType, delValue, exportExcel } from '@/api/ruleConfig/dictionary'
const splitNum = ref(0.31) // 左右分割比例
......@@ -118,7 +118,7 @@ const modalConfirm = () => {
}
if (value === queryParams.value.typecode) {
getData()
}else{
} else {
getData('class')
}
})
......@@ -143,7 +143,7 @@ const modalConfirm = () => {
// 分类查看
const classView = (item) => {
if(queryParams.value.typecode === item.value) return
if (queryParams.value.typecode === item.value) return
queryParams.value.typecode = item.value
queryParams.value.typename = item.text
getTableData()
......@@ -159,6 +159,7 @@ const AddDomainConfirm = (item) => {
console.log('导入', item)
getTableData()
}
modalPopData.type = ''
modalPopData.show = false
}
......@@ -172,7 +173,7 @@ const importClick = () => {
// 获取分类名称
const getClassName = (value) => {
const item = classList.value.find(item => item.value === value)
return item? item.text : ''
return item ? item.text : ''
}
// 获取列表数据
......@@ -183,7 +184,7 @@ const getData = (type) => {
if (classList.value.length <= 0) return
if (type === 'class') {
getTableData()
}else {
} else {
queryParams.value.typecode = classList.value[0].value
queryParams.value.typename = classList.value[0].text
getTableData()
......@@ -200,6 +201,21 @@ const getTableData = () => {
})
}
// 导出excel
const exportExcelFunc = () => {
exportExcel({ typecode: queryParams.value.typecode }).then(response => {
const { data } = response;
const blob = new Blob([response], { type: 'application/vnd.ms-excel,charset=utf-8' });
const link = document.createElement('a')
link.href = URL.createObjectURL(blob)
link.download = `${queryParams.value.typename}知识库.xlsx`
link.click()
URL.revokeObjectURL(link.href)
ElMessage.success('导出成功')
})
}
onMounted(() => {
getData()
})
......@@ -249,7 +265,7 @@ onMounted(() => {
</el-form-item>
<div style="display: flex;">
<el-button icon="Upload" type="primary" @click="importClick">导入</el-button>
<el-button icon="Download" type="success">导出</el-button>
<el-button icon="Download" type="success" @click="exportExcelFunc">导出</el-button>
<el-button icon="Plus" type="primary" @click="addValueClick('add')">新增值</el-button>
</div>
</div>
......@@ -287,8 +303,8 @@ onMounted(() => {
<template #content>
<AddClass :itemData="addClassForm" :type="modalPopData.operation" @cancel="modalPopCancel"
@confirm="AddDomainConfirm" v-if="modalPopData.type === 'class'" />
<AddValue :itemData="addValueForm" :type="modalPopData.operation" :classDict="classList" @cancel="modalPopCancel"
@confirm="AddDomainConfirm" v-if="modalPopData.type === 'value'" />
<AddValue :itemData="addValueForm" :type="modalPopData.operation" :classDict="classList"
@cancel="modalPopCancel" @confirm="AddDomainConfirm" v-if="modalPopData.type === 'value'" />
<uploadModule @cancel="modalPopCancel" @confirm="AddDomainConfirm" v-if="modalPopData.type === 'upload'" />
</template>
</ModalPop>
......
<script setup lang="ts" name="AddClass">
import { ref } from "vue";
import CustomUpload from "@/components/CustomUpload/index.vue"
import { ref, reactive } from "vue";
import { ElMessage } from "element-plus";
import CustomUpload from "@/components/CustomUpload/index.vue";
import { importfile } from "@/api/ruleConfig/dictionary";
const emit = defineEmits(["update:modelValue", "cancel", "confirm"]);
const emit = defineEmits(["cancel", "confirm"]);
const radioValue = ref(1);
const fileList = ref<File[]>([]);
const uploadLoading = ref(false);
const uploadFile = ref({});
const smart = ref(1)
// 取消
const cancel = () => {
......@@ -14,32 +17,45 @@ const cancel = () => {
// 确认
const confirm = () => {
console.log(fileList.value);
// emit("confirm");
if (!uploadFile.value.name) {
ElMessage.error("请先选择文件");
return;
}
uploadLoading.value = true;
const formData = new FormData();
formData.append('fileUpload', uploadFile.value.raw);
formData.append('smart', smart.value.toString());
importfile(formData).then((res) => {
const { flag } = res;
if (flag) {
uploadLoading.value = false;
ElMessage.success('导入成功');
emit("confirm");
}
});
};
const handleUpload = (file: File) => {
console.log(file);
// 上传文件
// 处理上传结果
// 更新modelValue
const handleFileChange = (file) => {
uploadFile.value = file;
};
</script>
<template>
<div>
<div class="mb20">
<CustomUpload v-model:file-list="fileList" :limit="1" :needType="false" :needSize="false" :listShow="false" prompt='点击或拖拽文件到此处上传' />
<CustomUpload :prompt='uploadFile ? uploadFile.name : ""' :loading="uploadLoading"
@file-change="handleFileChange" />
</div>
<el-form-item label="上传方式" label-width="200px">
<el-radio-group v-model="radioValue">
<el-radio-group v-model="smart">
<el-radio :label="1">覆盖原数据</el-radio>
<el-radio :label="2">追加数据</el-radio>
<el-radio :label="0">追加数据</el-radio>
</el-radio-group>
</el-form-item>
<div class="btn">
<el-button type="info" style="width: 150px;" @click="cancel">取消</el-button>
<el-button type="primary" style="width: 150px;" @click="confirm">确认</el-button>
<el-button type="primary" :loading="uploadLoading" style="width: 150px;" @click="confirm">确认</el-button>
</div>
</div>
</template>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论