From 7c2cdcbc7f5585b96fba76a07b0e4417a09c4d7e Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 02 六月 2026 11:06:10 +0800
Subject: [PATCH] 新疆马铃薯 1.过程检验下载添加3个模版

---
 src/views/qualityManagement/finalInspection/components/formDia.vue |  129 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 109 insertions(+), 20 deletions(-)

diff --git a/src/views/qualityManagement/finalInspection/components/formDia.vue b/src/views/qualityManagement/finalInspection/components/formDia.vue
index 5c6be02..9fcb6b1 100644
--- a/src/views/qualityManagement/finalInspection/components/formDia.vue
+++ b/src/views/qualityManagement/finalInspection/components/formDia.vue
@@ -2,11 +2,33 @@
   <div>
     <el-dialog
         v-model="dialogFormVisible"
-        :title="operationType === 'add' ? '鏂板鍑哄巶妫�楠�' : '缂栬緫鍑哄巶妫�楠�'"
+        :title="operationType === 'add' ? '鏂板鍑哄巶妫�楠�' : operationType === 'view' ? '鏌ョ湅鍑哄巶妫�楠�' : '缂栬緫鍑哄巶妫�楠�'"
         width="70%"
         @close="closeDia"
     >
       <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="閿�鍞鍗曪細" prop="salesLedgerId">
+              <el-select
+                v-model="form.salesLedgerId"
+                placeholder="璇烽�夋嫨閿�鍞鍗�"
+                clearable
+                filterable
+                :disabled="isViewMode"
+                style="width: 100%"
+                @change="handleSalesLedgerChange"
+              >
+                <el-option
+                  v-for="item in salesLedgerOptions"
+                  :key="item.id"
+                  :label="item.salesContractNo"
+                  :value="item.id"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="浜у搧鍚嶇О锛�" prop="productId">
@@ -18,14 +40,14 @@
                   @change="getModels"
                   :data="productOptions"
                   :render-after-expand="false"
-                  :disabled="operationType === 'edit'"
+                  :disabled="isViewMode || operationType === 'edit'"
                   style="width: 100%"
               />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId">
-              <el-select v-model="form.productModelId" placeholder="璇烽�夋嫨" clearable :disabled="operationType === 'edit'"
+              <el-select v-model="form.productModelId" placeholder="璇烽�夋嫨" clearable :disabled="isViewMode || operationType === 'edit'"
                          filterable readonly @change="handleChangeModel">
                 <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" />
               </el-select>
@@ -41,6 +63,7 @@
                 clearable
                 @change="handleTestStandardChange"
                 style="width: 100%"
+                :disabled="isViewMode"
               >
                 <el-option
                   v-for="item in testStandardOptions"
@@ -60,7 +83,7 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="鏁伴噺锛�" prop="quantity">
-              <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable :precision="2" :disabled="processQuantityDisabled"/>
+              <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable :precision="2" :disabled="isViewMode || processQuantityDisabled"/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -75,7 +98,8 @@
                                placeholder="璇疯緭鍏�"
                                clearable
                                :precision="2"
-                               @change="handleQualifiedQuantityChange" />
+                               @change="handleQualifiedQuantityChange"
+                               :disabled="isViewMode" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -88,19 +112,20 @@
                                placeholder="璇疯緭鍏�"
                                clearable
                                :precision="2"
-                               @change="handleUnqualifiedQuantityChange" />
+                               @change="handleUnqualifiedQuantityChange"
+                               :disabled="isViewMode" />
             </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-input v-model="form.checkCompany" placeholder="璇疯緭鍏�" clearable :disabled="isViewMode"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="妫�娴嬬粨鏋滐細" prop="checkResult">
-              <el-select v-model="form.checkResult">
+              <el-select v-model="form.checkResult" :disabled="isViewMode">
                 <el-option label="鍚堟牸" value="鍚堟牸" />
                 <el-option label="涓嶅悎鏍�" value="涓嶅悎鏍�" />
                 <el-option label="閮ㄥ垎鍚堟牸" value="閮ㄥ垎鍚堟牸" />
@@ -111,7 +136,7 @@
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="妫�楠屽憳锛�" prop="checkName">
-              <el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable>
+              <el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable :disabled="isViewMode">
                 <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
                            :value="item.nickName"/>
               </el-select>
@@ -127,6 +152,7 @@
                   format="YYYY-MM-DD"
                   clearable
                   style="width: 100%"
+                  :disabled="isViewMode"
               />
             </el-form-item>
           </el-col>
@@ -140,13 +166,16 @@
 				height="400"
 			>
 				<template #slot="{ row }">
-					<el-input v-model="row.testValue" clearable/>
+					<el-input v-model="row.testValue" clearable :disabled="isViewMode"/>
 				</template>
 			</PIMTable>
       <template #footer>
         <div class="dialog-footer">
-          <el-button type="primary" @click="submitForm">纭</el-button>
-          <el-button @click="closeDia">鍙栨秷</el-button>
+          <template v-if="!isViewMode">
+            <el-button type="primary" @click="submitForm">纭</el-button>
+            <el-button @click="closeDia">鍙栨秷</el-button>
+          </template>
+          <el-button v-else @click="closeDia">鍏抽棴</el-button>
         </div>
       </template>
     </el-dialog>
@@ -161,6 +190,7 @@
 import {userListNoPage} from "@/api/system/user.js";
 import {qualityInspectDetailByProductId, getQualityTestStandardParamByTestStandardId} from "@/api/qualityManagement/metricMaintenance.js";
 import {qualityInspectParamInfo} from "@/api/qualityManagement/qualityInspectParam.js";
+import {ledgerListNoPage, productList} from "@/api/salesManagement/salesLedger.js";
 const { proxy } = getCurrentInstance()
 const emit = defineEmits(['close'])
 
@@ -182,23 +212,27 @@
     unqualifiedQuantity: "",
     checkCompany: "",
     checkResult: "",
+    salesLedgerId: "",
+    salesContractNo: "",
   },
   rules: {
-    checkTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-    process: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+    checkTime: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+    process: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
     checkName: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
     productId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     productModelId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
     testStandardId: [{ required: false, message: "璇烽�夋嫨鎸囨爣", trigger: "change" }],
     unit: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    quantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-    qualifiedQuantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-    unqualifiedQuantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+    quantity: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+    qualifiedQuantity: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+    unqualifiedQuantity: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
     checkCompany: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    checkResult: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }],
+    checkResult: [{ required: false, message: "璇疯緭鍏�", trigger: "change" }],
   },
 });
 const { form, rules } = toRefs(data);
+// 鏄惁涓烘煡鐪嬫ā寮�
+const isViewMode = computed(() => operationType.value === 'view');
 // 缂栬緫鏃讹細productMainId 鎴� purchaseLedgerId 浠讳竴鏈夊�煎垯宸ュ簭銆佹暟閲忕疆鐏�
 const processQuantityDisabled = computed(() => {
   const v = form.value || {};
@@ -236,6 +270,7 @@
 const currentProductId = ref(0);
 const testStandardOptions = ref([]); // 鎸囨爣閫夋嫨涓嬫媺妗嗘暟鎹�
 const modelOptions = ref([]);
+const salesLedgerOptions = ref([]); // 閿�鍞鍗曚笅鎷夋鏁版嵁
 
 // 鎵撳紑寮规
 const openDialog = async (type, row) => {
@@ -246,11 +281,14 @@
   proxy.$refs.formRef?.clearValidate();
 
   // 骞惰鍔犺浇鍩虹鏁版嵁
-  const [userListsRes] = await Promise.all([
+  const [userListsRes, salesLedgerRes] = await Promise.all([
     userListNoPage(),
     getProductOptions(),
     getOptions().then((res) => {
       supplierList.value = res.data;
+    }),
+    ledgerListNoPage({ current: -1, size: -1 }).then((res) => {
+      salesLedgerOptions.value = res.data || [];
     })
   ]);
   userList.value = userListsRes.data;
@@ -259,7 +297,31 @@
   testStandardOptions.value = [];
   tableData.value = [];
 
-  if (operationType.value === 'edit') {
+  // 鏂板妯″紡涓嬶紝榛樿璁剧疆浜у搧鍚嶇О涓�"椹搩钖洩鑺辩矇"(id=320)
+  if (operationType.value === 'add') {
+    const defaultProductId = 320;
+    form.value.productId = defaultProductId;
+    currentProductId.value = defaultProductId;
+    form.value.productName = '椹搩钖洩鑺辩矇';
+    // 鍔犺浇瑙勬牸鍨嬪彿鍒楄〃
+    try {
+      const modelRes = await modelList({ id: defaultProductId });
+      modelOptions.value = modelRes || [];
+      // 榛樿閫変腑绗竴涓鏍煎瀷鍙�
+      if (modelOptions.value.length > 0) {
+        const firstModel = modelOptions.value[0];
+        form.value.productModelId = firstModel.id;
+        form.value.model = firstModel.model || '';
+        form.value.unit = firstModel.unit || '';
+      }
+      // 鍔犺浇鎸囨爣閫夐」
+      getList();
+    } catch (e) {
+      console.error('鍔犺浇榛樿浜у搧瑙勬牸鍨嬪彿澶辫触', e);
+    }
+  }
+
+  if (operationType.value === 'edit' || operationType.value === 'view') {
     // 鍏堜繚瀛� testStandardId锛岄伩鍏嶈娓呯┖
     const savedTestStandardId = row.testStandardId;
     // 鍏堣缃〃鍗曟暟鎹紝浣嗘殏鏃舵竻绌� testStandardId锛岀瓑閫夐」鍔犺浇瀹屾垚鍚庡啀璁剧疆
@@ -346,6 +408,29 @@
 const handleChangeModel = (value) => {
   form.value.model = modelOptions.value.find(item => item.id == value)?.model || '';
   form.value.unit = modelOptions.value.find(item => item.id == value)?.unit || '';
+}
+
+// 閿�鍞鍗曢�夋嫨鍙樺寲澶勭悊
+const handleSalesLedgerChange = async (value) => {
+  const selectedItem = salesLedgerOptions.value.find(item => item.id == value);
+  if (selectedItem) {
+    form.value.salesContractNo = selectedItem.salesContractNo || '';
+    // 鏍规嵁閿�鍞鍗旾D鏌ヨ浜у搧淇℃伅锛屽彧璧嬪�兼暟閲�
+    try {
+      const res = await productList({ salesLedgerId: value, type: 1 });
+      const productData = res.data && res.data.length > 0 ? res.data[0] : null;
+      if (productData) {
+        // 鍙嚜鍔ㄥ甫鍏ユ暟閲�
+        form.value.quantity = productData.quantity || 0;
+      }
+    } catch (e) {
+      console.error('鏌ヨ閿�鍞鍗曚骇鍝佷俊鎭け璐�', e);
+      proxy.$modal.msgError('鏌ヨ閿�鍞鍗曚骇鍝佷俊鎭け璐�');
+    }
+  } else {
+    form.value.salesContractNo = '';
+    form.value.quantity = undefined;
+  }
 }
 
 const handleQualifiedQuantityChange = (value) => {
@@ -452,6 +537,10 @@
   tableLoading.value = true;
   getQualityTestStandardParamByTestStandardId(testStandardId).then(res => {
     tableData.value = res.data || [];
+    tableData.value = tableData.value.map(item => ({
+      ...item,
+      id: null
+    }));
   }).catch(error => {
     console.error('鑾峰彇鏍囧噯鍙傛暟澶辫触:', error);
     tableData.value = [];

--
Gitblit v1.9.3