update 优化 文件与图片上传组件 使用id存储回显
This commit is contained in:
parent
4d7def4311
commit
af6a08398e
@ -32,6 +32,7 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,6 +59,19 @@ public class SysOssController extends BaseController {
|
|||||||
return iSysOssService.queryPageList(bo, pageQuery);
|
return iSysOssService.queryPageList(bo, pageQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询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对象存储
|
* 上传OSS对象存储
|
||||||
*/
|
*/
|
||||||
|
@ -8,6 +8,7 @@ import com.ruoyi.system.domain.vo.SysOssVo;
|
|||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件上传 服务层
|
* 文件上传 服务层
|
||||||
@ -18,6 +19,8 @@ public interface ISysOssService {
|
|||||||
|
|
||||||
TableDataInfo<SysOssVo> queryPageList(SysOssBo sysOss, PageQuery pageQuery);
|
TableDataInfo<SysOssVo> queryPageList(SysOssBo sysOss, PageQuery pageQuery);
|
||||||
|
|
||||||
|
List<SysOssVo> listByIds(Collection<Long> ossIds);
|
||||||
|
|
||||||
SysOss getById(Long ossId);
|
SysOss getById(Long ossId);
|
||||||
|
|
||||||
SysOss upload(MultipartFile file);
|
SysOss upload(MultipartFile file);
|
||||||
|
@ -42,6 +42,11 @@ public class SysOssServiceImpl implements ISysOssService {
|
|||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SysOssVo> listByIds(Collection<Long> ossIds) {
|
||||||
|
return baseMapper.selectVoById(ossIds);
|
||||||
|
}
|
||||||
|
|
||||||
private LambdaQueryWrapper<SysOss> buildQueryWrapper(SysOssBo bo) {
|
private LambdaQueryWrapper<SysOss> buildQueryWrapper(SysOssBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
LambdaQueryWrapper<SysOss> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<SysOss> lqw = Wrappers.lambdaQuery();
|
||||||
|
@ -9,6 +9,14 @@ export function listOss(query) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询OSS对象基于id串
|
||||||
|
export function listByIds(ossId) {
|
||||||
|
return request({
|
||||||
|
url: '/system/oss/listByIds/' + ossId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 删除OSS对象存储
|
// 删除OSS对象存储
|
||||||
export function delOss(ossId) {
|
export function delOss(ossId) {
|
||||||
return request({
|
return request({
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getToken } from "@/utils/auth";
|
import { getToken } from "@/utils/auth";
|
||||||
import { delOss } from "@/api/system/oss";
|
import { listByIds, delOss } from "@/api/system/oss";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "FileUpload",
|
name: "FileUpload",
|
||||||
@ -83,19 +83,24 @@ export default {
|
|||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
value: {
|
value: {
|
||||||
handler(val) {
|
async handler(val) {
|
||||||
if (val) {
|
if (val) {
|
||||||
let temp = 1;
|
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 => {
|
this.fileList = list.map(item => {
|
||||||
// 字符串回显处理 如果此处存的是url可直接回显 如果存的是id需要调用接口查出来
|
item = { name: item.name, url: item.url, ossId: item.ossId };
|
||||||
if (typeof item === "string") {
|
|
||||||
item = { name: item, url: item };
|
|
||||||
} else {
|
|
||||||
item = { name: item.name, url: item.url, ossId: item.ossId };
|
|
||||||
}
|
|
||||||
item.uid = item.uid || new Date().getTime() + temp++;
|
item.uid = item.uid || new Date().getTime() + temp++;
|
||||||
return item;
|
return item;
|
||||||
});
|
});
|
||||||
@ -162,7 +167,7 @@ export default {
|
|||||||
this.fileList = this.fileList.concat(this.uploadList);
|
this.fileList = this.fileList.concat(this.uploadList);
|
||||||
this.uploadList = [];
|
this.uploadList = [];
|
||||||
this.number = 0;
|
this.number = 0;
|
||||||
this.$emit("input", this.fileList);
|
this.$emit("input", this.listToString(this.fileList));
|
||||||
this.$modal.closeLoading();
|
this.$modal.closeLoading();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -175,7 +180,7 @@ export default {
|
|||||||
let ossId = this.fileList[index].ossId;
|
let ossId = this.fileList[index].ossId;
|
||||||
delOss(ossId);
|
delOss(ossId);
|
||||||
this.fileList.splice(index, 1);
|
this.fileList.splice(index, 1);
|
||||||
this.$emit("input", this.fileList);
|
this.$emit("input", this.listToString(this.fileList));
|
||||||
},
|
},
|
||||||
// 获取文件名称
|
// 获取文件名称
|
||||||
getFileName(name) {
|
getFileName(name) {
|
||||||
@ -186,6 +191,15 @@ export default {
|
|||||||
return 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>
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getToken } from "@/utils/auth";
|
import { getToken } from "@/utils/auth";
|
||||||
import { delOss } from "@/api/system/oss";
|
import { listByIds, delOss } from "@/api/system/oss";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
@ -87,19 +87,21 @@ export default {
|
|||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
value: {
|
value: {
|
||||||
handler(val) {
|
async handler(val) {
|
||||||
if (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 => {
|
this.fileList = list.map(item => {
|
||||||
// 字符串回显处理 如果此处存的是url可直接回显 如果存的是id需要调用接口查出来
|
// 此处name使用ossId 防止删除出现重名
|
||||||
if (typeof item === "string") {
|
item = { name: item.ossId, url: item.url, ossId: item.ossId };
|
||||||
item = { name: item, url: item };
|
|
||||||
} else {
|
|
||||||
// 此处name使用ossId 防止删除出现重名
|
|
||||||
item = { name: item.ossId, url: item.url, ossId: item.ossId };
|
|
||||||
}
|
|
||||||
return item;
|
return item;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -125,7 +127,7 @@ export default {
|
|||||||
let ossId = this.fileList[findex].ossId;
|
let ossId = this.fileList[findex].ossId;
|
||||||
delOss(ossId);
|
delOss(ossId);
|
||||||
this.fileList.splice(findex, 1);
|
this.fileList.splice(findex, 1);
|
||||||
this.$emit("input", this.fileList);
|
this.$emit("input", this.listToString(this.fileList));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 上传成功回调
|
// 上传成功回调
|
||||||
@ -136,7 +138,7 @@ export default {
|
|||||||
this.fileList = this.fileList.concat(this.uploadList);
|
this.fileList = this.fileList.concat(this.uploadList);
|
||||||
this.uploadList = [];
|
this.uploadList = [];
|
||||||
this.number = 0;
|
this.number = 0;
|
||||||
this.$emit("input", this.fileList);
|
this.$emit("input", this.listToString(this.fileList));
|
||||||
this.$modal.closeLoading();
|
this.$modal.closeLoading();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -189,6 +191,15 @@ export default {
|
|||||||
this.dialogImageUrl = file.url;
|
this.dialogImageUrl = file.url;
|
||||||
this.dialogVisible = true;
|
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>
|
</script>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user