yueli
23a7fc65f1
feat(scrap): 报废记录按单号分组 + 可展开明细 + 高级搜索
一、后端按「订单」分组(原为平铺明细列表)
有 scrap_request_no → 按单号分组;
无单号(历史直接报废)→ 按 操作时间(精确到分钟) + 操作人 虚拟分组,
生成 LEGACY-<yyyyMMddHHmm>-<操作人> 形式的虚拟单号,避免历史数据成为无主记录。
每单返回 items 明细数组、损失合计、报废总数、申请人(取自 ScrapApproval)。
二、物料解析改为批量预加载
原实现逐条记录 N+1 查询,且 5 条来源路径(stock_buy/semi/product、
trans_borrow、trans_repair)各自 query.get()。改为按 (source_table, stock_id)
收集 ID → 批量 joinedload 查询 → 内存拼装。
三、损失金额改为按权限可见
原 /records 无条件剥离 total_loss,导致持有 scrap_list:loss_amount 的角色
也看不到金额,与权限元素的存在相矛盾。改为对齐 outbound 的
filter_item_by_permissions:无权限置 None,前端 v-if 隐藏整列。
四、新增 keyword / search_type 高级搜索参数
(单号/SKU 在 SQL 层过滤,操作人/申请人/物料名在分组后过滤)
五、修复申请人显示
ScrapApproval._user_name() 返回 '杜邢宸/duxingchen' 全名,统一经
_display_name() 去掉 '/账号' 后缀。
前端 scrap/index.vue 重写为 el-table type=expand 嵌套表格,对齐出库记录版式,
搜索区改用统一 el-form inline 版式(含重置按钮)。
实测:3 单(1 张申请单 2 明细 + 1 组 legacy 合并 2 条),申请人/损失合计/
虚拟单号均正确。
2026-09-10 12:06:04 +08:00
..
2026-09-10 12:06:04 +08:00
2026-01-26 13:47:53 +08:00
2026-01-26 13:47:53 +08:00