报表可输入需求
a系统数据报表REPORT_A,共有10个字段,其中三项需手动输入,7项从已知数据表x中取出。B从b系统接口定时任务更新,现要求REPORT_A展示实时数据,同时三项属性被修改,计算汇总数据。
设计思路
从X中取出数据,每次用户查询时计算一次,用唯一属性作为是否已存入依据。将此数据保存或更新到数据库表REPORT_A。将前端查询条件去查REPORT_A。
关键点 用户操作和系统操作的唯一性
优化
将后端结算结果处理后返回,减少一次查库。那么如何保证用户键入的三项属性被写入前台,同时满足用户更改的需求?
伪代码
java
1. listFromX=> calculateXList
2. => (唯一属性非ID)currentDBList =>
3. currentDBList ID和三项属性 CopyTo calculateXList
4. => return calculateXList
单图最新需求
文件存储: 数据库表仅存文件地址/group/xxx ;访问域名取系统实时配置 imgAddress
前端el-upload如下:limit=1,在已有图时无法继续上传替换
html
<el-upload style="float: left"
:show-file-list="false"
action="/api/xxx/put-file"
accept=".jpg,.jpeg,.png"
:limit="9"
:on-progress="() => isUploading = row.id"
:on-success="attachementsSuccess"
multiple>
<el-button size="mini" type="primary" :icon="isUploading === row.id?'el-icon-loading':''"
:disabled="isUploading === row.id"
>点击上传
</el-upload>
设计思路
前端: 取得上传文件服务器成功返回文件地址数组imgGroupArray**,反转取第一个返回给后端**;
javascript
attachementsSuccess(res, file, fileList) {
let fl = fileList.map(resFile => {
if (resFile.response) {
return resFile.response.data.link;
}
});
//取最新一张照片存储,isUploading 为当前数据ID
fl.reverse();
let newFileOnlyOne = [];
newFileOnlyOne.push(fl[0]);
update({id: this.isUploading ,attachements: newFileOnlyOne}).then(() => {
this.$message.success('图片上传成功');
this.isUploading = -1;
this.refreshData();
})
}
后端:将attachements取出;若包含域名此旧图,仅有/group则为新图将附件表ByID记录删除,写入新ID(此处不考虑服务器资源)