From 5aa165156994b1b8a601063fa0a1107d1893ea57 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期四, 19 三月 2026 16:48:13 +0800
Subject: [PATCH] 更新

---
 src/views/business/assess/assessInfo.vue | 1093 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 830 insertions(+), 263 deletions(-)

diff --git a/src/views/business/assess/assessInfo.vue b/src/views/business/assess/assessInfo.vue
index e1d7ddf..36453c1 100644
--- a/src/views/business/assess/assessInfo.vue
+++ b/src/views/business/assess/assessInfo.vue
@@ -76,19 +76,19 @@
       <el-form>
         <el-form-item label-width="100px" label="鎹愮尞鍐冲畾">
           <el-checkbox-group
-            v-model="organdecision"
+            v-model="organdecisionValues"
             @change="handleOrganDecisionChange"
             :disabled="!isEdit"
           >
             <el-checkbox
-              v-for="item in organselection"
-              :key="item"
-              :label="item"
-              >{{ item }}
+              v-for="dict in dict.type.sys_Organ"
+              :key="dict.value"
+              :label="dict.value"
+              >{{ dict.label }}
             </el-checkbox>
           </el-checkbox-group>
           <el-input
-            v-if="organdecision.includes('鍏朵粬')"
+            v-if="showOtherInput"
             v-model="organdecisionOther"
             placeholder="璇疯緭鍏ュ叾浠栨崘鐚喅瀹氱殑鍏蜂綋鍐呭"
             style="margin-top: 10px; width: 300px;"
@@ -113,23 +113,26 @@
           <template slot-scope="scope">
             <div class="organ-expand-content" v-if="scope.row.expanded">
               <el-tabs
-                v-model="scope.row.activeAssessmentTab"
+                v-model="scope.row.activeTab"
                 type="card"
                 class="organ-detail-tabs"
+                @tab-click="handleTabClick(scope.row, $event)"
               >
                 <!-- 鍔ㄦ�佺敓鎴愯瘎浼癟ab -->
                 <el-tab-pane
-                  v-for="(assessment, index) in scope.row.assessments"
-                  :key="index"
+                  v-for="(assessment, index) in getOrganAssessments(scope.row)"
+                  :key="`${scope.row.organno}_${index}`"
                   :label="`绗�${index + 1}娆¤瘎浼癭"
-                  :name="`assessment_${index}`"
+                  :name="index"
                 >
                   <organ-assessment-form
                     :organ-data="scope.row"
-                    :assessment-data="assessment"
                     :assessment-index="index"
                     :readonly="!canAssessOrgan(scope.row)"
-                    @add-assessment="handleAddAssessment"
+                    :current-user="currentUser"
+                    @update-assessment="handleUpdateAssessment"
+                    @delete-assessment="handleDeleteAssessment"
+                    @save-assessment="handleSaveAssessment"
                   />
                 </el-tab-pane>
 
@@ -154,86 +157,163 @@
                 </el-tab-pane>
 
                 <!-- 璇勪及姹囨�籘ab -->
-                <el-tab-pane label="璇勪及姹囨��" name="summary">
-                  <div class="assessment-summary">
-                    <el-descriptions title="璇勪及缁撴灉姹囨��" :column="2" border>
-                      <el-descriptions-item label="鍣ㄥ畼绫诲瀷">{{
-                        scope.row.organname
-                      }}</el-descriptions-item>
-                      <el-descriptions-item label="鑾峰彇鏈烘瀯">{{
-                        scope.row.gainhospitalname
-                      }}</el-descriptions-item>
-                      <el-descriptions-item label="璇勪及娆℃暟" :span="2">
-                        <el-tag type="info"
-                          >{{ scope.row.assessments.length }}娆�</el-tag
-                        >
-                      </el-descriptions-item>
-                      <el-descriptions-item label="鏈�鏂拌瘎浼版椂闂�" :span="2">
-                        {{ getLatestAssessmentTime(scope.row) || "-" }}
-                      </el-descriptions-item>
-                    </el-descriptions>
+              <el-tab-pane label="璇勪及姹囨��" name="summary">
+  <div class="assessment-summary">
+    <!-- 鍩烘湰淇℃伅姹囨�� -->
+    <el-descriptions title="鍩烘湰淇℃伅姹囨��" :column="2" border>
+      <el-descriptions-item label="鍣ㄥ畼绫诲瀷">
+        <span class="summary-item">{{ getOrganLabel(scope.row.organno) }}</span>
+      </el-descriptions-item>
+      <el-descriptions-item label="鑾峰彇鏈烘瀯">
+        <span class="summary-item">{{ scope.row.gainhospitalname }}</span>
+      </el-descriptions-item>
+      <el-descriptions-item label="璇勪及娆℃暟" :span="2">
+        <el-tag type="info" size="medium">
+          {{ getAssessmentCount(scope.row) }}娆�
+        </el-tag>
+      </el-descriptions-item>
+      <el-descriptions-item label="鏈�鏂拌瘎浼版椂闂�" :span="2">
+        <span class="highlight-text">{{ getLatestAssessmentTime(scope.row) || "-" }}</span>
+      </el-descriptions-item>
+    </el-descriptions>
 
-                    <!-- 璇勪及璇︽儏姹囨�� -->
-                    <el-card header="璇勪及璇︽儏" style="margin-top: 20px;">
-                      <el-descriptions :column="1" border>
-                        <el-descriptions-item label="鑾峰彇鍓嶆椿妫�">
-                          <el-tag
-                            :type="
-                              scope.row.isbiopsybefore === '1'
-                                ? 'success'
-                                : 'info'
-                            "
-                          >
-                            {{ scope.row.isbiopsybefore === "1" ? "鏄�" : "鍚�" }}
-                          </el-tag>
-                        </el-descriptions-item>
-                        <el-descriptions-item label="鑾峰彇鍚庢椿妫�">
-                          <el-tag
-                            :type="
-                              scope.row.isbiopsyafter === '1'
-                                ? 'success'
-                                : 'info'
-                            "
-                          >
-                            {{ scope.row.isbiopsyafter === "1" ? "鏄�" : "鍚�" }}
-                          </el-tag>
-                        </el-descriptions-item>
-                        <el-descriptions-item label="杈圭紭鍣ㄥ畼">
-                          <el-tag
-                            :type="
-                              scope.row.ismarginalorgan === '1'
-                                ? 'warning'
-                                : 'info'
-                            "
-                          >
-                            {{
-                              scope.row.ismarginalorgan === "1" ? "鏄�" : "鍚�"
-                            }}
-                          </el-tag>
-                        </el-descriptions-item>
-                        <el-descriptions-item label="鐥呭師鑿岄槼鎬�">
-                          <el-tag
-                            :type="
-                              scope.row.ispathogenpositive === '1'
-                                ? 'danger'
-                                : 'info'
-                            "
-                          >
-                            {{
-                              scope.row.ispathogenpositive === "1" ? "鏄�" : "鍚�"
-                            }}
-                          </el-tag>
-                        </el-descriptions-item>
-                      </el-descriptions>
-                    </el-card>
-                  </div>
-                </el-tab-pane>
+    <!-- 璇勪及璇︽儏姹囨�� -->
+    <el-card header="璇勪及璇︽儏鍒楄〃" style="margin-top: 20px;" class="assessment-detail-card">
+      <div v-if="getOrganAssessments(scope.row).length === 0" class="no-assessment">
+        <el-empty description="鏆傛棤璇勪及璁板綍"></el-empty>
+      </div>
+
+      <div v-else>
+        <!-- 姣忔璇勪及璇︽儏 -->
+        <div v-for="(assessment, index) in getOrganAssessments(scope.row)"
+             :key="index"
+             class="assessment-item">
+          <el-card shadow="hover" class="assessment-card">
+            <div slot="header" class="clearfix">
+              <span class="assessment-title">绗瑊{ index + 1 }}娆¤瘎浼�</span>
+              <el-tag
+                :type="getAssessmentTagType(assessment.status)"
+                size="small"
+                class="status-tag"
+              >
+                {{ getAssessmentStatusText(assessment.status) }}
+              </el-tag>
+            </div>
+
+            <el-descriptions :column="2" border class="detail-descriptions">
+              <el-descriptions-item label="璇勪及鏃堕棿" :span="2">
+                <span class="time-text">{{ assessment.assessmentTime || "-" }}</span>
+              </el-descriptions-item>
+
+              <el-descriptions-item label="璇勪及浜�">
+                <el-tag type="info" size="small">
+                  {{ assessment.assessor || "鏈~鍐�" }}
+                </el-tag>
+              </el-descriptions-item>
+
+              <el-descriptions-item label="鍔熻兘鐘舵��">
+                <el-tag
+                  :type="getFunctionStatusTagType(assessment.functionStatus)"
+                  size="small"
+                >
+                  {{ getFunctionStatusText(assessment.functionStatus) }}
+                </el-tag>
+              </el-descriptions-item>
+
+              <el-descriptions-item label="璇勪及鎰忚" :span="2">
+                <div class="opinion-content">
+                  {{ assessment.assessmentOpinion || "鏆傛棤璇勪及鎰忚" }}
+                </div>
+              </el-descriptions-item>
+
+              <el-descriptions-item label="闄勪欢鏁伴噺" :span="2" v-if="assessment.attachments && assessment.attachments.length > 0">
+                <el-tag type="success" size="small">
+                  {{ assessment.attachments.length }}涓�
+                </el-tag>
+                <el-button
+                  type="text"
+                  size="mini"
+                  @click="showAttachmentList(assessment.attachments, index + 1)"
+                  style="margin-left: 10px;"
+                >
+                  鏌ョ湅闄勪欢鍒楄〃
+                </el-button>
+              </el-descriptions-item>
+            </el-descriptions>
+          </el-card>
+        </div>
+      </div>
+    </el-card>
+
+    <!-- 鍣ㄥ畼鍩烘湰淇℃伅鍗$墖 -->
+    <el-card header="鍣ㄥ畼淇℃伅" style="margin-top: 20px;" class="organ-info-card">
+      <el-descriptions :column="2" border>
+        <el-descriptions-item label="鑾峰彇鍓嶆椿妫�">
+          <el-tag
+            :type="
+              scope.row.isbiopsybefore === '1'
+                ? 'success'
+                : 'info'
+            "
+            size="small"
+          >
+            {{ scope.row.isbiopsybefore === "1" ? "鏄�" : "鍚�" }}
+          </el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="鑾峰彇鍚庢椿妫�">
+          <el-tag
+            :type="
+              scope.row.isbiopsyafter === '1'
+                ? 'success'
+                : 'info'
+            "
+            size="small"
+          >
+            {{ scope.row.isbiopsyafter === "1" ? "鏄�" : "鍚�" }}
+          </el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="杈圭紭鍣ㄥ畼">
+          <el-tag
+            :type="
+              scope.row.ismarginalorgan === '1'
+                ? 'warning'
+                : 'info'
+            "
+            size="small"
+          >
+            {{
+              scope.row.ismarginalorgan === "1" ? "鏄�" : "鍚�"
+            }}
+          </el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="鐥呭師鑿岄槼鎬�">
+          <el-tag
+            :type="
+              scope.row.ispathogenpositive === '1'
+                ? 'danger'
+                : 'info'
+            "
+            size="small"
+          >
+            {{
+              scope.row.ispathogenpositive === "1" ? "鏄�" : "鍚�"
+            }}
+          </el-tag>
+        </el-descriptions-item>
+      </el-descriptions>
+    </el-card>
+  </div>
+</el-tab-pane>
               </el-tabs>
             </div>
           </template>
         </el-table-column>
 
-        <el-table-column label="鍣ㄥ畼绫诲瀷" align="center" prop="organname" />
+        <el-table-column label="鍣ㄥ畼绫诲瀷" align="center" prop="organname">
+          <template slot-scope="scope">
+            {{ getOrganLabel(scope.row.organno) }}
+          </template>
+        </el-table-column>
 
         <el-table-column label="鍣ㄥ畼缂栧彿" align="center" prop="organnumber" />
 
@@ -246,19 +326,27 @@
 
         <!-- 鍔ㄦ�佹樉绀鸿瘎浼扮姸鎬佸垪 -->
         <el-table-column
-          v-for="(assessment, index) in getMaxAssessmentCount()"
+          v-for="index in getMaxAssessmentCount()"
           :key="index"
-          :label="`绗�${index + 1}娆¤瘎浼癭"
+          :label="`绗�${index}娆¤瘎浼癭"
           align="center"
           width="120"
         >
           <template slot-scope="scope">
             <el-tag
-              v-if="scope.row.assessments[index]"
-              :type="getAssessmentTagType(scope.row.assessments[index].status)"
+              v-if="getOrganAssessments(scope.row)[index - 1]"
+              :type="
+                getAssessmentTagType(
+                  getOrganAssessments(scope.row)[index - 1].status
+                )
+              "
               size="small"
             >
-              {{ getAssessmentStatusText(scope.row.assessments[index].status) }}
+              {{
+                getAssessmentStatusText(
+                  getOrganAssessments(scope.row)[index - 1].status
+                )
+              }}
             </el-tag>
             <el-tag v-else type="info" size="small">鏈瘎浼�</el-tag>
           </template>
@@ -318,7 +406,9 @@
 
     <!-- 鏁翠綋淇濆瓨鎸夐挳 -->
     <div class="footer-actions" v-if="isEdit">
-      <el-button type="primary" @click="handleSaveAll" :loading="saveLoading">淇濆瓨璇勪及琛�</el-button>
+      <el-button type="primary" @click="handleSaveAll" :loading="saveLoading"
+        >淇濆瓨璇勪及琛�</el-button
+      >
       <el-button @click="handleCancel">鍙栨秷</el-button>
     </div>
 
@@ -338,7 +428,7 @@
   assessAdd
 } from "@/api/businessApi/index";
 import FilePreviewDialog from "@/components/FilePreviewDialog";
-import OrganAssessmentForm from "./components/OrganAssessmentForm.vue";
+import OrganAssessmentForm from "@/components/assessInfoComponents/OrganAssessmentForm.vue";
 
 export default {
   name: "AssessmentDetail",
@@ -363,42 +453,44 @@
       currentPreviewFile: null,
       attachmentVisible: false,
       // 鎹愮尞鍐冲畾鐩稿叧
-      organdecision: [],
+      organdecisionValues: [], // 瀛樺偍瀛楀吀value
       organdecisionOther: "",
-      organselection: [
-        "鑲濊剰",
-        "鍙岃偩",
-        "宸﹁偩",
-        "鍙宠偩",
-        "蹇冭剰",
-        "鑲鸿剰",
-        "鑳拌吅",
-        "灏忚偁",
-        "鍙岀溂缁勭粐",
-        "閬椾綋",
-        "鍏朵粬"
-      ],
+      // 璁板綍鎹愮尞鍐冲畾鍙樺寲鍓嶇殑鍊�
+      prevOrgandecisionValues: [],
       // 鍣ㄥ畼绫诲瀷鏄犲皠鍏崇郴
       organDecisionMapping: {
-        鑲濊剰: ["鑲濊剰"],
-        鍙岃偩: ["宸﹁偩", "鍙宠偩"],
-        宸﹁偩: ["宸﹁偩"],
-        鍙宠偩: ["鍙宠偩"],
-        蹇冭剰: ["蹇冭剰"],
-        鑲鸿剰: ["鑲鸿剰"],
-        鑳拌吅: ["鑳拌吅"],
-        灏忚偁: ["灏忚偁"],
-        鍙岀溂缁勭粐: ["瑙掕啘"],
-        閬椾綋: ["鐨偆", "楠ㄩ", "鍏朵粬缁勭粐"],
-        鍏朵粬: [] // 鍏朵粬绫诲瀷涓嶆槧灏勫叿浣撳櫒瀹�
+        C38: ["C38"], // 蹇冭剰 -> 蹇冭剰
+        C22: ["C22"], // 鍏ㄨ倽 -> 鍏ㄨ倽
+        C22L: ["C22L"], // 宸﹀崐鑲� -> 宸﹀崐鑲�
+        C22L0: ["C22L0"], // 宸﹀鍙� -> 宸﹀鍙�
+        C22R: ["C22R"], // 鍙冲崐鑲� -> 鍙冲崐鑲�
+        C22R0: ["C22R0"], // 鍙充笁鍙� -> 鍙充笁鍙�
+        C64: ["C64L", "C64R"], // 鍙岃偩 -> 宸﹁偩, 鍙宠偩
+        C64L: ["C64L"], // 宸﹁偩 -> 宸﹁偩
+        C64R: ["C64R"], // 鍙宠偩 -> 鍙宠偩
+        C34: ["C34L", "C34R"], // 鍏ㄨ偤 -> 宸﹁偤, 鍙宠偤
+        C34L: ["C34L"], // 宸﹁偤 -> 宸﹁偤
+        C34R: ["C34R"], // 鍙宠偤 -> 鍙宠偤
+        C17: ["C17"], // 灏忚偁 -> 灏忚偁
+        C25: ["C25"], // 鑳拌吅 -> 鑳拌吅
+        C00: [], // 閬椾綋 -> 涓嶆槧灏勫叿浣撳櫒瀹橈紙閬椾綋鏄暣浣擄級
+        C69L: ["C69L"], // 宸︾溂瑙掕啘 -> 宸︾溂瑙掕啘
+        C69R: ["C69R"], // 鍙崇溂瑙掕啘 -> 鍙崇溂瑙掕啘
+        C01: [] // 鍏朵粬 -> 涓嶆槧灏勫叿浣撳櫒瀹�
       },
       // 鐢ㄦ埛淇℃伅
       currentUser: {
         id: "001",
         name: "寮犲尰鐢�",
         department: "蹇冭剰绉�",
-        role: "doctor" // coordinator, doctor
-      }
+        role: "coordinator"
+      },
+      // 璁板綍琚垹闄ょ殑鍣ㄥ畼璇勪及
+      deletedOrganAssessments: [],
+      // 鐢ㄤ簬杩借釜tab婵�娲荤姸鎬�
+      activeTabMap: new Map(),
+      // 鍒锋柊key
+      refreshKey: 0
     };
   },
   computed: {
@@ -410,37 +502,46 @@
     },
     // 鏍规嵁鎹愮尞鍐冲畾杩囨护鍚庣殑鍣ㄥ畼鍒楄〃
     filteredOrganAssessmentList() {
-      if (!this.organdecision || this.organdecision.length === 0) {
+      if (!this.organdecisionValues || this.organdecisionValues.length === 0) {
         return [];
       }
 
-      // 鑾峰彇鎵�鏈夐�変腑鐨勫櫒瀹樼被鍨�
       const selectedOrgans = new Set();
-      this.organdecision.forEach(decision => {
+      this.organdecisionValues.forEach(decision => {
         const organs = this.organDecisionMapping[decision] || [];
         organs.forEach(organ => selectedOrgans.add(organ));
       });
 
-      // 杩囨护鍣ㄥ畼璇勪及鍒楄〃
-      return this.organAssessmentList.filter(organ =>
-        selectedOrgans.has(organ.organname)
+      return this.organAssessmentList.filter(
+        organ =>
+          selectedOrgans.has(organ.organno) &&
+          organ.delFlag !== "1" &&
+          !this.deletedOrganAssessments.includes(organ.organno)
       );
     },
     // 妫�鏌ユ墍鏈夎繃婊ゅ悗鐨勫櫒瀹樻槸鍚﹂兘宸茶瘎浼�
     allOrgansAssessed() {
-      return this.filteredOrganAssessmentList.every(
-        organ =>
-          organ.assessments &&
-          organ.assessments.length > 0 &&
-          organ.assessments.every(
-            assessment => assessment.status === "assessed"
-          )
-      );
+      return this.filteredOrganAssessmentList.every(organ => {
+        const assessments = this.getOrganAssessments(organ);
+        return (
+          assessments &&
+          assessments.length > 0 &&
+          assessments.every(assessment => assessment.status === "assessed")
+        );
+      });
+    },
+    // 鑾峰彇鍣ㄥ畼瀛楀吀
+    organDict() {
+      return this.dict.type.sys_Organ || [];
+    },
+    // 鍒ゆ柇鏄惁闇�瑕佹樉绀哄叾浠栬緭鍏ユ
+    showOtherInput() {
+      return this.organdecisionValues.includes("C01");
     }
   },
   watch: {
     // 鐩戝惉鎹愮尞鍐冲畾鍙樺寲锛岀敤浜庡鏉傞�昏緫澶勭悊
-    organdecision: {
+    organdecisionValues: {
       handler(newVal, oldVal) {
         this.handleComplexDecisionChange(newVal, oldVal);
       },
@@ -454,13 +555,124 @@
     this.getAssessmentDetail();
   },
   methods: {
+    // 鏍规嵁瀛楀吀value鑾峰彇label
+    getOrganLabel(organValue) {
+      const dictItem = this.organDict.find(item => item.value === organValue);
+      return dictItem ? dictItem.label : organValue;
+    },
+
+    // Tab鐐瑰嚮浜嬩欢
+    handleTabClick(organ, tab) {
+      if (tab.name !== "add") {
+        this.activeTabMap.set(organ.organno, tab.name);
+      }
+    },
+// 鑾峰彇鍔熻兘鐘舵�佹爣绛剧被鍨�
+  getFunctionStatusTagType(status) {
+    const typeMap = {
+      "1": "success",  // 姝e父
+      "2": "warning",  // 杞诲害寮傚父
+      "3": "danger",   // 閲嶅害寮傚父
+      "4": "info"      // 鏃犳硶璇勪及
+    };
+    return typeMap[status] || "info";
+  },
+
+  // 鑾峰彇鍔熻兘鐘舵�佹枃鏈�
+  getFunctionStatusText(status) {
+    const textMap = {
+      "1": "姝e父",
+      "2": "杞诲害寮傚父",
+      "3": "閲嶅害寮傚父",
+      "4": "鏃犳硶璇勪及"
+    };
+    return textMap[status] || "鏈瘎浼�";
+  },
+
+  // 鏄剧ず闄勪欢鍒楄〃
+  showAttachmentList(attachments, assessmentNumber) {
+    if (!attachments || attachments.length === 0) {
+      this.$message.info(`绗�${assessmentNumber}娆¤瘎浼版殏鏃犻檮浠禶);
+      return;
+    }
+
+    this.$alert(
+      `<div>
+        <h4>绗�${assessmentNumber}娆¤瘎浼伴檮浠跺垪琛�</h4>
+        <ul style="list-style: none; padding-left: 0;">
+          ${attachments.map((item, index) => `
+            <li style="margin: 5px 0; padding: 5px; background: #f5f7fa; border-radius: 4px;">
+              <i class="el-icon-document"></i>
+              <span style="margin-left: 8px;">${item.fileName}</span>
+              <el-button
+                type="text"
+                size="mini"
+                onclick="window.open('${item.path || item.fileUrl}')"
+                style="margin-left: 10px;"
+              >
+                涓嬭浇
+              </el-button>
+            </li>
+          `).join('')}
+        </ul>
+      </div>`,
+      '闄勪欢鍒楄〃',
+      {
+        dangerouslyUseHTMLString: true,
+        showConfirmButton: false,
+        showCancelButton: true,
+        cancelButtonText: '鍏抽棴'
+      }
+    );
+  },
+    // 鑾峰彇鍣ㄥ畼鐨勮瘎浼板垪琛�
+    getOrganAssessments(organ) {
+      if (!organ.assesscontent) return [];
+      try {
+        const assessData =
+          typeof organ.assesscontent === "string"
+            ? JSON.parse(organ.assesscontent)
+            : organ.assesscontent;
+
+        if (Array.isArray(assessData)) {
+          return assessData.filter(item => item.delFlag !== "1");
+        }
+        return [];
+      } catch (error) {
+        console.warn("瑙f瀽璇勪及鍐呭澶辫触:", error);
+        return [];
+      }
+    },
+
+    // 鑾峰彇璇勪及鏁伴噺
+    getAssessmentCount(organ) {
+      return this.getOrganAssessments(organ).length;
+    },
+
+    // 澶勭悊璇勪及鏇存柊
+    handleUpdateAssessment(data) {
+      const { organData, assessmentData, assessmentIndex } = data;
+      const assessments = this.getOrganAssessments(organData);
+
+      if (assessments[assessmentIndex]) {
+        // 鍒涘缓鏂扮殑璇勪及鏁扮粍
+        const newAssessments = [...assessments];
+        newAssessments[assessmentIndex] = {
+          ...assessments[assessmentIndex],
+          ...assessmentData
+        };
+
+        // 鏇存柊 assesscontent
+        this.$set(organData, "assesscontent", JSON.stringify(newAssessments));
+        this.$forceUpdate();
+      }
+    },
+
     // 鏁翠綋淇濆瓨鏂规硶
     async handleSaveAll() {
       this.saveLoading = true;
       try {
-        // 1. 鍑嗗涓昏瘎浼拌〃鏁版嵁
         const saveData = {
-          // 鏍规嵁 id 鏄惁瀛樺湪鍐冲畾鏄洿鏂拌繕鏄柊澧�
           id: this.assessmentData.id || undefined,
           infoid: this.infoid,
           caseNo: this.assessmentData.caseNo,
@@ -473,49 +685,49 @@
           idcardno: this.assessmentData.idcardno,
           diagnosisname: this.assessmentData.diagnosisname,
           coordinatorName: this.assessmentData.coordinatorName,
-          assessTime: this.assessmentData.assessTime || new Date().toISOString(),
+          assessTime:
+            this.assessmentData.assessTime || new Date().toISOString(),
           assessState: this.assessmentData.assessState,
           assessannex: this.assessmentData.assessannex,
-          // 鎹愮尞鍐冲畾淇℃伅
-          organdecision: this.organdecision.join(','),
+          organdecision: this.organdecisionValues.join(","),
           organdecisionOther: this.organdecisionOther,
-          // 鍣ㄥ畼璇勪及鍒楄〃
-          serviceMedicalevaluationorgans: this.organAssessmentList.map(organ => ({
-            id: organ.id,
-            infoid: organ.infoid,
-            donorno: organ.donorno,
-            organno: organ.organno,
-            organname: organ.organname,
-            organnumber: organ.organnumber,
-            gainhospitalno: organ.gainhospitalno,
-            gainhospitalname: organ.gainhospitalname,
-            isbiopsybefore: organ.isbiopsybefore,
-            isbiopsyafter: organ.isbiopsyafter,
-            ismarginalorgan: organ.ismarginalorgan,
-            ispathogenpositive: organ.ispathogenpositive,
-            ispnf: organ.ispnf,
-            isdgf: organ.isdgf,
-            // 灏� assessments 鏁扮粍搴忓垪鍖栧埌 assesscontent 瀛楁
-            assesscontent: JSON.stringify(organ.assessments)
-          }))
+          serviceMedicalevaluationorganList: this.organAssessmentList.map(
+            organ => ({
+              id: organ.id,
+              infoid: organ.infoid,
+              donorno: organ.donorno,
+              organno: organ.organno,
+              organname: this.getOrganLabel(organ.organno),
+              organnumber: organ.organnumber,
+              gainhospitalno: organ.gainhospitalno,
+              gainhospitalname: organ.gainhospitalname,
+              isbiopsybefore: organ.isbiopsybefore,
+              isbiopsyafter: organ.isbiopsyafter,
+              ismarginalorgan: organ.ismarginalorgan,
+              ispathogenpositive: organ.ispathogenpositive,
+              ispnf: organ.ispnf,
+              isdgf: organ.isdgf,
+              delFlag: organ.delFlag || "0",
+              assesscontent: organ.assesscontent || "[]"
+            })
+          )
         };
 
-        // 2. 鏍规嵁 id 鍒ゆ柇璋冪敤鍝釜 API
         const saveMethod = this.assessmentData.id ? assessedit : assessAdd;
         const response = await saveMethod(saveData);
 
         if (response.code === 200) {
-          this.$message.success('璇勪及琛ㄤ繚瀛樻垚鍔燂紒');
-          // 淇濆瓨鎴愬姛鍚庯紝鏇存柊鏈湴鐨� assessmentData.id锛堝浜庢柊澧炴儏鍐碉級
+          this.$message.success("璇勪及琛ㄤ繚瀛樻垚鍔燂紒");
           if (!this.assessmentData.id && response.data && response.data.id) {
             this.assessmentData.id = response.data.id;
           }
+          this.refreshKey += 1; // 瑙﹀彂閲嶆柊娓叉煋
         } else {
-          this.$message.error('淇濆瓨澶辫触锛�' + (response.msg || '鏈煡閿欒'));
+          this.$message.error("淇濆瓨澶辫触锛�" + (response.msg || "鏈煡閿欒"));
         }
       } catch (error) {
-        console.error('淇濆瓨璇勪及琛ㄥけ璐�:', error);
-        this.$message.error('淇濆瓨澶辫触锛岃閲嶈瘯');
+        console.error("淇濆瓨璇勪及琛ㄥけ璐�:", error);
+        this.$message.error("淇濆瓨澶辫触锛岃閲嶈瘯");
       } finally {
         this.saveLoading = false;
       }
@@ -527,12 +739,21 @@
     },
 
     // 鎹愮尞鍐冲畾鍙樻洿澶勭悊
-    handleOrganDecisionChange(newDecision) {
-      // 鑷姩澶勭悊鐩稿叧閫昏緫
+    async handleOrganDecisionChange(newDecision) {
+      const oldDecision = [...this.prevOrgandecisionValues];
       this.autoHandleDecisionChange(newDecision);
-      // 寮哄埗閲嶆柊娓叉煋
+
+      const removedDecisions = oldDecision.filter(
+        item => !newDecision.includes(item)
+      );
+
+      for (const decision of removedDecisions) {
+        await this.handleRemovedDecision(decision);
+      }
+
+      this.prevOrgandecisionValues = [...newDecision];
       this.$forceUpdate();
-      // 濡傛灉浠庢湁閫夋嫨鍙樹负鏃犻�夋嫨锛屾竻绌哄睍寮�鐘舵��
+
       if (newDecision.length === 0) {
         this.expandedRowKeys = [];
       }
@@ -545,25 +766,36 @@
 
     // 鑷姩澶勭悊鍐冲畾鍙樻洿閫昏緫
     autoHandleDecisionChange(newDecision) {
-      // 濡傛灉閫夋嫨浜�"鍙岃偩"锛岃嚜鍔ㄥ彇娑堝崟鐙殑"宸﹁偩"鍜�"鍙宠偩"閫夋嫨
-      if (newDecision.includes("鍙岃偩")) {
-        this.organdecision = newDecision.filter(
-          item => item !== "宸﹁偩" && item !== "鍙宠偩"
+      // 濡傛灉閫夋嫨浜�"鍙岃偩"(value: C64)锛岃嚜鍔ㄥ彇娑堝崟鐙殑"宸﹁偩"(value: C64L)鍜�"鍙宠偩"(value: C64R)閫夋嫨
+      if (newDecision.includes("C64")) {
+        this.organdecisionValues = newDecision.filter(
+          item => item !== "C64L" && item !== "C64R"
         );
       }
       // 濡傛灉閫夋嫨浜�"宸﹁偩"鎴�"鍙宠偩"锛屽彇娑�"鍙岃偩"閫夋嫨
-      else if (newDecision.includes("宸﹁偩") || newDecision.includes("鍙宠偩")) {
-        this.organdecision = newDecision.filter(item => item !== "鍙岃偩");
+      else if (newDecision.includes("C64L") || newDecision.includes("C64R")) {
+        this.organdecisionValues = newDecision.filter(item => item !== "C64");
       }
 
-      // 澶勭悊浜掓枼閫昏緫
+      // 濡傛灉閫夋嫨浜�"鍏ㄨ偤"(value: C34)锛岃嚜鍔ㄥ彇娑堝崟鐙殑"宸﹁偤"(value: C34L)鍜�"鍙宠偤"(value: C34R)閫夋嫨
+      if (newDecision.includes("C34")) {
+        this.organdecisionValues = newDecision.filter(
+          item => item !== "C34L" && item !== "C34R"
+        );
+      }
+      // 濡傛灉閫夋嫨浜�"宸﹁偤"鎴�"鍙宠偤"锛屽彇娑�"鍏ㄨ偤"閫夋嫨
+      else if (newDecision.includes("C34L") || newDecision.includes("C34R")) {
+        this.organdecisionValues = newDecision.filter(item => item !== "C34");
+      }
+
+      // 澶勭悊鍏朵粬浜掓枼閫昏緫
       this.handleExclusiveDecisions();
     },
 
     // 澶勭悊浜掓枼鐨勬崘鐚喅瀹�
     handleExclusiveDecisions() {
-      // 閬椾綋鎹愮尞涓庡叾浠栧櫒瀹樻崘鐚簰鏂ワ紙鏍规嵁涓氬姟闇�姹傝皟鏁达級
-      if (this.organdecision.includes("閬椾綋")) {
+      // 閬椾綋鎹愮尞(value: 10)涓庡叾浠栧櫒瀹樻崘鐚簰鏂ワ紙鏍规嵁涓氬姟闇�姹傝皟鏁达級
+      if (this.organdecisionValues.includes("10")) {
         // 鍙互璁剧疆鍙繚鐣欓仐浣撴崘鐚紝鎴栬�呮牴鎹笟鍔¢渶姹傚鐞�
       }
     },
@@ -596,52 +828,91 @@
       const organsToCreate = this.organDecisionMapping[decision];
 
       if (organsToCreate && organsToCreate.length > 0) {
-        organsToCreate.forEach(organName => {
-          this.ensureOrganExists(organName);
+        organsToCreate.forEach(organValue => {
+          this.ensureOrganExists(organValue);
         });
 
         // 鏄剧ず鍒涘缓鎻愮ず
         if (organsToCreate.length > 0) {
           this.$message.success(
-            `宸蹭负銆�${decision}銆戝垱寤�${organsToCreate.length}涓瘎浼伴」`
+            `宸蹭负銆�${this.getOrganLabel(decision)}銆戝垱寤�${
+              organsToCreate.length
+            }涓瘎浼伴」`
           );
         }
       } else {
-        console.warn(`鎹愮尞鍐冲畾銆�${decision}銆戞病鏈夐厤缃櫒瀹樻槧灏勫叧绯籤);
+        console.warn(
+          `鎹愮尞鍐冲畾銆�${this.getOrganLabel(decision)}銆戞病鏈夐厤缃櫒瀹樻槧灏勫叧绯籤
+        );
       }
     },
 
     // 澶勭悊绉婚櫎鐨勬崘鐚喅瀹�
-    handleRemovedDecision(decision) {
-      // 鏍规嵁涓氬姟闇�姹傛坊鍔犳竻鐞嗛�昏緫
+    async handleRemovedDecision(decision) {
       const relatedOrgans = this.organDecisionMapping[decision] || [];
-      relatedOrgans.forEach(organ => {
-        // 鍙互鍦ㄨ繖閲屾坊鍔犳竻鐞嗙浉鍏冲櫒瀹樿瘎浼扮殑閫昏緫
-      });
+
+      for (const organValue of relatedOrgans) {
+        const organIndex = this.organAssessmentList.findIndex(
+          organ => organ.organno === organValue && organ.delFlag !== "1"
+        );
+
+        if (organIndex !== -1) {
+          const organ = this.organAssessmentList[organIndex];
+          const organLabel = this.getOrganLabel(organValue);
+
+          try {
+            await this.$confirm(
+              `鎹愮尞鍐冲畾"${this.getOrganLabel(
+                decision
+              )}"宸插彇娑堬紝鏄惁鍒犻櫎瀵瑰簲鐨�${organLabel}璇勪及璁板綍锛焋,
+              "纭鍒犻櫎",
+              {
+                confirmButtonText: "纭畾",
+                cancelButtonText: "鍙栨秷",
+                type: "warning"
+              }
+            );
+
+            this.$set(this.organAssessmentList[organIndex], "delFlag", "1");
+            this.deletedOrganAssessments.push(organValue);
+
+            const keyIndex = this.expandedRowKeys.indexOf(organValue);
+            if (keyIndex > -1) {
+              this.expandedRowKeys.splice(keyIndex, 1);
+            }
+
+            this.$message.success(`${organLabel}璇勪及璁板綍宸叉爣璁板垹闄);
+          } catch (cancelError) {
+            if (!this.organdecisionValues.includes(decision)) {
+              this.organdecisionValues.push(decision);
+            }
+            this.$message.info(`宸插彇娑堝垹闄�${organLabel}璇勪及璁板綍`);
+          }
+        }
+      }
     },
 
-    // 纭繚鍣ㄥ畼瀛樺湪锛堝甫閲嶅妫�鏌ワ級
-    ensureOrganExists(organName) {
-      // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍚屽悕鍣ㄥ畼璇勪及椤�
+    // 纭繚鍣ㄥ畼瀛樺湪
+    ensureOrganExists(organValue) {
       const exists = this.organAssessmentList.some(
-        organ => organ.organname === organName
+        organ => organ.organno === organValue && organ.delFlag !== "1"
       );
 
       if (!exists) {
-        // 鍒涘缓鏂扮殑鍣ㄥ畼璇勪及椤�
         const newOrgan = {
-          id: `organ_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
-          organno: `ORG${Date.now()}`,
-          organname: organName,
+          id: null,
+          organno: organValue,
+          organname: this.getOrganLabel(organValue),
           gainhospitalname: "寰呭垎閰嶆満鏋�",
           isbiopsybefore: "0",
           isbiopsyafter: "0",
           ismarginalorgan: "0",
           ispathogenpositive: "0",
-          assessments: [this.getDefaultAssessment(0)],
-          activeAssessmentTab: "assessment_0",
+          assesscontent: JSON.stringify([this.getDefaultAssessment(0)]),
+          activeTab: 0,
           expanded: false,
-          createTime: new Date().toISOString()
+          createTime: new Date().toISOString(),
+          delFlag: "0"
         };
 
         this.organAssessmentList = [...this.organAssessmentList, newOrgan];
@@ -673,7 +944,6 @@
     handleResponseData(response) {
       let detailData = null;
 
-      // 鏍规嵁鎺ュ彛瀹為檯杩斿洖鐨勬暟鎹粨鏋勮繘琛岃皟鏁�
       if (response.data) {
         if (Array.isArray(response.data)) {
           detailData = response.data[0] || {};
@@ -688,7 +958,6 @@
         detailData = response;
       }
 
-      // 鏄犲皠瀛楁鍒拌瘎浼版暟鎹�
       this.assessmentData = {
         id: detailData.id || this.assessmentId,
         infoid: detailData.infoid || this.infoid,
@@ -706,15 +975,16 @@
         assessannex: detailData.assessannex || ""
       };
 
-      // 澶勭悊鎹愮尞鍐冲畾鏁版嵁
       if (detailData.organdecision) {
-        this.organdecision = Array.isArray(detailData.organdecision)
+        const decisionArray = Array.isArray(detailData.organdecision)
           ? detailData.organdecision
-          : (detailData.organdecision || "").split(",");
+          : (detailData.organdecision || "").split(",").filter(item => item);
+
+        this.organdecisionValues = decisionArray;
+        this.prevOrgandecisionValues = [...decisionArray];
         this.organdecisionOther = detailData.organdecisionOther || "";
       }
 
-      // 澶勭悊鍣ㄥ畼璇勪及鏁版嵁
       this.processOrganAssessmentData(detailData);
     },
 
@@ -722,46 +992,43 @@
     processOrganAssessmentData(detailData) {
       let organList = [];
 
-      // 浠庢帴鍙f暟鎹腑鑾峰彇鍣ㄥ畼璇勪及鍒楄〃
-      if (detailData.serviceMedicalevaluationorgans) {
-        if (Array.isArray(detailData.serviceMedicalevaluationorgans)) {
-          organList = detailData.serviceMedicalevaluationorgans;
+      if (detailData.serviceMedicalevaluationorganList) {
+        if (Array.isArray(detailData.serviceMedicalevaluationorganList)) {
+          organList = detailData.serviceMedicalevaluationorganList;
         }
       }
 
-      // 杞崲鍣ㄥ畼鏁版嵁鏍煎紡锛屾敮鎸佸娆¤瘎浼�
       this.organAssessmentList = organList.map(organ => {
-        const assessments = [];
+        const organno = organ.organno;
 
-        // 瑙f瀽assesscontent瀛楁涓殑澶氭璇勪及鏁版嵁
-        if (organ.assesscontent) {
+        // 濡傛灉 assesscontent 鏄瓧绗︿覆锛岀‘淇濆畠鏄湁鏁堢殑 JSON
+        if (organ.assesscontent && typeof organ.assesscontent === "string") {
           try {
-            const assessData = typeof organ.assesscontent === "string"
-              ? JSON.parse(organ.assesscontent)
-              : organ.assesscontent;
-
-            if (Array.isArray(assessData)) {
-              assessments.push(
-                ...assessData.map((item, index) => ({
-                  ...item,
-                  index: index,
-                  status: item.status || "assessed"
-                }))
-              );
-            }
+            JSON.parse(organ.assesscontent);
           } catch (error) {
-            console.warn("瑙f瀽璇勪及鍐呭澶辫触:", error);
-            assessments.push(this.getDefaultAssessment(0));
+            console.warn(
+              "鏃犳晥鐨� assesscontent锛岄噸缃负绌烘暟缁�:",
+              organ.assesscontent
+            );
+            organ.assesscontent = "[]";
           }
-        } else {
-          assessments.push(this.getDefaultAssessment(0));
+        } else if (!organ.assesscontent) {
+          organ.assesscontent = "[]";
         }
+
+        const assessments = this.getOrganAssessments(organ);
+        const activeTab = this.activeTabMap.has(organno)
+          ? this.activeTabMap.get(organno)
+          : assessments.length > 0
+          ? 0
+          : "summary";
 
         return {
           ...organ,
-          assessments: assessments,
-          activeAssessmentTab: assessments.length > 0 ? "assessment_0" : "summary",
-          expanded: false
+          organname: this.getOrganLabel(organ.organno) || organ.organname,
+          activeTab: activeTab,
+          expanded: false,
+          delFlag: organ.delFlag || "0"
         };
       });
     },
@@ -777,30 +1044,37 @@
         assessmentOpinion: "",
         clinicalData: {},
         labResults: {},
-        createTime: new Date().toISOString()
+        createTime: new Date().toISOString(),
+        delFlag: "0"
       };
     },
 
     // 璁$畻鏈�澶ц瘎浼版鏁�
     getMaxAssessmentCount() {
       const maxCount = Math.max(
-        ...this.organAssessmentList.map(organ =>
-          organ.assessments ? organ.assessments.length : 0
-        )
+        ...this.organAssessmentList
+          .filter(organ => organ.delFlag !== "1")
+          .map(organ => this.getAssessmentCount(organ))
       );
       return Math.max(maxCount, 1);
     },
 
     // 鑾峰彇鍣ㄥ畼鏁翠綋鐘舵��
     getOrganOverallStatus(organ) {
-      if (!organ.assessments || organ.assessments.length === 0) {
+      const assessments = this.getOrganAssessments(organ);
+      if (assessments.length === 0) {
         return "pending";
       }
 
-      const allAssessed = organ.assessments.every(
+      const validAssessments = assessments.filter(a => a.delFlag !== "1");
+      if (validAssessments.length === 0) {
+        return "pending";
+      }
+
+      const allAssessed = validAssessments.every(
         assessment => assessment.status === "assessed"
       );
-      const someAssessed = organ.assessments.some(
+      const someAssessed = validAssessments.some(
         assessment => assessment.status === "assessed"
       );
 
@@ -845,28 +1119,130 @@
 
     // 娣诲姞鏂拌瘎浼�
     handleAddNewAssessment(organ) {
+      const assessments = this.getOrganAssessments(organ);
       const newAssessment = {
-        ...this.getDefaultAssessment(organ.assessments.length),
+        ...this.getDefaultAssessment(assessments.length),
         assessor: this.currentUser.name
       };
 
-      organ.assessments.push(newAssessment);
-      organ.activeAssessmentTab = `assessment_${organ.assessments.length - 1}`;
+      const newAssessments = [...assessments, newAssessment];
+      this.$set(organ, "assesscontent", JSON.stringify(newAssessments));
+
+      organ.activeTab = assessments.length;
+      this.activeTabMap.set(organ.organno, assessments.length);
 
       this.$message.success("宸叉坊鍔犳柊鐨勮瘎浼�");
     },
 
-    // 澶勭悊娣诲姞璇勪及浜嬩欢
-    handleAddAssessment(data) {
-      const { organData } = data;
-      this.handleAddNewAssessment(organData);
+    // 澶勭悊鍒犻櫎璇勪及浜嬩欢
+    handleDeleteAssessment(data) {
+      const { organData, assessmentIndex } = data;
+      this.deleteOrganAssessment(organData, assessmentIndex);
+    },
+    // 澶勭悊璇勪及淇濆瓨
+    handleSaveAssessment(data) {
+      const { organData, assessmentData, assessmentIndex } = data;
+      const assessments = this.getOrganAssessments(organData);
+
+      console.log("淇濆瓨璇勪及鏁版嵁:", data);
+
+      if (assessments[assessmentIndex]) {
+        // 鍒涘缓鏂扮殑璇勪及鏁扮粍
+        const newAssessments = [...assessments];
+        newAssessments[assessmentIndex] = {
+          ...assessments[assessmentIndex],
+          ...assessmentData,
+          status: "assessed", // 鏍囪涓哄凡璇勪及
+          assessmentTime: new Date().toISOString(), // 璁剧疆璇勪及鏃堕棿
+          delFlag: "0" // 纭繚鍒犻櫎鏍囧織
+        };
+
+        // 鏇存柊 assesscontent
+        this.$set(organData, "assesscontent", JSON.stringify(newAssessments));
+
+        // 寮哄埗閲嶆柊娓叉煋
+        this.$forceUpdate();
+
+        this.$message.success("璇勪及淇濆瓨鎴愬姛");
+
+        // 妫�鏌ユ槸鍚﹂渶瑕佽嚜鍔ㄥ垏鎹㈠埌涓嬩竴涓瘎浼�
+        this.checkAndSwitchTab(organData, assessmentIndex);
+      }
+    },
+
+    // 妫�鏌ュ苟鑷姩鍒囨崲tab
+    checkAndSwitchTab(organData, currentIndex) {
+      const assessments = this.getOrganAssessments(organData);
+      if (currentIndex < assessments.length - 1) {
+        // 濡傛灉杩樻湁涓嬩竴涓瘎浼帮紝鑷姩鍒囨崲鍒颁笅涓�涓�
+        organData.activeTab = currentIndex + 1;
+        this.activeTabMap.set(organData.organno, currentIndex + 1);
+      } else {
+        // 濡傛灉娌℃湁涓嬩竴涓瘎浼帮紝鍒囨崲鍒版眹鎬婚〉
+        organData.activeTab = "summary";
+        this.activeTabMap.set(organData.organno, "summary");
+      }
+    },
+
+    // 鍒犻櫎鍣ㄥ畼璇勪及
+    async deleteOrganAssessment(organ, assessmentIndex) {
+      try {
+        await this.$confirm(
+          `纭鍒犻櫎绗�${assessmentIndex + 1}娆¤瘎浼拌褰曞悧锛焋,
+          "纭鍒犻櫎",
+          {
+            confirmButtonText: "纭畾",
+            cancelButtonText: "鍙栨秷",
+            type: "warning"
+          }
+        );
+
+        const assessments = this.getOrganAssessments(organ);
+        if (assessments[assessmentIndex]) {
+          // 鏍囪涓哄垹闄�
+          assessments[assessmentIndex].delFlag = "1";
+
+          // 杩囨护鎺夊凡鍒犻櫎鐨勮瘎浼�
+          const newAssessments = assessments.filter(
+            item => item.delFlag !== "1"
+          );
+
+          // 閲嶆柊璁$畻璇勪及绱㈠紩
+          newAssessments.forEach((assessment, index) => {
+            assessment.index = index;
+          });
+
+          // 鏇存柊 assesscontent
+          this.$set(organ, "assesscontent", JSON.stringify(newAssessments));
+
+          // 澶勭悊tab鍒囨崲
+          if (newAssessments.length === 0) {
+            organ.activeTab = "summary";
+            this.activeTabMap.set(organ.organno, "summary");
+          } else if (organ.activeTab === assessmentIndex) {
+            const newIndex = Math.max(0, assessmentIndex - 1);
+            organ.activeTab = newIndex;
+            this.activeTabMap.set(organ.organno, newIndex);
+          } else if (organ.activeTab === "summary") {
+            this.activeTabMap.set(organ.organno, "summary");
+          }
+
+          this.$message.success("璇勪及璁板綍宸插垹闄�");
+          this.$forceUpdate();
+        }
+      } catch (cancelError) {
+        this.$message.info("宸插彇娑堝垹闄�");
+      }
     },
 
     // 鑾峰彇鏈�鏂拌瘎浼版椂闂�
     getLatestAssessmentTime(organ) {
-      if (!organ.assessments || organ.assessments.length === 0) return null;
+      const assessments = this.getOrganAssessments(organ);
+      if (assessments.length === 0) return null;
 
-      const assessed = organ.assessments.filter(a => a.assessmentTime);
+      const assessed = assessments.filter(
+        a => a.assessmentTime && a.delFlag !== "1"
+      );
       if (assessed.length === 0) return null;
 
       return assessed.sort(
@@ -896,8 +1272,6 @@
 
     // 妫�鏌ヨ瘎浼版潈闄�
     canAssessOrgan(organ) {
-      console.log(organ,'organ');
-
       if (this.isCoordinator) return true;
       if (!this.isEdit) return false;
       return (
@@ -934,9 +1308,10 @@
     handleAttachmentPreview() {
       if (this.assessmentData.assessannex) {
         try {
-          const annexData = typeof this.assessmentData.assessannex === "string"
-            ? JSON.parse(this.assessmentData.assessannex)
-            : this.assessmentData.assessannex;
+          const annexData =
+            typeof this.assessmentData.assessannex === "string"
+              ? JSON.parse(this.assessmentData.assessannex)
+              : this.assessmentData.assessannex;
 
           if (Array.isArray(annexData) && annexData.length > 0) {
             this.currentPreviewFile = annexData[0];
@@ -965,7 +1340,6 @@
           }
         );
 
-        // 鏇存柊璇勪及鐘舵�佷负宸插畬鎴�
         const updateData = {
           ...this.assessmentData,
           assessState: "3",
@@ -1082,17 +1456,210 @@
 .fixed-width .el-button {
   margin: 0 2px;
 }
-
-/* 鎹愮尞鍐冲畾鏍峰紡浼樺寲 */
-.organ-decision-info {
-  margin: 10px 0;
+/* 姹囨�婚〉闈㈡牱寮� */
+.assessment-summary {
   padding: 10px;
-  background-color: #f8f9fa;
-  border-radius: 4px;
-  border-left: 4px solid #409eff;
 }
 
-.decision-tag {
-  margin: 2px 5px;
+.summary-item {
+  font-weight: 500;
+  color: #303133;
+}
+
+.highlight-text {
+  color: #409EFF;
+  font-weight: 500;
+}
+
+.assessment-detail-card {
+  border: 1px solid #e6ebf5;
+}
+
+.organ-info-card {
+  border: 1px solid #e6ebf5;
+  background-color: #fafafa;
+}
+
+.no-assessment {
+  text-align: center;
+  padding: 40px 0;
+  color: #909399;
+}
+
+.assessment-item {
+  margin-bottom: 20px;
+}
+
+.assessment-item:last-child {
+  margin-bottom: 0;
+}
+
+.assessment-card {
+  border: 1px solid #dcdfe6;
+  border-radius: 8px;
+  transition: all 0.3s;
+}
+
+.assessment-card:hover {
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  border-color: #409EFF;
+}
+
+.assessment-title {
+  font-size: 16px;
+  font-weight: 600;
+  color: #303133;
+}
+
+.status-tag {
+  float: right;
+  margin-right: 0;
+}
+
+.time-text {
+  color: #67C23A;
+  font-weight: 500;
+}
+
+.opinion-content {
+  padding: 8px 12px;
+  background: #f5f7fa;
+  border-radius: 4px;
+  line-height: 1.5;
+  color: #606266;
+  white-space: pre-wrap;
+  word-break: break-word;
+}
+
+.detail-descriptions {
+  background: #fff;
+}
+
+/* 浼樺寲琛ㄦ牸鏍峰紡 */
+::v-deep .el-table {
+  color: #303133;
+  font-size: 14px;
+}
+
+::v-deep .el-table th {
+  background-color: #f5f7fa;
+  color: #303133;
+  font-weight: 600;
+  padding: 12px 0;
+}
+
+::v-deep .el-table tr {
+  background-color: #fff;
+}
+
+::v-deep .el-table tr:hover {
+  background-color: #f5f7fa;
+}
+
+::v-deep .el-table .cell {
+  padding: 12px 10px;
+  line-height: 1.5;
+}
+
+::v-deep .el-table--striped .el-table__body tr.el-table__row--striped td {
+  background-color: #fafafa;
+}
+
+::v-deep .el-table--enable-row-hover .el-table__body tr:hover>td {
+  background-color: #ecf5ff;
+}
+
+/* 鍙瘎浼拌鏍峰紡 */
+::v-deep .assessable-row {
+  background-color: #f0f9ff !important;
+}
+
+::v-deep .assessable-row:hover {
+  background-color: #d9ecff !important;
+}
+
+::v-deep .non-assessable-row {
+  background-color: #fafafa !important;
+}
+
+/* 鎻忚堪鍒楄〃鏍峰紡浼樺寲 */
+::v-deep .el-descriptions__label {
+  width: 120px;
+  background-color: #f5f7fa;
+  font-weight: 600;
+  color: #303133;
+}
+
+::v-deep .el-descriptions__content {
+  background-color: #fff;
+  color: #606266;
+}
+
+::v-deep .el-descriptions__body {
+  background-color: #fff;
+}
+
+/* 鍗$墖鏍峰紡浼樺寲 */
+::v-deep .el-card__header {
+  background-color: #f5f7fa;
+  border-bottom: 1px solid #e6ebf5;
+  padding: 12px 20px;
+  font-weight: 600;
+  color: #303133;
+}
+
+::v-deep .el-card__body {
+  padding: 20px;
+}
+
+/* 鏍囩鏍峰紡浼樺寲 */
+::v-deep .el-tag {
+  font-weight: 500;
+  border-radius: 12px;
+  padding: 0 10px;
+  height: 24px;
+  line-height: 22px;
+}
+
+/* 鎸夐挳鏍峰紡浼樺寲 */
+::v-deep .el-button--mini {
+  padding: 7px 12px;
+  font-size: 12px;
+  border-radius: 4px;
+}
+
+/* Tab鏍峰紡浼樺寲 */
+::v-deep .el-tabs__item {
+  font-weight: 500;
+  color: #606266;
+}
+
+::v-deep .el-tabs__item.is-active {
+  color: #409EFF;
+  font-weight: 600;
+}
+
+::v-deep .el-tabs__nav-wrap::after {
+  background-color: #e4e7ed;
+}
+
+::v-deep .el-tabs--card>.el-tabs__header .el-tabs__item.is-active {
+  background-color: #fff;
+  border-bottom-color: #fff;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 768px) {
+  .assessment-summary {
+    padding: 5px;
+  }
+
+  ::v-deep .el-table .cell {
+    padding: 8px 5px;
+  }
+
+  .assessment-card {
+    margin-bottom: 10px;
+  }
 }
 </style>

--
Gitblit v1.9.3