From 18ab40a9f83b9c5c1070da622f6c83020254f22b Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期一, 02 二月 2026 09:56:43 +0800
Subject: [PATCH] fix(出库): 修复扫码逻辑并增加重复条码校验
---
src/pages/outbound/materialOutbound.vue | 63 +++++++++++++++++++++++--------
1 files changed, 47 insertions(+), 16 deletions(-)
diff --git a/src/pages/outbound/materialOutbound.vue b/src/pages/outbound/materialOutbound.vue
index bfc49fe..bad1b8d 100644
--- a/src/pages/outbound/materialOutbound.vue
+++ b/src/pages/outbound/materialOutbound.vue
@@ -176,7 +176,6 @@
let tagData: any = null;
let outPutId: string | number | undefined;
let monofilamentNumber: string | undefined;
- let needContractCheck = false; // 鏄惁闇�瑕佽繘琛屽悎鍚屽彿鏍¢獙锛堝彧瀵圭粸绾匡級
if (isJsonCode) {
// ===== 缁炵嚎绛夊師鏈変簩缁寸爜閫昏緫锛圝SON锛� =====
@@ -205,13 +204,11 @@
const { data } = await OutboundApi.getTagByIdAll({
outPutId: outPutId,
});
- const list = data || [];
- if (!list.length) {
+ tagData = data;
+ if (!tagData) {
toast.error("鏈煡璇㈠埌鏉$爜淇℃伅");
return;
}
- tagData = list[0];
- needContractCheck = true;
} else if (monofilamentNumber) {
// 鏈� monofilamentNumber锛氭寜鍗曚笣鍙锋煡閲嶅苟璋� getTagByMonofilamentNumber锛堣繑鍥炲璞★級
const exists = goodsList.value.some((item) => {
@@ -231,7 +228,6 @@
}
tagData = Array.isArray(data) ? data[0] : data;
outPutId = tagData?.id || monofilamentNumber;
- needContractCheck = true;
} else {
toast.error("浜岀淮鐮佹牸寮忛敊璇紝缂哄皯id鎴栧崟涓濈紪鍙蜂俊鎭�");
return;
@@ -276,6 +272,18 @@
if (!formattedMonofilamentNumber) {
return;
}
+
+ // 妫�鏌ユ槸鍚﹀凡瀛樺湪锛堥拡瀵规墜鍔ㄥ鐞嗗悗鐨勫崟涓濆彿杩涜鍘婚噸锛�
+ const isDuplicate = goodsList.value.some((item) => {
+ const itemMono = item.monofilamentNumber;
+ return itemMono && itemMono === formattedMonofilamentNumber;
+ });
+
+ if (isDuplicate) {
+ toast.error(`鏉$爜"${formattedMonofilamentNumber}"宸插瓨鍦紝璇峰嬁閲嶅鎵爜`);
+ return;
+ }
+
const newItem = {
id: monofilamentNumber || "-",
contractNo: "鏈湪mes涓敓浜�",
@@ -285,7 +293,7 @@
clienteleName: "-",
actuallyLength: "-",
productionDate: "-",
- type: "",
+ type: "鎷変笣",
devicemodel: "",
state: "",
projectId: "",
@@ -310,15 +318,15 @@
toast.error("璇ユ潯鐮佸凡鍑哄簱锛屾棤娉曢噸澶嶅嚭搴�");
return;
}
-
- // 鍚堝悓鍙锋牎楠岋細鍙缁炵嚎锛圝SON 鍦烘櫙锛夎繘琛屾牎楠�
- if (needContractCheck) {
- const scannedContractNo = tagData?.contractno || "";
- if (scannedContractNo && vsrccode.value && scannedContractNo !== vsrccode.value) {
- toast.error(`鍚堝悓鍙�"${scannedContractNo}"涓庡綋鍓嶅彂璐у崟涓�"${vsrccode.value}"涓嶅尮閰峘);
- return;
- }
- }
+ //
+ // // 鍚堝悓鍙锋牎楠岋細鍙缁炵嚎锛圝SON 鍦烘櫙锛夎繘琛屾牎楠�
+ // if (needContractCheck) {
+ // const scannedContractNo = tagData?.contractno || "";
+ // if (scannedContractNo && vsrccode.value && scannedContractNo !== vsrccode.value) {
+ // toast.error(`鍚堝悓鍙�"${scannedContractNo}"涓庡綋鍓嶅彂璐у崟涓�"${vsrccode.value}"涓嶅尮閰峘);
+ // return;
+ // }
+ // }
// 鎻愬彇鏁版嵁瀛楁锛堟牴鎹帴鍙h繑鍥炵殑鏁版嵁缁撴瀯锛�
const parsedData = {
@@ -346,6 +354,29 @@
scanCode: scanText,
};
+ // 鍐嶆妫�鏌ユ槸鍚﹀凡瀛樺湪锛堥拡瀵规墜鍔ㄥ鐞嗗悗鐨勫崟涓濆彿杩涜鍘婚噸锛�
+ const isDuplicate = goodsList.value.some((item) => {
+ const itemMono = item.monofilamentNumber;
+ const currentMono = parsedData.monofilamentNumber;
+ return itemMono && itemMono === currentMono && itemMono !== "-";
+ });
+
+ if (isDuplicate) {
+ toast.error(`鏉$爜"${parsedData.monofilamentNumber}"宸插瓨鍦紝璇峰嬁閲嶅鎵爜`);
+ return;
+ }
+
+ // 妫�鏌ョ被鍨嬫槸鍚︿竴鑷�
+ if (goodsList.value.length > 0) {
+ const firstItemType = goodsList.value[0].type;
+ const currentType = parsedData.type;
+ // 濡傛灉绫诲瀷涓嶄竴鑷达紝鎻愮ず閿欒
+ if (firstItemType && currentType && firstItemType !== currentType) {
+ toast.error(`鐩墠鍙兘杩涜${firstItemType}鍑哄簱`);
+ return;
+ }
+ }
+
// 娣诲姞鍒板垪琛�
const newItem = {
...parsedData,
--
Gitblit v1.9.3