From af6a08398e2bc22f3c8a3a615cbd9e23190be906 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期四, 12 五月 2022 10:55:44 +0800 Subject: [PATCH] update 优化 文件与图片上传组件 使用id存储回显 --- ruoyi-ui/src/api/system/oss.js | 8 ++++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java | 5 ++ ruoyi-ui/src/components/FileUpload/index.vue | 36 ++++++++++++----- ruoyi-ui/src/components/ImageUpload/index.vue | 35 +++++++++++------ ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java | 14 +++++++ ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java | 3 + 6 files changed, 78 insertions(+), 23 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java index a128a15..d4e52ac 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java @@ -32,6 +32,7 @@ import java.io.IOException; import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -59,6 +60,19 @@ } /** + * 鏌ヨOSS瀵硅薄鍩轰簬id涓� + */ + @ApiOperation("鏌ヨOSS瀵硅薄鍩轰簬ID") + @SaCheckPermission("system:oss:list") + @GetMapping("/listByIds/{ossIds}") + public R<List<SysOssVo>> listByIds(@ApiParam("OSS瀵硅薄ID涓�") + @NotEmpty(message = "涓婚敭涓嶈兘涓虹┖") + @PathVariable Long[] ossIds) { + List<SysOssVo> list = iSysOssService.listByIds(Arrays.asList(ossIds)); + return R.ok(list); + } + + /** * 涓婁紶OSS瀵硅薄瀛樺偍 */ @ApiOperation("涓婁紶OSS瀵硅薄瀛樺偍") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java index b444e6d..c55e5bc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java @@ -8,6 +8,7 @@ import org.springframework.web.multipart.MultipartFile; import java.util.Collection; +import java.util.List; /** * 鏂囦欢涓婁紶 鏈嶅姟灞� @@ -18,6 +19,8 @@ TableDataInfo<SysOssVo> queryPageList(SysOssBo sysOss, PageQuery pageQuery); + List<SysOssVo> listByIds(Collection<Long> ossIds); + SysOss getById(Long ossId); SysOss upload(MultipartFile file); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java index 25dfd5c..28bee3d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java @@ -42,6 +42,11 @@ return TableDataInfo.build(result); } + @Override + public List<SysOssVo> listByIds(Collection<Long> ossIds) { + return baseMapper.selectVoById(ossIds); + } + private LambdaQueryWrapper<SysOss> buildQueryWrapper(SysOssBo bo) { Map<String, Object> params = bo.getParams(); LambdaQueryWrapper<SysOss> lqw = Wrappers.lambdaQuery(); diff --git a/ruoyi-ui/src/api/system/oss.js b/ruoyi-ui/src/api/system/oss.js index 83adca5..7d80026 100644 --- a/ruoyi-ui/src/api/system/oss.js +++ b/ruoyi-ui/src/api/system/oss.js @@ -9,6 +9,14 @@ }) } +// 鏌ヨOSS瀵硅薄鍩轰簬id涓� +export function listByIds(ossId) { + return request({ + url: '/system/oss/listByIds/' + ossId, + method: 'get' + }) +} + // 鍒犻櫎OSS瀵硅薄瀛樺偍 export function delOss(ossId) { return request({ diff --git a/ruoyi-ui/src/components/FileUpload/index.vue b/ruoyi-ui/src/components/FileUpload/index.vue index f41a712..e999f14 100644 --- a/ruoyi-ui/src/components/FileUpload/index.vue +++ b/ruoyi-ui/src/components/FileUpload/index.vue @@ -41,7 +41,7 @@ <script> import { getToken } from "@/utils/auth"; -import { delOss } from "@/api/system/oss"; +import { listByIds, delOss } from "@/api/system/oss"; export default { name: "FileUpload", @@ -83,19 +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 => { - // 瀛楃涓插洖鏄惧鐞� 濡傛灉姝ゅ瀛樼殑鏄痷rl鍙洿鎺ュ洖鏄� 濡傛灉瀛樼殑鏄痠d闇�瑕佽皟鐢ㄦ帴鍙f煡鍑烘潵 - if (typeof item === "string") { - item = { name: item, url: item }; - } else { - item = { name: item.name, url: item.url, ossId: item.ossId }; - } + item = { name: item.name, url: item.url, ossId: item.ossId }; item.uid = item.uid || new Date().getTime() + temp++; return item; }); @@ -162,7 +167,7 @@ this.fileList = this.fileList.concat(this.uploadList); this.uploadList = []; this.number = 0; - this.$emit("input", this.fileList); + this.$emit("input", this.listToString(this.fileList)); this.$modal.closeLoading(); } } else { @@ -175,7 +180,7 @@ let ossId = this.fileList[index].ossId; delOss(ossId); this.fileList.splice(index, 1); - this.$emit("input", this.fileList); + this.$emit("input", this.listToString(this.fileList)); }, // 鑾峰彇鏂囦欢鍚嶇О getFileName(name) { @@ -186,6 +191,15 @@ return name; } }, + // 瀵硅薄杞垚鎸囧畾瀛楃涓插垎闅� + listToString(list, separator) { + let strs = ""; + separator = separator || ","; + for (let i in list) { + strs += list[i].ossId + separator; + } + return strs != "" ? strs.substr(0, strs.length - 1) : ""; + }, }, }; </script> diff --git a/ruoyi-ui/src/components/ImageUpload/index.vue b/ruoyi-ui/src/components/ImageUpload/index.vue index 2d1ed57..6219979 100644 --- a/ruoyi-ui/src/components/ImageUpload/index.vue +++ b/ruoyi-ui/src/components/ImageUpload/index.vue @@ -44,7 +44,7 @@ <script> import { getToken } from "@/utils/auth"; -import { delOss } from "@/api/system/oss"; +import { listByIds, delOss } from "@/api/system/oss"; export default { props: { @@ -87,19 +87,21 @@ }, watch: { value: { - handler(val) { + async handler(val) { if (val) { // 棣栧厛灏嗗�艰浆涓烘暟缁� - 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; + }) + } // 鐒跺悗灏嗘暟缁勮浆涓哄璞℃暟缁� this.fileList = list.map(item => { - // 瀛楃涓插洖鏄惧鐞� 濡傛灉姝ゅ瀛樼殑鏄痷rl鍙洿鎺ュ洖鏄� 濡傛灉瀛樼殑鏄痠d闇�瑕佽皟鐢ㄦ帴鍙f煡鍑烘潵 - if (typeof item === "string") { - item = { name: item, url: item }; - } else { - // 姝ゅname浣跨敤ossId 闃叉鍒犻櫎鍑虹幇閲嶅悕 - item = { name: item.ossId, url: item.url, ossId: item.ossId }; - } + // 姝ゅname浣跨敤ossId 闃叉鍒犻櫎鍑虹幇閲嶅悕 + item = { name: item.ossId, url: item.url, ossId: item.ossId }; return item; }); } else { @@ -125,7 +127,7 @@ let ossId = this.fileList[findex].ossId; delOss(ossId); this.fileList.splice(findex, 1); - this.$emit("input", this.fileList); + this.$emit("input", this.listToString(this.fileList)); } }, // 涓婁紶鎴愬姛鍥炶皟 @@ -136,7 +138,7 @@ this.fileList = this.fileList.concat(this.uploadList); this.uploadList = []; this.number = 0; - this.$emit("input", this.fileList); + this.$emit("input", this.listToString(this.fileList)); this.$modal.closeLoading(); } } else { @@ -189,6 +191,15 @@ this.dialogImageUrl = file.url; this.dialogVisible = true; }, + // 瀵硅薄杞垚鎸囧畾瀛楃涓插垎闅� + listToString(list, separator) { + let strs = ""; + separator = separator || ","; + for (let i in list) { + strs += list[i].ossId + separator; + } + return strs != "" ? strs.substr(0, strs.length - 1) : ""; + }, } }; </script> -- Gitblit v1.9.3