From 83c8b72bcb359a87d06e43442a7b1d1a2f7ce25b Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期二, 28 四月 2026 11:14:52 +0800
Subject: [PATCH] change

---
 src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue |   72 ++++++++++++++++++++++++++++-------
 1 files changed, 57 insertions(+), 15 deletions(-)

diff --git a/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
index a83ff6a..e9b2646 100644
--- a/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
+++ b/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
@@ -35,16 +35,30 @@
             <el-button type="primary"
                        link
                        @click="handleViewSupplementRecord(row)">
-              {{ row.supplementQty ?? 0 }}
+              {{ row.feedingQty ?? 0 }}
             </el-button>
           </template>
         </el-table-column>
         <el-table-column label="閫�鏂欐暟閲�"
-                         prop="returnQty"
-                         min-width="110" />
+                         min-width="110">
+          <template #default="{ row }">
+            {{ row.returnQty ?? 0 }}
+          </template>
+        </el-table-column>
         <el-table-column label="瀹為檯鏁伴噺"
-                         prop="actualQty"
-                         min-width="110" />
+                         min-width="140">
+          <template #default="{ row }">
+            <el-input-number v-model="row.actualQty"
+                             :min="0"
+                             :precision="3"
+                             :step="1"
+                             controls-position="right"
+                             placeholder="杈撳叆瀹為檯鏁伴噺"
+                             style="width: 100%;"
+                             :disabled="row.returned"
+                             @change="val => handleActualQtyChange(row, val)" />
+          </template>
+        </el-table-column>
       </el-table>
       <template #footer>
         <span class="dialog-footer">
@@ -66,7 +80,7 @@
                 border
                 row-key="id">
         <el-table-column label="琛ユ枡鏁伴噺"
-                         prop="supplementQty"
+                         prop="pickQuantity"
                          min-width="120" />
         <el-table-column label="琛ユ枡浜�"
                          prop="supplementUserName"
@@ -75,7 +89,7 @@
                          prop="supplementTime"
                          min-width="160" />
         <el-table-column label="琛ユ枡鍘熷洜"
-                         prop="supplementReason"
+                         prop="feedingReason"
                          min-width="200" />
       </el-table>
       <template #footer>
@@ -121,7 +135,7 @@
   import {
     listMaterialPickingDetail,
     listMaterialSupplementRecord,
-    confirmMaterialReturn,
+    updateMaterialPickingLedger,
   } from "@/api/productionManagement/productionOrder.js";
 
   const props = defineProps({
@@ -145,10 +159,12 @@
   const returnSummaryList = ref([]);
   const calcReturnQty = item =>
     Number(item.pickQuantity || 0) +
-    Number(item.supplementQty || 0) -
+    Number(item.feedingQty || 0) -
     Number(item.actualQty || 0);
   const canOpenReturnSummary = computed(() =>
-    materialDetailTableData.value.some(item => calcReturnQty(item) > 0)
+    materialDetailTableData.value.some(
+      item => item.returned !== true && calcReturnQty(item) > 0
+    )
   );
 
   const loadDetailList = async () => {
@@ -157,7 +173,13 @@
     materialDetailTableData.value = [];
     try {
       const res = await listMaterialPickingDetail(props.orderRow.id);
-      materialDetailTableData.value = res.data || [];
+      materialDetailTableData.value = (res.data || []).map(item => ({
+        ...item,
+        actualQty:
+          item.actualQty ??
+          Number(item.pickQuantity || 0) + Number(item.feedingQty || 0),
+        returnQty: item.returnQty ?? 0,
+      }));
     } finally {
       materialDetailLoading.value = false;
     }
@@ -176,6 +198,10 @@
     materialDetailTableData.value = [];
   };
 
+  const handleActualQtyChange = (row, val) => {
+    row.returnQty = calcReturnQty(row);
+  };
+
   const handleViewSupplementRecord = async row => {
     if (!row?.id) return;
     supplementRecordDialogVisible.value = true;
@@ -183,7 +209,8 @@
     supplementRecordTableData.value = [];
     try {
       const res = await listMaterialSupplementRecord({
-        materialDetailId: row.id,
+        pickId: row.id,
+        productionOrderId: props.orderRow.id,
       });
       supplementRecordTableData.value = res.data || [];
     } finally {
@@ -225,9 +252,24 @@
     if (!props.orderRow?.id) return;
     materialReturnConfirming.value = true;
     try {
-      await confirmMaterialReturn({
-        orderId: props.orderRow.id,
-        returnSummaryList: returnSummaryList.value,
+      await updateMaterialPickingLedger({
+        productionOrderId: props.orderRow.id,
+        productionOrderPickDto: materialDetailTableData.value.map(item => ({
+          id: item.id,
+          technologyOperationId: item.technologyOperationId,
+          operationName: item.operationName,
+          bom: item.bom === true,
+          productModelId: item.productModelId,
+          demandedQuantity: item.demandedQuantity,
+          unit: item.unit,
+          pickQuantity: item.pickQuantity,
+          batchNo: item.batchNo,
+          feedingQty: item.feedingQty,
+          returnQty: item.returnQty,
+          actualQty: item.actualQty,
+          feedingReason: item.feedingReason,
+          returned: true,
+        })),
       });
       returnSummaryDialogVisible.value = false;
       dialogVisible.value = false;

--
Gitblit v1.9.3