diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue index df668ae4..121e5863 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue @@ -186,7 +186,7 @@ + }" name="files" :show-file-list="false" :auto-upload="false" :data="matUploadData" :on-change="matUploadChange" @success="handleSuccess" @error="handleError" :before-upload="before" class="upload-file-uploader"> 上传 @@ -290,7 +290,7 @@ import { deleteFile, downloadFile, getFilePage } from '@/api/infra/file' import download from '@/utils/download' import * as UserApi from '@/api/system/user' -const reload = inject('reload') +const reload: any = inject('reload') const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 @@ -372,9 +372,7 @@ const handleStatus = async (num) => { query.id = formData.value.id query.type = 'update' - openerror() - - reload() + // reload() } // 根据入库类型显示上游单号 @@ -396,42 +394,45 @@ const matUploadData = ref({ businessId: formData.value.id, businessFileType: 'MATERIAL' }) -const matUploadChange = (file, files) => { - matUploadFiles.value = files - refreshAttachments(files, 'MATERIAL') + +// 记录待上传、成功上传及失败上传的文件数量 +const sumbefore = ref(0) +const successfulUploadsCount = ref(0) +const failedUploadsCount = ref(0) + +// 处理单个文件上传成功的情况 +const handleSuccess = (response: any, file: UploadUserFile) => { + successfulUploadsCount.value++ + // 更新附件信息等其他逻辑... + console.log('successfulUploadsCount.value', successfulUploadsCount.value) } -const failedAttachments = ref([]) -const failedAttachmentsName = ref() -const UpError = (err, file, fileList) => { - // 当有上传错误时 - if (err) { +// 处理单个文件上传失败的情况 +const handleError = (error: Error, file: UploadUserFile) => { + failedUploadsCount.value++ + if (failedUploadsCount.value > 0) { + // 当有上传错误时 // 将失败的附件添加到failedAttachments.value数组中 failedAttachments.value.push(file) failedAttachmentsName.value = failedAttachments.value.map((value) => value.name) + console.log(failedAttachmentsName.value) } + console.log('failedUploadsCount.value', failedUploadsCount.value) } -const openerror = () => { - - - setTimeout(() => { - if(failedAttachmentsName.value.length>0){ - // 弹出错误信息提示框 - ElMessageBox.alert( - // 使用错误信息作为提示内容 - `文件名为:${failedAttachmentsName.value.join(' / ')}上传失败`, - `文件格式不正确或网络问题 请您稍后再试`, - { - dangerouslyUseHTMLString: false, // 由于我们不是使用HTML字符串,所以这里设置为false - confirmButtonText: '知道了', - center: true - } - ) - } - }, 1000) +// 文件上传前的钩子 +const before = (rawFile) => { + sumbefore.value++ +} +// 当文件列表发生变化时,更新待上传文件数量 添加文件、上传成功和上传失败时都会被调用 +const matUploadChange = (file: any, files: UploadUserFile[]) => { + matUploadFiles.value = files + refreshAttachments(files, 'MATERIAL') } +const failedAttachments = ref([]) +const failedAttachmentsName = ref() + const refreshAttachments = (files, type) => { formData.value.attachments = formData.value.attachments.filter((value) => value.id) @@ -449,6 +450,26 @@ const refreshAttachments = (files, type) => { // 排序 formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime) + + // 提示用户上传失败文件 + ElMessageBox.alert( + // 使用错误信息作为提示内容 + `文件名为:${failedAttachmentsName.value.join(' / ')}上传失败`, + `文件格式不正确或网络问题 请您稍后再试`, + { + dangerouslyUseHTMLString: false, + confirmButtonText: '知道了', + center: true + } + ) + // 文件上传一遍 上传总数等于要上传文件时 刷新页面 + const sum = successfulUploadsCount.value + failedUploadsCount.value + console.log('sum', sum) + console.log('要上传文件数量', sumbefore.value) + if (sum == sumbefore.value && sumbefore.value > 0 && sum > 0) { + console.log('刷新页面') + reload() + } } // 删除附件 @@ -509,11 +530,14 @@ const saveFormData = async () => { await initStatus(formData.value.status) //formData.value = await StorageApi.getStorage(formData.value.id) - message.success(t(commonResult)) + // message.success(t(commonResult)) } finally { formLoading.value = false } } + +// 当前正在上传的文件数量 +let currentUploadingFiles = 0 const submitForm = async () => { // 校验表单 await formRef.value.validate() @@ -538,8 +562,7 @@ const submitForm = async () => { query.id = formData.value.id query.type = 'update' //页面重新加载 - openerror() - reload() + // reload() } var matCount = 1