update 优化 文件与图片上传组件 使用id存储回显
| | |
| | | import java.io.IOException; |
| | | import java.util.Arrays; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询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对象存储") |
| | |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 文件上传 服务层 |
| | |
| | | |
| | | TableDataInfo<SysOssVo> queryPageList(SysOssBo sysOss, PageQuery pageQuery); |
| | | |
| | | List<SysOssVo> listByIds(Collection<Long> ossIds); |
| | | |
| | | SysOss getById(Long ossId); |
| | | |
| | | SysOss upload(MultipartFile file); |
| | |
| | | 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(); |
| | |
| | | }) |
| | | } |
| | | |
| | | // 查询OSS对象基于id串 |
| | | export function listByIds(ossId) { |
| | | return request({ |
| | | url: '/system/oss/listByIds/' + ossId, |
| | | method: 'get' |
| | | }) |
| | | } |
| | | |
| | | // 删除OSS对象存储 |
| | | export function delOss(ossId) { |
| | | return request({ |
| | |
| | | |
| | | <script> |
| | | import { getToken } from "@/utils/auth"; |
| | | import { delOss } from "@/api/system/oss"; |
| | | import { listByIds, delOss } from "@/api/system/oss"; |
| | | |
| | | export default { |
| | | name: "FileUpload", |
| | |
| | | }, |
| | | 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 => { |
| | | // 字符串回显处理 如果此处存的是url可直接回显 如果存的是id需要调用接口查出来 |
| | | 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; |
| | | }); |
| | |
| | | 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 { |
| | |
| | | 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) { |
| | |
| | | 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> |
| | |
| | | |
| | | <script> |
| | | import { getToken } from "@/utils/auth"; |
| | | import { delOss } from "@/api/system/oss"; |
| | | import { listByIds, delOss } from "@/api/system/oss"; |
| | | |
| | | export default { |
| | | props: { |
| | |
| | | }, |
| | | 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 => { |
| | | // 字符串回显处理 如果此处存的是url可直接回显 如果存的是id需要调用接口查出来 |
| | | 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 { |
| | |
| | | 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)); |
| | | } |
| | | }, |
| | | // 上传成功回调 |
| | |
| | | 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 { |
| | |
| | | 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> |