From df29009e4555e2c3df7548bc11ab6501eb80122e Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 19 五月 2026 11:29:27 +0800
Subject: [PATCH] 进销存pro 1.系统架构图修改

---
 src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue |   47 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
index 991f2a1..09e7421 100644
--- a/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
+++ b/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
@@ -49,11 +49,8 @@
           </template>
         </el-table-column>
         <!-- 鎵瑰彿澶氶�� -->
-        <el-table-column min-width="200">
-          <template #header>
-            <span style="color: #f56c6c; margin-right: 4px;">*</span>
-            <span>鎵瑰彿</span>
-          </template>
+        <el-table-column min-width="200"
+                         label="鎵瑰彿">
           <template #default="{ row }">
             <el-select v-model="row.batchNo"
                        multiple
@@ -114,6 +111,7 @@
         <span class="dialog-footer">
           <el-button type="primary"
                      :loading="materialSaving"
+                     :disabled="isSaveDisabled"
                      @click="handleMaterialSave">淇濆瓨</el-button>
           <el-button @click="dialogVisible = false">鍙栨秷</el-button>
         </span>
@@ -158,6 +156,33 @@
   const materialTableLoading = ref(false);
   const materialSaving = ref(false);
   const materialTableData = ref([]);
+
+  const isSaveDisabled = computed(() => {
+    if (materialTableData.value.length === 0) return true;
+    return !materialTableData.value.some(row => {
+      // 妫�鏌ユ槸鍚︽湁浠讳綍鐢ㄦ埛杈撳叆鍐呭
+      const hasBatch = Array.isArray(row.batchNo) && row.batchNo.length > 0;
+      const hasPickQty =
+        row.pickQty !== null && row.pickQty !== undefined && row.pickQty !== 0;
+
+      if (row.bom) {
+        // 瀵逛簬鏉ヨ嚜BOM鐨勮锛岃緭鍏ユ鍙湁鈥滄壒鍙封�濆拰鈥滈鐢ㄦ暟閲忊��
+        return hasBatch || hasPickQty;
+      } else {
+        // 瀵逛簬鏂板琛岋紝杈撳叆妗嗗寘鎷�滃伐搴忊�濄�佲�滃師鏂欌�濄�佲�滈渶姹傛暟閲忊�濄�佲�滄壒鍙封�濆拰鈥滈鐢ㄦ暟閲忊��
+        const hasOperation = !!row.operationName;
+        const hasMaterial = !!row.materialName;
+        const hasDemanded =
+          row.demandedQuantity !== null &&
+          row.demandedQuantity !== undefined &&
+          row.demandedQuantity !== 0;
+        return (
+          hasBatch || hasPickQty || hasOperation || hasMaterial || hasDemanded
+        );
+      }
+    });
+  });
+
   const processOptions = ref([]);
   const currentMaterialSelectRowIndex = ref(-1);
   let materialTempId = 0;
@@ -313,14 +338,22 @@
       item =>
         !item.operationName ||
         !item.materialName ||
-        !item.batchNo ||
-        item.batchNo.length === 0 ||
+        (Number(item.pickQty) > 0 &&
+          (!item.batchNo || item.batchNo.length === 0)) ||
+        (item.batchNo && item.batchNo.length > 0 && Number(item.pickQty) <= 0) ||
         item.demandedQuantity === null ||
         item.demandedQuantity === undefined ||
         item.pickQty === null ||
         item.pickQty === undefined
     );
     if (invalidRow) {
+      if (
+        invalidRow.batchNo &&
+        invalidRow.batchNo.length > 0 &&
+        Number(invalidRow.pickQty) <= 0
+      ) {
+        return { valid: false, message: "閫夋嫨浜嗘壒鍙锋椂锛岄鐢ㄦ暟閲忓繀椤诲ぇ浜庨浂" };
+      }
       return { valid: false, message: "璇峰畬鍠勫伐搴忋�佸師鏂欍�佹壒鍙峰拰鏁伴噺鍚庡啀淇濆瓨" };
     }
     return { valid: true, message: "" };

--
Gitblit v1.9.3