diff --git a/src/views/doc/manage.vue b/src/views/doc/manage.vue index 2158425..85668e7 100644 --- a/src/views/doc/manage.vue +++ b/src/views/doc/manage.vue @@ -71,6 +71,9 @@ let spaceNodeUid="" //用来判断树组件的展开和关闭,如何只是展 const modListOrGrild=ref(true) const modRecycling=ref(false) +//进度条 +const percentage=ref(0) +const onprogress=ref(false) const Departs = computed(() => { return `${'p0'+userStore.userInfoCont.userId},${userStore.userInfoCont.company},${userStore.userInfoCont.department},${userStore.userInfoCont.organization}` @@ -326,6 +329,10 @@ function restoreMatter(row:matterInfo){ //加载目录文件列表 function onLoadMatterList(){ + //重置进度条 + percentage.value=0 + onprogress.value=false + let _page: matterPage = { page: paginInfo.value.page, pageSize: 50, @@ -542,9 +549,20 @@ async function onlyOfficeEdit(row:matterInfo){ //自定义上传,目的是支持多文件上传, 使用html原生组件,是为了解决并发问题 async function onCustomUpload(e:Event){ const files = e.target!.files??[] - for(let ff of files){ - await handleSingleFile(ff) + onprogress.value=true + const count=files.length + let result="" + for(let index = 0; index < count; index++){ + onprogress.value=true + const ff = files[index] + await handleSingleFile(ff).catch((err)=>{ + console.log(err) + result+=err + }) + percentage.value = Number(((index + 1) / count).toPrecision(2)) * 100 } + if(result!="") alert(result) + onLoadMatterList() //刷新 } @@ -557,17 +575,28 @@ async function handleSingleFile(ff:File){ const res = await doFileUpload(fields,'/hxpan/api/matter/upload') if(res.code!=200){ console.log(ff.name+"上传失败! ") - alert(ff.name+"上传失败! ") + throw new Error(ff.name+"上传失败!\n ") } } //文件夹上传,原理:自定义的input组件,一次拿到所有需要上传的文件列表,然后依次上传 //能减少并发问题 async function uploadFolder(e:Event){ + onprogress.value=true const files = e.target!.files??[] - for(let f of files){ - await handleFolderFile(f) + const count=files.length + let result="" + for(let index = 0; index < count; index++){ + onprogress.value=true + const f = files[index] + await handleFolderFile(f).catch((err)=>{ + console.log(err) + result+= (f as File).name+"上传失败\n" + }) + percentage.value = Number(((index + 1) / count).toPrecision(2)) * 100 } + if(result!="") alert(result) + onLoadMatterList() //刷新 } @@ -593,7 +622,7 @@ async function handleFolderFile(option:File){ puuid=newnodes[0].uuid }else{ console.log(_path+"上传失败! ") - alert(_path +" 上传失败! ") + throw new Error(_path +" 上传失败!\n ") return } }else{ @@ -607,7 +636,7 @@ async function handleFolderFile(option:File){ const res = await doFileUpload(fields,'/hxpan/api/matter/upload') if(res.code!=200){ console.log(_path+"上传失败! ") - alert(_path +" 上传失败! ") + throw new Error(_path +" 上传失败!\n ") } } @@ -830,6 +859,10 @@ const handleSelectionChange = (val:matterInfo[]) => {