|
@@ -119,8 +119,8 @@ const autoUpload = ref(props.autoUpload)
|
|
|
const typevalue = ref(props.typevalue)
|
|
|
const isListFile = ref(props.isListFile)
|
|
|
|
|
|
-// 按类型存储未上传的文件
|
|
|
-const unUploadedFiles = ref({})
|
|
|
+// 统一存储未上传的文件(不再按类型区分)
|
|
|
+const unUploadedFiles = ref([])
|
|
|
|
|
|
//监听props变化
|
|
|
watch(() => [
|
|
@@ -145,7 +145,7 @@ watch(() => [
|
|
|
isListFile.value = list
|
|
|
})
|
|
|
|
|
|
-// 类型变化监听
|
|
|
+// 类型变化监听 - 核心修改:切换类型时将未上传文件添加到文件列表
|
|
|
watch(() => props.typevalue, async (newType, oldType) => {
|
|
|
await nextTick()
|
|
|
|
|
@@ -154,9 +154,8 @@ watch(() => props.typevalue, async (newType, oldType) => {
|
|
|
file.id || file.status === 'success',
|
|
|
)
|
|
|
|
|
|
- // 恢复新类型对应的未上传文件
|
|
|
- const newTypeUnUploaded = unUploadedFiles.value[newType] || []
|
|
|
- fileListData.value = [...uploadedFiles, ...newTypeUnUploaded]
|
|
|
+ // 将统一未上传列表中的文件添加到当前文件列表
|
|
|
+ fileListData.value = [...uploadedFiles, ...unUploadedFiles.value]
|
|
|
}, { immediate: true })
|
|
|
|
|
|
// 深度监听fileList变化
|
|
@@ -190,7 +189,7 @@ const uploadExceed = () => {
|
|
|
}
|
|
|
const q = 1
|
|
|
|
|
|
-// 文件变化处理
|
|
|
+// 文件变化处理 - 改为统一未上传列表
|
|
|
const handleFileChange = async (file, fileList) => {
|
|
|
if (!isFileSize(file?.size, 60)) {
|
|
|
window?.$message?.warning('文件大小不能超过60M!')
|
|
@@ -207,14 +206,11 @@ const handleFileChange = async (file, fileList) => {
|
|
|
|
|
|
fileListData.value = [...processedList]
|
|
|
|
|
|
- if (typevalue.value) {
|
|
|
- const currentUnUploaded = fileListData.value.filter(file =>
|
|
|
- !file.id && !['success', 'uploading'].includes(file.status),
|
|
|
- )
|
|
|
- unUploadedFiles.value[typevalue.value] = [...currentUnUploaded]
|
|
|
- } else {
|
|
|
- window?.$message?.warning('请先选择附件类型再添加文件')
|
|
|
- }
|
|
|
+ // 存储未上传文件到统一列表(过滤已上传和上传中的)
|
|
|
+ const currentUnUploaded = fileListData.value.filter(file =>
|
|
|
+ !file.id && !['success', 'uploading'].includes(file.status),
|
|
|
+ )
|
|
|
+ unUploadedFiles.value = [...currentUnUploaded]
|
|
|
}
|
|
|
|
|
|
//上传文件前预览pdf
|
|
@@ -245,13 +241,11 @@ const onDragEnd = () => {
|
|
|
}))
|
|
|
}
|
|
|
|
|
|
-// 手动删除文件
|
|
|
+// 手动删除文件 - 从统一未上传列表移除
|
|
|
const handleRemove = (file) => {
|
|
|
- if (typevalue.value && unUploadedFiles.value[typevalue.value]) {
|
|
|
- const index = unUploadedFiles.value[typevalue.value].findIndex(f => f.uid === file.uid)
|
|
|
- if (index !== -1) {
|
|
|
- unUploadedFiles.value[typevalue.value].splice(index, 1)
|
|
|
- }
|
|
|
+ const index = unUploadedFiles.value.findIndex(f => f.uid === file.uid)
|
|
|
+ if (index !== -1) {
|
|
|
+ unUploadedFiles.value.splice(index, 1)
|
|
|
}
|
|
|
delUploadData(file)
|
|
|
}
|
|
@@ -268,11 +262,10 @@ const finishFileNum = ref(0)
|
|
|
const uploadSuccess = (response, file) => {
|
|
|
finishFileNum.value++
|
|
|
|
|
|
- if (typevalue.value && unUploadedFiles.value[typevalue.value]) {
|
|
|
- const index = unUploadedFiles.value[typevalue.value].findIndex(f => f.uid === file.uid)
|
|
|
- if (index !== -1) {
|
|
|
- unUploadedFiles.value[typevalue.value].splice(index, 1)
|
|
|
- }
|
|
|
+ // 从统一未上传列表中移除已成功上传的文件
|
|
|
+ const index = unUploadedFiles.value.findIndex(f => f.uid === file.uid)
|
|
|
+ if (index !== -1) {
|
|
|
+ unUploadedFiles.value.splice(index, 1)
|
|
|
}
|
|
|
|
|
|
if (beforeFileNum.value === finishFileNum.value) {
|
|
@@ -288,13 +281,9 @@ const uploadError = (error, file) => {
|
|
|
errorFileNum.value++
|
|
|
window?.$message?.error('上传失败')
|
|
|
|
|
|
- if (typevalue.value) {
|
|
|
- if (!unUploadedFiles.value[typevalue.value]) {
|
|
|
- unUploadedFiles.value[typevalue.value] = []
|
|
|
- }
|
|
|
- if (!unUploadedFiles.value[typevalue.value].some(f => f.uid === file.uid)) {
|
|
|
- unUploadedFiles.value[typevalue.value].push(file)
|
|
|
- }
|
|
|
+ // 确保上传失败的文件保留在未上传列表中
|
|
|
+ if (!unUploadedFiles.value.some(f => f.uid === file.uid)) {
|
|
|
+ unUploadedFiles.value.push(file)
|
|
|
}
|
|
|
|
|
|
const num = finishFileNum.value + errorFileNum.value
|
|
@@ -331,11 +320,10 @@ const delUploadData = async (file) => {
|
|
|
fileListData.value.splice(index, 1)
|
|
|
}
|
|
|
|
|
|
- if (typevalue.value && unUploadedFiles.value[typevalue.value]) {
|
|
|
- const unUploadedIndex = unUploadedFiles.value[typevalue.value].findIndex(f => f.uid === file.uid)
|
|
|
- if (unUploadedIndex !== -1) {
|
|
|
- unUploadedFiles.value[typevalue.value].splice(unUploadedIndex, 1)
|
|
|
- }
|
|
|
+ // 从统一未上传列表中移除
|
|
|
+ const unUploadedIndex = unUploadedFiles.value.findIndex(f => f.uid === file.uid)
|
|
|
+ if (unUploadedIndex !== -1) {
|
|
|
+ unUploadedFiles.value.splice(unUploadedIndex, 1)
|
|
|
}
|
|
|
|
|
|
uploadRef.value.abort()
|
|
@@ -426,9 +414,8 @@ const submitUpload = async () => {
|
|
|
if (!error && code === 200) {
|
|
|
window?.$message?.success('上传成功')
|
|
|
await sortFile()
|
|
|
- if (typevalue.value) {
|
|
|
- unUploadedFiles.value[typevalue.value] = []
|
|
|
- }
|
|
|
+ // 清空统一未上传列表
|
|
|
+ unUploadedFiles.value = []
|
|
|
emit('change', { type: 'success' })
|
|
|
emit('update', [...fileListData.value])
|
|
|
} else if (code === 413) {
|
|
@@ -447,9 +434,8 @@ const submitUpload = async () => {
|
|
|
if (!error && code === 200) {
|
|
|
window?.$message?.success('上传成功')
|
|
|
await sortFile()
|
|
|
- if (typevalue.value) {
|
|
|
- unUploadedFiles.value[typevalue.value] = []
|
|
|
- }
|
|
|
+ // 清空统一未上传列表
|
|
|
+ unUploadedFiles.value = []
|
|
|
emit('change', { type: 'success' })
|
|
|
emit('update', [...fileListData.value])
|
|
|
} else if (code === 413) {
|