From 9809322f61234c14527dbba570a2672e72efadd1 Mon Sep 17 00:00:00 2001 From: jmal Date: Mon, 4 Aug 2025 15:57:45 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=94=B6=E8=97=8F?= =?UTF-8?q?=E3=80=81=E6=A0=87=E7=AD=BE=E7=AD=89=E9=A1=B5=E9=9D=A2=E6=8B=96?= =?UTF-8?q?=E6=8B=BD=E4=B8=8A=E4=BC=A0=E8=B7=AF=E5=BE=84=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ShowFile/ShowFile.vue | 30 ++++++++++--------- .../SimpleUploader/globalUploader.vue | 15 ++++++---- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/components/ShowFile/ShowFile.vue b/src/components/ShowFile/ShowFile.vue index 2efadba..5cccb3b 100644 --- a/src/components/ShowFile/ShowFile.vue +++ b/src/components/ShowFile/ShowFile.vue @@ -1209,6 +1209,12 @@ export default { case 'msg/file/change': this.onmessage(msg.data) break + case 'getUploadParams': + this.$store.dispatch('updateMessage', { + event: 'onUploadParams', + data: this.getUploadParams(), + }) + break } }, searchFileName(newValue) { @@ -2325,26 +2331,14 @@ export default { // 打开文件选择框 this.$store.dispatch('updateMessage', { event: 'openUploader', - data: { - // 传入的参数 - folder: this.$route.query.searchOpenFolder || this.$route.query.folder, - currentDirectory: this.getQueryPath(), - username: this.$store.state.user.name, - userId: this.$store.state.user.userId, - }, + data: this.getUploadParams(), }) }, uploadFolder() { if (window.uploader.supportDirectory) { this.$store.dispatch('updateMessage', { event: 'uploadFolder', - data: { - // 传入的参数 - folder: this.$route.query.searchOpenFolder || this.$route.query.folder, - currentDirectory: this.getQueryPath(), - username: this.$store.state.user.name, - userId: this.$store.state.user.userId, - }, + data: this.getUploadParams(), }) } else { this.$message({ @@ -2353,6 +2347,14 @@ export default { }) } }, + getUploadParams() { + return { + folder: this.$route.query.searchOpenFolder || this.$route.query.folder, + currentDirectory: this.getQueryPath(), + username: this.$store.state.user.name, + userId: this.$store.state.user.userId, + } + }, // 浏览器的返回事件 goBack() { if (this.pathList.length <= 1) { diff --git a/src/components/SimpleUploader/globalUploader.vue b/src/components/SimpleUploader/globalUploader.vue index a50eecd..fc4513a 100755 --- a/src/components/SimpleUploader/globalUploader.vue +++ b/src/components/SimpleUploader/globalUploader.vue @@ -229,6 +229,9 @@ export default { $('#folder-uploader-btn').click() } break + case 'onUploadParams': + this.params = msg.data || {} + break } } }, @@ -309,18 +312,17 @@ export default { }); }, onDragenter(e) { - this.params = { - currentDirectory: this.$route.query.path || '/', - username: this.$store.state.user.name, - userId: this.$store.state.user.userId, - folder: this.$route.query.searchOpenFolder || this.$route.query.folder - } + this.$store.dispatch('updateMessage', {event: 'getUploadParams'}) }, isPath(str) { // 这个正则表达式检测路径中的斜杠字符 return /[/\\]/.test(str); }, async onFilesAdded(files) { + // 等待50ms + setTimeout(async () => await this.doFilesAdded(files), 50) + }, + async doFilesAdded(files) { if (files.length === 0) { return } @@ -337,6 +339,7 @@ export default { filenames: filenames, ...this.params } + console.log('上传文件', query) const res = await api.checkExist(query) if (res.data.exist) { this.$confirm('文件已存在,是否覆盖?', '提示', { From 06986db74f7bd3eeba2eaedb944d3f57d9c8d3e0 Mon Sep 17 00:00:00 2001 From: jmal Date: Mon, 4 Aug 2025 16:35:09 +0800 Subject: [PATCH 2/4] =?UTF-8?q?perf:=20=E5=A2=9E=E5=BC=BA=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E8=BF=87=E7=A8=8B=EF=BC=8C=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E6=94=B9=E8=BF=9B=E7=9A=84=E5=8F=82=E6=95=B0=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=92=8C=E7=8A=B6=E6=80=81=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ShowFile/ShowFile.vue | 10 +---- .../SimpleUploader/globalUploader.vue | 34 +++++++++++----- src/views/home/mobile/index.vue | 40 ++++++++++++------- 3 files changed, 51 insertions(+), 33 deletions(-) diff --git a/src/components/ShowFile/ShowFile.vue b/src/components/ShowFile/ShowFile.vue index 5cccb3b..5eaaf3b 100644 --- a/src/components/ShowFile/ShowFile.vue +++ b/src/components/ShowFile/ShowFile.vue @@ -2329,17 +2329,11 @@ export default { }, upload() { // 打开文件选择框 - this.$store.dispatch('updateMessage', { - event: 'openUploader', - data: this.getUploadParams(), - }) + this.$store.dispatch('updateMessage', {event: 'openUploader'}) }, uploadFolder() { if (window.uploader.supportDirectory) { - this.$store.dispatch('updateMessage', { - event: 'uploadFolder', - data: this.getUploadParams(), - }) + this.$store.dispatch('updateMessage', {event: 'uploadFolder'}) } else { this.$message({ message: '该浏览器不支持上传文件夹', diff --git a/src/components/SimpleUploader/globalUploader.vue b/src/components/SimpleUploader/globalUploader.vue index fc4513a..58a0601 100755 --- a/src/components/SimpleUploader/globalUploader.vue +++ b/src/components/SimpleUploader/globalUploader.vue @@ -192,6 +192,7 @@ export default { successMsg: null, enableDragUpload: true,// 是否启用拖拽上传 uploader: null, + resolveFilesAddedPromise: null, // 用于等待获取上传参数 } }, computed: { @@ -218,19 +219,21 @@ export default { } break case 'openUploader': - this.params = msg.data || {} if (this.$refs.uploadBtn) { $('#global-uploader-btn').click() } break case 'uploadFolder': - this.params = msg.data || {} if (this.$refs.folderBtn) { $('#folder-uploader-btn').click() } break case 'onUploadParams': this.params = msg.data || {} + if (this.resolveFilesAddedPromise) { + this.resolveFilesAddedPromise(); + this.resolveFilesAddedPromise = null; + } break } } @@ -311,21 +314,33 @@ export default { }); }); }, - onDragenter(e) { - this.$store.dispatch('updateMessage', {event: 'getUploadParams'}) + onDragenter() { }, isPath(str) { // 这个正则表达式检测路径中的斜杠字符 return /[/\\]/.test(str); }, async onFilesAdded(files) { - // 等待50ms - setTimeout(async () => await this.doFilesAdded(files), 50) + if (files.length === 0) { + return; + } + try { + const waitForParams = new Promise(resolve => { + this.resolveFilesAddedPromise = resolve; + }); + + await this.$store.dispatch('updateMessage', { event: 'getUploadParams' }); + + await waitForParams; + + await this.doFilesAdded(files); + + } catch (error) { + console.error("Failed to add files:", error); + this.uploaderCancel(); + } }, async doFilesAdded(files) { - if (files.length === 0) { - return - } let filenames = files.map(file => file.name) const paths = Object.keys(this.uploader.filePaths) paths.forEach(path => { @@ -339,7 +354,6 @@ export default { filenames: filenames, ...this.params } - console.log('上传文件', query) const res = await api.checkExist(query) if (res.data.exist) { this.$confirm('文件已存在,是否覆盖?', '提示', { diff --git a/src/views/home/mobile/index.vue b/src/views/home/mobile/index.vue index 10704f6..f050a63 100644 --- a/src/views/home/mobile/index.vue +++ b/src/views/home/mobile/index.vue @@ -273,7 +273,7 @@