From 4e62fd388119141405e33ecc28cad2638617603f Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 25 四月 2026 17:22:14 +0800
Subject: [PATCH] 天津宝东 1.修改生产流程

---
 src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue |   94 +++++++++++++++++++----------------------------
 1 files changed, 38 insertions(+), 56 deletions(-)

diff --git a/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
index 9c50fc8..2379076 100644
--- a/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
+++ b/src/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue
@@ -2,47 +2,29 @@
   <div>
     <el-dialog v-model="dialogVisible" title="棰嗘枡璇︽儏" width="1400px" @close="handleClose">
       <el-table v-loading="materialDetailLoading" :data="materialDetailTableData" border row-key="id">
-        <el-table-column label="宸ュ簭鍚嶇О" prop="processName" min-width="180" />
         <el-table-column label="鍘熸枡鍚嶇О" prop="materialName" min-width="160" />
         <el-table-column label="鍘熸枡鍨嬪彿" prop="materialModel" min-width="180" />
-        <el-table-column label="闇�姹傛暟閲�" prop="requiredQty" min-width="110" />
+        <el-table-column label="鍘熺焊闇�瑕侀噺" prop="basePaperQty" min-width="120" />
+        <el-table-column label="绾哥闇�瑕侀噺" prop="cartonQty" min-width="120" />
+        <el-table-column label="濉戞枡琚嬫暟閲�" prop="plasticBagQty" min-width="120" />
         <el-table-column label="璁¢噺鍗曚綅" prop="unit" width="100" />
-        <el-table-column label="棰嗙敤鏁伴噺" prop="pickQty" min-width="110" />
-        <el-table-column label="琛ユ枡鏁伴噺" min-width="120">
-          <template #default="{ row }">
-            <el-button type="primary" link @click="handleViewSupplementRecord(row)">
-              {{ row.supplementQty ?? 0 }}
-            </el-button>
-          </template>
-        </el-table-column>
+        <el-table-column label="鍘熺焊棰嗙敤鏁伴噺" prop="basePaperPickQty" min-width="120" />
+        <el-table-column label="绾哥棰嗙敤鏁伴噺" prop="cartonPickQty" min-width="120" />
+        <el-table-column label="濉戞枡琚嬮鐢ㄦ暟閲�" prop="plasticBagPickQty" min-width="120" />
         <el-table-column label="閫�鏂欐暟閲�" prop="returnQty" min-width="110" />
         <el-table-column label="瀹為檯鏁伴噺" prop="actualQty" min-width="110" />
       </el-table>
       <template #footer>
         <span class="dialog-footer">
-          <el-button
-            type="warning"
-            :loading="materialReturnConfirming"
-            :disabled="!canOpenReturnSummary"
-            @click="openReturnSummaryDialog"
-          >
-            閫�鏂欑‘璁�
-          </el-button>
+<!--          <el-button-->
+<!--            type="warning"-->
+<!--            :loading="materialReturnConfirming"-->
+<!--            :disabled="!canOpenReturnSummary"-->
+<!--            @click="openReturnSummaryDialog"-->
+<!--          >-->
+<!--            閫�鏂欑‘璁�-->
+<!--          </el-button>-->
           <el-button @click="dialogVisible = false">鍙栨秷</el-button>
-        </span>
-      </template>
-    </el-dialog>
-
-    <el-dialog v-model="supplementRecordDialogVisible" title="琛ユ枡璁板綍" width="800px">
-      <el-table v-loading="supplementRecordLoading" :data="supplementRecordTableData" border row-key="id">
-        <el-table-column label="琛ユ枡鏁伴噺" prop="supplementQty" min-width="120" />
-        <el-table-column label="琛ユ枡浜�" prop="supplementUserName" min-width="120" />
-        <el-table-column label="琛ユ枡鏃ユ湡" prop="supplementTime" min-width="160" />
-        <el-table-column label="琛ユ枡鍘熷洜" prop="supplementReason" min-width="200" />
-      </el-table>
-      <template #footer>
-        <span class="dialog-footer">
-          <el-button @click="supplementRecordDialogVisible = false">鍏抽棴</el-button>
         </span>
       </template>
     </el-dialog>
@@ -68,7 +50,7 @@
 <script setup>
 import { computed, ref, watch } from "vue";
 import { ElMessage } from "element-plus";
-import { listMaterialPickingDetail, listMaterialSupplementRecord, confirmMaterialReturn } from "@/api/productionManagement/productionOrder.js";
+import { listMaterialPickingDetail, confirmMaterialReturn } from "@/api/productionManagement/productionOrder.js";
 
 const props = defineProps({
   modelValue: { type: Boolean, default: false },
@@ -84,24 +66,37 @@
 const materialDetailLoading = ref(false);
 const materialDetailTableData = ref([]);
 const materialReturnConfirming = ref(false);
-const supplementRecordDialogVisible = ref(false);
-const supplementRecordLoading = ref(false);
-const supplementRecordTableData = ref([]);
 const returnSummaryDialogVisible = ref(false);
 const returnSummaryList = ref([]);
+const getPickQty = item => {
+  const directPick = Number(item.pickQty ?? NaN);
+  if (Number.isFinite(directPick)) return directPick;
+  return (
+    Number(item.basePaperPickQty || 0) +
+    Number(item.cartonPickQty || 0) +
+    Number(item.plasticBagPickQty || 0)
+  );
+};
 const calcReturnQty = item =>
-  Number(item.pickQty || 0) + Number(item.supplementQty || 0) - Number(item.actualQty || 0);
-const canOpenReturnSummary = computed(() =>
-  materialDetailTableData.value.some(item => calcReturnQty(item) > 0)
-);
+  getPickQty(item) - Number(item.actualQty || 0);
+const normalizeList = (res) => {
+  if (Array.isArray(res?.data)) return res.data;
+  if (Array.isArray(res?.data?.records)) return res.data.records;
+  if (Array.isArray(res?.records)) return res.records;
+  return [];
+};
+const canOpenReturnSummary = computed(() => {
+  const list = Array.isArray(materialDetailTableData.value) ? materialDetailTableData.value : [];
+  return list.some(item => calcReturnQty(item) > 0);
+});
 
 const loadDetailList = async () => {
   if (!props.orderRow?.id) return;
   materialDetailLoading.value = true;
   materialDetailTableData.value = [];
   try {
-    const res = await listMaterialPickingDetail({ orderId: props.orderRow.id });
-    materialDetailTableData.value = res.data || [];
+    const res = await listMaterialPickingDetail({ productOrderId: props.orderRow.id });
+    materialDetailTableData.value = normalizeList(res);
   } finally {
     materialDetailLoading.value = false;
   }
@@ -118,19 +113,6 @@
 
 const handleClose = () => {
   materialDetailTableData.value = [];
-};
-
-const handleViewSupplementRecord = async row => {
-  if (!row?.id) return;
-  supplementRecordDialogVisible.value = true;
-  supplementRecordLoading.value = true;
-  supplementRecordTableData.value = [];
-  try {
-    const res = await listMaterialSupplementRecord({ materialDetailId: row.id });
-    supplementRecordTableData.value = res.data || [];
-  } finally {
-    supplementRecordLoading.value = false;
-  }
 };
 
 const buildReturnSummary = () => {
@@ -154,7 +136,7 @@
 
 const openReturnSummaryDialog = async () => {
   if (!canOpenReturnSummary.value) {
-    ElMessage.warning("閫�鏂欐暟閲�=棰嗙敤鏁伴噺+琛ユ枡鏁伴噺-瀹為檯鏁伴噺锛屼笖闇�澶т簬0");
+    ElMessage.warning("閫�鏂欐暟閲�=棰嗙敤鏁伴噺-瀹為檯鏁伴噺锛屼笖闇�澶т簬0");
     return;
   }
   returnSummaryList.value = buildReturnSummary();

--
Gitblit v1.9.3