UPDATE: 重新修改导入被检设备逻辑

This commit is contained in:
贾同学
2025-10-21 14:02:52 +08:00
parent b2db5622bc
commit be84092cfe

View File

@@ -41,9 +41,6 @@
</template>
</el-upload>
</el-form-item>
<el-form-item v-if="parameter.showCover" label="数据覆盖 :">
<el-switch v-model="isCover" />
</el-form-item>
</el-form>
</el-dialog>
</template>
@@ -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<UploadRequestOptions>(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('<br>')
ElMessageBox.confirm(`<p>以下被检设备已存在,${jsonData.message}</p><p>${dev}</p>`, {
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'
})