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/scanOut/index.vue |  114 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 83 insertions(+), 31 deletions(-)

diff --git a/src/pages/inventoryManagement/scanOut/index.vue b/src/pages/inventoryManagement/scanOut/index.vue
index bcbe216..e5ef746 100644
--- a/src/pages/inventoryManagement/scanOut/index.vue
+++ b/src/pages/inventoryManagement/scanOut/index.vue
@@ -188,7 +188,7 @@
 
         </view>
 
-        <view v-if="!isFullyStocked(item)"
+        <view
 
               class="stocked-qty-block">
 
@@ -200,7 +200,7 @@
 
               <up-input :key="'stocked-' + idx"
 
-                        v-model="item.stockedQuantity"
+                        v-model="item.operateQuantity"
 
                         type="number"
 
@@ -322,7 +322,22 @@
 
 
 
-  const { detailFieldRows, summaryFieldRows } = useScanOutFieldRows(contractKind);
+  const { detailFieldRows: rawDetailFieldRows, summaryFieldRows: rawSummaryFieldRows } = useScanOutFieldRows(
+    contractKind,
+    "outbound"
+  );
+  const shouldShowOutboundQuantityField = key => {
+    if (type.value === QUALITY_TYPE.qualified)
+      return key !== "unqualifiedShippedQuantity" && key !== "unqualifiedStockedQuantity";
+    if (type.value === QUALITY_TYPE.unqualified) return key !== "shippedQuantity" && key !== "remainingShippedQuantity";
+    return true;
+  };
+  const detailFieldRows = computed(() =>
+    rawDetailFieldRows.value.filter(row => shouldShowOutboundQuantityField(row.key))
+  );
+  const summaryFieldRows = computed(() =>
+    rawSummaryFieldRows.value.filter(row => shouldShowOutboundQuantityField(row.key))
+  );
 
 
 
@@ -412,16 +427,6 @@
 
 
 
-  const isFullyStocked = item => {
-
-    const s = item?.productStockStatus;
-
-    return s == 2 || s === "2";
-
-  };
-
-
-
   const parseOptionalNumberLocal = raw => {
 
     if (raw === null || raw === undefined || raw === "") return null;
@@ -478,13 +483,11 @@
 
   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;
 
@@ -493,14 +496,19 @@
     const n = Number(String(raw).trim());
 
     if (Number.isNaN(n)) {
-
-      item.stockedQuantity = defaultStockedQuantityFromRow(item);
+      if (type.value === QUALITY_TYPE.unqualified) {
+        const unqualifiedInbound = parseOptionalNumber(item.unqualifiedStockedQuantity) ?? 0;
+        const unqualifiedOutbound = parseOptionalNumber(item.unqualifiedShippedQuantity) ?? 0;
+        item.operateQuantity = String(Math.max(0, unqualifiedInbound - unqualifiedOutbound));
+      } else {
+        item.operateQuantity = defaultStockedQuantityFromRow(item, "outbound");
+      }
 
       return;
 
     }
 
-    item.stockedQuantity = String(Math.max(0, n));
+    item.operateQuantity = String(Math.max(0, n));
 
   };
 
@@ -528,18 +536,34 @@
 
     if (row.key === "remainingQuantity") {
 
-      const v =
-
-        item.remainingQuantity ??
-
-        item.remaining_quantity ??
-
-        item.remainQuantity ??
-
-        item.remain_quantity;
+      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.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;
+      return emptyDash(v);
     }
 
     if (row.key === "availableQuality") {
@@ -799,8 +823,36 @@
         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
+              ? String(
+                  Math.max(
+                    0,
+                    (parseOptionalNumber(
+                      row.unqualifiedStockedQuantity ??
+                        row.unQualifiedStockedQuantity ??
+                        row.unqualifiedStockedQty ??
+                        row.unqualifiedInboundQuantity
+                    ) ?? 0) -
+                      (parseOptionalNumber(
+                        row.unqualifiedShippedQuantity ??
+                          row.unQualifiedShippedQuantity ??
+                          row.unqualifiedShippedQty ??
+                          row.unqualifiedOutboundQuantity
+                      ) ?? 0)
+                  )
+                )
+              : defaultStockedQuantityFromRow(row, "outbound"),
 
         }));
 

--
Gitblit v1.9.3