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 = () => {
-
+
} onClick={handleExport} loading={exporting}>导出明细