From 1fd09f8ca369f93e936df04201d37f34d21dff28 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 28 二月 2023 19:57:33 +0800 Subject: [PATCH] update 优化 获取系统url存储重复问题 --- ruoyi-ui/src/components/FileUpload/index.vue | 71 +++++++++++++++++++++-------------- 1 files changed, 42 insertions(+), 29 deletions(-) diff --git a/ruoyi-ui/src/components/FileUpload/index.vue b/ruoyi-ui/src/components/FileUpload/index.vue index 5f1e236..2e33c1b 100644 --- a/ruoyi-ui/src/components/FileUpload/index.vue +++ b/ruoyi-ui/src/components/FileUpload/index.vue @@ -12,7 +12,7 @@ :show-file-list="false" :headers="headers" class="upload-file-uploader" - ref="upload" + ref="fileUpload" > <!-- 涓婁紶鎸夐挳 --> <el-button size="mini" type="primary">閫夊彇鏂囦欢</el-button> @@ -41,6 +41,7 @@ <script> import { getToken } from "@/utils/auth"; +import { listByIds, delOss } from "@/api/system/oss"; export default { name: "FileUpload", @@ -73,7 +74,7 @@ number: 0, uploadList: [], baseUrl: process.env.VUE_APP_BASE_API, - uploadFileUrl: process.env.VUE_APP_BASE_API + "/system/oss/upload", // 涓婁紶鐨勫浘鐗囨湇鍔″櫒鍦板潃 + uploadFileUrl: process.env.VUE_APP_BASE_API + "/system/oss/upload", // 涓婁紶鏂囦欢鏈嶅姟鍣ㄥ湴鍧� headers: { Authorization: "Bearer " + getToken(), }, @@ -82,16 +83,24 @@ }, watch: { value: { - handler(val) { + async handler(val) { if (val) { let temp = 1; // 棣栧厛灏嗗�艰浆涓烘暟缁� - const list = Array.isArray(val) ? val : this.value.split(','); + let list; + if (Array.isArray(val)) { + list = val; + } else { + await listByIds(val).then(res => { + list = res.data.map(oss => { + oss = { name: oss.originalName, url: oss.url, ossId: oss.ossId }; + return oss; + }); + }) + } // 鐒跺悗灏嗘暟缁勮浆涓哄璞℃暟缁� this.fileList = list.map(item => { - if (typeof item === "string") { - item = { name: item, url: item }; - } + item = { name: item.name, url: item.url, ossId: item.ossId }; item.uid = item.uid || new Date().getTime() + temp++; return item; }); @@ -115,15 +124,9 @@ handleBeforeUpload(file) { // 鏍℃鏂囦欢绫诲瀷 if (this.fileType) { - let fileExtension = ""; - if (file.name.lastIndexOf(".") > -1) { - fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1); - } - const isTypeOk = this.fileType.some((type) => { - if (file.type.indexOf(type) > -1) return true; - if (fileExtension && fileExtension.indexOf(type) > -1) return true; - return false; - }); + const fileName = file.name.split('.'); + const fileExt = fileName[fileName.length - 1]; + const isTypeOk = this.fileType.indexOf(fileExt) >= 0; if (!isTypeOk) { this.$modal.msgError(`鏂囦欢鏍煎紡涓嶆纭�, 璇蜂笂浼�${this.fileType.join("/")}鏍煎紡鏂囦欢!`); return false; @@ -147,36 +150,46 @@ }, // 涓婁紶澶辫触 handleUploadError(err) { - this.$modal.msgError("涓婁紶鍥剧墖澶辫触锛岃閲嶈瘯"); - this.$modal.closeLoading() + this.$modal.msgError("涓婁紶鏂囦欢澶辫触锛岃閲嶈瘯"); + this.$modal.closeLoading(); }, // 涓婁紶鎴愬姛鍥炶皟 handleUploadSuccess(res, file) { if (res.code === 200) { - this.uploadList.push({ name: res.data.fileName, url: res.data.url }); - if (this.uploadList.length === this.number) { - this.fileList = this.fileList.concat(this.uploadList); - this.uploadList = []; - this.number = 0; - this.$emit("input", this.listToString(this.fileList)); - this.$modal.closeLoading(); - } + this.uploadList.push({ name: res.data.fileName, url: res.data.url, ossId: res.data.ossId }); + this.uploadedSuccessfully(); } else { - this.$modal.msgError(res.msg); + this.number--; this.$modal.closeLoading(); + this.$modal.msgError(res.msg); + this.$refs.fileUpload.handleRemove(file); + this.uploadedSuccessfully(); } }, // 鍒犻櫎鏂囦欢 handleDelete(index) { + let ossId = this.fileList[index].ossId; + delOss(ossId); this.fileList.splice(index, 1); this.$emit("input", this.listToString(this.fileList)); }, + // 涓婁紶缁撴潫澶勭悊 + uploadedSuccessfully() { + if (this.number > 0 && this.uploadList.length === this.number) { + this.fileList = this.fileList.concat(this.uploadList); + this.uploadList = []; + this.number = 0; + this.$emit("input", this.listToString(this.fileList)); + this.$modal.closeLoading(); + } + }, // 鑾峰彇鏂囦欢鍚嶇О getFileName(name) { + // 濡傛灉鏄痷rl閭d箞鍙栨渶鍚庣殑鍚嶅瓧 濡傛灉涓嶆槸鐩存帴杩斿洖 if (name.lastIndexOf("/") > -1) { return name.slice(name.lastIndexOf("/") + 1); } else { - return ""; + return name; } }, // 瀵硅薄杞垚鎸囧畾瀛楃涓插垎闅� @@ -184,7 +197,7 @@ let strs = ""; separator = separator || ","; for (let i in list) { - strs += list[i].url + separator; + strs += list[i].ossId + separator; } return strs != "" ? strs.substr(0, strs.length - 1) : ""; }, -- Gitblit v1.9.3