feat(scrap): 报废记录按原因分类筛选 + Excel 导出 + 显示分类
- 记录页与审批页展示「原因分类」:分类数据一直有下发,只是前端没渲染, 页面上一个地方都看不到。 - 记录页加分类筛选。★ 选「库存报废」时 SQL 一并兜住空值:本列上线前的 历史台账没有分类,而它们全是 MOM 自身流程产生的;不兜会漏掉全部历史单, 用户会以为数据丢了。 - 新增 GET /scrap/records/export 导出 xlsx:与列表同一套筛选,但导**全部 匹配结果**而不是当前页 —— 只导当前页会让人以为数据被截断。 金额按 scrap_list:loss_amount 权限决定可不可见(与列表同口径), 否则导出就成了绕过字段级权限的后门。行数上限 20000 且截断会写进文件名。
This commit is contained in:
@ -29,6 +29,25 @@ export function getScrapRecords(params: any) {
|
||||
})
|
||||
}
|
||||
|
||||
// 4. 报废记录导出 Excel
|
||||
//
|
||||
// ★ 与列表页**同一套筛选参数**,但后端导出的是**全部匹配结果**而不是当前页 ——
|
||||
// 用户点「导出」要的就是全量,只导当前页会让他以为数据被截断了。
|
||||
// ★ responseType: 'blob' 不能省,否则 axios 会把二进制当文本解析,文件打不开。
|
||||
// ★ 损失金额由后端按 scrap_list:loss_amount 权限决定可不可见(与列表页同口径),
|
||||
// 前端不做二次处理 —— 否则导出会变成绕过字段级权限的后门。
|
||||
export function exportScrapRecords(params: any) {
|
||||
return request({
|
||||
url: '/v1/scrap/records/export',
|
||||
method: 'get',
|
||||
params,
|
||||
responseType: 'blob' as any,
|
||||
headers: {
|
||||
'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 3.1 报废申请专用库存列表(独立于出库选单权限,Fail-Closed 剥离价格)
|
||||
export function getScrapStockList(params: { page?: number; pageSize?: number; keyword?: string }) {
|
||||
return request({
|
||||
|
||||
Reference in New Issue
Block a user