From e15898693ff93e6fea7e6750e918bdde8988fe06 Mon Sep 17 00:00:00 2001 From: youruo <15018737611@163.com> Date: Thu, 8 Oct 2026 16:31:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8A=A8=E9=94=80=E5=88=86=E6=9E=90?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E6=81=A2=E5=A4=8D=E3=80=8C=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E3=80=8D=E5=88=97=EF=BC=88=E6=81=92=E4=B8=BA=E6=8B=A3=E9=80=89?= =?UTF-8?q?=EF=BC=89=EF=BC=8C=E5=AD=98=E8=B4=A7=E4=BD=8D=E4=BB=8D=E4=B8=8D?= =?UTF-8?q?=E7=BA=B3=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一版为去掉冗余把「类型」整列删了,用户要求的报表列结构中该列仍在, 现恢复:导出与列表均保留「类型」列,值恒为「拣选」(存货位不参与统计,报表中不会出现) 验证(基准日 2026-10-08、30 天): - 导出表头为 仓库 / 仓位 / 类型 / 商品编码 / 库存数量 / 仓位SKU数 / 商品销量 / 分摊销量 / 商品日销 / 动销等级 / 统计天数 / 统计基准日 - 11897 行,类型列取值集合仅 ['拣选'],空值 0 行;分摊销量合计 98087 = 去重商品销量合计 98087 - 列表接口 binTypes=['拣选'],明细类型集合仅 ['拣选'] - 单测 9/9 通过;语法检查 182 文件通过;eslint 无报错、vite build 成功 --- backend/src/api/pickingBinSalesAnalysis.js | 3 ++- frontend/src/constants/pickingBinSalesAnalysis.js | 5 +++++ frontend/src/pages/PickingBinSalesAnalysis/index.jsx | 6 +++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/backend/src/api/pickingBinSalesAnalysis.js b/backend/src/api/pickingBinSalesAnalysis.js index 93c624f..94174cc 100644 --- a/backend/src/api/pickingBinSalesAnalysis.js +++ b/backend/src/api/pickingBinSalesAnalysis.js @@ -238,6 +238,7 @@ router.get('/export', async (req, res) => { const sheetRows = filtered.map((r) => [ whMap.get(r.wmsCoId) || r.wmsCoId, r.binName, + r.binType, r.skuId, r.stockQty, r.skuCount, @@ -256,7 +257,7 @@ router.get('/export', async (req, res) => { sheets: [{ name: '库位动销明细', header: [ - '仓库', '仓位', '商品编码', '库存数量', '仓位SKU数', + '仓库', '仓位', '类型', '商品编码', '库存数量', '仓位SKU数', `商品销量(近${days}天)`, `分摊销量(近${days}天)`, '商品日销', '动销等级', '统计天数', '统计基准日', ], diff --git a/frontend/src/constants/pickingBinSalesAnalysis.js b/frontend/src/constants/pickingBinSalesAnalysis.js index 012128c..d569d6d 100644 --- a/frontend/src/constants/pickingBinSalesAnalysis.js +++ b/frontend/src/constants/pickingBinSalesAnalysis.js @@ -11,6 +11,11 @@ export const PICKING_BIN_COLUMNS = [ label: '仓位', tip: '系统仓位编码(jst_packInventoryInfo.bin);同一仓位有多个商品时会出现多行', }, + { + key: 'binType', + label: '类型', + tip: '统计范围固定为拣选位(bin_group 为空的仓位);存货位不纳入动销分析,报表中不会出现', + }, { key: 'skuId', label: '商品编码', diff --git a/frontend/src/pages/PickingBinSalesAnalysis/index.jsx b/frontend/src/pages/PickingBinSalesAnalysis/index.jsx index 1352f1e..bdf75ef 100644 --- a/frontend/src/pages/PickingBinSalesAnalysis/index.jsx +++ b/frontend/src/pages/PickingBinSalesAnalysis/index.jsx @@ -92,7 +92,7 @@ const PickingBinSalesAnalysis = () => { title: {col.label}, key: col.key, dataIndex: col.key, - align: ['warehouse', 'binName', 'skuId', 'gradeKey'].includes(col.key) ? 'left' : 'right', + align: ['warehouse', 'binName', 'binType', 'skuId', 'gradeKey'].includes(col.key) ? 'left' : 'right', width: col.key === 'warehouse' ? 240 : (col.key === 'gradeKey' ? 170 : (col.key === 'skuId' ? 150 : 110)), sorter: ['stockQty', 'salesQty', 'dailySales'].includes(col.key) @@ -103,7 +103,7 @@ const PickingBinSalesAnalysis = () => { const g = gradeMap.get(value); return {g?.label || value}; } - if (col.key === 'skuId') return {value || '—'}; + if (col.key === 'binType' || col.key === 'skuId') return {value || '—'}; if (col.key === 'dailySales') return num(value, 2); if (col.key === 'salesQty') return num(value, 2); if (col.key === 'stockQty') return int(value); @@ -191,7 +191,7 @@ const PickingBinSalesAnalysis = () => { - +