From 9dcad0c65f2564fc2fe43e21b23f9faf4a073d30 Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期二, 28 四月 2026 13:49:47 +0800
Subject: [PATCH] fix: 修复多个页面样式、交互及路由问题

---
 laboratory/src/views/dataManagement/testResultReport/detail.vue |   54 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 47 insertions(+), 7 deletions(-)

diff --git a/laboratory/src/views/dataManagement/testResultReport/detail.vue b/laboratory/src/views/dataManagement/testResultReport/detail.vue
index 5b6e5a3..2a788ed 100644
--- a/laboratory/src/views/dataManagement/testResultReport/detail.vue
+++ b/laboratory/src/views/dataManagement/testResultReport/detail.vue
@@ -228,16 +228,23 @@
         <div class="evaluate-card-cotent">
           <template v-if="selectedProcessEngineer">
             <template v-if="selectedProcessEngineer.data">
-              <div class="evaluate-table-wrapper" @click="handleEvaluate('processEngineer')">
+              <div class="evaluate-table-wrapper" @click="handleProcessEngineerEvaluate">
                 <EvaluateTable class="evaluate-table" :isReadonly="true" :type="1"
                   :viewJson="selectedProcessEngineer.data.resultEvaluateJson" />
               </div>
             </template>
             <template v-else>
               <div class="no-data">暂未评定</div>
-              <div v-if="
+              <!-- 原逻辑保留:详情态下审批人和管理员可直接进入工艺工程师评定 -->
+              <!-- <div v-if="
                 isView && form.status == 2 && (userRole == 1 || userRole == 2)
-              " class="to-evaluate" @click="handleEvaluate('processEngineer')">
+              " class="to-evaluate" @click="handleEvaluate('processEngineer')"> -->
+              <div v-if="
+                !isApproverDetailView &&
+                isView &&
+                form.status == 2 &&
+                (userRole == 1 || userRole == 2)
+              " class="to-evaluate" @click="handleProcessEngineerEvaluate">
                 去评价
               </div>
             </template>
@@ -248,8 +255,15 @@
         <el-button type="primary" class="save-btn" @click="handleSubmit(1)">提交</el-button>
         <el-button @click="handleSubmit(-1)">存草稿</el-button>
       </div>
-      <div class="add-project-footer" v-if="isView && form.status == 2 && (userRole == 1 || userRole == 2)">
-        <el-button type="primary" class="save-btn" @click="handleEvaluate('processEngineer')">工艺工程师评定</el-button>
+      <!-- 原逻辑保留:详情态下审批人和管理员显示工艺工程师评定按钮 -->
+      <!-- <div class="add-project-footer" v-if="isView && form.status == 2 && (userRole == 1 || userRole == 2)"> -->
+      <div class="add-project-footer" v-if="
+        !isApproverDetailView &&
+        isView &&
+        form.status == 2 &&
+        (userRole == 1 || userRole == 2)
+      ">
+        <el-button type="primary" class="save-btn" @click="handleProcessEngineerEvaluate">工艺工程师评定</el-button>
         <!-- <el-button @click="handleSubmit(-1)">存草稿</el-button> -->
       </div>
     </el-form>
@@ -258,6 +272,7 @@
       @submit="handleSchedulingSelect" />
     <!-- 评价弹窗 -->
     <evaluation-dialog :modelValue="evaluationDialogVisible" :type="currentEvaluationType"
+      :target-id="currentEvaluationTargetId"
       :viewJson="currentEvaluationData ? currentEvaluationData : ''" @update:modelValue="updateEvaluationDialogVisible"
       @submit="handleEvaluationSubmit" />
     <!-- 检验结果详情弹窗 -->
@@ -361,6 +376,7 @@
         3: "已封存",
       },
       currentEvaluationData: null, // 添加当前评价数据
+      currentEvaluationTargetId: null,
       userRole: "",
       // 原始检测项列表--新增
       formMore: {
@@ -571,8 +587,21 @@
     handleSelectProcessEngineer(engineer) {
       this.selectedProcessEngineer = engineer;
     },
+    handleProcessEngineerEvaluate() {
+      if (this.isApproverDetailView) {
+        // 原逻辑保留:审批人详情态下点击后会继续执行工艺工程师评定
+        // this.handleEvaluate("processEngineer");
+        return;
+      }
+      this.handleEvaluate("processEngineer");
+    },
     // 去评价
     handleEvaluate(type) {
+      if (this.isApproverDetailView && type == "processEngineer") {
+        // 原逻辑保留:详情态审批人此前允许打开工艺工程师评定弹窗
+        // this.evaluationDialogVisible = true;
+        return;
+      }
       if (
         this.$route.query.type == "view" &&
         type != "processEngineer" &&
@@ -582,14 +611,19 @@
         return;
       }
       this.currentEvaluationType = type;
+      this.currentEvaluationData = null;
+      this.currentEvaluationTargetId = null;
       // 根据类型获取当前选中人员的评定数据
       if (type == "labTechnician" && this.selectedLabTechnician) {
+        this.currentEvaluationTargetId = this.selectedLabTechnician.id;
         this.currentEvaluationData =
           this.selectedLabTechnician.data?.resultEvaluateJson;
       } else if (type == "experimenter" && this.selectedExperimenter) {
+        this.currentEvaluationTargetId = this.selectedExperimenter.id;
         this.currentEvaluationData =
           this.selectedExperimenter.data?.resultEvaluateJson;
       } else if (type == "processEngineer" && this.selectedProcessEngineer) {
+        this.currentEvaluationTargetId = this.selectedProcessEngineer.id;
         this.currentEvaluationData =
           this.selectedProcessEngineer.data?.resultEvaluateJson;
       }
@@ -661,6 +695,7 @@
       }
       this.evaluationDialogVisible = false;
       this.currentEvaluationData = null;
+      this.currentEvaluationTargetId = null;
     },
     // 将分数转换为评定值
     getEvaluateValue(score) {
@@ -725,6 +760,7 @@
       this.evaluationDialogVisible = value;
       if (!value) {
         this.currentEvaluationData = null; // 关闭弹窗时清空数据
+        this.currentEvaluationTargetId = null;
       }
     },
     handleSchedulingClose() {
@@ -1197,8 +1233,12 @@
     },
   },
   computed: {
+    ...mapState(["tagList", "isFold"]),
     isView() {
       return this.$route.query.type == "view";
+    },
+    isApproverDetailView() {
+      return this.isView && this.userRole == 2;
     },
   },
 };
@@ -1314,7 +1354,7 @@
     gap: 16px;
 
     .evaluate-card-people-item {
-      width: 125px;
+      min-width: 125px;
       background: #ffffff;
       border-radius: 6px;
       padding: 10px 5px;
@@ -1384,4 +1424,4 @@
     opacity: 0.8;
   }
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.7.1