From 2773b0ec2429fac93d06c705c781f39808d8e247 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 26 Jul 2025 20:48:43 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E5=9B=BE=E7=89=87=E3=80=81?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=A4=B1=E8=B4=A5=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=90=8E=E7=BB=AD=E6=97=A0=E6=B3=95=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=20https://github.com/yudaocode/yuda?= =?UTF-8?q?o-ui-admin-vue3/issues/86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/UploadFile/src/UploadFile.vue | 4 ++++ src/components/UploadFile/src/UploadImgs.vue | 18 ++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/components/UploadFile/src/UploadFile.vue b/src/components/UploadFile/src/UploadFile.vue index 175408620..96fe1bc70 100644 --- a/src/components/UploadFile/src/UploadFile.vue +++ b/src/components/UploadFile/src/UploadFile.vue @@ -122,7 +122,9 @@ const beforeUpload: UploadProps['beforeUpload'] = (file: UploadRawFile) => { return false } message.success('正在上传文件,请稍候...') + // 只有在验证通过后才增加计数器 uploadNumber.value++ + return true } // 处理上传的文件发生变化 // const handleFileChange = (uploadFile: UploadFile): void => { @@ -149,6 +151,8 @@ const handleExceed: UploadProps['onExceed'] = (): void => { // 上传错误提示 const excelUploadError: UploadProps['onError'] = (): void => { message.error('导入数据失败,请您重新上传!') + // 上传失败时减少计数器,避免后续上传被阻塞 + uploadNumber.value = Math.max(0, uploadNumber.value - 1) } // 删除上传文件 const handleRemove = (file: UploadFile) => { diff --git a/src/components/UploadFile/src/UploadImgs.vue b/src/components/UploadFile/src/UploadImgs.vue index 3f2fd11a8..d1386e46a 100644 --- a/src/components/UploadFile/src/UploadImgs.vue +++ b/src/components/UploadFile/src/UploadImgs.vue @@ -97,20 +97,28 @@ const uploadList = ref([]) const beforeUpload: UploadProps['beforeUpload'] = (rawFile) => { const imgSize = rawFile.size / 1024 / 1024 < props.fileSize const imgType = props.fileType - if (!imgType.includes(rawFile.type as FileTypes)) + const isValidType = imgType.includes(rawFile.type as FileTypes) + const isValidSize = imgSize + + if (!isValidType) ElNotification({ title: '温馨提示', message: '上传图片不符合所需的格式!', type: 'warning' }) - if (!imgSize) + if (!isValidSize) ElNotification({ title: '温馨提示', message: `上传图片大小不能超过 ${props.fileSize}M!`, type: 'warning' }) - uploadNumber.value++ - return imgType.includes(rawFile.type as FileTypes) && imgSize + + // 只有在验证通过后才增加计数器 + if (isValidType && isValidSize) { + uploadNumber.value++ + } + + return isValidType && isValidSize } // 图片上传成功 @@ -172,6 +180,8 @@ const uploadError = () => { message: '图片上传失败,请您重新上传!', type: 'error' }) + // 上传失败时减少计数器,避免后续上传被阻塞 + uploadNumber.value = Math.max(0, uploadNumber.value - 1) } // 文件数超出提示