- decorator 仅操作 G 列「导入失败原因」字体颜色为黑色,无背景填充 - 修正失败明细列宽映射 key,确保与后端表头完全一致 - 恢复所有列的宽度设置,避免内容拥挤 - 后端添加事务控制,确保导入数据全部正确才提交,否则整体回滚
3.0 KiB
3.0 KiB
2026-07-28 工作日志
货物类型导入模板美化
- 文件:
src/views/base/cargo-type.vue的handleTemplate() - 改动(第一次):表头行加主色底色
#409EFF+ 白色加粗字体 + 居中对齐 + 细边框;行高 42。 - 改动(调整后):按用户反馈,表头底色改为统一灰色
#D9D9D9+ 黑色加粗字体,行高降为 30。 - 导入失败明细
decorateCargoTypeFailDetail调整:仅「导入失败原因」列字体红色;错误按A./B./C.编号,分号(;)隔开,并去掉后端重复的「第N行:」前缀;最终格式示例第2行:A.该货物类型编码已存在,请更换唯一编码。 - 验证:Node + exceljs 4.4.0 跑通生成逻辑,确认表头 fill/font/alignment/height、失败原因编号格式与红色字体均正确。
货物类型导入失败明细 - 备注超长与标红强化
- 确认需求:除「导入失败原因」列外,其他列一律不标红;已增加 decorator 清除所有非失败原因列红色字体(含类型列,不论对错)。
- 失败原因按 A./B./C. 编号、分号(;)隔开;并优化:错误文本已包含规则说明时不重复拼接(避免「备注不能超过200字,备注不能超过200字」)。
- 新增兜底:失败明细行若「备注」列文本长度 > 200 且失败原因未含备注错误,自动追加一条「备注不能超过200字」编号项(Node 验证通过)。
- 后端根因(已读 /Users/gxwebsoft/JAVA/tms-erp-api-ws/blade-service/blade-system/.../CargoTypeServiceImpl.java):validate() 用 throw 实现,一行多个错误时只抛第一个,备注超长校验(第238行)可能被前置的编码/名称/上级错误挡住,导致失败明细不显示备注原因。彻底方案需后端改收集式校验(列出全部错误),待用户确认是否改 Java。
- 最终确认(样式):decorator 仅操作 G 列「导入失败原因」——黑色字体(argb
FF000000)、无背景填充(fill→none);其余列单元格样式/内容不修改。 - 列宽修复(关键 bug):失败明细列宽之前全部失效,根因是
CARGO_TYPE_FAIL_COL_WIDTH的 key 用了「类型/上级货物类型」等简写,而后端CargoTypeImportFailureExcel表头带*与括号说明(如*类型、上级货物类型(如为一级则不需填写)),key 对不上导致走默认 18。已把 key 改为与后端表头完全一致,并恢复「给所有列设宽」逻辑。最终宽度:*类型16 /上级货物类型(…)22 /上级货物类型编码(…)26 /*货物类型18 /*货物类型编码18 /备注24 /导入失败原因70。Node 验证通过。 - 事务性导入(后端改动):
CargoTypeServiceImpl.importCargoType加@Transactional(rollbackFor=Exception.class),逐条 validate+save 后若有任一失败则TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()回滚整批,实现"全部正确才入库,任一错误则一条都不存"。需重新编译部署 tms-erp-api-ws 后端生效。