diff --git a/frontend/src/components/ImportExcel/index.vue b/frontend/src/components/ImportExcel/index.vue index ff76805..f1bfb50 100644 --- a/frontend/src/components/ImportExcel/index.vue +++ b/frontend/src/components/ImportExcel/index.vue @@ -41,9 +41,6 @@ - - - @@ -52,7 +49,7 @@ import { ref } from 'vue' import { useDownload } from '@/hooks/useDownload' import { Download } from '@element-plus/icons-vue' -import { ElMessage, ElNotification, UploadRawFile, UploadRequestOptions } from 'element-plus' +import { ElMessage, ElNotification, type UploadRawFile, type UploadRequestOptions } from 'element-plus' export interface ExcelParameterProps { title: string // 标题 @@ -67,7 +64,7 @@ export interface ExcelParameterProps { } // 是否覆盖数据 -const isCover = ref(false) +const isCover = ref(0) // 最大文件上传数 const excelLimit = ref(1) // dialog状态 @@ -85,6 +82,7 @@ const emit = defineEmits<{ const acceptParams = (params: ExcelParameterProps) => { parameter.value = { ...parameter.value, ...params } dialogVisible.value = true + isCover.value = 0 } // Excel 导入模板下载 @@ -92,9 +90,10 @@ const downloadTemp = () => { if (!parameter.value.tempApi) return useDownload(parameter.value.tempApi, `${parameter.value.title}模板`, { pattern: parameter.value.patternId }, false) } - +const currentFile = ref(null) // 文件上传 const uploadExcel = async (param: UploadRequestOptions) => { + currentFile.value = param let excelFormData = new FormData() excelFormData.append('file', param.file) if (parameter.value.patternId) { @@ -103,26 +102,43 @@ const uploadExcel = async (param: UploadRequestOptions) => { excelFormData.append('planId', parameter.value.planId) - isCover.value && excelFormData.append('isCover', isCover.value as unknown as Blob) + excelFormData.append('cover', isCover.value as unknown as Blob) //await parameter.value.importApi!(excelFormData); - await parameter.value.importApi!(excelFormData).then(res => handleImportResponse(res)) + const res = await parameter.value.importApi!(excelFormData) + await handleImportResponse(res) parameter.value.getTableList && parameter.value.getTableList() dialogVisible.value = false } async function handleImportResponse(res: any) { - - if (res.type === 'application/json') { const fileReader = new FileReader() fileReader.onloadend = () => { try { const jsonData = JSON.parse(fileReader.result) if (jsonData.code === 'A0000') { + isCover.value = 0 ElMessage.success('导入成功') } else { + if (jsonData.code === 'A02099') { + const dev = jsonData.data.join('
') + ElMessageBox.confirm(`

以下被检设备已存在,${jsonData.message}

${dev}

`, { + confirmButtonText: '确定', + cancelButtonText: '取消', + dangerouslyUseHTMLString: true, + title: '提示', + type: 'warning' + }).then(() => { + isCover.value = 1 + if (currentFile.value) { + uploadExcel(currentFile.value) + } + }) + return + } ElMessageBox.alert(jsonData.message, { + confirmButtonText: '确定', title: '导入结果', type: 'error' })