From 3b1fc19b2dca976116a64f36cc5c8207867af3f9 Mon Sep 17 00:00:00 2001 From: jhd <1684074631@qq.com> Date: Wed, 1 Jul 2026 11:04:37 +0800 Subject: [PATCH] =?UTF-8?q?=20=20=20=E5=BA=93=E5=AD=98=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- klp-ui/src/views/wms/stock/detail.vue | 30 ++++++++++++++++++++------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/klp-ui/src/views/wms/stock/detail.vue b/klp-ui/src/views/wms/stock/detail.vue index d3fcfb6fb..29002f998 100644 --- a/klp-ui/src/views/wms/stock/detail.vue +++ b/klp-ui/src/views/wms/stock/detail.vue @@ -14,6 +14,7 @@ style="width: 100%" :header-cell-style="{ background: '#f2f2f2', fontWeight: 600, textAlign: 'center' }" :cell-style="cellStyle" + :span-method="spanMethod" size="small" > @@ -38,13 +39,15 @@ import { listCoilWithIds } from "@/api/wms/coil"; const CATEGORIES = [ - { key: '冷硬钢卷', label: '冷硬钢卷' }, - { key: '冷轧钢卷', label: '冷轧钢卷' }, - { key: '镀锌钢卷', label: '镀锌钢卷' }, - { key: '镀锌管材', label: '镀锌管材' }, - { key: '花纹板', label: '花纹板' }, - { key: '镀铬', label: '镀铬' }, + { key: '冷硬钢卷', label: '冷硬钢卷', match: ['冷硬'] }, + { key: '冷轧钢卷', label: '冷轧钢卷', match: ['冷轧'] }, + { key: '镀锌钢卷', label: '镀锌钢卷', match: ['镀锌分剪卷', '镀锌卷', '镀锌'] }, + { key: '镀锌管材', label: '镀锌管材', match: ['镀锌管'] }, + { key: '花纹板', label: '花纹板', match: ['花纹板'] }, + { key: '镀铬', label: '镀铬', match: ['镀铬'] }, ] +// 匹配优先级:镀锌管材必须在镀锌钢卷之前检查 +const MATCH_PRIORITY = ['镀锌管材', '冷硬钢卷', '冷轧钢卷', '镀锌钢卷', '花纹板', '镀铬'] /** * 品质等级 → 分组映射 @@ -87,7 +90,10 @@ export default { this.rawList.forEach(item => { // 匹配钢材品类 - const cat = CATEGORIES.find(c => item.itemName && item.itemName.includes(c.key)) + const catMap = new Map(CATEGORIES.map(c => [c.key, c])) + const cat = MATCH_PRIORITY.map(k => catMap.get(k)).find( + c => item.itemName && c.match.some(m => item.itemName.includes(m)) + ) if (!cat) { unmatchedCount++; return } // 品质分组 @@ -96,7 +102,7 @@ export default { const weight = Number(item.netWeight) || 0 - if (Number(item.isRelatedToOrder) === 1 && item.saleName) { + if (item.saleName) { // 订单相关 → 归属业务员 if (!orderData[item.saleName]) orderData[item.saleName] = {} if (!orderData[item.saleName][cat.key]) orderData[item.saleName][cat.key] = { AB: 0, CDO: 0 } @@ -208,11 +214,19 @@ export default { cellStyle({ row }) { return row.rowType === 'summary' ? { backgroundColor: '#FFFACD' } : {} }, + spanMethod({ row, columnIndex }) { + // 各产品小计行:每个品类 A/B 和 C/D/O 两列合并 + if (row.dimension === '各产品小计' && columnIndex >= 1 && columnIndex <= 12) { + if (columnIndex % 2 === 1) return [1, 2] // AB 列 → 向右合并一列 + else return [0, 0] // CDO 列 → 隐藏 + } + }, getList() { this.loading = true this.rawList = [] listCoilWithIds({ + selectType: 'product', status: 0, dataType: 1, pageSize: 99999,