From 6a415a072a98d64d2f95d16eef73b6d7270b8d56 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 30 五月 2026 15:14:25 +0800
Subject: [PATCH] 新疆马铃薯 1.首页问题:挪新系统ui,需要确认一下页面数据完整。 2.协同办公:挪新系统 3.营销管理:客户往来取消回款金额字段,改为点击左侧客户时显示与该客户的所有订单信息,以及发货情况。销售可以选好对应的采购订单方便质量追溯。 4.采购管理:供应商往来同上逻辑,显示是否收货,也加上采购退货和采购报表功能。 5.采购加上设备备件选项,设备备件入库到备件库存。设备,仓储不足时做采购提醒。 6.仓储物流:得区分成品库和原料库(不存在半成品,成品只有一个产品,很好确认),原材料需要有批号,采集原料库需要做好仓库字段,让他们可以区分哪个仓库,然后把数采设备信息做一个实时的显示。总库存显示好当前存在的批次信息。 7.质量:只有不通过才需要填写对应的数据信息。在外侧做好选择通过不通过。过程,出厂检验无法对应到生产订单,那就对应到销售订单。 8.决策分析:基础数据分析和进销存分析,质量数据分析需要重新设计

---
 src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue |   75 +++++++++++++++++++++++++++++--------
 1 files changed, 59 insertions(+), 16 deletions(-)

diff --git a/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
index a83ff6a..370815e 100644
--- a/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
+++ b/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
@@ -35,20 +35,35 @@
             <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 || orderRow?.end"
+                             @change="val => handleActualQtyChange(row, val)" />
+          </template>
+        </el-table-column>
       </el-table>
       <template #footer>
         <span class="dialog-footer">
-          <el-button type="warning"
+          <el-button v-if="!orderRow?.end"
+                     type="warning"
                      :loading="materialReturnConfirming"
                      :disabled="!canOpenReturnSummary"
                      @click="openReturnSummaryDialog">
@@ -66,7 +81,7 @@
                 border
                 row-key="id">
         <el-table-column label="琛ユ枡鏁伴噺"
-                         prop="supplementQty"
+                         prop="pickQuantity"
                          min-width="120" />
         <el-table-column label="琛ユ枡浜�"
                          prop="supplementUserName"
@@ -75,7 +90,7 @@
                          prop="supplementTime"
                          min-width="160" />
         <el-table-column label="琛ユ枡鍘熷洜"
-                         prop="supplementReason"
+                         prop="feedingReason"
                          min-width="200" />
       </el-table>
       <template #footer>
@@ -121,7 +136,7 @@
   import {
     listMaterialPickingDetail,
     listMaterialSupplementRecord,
-    confirmMaterialReturn,
+    updateMaterialPickingLedger,
   } from "@/api/productionManagement/productionOrder.js";
 
   const props = defineProps({
@@ -145,10 +160,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 +174,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 +199,10 @@
     materialDetailTableData.value = [];
   };
 
+  const handleActualQtyChange = (row, val) => {
+    row.returnQty = calcReturnQty(row);
+  };
+
   const handleViewSupplementRecord = async row => {
     if (!row?.id) return;
     supplementRecordDialogVisible.value = true;
@@ -183,7 +210,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 +253,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