diff --git a/manifest.json b/manifest.json
index 5fabae2..90181ed 100644
--- a/manifest.json
+++ b/manifest.json
@@ -2,8 +2,8 @@
"name" : "上海干巷涂装PDA",
"appid" : "__UNI__A67E78B",
"description" : "",
- "versionName" : "2.7.0",
- "versionCode" : 270,
+ "versionName" : "2.7.2",
+ "versionCode" : 272,
"transformPx" : false,
"sassImplementationName" : "node-sass",
"app-plus" : {
diff --git a/pages/blank/blankOutbound/blankOutbound.vue b/pages/blank/blankOutbound/blankOutbound.vue
index 16e844c..ddf764f 100644
--- a/pages/blank/blankOutbound/blankOutbound.vue
+++ b/pages/blank/blankOutbound/blankOutbound.vue
@@ -13,7 +13,7 @@
-->
已扫货物数:{{ quantityTotal }}
- 已扫箱数:{{ newMaterialList.length }}
+ 已扫箱数:{{ boxCountTotal }}
@@ -52,8 +52,8 @@
数量:{{ item.quantity }}
- 生产批次
- {{ item.productionTime }}
+
@@ -164,6 +164,14 @@ export default {
num += this.newMaterialList[index].quantity * 1;
}
return num;
+ },
+ // 计算总箱数
+ boxCountTotal() {
+ let count = 0;
+ for (let index = 0; index < this.newMaterialList.length; index++) {
+ count += (this.newMaterialList[index].boxCount || 0);
+ }
+ return count;
}
},
methods: {
@@ -205,7 +213,47 @@ export default {
return;
}
this.loading = true;
- this.newMaterialList.push(data);
+ // 检查是否存在相同blankNumber的毛坯
+ const existingIndex = this.newMaterialList.findIndex(item => item.blankNumber === data.blankNumber);
+
+ if (existingIndex !== -1) {
+ // 找到相同blankNumber的毛坯,累加数量和箱数
+ const existingItem = this.newMaterialList[existingIndex];
+ // 确保originalCodes数组存在
+ if (!existingItem.originalCodes || !Array.isArray(existingItem.originalCodes)) {
+ existingItem.originalCodes = [];
+ // 如果有originalCode,添加到数组中
+ if (existingItem.originalCode) {
+ existingItem.originalCodes.push(existingItem.originalCode);
+ }
+ }
+
+ // 添加新扫描项的originalCode到数组中(如果不存在)
+ if (data.originalCode && !existingItem.originalCodes.includes(data.originalCode)) {
+ existingItem.originalCodes.push(data.originalCode);
+ }
+
+ // 累加数量和箱数
+ existingItem.quantity += data.quantity || 1;
+ existingItem.boxCount = (existingItem.boxCount || 0) + 1;
+
+ // 显示累加提示
+ // uni.showToast({
+ // icon: 'none',
+ // title: `毛坯号${data.blankNumber}数量已累加至${existingItem.quantity},箱数累计:${existingItem.boxCount}`,
+ // duration: 1500
+ // });
+ } else {
+ // 不存在相同blankNumber的毛坯,添加新项
+ const newItem = { ...data };
+ // 初始化originalCodes数组和boxCount字段
+ newItem.originalCodes = [];
+ if (newItem.originalCode) {
+ newItem.originalCodes.push(newItem.originalCode);
+ }
+ newItem.boxCount = 1; // 新项默认箱数为1
+ this.newMaterialList.push(newItem);
+ }
this.loading = false;
}
},
@@ -259,14 +307,14 @@ export default {
return;
}
// 箱重复提醒 this.isPackageRepeat()
- if (this.isPackageRepeat()) {
- showOperationConfirm('重复箱校验', '检测到存在重复箱,是否自动清除?', true).then((res) => {
- if (res.confirm) {
- this.clearRepeatPackage();
- }
- });
- return;
- }
+ // if (this.isPackageRepeat()) {
+ // showOperationConfirm('重复箱校验', '检测到存在重复箱,是否自动清除?', true).then((res) => {
+ // if (res.confirm) {
+ // this.clearRepeatPackage();
+ // }
+ // });
+ // return;
+ // }
showOperationConfirm('出库操作', '是否确认出库?', true).then((res) => {
if (res.confirm) {
@@ -326,15 +374,29 @@ export default {
});
},
// 出库箱去重校验,数据是否有重复
- // 统一重复检查逻辑,使用Map提高查找效率
+ // 统一重复检查逻辑,使用Set提高查找效率
isPackageRepeat() {
let oldList = this.newMaterialList;
- let seen = new Map();
+ let seenOriginalCodes = new Set();
+
for (let item of oldList) {
- if (seen.has(item.originalCode)) {
- return true;
+ // 检查单个originalCode
+ if (item.originalCode) {
+ if (seenOriginalCodes.has(item.originalCode)) {
+ return true;
+ }
+ seenOriginalCodes.add(item.originalCode);
+ }
+
+ // 检查originalCodes数组中的所有code
+ if (item.originalCodes && Array.isArray(item.originalCodes)) {
+ for (let code of item.originalCodes) {
+ if (seenOriginalCodes.has(code)) {
+ return true;
+ }
+ seenOriginalCodes.add(code);
+ }
}
- seen.set(item.originalCode, true);
}
return false;
},
@@ -342,22 +404,103 @@ export default {
clearRepeatPackage() {
let oldArray = this.newMaterialList;
let newArray = [];
- let seen = new Map();
+ let seenOriginalCodes = new Set(); // 存储所有已处理的originalCode
let repeatPackage = [];
- oldArray.forEach((item) => {
- // 统一重复检查逻辑,使用originalCode作为唯一标识
- if (!seen.has(item.originalCode)) {
- seen.set(item.originalCode, true);
+
+ // 按blankNumber分组处理
+ const blankGroups = {};
+ oldArray.forEach(item => {
+ const blankNumber = item.blankNumber || '';
+ if (!blankGroups[blankNumber]) {
+ blankGroups[blankNumber] = [];
+ }
+ blankGroups[blankNumber].push(item);
+ });
+
+ // 处理每个blankNumber组
+ Object.values(blankGroups).forEach(group => {
+ if (group.length === 1) {
+ // 单个毛坯项,直接添加并记录其originalCode
+ const item = group[0];
newArray.push(item);
+ if (item.originalCode) {
+ seenOriginalCodes.add(item.originalCode);
+ }
+ // 同时记录originalCodes数组中的所有code
+ if (item.originalCodes && Array.isArray(item.originalCodes)) {
+ item.originalCodes.forEach(code => {
+ seenOriginalCodes.add(code);
+ });
+ }
+ // 确保单个项也有boxCount字段
+ if (!item.boxCount) {
+ item.boxCount = 1;
+ }
} else {
- repeatPackage.push(item.patchCode);
+ // 多个相同blankNumber的项,合并处理
+ let mergedItem = { ...group[0] };
+ let totalQuantity = mergedItem.quantity || 0;
+ let totalBoxCount = mergedItem.boxCount || 0;
+ let allOriginalCodes = new Set();
+
+ // 添加第一个项的originalCode
+ if (mergedItem.originalCode) {
+ allOriginalCodes.add(mergedItem.originalCode);
+ seenOriginalCodes.add(mergedItem.originalCode);
+ }
+
+ // 添加第一个项的originalCodes数组
+ if (mergedItem.originalCodes && Array.isArray(mergedItem.originalCodes)) {
+ mergedItem.originalCodes.forEach(code => {
+ allOriginalCodes.add(code);
+ seenOriginalCodes.add(code);
+ });
+ }
+
+ // 处理后续项
+ for (let i = 1; i < group.length; i++) {
+ const item = group[i];
+ // 累加数量和箱数
+ totalQuantity += item.quantity || 1;
+ totalBoxCount += item.boxCount || 0;
+
+ // 检查并处理originalCode
+ if (item.originalCode) {
+ if (allOriginalCodes.has(item.originalCode)) {
+ repeatPackage.push(item.patchCode || item.originalCode);
+ } else {
+ allOriginalCodes.add(item.originalCode);
+ seenOriginalCodes.add(item.originalCode);
+ }
+ }
+
+ // 检查并处理originalCodes数组
+ if (item.originalCodes && Array.isArray(item.originalCodes)) {
+ item.originalCodes.forEach(code => {
+ if (allOriginalCodes.has(code)) {
+ repeatPackage.push(item.patchCode || code);
+ } else {
+ allOriginalCodes.add(code);
+ seenOriginalCodes.add(code);
+ }
+ });
+ }
+ }
+
+ // 更新合并后的项
+ mergedItem.quantity = totalQuantity;
+ mergedItem.boxCount = totalBoxCount;
+ mergedItem.originalCodes = Array.from(allOriginalCodes);
+ newArray.push(mergedItem);
}
});
+
this.newMaterialList = newArray;
+
// 增强用户交互提示信息
showOperationConfirm(
- '重复箱清除',
- `检测到${repeatPackage.length}个重复箱,已自动清除。原箱数:${oldArray.length} 现箱数:${newArray.length} 重复箱:${repeatPackage.join(', ')}`,
+ '重复箱处理',
+ `已处理${oldArray.length}个毛坯项,相同blankNumber已合并。现箱数:${newArray.length} 重复标签:${repeatPackage.length > 0 ? repeatPackage.join(', ') : '无'}`,
false
);
}
diff --git a/pages/blank/blankWarehousing/blankWarehousing.vue b/pages/blank/blankWarehousing/blankWarehousing.vue
index d2a1902..7d6b57a 100644
--- a/pages/blank/blankWarehousing/blankWarehousing.vue
+++ b/pages/blank/blankWarehousing/blankWarehousing.vue
@@ -13,7 +13,7 @@
-->
已扫货物数:{{ quantityTotal }}
- 已扫箱数:{{ newMaterialList.length }}
+ 已扫箱数:{{ boxCountTotal }}
@@ -52,8 +52,8 @@
数量:{{ item.quantity }}
- 生产批次
- {{ item.productionTime }}
+
@@ -164,6 +164,14 @@ export default {
num += this.newMaterialList[index].quantity * 1;
}
return num;
+ },
+ // 计算总箱数
+ boxCountTotal() {
+ let count = 0;
+ for (let index = 0; index < this.newMaterialList.length; index++) {
+ count += (this.newMaterialList[index].boxCount || 0);
+ }
+ return count;
}
},
methods: {
@@ -205,7 +213,43 @@ export default {
return;
}
this.loading = true;
- this.newMaterialList.push(data);
+
+ // 检查是否已存在相同blankNumber的毛坯
+ const existingIndex = this.newMaterialList.findIndex(item =>
+ item.blankNumber === data.blankNumber
+ );
+
+ if (existingIndex >= 0) {
+ // 已存在相同blankNumber的毛坯,累加数量和箱数
+ const existingItem = this.newMaterialList[existingIndex];
+ // 确保originalCodes数组存在
+ if (!existingItem.originalCodes) {
+ existingItem.originalCodes = [existingItem.originalCode];
+ }
+ // 添加新的originalCode到数组中
+ if (!existingItem.originalCodes.includes(data.originalCode)) {
+ existingItem.originalCodes.push(data.originalCode);
+ }
+ // 累加数量和箱数
+ const newQuantity = (existingItem.quantity || 0) + (data.quantity || 1);
+ const newBoxCount = (existingItem.boxCount || 0) + 1; // 每次扫描一个箱码,箱数+1
+ this.$set(this.newMaterialList, existingIndex, {
+ ...existingItem,
+ quantity: newQuantity,
+ boxCount: newBoxCount
+ });
+ // showOperationConfirm('提示', `数量已累加:${existingItem.blankNumber} 当前数量:${newQuantity},累计箱数:${newBoxCount}`, false);
+ } else {
+ // 不存在相同blankNumber的毛坯,正常添加
+ // 为新项添加originalCodes数组和boxCount字段
+ const newItem = {
+ ...data,
+ originalCodes: [data.originalCode],
+ boxCount: 1 // 新项默认箱数为1
+ };
+ this.newMaterialList.push(newItem);
+ }
+
this.loading = false;
}
},
@@ -259,14 +303,14 @@ export default {
return;
}
// 箱重复提醒 this.isPackageRepeat()
- if (this.isPackageRepeat()) {
- showOperationConfirm('重复箱校验', '检测到存在重复箱,是否自动清除?', true).then((res) => {
- if (res.confirm) {
- this.clearRepeatPackage();
- }
- });
- return;
- }
+ // if (this.isPackageRepeat()) {
+ // showOperationConfirm('重复箱校验', '检测到存在重复箱,是否自动清除?', true).then((res) => {
+ // if (res.confirm) {
+ // this.clearRepeatPackage();
+ // }
+ // });
+ // return;
+ // }
showOperationConfirm('入库操作', '是否确认入库?', true).then((res) => {
if (res.confirm) {
@@ -326,15 +370,29 @@ export default {
});
},
// 入库箱去重校验,数据是否有重复
- // 统一重复检查逻辑,使用Map提高查找效率
+ // 统一重复检查逻辑,使用Set提高查找效率
isPackageRepeat() {
let oldList = this.newMaterialList;
- let seen = new Map();
+ let seenOriginalCodes = new Set();
+
for (let item of oldList) {
- if (seen.has(item.originalCode)) {
- return true;
+ // 检查单个originalCode
+ if (item.originalCode) {
+ if (seenOriginalCodes.has(item.originalCode)) {
+ return true;
+ }
+ seenOriginalCodes.add(item.originalCode);
+ }
+
+ // 检查originalCodes数组中的所有code
+ if (item.originalCodes && Array.isArray(item.originalCodes)) {
+ for (let code of item.originalCodes) {
+ if (seenOriginalCodes.has(code)) {
+ return true;
+ }
+ seenOriginalCodes.add(code);
+ }
}
- seen.set(item.originalCode, true);
}
return false;
},
@@ -342,22 +400,103 @@ export default {
clearRepeatPackage() {
let oldArray = this.newMaterialList;
let newArray = [];
- let seen = new Map();
+ let seenOriginalCodes = new Set(); // 存储所有已处理的originalCode
let repeatPackage = [];
- oldArray.forEach((item) => {
- // 统一重复检查逻辑,使用originalCode作为唯一标识
- if (!seen.has(item.originalCode)) {
- seen.set(item.originalCode, true);
+
+ // 按blankNumber分组处理
+ const blankGroups = {};
+ oldArray.forEach(item => {
+ const blankNumber = item.blankNumber || '';
+ if (!blankGroups[blankNumber]) {
+ blankGroups[blankNumber] = [];
+ }
+ blankGroups[blankNumber].push(item);
+ });
+
+ // 处理每个blankNumber组
+ Object.values(blankGroups).forEach(group => {
+ if (group.length === 1) {
+ // 单个毛坯项,直接添加并记录其originalCode
+ const item = group[0];
newArray.push(item);
+ if (item.originalCode) {
+ seenOriginalCodes.add(item.originalCode);
+ }
+ // 同时记录originalCodes数组中的所有code
+ if (item.originalCodes && Array.isArray(item.originalCodes)) {
+ item.originalCodes.forEach(code => {
+ seenOriginalCodes.add(code);
+ });
+ }
+ // 确保单个项也有boxCount字段
+ if (!item.boxCount) {
+ item.boxCount = 1;
+ }
} else {
- repeatPackage.push(item.patchCode);
+ // 多个相同blankNumber的项,合并处理
+ let mergedItem = { ...group[0] };
+ let totalQuantity = mergedItem.quantity || 0;
+ let totalBoxCount = mergedItem.boxCount || 0;
+ let allOriginalCodes = new Set();
+
+ // 添加第一个项的originalCode
+ if (mergedItem.originalCode) {
+ allOriginalCodes.add(mergedItem.originalCode);
+ seenOriginalCodes.add(mergedItem.originalCode);
+ }
+
+ // 添加第一个项的originalCodes数组
+ if (mergedItem.originalCodes && Array.isArray(mergedItem.originalCodes)) {
+ mergedItem.originalCodes.forEach(code => {
+ allOriginalCodes.add(code);
+ seenOriginalCodes.add(code);
+ });
+ }
+
+ // 处理后续项
+ for (let i = 1; i < group.length; i++) {
+ const item = group[i];
+ // 累加数量和箱数
+ totalQuantity += item.quantity || 1;
+ totalBoxCount += item.boxCount || 0;
+
+ // 检查并处理originalCode
+ if (item.originalCode) {
+ if (allOriginalCodes.has(item.originalCode)) {
+ repeatPackage.push(item.patchCode || item.originalCode);
+ } else {
+ allOriginalCodes.add(item.originalCode);
+ seenOriginalCodes.add(item.originalCode);
+ }
+ }
+
+ // 检查并处理originalCodes数组
+ if (item.originalCodes && Array.isArray(item.originalCodes)) {
+ item.originalCodes.forEach(code => {
+ if (allOriginalCodes.has(code)) {
+ repeatPackage.push(item.patchCode || code);
+ } else {
+ allOriginalCodes.add(code);
+ seenOriginalCodes.add(code);
+ }
+ });
+ }
+ }
+
+ // 更新合并后的项
+ mergedItem.quantity = totalQuantity;
+ mergedItem.boxCount = totalBoxCount;
+ mergedItem.originalCodes = Array.from(allOriginalCodes);
+ newArray.push(mergedItem);
}
});
+
this.newMaterialList = newArray;
+
// 增强用户交互提示信息
showOperationConfirm(
- '重复箱清除',
- `检测到${repeatPackage.length}个重复箱,已自动清除。原箱数:${oldArray.length} 现箱数:${newArray.length} 重复箱:${repeatPackage.join(', ')}`,
+ '重复箱处理',
+ `已处理${oldArray.length}个毛坯项,相同blankNumber已合并。现箱数:${newArray.length} 重复标签:${repeatPackage.length > 0 ? repeatPackage.join(', ') : '无'}`,
false
);
}