From 1bd1061c60c286e3b2216a67090c4976c9c7b35f Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期六, 18 四月 2026 17:50:29 +0800
Subject: [PATCH] 出入库扫码

---
 src/pages/inventoryManagement/scanIn/index.vue |   81 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 70 insertions(+), 11 deletions(-)

diff --git a/src/pages/inventoryManagement/scanIn/index.vue b/src/pages/inventoryManagement/scanIn/index.vue
index 8479acd..147a7f0 100644
--- a/src/pages/inventoryManagement/scanIn/index.vue
+++ b/src/pages/inventoryManagement/scanIn/index.vue
@@ -99,7 +99,7 @@
             <text class="kv-label">鍏ュ簱鏁伴噺</text>
             <view class="kv-value stocked-qty-input-wrap">
               <up-input :key="'stocked-' + idx"
-                        v-model="item.stockedQuantity"
+                        v-model="item.operateQuantity"
                         type="number"
                         placeholder="璇疯緭鍏ュ叆搴撴暟閲�"
                         clearable
@@ -166,7 +166,22 @@
     };
   };
 
-  const { detailFieldRows, summaryFieldRows } = useScanOutFieldRows(contractKind);
+  const { detailFieldRows: rawDetailFieldRows, summaryFieldRows: rawSummaryFieldRows } = useScanOutFieldRows(
+    contractKind,
+    "inbound"
+  );
+  const shouldShowInboundQuantityField = key => {
+    if (type.value === QUALITY_TYPE.qualified) return key !== "unqualifiedStockedQuantity";
+    if (type.value === QUALITY_TYPE.unqualified)
+      return key !== "stockedQuantity" && key !== "remainingQuantity";
+    return true;
+  };
+  const detailFieldRows = computed(() =>
+    rawDetailFieldRows.value.filter(row => shouldShowInboundQuantityField(row.key))
+  );
+  const summaryFieldRows = computed(() =>
+    rawSummaryFieldRows.value.filter(row => shouldShowInboundQuantityField(row.key))
+  );
 
   const emptyDash = v => {
     if (v === null || v === undefined || v === "") return "-";
@@ -211,24 +226,33 @@
     return emptyDash(v);
   };
 
+  const shouldValidateStockStatus = computed(() => {
+    return (
+      contractKind.value === CONTRACT_KIND.sales &&
+      type.value === QUALITY_TYPE.qualified
+    );
+  });
+
   const isFullyStocked = item => {
+    if (!shouldValidateStockStatus.value) return false;
     const s = item?.productStockStatus;
     return s == 2 || s === "2";
   };
 
   const onStockedQtyBlur = item => {
     if (isFullyStocked(item)) return;
-    const raw = item.stockedQuantity;
+    const raw = item.operateQuantity;
     if (raw === null || raw === undefined || String(raw).trim() === "") {
-      item.stockedQuantity = "0";
+      item.operateQuantity = "0";
       return;
     }
     const n = Number(String(raw).trim());
     if (Number.isNaN(n)) {
-      item.stockedQuantity = defaultStockedQuantityFromRow(item);
+      item.operateQuantity =
+        type.value === QUALITY_TYPE.unqualified ? "0" : defaultStockedQuantityFromRow(item, "inbound");
       return;
     }
-    item.stockedQuantity = String(Math.max(0, n));
+    item.operateQuantity = String(Math.max(0, n));
   };
 
   const formatCell = (item, row, idx) => {
@@ -242,11 +266,35 @@
       return formatProductStockStatus(item.productStockStatus);
     if (row.key === "heavyBox") return formatHeavyBox(item.heavyBox);
     if (row.key === "remainingQuantity") {
+      const v = item.remainingQuantity;
+      return emptyDash(v);
+    }
+    if (row.key === "remainingShippedQuantity") {
+      const v = item.remainingShippedQuantity;
+      return emptyDash(v);
+    }
+    if (row.key === "shippedQuantity") {
+      const v = item.shippedQuantity;
+      return emptyDash(v);
+    }
+    if (row.key === "unqualifiedShippedQuantity") {
       const v =
-        item.remainingQuantity ??
-        item.remaining_quantity ??
-        item.remainQuantity ??
-        item.remain_quantity;
+        item.unqualifiedShippedQuantity ??
+        item.unQualifiedShippedQuantity ??
+        item.unqualifiedShippedQty ??
+        item.unqualifiedOutboundQuantity;
+      return emptyDash(v);
+    }
+    if (row.key === "stockedQuantity") {
+      const v = item.stockedQuantity;
+      return emptyDash(v);
+    }
+    if (row.key === "unqualifiedStockedQuantity") {
+      const v =
+        item.unqualifiedStockedQuantity ??
+        item.unQualifiedStockedQuantity ??
+        item.unqualifiedStockedQty ??
+        item.unqualifiedInboundQuantity;
       return emptyDash(v);
     }
     if (row.key === "availableQuality") {
@@ -351,7 +399,18 @@
       if (res.code === 200 && res.data && res.data.length > 0) {
         recordList.value = res.data.map(row => ({
           ...row,
-          stockedQuantity: defaultStockedQuantityFromRow(row),
+          unqualifiedShippedQuantity:
+            row.unqualifiedShippedQuantity ??
+            row.unQualifiedShippedQuantity ??
+            row.unqualifiedShippedQty ??
+            row.unqualifiedOutboundQuantity,
+          unqualifiedStockedQuantity:
+            row.unqualifiedStockedQuantity ??
+            row.unQualifiedStockedQuantity ??
+            row.unqualifiedStockedQty ??
+            row.unqualifiedInboundQuantity,
+          operateQuantity:
+            type.value === QUALITY_TYPE.unqualified ? "0" : defaultStockedQuantityFromRow(row, "inbound"),
         }));
         expandedByIndex.value = {};
         showForm.value = true;

--
Gitblit v1.9.3