From 7726b6cdab80596d2e2f7dd3fe1ec3dfbdeee155 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期五, 12 六月 2026 09:42:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro_河南鹤壁' into dev_pro_河南鹤壁

---
 src/views/qualityManagement/finalInspection/components/formDia.vue |   82 ++++++++++++++++++++++++++++++-----------
 1 files changed, 60 insertions(+), 22 deletions(-)

diff --git a/src/views/qualityManagement/finalInspection/components/formDia.vue b/src/views/qualityManagement/finalInspection/components/formDia.vue
index 5c6be02..31ba755 100644
--- a/src/views/qualityManagement/finalInspection/components/formDia.vue
+++ b/src/views/qualityManagement/finalInspection/components/formDia.vue
@@ -2,7 +2,7 @@
   <div>
     <el-dialog
         v-model="dialogFormVisible"
-        :title="operationType === 'add' ? '鏂板鍑哄巶妫�楠�' : '缂栬緫鍑哄巶妫�楠�'"
+        :title="operationType === 'add' ? '鏂板鍑哄巶妫�楠�' : operationType === 'view' ? '鏌ョ湅鍑哄巶妫�楠�' : '缂栬緫鍑哄巶妫�楠�'"
         width="70%"
         @close="closeDia"
     >
@@ -18,14 +18,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 +41,7 @@
                 clearable
                 @change="handleTestStandardChange"
                 style="width: 100%"
+                :disabled="isViewMode"
               >
                 <el-option
                   v-for="item in testStandardOptions"
@@ -60,7 +61,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 +76,8 @@
                                placeholder="璇疯緭鍏�"
                                clearable
                                :precision="2"
-                               @change="handleQualifiedQuantityChange" />
+                               @change="handleQualifiedQuantityChange"
+                               :disabled="isViewMode" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -88,30 +90,27 @@
                                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-option label="鍚堟牸" value="鍚堟牸" />
-                <el-option label="涓嶅悎鏍�" value="涓嶅悎鏍�" />
-                <el-option label="閮ㄥ垎鍚堟牸" value="閮ㄥ垎鍚堟牸" />
-              </el-select>
+            <el-form-item label="鍚堟牸鐜囷細">
+              <el-tag :type="passRateTagType">{{ passRateDisplayText }}</el-tag>
             </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>
+              <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 +126,7 @@
                   format="YYYY-MM-DD"
                   clearable
                   style="width: 100%"
+                  :disabled="isViewMode"
               />
             </el-form-item>
           </el-col>
@@ -140,13 +140,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>
@@ -181,7 +184,6 @@
     qualifiedQuantity: "",
     unqualifiedQuantity: "",
     checkCompany: "",
-    checkResult: "",
   },
   rules: {
     checkTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
@@ -195,10 +197,42 @@
     qualifiedQuantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     unqualifiedQuantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     checkCompany: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    checkResult: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }],
   },
 });
 const { form, rules } = toRefs(data);
+// 鏄惁涓烘煡鐪嬫ā寮�
+const isViewMode = computed(() => operationType.value === 'view');
+
+const passRateValue = computed(() => {
+  const fromApi = form.value.passRate;
+  if (fromApi != null && fromApi !== '') {
+    const n = Number(fromApi);
+    if (!Number.isNaN(n)) return n;
+  }
+  const qualified = Number(form.value.qualifiedQuantity) || 0;
+  const unqualified = Number(form.value.unqualifiedQuantity) || 0;
+  const total = qualified + unqualified;
+  if (!total || total === 0) return null;
+  return (qualified / total) * 100;
+});
+
+const passRateDisplayText = computed(() => {
+  const params = passRateValue.value;
+  if (params == null || params === '') return '鈥�';
+  const n = Number(params);
+  if (Number.isNaN(n)) return '鈥�';
+  return `${n.toFixed(2)}%`;
+});
+
+const passRateTagType = computed(() => {
+  const params = passRateValue.value;
+  if (params == null || params === '') return 'info';
+  const n = Number(params);
+  if (Number.isNaN(n)) return 'info';
+  if (n >= 100) return 'success';
+  if (n >= 90) return 'warning';
+  return 'danger';
+});
 // 缂栬緫鏃讹細productMainId 鎴� purchaseLedgerId 浠讳竴鏈夊�煎垯宸ュ簭銆佹暟閲忕疆鐏�
 const processQuantityDisabled = computed(() => {
   const v = form.value || {};
@@ -259,11 +293,11 @@
   testStandardOptions.value = [];
   tableData.value = [];
 
-  if (operationType.value === 'edit') {
+  if (operationType.value === 'edit' || operationType.value === 'view') {
     // 鍏堜繚瀛� testStandardId锛岄伩鍏嶈娓呯┖
     const savedTestStandardId = row.testStandardId;
-    // 鍏堣缃〃鍗曟暟鎹紝浣嗘殏鏃舵竻绌� testStandardId锛岀瓑閫夐」鍔犺浇瀹屾垚鍚庡啀璁剧疆
-    form.value = {...row, testStandardId: ''}
+    const { passRate, ...rowWithoutPassRate } = row;
+    form.value = { ...rowWithoutPassRate, testStandardId: '' };
     currentProductId.value = row.productId || 0
     // 娓呯┖楠岃瘉鐘舵�侊紝閬垮厤鏁版嵁鍔犺浇杩囩▼涓殑鏍¢獙闂儊
     nextTick(() => {
@@ -452,6 +486,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