From 4ba6d6b23d0815bbecbd3cab2b9b44224836da47 Mon Sep 17 00:00:00 2001 From: jmal Date: Wed, 1 May 2024 14:12:17 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=B7=BB=E5=8A=A0=E5=90=8C=E5=90=8D?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E6=8F=90=E7=A4=BA(Close=20?= =?UTF-8?q?#81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/file-api.js | 13 +++++- .../SimpleUploader/globalUploader.vue | 41 +++++++++++++++++-- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/api/file-api.js b/src/api/file-api.js index 555506b..60be654 100644 --- a/src/api/file-api.js +++ b/src/api/file-api.js @@ -1,5 +1,6 @@ -import request from '@/utils/request' -const qs = require('qs') +import request from "@/utils/request"; + +const qs = require("qs"); export default { // 上传 @@ -14,6 +15,14 @@ export default { params }) }, + // 检查文件是否存在 + checkExist: function (params) { + return request({ + url: "checkExist", + method: "post", + params + }) + }, // 上传文件夹 uploadFolder: function(params) { return request({ diff --git a/src/components/SimpleUploader/globalUploader.vue b/src/components/SimpleUploader/globalUploader.vue index 84e871f..e593b75 100755 --- a/src/components/SimpleUploader/globalUploader.vue +++ b/src/components/SimpleUploader/globalUploader.vue @@ -6,7 +6,7 @@ ref="uploader" :options="options" :file-status-text="statusText" - :auto-start="true" + :auto-start="false" class="uploader-app" @files-added="onFilesAdded" @file-success="onFileSuccess" @@ -321,10 +321,43 @@ export default { folder: this.$route.query.folder } }, - onFilesAdded(files) { + isPath(str) { + // 这个正则表达式检测路径中的斜杠字符 + return /[/\\]/.test(str); + }, + async onFilesAdded(files) { if (files.length === 0) { return } + let filenames = files.map(file => file.name) + const paths = Object.keys(this.uploader.filePaths) + paths.forEach(path => { + if (this.isPath(path)) { + // 取第一级 + const folder = path.split('/')[0] + filenames.push(folder) + } + }) + const query = { + filenames: filenames, + ...this.params + } + const res = await api.checkExist(query) + if (res.data.exist) { + this.$confirm('文件已存在,是否覆盖?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.doUploadBefore(files) + }).catch(() => { + this.uploader.cancel() + }) + } else { + this.doUploadBefore(files) + } + }, + doUploadBefore(files) { this.fileListLength = this.uploader.fileList.length const filePaths = this.uploader.filePaths const paths = Object.keys(filePaths) @@ -362,7 +395,9 @@ export default { ...this.params } }) - store.dispatch('updateMessage', {event: 'fileAdded', data: null}) + }) + this.$nextTick(() => { + this.uploader.resume() }) }, onFileProgress(rootFile, file, chunk) {