|
|
@@ -68,7 +68,13 @@
|
|
|
</template>
|
|
|
<script lang="ts" setup>
|
|
|
import { propTypes } from '@/utils/propTypes'
|
|
|
-import type { UploadInstance, UploadProps, UploadRawFile, UploadUserFile } from 'element-plus'
|
|
|
+import {
|
|
|
+ ElMessage,
|
|
|
+ type UploadInstance,
|
|
|
+ type UploadProps,
|
|
|
+ type UploadRawFile,
|
|
|
+ type UploadUserFile
|
|
|
+} from 'element-plus'
|
|
|
import { isString } from '@/utils/is'
|
|
|
import { useUpload } from '@/components/UploadFile/src/useUpload'
|
|
|
import { UploadFile } from 'element-plus/es/components/upload/src/upload'
|
|
|
@@ -99,6 +105,21 @@ const uploadNumber = ref<number>(0)
|
|
|
|
|
|
const { uploadUrl, httpRequest } = useUpload()
|
|
|
|
|
|
+/** 上传中常驻提示(duration:0),成功或失败后手动关闭 */
|
|
|
+let uploadingMessageClose: { close(): void } | null = null
|
|
|
+const closeUploadingMessage = () => {
|
|
|
+ uploadingMessageClose?.close()
|
|
|
+ uploadingMessageClose = null
|
|
|
+}
|
|
|
+const openUploadingMessageOnce = () => {
|
|
|
+ if (uploadingMessageClose) return
|
|
|
+ uploadingMessageClose = ElMessage.warning({
|
|
|
+ message: '正在上传文件,请稍候...',
|
|
|
+ duration: 0,
|
|
|
+ showClose: false
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
// 文件上传之前判断
|
|
|
const beforeUpload: UploadProps['beforeUpload'] = (file: UploadRawFile) => {
|
|
|
if (fileList.value.length >= props.limit) {
|
|
|
@@ -122,7 +143,7 @@ const beforeUpload: UploadProps['beforeUpload'] = (file: UploadRawFile) => {
|
|
|
message.error(`上传文件大小不能超过${props.fileSize}MB!`)
|
|
|
return false
|
|
|
}
|
|
|
- message.success('正在上传文件,请稍候...')
|
|
|
+ openUploadingMessageOnce()
|
|
|
uploadNumber.value++
|
|
|
}
|
|
|
// 处理上传的文件发生变化
|
|
|
@@ -131,7 +152,6 @@ const beforeUpload: UploadProps['beforeUpload'] = (file: UploadRawFile) => {
|
|
|
// }
|
|
|
// 文件上传成功
|
|
|
const handleFileSuccess: UploadProps['onSuccess'] = (res: any): void => {
|
|
|
- message.success('上传成功')
|
|
|
// 删除自身
|
|
|
const index = fileList.value.findIndex((item) => item.response?.data === res.data)
|
|
|
fileList.value.splice(index, 1)
|
|
|
@@ -141,6 +161,8 @@ const handleFileSuccess: UploadProps['onSuccess'] = (res: any): void => {
|
|
|
name: res.data
|
|
|
})
|
|
|
if (uploadList.value.length == uploadNumber.value) {
|
|
|
+ closeUploadingMessage()
|
|
|
+ message.success('上传成功')
|
|
|
fileList.value.push(...uploadList.value)
|
|
|
uploadList.value = []
|
|
|
uploadNumber.value = 0
|
|
|
@@ -153,6 +175,7 @@ const handleExceed: UploadProps['onExceed'] = (): void => {
|
|
|
}
|
|
|
// 上传错误提示
|
|
|
const excelUploadError: UploadProps['onError'] = (): void => {
|
|
|
+ closeUploadingMessage()
|
|
|
message.error('导入数据失败,请您重新上传!')
|
|
|
}
|
|
|
// 删除上传文件
|