From 435eee87aa1858b639ba7ae9311b77c5622a7c6c Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 01 四月 2026 09:36:56 +0800
Subject: [PATCH] fix: 质量管理添加批号字段

---
 src/views/qualityManagement/processInspection/components/formDia.vue                 |   27 +++++++++
 src/views/procurementManagement/procurementLedger/index.vue                          |    1 
 src/views/qualityManagement/nonconformingManagement/components/formDia.vue           |   31 ++++++++++
 src/views/qualityManagement/finalInspection/components/formDia.vue                   |   31 +++++++++
 src/views/qualityManagement/rawMaterialInspection/components/formDia.vue             |   29 +++++++++
 src/views/qualityManagement/rawMaterialInspection/index.vue                          |    5 +
 src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue |   10 +++
 src/views/qualityManagement/nonconformingManagement/index.vue                        |    5 +
 src/views/qualityManagement/processInspection/index.vue                              |    5 +
 9 files changed, 138 insertions(+), 6 deletions(-)

diff --git a/src/views/procurementManagement/procurementLedger/index.vue b/src/views/procurementManagement/procurementLedger/index.vue
index 5901b16..adc6222 100644
--- a/src/views/procurementManagement/procurementLedger/index.vue
+++ b/src/views/procurementManagement/procurementLedger/index.vue
@@ -991,6 +991,7 @@
     productRules: {
       productId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
       productModelId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+      batchNo: [{ required: true, message: "璇疯緭鍏ユ壒娆″彿", trigger: "blur" }],
       unit: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       quantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       taxInclusiveUnitPrice: [
diff --git a/src/views/qualityManagement/finalInspection/components/formDia.vue b/src/views/qualityManagement/finalInspection/components/formDia.vue
index 38902e4..46c5cb8 100644
--- a/src/views/qualityManagement/finalInspection/components/formDia.vue
+++ b/src/views/qualityManagement/finalInspection/components/formDia.vue
@@ -49,11 +49,21 @@
               </el-select>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="鍗曚綅锛�" prop="unit">
               <el-input v-model="form.unit" placeholder="璇疯緭鍏�" disabled/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鎵瑰彿锛�" prop="batchNo">
+              <el-input
+                v-model="form.batchNo"
+                placeholder="璇疯緭鍏�"
+                clearable
+                :disabled="operationType === 'edit'"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -61,6 +71,8 @@
               <el-input v-model="form.uidNo" placeholder="璇疯緭鍏�" disabled/>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="妫�鍝佹暟閲忥細" prop="inspectedQuantity">
               <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.inspectedQuantity" placeholder="璇疯緭鍏�" clearable :precision="2"/>
@@ -71,6 +83,9 @@
               <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable :precision="2" :disabled="quantityDisabled"/>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          
         </el-row>
         <el-row :gutter="30">
           <el-col :span="12">
@@ -179,6 +194,15 @@
 
 const dialogFormVisible = ref(false);
 const operationType = ref('')
+
+const validateBatchNo = (rule, value, callback) => {
+  if (value === undefined || value === null || String(value).trim() === '') {
+    callback(new Error('璇疯緭鍏ユ壒鍙�'));
+    return;
+  }
+  callback();
+};
+
 const data = reactive({
   form: {
     checkTime: "",
@@ -191,6 +215,7 @@
     testStandardId: "",
     unit: "",
     uidNo: "",
+    batchNo: "",
     inspectedQuantity: "",
     quantity: "",
     checkCompany: "",
@@ -207,6 +232,7 @@
     inspectedQuantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     quantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     checkCompany: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+    batchNo: [{ required: true, validator: validateBatchNo, trigger: "blur" }],
     checkResult: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }],
   },
 });
@@ -370,6 +396,7 @@
   form.value.productModelId = undefined;
   form.value.unit = undefined;
   form.value.uidNo = undefined;
+  form.value.batchNo = "";
   modelOptions.value = [];
   currentProductId.value = value
   form.value.productName = findNodeById(productOptions.value, value);
diff --git a/src/views/qualityManagement/nonconformingManagement/components/formDia.vue b/src/views/qualityManagement/nonconformingManagement/components/formDia.vue
index 2301cee..06adf63 100644
--- a/src/views/qualityManagement/nonconformingManagement/components/formDia.vue
+++ b/src/views/qualityManagement/nonconformingManagement/components/formDia.vue
@@ -49,6 +49,18 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
+            <el-form-item label="鎵瑰彿锛�" prop="batchNo" :required="operationType === 'add'">
+              <el-input
+                v-model="form.batchNo"
+                placeholder="璇疯緭鍏�"
+                clearable
+                :disabled="operationType === 'edit'"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
             <el-form-item label="鍗曚綅锛�" prop="unit">
               <el-input v-model="form.unit" placeholder="璇疯緭鍏�" disabled/>
             </el-form-item>
@@ -125,7 +137,7 @@
 </template>
 
 <script setup>
-import {ref, reactive, toRefs} from "vue";
+import {ref, reactive, toRefs, getCurrentInstance} from "vue";
 import {modelList, productTreeList} from "@/api/basicData/product.js";
 import {
   getQualityUnqualifiedInfo,
@@ -140,6 +152,19 @@
 
 const dialogFormVisible = ref(false);
 const operationType = ref('')
+
+const validateBatchNo = (rule, value, callback) => {
+  if (operationType.value !== 'add') {
+    callback();
+    return;
+  }
+  if (value === undefined || value === null || String(value).trim() === '') {
+    callback(new Error('璇疯緭鍏ユ壒鍙�'));
+    return;
+  }
+  callback();
+};
+
 const { rejection_handling } = proxy.useDict("rejection_handling")
 const data = reactive({
   form: {
@@ -150,6 +175,7 @@
     productId: "",
     model: "",
     uidNo: "",
+    batchNo: "",
     unit: "",
     quantity: "",
     checkCompany: "",
@@ -171,6 +197,7 @@
     checkCompany: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
     checkResult: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
     dealName: [{ required: true, message: "璇烽�夋嫨澶勭悊浜�", trigger: "change" }],
+    batchNo: [{ validator: validateBatchNo, trigger: "blur" }],
   },
 });
 const { form, rules } = toRefs(data);
@@ -201,6 +228,7 @@
       productId: '',
       model: '',
       uidNo: '',
+      batchNo: '',
       unit: '',
       quantity: '',
       productName: '',
@@ -233,6 +261,7 @@
   form.value.model = undefined;
   form.value.unit = undefined;
   form.value.uidNo = undefined;
+  form.value.batchNo = "";
   modelOptions.value = [];
   form.value.productName = findNodeById(productOptions.value, value);
   modelList({ id: value }).then((res) => {
diff --git a/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue b/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue
index 8f4492a..5e18b06 100644
--- a/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue
+++ b/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue
@@ -54,6 +54,13 @@
         </el-row>
         <el-row :gutter="30">
           <el-col :span="12">
+            <el-form-item label="鎵瑰彿锛�" prop="batchNo">
+              <el-input v-model="form.batchNo" placeholder="鈥�" disabled />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
             <el-form-item label="妫�楠屽憳锛�" prop="checkName">
               <el-input v-model="form.checkName" placeholder="璇疯緭鍏�" clearable disabled/>
             </el-form-item>
@@ -121,7 +128,7 @@
 </template>
 
 <script setup>
-import {ref, reactive, toRefs, computed} from "vue";
+import {ref, reactive, toRefs, computed, getCurrentInstance} from "vue";
 import {productTreeList} from "@/api/basicData/product.js";
 import {
   getQualityUnqualifiedInfo,
@@ -142,6 +149,7 @@
     productName: "",
     productId: "",
     model: "",
+    batchNo: "",
     unit: "",
     quantity: "",
     checkCompany: "",
diff --git a/src/views/qualityManagement/nonconformingManagement/index.vue b/src/views/qualityManagement/nonconformingManagement/index.vue
index 4910331..3f3ac28 100644
--- a/src/views/qualityManagement/nonconformingManagement/index.vue
+++ b/src/views/qualityManagement/nonconformingManagement/index.vue
@@ -148,6 +148,11 @@
     prop: "uidNo",
   },
   {
+    label: "鎵瑰彿",
+    prop: "batchNo",
+    width: 140,
+  },
+  {
     label: "鍗曚綅",
     prop: "unit",
   },
diff --git a/src/views/qualityManagement/processInspection/components/formDia.vue b/src/views/qualityManagement/processInspection/components/formDia.vue
index 1a40a9c..4dd1518 100644
--- a/src/views/qualityManagement/processInspection/components/formDia.vue
+++ b/src/views/qualityManagement/processInspection/components/formDia.vue
@@ -78,6 +78,18 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
+            <el-form-item label="鎵瑰彿锛�" prop="batchNo">
+              <el-input
+                v-model="form.batchNo"
+                placeholder="璇疯緭鍏�"
+                clearable
+                :disabled="operationType === 'edit'"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
             <el-form-item label="妫�娴嬪崟浣嶏細" prop="checkCompany">
               <el-input v-model="form.checkCompany" placeholder="璇疯緭鍏�" clearable/>
             </el-form-item>
@@ -90,6 +102,8 @@
               </el-select>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="妫�楠屽憳锛�" prop="checkName">
               <el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable>
@@ -184,6 +198,15 @@
 
 const dialogFormVisible = ref(false);
 const operationType = ref('')
+
+const validateBatchNo = (rule, value, callback) => {
+  if (value === undefined || value === null || String(value).trim() === '') {
+    callback(new Error('璇疯緭鍏ユ壒鍙�'));
+    return;
+  }
+  callback();
+};
+
 const data = reactive({
   form: {
     checkTime: "",
@@ -194,6 +217,7 @@
     productModelId: "",
     model: "",
     uidNo: "",
+    batchNo: "",
     testStandardId: "",
     unit: "",
     quantity: "",
@@ -210,6 +234,7 @@
     unit: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
     quantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     checkCompany: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+    batchNo: [{ required: true, validator: validateBatchNo, trigger: "blur" }],
     checkResult: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }],
   },
 });
@@ -305,6 +330,7 @@
 		testStandardId: "",
 		unit: "",
 		uidNo: "",
+		batchNo: "",
 		quantity: "",
 		checkCompany: "",
 		checkResult: "",
@@ -390,6 +416,7 @@
   form.value.productModelId = undefined;
   form.value.unit = undefined;
   form.value.uidNo = undefined;
+  form.value.batchNo = "";
   modelOptions.value = [];
   currentProductId.value = value
   form.value.productName = findNodeById(productOptions.value, value);
diff --git a/src/views/qualityManagement/processInspection/index.vue b/src/views/qualityManagement/processInspection/index.vue
index 12c58be..955320a 100644
--- a/src/views/qualityManagement/processInspection/index.vue
+++ b/src/views/qualityManagement/processInspection/index.vue
@@ -122,6 +122,11 @@
     prop: "uidNo",
   },
   {
+    label: "鎵瑰彿",
+    prop: "batchNo",
+    width: 140,
+  },
+  {
     label: "鍗曚綅",
     prop: "unit",
   },
diff --git a/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
index daa4712..824194e 100644
--- a/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
+++ b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
@@ -89,12 +89,22 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="妫�娴嬪崟浣嶏細" prop="checkCompany">
-              <el-input v-model="form.checkCompany" placeholder="璇疯緭鍏�" clearable/>
+            <el-form-item label="鎵瑰彿锛�" prop="batchNo">
+              <el-input
+                v-model="form.batchNo"
+                placeholder="璇疯緭鍏�"
+                clearable
+                :disabled="operationType === 'edit'"
+              />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="妫�娴嬪崟浣嶏細" prop="checkCompany">
+              <el-input v-model="form.checkCompany" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
           <el-col :span="12">
             <el-form-item label="妫�娴嬬粨鏋滐細" prop="checkResult">
               <el-select v-model="form.checkResult">
@@ -103,6 +113,8 @@
               </el-select>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="妫�楠屽憳锛�" prop="checkName">
               <el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable style="width: 100%">
@@ -197,6 +209,15 @@
 
 const dialogFormVisible = ref(false);
 const operationType = ref('')
+
+const validateBatchNo = (rule, value, callback) => {
+  if (value === undefined || value === null || String(value).trim() === '') {
+    callback(new Error('璇疯緭鍏ユ壒鍙�'));
+    return;
+  }
+  callback();
+};
+
 const data = reactive({
   form: {
     checkTime: "",
@@ -207,6 +228,7 @@
     productModelId: "",
     model: "",
     uidNo: "",
+    batchNo: "",
     testStandardId: "",
     unit: "",
     quantity: "",
@@ -223,6 +245,7 @@
     unit: [{required: false, message: "璇疯緭鍏�", trigger: "blur"}],
     quantity: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
     checkCompany: [{required: false, message: "璇疯緭鍏�", trigger: "blur"}],
+    batchNo: [{ required: true, validator: validateBatchNo, trigger: "blur" }],
     checkResult: [{required: true, message: "璇烽�夋嫨妫�娴嬬粨鏋�", trigger: "change"}],
   },
 });
@@ -316,6 +339,7 @@
     productModelId: "",
     model: "",
     uidNo: "",
+    batchNo: "",
     testStandardId: "",
     unit: "",
     quantity: "",
@@ -401,6 +425,7 @@
   form.value.productModelId = undefined;
   form.value.unit = undefined;
   form.value.uidNo = undefined;
+  form.value.batchNo = "";
   modelOptions.value = [];
   currentProductId.value = value
   form.value.productName = findNodeById(productOptions.value, value);
diff --git a/src/views/qualityManagement/rawMaterialInspection/index.vue b/src/views/qualityManagement/rawMaterialInspection/index.vue
index c03608a..bb90efa 100644
--- a/src/views/qualityManagement/rawMaterialInspection/index.vue
+++ b/src/views/qualityManagement/rawMaterialInspection/index.vue
@@ -124,6 +124,11 @@
     prop: "uidNo",
   },
   {
+    label: "鎵瑰彿",
+    prop: "batchNo",
+    width: 140,
+  },
+  {
     label: "鍗曚綅",
     prop: "unit",
   },

--
Gitblit v1.9.3