From 13c8323f122ecfe00332cbaabf0153be6498a927 Mon Sep 17 00:00:00 2001 From: lion <120344285@qq.com> Date: Thu, 21 Aug 2025 12:02:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E7=89=A9=E4=B8=80=E7=A0=81=E5=90=88?= =?UTF-8?q?=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/inventorys/index.vue | 476 +++--- .../outbounds/component/addoutbounds.vue | 1360 ++++++++++------- src/views/outbounds/index.vue | 46 +- 3 files changed, 1121 insertions(+), 761 deletions(-) diff --git a/src/views/inventorys/index.vue b/src/views/inventorys/index.vue index 71e09ca..9f2885f 100644 --- a/src/views/inventorys/index.vue +++ b/src/views/inventorys/index.vue @@ -11,55 +11,55 @@ -->
-
-
+
+
-
-
- - - -
-
- -
-
- -
-
- - - -
-
- - - -
-
- - - -
-
- - - + @change="(e)=>{changeFenlei(e)}" /> +
+
+ + + +
+
+ +
+
+ +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + +
-
- 查询 - 打印 - 导出 +
+ 查询 + 打印 + 导出
@@ -94,16 +94,16 @@ - --> - + --> + - - + + -
- -
-
- 物资名称: -
-
+ /> +
+
--> +
+
+ 物资名称: +
+
-
-
-
-
- 物资型号: -
-
+ /> +
+
+
+
+ 物资型号: +
+
-
-
-
-
- 物资类型: -
-
+ /> +
+
+
+
+ 物资类型: +
+
-
-
-
-
- 入库批次: -
-
+ /> +
+
+
+
+ 入库批次: +
+
-
-
-
-
- 在库数量: -
-
+ /> +
+
+
+
+ 在库数量: +
+
-
+ /> +
@@ -317,20 +317,20 @@ />
- -
-
- *出库数量: -
-
+ +
+
+ *出库数量: +
+
-
+ /> +
@@ -342,52 +342,52 @@
-
-
-
- *是否回库: -
-
- - - -
-
-
-
- 回库日期: -
-
+
+
+
+ *是否回库: +
+
+ + + +
+
+
+
+ 回库日期: +
+
-
-
- -
- -
+ /> + + + + + + - - - - - - - + }) + }, + + // 合并相同物资编码且为一物一码的数据 + mergeOneCodeItems() { + // 创建合并后的显示列表 + const mergedDisplayList = [] + const mergedMap = new Map() + + // 遍历明细列表 + this.mingxiList.forEach(item => { + if (item.wuzileixing === '一物一码') { + // 对于一物一码,使用物资编码作为key进行合并 + const key = item.wuzibianma + + if (mergedMap.has(key)) { + // 如果已存在,累加借用数量 + const existingItem = mergedMap.get(key) + existingItem.jieyongshuliang += parseInt(item.jieyongshuliang) || 1 + existingItem.originalItems.push(item) // 保存原始项目用于提交 + } else { + // 如果不存在,创建新的合并项 + const mergedItem = { + ...item, + jieyongshuliang: parseInt(item.jieyongshuliang) || 1, + originalItems: [item], // 保存原始项目用于提交 + isMerged: true // 标记为合并项 + } + mergedMap.set(key, mergedItem) + mergedDisplayList.push(mergedItem) + } + } else { + // 对于非一物一码,直接添加到显示列表 + mergedDisplayList.push({ + ...item, + originalItems: [item], // 保存原始项目用于提交 + isMerged: false // 标记为非合并项 + }) + } + }) + + // 更新显示列表(用于表格显示) + this.mergedDisplayList = mergedDisplayList + + console.log('合并后的显示列表:', this.mergedDisplayList) + console.log('原始明细列表:', this.mingxiList) + }, + + // 更新合并显示列表(基于当前选择的物资和已有明细) + updateMergedDisplayList() { + console.log('开始更新合并显示列表...') + console.log('当前 mingxiObj:', this.mingxiObj) + console.log('当前 mingxiList:', this.mingxiList) + + // 如果 mingxiObj 为空,直接返回 + if (!this.mingxiObj || !this.mingxiObj.wuzibianma) { + console.log('mingxiObj 为空,跳过更新') + return + } + + // 创建临时列表,包含当前选择的物资和已有的明细 + const tempList = [...this.mingxiList] + + // 如果当前选择的物资不在明细列表中,添加进去 + const existingIndex = tempList.findIndex(item => + item.inventorys_id === this.mingxiObj.inventorys_id + ) + + if (existingIndex === -1) { + // 添加当前选择的物资到临时列表 + tempList.push({ + ...this.mingxiObj, + jieyongshuliang: this.mingxiObj.jieyongshuliang || 1 + }) + console.log('已添加当前选择的物资到临时列表') + } else { + // 更新已有的物资 + tempList[existingIndex] = { + ...this.mingxiObj, + jieyongshuliang: this.mingxiObj.jieyongshuliang || 1 + } + console.log('已更新已有的物资') + } + + // 基于临时列表进行合并 + const mergedDisplayList = [] + const mergedMap = new Map() + + tempList.forEach(item => { + if (item.wuzileixing === '一物一码') { + // 对于一物一码,使用物资编码作为key进行合并 + const key = item.wuzibianma + + if (mergedMap.has(key)) { + // 如果已存在,累加借用数量 + const existingItem = mergedMap.get(key) + existingItem.jieyongshuliang += parseInt(item.jieyongshuliang) || 1 + existingItem.originalItems.push(item) // 保存原始项目用于提交 + } else { + // 如果不存在,创建新的合并项 + const mergedItem = { + ...item, + jieyongshuliang: parseInt(item.jieyongshuliang) || 1, + originalItems: [item], // 保存原始项目用于提交 + isMerged: true // 标记为合并项 + } + mergedMap.set(key, mergedItem) + mergedDisplayList.push(mergedItem) + } + } else { + // 对于非一物一码,直接添加到显示列表 + mergedDisplayList.push({ + ...item, + originalItems: [item], // 保存原始项目用于提交 + isMerged: false // 标记为非合并项 + }) + } + }) + + // 更新显示列表 + this.mergedDisplayList = mergedDisplayList + + console.log('更新后的合并显示列表:', this.mergedDisplayList) + console.log('临时列表:', tempList) + }, + + // 获取表格显示列表(合并当前选择的物资和已确认的明细) + getDisplayList() { + // 如果当前没有选择物资,直接返回已确认的明细列表 + if (!this.mingxiObj || !this.mingxiObj.wuzibianma) { + return this.mergedDisplayList.length > 0 ? this.mergedDisplayList : this.mingxiList + } + + // 创建临时列表,包含当前选择的物资和已有的明细 + const tempList = [...this.mingxiList] + + // 如果当前选择的物资不在明细列表中,添加进去 + const existingIndex = tempList.findIndex(item => + item.inventorys_id === this.mingxiObj.inventorys_id + ) + + if (existingIndex === -1) { + // 添加当前选择的物资到临时列表 + tempList.push({ + ...this.mingxiObj, + jieyongshuliang: this.mingxiObj.jieyongshuliang || 1 + }) + } else { + // 更新已有的物资 + tempList[existingIndex] = { + ...this.mingxiObj, + jieyongshuliang: this.mingxiObj.jieyongshuliang || 1 + } + } + + // 基于临时列表进行合并 + const mergedDisplayList = [] + const mergedMap = new Map() + + tempList.forEach(item => { + if (item.wuzileixing === '一物一码') { + // 对于一物一码,使用物资编码作为key进行合并 + const key = item.wuzibianma + + if (mergedMap.has(key)) { + // 如果已存在,累加借用数量 + const existingItem = mergedMap.get(key) + existingItem.jieyongshuliang += parseInt(item.jieyongshuliang) || 1 + existingItem.originalItems.push(item) // 保存原始项目用于提交 + } else { + // 如果不存在,创建新的合并项 + const mergedItem = { + ...item, + jieyongshuliang: parseInt(item.jieyongshuliang) || 1, + originalItems: [item], // 保存原始项目用于提交 + isMerged: true // 标记为合并项 + } + mergedMap.set(key, mergedItem) + mergedDisplayList.push(mergedItem) + } + } else { + // 对于非一物一码,直接添加到显示列表 + mergedDisplayList.push({ + ...item, + originalItems: [item], // 保存原始项目用于提交 + isMerged: false // 标记为非合并项 + }) + } + }) + + return mergedDisplayList + } + + } + +} + + diff --git a/src/views/outbounds/index.vue b/src/views/outbounds/index.vue index 904ab63..0d0fe9e 100644 --- a/src/views/outbounds/index.vue +++ b/src/views/outbounds/index.vue @@ -65,7 +65,7 @@ - { if (row.id_outbounds_items_outbounds_id_relation.length > 0) { - return row.id_outbounds_items_outbounds_id_relation.map(item => { - return (

{item.wuzibianma}-{item.zichanmingcheng} + // 合并相同 wuzibianma 的物资 + const mergedItems = this.mergeOutboundItems(row.id_outbounds_items_outbounds_id_relation) + + return mergedItems.map(item => { + return (

{item.zichanmingcheng} :{item.guigexinghao ? '(' + item.guigexinghao + ')' : ''} {item.jieyongshuliang}{item.jiliangdanwei}

) @@ -368,6 +371,43 @@ export default { }) this.getindex() }) + }, + + // 合并相同 wuzibianma 的出库明细 + mergeOutboundItems(items) { + if (!Array.isArray(items) || items.length === 0) { + return [] + } + + // 使用 Map 来合并相同 wuzibianma 的物资 + const mergedMap = new Map() + + items.forEach(item => { + const key = item.wuzibianma + + if (mergedMap.has(key)) { + // 如果已存在,累加借用数量 + const existingItem = mergedMap.get(key) + existingItem.jieyongshuliang += parseInt(item.jieyongshuliang) || 0 + + // 可以选择保留其他字段的最新值或第一个值 + // 这里保留第一个值的其他字段 + } else { + // 如果不存在,创建新的合并项 + mergedMap.set(key, { + ...item, + jieyongshuliang: parseInt(item.jieyongshuliang) || 0 + }) + } + }) + + // 将合并后的结果转换为数组 + const mergedItems = Array.from(mergedMap.values()) + + console.log('原始明细:', items) + console.log('合并后明细:', mergedItems) + + return mergedItems } }