From f5e6487a78789ee372a8c6458bfd0cb740d6a0e8 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 13 五月 2026 22:13:58 +0800
Subject: [PATCH] 青岛维护

---
 src/views/business/appear/index.vue                          |  432 +++--
 src/views/business/OrganUtilization/OrganUtilizationInfo.vue |  243 --
 src/views/business/decide/DecideInfo copy.vue                |  816 ++++++++++
 src/views/business/transfer/index.vue                        |   26 
 src/views/business/decide/DecideInfo.vue                     |  958 ++++++++---
 src/components/assessInfoComponents/OrganAssessmentForm.vue  |  138 +
 src/views/business/appear/caseDetail.vue                     |   28 
 src/views/business/appear/index copy.vue                     | 1801 +++++++++++++++++++++++
 src/views/business/assess/assessInfo.vue                     |  209 +-
 9 files changed, 3,856 insertions(+), 795 deletions(-)

diff --git a/src/components/assessInfoComponents/OrganAssessmentForm.vue b/src/components/assessInfoComponents/OrganAssessmentForm.vue
index a3be60e..bccb24d 100644
--- a/src/components/assessInfoComponents/OrganAssessmentForm.vue
+++ b/src/components/assessInfoComponents/OrganAssessmentForm.vue
@@ -1,6 +1,20 @@
 <template>
   <div class="organ-assessment-form">
     <el-form :model="formData" label-width="120px">
+      <!-- 娣诲姞璇勪及鏃堕棿瀛楁 -->
+      <el-form-item label="璇勪及鏃堕棿">
+        <el-date-picker
+          v-model="formData.assessmentTime"
+          type="datetime"
+          placeholder="閫夋嫨璇勪及鏃堕棿"
+          format="yyyy-MM-dd HH:mm:ss"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          :default-value="new Date()"
+          style="width: 100%"
+        />
+      </el-form-item>
+
+      <!-- 鍙妯″紡涓嬫樉绀鸿瘎浼版椂闂� -->
       <el-form-item label="鍔熻兘鐘舵��">
         <el-select v-model="formData.functionStatus">
           <el-option label="姝e父" value="1" />
@@ -77,7 +91,7 @@
               </el-table-column>
               <el-table-column label="涓婁紶鏃堕棿" width="160">
                 <template slot-scope="scope">
-                  <span>{{ formatDateTime(scope.row.uploadTime) }}</span>
+                  <span>{{ scope.row.uploadTime }}</span>
                 </template>
               </el-table-column>
               <el-table-column label="鏂囦欢澶у皬" width="100">
@@ -179,6 +193,7 @@
       formData: {
         functionStatus: "",
         assessmentOpinion: "",
+        assessmentTime: "", // 鏂板璇勪及鏃堕棿瀛楁
         attachments: []
       },
       // 棰勮鐩稿叧
@@ -215,6 +230,14 @@
   },
   created() {
     this.initData();
+    // 濡傛灉璇勪及鏃堕棿涓虹┖锛岃缃粯璁ゅ��
+    if (!this.formData.assessmentTime) {
+      this.$set(
+        this.formData,
+        "assessmentTime",
+        this.getDefaultAssessmentTime()
+      );
+    }
   },
   methods: {
     // 鍒濆鍖栨暟鎹�
@@ -223,6 +246,7 @@
         this.formData = {
           functionStatus: "",
           assessmentOpinion: "",
+          assessmentTime: this.getDefaultAssessmentTime(),
           attachments: []
         };
         this.attachmentFileList = [];
@@ -241,14 +265,26 @@
         ) {
           this.currentAssessment = assessData[this.assessmentIndex];
 
-          // 娣辨嫹璐濇暟鎹紝閬垮厤淇敼鍘熷鏁版嵁
+          // 娣辨嫹璐濇暟鎹�
           const assessmentCopy = JSON.parse(
             JSON.stringify(this.currentAssessment)
           );
 
+          // 澶勭悊璇勪及鏃堕棿
+          let assessmentTime = assessmentCopy.assessmentTime;
+
+          // 濡傛灉鏃堕棿涓嶆槸鏈夋晥鐨勬棩鏈熷瓧绗︿覆锛屼娇鐢ㄩ粯璁ゅ��
+          if (!this.isValidDate(assessmentTime)) {
+            assessmentTime = this.getDefaultAssessmentTime();
+          } else {
+            // 纭繚鏃堕棿鏍煎紡姝g‘
+            assessmentTime = this.formatDateForPicker(assessmentTime);
+          }
+
           this.formData = {
             functionStatus: assessmentCopy.functionStatus || "",
             assessmentOpinion: assessmentCopy.assessmentOpinion || "",
+            assessmentTime: assessmentTime, // 澶勭悊鍚庣殑鏃堕棿
             attachments: Array.isArray(assessmentCopy.attachments)
               ? [...assessmentCopy.attachments]
               : []
@@ -272,17 +308,64 @@
         this.resetForm();
       }
     },
+    // 楠岃瘉鏃ユ湡鏄惁鏈夋晥
+    isValidDate(dateString) {
+      if (!dateString) return false;
 
+      try {
+        const date = new Date(dateString);
+        return !isNaN(date.getTime()) && dateString.trim() !== "";
+      } catch (error) {
+        return false;
+      }
+    },
+
+    // 涓烘棩鏈熼�夋嫨鍣ㄦ牸寮忓寲鏃ユ湡
+    formatDateForPicker(dateString) {
+      if (!dateString) return "";
+
+      try {
+        const date = new Date(dateString);
+        if (isNaN(date.getTime())) {
+          return this.getDefaultAssessmentTime();
+        }
+
+        // 鏍煎紡鍖栦负 yyyy-MM-dd HH:mm:ss
+        const year = date.getFullYear();
+        const month = String(date.getMonth() + 1).padStart(2, "0");
+        const day = String(date.getDate()).padStart(2, "0");
+        const hours = String(date.getHours()).padStart(2, "0");
+        const minutes = String(date.getMinutes()).padStart(2, "0");
+        const seconds = String(date.getSeconds()).padStart(2, "0");
+
+        return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+      } catch (error) {
+        console.error("鏃ユ湡鏍煎紡鍖栭敊璇�:", error);
+        return this.getDefaultAssessmentTime();
+      }
+    },
     // 閲嶇疆琛ㄥ崟
     resetForm() {
       this.formData = {
         functionStatus: "",
         assessmentOpinion: "",
+        assessmentTime: this.getDefaultAssessmentTime(), // 璁剧疆榛樿鏃堕棿
         attachments: []
       };
       this.attachmentFileList = [];
     },
+    // 鑾峰彇榛樿璇勪及鏃堕棿
+    getDefaultAssessmentTime() {
+      const now = new Date();
+      const year = now.getFullYear();
+      const month = String(now.getMonth() + 1).padStart(2, "0");
+      const day = String(now.getDate()).padStart(2, "0");
+      const hours = String(now.getHours()).padStart(2, "0");
+      const minutes = String(now.getMinutes()).padStart(2, "0");
+      const seconds = String(now.getSeconds()).padStart(2, "0");
 
+      return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+    },
     // 淇濆瓨璇勪及
     handleSave() {
       // 楠岃瘉蹇呰瀛楁
@@ -296,20 +379,31 @@
         return;
       }
 
+      if (!this.formData.assessmentTime) {
+        this.$message.warning("璇烽�夋嫨璇勪及鏃堕棿");
+        return;
+      }
+
+      // 楠岃瘉鏃堕棿鏍煎紡
+      if (!this.isValidDate(this.formData.assessmentTime)) {
+        this.$message.warning("璇勪及鏃堕棿鏍煎紡涓嶆纭紝璇烽噸鏂伴�夋嫨");
+        return;
+      }
+
       // 鍑嗗淇濆瓨鐨勬暟鎹�
       const saveData = {
         functionStatus: this.formData.functionStatus,
         assessmentOpinion: this.formData.assessmentOpinion,
+        assessmentTime: this.formData.assessmentTime,
         attachments: Array.isArray(this.formData.attachments)
           ? [...this.formData.attachments]
           : []
       };
 
-      // 娣诲姞璇勪及鑰呭拰璇勪及鏃堕棿
+      // 娣诲姞璇勪及鑰�
       const assessmentData = {
         ...saveData,
-        assessor: this.currentUser.name,
-        assessmentTime: new Date().toISOString()
+        assessor: this.currentUser.name
       };
 
       console.log("鍙戦�佷繚瀛樿姹�:", assessmentData);
@@ -320,7 +414,6 @@
         assessmentIndex: this.assessmentIndex
       });
     },
-
     handleCancel() {
       this.$emit("cancel");
     },
@@ -369,7 +462,7 @@
 
     /** 涓婁紶鎴愬姛澶勭悊 */
     handleUploadSuccess({ file, fileList, response }) {
-      console.log(response,'response');
+      console.log(response, "response");
 
       if (response.code === 200) {
         console.log(response, "涓婁紶鏁版嵁");
@@ -509,26 +602,6 @@
       const sizes = ["B", "KB", "MB", "GB"];
       const i = Math.floor(Math.log(bytes) / Math.log(k));
       return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
-    },
-
-    /** 鏃ユ湡鏃堕棿鏍煎紡鍖� */
-    formatDateTime(dateTime) {
-      if (!dateTime) return "";
-
-      try {
-        const date = new Date(dateTime);
-        if (isNaN(date.getTime())) return dateTime;
-
-        const year = date.getFullYear();
-        const month = String(date.getMonth() + 1).padStart(2, "0");
-        const day = String(date.getDate()).padStart(2, "0");
-        const hours = String(date.getHours()).padStart(2, "0");
-        const minutes = String(date.getMinutes()).padStart(2, "0");
-
-        return `${year}-${month}-${day} ${hours}:${minutes}`;
-      } catch (error) {
-        return dateTime;
-      }
     }
   }
 };
@@ -581,7 +654,16 @@
   font-size: 13px;
   margin-left: 8px;
 }
-
+.readonly-time {
+  font-size: 14px;
+  color: #606266;
+  font-weight: 500;
+  padding: 8px 15px;
+  background: #f5f7fa;
+  border-radius: 4px;
+  display: inline-block;
+  min-width: 200px;
+}
 ::v-deep .el-upload__tip {
   font-size: 12px;
   color: #909399;
diff --git a/src/views/business/OrganUtilization/OrganUtilizationInfo.vue b/src/views/business/OrganUtilization/OrganUtilizationInfo.vue
index 9a5a8b1..534c3a6 100644
--- a/src/views/business/OrganUtilization/OrganUtilizationInfo.vue
+++ b/src/views/business/OrganUtilization/OrganUtilizationInfo.vue
@@ -1,53 +1,28 @@
 <template>
   <div class="organ-utilization-detail">
     <case-basic-info :case-id="caseId" :show-attachment="true" />
-
-    <!-- 鍩烘湰淇℃伅 -->
-    <el-card class="detail-card">
-      <div slot="header" class="clearfix">
-        <span class="detail-title">鍣ㄥ畼鍒╃敤鍩烘湰淇℃伅</span>
-        <div style="float: right;">
-          <el-button type="primary" @click="handleSave" :loading="saveLoading">
-            淇濆瓨
-          </el-button>
-          <el-button
-            type="success"
-            @click="handleComplete"
-            :loading="confirmLoading"
-          >
-            瀹屾垚鍒╃敤
-          </el-button>
-        </div>
-      </div>
-
-      <el-form :model="form" ref="form" :rules="rules" label-width="120px">
-        <el-row :gutter="20">
-          <el-col :span="6">
-            <el-form-item align="left" label="閬椾綋鎹愮尞" prop="isbodydonation">
-              <el-radio-group v-model="form.isbodydonation">
-                <el-radio
-                  v-for="dict in dict.type.sys_0_1 || []"
-                  :key="dict.value"
-                  :label="dict.value"
-                  >{{ dict.label }}</el-radio
-                >
-              </el-radio-group>
-            </el-form-item>
-          </el-col>
-          <el-col :span="18">
-            <el-form-item
-              align="left"
-              label="鎺ユ敹鍗曚綅"
-              prop="receivingunitname"
+    <el-form :model="form" ref="form" :rules="rules" label-width="120px">
+      <!-- 鍩烘湰淇℃伅 -->
+      <el-card class="detail-card">
+        <div slot="header" class="clearfix">
+          <span class="detail-title">鍣ㄥ畼鍒╃敤鍩烘湰淇℃伅</span>
+          <div style="float: right;">
+            <el-button
+              type="primary"
+              @click="handleSave"
+              :loading="saveLoading"
             >
-              <el-input
-                v-model="form.receivingunitname"
-                placeholder="璇疯緭鍏ユ帴鏀跺崟浣�"
-                :disabled="form.isbodydonation !== '1'"
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
+              淇濆瓨
+            </el-button>
+            <el-button
+              type="success"
+              @click="handleComplete"
+              :loading="confirmLoading"
+            >
+              瀹屾垚鍒╃敤
+            </el-button>
+          </div>
+        </div>
 
         <el-row :gutter="20">
           <el-col :span="6">
@@ -103,15 +78,58 @@
             </el-form-item>
           </el-col>
         </el-row>
-      </el-form>
-    </el-card>
+      </el-card>
+      <el-card class="detail-card">
+        <div slot="header" class="clearfix">
+          <span class="detail-title">閬椾綋鎹愮尞淇℃伅</span>
 
+        </div>
+         <el-row :gutter="20">
+            <el-col :span="6">
+              <el-form-item align="left" label="閬椾綋鎹愮尞" prop="isbodydonation">
+                <el-radio-group v-model="form.isbodydonation">
+                  <el-radio
+                    v-for="dict in dict.type.sys_0_1 || []"
+                    :key="dict.value"
+                    :label="dict.value"
+                    >{{ dict.label }}</el-radio
+                  >
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+            <el-col :span="18" v-if="form.isbodydonation==1">
+              <el-form-item
+                align="left"
+                label="鎺ユ敹鍗曚綅"
+                prop="receivingunitname"
+              >
+                <el-input
+                  v-model="form.receivingunitname"
+                  placeholder="璇疯緭鍏ユ帴鏀跺崟浣�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8" v-else>
+              <el-form-item
+                align="left"
+                label="鎺ユ敹瀹跺睘"
+                prop="relationname"
+              >
+                <el-input
+                  v-model="form.relationname"
+                  placeholder="璇疯緭鍏ユ帴鏀跺灞�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+      </el-card>
+    </el-form>
     <!-- 鍣ㄥ畼鍒╃敤璁板綍閮ㄥ垎 - 鏁村悎鍙楄�呰鎯� -->
     <el-card class="utilization-card">
       <div slot="header" class="clearfix">
         <span class="detail-title">鍣ㄥ畼鍒╃敤璁板綍</span>
         <div style="float: right;">
-        <dict-tag
+          <dict-tag
             :options="dict.type.utilize_statue"
             :value="form.completeState"
           />
@@ -451,34 +469,6 @@
                     <el-input v-model="scope.row.name" placeholder="鍙楄�呭鍚�" />
                   </template>
                 </el-table-column>
-
-                <el-table-column
-                  label="鎿嶄綔"
-                  align="center"
-                  class-name="small-padding fixed-width"
-                  v-if="form.completeState !== '3'"
-                >
-                  <template slot-scope="scope">
-                    <el-button
-                      size="mini"
-                      type="text"
-                      icon="el-icon-edit"
-                      @click="handleEditUtilization(scope.row)"
-                    >
-                      缂栬緫
-                    </el-button>
-                    <el-button
-                      size="mini"
-                      type="text"
-                      icon="el-icon-delete"
-                      style="color: #F56C6C;"
-                      @click="handleRemoveOrgan(scope.$index)"
-                      v-if="!scope.row.id"
-                    >
-                      鍒犻櫎
-                    </el-button>
-                  </template>
-                </el-table-column>
               </el-table>
             </el-form-item>
           </el-col>
@@ -584,76 +574,6 @@
       </div>
     </el-card>
 
-    <!-- 缂栬緫鍒╃敤璁板綍瀵硅瘽妗� -->
-    <el-dialog
-      title="缂栬緫鍣ㄥ畼鍒╃敤璁板綍"
-      :visible.sync="editDialogVisible"
-      width="600px"
-    >
-      <el-form :model="currentRecord" label-width="120px">
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <el-form-item label="鍣ㄥ畼鍚嶇О">
-              <el-input v-model="currentRecord.organname" readonly />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="绉绘鐘舵��">
-              <el-select
-                v-model="currentRecord.transplantstate"
-                style="width: 100%"
-              >
-                <el-option
-                  v-for="dict in transplantStatusList"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
-                />
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-form-item
-          label="鏈Щ妞嶅師鍥�"
-          v-if="currentRecord.transplantstate === '0'"
-        >
-          <el-input
-            type="textarea"
-            :rows="3"
-            v-model="currentRecord.abandonreason"
-            placeholder="璇疯緭鍏ユ湭绉绘鍘熷洜"
-          />
-        </el-form-item>
-        <el-form-item
-          label="绉绘鍖婚櫌"
-          v-if="currentRecord.transplantstate === '1'"
-        >
-          <el-select
-            v-model="currentRecord.hospitalno"
-            placeholder="璇烽�夋嫨绉绘鍖婚櫌"
-            style="width: 100%"
-          >
-            <el-option
-              v-for="hospital in hospitalList"
-              :key="hospital.hospitalNo"
-              :label="hospital.hospitalName"
-              :value="hospital.hospitalNo"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item
-          label="鍙楄�呭鍚�"
-          v-if="currentRecord.transplantstate === '1'"
-        >
-          <el-input v-model="currentRecord.name" placeholder="璇疯緭鍏ュ彈鑰呭鍚�" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer">
-        <el-button @click="editDialogVisible = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="handleEditConfirm">纭</el-button>
-      </div>
-    </el-dialog>
-
     <!-- 鏂囦欢棰勮瀵硅瘽妗� -->
     <FilePreviewDialog
       :visible="filePreviewVisible"
@@ -682,7 +602,7 @@
     FilePreviewDialog,
     CaseBasicInfo
   },
-  dicts: ["sys_BloodType", "sys_Organ", "sys_0_1",'utilize_statue'],
+  dicts: ["sys_BloodType", "sys_Organ", "sys_0_1", "utilize_statue"],
   data() {
     return {
       caseId: null,
@@ -1093,31 +1013,6 @@
     // 琛屽睍寮�浜嬩欢
     handleExpandChange(row, expandedRows) {
       this.expandedRows = expandedRows.map(item => item.organno);
-    },
-
-    // 缂栬緫鍒╃敤璁板綍
-    handleEditUtilization(row) {
-      const index = this.utilizationData.serviceDonatecomporganList.findIndex(
-        item => item.organno === row.organno
-      );
-      if (index !== -1) {
-        this.currentRecord = { ...row };
-        this.currentEditIndex = index;
-        this.editDialogVisible = true;
-      }
-    },
-
-    // 纭缂栬緫
-    handleEditConfirm() {
-      if (this.currentEditIndex !== -1) {
-        this.utilizationData.serviceDonatecomporganList[
-          this.currentEditIndex
-        ] = {
-          ...this.currentRecord
-        };
-        this.$message.success("鍒╃敤璁板綍鏇存柊鎴愬姛");
-        this.editDialogVisible = false;
-      }
     },
 
     // 鍒犻櫎鍣ㄥ畼璁板綍
@@ -1854,6 +1749,7 @@
   .recipient-form {
     padding: 15px;
   }
+
   .attachment-header {
     flex-wrap: wrap;
   }
@@ -1863,6 +1759,7 @@
     margin-top: 8px;
     margin-left: 0;
   }
+
   .form-section {
     margin-bottom: 20px;
     padding-bottom: 15px;
diff --git a/src/views/business/appear/caseDetail.vue b/src/views/business/appear/caseDetail.vue
index 1e41453..3b27c8b 100644
--- a/src/views/business/appear/caseDetail.vue
+++ b/src/views/business/appear/caseDetail.vue
@@ -132,7 +132,6 @@
         <!-- <el-descriptions-item label="閮ㄩ棬缂栧彿">{{
           caseData.deptNo || "-"
         }}</el-descriptions-item> -->
-
       </el-descriptions>
     </el-card>
 
@@ -142,7 +141,7 @@
         <span class="section-title">涓婃姤淇℃伅</span>
       </div>
       <el-descriptions :column="2" border>
-         <el-descriptions-item label="涓婃姤鍖婚櫌">{{
+        <el-descriptions-item label="涓婃姤鍖婚櫌">{{
           caseData.toHospital || "-"
         }}</el-descriptions-item>
         <el-descriptions-item label="鎶ュ憡鑰呭鍚�">{{
@@ -295,6 +294,15 @@
             {{ caseData.reportStatus === "3" ? "宸插悓鎰�" : "宸查┏鍥�" }}
           </el-tag>
         </el-descriptions-item>
+        <el-descriptions-item
+          label="椹冲洖鍘熷洜"
+          v-if="caseData.reportStatus == 4"
+        >
+          <dict-tag
+            :options="dict.type.reject_type"
+            :value="caseData.rejectType"
+          />
+        </el-descriptions-item>
         <el-descriptions-item label="瀹℃壒浜�">{{
           caseData.updateBy || "-"
         }}</el-descriptions-item>
@@ -302,7 +310,7 @@
           formatDateTime(caseData.updateTime)
         }}</el-descriptions-item>
         <el-descriptions-item label="瀹℃壒鎰忚">{{
-          caseData.remark || "鏃�"
+          caseData.confirmResult || "鏃�"
         }}</el-descriptions-item>
       </el-descriptions>
     </el-card>
@@ -424,7 +432,7 @@
       default: true
     }
   },
-  dicts: ["sys_user_sex", "sys_BloodType",'sys_Infectious'],
+  dicts: ["sys_user_sex", "sys_BloodType", "sys_Infectious", "reject_type"],
   data() {
     return {
       // 棰勮鐩稿叧
@@ -432,7 +440,14 @@
       currentPreviewFile: null,
 
       // 鍥剧墖棰勮鐩稿叧
-      imagePreviewUrls: []
+      imagePreviewUrls: [],
+      rejectOptions: [
+        { label: "濂借浆", value: "1" },
+        { label: "姝讳骸", value: "2" },
+        { label: "涓嶇鍚堟崘鐚爣鍑�", value: "3" },
+        { label: "瀹跺睘鏀惧純鎹愮尞", value: "4" },
+        { label: "鍏朵粬", value: "5" }
+      ]
     };
   },
   computed: {
@@ -523,8 +538,9 @@
     /** 鍒涘缓杞繍鍗� */
     handleCreateTransport() {
       this.$router.push({
-        path: "/business/transport/create",
+        path: "/report/transfer",
         query: {
+          autoCreate: "true",
           caseId: this.caseData.id,
           caseNo: this.caseData.caseNo,
           patName: this.caseData.name,
diff --git a/src/views/business/appear/index copy.vue b/src/views/business/appear/index copy.vue
new file mode 100644
index 0000000..81e306f
--- /dev/null
+++ b/src/views/business/appear/index copy.vue
@@ -0,0 +1,1801 @@
+<template>
+  <div class="app-container">
+    <!-- 鎼滅储绛涢�夊尯鍩� -->
+    <el-card class="filter-card">
+      <el-form
+        :model="queryParams"
+        ref="queryForm"
+        :inline="true"
+        class="demo-form-inline"
+      >
+        <el-form-item label="濮撳悕" prop="name">
+          <el-input
+            v-model="queryParams.name"
+            placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+            clearable
+            style="width: 200px"
+          />
+        </el-form-item>
+        <el-form-item label="涓婃姤鍖婚櫌" prop="caseNo">
+          <el-input
+            v-model="queryParams.caseNo"
+            placeholder="璇疯緭鍏ヤ笂鎶ユ渚嬬紪鍙�"
+            clearable
+            style="width: 200px"
+          />
+        </el-form-item>
+        <el-form-item label="涓婃姤鐘舵��" prop="reportStatus">
+          <el-select
+            v-model="queryParams.reportStatus"
+            placeholder="璇烽�夋嫨鐘舵��"
+            clearable
+            style="width: 200px"
+          >
+            <el-option label="鍏ㄩ儴" value="" />
+            <el-option label="宸查槄璇�" value="2" />
+            <el-option label="宸插悓鎰�" value="3" />
+            <el-option label="宸查┏鍥�" value="4" />
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="el-icon-search" @click="handleQuery"
+            >鎼滅储</el-button
+          >
+          <el-button icon="el-icon-refresh" @click="resetQuery">閲嶇疆</el-button>
+        </el-form-item>
+      </el-form>
+    </el-card>
+
+    <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+    <el-row :gutter="10" class="mb8">
+      <!-- <el-col :span="1.5">
+        <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd"
+          >鏂板妗堜緥</el-button
+        >
+      </el-col> -->
+
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          :disabled="multiple"
+          @click="handleDelete"
+          >鍒犻櫎</el-button
+        >
+      </el-col>
+    </el-row>
+
+    <!-- 鏁版嵁琛ㄦ牸 -->
+    <!-- 鏁版嵁琛ㄦ牸 -->
+    <el-table
+      v-loading="loading"
+      :data="caseList"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="55" align="center" />
+
+      <el-table-column
+        label="缂栧彿"
+        align="center"
+        prop="caseNo"
+        width="150"
+        fixed
+      />
+      <el-table-column
+        label="濮撳悕"
+        align="center"
+        prop="name"
+        width="100"
+        fixed
+      />
+      <el-table-column
+        label="涓婃姤鐘舵��"
+        align="center"
+        prop="reportStatus"
+        width="100"
+      >
+        <template #default="scope">
+          <el-tag :type="scope.row.reportStatus | statusFilter">
+            {{ scope.row.reportStatus | statusTextFilter }}
+          </el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="杞繍" align="center" width="100">
+        <template #default="scope">
+          <el-tag :type="getTransportStatusTag(scope.row)">
+            {{ getTransportStatusText(scope.row) }}
+          </el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎬у埆" align="center" prop="sex" width="80">
+        <template #default="scope">
+          <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" />
+        </template>
+      </el-table-column>
+      <el-table-column label="骞撮緞" align="center" prop="age" width="80" />
+      <el-table-column label="琛�鍨�" align="center" prop="bloodType" width="80">
+        <template #default="scope">
+          <dict-tag
+            :options="dict.type.sys_BloodType"
+            :value="scope.row.bloodType"
+          />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="鐤剧梾璇婃柇"
+        align="center"
+        prop="diagnosisname"
+        min-width="200"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="GCS璇勫垎"
+        align="center"
+        prop="gcsScore"
+        width="80"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="涓婃姤鍖婚櫌"
+        align="center"
+        prop="treatmenthospitalname"
+        width="150"
+      />
+      <el-table-column
+        label="涓婃姤鏃堕棿"
+        align="center"
+        prop="reporttime"
+        width="160"
+      />
+      <el-table-column label="鎿嶄綔" align="center" fixed="right" width="300">
+        <template #default="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-view"
+            @click="handleDetail(scope.row)"
+            >璇︽儏</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleEdit(scope.row)"
+            v-if="
+              scope.row.reportStatus !== '3' &&
+                scope.row.reportStatus !== '4' &&
+                scope.row.delFlag === 0
+            "
+            >缂栬緫</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-check"
+            @click="handleApprove(scope.row)"
+            v-if="scope.row.reportStatus === '2' && scope.row.delFlag === 0"
+            >纭</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-truck"
+            :type="getTransportStatustype(scope.row)"
+            @click="handleTransport(scope.row)"
+            v-if="shouldShowTransportButton(scope.row)"
+            :disabled="!canGoToTransport(scope.row)"
+          >
+            {{ getTransportButtonText(scope.row) }}
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <!-- 鍒嗛〉 -->
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 妗堜緥璇︽儏寮规 -->
+    <el-dialog
+      :title="detailTitle"
+      :visible.sync="detailOpen"
+      width="900px"
+      append-to-body
+      :close-on-click-modal="false"
+    >
+      <case-detail :caseData="currentCase" @close="detailOpen = false" />
+    </el-dialog>
+
+    <!-- 纭寮规 -->
+    <el-dialog
+      title="妗堜緥纭"
+      :visible.sync="approveOpen"
+      width="80vw"
+      append-to-body
+      class="approve-dialog"
+    >
+      <el-container style="height: 800px;">
+        <!-- 宸︿晶锛氭渚嬭鎯� -->
+        <el-aside
+          width="50vw"
+          style="background: #f8f9fa; padding: 20px; overflow-y: auto;"
+        >
+          <div class="approve-detail-preview">
+            <h3 style="margin-bottom: 15px; color: #303133;">妗堜緥璇︽儏棰勮</h3>
+            <case-detail :caseData="currentCase" :showtitle="false" />
+          </div>
+        </el-aside>
+
+        <!-- 鍙充晶锛氱‘璁よ〃鍗� -->
+        <el-main style="padding: 20px;">
+          <el-form
+            ref="approveForm"
+            :model="approveForm"
+            :rules="approveRules"
+            label-width="100px"
+          >
+            <el-form-item label="纭缁撴灉" prop="approveResult">
+              <el-radio-group v-model="approveForm.approveResult">
+                <el-radio label="3">鍚屾剰</el-radio>
+                <el-radio label="4">椹冲洖</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item label="纭鎰忚" prop="approveOpinion">
+              <el-input
+                type="textarea"
+                v-model="approveForm.approveOpinion"
+                placeholder="璇疯緭鍏ヨ缁嗙殑纭鎰忚锛屽寘鎷�氳繃鎴栭┏鍥炵殑鐞嗙敱"
+                :rows="6"
+                maxlength="500"
+                show-word-limit
+              />
+            </el-form-item>
+          </el-form>
+        </el-main>
+      </el-container>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="approveOpen = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="submitApprove">纭畾</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 鏂板/缂栬緫妗堜緥寮规 -->
+    <el-dialog
+      :title="`${isEditing ? '缂栬緫' : '鏂板'}妗堜緥`"
+      :visible.sync="editOpen"
+      width="68%"
+      append-to-body
+      :close-on-click-modal="false"
+      @close="handleEditClose"
+    >
+      <el-form
+        ref="editForm"
+        :model="editForm"
+        :rules="editRules"
+        label-width="120px"
+      >
+        <!-- 鍩烘湰淇℃伅 -->
+        <el-card class="form-section" shadow="never">
+          <div slot="header" class="section-header">
+            <i
+              class="el-icon-user"
+              style="color: #409EFF; margin-right: 8px;"
+            ></i>
+            <span>鍩烘湰淇℃伅</span>
+          </div>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="妗堜緥缂栧彿" prop="caseNo">
+                <el-input
+                  v-model="editForm.caseNo"
+                  placeholder="璇疯緭鍏ユ渚嬬紪鍙�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鎮h�呭鍚�" prop="name">
+                <el-input
+                  v-model="editForm.name"
+                  placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="鎬у埆" prop="sex">
+                <el-select
+                  v-model="editForm.sex"
+                  placeholder="璇烽�夋嫨鎬у埆"
+                  style="width: 100%"
+                >
+                  <el-option label="鐢�" value="0" />
+                  <el-option label="濂�" value="1" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="骞撮緞" prop="age">
+                <el-input-number
+                  v-model="editForm.age"
+                  :min="0"
+                  :max="120"
+                  placeholder="璇疯緭鍏ュ勾榫�"
+                  style="width: 100%"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="骞撮緞鍗曚綅" prop="ageunit">
+                <el-select
+                  v-model="editForm.ageunit"
+                  placeholder="璇烽�夋嫨骞撮緞鍗曚綅"
+                  style="width: 100%"
+                >
+                  <el-option label="宀�" value="year" />
+                  <el-option label="鏈�" value="month" />
+                  <el-option label="澶�" value="day" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="琛�鍨�" prop="bloodType">
+                <el-select
+                  v-model="editForm.bloodType"
+                  placeholder="璇烽�夋嫨琛�鍨�"
+                  style="width: 100%"
+                >
+                  <el-option label="A鍨�" :value="1" />
+                  <el-option label="B鍨�" :value="2" />
+                  <el-option label="O鍨�" :value="3" />
+                  <el-option label="AB鍨�" :value="4" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="Rh闃存��" prop="rhYin">
+                <el-radio-group v-model="editForm.rhYin">
+                  <el-radio label="0">鍚�</el-radio>
+                  <el-radio label="1">鏄�</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鍑虹敓鏃ユ湡" prop="birthday">
+                <el-date-picker
+                  v-model="editForm.birthday"
+                  type="date"
+                  placeholder="閫夋嫨鍑虹敓鏃ユ湡"
+                  value-format="yyyy-MM-dd"
+                  style="width: 100%"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="璇佷欢绫诲瀷" prop="idcardtype">
+                <el-select
+                  v-model="editForm.idcardtype"
+                  placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="item in dict.type.sys_IDType"
+                    :label="item.label"
+                    :value="item.value"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="璇佷欢鍙风爜" prop="idcardno">
+                <el-input
+                  v-model="editForm.idcardno"
+                  placeholder="璇疯緭鍏ヨ瘉浠跺彿鐮�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="姘戞棌" prop="nation">
+                <el-input v-model="editForm.nation" placeholder="璇疯緭鍏ユ皯鏃�" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鍥界睄" prop="nationality">
+                <el-input
+                  v-model="editForm.nationality"
+                  placeholder="璇疯緭鍏ュ浗绫�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="绫嶈疮" prop="nativeplace">
+                <el-input
+                  v-model="editForm.nativeplace"
+                  placeholder="璇疯緭鍏ョ睄璐�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="瀛﹀巻" prop="education">
+                <el-input
+                  v-model="editForm.education"
+                  placeholder="璇疯緭鍏ュ鍘�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="鑱屼笟" prop="occupation">
+                <el-input
+                  v-model="editForm.occupation"
+                  placeholder="璇疯緭鍏ヨ亴涓�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鑱旂郴鐢佃瘽" prop="phone">
+                <el-input
+                  v-model="editForm.phone"
+                  placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-card>
+
+        <!-- 鍦板潃淇℃伅 -->
+        <el-card class="form-section" shadow="never">
+          <div slot="header" class="section-header">
+            <i
+              class="el-icon-location-information"
+              style="color: #67C23A; margin-right: 8px;"
+            ></i>
+            <span>鍦板潃淇℃伅</span>
+          </div>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="鎴风睄鍦板潃鐪�">
+                <el-input
+                  v-model="editForm.registerprovincename"
+                  placeholder="璇疯緭鍏ユ埛绫嶅湴鍧�鐪�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鎴风睄鍦板潃甯�">
+                <el-input
+                  v-model="editForm.registercityname"
+                  placeholder="璇疯緭鍏ユ埛绫嶅湴鍧�甯�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="鎴风睄琛楅亾">
+                <el-input
+                  v-model="editForm.registertownname"
+                  placeholder="璇疯緭鍏ユ埛绫嶈閬�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鎴风睄绀惧尯">
+                <el-input
+                  v-model="editForm.registercommunityname"
+                  placeholder="璇疯緭鍏ユ埛绫嶇ぞ鍖�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-form-item label="鎴风睄璇︾粏鍦板潃" prop="registeraddress">
+            <el-input
+              v-model="editForm.registeraddress"
+              type="textarea"
+              :rows="2"
+              placeholder="璇疯緭鍏ヨ缁嗙殑鎴风睄鍦板潃"
+            />
+          </el-form-item>
+
+          <el-divider>鐜颁綇鍦板潃</el-divider>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="鐜颁綇鍦板潃鐪�">
+                <el-input
+                  v-model="editForm.residenceprovincename"
+                  placeholder="璇疯緭鍏ョ幇浣忓湴鍧�鐪�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鐜颁綇鍦板潃甯�/鍖�">
+                <el-input
+                  v-model="editForm.residencecountyname"
+                  placeholder="璇疯緭鍏ョ幇浣忓湴鍧�甯�/鍖�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="鐜颁綇鍦板潃琛楅亾">
+                <el-input
+                  v-model="editForm.residencetownname"
+                  placeholder="璇疯緭鍏ョ幇浣忓湴鍧�琛楅亾"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鐜颁綇鍦板潃绀惧尯">
+                <el-input
+                  v-model="editForm.residencecommunityname"
+                  placeholder="璇疯緭鍏ョ幇浣忓湴鍧�绀惧尯"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-form-item label="鐜颁綇璇︾粏鍦板潃" prop="residenceaddress">
+            <el-input
+              v-model="editForm.residenceaddress"
+              type="textarea"
+              :rows="2"
+              placeholder="璇疯緭鍏ヨ缁嗙殑鐜颁綇鍦板潃"
+            />
+          </el-form-item>
+        </el-card>
+
+        <!-- 鍖荤枟淇℃伅 -->
+        <el-card class="form-section" shadow="never">
+          <div slot="header" class="section-header">
+            <i
+              class="el-icon-first-aid-kit"
+              style="color: #E6A23C; margin-right: 8px;"
+            ></i>
+            <span>鍖荤枟淇℃伅</span>
+          </div>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="鐤剧梾璇婃柇" prop="diagnosisname">
+                <el-input
+                  v-model="editForm.diagnosisname"
+                  placeholder="璇疯緭鍏ョ柧鐥呰瘖鏂悕绉�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="GCS璇勫垎" prop="gcsScore">
+                <el-input
+                  v-model="editForm.gcsScore"
+                  placeholder="璇疯緭鍏CS璇勫垎"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-form-item label="鐥呮儏姒傚喌" prop="illnessoverview">
+            <el-input
+              v-model="editForm.illnessoverview"
+              type="textarea"
+              :rows="3"
+              placeholder="璇疯緭鍏ョ梾鎯呮鍐�"
+              maxlength="500"
+              show-word-limit
+            />
+          </el-form-item>
+
+          <el-form-item label="鐥呬汉鐘跺喌" prop="patientstate">
+            <el-input
+              v-model="editForm.patientstate"
+              type="textarea"
+              :rows="2"
+              placeholder="璇疯緭鍏ョ梾浜虹姸鍐�"
+              maxlength="200"
+              show-word-limit
+            />
+          </el-form-item>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="浼犳煋鐥呮儏鍐�" prop="infectious">
+                <el-checkbox-group v-model="editForm.infectious">
+                  <el-checkbox
+                    v-for="item in dict.type.sys_Infectious"
+                    :label="item.value"
+                    :value="item.value"
+                    >{{ item.label }}</el-checkbox
+                  >
+                </el-checkbox-group>
+                <!-- <el-input
+                  v-model="editForm.infectious"
+                  placeholder="璇疯緭鍏ヤ紶鏌撶梾鎯呭喌"
+                /> -->
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="浼犳煋鐥呭叾浠栬鏄�">
+                <el-input
+                  v-model="editForm.infectiousOther"
+                  placeholder="璇疯緭鍏ヤ紶鏌撶梾鍏朵粬璇存槑"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-form-item label="鏄惁闇�瑕佽浆杩�" prop="isTransport">
+            <el-radio-group v-model="editForm.isTransport">
+              <el-radio label="1">涓嶉渶瑕�</el-radio>
+              <el-radio label="2">闇�瑕�</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-card>
+
+        <!-- 鍖婚櫌淇℃伅 -->
+        <el-card class="form-section" shadow="never">
+          <div slot="header" class="section-header">
+            <i
+              class="el-icon-office-building"
+              style="color: #909399; margin-right: 8px;"
+            ></i>
+            <span>鍖婚櫌淇℃伅</span>
+          </div>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="娌荤枟鍖婚櫌" prop="treatmenthospitalname">
+                <el-input
+                  v-model="editForm.treatmenthospitalname"
+                  placeholder="璇疯緭鍏ユ不鐤楀尰闄㈠悕绉�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="娌荤枟绉戝" prop="treatmentdeptname">
+                <el-input
+                  v-model="editForm.treatmentdeptname"
+                  placeholder="璇疯緭鍏ユ不鐤楃瀹ゅ悕绉�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="浣忛櫌鍙�" prop="inpatientno">
+                <el-input
+                  v-model="editForm.inpatientno"
+                  placeholder="璇疯緭鍏ヤ綇闄㈠彿"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="閮ㄩ棬鍚嶇О" prop="deptName">
+                <el-input
+                  v-model="editForm.deptName"
+                  placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="閮ㄩ棬缂栧彿" prop="deptNo">
+                <el-input
+                  v-model="editForm.deptNo"
+                  placeholder="璇疯緭鍏ラ儴闂ㄧ紪鍙�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="涓婃姤鍖婚櫌" prop="toHospital">
+                <el-input
+                  v-model="editForm.toHospital"
+                  placeholder="璇疯緭鍏ヤ笂鎶ョ殑鍖婚櫌"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-card>
+
+        <!-- 涓婃姤淇℃伅 -->
+        <el-card class="form-section" shadow="never">
+          <div slot="header" class="section-header">
+            <i
+              class="el-icon-s-data"
+              style="color: #F56C6C; margin-right: 8px;"
+            ></i>
+            <span>涓婃姤淇℃伅</span>
+          </div>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="鎶ュ憡鑰呭鍚�" prop="infoName">
+                <el-input
+                  v-model="editForm.infoName"
+                  placeholder="璇疯緭鍏ユ姤鍛婅�呭鍚�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鎶ュ憡鑰呯數璇�" prop="reporterphone">
+                <el-input
+                  v-model="editForm.phone"
+                  placeholder="璇疯緭鍏ユ姤鍛婅�呰仈绯荤數璇�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="鍗忚皟鍛樺鍚�" prop="coordinatorName">
+                <el-input
+                  v-model="editForm.coordinatorName"
+                  placeholder="璇疯緭鍏ュ崗璋冨憳濮撳悕"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鍗忚皟鍛樼紪鍙�" prop="coordinatorNo">
+                <el-input
+                  v-model="editForm.coordinatorNo"
+                  placeholder="璇疯緭鍏ュ崗璋冨憳缂栧彿"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-form-item label="涓婃姤鐘舵��" prop="reportStatus">
+            <el-select
+              v-model="editForm.reportStatus"
+              placeholder="璇烽�夋嫨涓婃姤鐘舵��"
+              style="width: 100%"
+              :disabled="isEditing"
+            >
+              <el-option label="宸蹭笂鎶�" value="1" />
+              <el-option label="宸查槄璇�" value="2" />
+              <el-option label="宸插悓鎰�" value="3" />
+              <el-option label="宸查┏鍥�" value="4" />
+            </el-select>
+          </el-form-item>
+        </el-card>
+
+        <!-- 闄勪欢淇℃伅 -->
+        <el-card class="form-section" shadow="never">
+          <div slot="header" class="section-header">
+            <i
+              class="el-icon-folder"
+              style="color: #409EFF; margin-right: 8px;"
+            ></i>
+            <span>闄勪欢淇℃伅</span>
+          </div>
+
+          <div class="attachment-section">
+            <div class="attachment-header">
+              <i class="el-icon-paperclip"></i>
+              <span class="attachment-title">闄勪欢涓婁紶</span>
+              <span class="attachment-tip"
+                >鏀寔涓婁紶鐥呭巻銆佹楠屾姤鍛婄瓑鏂囦欢 (鏈�澶歿{
+                  attachmentLimit
+                }}涓�)</span
+              >
+            </div>
+
+            <!-- 浣跨敤 UploadAttachment 缁勪欢 -->
+            <UploadAttachment
+              ref="uploadAttachment"
+              :file-list="attachmentFileList"
+              :limit="attachmentLimit"
+              :accept="attachmentAccept"
+              @change="handleAttachmentChange"
+              @upload-success="handleUploadSuccess"
+              @upload-error="handleUploadError"
+              @remove="handleAttachmentRemove"
+            />
+          </div>
+
+          <!-- 闄勪欢鍒楄〃 -->
+          <div
+            class="attachment-list"
+            v-if="editForm.annexfilesList && editForm.annexfilesList.length > 0"
+          >
+            <div class="list-title">
+              宸蹭笂浼犻檮浠� ({{ editForm.annexfilesList.length }})
+            </div>
+            <el-table
+              :data="editForm.annexfilesList"
+              style="width: 100%"
+              size="small"
+              border
+            >
+              <el-table-column label="鏂囦欢鍚�" min-width="200">
+                <template #default="scope">
+                  <i
+                    class="el-icon-document"
+                    style="margin-right: 8px; color: #409EFF;"
+                  ></i>
+                  <span class="file-name">{{ scope.row.fileName }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="鏂囦欢绫诲瀷" width="100">
+                <template #default="scope">
+                  <el-tag size="small">{{
+                    getFileType(scope.row.fileName)
+                  }}</el-tag>
+                </template>
+              </el-table-column>
+              <el-table-column label="鍒涘缓鏃堕棿" width="160">
+                <template #default="scope">
+                  <span>{{ formatDateTime(scope.row.createTime) }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="澶囨敞"
+                min-width="150"
+                show-overflow-tooltip
+              >
+                <template #default="scope">
+                  <span>{{ scope.row.remart || "鏃�" }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="鎿嶄綔" width="200" fixed="right">
+                <template #default="scope">
+                  <el-button
+                    size="mini"
+                    type="primary"
+                    @click="handlePreview(scope.row)"
+                  >
+                    棰勮
+                  </el-button>
+                  <el-button
+                    size="mini"
+                    type="danger"
+                    @click="handleRemoveAttachment(scope.$index)"
+                  >
+                    鍒犻櫎
+                  </el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+        </el-card>
+
+        <!-- 澶囨敞淇℃伅 -->
+        <el-card class="form-section" shadow="never">
+          <div slot="header" class="section-header">
+            <i
+              class="el-icon-edit"
+              style="color: #67C23A; margin-right: 8px;"
+            ></i>
+            <span>澶囨敞淇℃伅</span>
+          </div>
+          <el-form-item prop="remark">
+            <el-input
+              v-model="editForm.remark"
+              type="textarea"
+              :rows="4"
+              placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�"
+              maxlength="500"
+              show-word-limit
+            />
+          </el-form-item>
+        </el-card>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="handleEditClose">鍙栨秷</el-button>
+        <el-button type="primary" :loading="saveLoading" @click="handleSave"
+          >淇濆瓨</el-button
+        >
+      </div>
+    </el-dialog>
+
+    <!-- 鏂囦欢棰勮寮圭獥 -->
+    <FilePreviewDialog
+      :visible="previewVisible"
+      :file="currentPreviewFile"
+      @close="previewVisible = false"
+      @download="handleDownload"
+    />
+  </div>
+</template>
+
+<script>
+import CaseDetail from "./caseDetail";
+import UploadAttachment from "@/components/UploadAttachment";
+import FilePreviewDialog from "@/components/FilePreviewDialog";
+import {
+  donateList,
+  donateInfo,
+  donateDel,
+  donateEdit,
+  donateAdd
+} from "@/api/businessApi/index";
+import dayjs from "dayjs";
+
+export default {
+  name: "CaseList",
+  components: {
+    CaseDetail,
+    UploadAttachment,
+    FilePreviewDialog
+  },
+  dicts: ["sys_user_sex", "sys_BloodType", "sys_Infectious", "sys_IDType"],
+  data() {
+    return {
+      // 閬僵灞�
+      loading: false,
+      saveLoading: false,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 妗堜緥琛ㄦ牸鏁版嵁
+      caseList: [],
+      // 璇︽儏寮规鏄惁鏄剧ず
+      detailOpen: false,
+      // 纭寮规鏄惁鏄剧ず
+      approveOpen: false,
+      // 缂栬緫寮规鏄惁鏄剧ず
+      editOpen: false,
+      // 缂栬緫鐘舵��
+      isEditing: false,
+      // 璇︽儏寮规鏍囬
+      detailTitle: "",
+      // 褰撳墠鎿嶄綔鐨勬渚�
+      currentCase: {},
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        caseNo: undefined,
+        name: undefined,
+        reportStatus: undefined
+      },
+      // 纭琛ㄥ崟
+      approveForm: {
+        id: null,
+        approveResult: "3",
+        approveOpinion: ""
+      },
+      // 纭琛ㄥ崟楠岃瘉
+      approveRules: {
+        approveResult: [
+          { required: true, message: "璇烽�夋嫨纭缁撴灉", trigger: "change" }
+        ],
+        approveOpinion: [
+          { required: true, message: "璇疯緭鍏ョ‘璁ゆ剰瑙�", trigger: "blur" }
+        ]
+      },
+      // 缂栬緫琛ㄥ崟
+      editForm: this.getDefaultFormData(),
+      // 琛ㄥ崟楠岃瘉瑙勫垯
+      editRules: {
+        caseNo: [
+          { required: true, message: "璇疯緭鍏ユ渚嬬紪鍙�", trigger: "blur" }
+        ],
+        name: [{ required: true, message: "璇疯緭鍏ユ偅鑰呭鍚�", trigger: "blur" }],
+        sex: [{ required: true, message: "璇烽�夋嫨鎬у埆", trigger: "change" }],
+        age: [{ required: true, message: "璇疯緭鍏ュ勾榫�", trigger: "blur" }],
+        diagnosisname: [
+          { required: true, message: "璇疯緭鍏ョ柧鐥呰瘖鏂�", trigger: "blur" }
+        ],
+        treatmenthospitalname: [
+          { required: true, message: "璇疯緭鍏ユ不鐤楀尰闄�", trigger: "blur" }
+        ],
+        reportStatus: [
+          { required: true, message: "璇烽�夋嫨涓婃姤鐘舵��", trigger: "change" }
+        ]
+      },
+      // 闄勪欢鐩稿叧閰嶇疆
+      attachmentLimit: 10,
+      attachmentAccept: ".pdf,.jpg,.jpeg,.png,.doc,.docx,.xls,.xlsx",
+      attachmentFileList: [],
+      // 棰勮鐩稿叧
+      previewVisible: false,
+      currentPreviewFile: null
+    };
+  },
+  filters: {
+    statusFilter(reportStatus) {
+      const statusMap = {
+        "1": "info", // 宸蹭笂鎶�
+        "2": "warning", // 宸查槄璇伙紙寰呯‘璁わ級
+        "3": "success", // 宸插悓鎰�
+        "4": "danger" // 宸查┏鍥�
+      };
+      return statusMap[reportStatus] || "info";
+    },
+    statusTextFilter(reportStatus) {
+      const statusMap = {
+        "1": "宸蹭笂鎶�",
+        "2": "宸查槄璇�",
+        "3": "宸插悓鎰�",
+        "4": "宸查┏鍥�"
+      };
+      return statusMap[reportStatus] || "鏈煡鐘舵��";
+    }
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ妗堜緥鍒楄〃 */
+    async getList() {
+      this.loading = true;
+      try {
+        const response = await donateList(this.queryParams);
+        this.caseList = response.rows || response.data || [];
+        this.total = response.total || this.caseList.length;
+      } catch (error) {
+        console.error("鑾峰彇妗堜緥鍒楄〃澶辫触:", error);
+        this.$modal.msgError("鑾峰彇妗堜緥鍒楄〃澶辫触");
+        this.caseList = [];
+        this.total = 0;
+      } finally {
+        this.loading = false;
+      }
+    },
+    // 杞繍------------------
+    /** 鍒ゆ柇鏄惁闇�瑕佹樉绀鸿浆杩愭寜閽� */
+    shouldShowTransportButton(row) {
+      // 鍙湁宸插悓鎰忕殑妗堜緥鎵嶈兘杩涜杞繍鎿嶄綔
+      // return row.reportStatus == "3" && row.delFlag == 0;
+      return row.reportStatus != "4";
+    },
+
+    /** 鍒ゆ柇鏄惁鍙互璺宠浆鍒拌浆杩愬崟 */
+    canGoToTransport(row) {
+      // 闇�瑕佽浆杩愶紙isTransport === "2"锛変笖娌℃湁杞繍淇℃伅锛坰erviceTransport涓嶅瓨鍦ㄦ垨涓虹┖鏁扮粍锛�
+      return row.isTransport == "2" && row.serviceTransport;
+    },
+
+    /** 鑾峰彇杞繍鎸夐挳鏂囨湰 */
+    getTransportButtonText(row) {
+      if (row.isTransport == "2") {
+        if (
+          row.serviceTransport &&
+          Array.isArray(row.serviceTransport) &&
+          row.serviceTransport.length > 0
+        ) {
+          return "鏌ョ湅杞繍鍗�";
+        } else {
+          return "鍒涘缓杞繍鍗�";
+        }
+      }
+      return "鏃犻渶杞繍";
+    },
+    getTransportStatustype(row) {
+      if (row.isTransport == "1") {
+        return "info"; // 涓嶉渶瑕佽浆杩�
+      }
+      if (
+        row.serviceTransport &&
+        Array.isArray(row.serviceTransport) &&
+        row.serviceTransport.length > 0
+      ) {
+        // 鏍规嵁杞繍鍗曠姸鎬佹樉绀轰笉鍚岄鑹�
+        const transport = row.serviceTransport[0];
+        if (transport.transitStatus) {
+          return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
+        }
+        return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
+      }
+      return "success"; // 闇�瑕佽浆杩愪絾鏃犺浆杩愪俊鎭�
+    },
+    /** 鑾峰彇杞繍鐘舵�佹爣绛炬牱寮� */
+    getTransportStatusTag(row) {
+      if (row.isTransport === "1") {
+        return "info"; // 涓嶉渶瑕佽浆杩�
+      }
+      if (
+        row.serviceTransport &&
+        Array.isArray(row.serviceTransport) &&
+        row.serviceTransport.length > 0
+      ) {
+        // 鏍规嵁杞繍鍗曠姸鎬佹樉绀轰笉鍚岄鑹�
+        const transport = row.serviceTransport[0];
+        if (transport.transitStatus) {
+          switch (transport.transitStatus.toString()) {
+            case "1":
+              return "warning"; // 寰呰浆杩�
+            case "2":
+              return "primary"; // 杞繍涓�
+            case "3":
+              return "success"; // 杞繍瀹屾垚
+            case "4":
+              return "danger"; // 杞繍鍙栨秷
+            case "5":
+              return "info"; // 鏆傚瓨
+            default:
+              return "info";
+          }
+        }
+        return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
+      }
+      return "success"; // 闇�瑕佽浆杩愪絾鏃犺浆杩愪俊鎭�
+    },
+
+    /** 鑾峰彇杞繍鐘舵�佹枃鏈� */
+    getTransportStatusText(row) {
+      if (row.isTransport === "1") {
+        return "鏃犻渶杞繍";
+      }
+      if (
+        row.serviceTransport &&
+        Array.isArray(row.serviceTransport) &&
+        row.serviceTransport.length > 0
+      ) {
+        const transport = row.serviceTransport[0];
+        if (transport.transitStatus) {
+          switch (transport.transitStatus.toString()) {
+            case "1":
+              return "寰呰浆杩�";
+            case "2":
+              return "杞繍涓�";
+            case "3":
+              return "杞繍瀹屾垚";
+            case "4":
+              return "杞繍鍙栨秷";
+            case "5":
+              return "鏆傚瓨";
+            default:
+              return "鏈夎浆杩愬崟";
+          }
+        }
+        return "鏈夎浆杩愬崟";
+      }
+      return "闇�杞繍";
+    },
+
+    /** 澶勭悊杞繍鎿嶄綔 */
+    async handleTransport(row) {
+      try {
+        // 鍏堣幏鍙栨渶鏂扮殑妗堜緥淇℃伅
+        const caseData = row;
+
+        if (caseData.isTransport == "2") {
+          if (
+            caseData.serviceTransport &&
+            Array.isArray(caseData.serviceTransport) &&
+            caseData.serviceTransport.length > 0
+          ) {
+            // 宸叉湁杞繍鍗曪紝璺宠浆鍒拌浆杩愬崟璇︽儏椤�
+            const transport = caseData.serviceTransport[0];
+            this.goToTransportDetail(transport.id, row.name);
+          } else {
+            // 娌℃湁杞繍鍗曪紝璺宠浆鍒板垱寤鸿浆杩愬崟椤甸潰
+            this.goToCreateTransport(row);
+          }
+        } else {
+          this.$message.warning("璇ユ渚嬩笉闇�瑕佽浆杩�");
+        }
+      } catch (error) {
+        console.error("鑾峰彇妗堜緥淇℃伅澶辫触:", error);
+        this.$message.error("鑾峰彇妗堜緥淇℃伅澶辫触");
+      }
+    },
+
+    /** 璺宠浆鍒板垱寤鸿浆杩愬崟椤甸潰 */
+    goToCreateTransport(caseData) {
+      // 鏂瑰紡1锛氬湪鏂伴〉闈㈡墦寮�
+      this.$router.push({
+        path: "/report/transfer",
+        query: {
+          autoCreate: "true", //璺宠浆杞繍鏍囪瘑
+          caseId: caseData.id,
+          caseNo: caseData.caseNo,
+          patName: caseData.name,
+          age: caseData.age,
+          sex: caseData.sex,
+          diagnosisname: caseData.diagnosisname,
+          treatmentHospitalName: caseData.treatmenthospitalname
+        }
+      });
+    },
+
+    /** 鎵撳紑杞繍鍗曞脊妗� */
+    openTransportDialog(caseData) {
+      this.$modal.confirm({
+        title: "鍒涘缓杞繍鍗�",
+        message: `鎮ㄥ皢鍒涘缓妗堜緥銆�${caseData.caseNo} - ${caseData.name}銆戠殑杞繍鍗曪紝鏄惁缁х画锛焋,
+        confirmButtonText: "鍓嶅線鍒涘缓",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+        beforeClose: (action, instance, done) => {
+          if (action === "confirm") {
+            // 璺宠浆鍒拌浆杩愬崟鍒涘缓椤甸潰
+            this.$router.push({
+              path: "/report/transfer",
+              query: {
+                caseId: caseData.id,
+                caseNo: caseData.caseNo,
+                patName: caseData.name,
+                age: caseData.age,
+                sex: caseData.sex,
+                diagnosisname: caseData.diagnosisname,
+                treatmentHospitalName: caseData.treatmenthospitalname
+              }
+            });
+            done();
+          } else {
+            done();
+          }
+        }
+      });
+    },
+
+    /** 璺宠浆鍒拌浆杩愬崟璇︽儏椤� */
+    goToTransportDetail(transportId, name) {
+      this.$router.push({
+        path: "/report/transfer",
+        query: {
+          autoCreate: "true",
+          patName: name
+        }
+      });
+    },
+    // ---------------------------------end
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.queryParams = {
+        pageNum: 1,
+        pageSize: 10,
+        caseNo: undefined,
+        name: undefined,
+        reportStatus: undefined
+      };
+      this.getList();
+    },
+
+    /** 璇︽儏鎸夐挳鎿嶄綔 */
+    async handleDetail(row) {
+      try {
+        this.currentCase = row;
+
+        // 濡傛灉鐘舵�佹槸"宸蹭笂鎶�"(1)锛屽垯鏇存柊涓�"宸查槄璇�"(2)
+        if (this.currentCase.reportStatus === "1") {
+          try {
+            const updateData = {
+              ...this.currentCase,
+              reportStatus: "2",
+              updateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+              updateBy: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛"
+            };
+
+            await donateEdit(updateData);
+            this.currentCase.reportStatus = "2";
+            this.currentCase.updateTime = updateData.updateTime;
+            row.reportStatus = "2";
+            this.$modal.msgSuccess("鐘舵�佸凡鏇存柊涓哄凡闃呰");
+          } catch (updateError) {
+            console.error("鐘舵�佹洿鏂板け璐�:", updateError);
+          }
+        }
+
+        this.detailTitle = `妗堜緥璇︽儏 - ${this.currentCase.caseNo ||
+          row.caseNo}`;
+        this.detailOpen = true;
+        console.log(this.currentCase, "this.currentCase");
+      } catch (error) {
+        console.error("鑾峰彇妗堜緥璇︽儏澶辫触:", error);
+        this.currentCase = row;
+        this.detailTitle = `妗堜緥璇︽儏 - ${row.caseNo}`;
+        this.detailOpen = true;
+      }
+    },
+
+    /** 缂栬緫鎸夐挳鎿嶄綔 */
+    async handleEdit(row) {
+      try {
+        const response = await donateInfo(row.id);
+        if (response.code === 200 || response.data) {
+          this.isEditing = true;
+          const data = response.data || response;
+
+          // 澶勭悊闄勪欢
+          if (data.annexfilesList) {
+            this.attachmentFileList = this.parseAttachmentToFileList(
+              data.annexfilesList
+            );
+          } else {
+            this.attachmentFileList = [];
+          }
+
+          this.currentCase = data;
+          this.editForm = { ...data };
+          this.editForm.idcardtype = this.editForm.idcardtype.toString();
+          console.log(this.editForm.idcardtype);
+          this.editForm.infectious = this.editForm.infectious
+            .split(",")
+            .filter(item => item.trim() !== "");
+
+          this.editOpen = true;
+          this.$nextTick(() => {
+            this.$refs.editForm && this.$refs.editForm.clearValidate();
+          });
+        } else {
+          this.$message.error(response.msg || "鑾峰彇璁板綍澶辫触");
+        }
+      } catch (error) {
+        console.error("鑾峰彇璁板綍澶辫触:", error);
+        this.$modal.msgError("鑾峰彇璁板綍澶辫触");
+      }
+    },
+
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.isEditing = false;
+      this.editForm = this.getDefaultFormData();
+      this.attachmentFileList = [];
+      this.editOpen = true;
+      this.$nextTick(() => {
+        this.$refs.editForm && this.$refs.editForm.clearValidate();
+      });
+    },
+
+    /** 纭鎸夐挳鎿嶄綔 */
+    async handleApprove(row) {
+      try {
+        const response = await donateInfo(row.id);
+        this.currentCase = response.data || response || row;
+
+        this.approveForm.id = row.id;
+        this.approveForm.approveResult = "3";
+        this.approveForm.approveOpinion = "";
+
+        this.$nextTick(() => {
+          if (this.$refs.approveForm) {
+            this.$refs.approveForm.clearValidate();
+          }
+        });
+
+        this.approveOpen = true;
+      } catch (error) {
+        console.error("鑾峰彇妗堜緥璇︽儏澶辫触:", error);
+        this.currentCase = row;
+        this.approveForm.id = row.id;
+        this.approveForm.approveResult = "3";
+        this.approveForm.approveOpinion = "";
+        this.approveOpen = true;
+        this.$modal.msgError("鑾峰彇璇︽儏澶辫触锛屼絾宸叉墦寮�纭绐楀彛");
+      }
+    },
+
+    /** 鎻愪氦纭 */
+    async submitApprove() {
+      try {
+        const valid = await this.$refs.approveForm.validate();
+        if (valid) {
+          const approveData = {
+            ...this.currentCase,
+            reportStatus: this.approveForm.approveResult,
+            remark: this.approveForm.approveOpinion,
+            approvername: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛",
+            approvetime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+            updateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+            updateBy: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛"
+          };
+
+          await donateEdit(approveData);
+          this.$modal.msgSuccess("纭鎴愬姛");
+          this.approveOpen = false;
+          this.getList();
+        }
+      } catch (error) {
+        console.error("纭澶辫触:", error);
+        if (error !== "cancel") {
+          this.$modal.msgError("纭澶辫触");
+        }
+      }
+    },
+
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    async handleDelete(row) {
+      const ids = row.id || this.ids;
+      try {
+        await this.$modal.confirm(
+          '鏄惁纭鍒犻櫎妗堜緥缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�'
+        );
+        await donateDel(ids);
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        this.getList();
+      } catch (error) {
+        if (error !== "cancel") {
+          console.error("鍒犻櫎澶辫触:", error);
+          this.$modal.msgError("鍒犻櫎澶辫触");
+        }
+      }
+    },
+
+    /** 鑾峰彇榛樿琛ㄥ崟鏁版嵁 */
+    getDefaultFormData() {
+      return {
+        id: undefined,
+        caseNo: undefined,
+        name: undefined,
+        sex: undefined,
+        age: undefined,
+        ageunit: "year",
+        bloodType: undefined,
+        rhYin: "0",
+        birthday: undefined,
+        idcardtype: "1",
+        idcardno: undefined,
+        nation: undefined,
+        nationality: undefined,
+        nativeplace: undefined,
+        education: undefined,
+        occupation: undefined,
+        phone: undefined,
+        // 鎴风睄鍦板潃
+        registerprovincename: undefined,
+        registercityname: undefined,
+        registertownname: undefined,
+        registercommunityname: undefined,
+        registeraddress: undefined,
+        // 鐜颁綇鍦板潃
+        residenceprovincename: undefined,
+        residencecountyname: undefined,
+        residencetownname: undefined,
+        residencecommunityname: undefined,
+        residenceaddress: undefined,
+        // 鍖荤枟淇℃伅
+        diagnosisname: undefined,
+        illnessoverview: undefined,
+        patientstate: undefined,
+        gcsScore: undefined,
+        infectious: undefined,
+        infectiousOther: undefined,
+        isTransport: "1",
+        // 鍖婚櫌淇℃伅
+        treatmenthospitalname: undefined,
+        treatmentdeptname: undefined,
+        inpatientno: undefined,
+        deptName: undefined,
+        deptNo: undefined,
+        toHospital: undefined,
+        // 涓婃姤淇℃伅
+        infoName: undefined,
+        infoNo: undefined,
+        reporterphone: undefined,
+        coordinatorName: undefined,
+        coordinatorNo: undefined,
+        terminationCase: "0",
+        reportStatus: "1", // 榛樿宸蹭笂鎶�
+        // 闄勪欢
+        annexfilesList: [],
+        // 鍏朵粬
+        remark: undefined,
+        createBy: undefined,
+        createTime: undefined,
+        updateBy: undefined,
+        updateTime: undefined,
+        delFlag: 0
+      };
+    },
+
+    /** 闄勪欢杞崲 */
+    parseAttachmentToFileList(attachments) {
+      if (!attachments || !Array.isArray(attachments)) return [];
+      return attachments.map((item, index) => ({
+        uid: item.id || `attachment-${index}-${Date.now()}`,
+        name: item.fileName,
+        url: item.path || item.fileUrl,
+        status: "success",
+        raw: item
+      }));
+    },
+
+    /** 闄勪欢鍙樺寲澶勭悊 */
+    handleAttachmentChange(fileList) {
+      this.attachmentFileList = fileList;
+    },
+
+    /** 闄勪欢涓婁紶鎴愬姛澶勭悊 */
+    handleUploadSuccess({ file, fileList, response }) {
+      if (response && response.code === 200) {
+        if (!this.editForm.annexfilesList) {
+          this.editForm.annexfilesList = [];
+        }
+        const attachmentObj = {
+          fileName: file.name,
+          path: response.data || file.url,
+          fileUrl: response.data || file.url,
+          type: this.getFileExtension(file.name),
+          createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+          remart: file.raw?.remart || "",
+          caseNo: this.editForm.caseNo
+        };
+
+        this.editForm.annexfilesList.push(attachmentObj);
+        this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+      }
+    },
+
+    /** 闄勪欢涓婁紶閿欒澶勭悊 */
+    handleUploadError({ file, fileList, error }) {
+      console.error("闄勪欢涓婁紶澶辫触:", error);
+      this.$message.error("鏂囦欢涓婁紶澶辫触锛岃閲嶈瘯");
+    },
+
+    /** 闄勪欢绉婚櫎澶勭悊 */
+    handleAttachmentRemove(file) {
+      if (file.url && this.editForm.annexfilesList) {
+        const index = this.editForm.annexfilesList.findIndex(
+          item => item.path === file.url || item.fileUrl === file.url
+        );
+        if (index > -1) {
+          this.editForm.annexfilesList.splice(index, 1);
+        }
+      }
+    },
+
+    /** 鎵嬪姩鍒犻櫎闄勪欢 */
+    handleRemoveAttachment(index) {
+      this.editForm.annexfilesList.splice(index, 1);
+      this.attachmentFileList.splice(index, 1);
+      this.$message.success("闄勪欢鍒犻櫎鎴愬姛");
+    },
+
+    /** 鏂囦欢棰勮 */
+    handlePreview(file) {
+      this.currentPreviewFile = {
+        fileName: file.fileName,
+        fileUrl: file.path || file.fileUrl,
+        fileType: this.getFileType(file.fileName)
+      };
+      this.previewVisible = true;
+    },
+
+    /** 鏂囦欢涓嬭浇 */
+    handleDownload(file) {
+      const fileUrl = file.path || file.fileUrl;
+      const fileName = file.fileName;
+
+      if (fileUrl) {
+        const link = document.createElement("a");
+        link.href = fileUrl;
+        link.download = fileName;
+        link.style.display = "none";
+        document.body.appendChild(link);
+        link.click();
+        document.body.removeChild(link);
+        this.$message.success("寮�濮嬩笅杞芥枃浠�");
+      } else {
+        this.$message.warning("鏂囦欢璺緞涓嶅瓨鍦紝鏃犳硶涓嬭浇");
+      }
+    },
+
+    /** 鑾峰彇鏂囦欢绫诲瀷 */
+    getFileType(fileName) {
+      if (!fileName) return "other";
+      const extension = fileName
+        .split(".")
+        .pop()
+        .toLowerCase();
+      const imageTypes = ["jpg", "jpeg", "png", "gif", "bmp", "webp"];
+      const pdfTypes = ["pdf"];
+      const officeTypes = ["doc", "docx", "xls", "xlsx"];
+
+      if (imageTypes.includes(extension)) return "image";
+      if (pdfTypes.includes(extension)) return "pdf";
+      if (officeTypes.includes(extension)) return "office";
+      return "other";
+    },
+
+    /** 鑾峰彇鏂囦欢鎵╁睍鍚� */
+    getFileExtension(filename) {
+      if (!filename) return "";
+      return filename
+        .split(".")
+        .pop()
+        .toLowerCase();
+    },
+
+    /** 鏃ユ湡鏃堕棿鏍煎紡鍖� */
+    formatDateTime(dateTime) {
+      if (!dateTime) return "";
+      return dayjs(dateTime).format("YYYY-MM-DD HH:mm:ss");
+    },
+
+    /** 鍏抽棴缂栬緫瀵硅瘽妗� */
+    handleEditClose() {
+      this.editOpen = false;
+      this.currentCase = {};
+      this.editForm = this.getDefaultFormData();
+      this.attachmentFileList = [];
+      this.$nextTick(() => {
+        this.$refs.editForm && this.$refs.editForm.clearValidate();
+      });
+    },
+
+    /** 淇濆瓨琛ㄥ崟 */
+    async handleSave() {
+      try {
+        const valid = await this.$refs.editForm.validate();
+        if (!valid) return;
+
+        const pendingFiles = this.attachmentFileList.filter(
+          item => item.status !== "success"
+        );
+        if (pendingFiles.length > 0) {
+          this.$message.warning(
+            "杩樻湁鏂囦欢鏈笂浼犲畬鎴愶紝璇峰厛涓婁紶鎵�鏈夋枃浠舵垨绉婚櫎鏈笂浼犵殑鏂囦欢"
+          );
+          return;
+        }
+
+        this.saveLoading = true;
+
+        const requestData = { ...this.editForm };
+        requestData.infectious = requestData.infectious.join(",");
+        let response;
+
+        if (this.isEditing) {
+          response = await donateEdit(requestData);
+        } else {
+          // 鏂板鏃惰缃垱寤轰俊鎭�
+          requestData.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
+          requestData.createBy = this.$store.state.user?.name || "褰撳墠鐢ㄦ埛";
+          response = await donateAdd(requestData);
+        }
+
+        if (response.code === 200) {
+          this.$message.success(this.isEditing ? "淇敼鎴愬姛" : "鏂板鎴愬姛");
+          this.handleEditClose();
+          this.getList();
+        } else {
+          this.$message.error(response.msg || "鎿嶄綔澶辫触");
+        }
+      } catch (error) {
+        console.error("淇濆瓨澶辫触:", error);
+        this.$message.error("鎿嶄綔澶辫触锛岃绋嶅悗閲嶈瘯");
+      } finally {
+        this.saveLoading = false;
+      }
+    }
+  }
+};
+</script>
+
+<style scoped>
+.app-container {
+  padding: 20px;
+}
+
+.filter-card {
+  margin-bottom: 20px;
+}
+
+.mb8 {
+  margin-bottom: 8px;
+}
+
+/* 琛ㄥ崟鍖哄煙鏍峰紡 */
+.form-section {
+  margin-bottom: 16px;
+}
+
+.section-header {
+  display: flex;
+  align-items: center;
+  font-weight: bold;
+  color: #303133;
+}
+
+.dialog-footer {
+  text-align: right;
+  padding: 20px 0 0;
+}
+
+/* 闄勪欢鏍峰紡 */
+.attachment-section {
+  margin-bottom: 16px;
+}
+
+.attachment-header {
+  display: flex;
+  align-items: center;
+  margin-bottom: 16px;
+  padding: 8px 0;
+  border-bottom: 1px solid #ebeef5;
+}
+
+.attachment-title {
+  font-weight: bold;
+  margin: 0 8px;
+}
+
+.attachment-tip {
+  font-size: 12px;
+  color: #909399;
+}
+
+.attachment-list {
+  margin-top: 16px;
+}
+
+.list-title {
+  font-weight: bold;
+  margin-bottom: 12px;
+  color: #303133;
+}
+
+.file-name {
+  font-size: 13px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+/* 纭寮规鏍峰紡 */
+.approve-dialog >>> .el-dialog__body {
+  padding: 0;
+}
+
+.approve-detail-preview {
+  height: 100%;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 1200px) {
+  .approve-dialog {
+    width: 95% !important;
+  }
+
+  .el-aside {
+    width: 50% !important;
+  }
+}
+</style>
diff --git a/src/views/business/appear/index.vue b/src/views/business/appear/index.vue
index 39581d2..a1ee5cc 100644
--- a/src/views/business/appear/index.vue
+++ b/src/views/business/appear/index.vue
@@ -48,12 +48,6 @@
 
     <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
     <el-row :gutter="10" class="mb8">
-      <!-- <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd"
-          >鏂板妗堜緥</el-button
-        >
-      </el-col> -->
-
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -67,14 +61,13 @@
     </el-row>
 
     <!-- 鏁版嵁琛ㄦ牸 -->
-    <!-- 鏁版嵁琛ㄦ牸 -->
     <el-table
       v-loading="loading"
       :data="caseList"
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center" />
-      
+
       <el-table-column
         label="缂栧彿"
         align="center"
@@ -165,7 +158,7 @@
             v-if="
               scope.row.reportStatus !== '3' &&
                 scope.row.reportStatus !== '4' &&
-                scope.row.delFlag === 0
+                scope.row.delFlag == 0
             "
             >缂栬緫</el-button
           >
@@ -174,20 +167,28 @@
             type="text"
             icon="el-icon-check"
             @click="handleApprove(scope.row)"
-            v-if="scope.row.reportStatus === '2' && scope.row.delFlag === 0"
+            v-if="scope.row.reportStatus == '2' && scope.row.delFlag == 0"
             >纭</el-button
           >
+          <!-- 绉婚櫎杞繍鎸夐挳 -->
           <el-button
+            v-if="scope.row.serviceTransport.length"
             size="mini"
-            type="text"
-            icon="el-icon-truck"
-            :type="getTransportStatustype(scope.row)"
-            @click="handleTransport(scope.row)"
-            v-if="shouldShowTransportButton(scope.row)"
-            :disabled="!canGoToTransport(scope.row)"
+            type="primary"
+            @click="goToTransportDetail(scope.row.name)"
+            >鏌ョ湅杞繍鍗�</el-button
           >
-            {{ getTransportButtonText(scope.row) }}
-          </el-button>
+          <el-button
+            v-if="
+              scope.row.reportStatus == 3 &&
+                !scope.row.serviceTransport.length &&
+                scope.row.isTransport == 2
+            "
+            size="mini"
+            type="success"
+            @click="Createatransferorder(scope.row)"
+            >鍒涘缓杞繍鍗�</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
@@ -220,20 +221,18 @@
       append-to-body
       class="approve-dialog"
     >
-      <el-container style="height: 800px;">
+      <!-- 浣跨敤 div 甯冨眬鏇夸唬 el-container -->
+      <div class="approve-dialog-content">
         <!-- 宸︿晶锛氭渚嬭鎯� -->
-        <el-aside
-          width="50vw"
-          style="background: #f8f9fa; padding: 20px; overflow-y: auto;"
-        >
+        <div class="approve-detail-left">
           <div class="approve-detail-preview">
             <h3 style="margin-bottom: 15px; color: #303133;">妗堜緥璇︽儏棰勮</h3>
             <case-detail :caseData="currentCase" :showtitle="false" />
           </div>
-        </el-aside>
+        </div>
 
         <!-- 鍙充晶锛氱‘璁よ〃鍗� -->
-        <el-main style="padding: 20px;">
+        <div class="approve-form-right">
           <el-form
             ref="approveForm"
             :model="approveForm"
@@ -241,24 +240,69 @@
             label-width="100px"
           >
             <el-form-item label="纭缁撴灉" prop="approveResult">
-              <el-radio-group v-model="approveForm.approveResult">
+              <el-radio-group
+                v-model="approveForm.approveResult"
+                @change="handleApproveResultChange"
+              >
                 <el-radio label="3">鍚屾剰</el-radio>
                 <el-radio label="4">椹冲洖</el-radio>
               </el-radio-group>
             </el-form-item>
-            <el-form-item label="纭鎰忚" prop="approveOpinion">
+
+            <!-- 褰撻�夋嫨"鍚屾剰"鏃舵樉绀鸿浆杩愰�夐」 -->
+            <el-form-item
+              v-if="approveForm.approveResult == '3'"
+              label="鏄惁闇�瑕佽浆杩�"
+              prop="isTransport"
+            >
+              <el-radio-group v-model="approveForm.isTransport">
+                <el-radio label="1">涓嶉渶瑕�</el-radio>
+                <el-radio label="2">闇�瑕�</el-radio>
+              </el-radio-group>
+            </el-form-item>
+
+            <!-- 褰撻�夋嫨"椹冲洖"鏃舵樉绀洪┏鍥炲師鍥� -->
+            <div v-if="approveForm.approveResult == '4'">
+              <el-form-item label="椹冲洖鍘熷洜" prop="rejectType">
+                <el-radio-group v-model="approveForm.rejectType">
+                  <el-radio label="1">濂借浆</el-radio>
+                  <el-radio label="2">姝讳骸</el-radio>
+                  <el-radio label="3">涓嶇鍚堟崘鐚爣鍑�</el-radio>
+                  <el-radio label="4">瀹跺睘鏀惧純鎹愮尞</el-radio>
+                  <el-radio label="5">鍏朵粬</el-radio>
+                </el-radio-group>
+              </el-form-item>
+
+              <el-form-item label="椹冲洖鎰忚" prop="confirmResult">
+                <el-input
+                  type="textarea"
+                  v-model="approveForm.confirmResult"
+                  placeholder="璇疯緭鍏ヨ缁嗙殑椹冲洖鎰忚"
+                  :rows="6"
+                  maxlength="500"
+                  show-word-limit
+                />
+              </el-form-item>
+            </div>
+
+            <!-- 褰撻�夋嫨"鍚屾剰"鏃舵樉绀虹‘璁ゆ剰瑙� -->
+            <el-form-item
+              v-if="approveForm.approveResult == '3'"
+              label="纭鎰忚"
+              prop="confirmResult"
+            >
               <el-input
                 type="textarea"
-                v-model="approveForm.approveOpinion"
-                placeholder="璇疯緭鍏ヨ缁嗙殑纭鎰忚锛屽寘鎷�氳繃鎴栭┏鍥炵殑鐞嗙敱"
+                v-model="approveForm.confirmResult"
+                placeholder="璇疯緭鍏ョ‘璁ゆ剰瑙�"
                 :rows="6"
                 maxlength="500"
                 show-word-limit
               />
             </el-form-item>
           </el-form>
-        </el-main>
-      </el-container>
+        </div>
+      </div>
 
       <div slot="footer" class="dialog-footer">
         <el-button @click="approveOpen = false">鍙栨秷</el-button>
@@ -993,15 +1037,33 @@
       approveForm: {
         id: null,
         approveResult: "3",
-        approveOpinion: ""
+        confirmResult: "",
+        rejectType: "", // 椹冲洖鍘熷洜
+        isTransport: "1", // 鏄惁闇�瑕佽浆杩�
+        createTransport: false, // 鏄惁闇�瑕佸垱寤鸿浆杩愬崟
+        isDonate: "0" // 鏄惁鎹愮尞锛�0-鏈崘鐚紝1-宸叉崘鐚�
       },
       // 纭琛ㄥ崟楠岃瘉
       approveRules: {
         approveResult: [
           { required: true, message: "璇烽�夋嫨纭缁撴灉", trigger: "change" }
         ],
-        approveOpinion: [
+        confirmResult: [
           { required: true, message: "璇疯緭鍏ョ‘璁ゆ剰瑙�", trigger: "blur" }
+        ],
+        rejectType: {
+          required: false,
+          validator: (rule, value, callback) => {
+            if (this.approveForm.approveResult == "4" && !value) {
+              callback(new Error("璇烽�夋嫨椹冲洖鍘熷洜"));
+            } else {
+              callback();
+            }
+          },
+          trigger: "change"
+        },
+        isTransport: [
+          { required: true, message: "璇烽�夋嫨鏄惁闇�瑕佽浆杩�", trigger: "change" }
         ]
       },
       // 缂栬緫琛ㄥ崟
@@ -1073,56 +1135,31 @@
         this.loading = false;
       }
     },
-    // 杞繍------------------
-    /** 鍒ゆ柇鏄惁闇�瑕佹樉绀鸿浆杩愭寜閽� */
-    shouldShowTransportButton(row) {
-      // 鍙湁宸插悓鎰忕殑妗堜緥鎵嶈兘杩涜杞繍鎿嶄綔
-      // return row.reportStatus == "3" && row.delFlag == 0;
-      return row.reportStatus != "4";
+
+    /** 纭缁撴灉鍙樺寲澶勭悊 */
+    handleApproveResultChange(value) {
+      if (value == "3") {
+        // 閫夋嫨鍚屾剰鏃讹紝閲嶇疆椹冲洖鍘熷洜
+        this.approveForm.rejectType = "";
+        this.approveForm.isDonate = "0"; // 閲嶇疆涓烘湭鎹愮尞
+      } else if (value == "4") {
+        // 閫夋嫨椹冲洖鏃讹紝閲嶇疆杞繍閫夐」
+        this.approveForm.isTransport = "1";
+        this.approveForm.createTransport = false;
+      }
+
+      // 娓呴櫎楠岃瘉
+      this.$nextTick(() => {
+        if (this.$refs.approveForm) {
+          this.$refs.approveForm.clearValidate();
+        }
+      });
     },
 
-    /** 鍒ゆ柇鏄惁鍙互璺宠浆鍒拌浆杩愬崟 */
-    canGoToTransport(row) {
-      // 闇�瑕佽浆杩愶紙isTransport === "2"锛変笖娌℃湁杞繍淇℃伅锛坰erviceTransport涓嶅瓨鍦ㄦ垨涓虹┖鏁扮粍锛�
-      return row.isTransport == "2" && row.serviceTransport;
-    },
-
-    /** 鑾峰彇杞繍鎸夐挳鏂囨湰 */
-    getTransportButtonText(row) {
-      if (row.isTransport == "2") {
-        if (
-          row.serviceTransport &&
-          Array.isArray(row.serviceTransport) &&
-          row.serviceTransport.length > 0
-        ) {
-          return "鏌ョ湅杞繍鍗�";
-        } else {
-          return "鍒涘缓杞繍鍗�";
-        }
-      }
-      return "鏃犻渶杞繍";
-    },
-    getTransportStatustype(row) {
-      if (row.isTransport == "1") {
-        return "info"; // 涓嶉渶瑕佽浆杩�
-      }
-      if (
-        row.serviceTransport &&
-        Array.isArray(row.serviceTransport) &&
-        row.serviceTransport.length > 0
-      ) {
-        // 鏍规嵁杞繍鍗曠姸鎬佹樉绀轰笉鍚岄鑹�
-        const transport = row.serviceTransport[0];
-        if (transport.transitStatus) {
-          return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
-        }
-        return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
-      }
-      return "success"; // 闇�瑕佽浆杩愪絾鏃犺浆杩愪俊鎭�
-    },
+    // 杞繍鐩稿叧鏂规硶
     /** 鑾峰彇杞繍鐘舵�佹爣绛炬牱寮� */
     getTransportStatusTag(row) {
-      if (row.isTransport === "1") {
+      if (row.isTransport == "1") {
         return "info"; // 涓嶉渶瑕佽浆杩�
       }
       if (
@@ -1155,7 +1192,7 @@
 
     /** 鑾峰彇杞繍鐘舵�佹枃鏈� */
     getTransportStatusText(row) {
-      if (row.isTransport === "1") {
+      if (row.isTransport == "1") {
         return "鏃犻渶杞繍";
       }
       if (
@@ -1185,95 +1222,26 @@
       return "闇�杞繍";
     },
 
-    /** 澶勭悊杞繍鎿嶄綔 */
-    async handleTransport(row) {
-      try {
-        // 鍏堣幏鍙栨渶鏂扮殑妗堜緥淇℃伅
-        const caseData = row;
-
-        if (caseData.isTransport == "2") {
-          if (
-            caseData.serviceTransport &&
-            Array.isArray(caseData.serviceTransport) &&
-            caseData.serviceTransport.length > 0
-          ) {
-            // 宸叉湁杞繍鍗曪紝璺宠浆鍒拌浆杩愬崟璇︽儏椤�
-            const transport = caseData.serviceTransport[0];
-            this.goToTransportDetail(transport.id, row.name);
-          } else {
-            // 娌℃湁杞繍鍗曪紝璺宠浆鍒板垱寤鸿浆杩愬崟椤甸潰
-            this.goToCreateTransport(row);
-          }
-        } else {
-          this.$message.warning("璇ユ渚嬩笉闇�瑕佽浆杩�");
-        }
-      } catch (error) {
-        console.error("鑾峰彇妗堜緥淇℃伅澶辫触:", error);
-        this.$message.error("鑾峰彇妗堜緥淇℃伅澶辫触");
-      }
-    },
-
     /** 璺宠浆鍒板垱寤鸿浆杩愬崟椤甸潰 */
-    goToCreateTransport(caseData) {
-      // 鏂瑰紡1锛氬湪鏂伴〉闈㈡墦寮�
-      this.$router.push({
-        path: "/report/transfer",
-        query: {
-          autoCreate: "true", //璺宠浆杞繍鏍囪瘑
-          caseId: caseData.id,
-          caseNo: caseData.caseNo,
-          patName: caseData.name,
-          age: caseData.age,
-          sex: caseData.sex,
-          diagnosisname: caseData.diagnosisname,
-          treatmentHospitalName: caseData.treatmenthospitalname
-        }
-      });
-    },
+    Createatransferorder(res) {
+      console.log(res);
 
-    /** 鎵撳紑杞繍鍗曞脊妗� */
-    openTransportDialog(caseData) {
-      this.$modal.confirm({
-        title: "鍒涘缓杞繍鍗�",
-        message: `鎮ㄥ皢鍒涘缓妗堜緥銆�${caseData.caseNo} - ${caseData.name}銆戠殑杞繍鍗曪紝鏄惁缁х画锛焋,
-        confirmButtonText: "鍓嶅線鍒涘缓",
-        cancelButtonText: "鍙栨秷",
-        type: "warning",
-        beforeClose: (action, instance, done) => {
-          if (action === "confirm") {
-            // 璺宠浆鍒拌浆杩愬崟鍒涘缓椤甸潰
-            this.$router.push({
-              path: "/report/transfer",
-              query: {
-                caseId: caseData.id,
-                caseNo: caseData.caseNo,
-                patName: caseData.name,
-                age: caseData.age,
-                sex: caseData.sex,
-                diagnosisname: caseData.diagnosisname,
-                treatmentHospitalName: caseData.treatmenthospitalname
-              }
-            });
-            done();
-          } else {
-            done();
-          }
-        }
-      });
-    },
-
-    /** 璺宠浆鍒拌浆杩愬崟璇︽儏椤� */
-    goToTransportDetail(transportId, name) {
       this.$router.push({
         path: "/report/transfer",
         query: {
           autoCreate: "true",
-          patName: name
+          caseId: res.id,
+          caseNo: res.caseNo,
+          patName: res.name,
+          age: res.age,
+          sex: res.sex,
+          diagnosisname: res.diagnosisname,
+          treatmentHospitalName: res.treatmenthospitalname
         }
       });
     },
-    // ---------------------------------end
-    // 澶氶�夋閫変腑鏁版嵁
+
+    /** 澶氶�夋閫変腑鏁版嵁 */
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id);
       this.single = selection.length !== 1;
@@ -1304,7 +1272,7 @@
         this.currentCase = row;
 
         // 濡傛灉鐘舵�佹槸"宸蹭笂鎶�"(1)锛屽垯鏇存柊涓�"宸查槄璇�"(2)
-        if (this.currentCase.reportStatus === "1") {
+        if (this.currentCase.reportStatus == "1") {
           try {
             const updateData = {
               ...this.currentCase,
@@ -1339,7 +1307,7 @@
     async handleEdit(row) {
       try {
         const response = await donateInfo(row.id);
-        if (response.code === 200 || response.data) {
+        if (response.code == 200 || response.data) {
           this.isEditing = true;
           const data = response.data || response;
 
@@ -1392,7 +1360,10 @@
 
         this.approveForm.id = row.id;
         this.approveForm.approveResult = "3";
-        this.approveForm.approveOpinion = "";
+        this.approveForm.confirmResult = "";
+        this.approveForm.rejectType = "";
+        this.approveForm.isTransport = row.isTransport || "1";
+        this.approveForm.isDonate = "0";
 
         this.$nextTick(() => {
           if (this.$refs.approveForm) {
@@ -1406,7 +1377,7 @@
         this.currentCase = row;
         this.approveForm.id = row.id;
         this.approveForm.approveResult = "3";
-        this.approveForm.approveOpinion = "";
+        this.approveForm.confirmResult = "";
         this.approveOpen = true;
         this.$modal.msgError("鑾峰彇璇︽儏澶辫触锛屼絾宸叉墦寮�纭绐楀彛");
       }
@@ -1416,21 +1387,66 @@
     async submitApprove() {
       try {
         const valid = await this.$refs.approveForm.validate();
-        if (valid) {
-          const approveData = {
-            ...this.currentCase,
-            reportStatus: this.approveForm.approveResult,
-            remark: this.approveForm.approveOpinion,
-            approvername: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛",
-            approvetime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
-            updateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
-            updateBy: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛"
-          };
+        if (!valid) return;
 
-          await donateEdit(approveData);
-          this.$modal.msgSuccess("纭鎴愬姛");
-          this.approveOpen = false;
-          this.getList();
+        // 鍑嗗纭鏁版嵁
+        const approveData = {
+          ...this.currentCase,
+          reportStatus: this.approveForm.approveResult,
+          confirmResult: this.approveForm.confirmResult,
+          approvername: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛",
+          approvetime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+          updateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+          updateBy: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛"
+        };
+
+        // 澶勭悊纭缁撴灉
+        if (this.approveForm.approveResult == "3") {
+          // 鍚屾剰
+          approveData.isTransport = this.approveForm.isTransport;
+
+          // 濡傛灉涓嶉渶瑕佽浆杩愶紝璁剧疆isDonate涓�1
+          if (this.approveForm.isTransport == "1") {
+            approveData.isDonate = "1";
+          } else {
+            approveData.isDonate = "0";
+          }
+        } else if (this.approveForm.approveResult == "4") {
+          // 椹冲洖
+          approveData.rejectType = this.approveForm.rejectType;
+          approveData.isTransport = "1"; // 椹冲洖鐨勬渚嬩笉闇�瑕佽浆杩�
+          approveData.isDonate = "1"; // 椹冲洖鐨勬渚嬫爣璁颁负宸叉崘鐚�
+        }
+
+        // 淇濆瓨妗堜緥纭淇℃伅
+        await donateEdit(approveData);
+
+        this.$modal.msgSuccess("纭鎴愬姛");
+
+        // 鍏抽棴纭瀵硅瘽妗�
+        this.approveOpen = false;
+
+        // 鍒锋柊鍒楄〃
+        this.getList();
+
+        // 濡傛灉鍚屾剰涓旈渶瑕佽浆杩愶紝璺宠浆鍒拌浆杩愬崟鍒涘缓椤甸潰
+        if (
+          this.approveForm.approveResult == "3" &&
+          this.approveForm.isTransport == "2"
+        ) {
+          this.$router.push({
+            path: "/report/transfer",
+            query: {
+              autoCreate: "true",
+              caseId: this.currentCase.id,
+              caseNo: this.currentCase.caseNo,
+              patName: this.currentCase.name,
+              age: this.currentCase.age,
+              sex: this.currentCase.sex,
+              diagnosisname: this.currentCase.diagnosisname,
+              treatmentHospitalName: this.currentCase.treatmenthospitalname
+            }
+          });
         }
       } catch (error) {
         console.error("纭澶辫触:", error);
@@ -1498,6 +1514,8 @@
         infectious: undefined,
         infectiousOther: undefined,
         isTransport: "1",
+        isDonate: "0", // 鏂板锛氭槸鍚︽崘鐚�
+        rejectType: undefined, // 鏂板锛氶┏鍥炲師鍥�
         // 鍖婚櫌淇℃伅
         treatmenthospitalname: undefined,
         treatmentdeptname: undefined,
@@ -1544,7 +1562,7 @@
 
     /** 闄勪欢涓婁紶鎴愬姛澶勭悊 */
     handleUploadSuccess({ file, fileList, response }) {
-      if (response && response.code === 200) {
+      if (response && response.code == 200) {
         if (!this.editForm.annexfilesList) {
           this.editForm.annexfilesList = [];
         }
@@ -1573,7 +1591,7 @@
     handleAttachmentRemove(file) {
       if (file.url && this.editForm.annexfilesList) {
         const index = this.editForm.annexfilesList.findIndex(
-          item => item.path === file.url || item.fileUrl === file.url
+          item => item.path == file.url || item.fileUrl == file.url
         );
         if (index > -1) {
           this.editForm.annexfilesList.splice(index, 1);
@@ -1659,7 +1677,15 @@
         this.$refs.editForm && this.$refs.editForm.clearValidate();
       });
     },
-
+    goToTransportDetail(name) {
+      this.$router.push({
+        path: "/report/transfer",
+        query: {
+          autoCreate: "true",
+          patName: name
+        }
+      });
+    },
     /** 淇濆瓨琛ㄥ崟 */
     async handleSave() {
       try {
@@ -1691,7 +1717,7 @@
           response = await donateAdd(requestData);
         }
 
-        if (response.code === 200) {
+        if (response.code == 200) {
           this.$message.success(this.isEditing ? "淇敼鎴愬姛" : "鏂板鎴愬姛");
           this.handleEditClose();
           this.getList();
@@ -1787,7 +1813,49 @@
 .approve-detail-preview {
   height: 100%;
 }
+.approve-dialog-content {
+  display: flex;
+  height: 600px; /* 鍙互璋冩暣楂樺害 */
+  overflow: hidden;
+}
 
+.approve-detail-left {
+  width: 50%;
+  background: #f8f9fa;
+  padding: 20px;
+  overflow-y: auto;
+  border-right: 1px solid #e4e7ed;
+}
+
+.approve-form-right {
+  width: 50%;
+  padding: 20px;
+  overflow-y: auto;
+}
+
+.approve-detail-preview {
+  height: 100%;
+}
+
+/* 鍝嶅簲寮忚皟鏁� */
+@media (max-width: 1200px) {
+  .approve-dialog-content {
+    flex-direction: column;
+    height: auto;
+    max-height: 80vh;
+  }
+
+  .approve-detail-left,
+  .approve-form-right {
+    width: 100%;
+    height: auto;
+  }
+
+  .approve-detail-left {
+    border-right: none;
+    border-bottom: 1px solid #e4e7ed;
+  }
+}
 /* 鍝嶅簲寮忚璁� */
 @media (max-width: 1200px) {
   .approve-dialog {
diff --git a/src/views/business/assess/assessInfo.vue b/src/views/business/assess/assessInfo.vue
index 346cff1..a465c99 100644
--- a/src/views/business/assess/assessInfo.vue
+++ b/src/views/business/assess/assessInfo.vue
@@ -1,63 +1,7 @@
 <template>
   <div class="assessment-detail">
     <!-- 鍩虹妗堜緥淇℃伅 -->
-    <case-basic-info
-      :case-id="caseId"
-      :show-attachment="true"
-    />
-    <!-- <el-card class="basic-info-card">
-      <div slot="header" class="clearfix">
-        <span>妗堜緥鍩烘湰淇℃伅</span>
-        <el-button
-          style="float: right; padding: 3px 0"
-          type="text"
-          @click="handleAttachmentPreview"
-        >
-          <i class="el-icon-folder-opened"></i> 鏌ョ湅闄勪欢
-        </el-button>
-      </div>
-
-      <el-descriptions :column="2" border>
-        <el-descriptions-item label="浣忛櫌鍙�">{{
-          assessmentData.caseNo
-        }}</el-descriptions-item>
-        <el-descriptions-item label="娼滃湪鎹愮尞鑰呭鍚�">{{
-          assessmentData.name || assessmentData.donorName
-        }}</el-descriptions-item>
-        <el-descriptions-item label="鎬у埆">
-          <dict-tag
-            :options="dict.type.sys_user_sex"
-            :value="assessmentData.sex"
-          />
-        </el-descriptions-item>
-        <el-descriptions-item label="骞撮緞"
-          >{{ assessmentData.age }}宀�</el-descriptions-item
-        >
-        <el-descriptions-item label="琛�鍨�">
-          {{ assessmentData.bloodtype }}
-        </el-descriptions-item>
-        <el-descriptions-item label="璇佷欢鍙风爜">{{
-          assessmentData.idcardno
-        }}</el-descriptions-item>
-        <el-descriptions-item label="鐤剧梾璇婃柇">{{
-          assessmentData.diagnosisname
-        }}</el-descriptions-item>
-        <el-descriptions-item label="鎵�鍦ㄥ尰鐤楁満鏋�">{{
-          assessmentData.treatmenthospitalname
-        }}</el-descriptions-item>
-        <el-descriptions-item label="鍗忚皟鍛�">{{
-          assessmentData.coordinatorName
-        }}</el-descriptions-item>
-        <el-descriptions-item label="璇勪及鏃堕棿">{{
-          assessmentData.assessTime
-        }}</el-descriptions-item>
-        <el-descriptions-item label="璇勪及鐘舵��">
-          <el-tag :type="statusFilter(assessmentData.assessState)">
-            {{ statusTextFilter(assessmentData.assessState) }}
-          </el-tag>
-        </el-descriptions-item>
-      </el-descriptions>
-    </el-card> -->
+    <case-basic-info :case-id="caseId" :show-attachment="true" />
 
     <el-card class="organ-assessment-card">
       <div slot="header" class="clearfix">
@@ -128,7 +72,7 @@
                   v-for="(assessment, index) in getOrganAssessments(scope.row)"
                   :key="`${scope.row.organno}_${index}`"
                   :label="`绗�${index + 1}娆¤瘎浼癭"
-                  :name="index"
+                  :name="String(index)"
                 >
                   <organ-assessment-form
                     :organ-data="scope.row"
@@ -195,7 +139,7 @@
                       class="assessment-detail-card"
                     >
                       <div
-                        v-if="getOrganAssessments(scope.row).length === 0"
+                        v-if="getOrganAssessments(scope.row).length == 0"
                         class="no-assessment"
                       >
                         <el-empty description="鏆傛棤璇勪及璁板綍"></el-empty>
@@ -229,18 +173,24 @@
                               border
                               class="detail-descriptions"
                             >
+                              <!-- 璇勪及鏃堕棿 -->
                               <el-descriptions-item label="璇勪及鏃堕棿" :span="2">
-                                <span class="time-text">{{
-                                  assessment.assessmentTime || "-"
-                                }}</span>
+                                <span class="time-text">
+                                  {{
+                                    parseTime(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="
@@ -258,6 +208,7 @@
                                 </el-tag>
                               </el-descriptions-item>
 
+                              <!-- 璇勪及鎰忚 -->
                               <el-descriptions-item label="璇勪及鎰忚" :span="2">
                                 <div class="opinion-content">
                                   {{
@@ -267,6 +218,7 @@
                                 </div>
                               </el-descriptions-item>
 
+                              <!-- 闄勪欢鏁伴噺 -->
                               <el-descriptions-item
                                 label="闄勪欢鏁伴噺"
                                 :span="2"
@@ -308,52 +260,50 @@
                         <el-descriptions-item label="鑾峰彇鍓嶆椿妫�">
                           <el-tag
                             :type="
-                              scope.row.isbiopsybefore === '1'
+                              scope.row.isbiopsybefore == '1'
                                 ? 'success'
                                 : 'info'
                             "
                             size="small"
                           >
-                            {{ scope.row.isbiopsybefore === "1" ? "鏄�" : "鍚�" }}
+                            {{ scope.row.isbiopsybefore == "1" ? "鏄�" : "鍚�" }}
                           </el-tag>
                         </el-descriptions-item>
                         <el-descriptions-item label="鑾峰彇鍚庢椿妫�">
                           <el-tag
                             :type="
-                              scope.row.isbiopsyafter === '1'
+                              scope.row.isbiopsyafter == '1'
                                 ? 'success'
                                 : 'info'
                             "
                             size="small"
                           >
-                            {{ scope.row.isbiopsyafter === "1" ? "鏄�" : "鍚�" }}
+                            {{ scope.row.isbiopsyafter == "1" ? "鏄�" : "鍚�" }}
                           </el-tag>
                         </el-descriptions-item>
                         <el-descriptions-item label="杈圭紭鍣ㄥ畼">
                           <el-tag
                             :type="
-                              scope.row.ismarginalorgan === '1'
+                              scope.row.ismarginalorgan == '1'
                                 ? 'warning'
                                 : 'info'
                             "
                             size="small"
                           >
-                            {{
-                              scope.row.ismarginalorgan === "1" ? "鏄�" : "鍚�"
-                            }}
+                            {{ scope.row.ismarginalorgan == "1" ? "鏄�" : "鍚�" }}
                           </el-tag>
                         </el-descriptions-item>
                         <el-descriptions-item label="鐥呭師鑿岄槼鎬�">
                           <el-tag
                             :type="
-                              scope.row.ispathogenpositive === '1'
+                              scope.row.ispathogenpositive == '1'
                                 ? 'danger'
                                 : 'info'
                             "
                             size="small"
                           >
                             {{
-                              scope.row.ispathogenpositive === "1" ? "鏄�" : "鍚�"
+                              scope.row.ispathogenpositive == "1" ? "鏄�" : "鍚�"
                             }}
                           </el-tag>
                         </el-descriptions-item>
@@ -372,7 +322,11 @@
           </template>
         </el-table-column>
 
-        <el-table-column label="鍣ㄥ畼缂栧彿" align="center" prop="organnumber" />
+        <el-table-column label="鍣ㄥ畼缂栧彿" align="center" prop="organnumber">
+          <template slot-scope="scope">
+            {{ getOrganvalue(scope.row.organno) }}
+          </template>
+        </el-table-column>
 
         <el-table-column
           label="鑾峰彇鏈烘瀯"
@@ -413,9 +367,9 @@
           <template slot-scope="scope">
             <el-tag
               :type="
-                getOrganOverallStatus(scope.row) === 'completed'
+                getOrganOverallStatus(scope.row) == 'completed'
                   ? 'success'
-                  : getOrganOverallStatus(scope.row) === 'assessing'
+                  : getOrganOverallStatus(scope.row) == 'assessing'
                   ? 'primary'
                   : 'warning'
               "
@@ -554,14 +508,14 @@
   },
   computed: {
     isCoordinator() {
-      return this.currentUser.role === "coordinator";
+      return this.currentUser.role == "coordinator";
     },
     currentDepartment() {
       return this.currentUser.department;
     },
     // 鏍规嵁鎹愮尞鍐冲畾杩囨护鍚庣殑鍣ㄥ畼鍒楄〃
     filteredOrganAssessmentList() {
-      if (!this.organdecisionValues || this.organdecisionValues.length === 0) {
+      if (!this.organdecisionValues || this.organdecisionValues.length == 0) {
         return [];
       }
 
@@ -585,7 +539,7 @@
         return (
           assessments &&
           assessments.length > 0 &&
-          assessments.every(assessment => assessment.status === "assessed")
+          assessments.every(assessment => assessment.status == "assessed")
         );
       });
     },
@@ -611,20 +565,25 @@
     this.infoid = this.$route.query.infoid;
     this.caseId = this.infoid;
     this.assessmentId = this.$route.query.id;
-    this.isEdit = this.$route.query.assess === "true";
+    this.isEdit = this.$route.query.assess == "true";
     this.getAssessmentDetail();
   },
   methods: {
     // 鏍规嵁瀛楀吀value鑾峰彇label
     getOrganLabel(organValue) {
-      const dictItem = this.organDict.find(item => item.value === organValue);
+      const dictItem = this.organDict.find(item => item.value == organValue);
       return dictItem ? dictItem.label : organValue;
+    },
+    getOrganvalue(organValue) {
+      const dictItem = this.organDict.find(item => item.value == organValue);
+
+      return dictItem ? dictItem.value : organValue;
     },
 
     // Tab鐐瑰嚮浜嬩欢
     handleTabClick(organ, tab) {
       if (tab.name !== "add") {
-        this.activeTabMap.set(organ.organno, tab.name);
+        this.activeTabMap.set(organ.organno, String(tab.name));
       }
     },
     // 鑾峰彇鍔熻兘鐘舵�佹爣绛剧被鍨�
@@ -651,7 +610,7 @@
 
     // 鏄剧ず闄勪欢鍒楄〃
     showAttachmentList(attachments, assessmentNumber) {
-      if (!attachments || attachments.length === 0) {
+      if (!attachments || attachments.length == 0) {
         this.$message.info(`绗�${assessmentNumber}娆¤瘎浼版殏鏃犻檮浠禶);
         return;
       }
@@ -694,7 +653,7 @@
       if (!organ.assesscontent) return [];
       try {
         const assessData =
-          typeof organ.assesscontent === "string"
+          typeof organ.assesscontent == "string"
             ? JSON.parse(organ.assesscontent)
             : organ.assesscontent;
 
@@ -780,7 +739,7 @@
         const saveMethod = this.assessmentData.id ? assessedit : assessAdd;
         const response = await saveMethod(saveData);
 
-        if (response.code === 200) {
+        if (response.code == 200) {
           this.$message.success("璇勪及琛ㄤ繚瀛樻垚鍔燂紒");
           if (!this.assessmentData.id && response.data) {
             this.assessmentData.id = response.data;
@@ -806,6 +765,7 @@
     async handleOrganDecisionChange(newDecision) {
       const oldDecision = [...this.prevOrgandecisionValues];
       this.autoHandleDecisionChange(newDecision);
+      console.log(newDecision);
 
       const removedDecisions = oldDecision.filter(
         item => !newDecision.includes(item)
@@ -818,7 +778,7 @@
       this.prevOrgandecisionValues = [...newDecision];
       this.$forceUpdate();
 
-      if (newDecision.length === 0) {
+      if (newDecision.length == 0) {
         this.expandedRowKeys = [];
       }
     },
@@ -917,7 +877,7 @@
 
       for (const organValue of relatedOrgans) {
         const organIndex = this.organAssessmentList.findIndex(
-          organ => organ.organno === organValue && organ.delFlag !== "1"
+          organ => organ.organno == organValue && organ.delFlag !== "1"
         );
 
         if (organIndex !== -1) {
@@ -959,7 +919,7 @@
     // 纭繚鍣ㄥ畼瀛樺湪
     ensureOrganExists(organValue) {
       const exists = this.organAssessmentList.some(
-        organ => organ.organno === organValue && organ.delFlag !== "1"
+        organ => organ.organno == organValue && organ.delFlag !== "1"
       );
 
       if (!exists) {
@@ -991,7 +951,7 @@
       try {
         const response = await evaluateBaseInfolist({ infoid: this.infoid });
 
-        if (response.code === 200) {
+        if (response.code == 200) {
           this.handleResponseData(response);
         } else {
           this.$message.error("鑾峰彇璇︽儏澶辫触锛�" + (response.msg || "鏈煡閿欒"));
@@ -1065,7 +1025,7 @@
         const organno = organ.organno;
 
         // 濡傛灉 assesscontent 鏄瓧绗︿覆锛岀‘淇濆畠鏄湁鏁堢殑 JSON
-        if (organ.assesscontent && typeof organ.assesscontent === "string") {
+        if (organ.assesscontent && typeof organ.assesscontent == "string") {
           try {
             JSON.parse(organ.assesscontent);
           } catch (error) {
@@ -1081,9 +1041,9 @@
 
         const assessments = this.getOrganAssessments(organ);
         const activeTab = this.activeTabMap.has(organno)
-          ? this.activeTabMap.get(organno)
+          ? String(this.activeTabMap.get(organno))
           : assessments.length > 0
-          ? 0
+          ? "0"
           : "summary";
 
         return {
@@ -1101,7 +1061,7 @@
       return {
         index: index,
         status: "pending",
-        assessmentTime: "",
+        assessmentTime: new Date().toLocaleString("zh-CN"), // 娣诲姞榛樿璇勪及鏃堕棿
         assessor: "",
         functionStatus: "",
         assessmentOpinion: "",
@@ -1125,20 +1085,20 @@
     // 鑾峰彇鍣ㄥ畼鏁翠綋鐘舵��
     getOrganOverallStatus(organ) {
       const assessments = this.getOrganAssessments(organ);
-      if (assessments.length === 0) {
+      if (assessments.length == 0) {
         return "pending";
       }
 
       const validAssessments = assessments.filter(a => a.delFlag !== "1");
-      if (validAssessments.length === 0) {
+      if (validAssessments.length == 0) {
         return "pending";
       }
 
       const allAssessed = validAssessments.every(
-        assessment => assessment.status === "assessed"
+        assessment => assessment.status == "assessed"
       );
       const someAssessed = validAssessments.some(
-        assessment => assessment.status === "assessed"
+        assessment => assessment.status == "assessed"
       );
 
       if (allAssessed) return "completed";
@@ -1167,7 +1127,7 @@
       } else {
         this.expandedRowKeys = [key];
         this.organAssessmentList.forEach(item => {
-          item.expanded = item.organno === key;
+          item.expanded = item.organno == key;
         });
       }
     },
@@ -1185,14 +1145,15 @@
       const assessments = this.getOrganAssessments(organ);
       const newAssessment = {
         ...this.getDefaultAssessment(assessments.length),
-        assessor: this.currentUser.name
+        assessor: this.currentUser.name,
+        assessmentTime: new Date().toLocaleString("zh-CN") // 璁剧疆鍏蜂綋鐨勮瘎浼版椂闂�
       };
 
       const newAssessments = [...assessments, newAssessment];
       this.$set(organ, "assesscontent", JSON.stringify(newAssessments));
 
-      organ.activeTab = assessments.length;
-      this.activeTabMap.set(organ.organno, assessments.length);
+      organ.activeTab = String(assessments.length);
+      this.activeTabMap.set(organ.organno, String(assessments.length));
 
       this.$message.success("宸叉坊鍔犳柊鐨勮瘎浼�");
     },
@@ -1203,32 +1164,25 @@
       this.deleteOrganAssessment(organData, assessmentIndex);
     },
     // 澶勭悊璇勪及淇濆瓨
+    // 鍦� AssessmentDetail.vue 鐨� handleSaveAssessment 鏂规硶涓�
     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" // 纭繚鍒犻櫎鏍囧織
+          status: "assessed",
+          assessmentTime:
+            assessmentData.assessmentTime || new Date().toLocaleString("zh-CN"),
+          delFlag: "0"
         };
 
-        // 鏇存柊 assesscontent
         this.$set(organData, "assesscontent", JSON.stringify(newAssessments));
-
-        // 寮哄埗閲嶆柊娓叉煋
         this.$forceUpdate();
-
         this.$message.success("璇勪及淇濆瓨鎴愬姛");
-
-        // 妫�鏌ユ槸鍚﹂渶瑕佽嚜鍔ㄥ垏鎹㈠埌涓嬩竴涓瘎浼�
         this.checkAndSwitchTab(organData, assessmentIndex);
       }
     },
@@ -1238,8 +1192,8 @@
       const assessments = this.getOrganAssessments(organData);
       if (currentIndex < assessments.length - 1) {
         // 濡傛灉杩樻湁涓嬩竴涓瘎浼帮紝鑷姩鍒囨崲鍒颁笅涓�涓�
-        organData.activeTab = currentIndex + 1;
-        this.activeTabMap.set(organData.organno, currentIndex + 1);
+        organData.activeTab = String(currentIndex + 1);
+        this.activeTabMap.set(organData.organno, String(currentIndex + 1));
       } else {
         // 濡傛灉娌℃湁涓嬩竴涓瘎浼帮紝鍒囨崲鍒版眹鎬婚〉
         organData.activeTab = "summary";
@@ -1279,14 +1233,14 @@
           this.$set(organ, "assesscontent", JSON.stringify(newAssessments));
 
           // 澶勭悊tab鍒囨崲
-          if (newAssessments.length === 0) {
+          if (newAssessments.length == 0) {
             organ.activeTab = "summary";
             this.activeTabMap.set(organ.organno, "summary");
-          } else if (organ.activeTab === assessmentIndex) {
+          } else if (organ.activeTab == String(assessmentIndex)) {
             const newIndex = Math.max(0, assessmentIndex - 1);
-            organ.activeTab = newIndex;
-            this.activeTabMap.set(organ.organno, newIndex);
-          } else if (organ.activeTab === "summary") {
+            organ.activeTab = String(newIndex);
+            this.activeTabMap.set(organ.organno, String(newIndex));
+          } else if (organ.activeTab == "summary") {
             this.activeTabMap.set(organ.organno, "summary");
           }
 
@@ -1301,16 +1255,18 @@
     // 鑾峰彇鏈�鏂拌瘎浼版椂闂�
     getLatestAssessmentTime(organ) {
       const assessments = this.getOrganAssessments(organ);
-      if (assessments.length === 0) return null;
+      if (assessments.length == 0) return null;
 
       const assessed = assessments.filter(
         a => a.assessmentTime && a.delFlag !== "1"
       );
-      if (assessed.length === 0) return null;
+      if (assessed.length == 0) return null;
 
-      return assessed.sort(
-        (a, b) => new Date(b.assessmentTime) - new Date(a.assessmentTime)
-      )[0].assessmentTime;
+      return this.parseTime(
+        assessed.sort(
+          (a, b) => new Date(b.assessmentTime) - new Date(a.assessmentTime)
+        )[0].assessmentTime
+      );
     },
 
     // 鑾峰彇璇勪及鐘舵�佹爣绛剧被鍨�
@@ -1372,7 +1328,7 @@
       if (this.assessmentData.assessannex) {
         try {
           const annexData =
-            typeof this.assessmentData.assessannex === "string"
+            typeof this.assessmentData.assessannex == "string"
               ? JSON.parse(this.assessmentData.assessannex)
               : this.assessmentData.assessannex;
 
@@ -1411,7 +1367,7 @@
 
         const response = await assessedit(updateData);
 
-        if (response.code === 200) {
+        if (response.code == 200) {
           this.$message.success("璇勪及瀹屾垚纭鎴愬姛");
           this.assessmentData.assessState = "3";
           this.isEdit = false;
@@ -1519,6 +1475,7 @@
 .fixed-width .el-button {
   margin: 0 2px;
 }
+
 /* 姹囨�婚〉闈㈡牱寮� */
 .assessment-summary {
   padding: 10px;
diff --git a/src/views/business/decide/DecideInfo copy.vue b/src/views/business/decide/DecideInfo copy.vue
new file mode 100644
index 0000000..239e5f9
--- /dev/null
+++ b/src/views/business/decide/DecideInfo copy.vue
@@ -0,0 +1,816 @@
+<template>
+  <div class="death-judgment-detail">
+    <case-basic-info :case-id="caseId" :show-attachment="true" />
+    <el-card class="detail-card">
+      <!-- 鍩虹淇℃伅 -->
+      <div slot="header" class="clearfix">
+        <span class="detail-title">姝讳骸鍒ゅ畾鍩烘湰淇℃伅</span>
+        <el-button
+          v-if="isEdit"
+          type="success"
+          style="float: right"
+          @click="handleSave"
+          :loading="saveLoading"
+        >
+          淇濆瓨淇℃伅
+        </el-button>
+        <el-button
+          v-else
+          type="primary"
+          style="float: right"
+          @click="handleEdit"
+        >
+          缂栬緫淇℃伅
+        </el-button>
+      </div>
+
+      <el-form :model="form" ref="form" :rules="rules" label-width="120px">
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="姝讳骸鍘熷洜" prop="deathreason">
+              <el-input v-model="form.deathreason" :readonly="!isEdit" />
+              <!-- <el-select
+                v-model="form.deathreason"
+                :disabled="!isEdit"
+                style="width: 100%"
+              >
+                <el-option label="鑴戞浜�" value="brain_death" />
+                <el-option label="蹇冩浜�" value="heart_death" />
+                <el-option label="鍏朵粬" value="other" />
+              </el-select> -->
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="璐熻矗浜�" prop="responsibleusername">
+              <el-input
+                v-model="form.responsibleusername"
+                :readonly="!isEdit"
+              />
+            </el-form-item>
+          </el-col>
+          <!-- <el-col :span="8">
+            <el-form-item label="璁板綍鐘舵��" prop="recordstate">
+              <el-tag :type="getStatusTag(form.recordstate)">
+                {{ getStatusText(form.recordstate) }}
+              </el-tag>
+            </el-form-item>
+          </el-col> -->
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="姝讳骸鏃堕棿" prop="deathtime">
+              <el-date-picker
+                v-model="form.deathtime"
+                type="datetime"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                style="width: 100%"
+                :disabled="!isEdit"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="deathjudgedocto">
+              <el-input v-model="form.deathjudgedocto" :readonly="!isEdit" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鍒ゅ畾鍖荤敓浜�" prop="deathjudgedoctt">
+              <el-input v-model="form.deathjudgedoctt" :readonly="!isEdit" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="鍣ㄥ畼鑾峰彇鏈烘瀯" prop="gainhospitalname">
+              <el-input v-model="form.gainhospitalname" :readonly="!isEdit" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鏄惁榛樺搥缂呮��" prop="isspendremember">
+              <el-select
+                v-model="form.isspendremember"
+                :disabled="!isEdit"
+                style="width: 100%"
+              >
+                <el-option label="鏄�" :value="1" />
+                <el-option label="鍚�" :value="0" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鎭㈠閬椾綋浠" prop="isrestoreremains">
+              <el-select
+                v-model="form.isrestoreremains"
+                :disabled="!isEdit"
+                style="width: 100%"
+              >
+                <el-option label="鏄�" :value="1" />
+                <el-option label="鍚�" :value="0" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-form-item label="姝讳骸鍒ゅ畾璇存槑" prop="remark">
+          <el-input
+            type="textarea"
+            :rows="3"
+            v-model="form.remark"
+            :readonly="!isEdit"
+            placeholder="璇︾粏璁板綍姝讳骸鍒ゅ畾杩囩▼鍜屼緷鎹�"
+          />
+        </el-form-item>
+      </el-form>
+    </el-card>
+
+    <!-- 璇勪及琛ㄩ檮浠� -->
+    <el-card class="attachment-card">
+      <div slot="header" class="clearfix">
+        <span class="detail-title">姝讳骸鍒ゅ畾璇勪及琛ㄩ檮浠�</span>
+        <!-- <el-button
+          v-if="isEdit"
+          type="primary"
+          size="mini"
+          @click="openUploadDialog"
+          :loading="uploadLoading"
+        >
+          涓婁紶闄勪欢
+        </el-button> -->
+      </div>
+
+      <!-- 闄勪欢绫诲瀷閫夐」鍗� -->
+      <el-tabs v-model="activeAttachmentType" type="card">
+        <el-tab-pane
+          v-for="type in attachmentTypes"
+          :key="type.value"
+          :label="type.label"
+          :name="type.value"
+        >
+          <div class="attachment-upload-section">
+            <div class="upload-header">
+              <span class="upload-title">{{ type.label }}</span>
+              <el-tooltip content="鐐瑰嚮涓婁紶璇ョ被鍨嬭瘎浼拌〃" placement="top">
+                <el-button
+                  size="mini"
+                  type="primary"
+                  icon="el-icon-plus"
+                  @click="openUploadDialog(type.value)"
+                  :disabled="!isEdit"
+                >
+                  娣诲姞璇勪及琛�
+                </el-button>
+              </el-tooltip>
+            </div>
+
+            <!-- 闄勪欢鍒楄〃 -->
+            <el-table
+              :data="getAttachmentsByType(type.value)"
+              v-loading="attachmentLoading"
+              style="width: 100%; margin-top: 15px;"
+            >
+              <el-table-column label="鏂囦欢鍚嶇О" min-width="200">
+                <template slot-scope="scope">
+                  <div class="file-info">
+                    <i
+                      class="el-icon-document"
+                      style="margin-right: 8px; color: #409EFF;"
+                    ></i>
+                    <span>{{ scope.row.fileName }}</span>
+                  </div>
+                </template>
+              </el-table-column>
+
+              <el-table-column label="鏂囦欢绫诲瀷" width="100" align="center">
+                <template slot-scope="scope">
+                  <el-tag size="small">{{
+                    getFileType(scope.row.fileName)
+                  }}</el-tag>
+                </template>
+              </el-table-column>
+
+              <el-table-column label="鏂囦欢澶у皬" width="100" align="center">
+                <template slot-scope="scope">
+                  <span>{{ formatFileSize(scope.row.fileSize) }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column label="涓婁紶鏃堕棿" width="160" align="center">
+                <template slot-scope="scope">
+                  <span>{{ parseTime(scope.row.uploadTime) }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column label="涓婁紶浜�" width="100" align="center">
+                <template slot-scope="scope">
+                  <span>{{ scope.row.uploader }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column label="鎿嶄綔" width="180" align="center">
+                <template slot-scope="scope">
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-view"
+                    @click="handlePreview(scope.row)"
+                    >棰勮</el-button
+                  >
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-download"
+                    @click="handleDownload(scope.row)"
+                    >涓嬭浇</el-button
+                  >
+                  <el-button
+                    v-if="isEdit"
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    style="color: #F56C6C;"
+                    @click="handleRemoveAttachment(scope.row)"
+                    >鍒犻櫎</el-button
+                  >
+                </template>
+              </el-table-column>
+            </el-table>
+
+            <div
+              v-if="getAttachmentsByType(type.value).length === 0"
+              class="empty-attachment"
+            >
+              <el-empty
+                description="鏆傛棤璇勪及琛ㄩ檮浠�"
+                :image-size="80"
+              ></el-empty>
+            </div>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+    </el-card>
+
+    <!-- 涓婁紶瀵硅瘽妗� -->
+    <el-dialog
+      :title="`涓婁紶${getCurrentTypeLabel}璇勪及琛╜"
+      :visible.sync="uploadDialogVisible"
+      width="500px"
+      :close-on-click-modal="false"
+    >
+      <el-upload
+        ref="uploadRef"
+        class="upload-demo"
+        drag
+        :action="uploadAction"
+        :headers="headers"
+        multiple
+        :file-list="tempFileList"
+        :before-upload="beforeUpload"
+        :on-change="handleFileChange"
+        :on-remove="handleTempRemove"
+        :on-success="handleUploadSuccess"
+        :auto-upload="false"
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          灏嗚瘎浼拌〃鏂囦欢鎷栧埌姝ゅ锛屾垨<em>鐐瑰嚮涓婁紶</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          鏀寔涓婁紶pdf銆乯pg銆乸ng銆乨oc銆乨ocx銆亁ls銆亁lsx鏍煎紡鏂囦欢锛屽崟涓枃浠朵笉瓒呰繃10MB
+        </div>
+      </el-upload>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="uploadDialogVisible = false">鍙栨秷</el-button>
+        <el-button
+          type="primary"
+          @click="submitUpload"
+          :loading="uploadLoading"
+          :disabled="tempFileList.length === 0"
+        >
+          纭涓婁紶
+        </el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  deathinfoedit,
+  deathinfoadd,
+  queryDathInfoBaseInfo
+} from "@/api/businessApi";
+import { getToken } from "@/utils/auth";
+import CaseBasicInfo from "@/components/CaseBasicInfo";
+
+export default {
+  name: "DeathJudgmentDetail",
+  components: { CaseBasicInfo },
+
+  data() {
+    return {
+      caseId: null,
+      // 鏄惁缂栬緫妯″紡
+      isEdit: false,
+      // 淇濆瓨鍔犺浇鐘舵��
+      saveLoading: false,
+      infoid: undefined,
+
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: undefined,
+        infoid: undefined,
+        donorno: "",
+        name: "",
+        sex: "",
+        age: "",
+        diagnosisname: "",
+        deathreason: "",
+        deathtime: "",
+        deathjudgedocto: "",
+        deathjudgedoctt: "",
+        gainhospitalno: "",
+        gainhospitalname: "",
+        isspendremember: 0,
+        isrestoreremains: 0,
+        rememberAnnex: "",
+        responsibleuserid: "",
+        responsibleusername: "",
+        recordstate: "0",
+        judgmentDescription: ""
+      },
+      // 琛ㄥ崟楠岃瘉瑙勫垯
+      rules: {
+        name: [
+          { required: true, message: "鎹愮尞鑰呭鍚嶄笉鑳戒负绌�", trigger: "blur" }
+        ],
+        deathreason: [
+          { required: true, message: "姝讳骸鍘熷洜涓嶈兘涓虹┖", trigger: "change" }
+        ],
+        deathtime: [
+          { required: true, message: "姝讳骸鏃堕棿涓嶈兘涓虹┖", trigger: "change" }
+        ],
+        deathjudgedocto: [
+          { required: true, message: "鍒ゅ畾鍖荤敓涓�涓嶈兘涓虹┖", trigger: "blur" }
+        ]
+      },
+      // 闄勪欢鐩稿叧鏁版嵁
+      activeAttachmentType: "1",
+      attachmentLoading: false,
+      uploadDialogVisible: false,
+      uploadLoading: false,
+      tempFileList: [],
+      currentUploadType: "",
+      uploadAction: process.env.VUE_APP_BASE_API + "/common/upload",
+      headers: {
+        Authorization: "Bearer " + getToken()
+      },
+      // 璇勪及琛ㄧ被鍨嬪畾涔�
+      attachmentTypes: [
+        { value: "1", label: "鑴戞浜″垽瀹氳〃" },
+        { value: "2", label: "鑴戠數鍥捐瘎浼拌〃" },
+        { value: "3", label: "鐭綔浼忔湡浣撴劅璇卞彂鐢典綅璇勪及琛�" },
+        { value: "4", label: "缁忛澶氭櫘鍕掕秴澹拌瘎浼拌褰�" },
+        { value: "5", label: "鍗仴濮旇剳鎹熶激璐ㄦ帶涓績 - 涓村簥缁煎悎璇勪及琛�" },
+        { value: "6", label: "UW璇勫垎琛�" },
+        { value: "7", label: "蹇冩浜″垽瀹氳〃" }
+      ],
+
+      // 闄勪欢鍒楄〃鏁版嵁
+      attachmentList: []
+    };
+  },
+  computed: {
+    getCurrentTypeLabel() {
+      const type = this.attachmentTypes.find(
+        t => t.value === this.currentUploadType
+      );
+      return type ? type.label : "";
+    }
+  },
+  created() {
+    this.infoid = this.$route.query.infoid;
+    this.caseId = this.infoid;
+    const id = this.$route.query.id;
+    this.isEdit = this.$route.query.isEdit;
+    this.getDetail(this.infoid);
+
+    // if (id && !this.$route.path.includes("/add")) {
+    //   this.getDetail(id);
+    // } else if (this.$route.path.includes("/add")) {
+    //   this.generateDonorNo();
+    // }
+    this.getAttachmentList();
+  },
+  methods: {
+    // 鐢熸垚鎹愮尞鑰呯紪鍙�
+    generateDonorNo() {
+      const timestamp = Date.now().toString();
+      this.form.donorno = "DONOR" + timestamp.slice(-8);
+    },
+    // 鑾峰彇璇︽儏
+    async getDetail(infoid) {
+      try {
+        const response = await queryDathInfoBaseInfo({ infoid });
+        let realData = {};
+
+        if (response && response.data) {
+          realData = response.data[0];
+        } else if (response) {
+          realData = response;
+        }
+
+        // 鏄犲皠瀛楁鍒拌〃鍗�
+        this.form = {
+          ...this.form,
+          ...realData,
+          // 纭繚鏁板�肩被鍨嬪瓧娈垫纭浆鎹�
+          isspendremember: realData.isspendremember
+            ? parseInt(realData.isspendremember)
+            : 0,
+          isrestoreremains: realData.isrestoreremains
+            ? parseInt(realData.isrestoreremains)
+            : 0
+        };
+
+        // 瑙f瀽闄勪欢淇℃伅
+        if (realData.rememberAnnex) {
+          this.parseAttachmentData(realData.rememberAnnex);
+        }
+      } catch (error) {
+        console.error("鑾峰彇姝讳骸鍒ゅ畾璇︽儏澶辫触:", error);
+        this.$message.error("鏁版嵁鍔犺浇澶辫触");
+      }
+    },
+    // 瑙f瀽闄勪欢鏁版嵁
+    parseAttachmentData(attachmentJson) {
+      try {
+        if (attachmentJson) {
+          const attachments = JSON.parse(attachmentJson);
+          if (Array.isArray(attachments)) {
+            this.attachmentList = attachments;
+          }
+        }
+      } catch (error) {
+        console.error("瑙f瀽闄勪欢鏁版嵁澶辫触:", error);
+      }
+    },
+    // 鏋勫缓闄勪欢JSON鏁版嵁
+    buildAttachmentJson() {
+      return JSON.stringify(this.attachmentList);
+    },
+    // 鑾峰彇鐘舵�佹爣绛炬牱寮�
+    getStatusTag(status) {
+      const statusMap = {
+        "0": "warning", // 缁存姢涓�
+        "1": "success", // 宸插畬鎴�
+        "99": "danger" // 宸茬粓姝�
+      };
+      return statusMap[status] || "info";
+    },
+    // 鑾峰彇鐘舵�佹枃鏈�
+    getStatusText(status) {
+      const textMap = {
+        "0": "缁存姢涓�",
+        "1": "宸插畬鎴�",
+        "99": "宸茬粓姝�"
+      };
+      return textMap[status] || "鏈煡鐘舵��";
+    },
+    // 鑾峰彇闄勪欢鍒楄〃
+    getAttachmentList() {
+      this.attachmentLoading = true;
+      // 瀹為檯椤圭洰涓粠鎺ュ彛鑾峰彇闄勪欢鏁版嵁
+      setTimeout(() => {
+        this.attachmentLoading = false;
+      }, 500);
+    },
+    // 鏍规嵁绫诲瀷鑾峰彇闄勪欢
+    getAttachmentsByType(type) {
+      return this.attachmentList.filter(item => item.type === type);
+    },
+    // 鑾峰彇鏂囦欢绫诲瀷
+    getFileType(fileName) {
+      const ext = fileName
+        .split(".")
+        .pop()
+        .toLowerCase();
+      const typeMap = {
+        pdf: "PDF",
+        doc: "DOC",
+        docx: "DOCX",
+        xls: "XLS",
+        xlsx: "XLSX",
+        jpg: "JPG",
+        jpeg: "JPEG",
+        png: "PNG"
+      };
+      return typeMap[ext] || ext.toUpperCase();
+    },
+    // 鎵撳紑涓婁紶瀵硅瘽妗�
+    openUploadDialog(type = null) {
+      this.currentUploadType = type || this.activeAttachmentType;
+      this.tempFileList = [];
+      this.uploadDialogVisible = true;
+      this.$nextTick(() => {
+        if (this.$refs.uploadRef) {
+          this.$refs.uploadRef.clearFiles();
+        }
+      });
+    },
+    // 涓婁紶鍓嶆牎楠�
+    beforeUpload(file) {
+      const allowedTypes = [
+        "application/pdf",
+        "image/jpeg",
+        "image/png",
+        "application/msword",
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+        "application/vnd.ms-excel",
+        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+      ];
+
+      const maxSize = 10 * 1024 * 1024; // 10MB
+
+      const isTypeOk =
+        allowedTypes.includes(file.type) ||
+        file.name.endsWith(".pdf") ||
+        file.name.endsWith(".jpg") ||
+        file.name.endsWith(".jpeg") ||
+        file.name.endsWith(".png") ||
+        file.name.endsWith(".doc") ||
+        file.name.endsWith(".docx") ||
+        file.name.endsWith(".xls") ||
+        file.name.endsWith(".xlsx");
+
+      if (!isTypeOk) {
+        this.$message.error(
+          "鏂囦欢鏍煎紡涓嶆敮鎸侊紝璇蜂笂浼爌df銆乯pg銆乸ng銆乨oc銆乨ocx銆亁ls鎴杧lsx鏍煎紡鏂囦欢"
+        );
+        return false;
+      }
+
+      if (file.size > maxSize) {
+        this.$message.error("鏂囦欢澶у皬涓嶈兘瓒呰繃10MB");
+        return false;
+      }
+
+      return true;
+    },
+    // 鏂囦欢閫夋嫨鍙樺寲
+    handleFileChange(file, fileList) {
+      this.tempFileList = fileList;
+    },
+    // 绉婚櫎涓存椂鏂囦欢
+    handleTempRemove(file, fileList) {
+      this.tempFileList = fileList;
+    },
+    /** 涓婁紶鎴愬姛澶勭悊 */
+    handleUploadSuccess(response, file, fileList) {
+      if (response.code === 200) {
+        file.url = response.data || response.url;
+        this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+        for (const file of this.tempFileList) {
+          const newAttachment = {
+            id: Date.now() + Math.random(),
+            type: this.currentUploadType,
+            typeName: this.getCurrentTypeLabel,
+            fileName: file.name,
+            fileSize: file.size,
+            uploadTime: new Date().toISOString(),
+            uploader: "褰撳墠鐢ㄦ埛",
+            fileUrl: file.url
+          };
+
+          this.attachmentList.push(newAttachment);
+        }
+
+        // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
+        this.form.rememberAnnex = this.buildAttachmentJson();
+
+        this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+        this.uploadDialogVisible = false;
+        this.uploadLoading = false;
+        this.tempFileList = [];
+      } else {
+        this.$message.error(response.msg || "鏂囦欢涓婁紶澶辫触");
+      }
+    },
+    // 鎻愪氦涓婁紶
+    async submitUpload() {
+      if (this.tempFileList.length === 0) {
+        this.$message.warning("璇峰厛閫夋嫨瑕佷笂浼犵殑鏂囦欢");
+        return;
+      }
+      this.$refs.uploadRef.submit();
+      this.uploadLoading = true;
+
+      // try {
+      //   for (const file of this.tempFileList) {
+      //     const newAttachment = {
+      //       id: Date.now() + Math.random(),
+      //       type: this.currentUploadType,
+      //       typeName: this.getCurrentTypeLabel,
+      //       fileName: file.name,
+      //       fileSize: file.size,
+      //       uploadTime: new Date().toISOString(),
+      //       uploader: "褰撳墠鐢ㄦ埛",
+      //       fileUrl: URL.createObjectURL(file.raw)
+      //     };
+
+      //     this.attachmentList.push(newAttachment);
+      //   }
+
+      //   // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
+      //   this.form.rememberAnnex = this.buildAttachmentJson();
+
+      //   this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+      //   this.uploadDialogVisible = false;
+      //   this.tempFileList = [];
+      // } catch (error) {
+      //   this.$message.error("鏂囦欢涓婁紶澶辫触");
+      //   console.error("涓婁紶澶辫触:", error);
+      // } finally {
+      //   this.uploadLoading = false;
+      // }
+    },
+    // 鍒犻櫎闄勪欢
+    handleRemoveAttachment(attachment) {
+      this.$confirm("纭畾瑕佸垹闄よ繖涓瘎浼拌〃闄勪欢鍚楋紵", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      })
+        .then(() => {
+          const index = this.attachmentList.findIndex(
+            item => item.id === attachment.id
+          );
+          if (index !== -1) {
+            this.attachmentList.splice(index, 1);
+            // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
+            this.form.rememberAnnex = this.buildAttachmentJson();
+            this.$message.success("璇勪及琛ㄥ垹闄ゆ垚鍔�");
+          }
+        })
+        .catch(() => {});
+    },
+    // 棰勮闄勪欢
+    handlePreview(attachment) {
+      if (attachment.fileName.endsWith(".pdf")) {
+        window.open(attachment.fileUrl, "_blank");
+      } else if (attachment.fileName.match(/\.(jpg|jpeg|png)$/i)) {
+        this.$alert(
+          `<img src="${attachment.fileUrl}" style="max-width: 100%;" alt="${attachment.fileName}">`,
+          "鍥剧墖棰勮",
+          {
+            dangerouslyUseHTMLString: true,
+            customClass: "image-preview-dialog"
+          }
+        );
+      } else {
+        this.$message.info("璇ユ枃浠剁被鍨嬫殏涓嶆敮鎸佸湪绾块瑙堬紝璇蜂笅杞藉悗鏌ョ湅");
+      }
+    },
+    // 涓嬭浇闄勪欢
+    handleDownload(attachment) {
+      const link = document.createElement("a");
+      link.href = attachment.fileUrl;
+      link.download = attachment.fileName;
+      link.click();
+      this.$message.success(`寮�濮嬩笅杞�: ${attachment.fileName}`);
+    },
+    // 缂栬緫淇℃伅
+    handleEdit() {
+      this.isEdit = true;
+    },
+    // 淇濆瓨淇℃伅
+    async handleSave() {
+      this.$refs.form.validate(async valid => {
+        if (valid) {
+          this.saveLoading = true;
+
+          try {
+            // 鏋勫缓鎻愪氦鏁版嵁
+            const submitData = {
+              ...this.form,
+              infoid: this.infoid,
+              // 纭繚闄勪欢鏁版嵁鏈�鏂�
+              rememberannex: this.buildAttachmentJson()
+            };
+            let response = null;
+
+            if (submitData.id) {
+              response = await deathinfoedit(submitData);
+            } else {
+              response = await deathinfoadd(submitData);
+            }
+            // const response = await deathinfoedit(submitData);
+
+            if (response.code === 200) {
+              this.$message.success("淇濆瓨鎴愬姛");
+              this.isEdit = false;
+              if (!this.form.id) {
+                this.form.id = response.data;
+              }
+              if (this.$route.path.includes("/add")) {
+                this.$router.push("/case/deathJudgment");
+              }
+            } else {
+              this.$message.error(response.message || "淇濆瓨澶辫触");
+            }
+          } catch (error) {
+            console.error("淇濆瓨澶辫触:", error);
+            this.$message.error("淇濆瓨澶辫触");
+          } finally {
+            this.saveLoading = false;
+          }
+        }
+      });
+    },
+    // 鏂囦欢澶у皬鏍煎紡鍖�
+    formatFileSize(size) {
+      if (size === 0) return "0 B";
+      const k = 1024;
+      const sizes = ["B", "KB", "MB", "GB"];
+      const i = Math.floor(Math.log(size) / Math.log(k));
+      return parseFloat((size / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
+    },
+    // 鏃堕棿鏍煎紡鍖�
+    parseTime(time) {
+      if (!time) return "";
+      const date = new Date(time);
+      return `${date.getFullYear()}-${(date.getMonth() + 1)
+        .toString()
+        .padStart(2, "0")}-${date
+        .getDate()
+        .toString()
+        .padStart(2, "0")} ${date
+        .getHours()
+        .toString()
+        .padStart(2, "0")}:${date
+        .getMinutes()
+        .toString()
+        .padStart(2, "0")}`;
+    }
+  }
+};
+</script>
+
+<style scoped>
+.death-judgment-detail {
+  padding: 20px;
+}
+
+.detail-card {
+  margin-bottom: 20px;
+}
+
+.attachment-card {
+  margin-bottom: 20px;
+}
+
+.detail-title {
+  font-size: 16px;
+  font-weight: bold;
+}
+
+.attachment-upload-section {
+  padding: 10px;
+}
+
+.upload-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 15px;
+}
+
+.upload-title {
+  font-size: 14px;
+  font-weight: 600;
+  color: #303133;
+}
+
+.file-info {
+  display: flex;
+  align-items: center;
+}
+
+.empty-attachment {
+  text-align: center;
+  padding: 40px 0;
+  color: #909399;
+}
+
+/* 鍥剧墖棰勮瀵硅瘽妗嗘牱寮� */
+:deep(.image-preview-dialog) {
+  width: auto;
+  max-width: 90vw;
+}
+
+:deep(.image-preview-dialog .el-message-box__content) {
+  text-align: center;
+}
+</style>
diff --git a/src/views/business/decide/DecideInfo.vue b/src/views/business/decide/DecideInfo.vue
index 239e5f9..ee6b80a 100644
--- a/src/views/business/decide/DecideInfo.vue
+++ b/src/views/business/decide/DecideInfo.vue
@@ -1,45 +1,36 @@
 <template>
   <div class="death-judgment-detail">
     <case-basic-info :case-id="caseId" :show-attachment="true" />
-    <el-card class="detail-card">
-      <!-- 鍩虹淇℃伅 -->
+<!-- 鍏叡淇℃伅妯″潡锛堢嫭绔嬫樉绀猴級 -->
+
+    <!-- 鍒ゅ畾绫诲瀷鏍囩椤� -->
+    <el-card class="type-card">
+      <el-tabs
+        v-model="activeJudgmentType"
+        type="card"
+        @tab-click="handleTabChange"
+      >
+        <el-tab-pane label="鑴戞浜″垽瀹�" name="brain">
+          <span slot="label">
+            <i class="el-icon-s-promotion" style="margin-right: 5px;"></i>
+            鑴戞浜″垽瀹�
+          </span>
+        </el-tab-pane>
+        <el-tab-pane label="蹇冩浜″垽瀹�" name="heart">
+          <span slot="label">
+            <i class="el-icon-help" style="margin-right: 5px;"></i>
+            蹇冩浜″垽瀹�
+          </span>
+        </el-tab-pane>
+      </el-tabs>
+    </el-card>
+<el-card class="detail-card common-info-card">
       <div slot="header" class="clearfix">
-        <span class="detail-title">姝讳骸鍒ゅ畾鍩烘湰淇℃伅</span>
-        <el-button
-          v-if="isEdit"
-          type="success"
-          style="float: right"
-          @click="handleSave"
-          :loading="saveLoading"
-        >
-          淇濆瓨淇℃伅
-        </el-button>
-        <el-button
-          v-else
-          type="primary"
-          style="float: right"
-          @click="handleEdit"
-        >
-          缂栬緫淇℃伅
-        </el-button>
+        <span class="detail-title">鍏叡淇℃伅</span>
       </div>
 
-      <el-form :model="form" ref="form" :rules="rules" label-width="120px">
-        <el-row :gutter="20">
-          <el-col :span="8">
-            <el-form-item label="姝讳骸鍘熷洜" prop="deathreason">
-              <el-input v-model="form.deathreason" :readonly="!isEdit" />
-              <!-- <el-select
-                v-model="form.deathreason"
-                :disabled="!isEdit"
-                style="width: 100%"
-              >
-                <el-option label="鑴戞浜�" value="brain_death" />
-                <el-option label="蹇冩浜�" value="heart_death" />
-                <el-option label="鍏朵粬" value="other" />
-              </el-select> -->
-            </el-form-item>
-          </el-col>
+      <el-form :model="form" label-width="120px">
+        <el-row>
           <el-col :span="8">
             <el-form-item label="璐熻矗浜�" prop="responsibleusername">
               <el-input
@@ -48,39 +39,7 @@
               />
             </el-form-item>
           </el-col>
-          <!-- <el-col :span="8">
-            <el-form-item label="璁板綍鐘舵��" prop="recordstate">
-              <el-tag :type="getStatusTag(form.recordstate)">
-                {{ getStatusText(form.recordstate) }}
-              </el-tag>
-            </el-form-item>
-          </el-col> -->
         </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="8">
-            <el-form-item label="姝讳骸鏃堕棿" prop="deathtime">
-              <el-date-picker
-                v-model="form.deathtime"
-                type="datetime"
-                value-format="yyyy-MM-dd HH:mm:ss"
-                style="width: 100%"
-                :disabled="!isEdit"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="deathjudgedocto">
-              <el-input v-model="form.deathjudgedocto" :readonly="!isEdit" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="鍒ゅ畾鍖荤敓浜�" prop="deathjudgedoctt">
-              <el-input v-model="form.deathjudgedoctt" :readonly="!isEdit" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-
         <el-row :gutter="20">
           <el-col :span="8">
             <el-form-item label="鍣ㄥ畼鑾峰彇鏈烘瀯" prop="gainhospitalname">
@@ -112,148 +71,370 @@
             </el-form-item>
           </el-col>
         </el-row>
-
-        <el-form-item label="姝讳骸鍒ゅ畾璇存槑" prop="remark">
-          <el-input
-            type="textarea"
-            :rows="3"
-            v-model="form.remark"
-            :readonly="!isEdit"
-            placeholder="璇︾粏璁板綍姝讳骸鍒ゅ畾杩囩▼鍜屼緷鎹�"
-          />
-        </el-form-item>
       </el-form>
     </el-card>
-
-    <!-- 璇勪及琛ㄩ檮浠� -->
-    <el-card class="attachment-card">
+    <!-- 鑴戞浜″垽瀹氭ā鍧� -->
+    <el-card v-if="activeJudgmentType === 'brain'" class="detail-card">
       <div slot="header" class="clearfix">
-        <span class="detail-title">姝讳骸鍒ゅ畾璇勪及琛ㄩ檮浠�</span>
-        <!-- <el-button
+        <span class="detail-title">鑴戞浜″垽瀹氫俊鎭�</span>
+        <el-button
           v-if="isEdit"
-          type="primary"
-          size="mini"
-          @click="openUploadDialog"
-          :loading="uploadLoading"
+          style="float: right; margin-left: 10px;"
+          type="success"
+          @click="handleSave"
+          :loading="saveLoading"
         >
-          涓婁紶闄勪欢
-        </el-button> -->
+          淇濆瓨淇℃伅
+        </el-button>
+        <el-button
+          v-else
+          style="float: right; margin-left: 10px;"
+          type="primary"
+          @click="handleEdit"
+        >
+          缂栬緫淇℃伅
+        </el-button>
       </div>
 
-      <!-- 闄勪欢绫诲瀷閫夐」鍗� -->
-      <el-tabs v-model="activeAttachmentType" type="card">
-        <el-tab-pane
-          v-for="type in attachmentTypes"
-          :key="type.value"
-          :label="type.label"
-          :name="type.value"
-        >
-          <div class="attachment-upload-section">
-            <div class="upload-header">
-              <span class="upload-title">{{ type.label }}</span>
-              <el-tooltip content="鐐瑰嚮涓婁紶璇ョ被鍨嬭瘎浼拌〃" placement="top">
-                <el-button
-                  size="mini"
-                  type="primary"
-                  icon="el-icon-plus"
-                  @click="openUploadDialog(type.value)"
-                  :disabled="!isEdit"
-                >
-                  娣诲姞璇勪及琛�
-                </el-button>
-              </el-tooltip>
+      <el-form :model="form" ref="brainForm" :rules="rules" label-width="120px">
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="姝讳骸鍘熷洜" prop="deathreason">
+              <el-input v-model="form.deathreason" :readonly="!isEdit" />
+            </el-form-item>
+          </el-col>
+
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="姝讳骸鏃堕棿" prop="deathtime">
+              <el-date-picker
+                v-model="form.deathtime"
+                type="datetime"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                style="width: 100%"
+                :disabled="!isEdit"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="deathjudgedocto">
+              <el-input v-model="form.deathjudgedocto" :readonly="!isEdit" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鍒ゅ畾鍖荤敓浜�" prop="deathjudgedoctt">
+              <el-input v-model="form.deathjudgedoctt" :readonly="!isEdit" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+
+      <!-- 鑴戞浜¤瘎浼拌〃闄勪欢 -->
+      <div class="attachment-section">
+        <div class="attachment-header">
+          <h3>鑴戞浜″垽瀹氳瘎浼拌〃闄勪欢</h3>
+        </div>
+
+        <!-- 闄勪欢绫诲瀷閫夐」鍗� -->
+        <el-tabs v-model="activeAttachmentType" type="card">
+          <el-tab-pane
+            v-for="type in brainDeathAttachmentTypes"
+            :key="type.value"
+            :label="type.label"
+            :name="type.value"
+          >
+            <div class="attachment-upload-section">
+              <div class="upload-header">
+                <span class="upload-title">{{ type.label }}</span>
+                <el-tooltip content="鐐瑰嚮涓婁紶璇ョ被鍨嬭瘎浼拌〃" placement="top">
+                  <el-button
+                    size="mini"
+                    type="primary"
+                    icon="el-icon-plus"
+                    @click="openUploadDialog(type.value)"
+                    :disabled="!isEdit"
+                  >
+                    娣诲姞璇勪及琛�
+                  </el-button>
+                </el-tooltip>
+              </div>
+
+              <!-- 闄勪欢鍒楄〃 -->
+              <el-table
+                :data="getAttachmentsByType(type.value)"
+                v-loading="attachmentLoading"
+                style="width: 100%; margin-top: 15px;"
+              >
+                <el-table-column label="鏂囦欢鍚嶇О" min-width="200">
+                  <template slot-scope="scope">
+                    <div class="file-info">
+                      <i
+                        class="el-icon-document"
+                        style="margin-right: 8px; color: #409EFF;"
+                      ></i>
+                      <span>{{ scope.row.fileName }}</span>
+                    </div>
+                  </template>
+                </el-table-column>
+
+                <el-table-column label="鏂囦欢绫诲瀷" width="100" align="center">
+                  <template slot-scope="scope">
+                    <el-tag size="small">{{
+                      getFileType(scope.row.fileName)
+                    }}</el-tag>
+                  </template>
+                </el-table-column>
+
+                <el-table-column label="鏂囦欢澶у皬" width="100" align="center">
+                  <template slot-scope="scope">
+                    <span>{{ formatFileSize(scope.row.fileSize) }}</span>
+                  </template>
+                </el-table-column>
+
+                <el-table-column label="涓婁紶鏃堕棿" width="160" align="center">
+                  <template slot-scope="scope">
+                    <span>{{ parseTime(scope.row.uploadTime) }}</span>
+                  </template>
+                </el-table-column>
+
+                <el-table-column label="涓婁紶浜�" width="100" align="center">
+                  <template slot-scope="scope">
+                    <span>{{ scope.row.uploader }}</span>
+                  </template>
+                </el-table-column>
+
+                <el-table-column label="鎿嶄綔" width="180" align="center">
+                  <template slot-scope="scope">
+                    <el-button
+                      size="mini"
+                      type="text"
+                      icon="el-icon-view"
+                      @click="handlePreview(scope.row)"
+                      >棰勮</el-button
+                    >
+                    <el-button
+                      size="mini"
+                      type="text"
+                      icon="el-icon-download"
+                      @click="handleDownload(scope.row)"
+                      >涓嬭浇</el-button
+                    >
+                    <el-button
+                      v-if="isEdit"
+                      size="mini"
+                      type="text"
+                      icon="el-icon-delete"
+                      style="color: #F56C6C;"
+                      @click="handleRemoveAttachment(scope.row)"
+                      >鍒犻櫎</el-button
+                    >
+                  </template>
+                </el-table-column>
+              </el-table>
+
+              <div
+                v-if="getAttachmentsByType(type.value).length === 0"
+                class="empty-attachment"
+              >
+                <el-empty
+                  description="鏆傛棤璇勪及琛ㄩ檮浠�"
+                  :image-size="80"
+                ></el-empty>
+              </div>
             </div>
-
-            <!-- 闄勪欢鍒楄〃 -->
-            <el-table
-              :data="getAttachmentsByType(type.value)"
-              v-loading="attachmentLoading"
-              style="width: 100%; margin-top: 15px;"
-            >
-              <el-table-column label="鏂囦欢鍚嶇О" min-width="200">
-                <template slot-scope="scope">
-                  <div class="file-info">
-                    <i
-                      class="el-icon-document"
-                      style="margin-right: 8px; color: #409EFF;"
-                    ></i>
-                    <span>{{ scope.row.fileName }}</span>
-                  </div>
-                </template>
-              </el-table-column>
-
-              <el-table-column label="鏂囦欢绫诲瀷" width="100" align="center">
-                <template slot-scope="scope">
-                  <el-tag size="small">{{
-                    getFileType(scope.row.fileName)
-                  }}</el-tag>
-                </template>
-              </el-table-column>
-
-              <el-table-column label="鏂囦欢澶у皬" width="100" align="center">
-                <template slot-scope="scope">
-                  <span>{{ formatFileSize(scope.row.fileSize) }}</span>
-                </template>
-              </el-table-column>
-
-              <el-table-column label="涓婁紶鏃堕棿" width="160" align="center">
-                <template slot-scope="scope">
-                  <span>{{ parseTime(scope.row.uploadTime) }}</span>
-                </template>
-              </el-table-column>
-
-              <el-table-column label="涓婁紶浜�" width="100" align="center">
-                <template slot-scope="scope">
-                  <span>{{ scope.row.uploader }}</span>
-                </template>
-              </el-table-column>
-
-              <el-table-column label="鎿嶄綔" width="180" align="center">
-                <template slot-scope="scope">
-                  <el-button
-                    size="mini"
-                    type="text"
-                    icon="el-icon-view"
-                    @click="handlePreview(scope.row)"
-                    >棰勮</el-button
-                  >
-                  <el-button
-                    size="mini"
-                    type="text"
-                    icon="el-icon-download"
-                    @click="handleDownload(scope.row)"
-                    >涓嬭浇</el-button
-                  >
-                  <el-button
-                    v-if="isEdit"
-                    size="mini"
-                    type="text"
-                    icon="el-icon-delete"
-                    style="color: #F56C6C;"
-                    @click="handleRemoveAttachment(scope.row)"
-                    >鍒犻櫎</el-button
-                  >
-                </template>
-              </el-table-column>
-            </el-table>
-
-            <div
-              v-if="getAttachmentsByType(type.value).length === 0"
-              class="empty-attachment"
-            >
-              <el-empty
-                description="鏆傛棤璇勪及琛ㄩ檮浠�"
-                :image-size="80"
-              ></el-empty>
-            </div>
-          </div>
-        </el-tab-pane>
-      </el-tabs>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
     </el-card>
 
-    <!-- 涓婁紶瀵硅瘽妗� -->
+    <!-- 蹇冩浜″垽瀹氭ā鍧� -->
+    <el-card v-else class="detail-card">
+      <div slot="header" class="clearfix">
+        <span class="detail-title">蹇冩浜″垽瀹氫俊鎭�</span>
+        <el-button
+          v-if="isEdit"
+          style="float: right; margin-left: 10px;"
+          type="success"
+          @click="handleSave"
+          :loading="saveLoading"
+        >
+          淇濆瓨淇℃伅
+        </el-button>
+        <el-button
+          v-else
+          style="float: right; margin-left: 10px;"
+          type="primary"
+          @click="handleEdit"
+        >
+          缂栬緫淇℃伅
+        </el-button>
+      </div>
+
+      <el-form :model="form" ref="heartForm" :rules="rules" label-width="120px">
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="蹇冩浜″師鍥�" prop="heartdeathreason">
+              <el-input v-model="form.heartdeathreason" :readonly="!isEdit" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="蹇冩浜℃椂闂�" prop="heartdeathtime">
+              <el-date-picker
+                v-model="form.heartdeathtime"
+                type="datetime"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                style="width: 100%"
+                :disabled="!isEdit"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="heartdeathjudgedocto">
+              <el-input
+                v-model="form.heartdeathjudgedocto"
+                :readonly="!isEdit"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鍒ゅ畾鍖荤敓浜�" prop="heartdeathjudgedoctt">
+              <el-input
+                v-model="form.heartdeathjudgedoctt"
+                :readonly="!isEdit"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+
+      <!-- 蹇冩浜¤瘎浼拌〃闄勪欢 -->
+      <div class="attachment-section">
+        <div class="attachment-header">
+          <h3>蹇冩浜″垽瀹氳瘎浼拌〃闄勪欢</h3>
+        </div>
+
+        <!-- 蹇冩浜¢檮浠剁被鍨嬮�夐」鍗� -->
+        <el-tabs v-model="activeHeartDeathAttachmentType" type="card">
+          <el-tab-pane
+            v-for="type in heartDeathAttachmentTypes"
+            :key="type.value"
+            :label="type.label"
+            :name="type.value"
+          >
+            <div class="attachment-upload-section">
+              <div class="upload-header">
+                <span class="upload-title">{{ type.label }}</span>
+                <el-tooltip content="鐐瑰嚮涓婁紶璇ョ被鍨嬭瘎浼拌〃" placement="top">
+                  <el-button
+                    size="mini"
+                    type="primary"
+                    icon="el-icon-plus"
+                    @click="openHeartDeathUploadDialog(type.value)"
+                    :disabled="!isEdit"
+                  >
+                    娣诲姞璇勪及琛�
+                  </el-button>
+                </el-tooltip>
+              </div>
+
+              <!-- 蹇冩浜¢檮浠跺垪琛� -->
+              <el-table
+                :data="getHeartDeathAttachmentsByType(type.value)"
+                v-loading="attachmentLoading"
+                style="width: 100%; margin-top: 15px;"
+              >
+                <el-table-column label="鏂囦欢鍚嶇О" min-width="200">
+                  <template slot-scope="scope">
+                    <div class="file-info">
+                      <i
+                        class="el-icon-document"
+                        style="margin-right: 8px; color: #409EFF;"
+                      ></i>
+                      <span>{{ scope.row.fileName }}</span>
+                    </div>
+                  </template>
+                </el-table-column>
+
+                <el-table-column label="鏂囦欢绫诲瀷" width="100" align="center">
+                  <template slot-scope="scope">
+                    <el-tag size="small">{{
+                      getFileType(scope.row.fileName)
+                    }}</el-tag>
+                  </template>
+                </el-table-column>
+
+                <el-table-column label="鏂囦欢澶у皬" width="100" align="center">
+                  <template slot-scope="scope">
+                    <span>{{ formatFileSize(scope.row.fileSize) }}</span>
+                  </template>
+                </el-table-column>
+
+                <el-table-column label="涓婁紶鏃堕棿" width="160" align="center">
+                  <template slot-scope="scope">
+                    <span>{{ parseTime(scope.row.uploadTime) }}</span>
+                  </template>
+                </el-table-column>
+
+                <el-table-column label="涓婁紶浜�" width="100" align="center">
+                  <template slot-scope="scope">
+                    <span>{{ scope.row.uploader }}</span>
+                  </template>
+                </el-table-column>
+
+                <el-table-column label="鎿嶄綔" width="180" align="center">
+                  <template slot-scope="scope">
+                    <el-button
+                      size="mini"
+                      type="text"
+                      icon="el-icon-view"
+                      @click="handlePreview(scope.row)"
+                      >棰勮</el-button
+                    >
+                    <el-button
+                      size="mini"
+                      type="text"
+                      icon="el-icon-download"
+                      @click="handleDownload(scope.row)"
+                      >涓嬭浇</el-button
+                    >
+                    <el-button
+                      v-if="isEdit"
+                      size="mini"
+                      type="text"
+                      icon="el-icon-delete"
+                      style="color: #F56C6C;"
+                      @click="handleRemoveHeartDeathAttachment(scope.row)"
+                      >鍒犻櫎</el-button
+                    >
+                  </template>
+                </el-table-column>
+              </el-table>
+
+              <div
+                v-if="getHeartDeathAttachmentsByType(type.value).length === 0"
+                class="empty-attachment"
+              >
+                <el-empty
+                  description="鏆傛棤璇勪及琛ㄩ檮浠�"
+                  :image-size="80"
+                ></el-empty>
+              </div>
+            </div>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+    </el-card>
+
+
+
+    <!-- 涓婁紶瀵硅瘽妗嗭紙鑴戞浜★級 -->
     <el-dialog
-      :title="`涓婁紶${getCurrentTypeLabel}璇勪及琛╜"
+      :title="`涓婁紶${getCurrentBrainDeathTypeLabel}璇勪及琛╜"
       :visible.sync="uploadDialogVisible"
       width="500px"
       :close-on-click-modal="false"
@@ -293,6 +474,51 @@
         </el-button>
       </div>
     </el-dialog>
+
+    <!-- 涓婁紶瀵硅瘽妗嗭紙蹇冩浜★級 -->
+    <el-dialog
+      :title="`涓婁紶${getCurrentHeartDeathTypeLabel}璇勪及琛╜"
+      :visible.sync="heartDeathUploadDialogVisible"
+      width="500px"
+      :close-on-click-modal="false"
+    >
+      <el-upload
+        ref="heartDeathUploadRef"
+        class="upload-demo"
+        drag
+        :action="uploadAction"
+        :headers="headers"
+        multiple
+        :file-list="tempHeartDeathFileList"
+        :before-upload="beforeUpload"
+        :on-change="handleHeartDeathFileChange"
+        :on-remove="handleHeartDeathTempRemove"
+        :on-success="handleHeartDeathUploadSuccess"
+        :auto-upload="false"
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          灏嗚瘎浼拌〃鏂囦欢鎷栧埌姝ゅ锛屾垨<em>鐐瑰嚮涓婁紶</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          鏀寔涓婁紶pdf銆乯pg銆乸ng銆乨oc銆乨ocx銆亁ls銆亁lsx鏍煎紡鏂囦欢锛屽崟涓枃浠朵笉瓒呰繃10MB
+        </div>
+      </el-upload>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="heartDeathUploadDialogVisible = false"
+          >鍙栨秷</el-button
+        >
+        <el-button
+          type="primary"
+          @click="submitHeartDeathUpload"
+          :loading="heartDeathUploadLoading"
+          :disabled="tempHeartDeathFileList.length === 0"
+        >
+          纭涓婁紶
+        </el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -312,11 +538,12 @@
   data() {
     return {
       caseId: null,
-      // 鏄惁缂栬緫妯″紡
       isEdit: false,
-      // 淇濆瓨鍔犺浇鐘舵��
       saveLoading: false,
       infoid: undefined,
+
+      // 鍒ゅ畾绫诲瀷鏍囩
+      activeJudgmentType: "brain", // 榛樿鏄剧ず鑴戞浜�
 
       // 琛ㄥ崟鏁版嵁
       form: {
@@ -327,19 +554,28 @@
         sex: "",
         age: "",
         diagnosisname: "",
+        // 鑴戞浜$浉鍏冲瓧娈�
         deathreason: "",
         deathtime: "",
         deathjudgedocto: "",
         deathjudgedoctt: "",
+        // 蹇冩浜$浉鍏冲瓧娈�
+        heartdeathtime: "",
+        heartdeathreason: "",
+        heartdeathjudgedocto: "",
+        heartdeathjudgedoctt: "",
+        heartDeathRemark: "",
+        // 鍏叡瀛楁
         gainhospitalno: "",
         gainhospitalname: "",
         isspendremember: 0,
         isrestoreremains: 0,
         rememberAnnex: "",
+        heartdeathjudgeannex: "", // 鏂板蹇冩浜¢檮浠跺瓧娈�
         responsibleuserid: "",
         responsibleusername: "",
         recordstate: "0",
-        judgmentDescription: ""
+        remark: ""
       },
       // 琛ㄥ崟楠岃瘉瑙勫垯
       rules: {
@@ -354,38 +590,67 @@
         ],
         deathjudgedocto: [
           { required: true, message: "鍒ゅ畾鍖荤敓涓�涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        heartdeathreason: [
+          { required: false, message: "蹇冩浜″師鍥犱笉鑳戒负绌�", trigger: "blur" }
+        ],
+        heartdeathtime: [
+          { required: false, message: "蹇冩浜℃椂闂翠笉鑳戒负绌�", trigger: "change" }
+        ],
+        heartdeathjudgedocto: [
+          {
+            required: false,
+            message: "蹇冩浜″垽瀹氬尰鐢熶竴涓嶈兘涓虹┖",
+            trigger: "blur"
+          }
         ]
       },
       // 闄勪欢鐩稿叧鏁版嵁
       activeAttachmentType: "1",
+      activeHeartDeathAttachmentType: "heart_1", // 蹇冩浜¢檮浠剁被鍨�
       attachmentLoading: false,
       uploadDialogVisible: false,
+      heartDeathUploadDialogVisible: false, // 蹇冩浜′笂浼犲璇濇
       uploadLoading: false,
+      heartDeathUploadLoading: false, // 蹇冩浜′笂浼犲姞杞界姸鎬�
       tempFileList: [],
+      tempHeartDeathFileList: [], // 蹇冩浜′复鏃舵枃浠跺垪琛�
       currentUploadType: "",
+      currentHeartDeathUploadType: "", // 褰撳墠蹇冩浜′笂浼犵被鍨�
       uploadAction: process.env.VUE_APP_BASE_API + "/common/upload",
       headers: {
         Authorization: "Bearer " + getToken()
       },
-      // 璇勪及琛ㄧ被鍨嬪畾涔�
-      attachmentTypes: [
+      // 鑴戞浜¤瘎浼拌〃绫诲瀷瀹氫箟
+      brainDeathAttachmentTypes: [
         { value: "1", label: "鑴戞浜″垽瀹氳〃" },
         { value: "2", label: "鑴戠數鍥捐瘎浼拌〃" },
         { value: "3", label: "鐭綔浼忔湡浣撴劅璇卞彂鐢典綅璇勪及琛�" },
         { value: "4", label: "缁忛澶氭櫘鍕掕秴澹拌瘎浼拌褰�" },
         { value: "5", label: "鍗仴濮旇剳鎹熶激璐ㄦ帶涓績 - 涓村簥缁煎悎璇勪及琛�" },
-        { value: "6", label: "UW璇勫垎琛�" },
-        { value: "7", label: "蹇冩浜″垽瀹氳〃" }
+        { value: "6", label: "UW璇勫垎琛�" }
+      ],
+      // 蹇冩浜¤瘎浼拌〃绫诲瀷瀹氫箟
+      heartDeathAttachmentTypes: [
+        { value: "heart_1", label: "蹇冩浜″垽瀹氳〃" },
+        { value: "heart_2", label: "蹇冪數鍥捐瘎浼拌〃" }
       ],
 
       // 闄勪欢鍒楄〃鏁版嵁
-      attachmentList: []
+      attachmentList: [], // 鑴戞浜¢檮浠�
+      heartDeathAttachmentList: [] // 蹇冩浜¢檮浠�
     };
   },
   computed: {
-    getCurrentTypeLabel() {
-      const type = this.attachmentTypes.find(
+    getCurrentBrainDeathTypeLabel() {
+      const type = this.brainDeathAttachmentTypes.find(
         t => t.value === this.currentUploadType
+      );
+      return type ? type.label : "";
+    },
+    getCurrentHeartDeathTypeLabel() {
+      const type = this.heartDeathAttachmentTypes.find(
+        t => t.value === this.currentHeartDeathUploadType
       );
       return type ? type.label : "";
     }
@@ -393,23 +658,29 @@
   created() {
     this.infoid = this.$route.query.infoid;
     this.caseId = this.infoid;
-    const id = this.$route.query.id;
-    this.isEdit = this.$route.query.isEdit;
-    this.getDetail(this.infoid);
+    this.isEdit = this.$route.query.isEdit === "true";
 
-    // if (id && !this.$route.path.includes("/add")) {
-    //   this.getDetail(id);
-    // } else if (this.$route.path.includes("/add")) {
-    //   this.generateDonorNo();
-    // }
+    // 浠庤矾鐢卞弬鏁拌幏鍙栭粯璁ゆ樉绀虹被鍨�
+    if (this.$route.query.judgmentType) {
+      this.activeJudgmentType = this.$route.query.judgmentType;
+    }
+
+    this.getDetail(this.infoid);
     this.getAttachmentList();
   },
   methods: {
+    // 鏍囩椤靛垏鎹�
+    handleTabChange(tab) {
+      this.activeJudgmentType = tab.name;
+      // 鍙互鍦ㄨ繖閲屾坊鍔犲叾浠栧垏鎹㈤�昏緫
+    },
+
     // 鐢熸垚鎹愮尞鑰呯紪鍙�
     generateDonorNo() {
       const timestamp = Date.now().toString();
       this.form.donorno = "DONOR" + timestamp.slice(-8);
     },
+
     // 鑾峰彇璇︽儏
     async getDetail(infoid) {
       try {
@@ -437,30 +708,47 @@
 
         // 瑙f瀽闄勪欢淇℃伅
         if (realData.rememberAnnex) {
-          this.parseAttachmentData(realData.rememberAnnex);
+          this.parseAttachmentData(realData.rememberAnnex, "brain");
+        }
+
+        // 瑙f瀽蹇冩浜¢檮浠朵俊鎭�
+        if (realData.heartdeathjudgeannex) {
+          this.parseAttachmentData(realData.heartdeathjudgeannex, "heart");
         }
       } catch (error) {
         console.error("鑾峰彇姝讳骸鍒ゅ畾璇︽儏澶辫触:", error);
         this.$message.error("鏁版嵁鍔犺浇澶辫触");
       }
     },
+
     // 瑙f瀽闄勪欢鏁版嵁
-    parseAttachmentData(attachmentJson) {
+    parseAttachmentData(attachmentJson, type = "brain") {
       try {
         if (attachmentJson) {
           const attachments = JSON.parse(attachmentJson);
           if (Array.isArray(attachments)) {
-            this.attachmentList = attachments;
+            if (type === "brain") {
+              this.attachmentList = attachments;
+            } else if (type === "heart") {
+              this.heartDeathAttachmentList = attachments;
+            }
           }
         }
       } catch (error) {
         console.error("瑙f瀽闄勪欢鏁版嵁澶辫触:", error);
       }
     },
-    // 鏋勫缓闄勪欢JSON鏁版嵁
-    buildAttachmentJson() {
+
+    // 鏋勫缓鑴戞浜¢檮浠禞SON鏁版嵁
+    buildBrainDeathAttachmentJson() {
       return JSON.stringify(this.attachmentList);
     },
+
+    // 鏋勫缓蹇冩浜¢檮浠禞SON鏁版嵁
+    buildHeartDeathAttachmentJson() {
+      return JSON.stringify(this.heartDeathAttachmentList);
+    },
+
     // 鑾峰彇鐘舵�佹爣绛炬牱寮�
     getStatusTag(status) {
       const statusMap = {
@@ -470,6 +758,7 @@
       };
       return statusMap[status] || "info";
     },
+
     // 鑾峰彇鐘舵�佹枃鏈�
     getStatusText(status) {
       const textMap = {
@@ -479,18 +768,25 @@
       };
       return textMap[status] || "鏈煡鐘舵��";
     },
+
     // 鑾峰彇闄勪欢鍒楄〃
     getAttachmentList() {
       this.attachmentLoading = true;
-      // 瀹為檯椤圭洰涓粠鎺ュ彛鑾峰彇闄勪欢鏁版嵁
       setTimeout(() => {
         this.attachmentLoading = false;
       }, 500);
     },
-    // 鏍规嵁绫诲瀷鑾峰彇闄勪欢
+
+    // 鏍规嵁绫诲瀷鑾峰彇鑴戞浜¢檮浠�
     getAttachmentsByType(type) {
       return this.attachmentList.filter(item => item.type === type);
     },
+
+    // 鏍规嵁绫诲瀷鑾峰彇蹇冩浜¢檮浠�
+    getHeartDeathAttachmentsByType(type) {
+      return this.heartDeathAttachmentList.filter(item => item.type === type);
+    },
+
     // 鑾峰彇鏂囦欢绫诲瀷
     getFileType(fileName) {
       const ext = fileName
@@ -509,7 +805,8 @@
       };
       return typeMap[ext] || ext.toUpperCase();
     },
-    // 鎵撳紑涓婁紶瀵硅瘽妗�
+
+    // 鎵撳紑鑴戞浜′笂浼犲璇濇
     openUploadDialog(type = null) {
       this.currentUploadType = type || this.activeAttachmentType;
       this.tempFileList = [];
@@ -520,6 +817,20 @@
         }
       });
     },
+
+    // 鎵撳紑蹇冩浜′笂浼犲璇濇
+    openHeartDeathUploadDialog(type = null) {
+      this.currentHeartDeathUploadType =
+        type || this.activeHeartDeathAttachmentType;
+      this.tempHeartDeathFileList = [];
+      this.heartDeathUploadDialogVisible = true;
+      this.$nextTick(() => {
+        if (this.$refs.heartDeathUploadRef) {
+          this.$refs.heartDeathUploadRef.clearFiles();
+        }
+      });
+    },
+
     // 涓婁紶鍓嶆牎楠�
     beforeUpload(file) {
       const allowedTypes = [
@@ -559,24 +870,38 @@
 
       return true;
     },
-    // 鏂囦欢閫夋嫨鍙樺寲
+
+    // 鑴戞浜℃枃浠堕�夋嫨鍙樺寲
     handleFileChange(file, fileList) {
       this.tempFileList = fileList;
     },
-    // 绉婚櫎涓存椂鏂囦欢
+
+    // 蹇冩浜℃枃浠堕�夋嫨鍙樺寲
+    handleHeartDeathFileChange(file, fileList) {
+      this.tempHeartDeathFileList = fileList;
+    },
+
+    // 绉婚櫎鑴戞浜′复鏃舵枃浠�
     handleTempRemove(file, fileList) {
       this.tempFileList = fileList;
     },
-    /** 涓婁紶鎴愬姛澶勭悊 */
+
+    // 绉婚櫎蹇冩浜′复鏃舵枃浠�
+    handleHeartDeathTempRemove(file, fileList) {
+      this.tempHeartDeathFileList = fileList;
+    },
+
+    // 鑴戞浜′笂浼犳垚鍔熷鐞�
     handleUploadSuccess(response, file, fileList) {
       if (response.code === 200) {
         file.url = response.data || response.url;
         this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+
         for (const file of this.tempFileList) {
           const newAttachment = {
             id: Date.now() + Math.random(),
             type: this.currentUploadType,
-            typeName: this.getCurrentTypeLabel,
+            typeName: this.getCurrentBrainDeathTypeLabel,
             fileName: file.name,
             fileSize: file.size,
             uploadTime: new Date().toISOString(),
@@ -587,8 +912,8 @@
           this.attachmentList.push(newAttachment);
         }
 
-        // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
-        this.form.rememberAnnex = this.buildAttachmentJson();
+        // 鏇存柊鑴戞浜¢檮浠禞SON鏁版嵁鍒拌〃鍗�
+        this.form.rememberAnnex = this.buildBrainDeathAttachmentJson();
 
         this.$message.success("鏂囦欢涓婁紶鎴愬姛");
         this.uploadDialogVisible = false;
@@ -598,45 +923,60 @@
         this.$message.error(response.msg || "鏂囦欢涓婁紶澶辫触");
       }
     },
-    // 鎻愪氦涓婁紶
-    async submitUpload() {
+
+    // 蹇冩浜′笂浼犳垚鍔熷鐞�
+    handleHeartDeathUploadSuccess(response, file, fileList) {
+      if (response.code === 200) {
+        file.url = response.data || response.url;
+
+        for (const file of this.tempHeartDeathFileList) {
+          const newAttachment = {
+            id: Date.now() + Math.random(),
+            type: this.currentHeartDeathUploadType,
+            typeName: this.getCurrentHeartDeathTypeLabel,
+            fileName: file.name,
+            fileSize: file.size,
+            uploadTime: new Date().toISOString(),
+            uploader: "褰撳墠鐢ㄦ埛",
+            fileUrl: file.url
+          };
+
+          this.heartDeathAttachmentList.push(newAttachment);
+        }
+
+        // 鏇存柊蹇冩浜¢檮浠禞SON鏁版嵁鍒拌〃鍗�
+        this.form.heartdeathjudgeannex = this.buildHeartDeathAttachmentJson();
+
+        this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+        this.heartDeathUploadDialogVisible = false;
+        this.heartDeathUploadLoading = false;
+        this.tempHeartDeathFileList = [];
+      } else {
+        this.$message.error(response.msg || "鏂囦欢涓婁紶澶辫触");
+      }
+    },
+
+    // 鎻愪氦鑴戞浜′笂浼�
+    submitUpload() {
       if (this.tempFileList.length === 0) {
         this.$message.warning("璇峰厛閫夋嫨瑕佷笂浼犵殑鏂囦欢");
         return;
       }
       this.$refs.uploadRef.submit();
       this.uploadLoading = true;
-
-      // try {
-      //   for (const file of this.tempFileList) {
-      //     const newAttachment = {
-      //       id: Date.now() + Math.random(),
-      //       type: this.currentUploadType,
-      //       typeName: this.getCurrentTypeLabel,
-      //       fileName: file.name,
-      //       fileSize: file.size,
-      //       uploadTime: new Date().toISOString(),
-      //       uploader: "褰撳墠鐢ㄦ埛",
-      //       fileUrl: URL.createObjectURL(file.raw)
-      //     };
-
-      //     this.attachmentList.push(newAttachment);
-      //   }
-
-      //   // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
-      //   this.form.rememberAnnex = this.buildAttachmentJson();
-
-      //   this.$message.success("鏂囦欢涓婁紶鎴愬姛");
-      //   this.uploadDialogVisible = false;
-      //   this.tempFileList = [];
-      // } catch (error) {
-      //   this.$message.error("鏂囦欢涓婁紶澶辫触");
-      //   console.error("涓婁紶澶辫触:", error);
-      // } finally {
-      //   this.uploadLoading = false;
-      // }
     },
-    // 鍒犻櫎闄勪欢
+
+    // 鎻愪氦蹇冩浜′笂浼�
+    submitHeartDeathUpload() {
+      if (this.tempHeartDeathFileList.length === 0) {
+        this.$message.warning("璇峰厛閫夋嫨瑕佷笂浼犵殑鏂囦欢");
+        return;
+      }
+      this.$refs.heartDeathUploadRef.submit();
+      this.heartDeathUploadLoading = true;
+    },
+
+    // 鍒犻櫎鑴戞浜¢檮浠�
     handleRemoveAttachment(attachment) {
       this.$confirm("纭畾瑕佸垹闄よ繖涓瘎浼拌〃闄勪欢鍚楋紵", "鎻愮ず", {
         confirmButtonText: "纭畾",
@@ -649,13 +989,33 @@
           );
           if (index !== -1) {
             this.attachmentList.splice(index, 1);
-            // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
-            this.form.rememberAnnex = this.buildAttachmentJson();
+            this.form.rememberAnnex = this.buildBrainDeathAttachmentJson();
             this.$message.success("璇勪及琛ㄥ垹闄ゆ垚鍔�");
           }
         })
         .catch(() => {});
     },
+
+    // 鍒犻櫎蹇冩浜¢檮浠�
+    handleRemoveHeartDeathAttachment(attachment) {
+      this.$confirm("纭畾瑕佸垹闄よ繖涓瘎浼拌〃闄勪欢鍚楋紵", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      })
+        .then(() => {
+          const index = this.heartDeathAttachmentList.findIndex(
+            item => item.id === attachment.id
+          );
+          if (index !== -1) {
+            this.heartDeathAttachmentList.splice(index, 1);
+            this.form.heartdeathjudgeannex = this.buildHeartDeathAttachmentJson();
+            this.$message.success("璇勪及琛ㄥ垹闄ゆ垚鍔�");
+          }
+        })
+        .catch(() => {});
+    },
+
     // 棰勮闄勪欢
     handlePreview(attachment) {
       if (attachment.fileName.endsWith(".pdf")) {
@@ -673,6 +1033,7 @@
         this.$message.info("璇ユ枃浠剁被鍨嬫殏涓嶆敮鎸佸湪绾块瑙堬紝璇蜂笅杞藉悗鏌ョ湅");
       }
     },
+
     // 涓嬭浇闄勪欢
     handleDownload(attachment) {
       const link = document.createElement("a");
@@ -681,13 +1042,19 @@
       link.click();
       this.$message.success(`寮�濮嬩笅杞�: ${attachment.fileName}`);
     },
+
     // 缂栬緫淇℃伅
     handleEdit() {
       this.isEdit = true;
     },
+
     // 淇濆瓨淇℃伅
     async handleSave() {
-      this.$refs.form.validate(async valid => {
+      // 鏍规嵁褰撳墠鏍囩閫夋嫨楠岃瘉瑙勫垯
+      let formRef =
+        this.activeJudgmentType === "brain" ? "brainForm" : "heartForm";
+
+      this.$refs[formRef].validate(async valid => {
         if (valid) {
           this.saveLoading = true;
 
@@ -697,7 +1064,8 @@
               ...this.form,
               infoid: this.infoid,
               // 纭繚闄勪欢鏁版嵁鏈�鏂�
-              rememberannex: this.buildAttachmentJson()
+              rememberAnnex: this.buildBrainDeathAttachmentJson(),
+              heartdeathjudgeannex: this.buildHeartDeathAttachmentJson()
             };
             let response = null;
 
@@ -706,7 +1074,6 @@
             } else {
               response = await deathinfoadd(submitData);
             }
-            // const response = await deathinfoedit(submitData);
 
             if (response.code === 200) {
               this.$message.success("淇濆瓨鎴愬姛");
@@ -729,6 +1096,7 @@
         }
       });
     },
+
     // 鏂囦欢澶у皬鏍煎紡鍖�
     formatFileSize(size) {
       if (size === 0) return "0 B";
@@ -737,6 +1105,7 @@
       const i = Math.floor(Math.log(size) / Math.log(k));
       return parseFloat((size / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
     },
+
     // 鏃堕棿鏍煎紡鍖�
     parseTime(time) {
       if (!time) return "";
@@ -763,17 +1132,60 @@
   padding: 20px;
 }
 
-.detail-card {
+.type-card {
   margin-bottom: 20px;
+  border: none;
+  box-shadow: none;
 }
 
-.attachment-card {
+.type-card >>> .el-tabs__item {
+  font-size: 16px;
+  font-weight: bold;
+  padding: 0 20px;
+  height: 50px;
+  line-height: 50px;
+}
+
+.type-card >>> .el-tabs__item.is-active {
+  color: #409eff;
+  border-bottom: 3px solid #409eff;
+}
+
+.detail-card {
   margin-bottom: 20px;
+  border: 1px solid #e6ebf5;
+  border-radius: 8px;
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+}
+
+.common-info-card {
+  border-top: 2px solid #67c23a;
+}
+
+.detail-card >>> .el-card__header {
+  background-color: #f5f7fa;
+  border-bottom: 1px solid #e6ebf5;
+  padding: 15px 20px;
 }
 
 .detail-title {
-  font-size: 16px;
+  font-size: 18px;
   font-weight: bold;
+  color: #303133;
+}
+
+.attachment-section {
+  margin-top: 20px;
+  padding-top: 20px;
+  border-top: 1px solid #e6ebf5;
+}
+
+.attachment-header h3 {
+  font-size: 16px;
+  color: #303133;
+  margin-bottom: 15px;
+  padding-bottom: 10px;
+  border-bottom: 1px solid #eee;
 }
 
 .attachment-upload-section {
@@ -785,6 +1197,7 @@
   justify-content: space-between;
   align-items: center;
   margin-bottom: 15px;
+  padding: 10px 0;
 }
 
 .upload-title {
@@ -802,6 +1215,9 @@
   text-align: center;
   padding: 40px 0;
   color: #909399;
+  border: 1px dashed #dcdfe6;
+  border-radius: 4px;
+  margin-top: 20px;
 }
 
 /* 鍥剧墖棰勮瀵硅瘽妗嗘牱寮� */
diff --git a/src/views/business/transfer/index.vue b/src/views/business/transfer/index.vue
index fa88fe4..bbf0b4d 100644
--- a/src/views/business/transfer/index.vue
+++ b/src/views/business/transfer/index.vue
@@ -149,12 +149,7 @@
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="搴忓彿" type="index" width="60" align="center" />
 
-      <el-table-column
-        label="缂栧彿"
-        align="center"
-        prop="caseNo"
-        width="140"
-      />
+      <el-table-column label="缂栧彿" align="center" prop="caseNo" width="140" />
       <el-table-column label="鎮h�呬俊鎭�" align="center" width="260">
         <template slot-scope="scope">
           <div class="donor-info">
@@ -430,7 +425,9 @@
       append-to-body
     >
       <div class="action-confirm">
-        <p>纭畾瑕亄{ actionText }}杞繍鍗� "{{ currentTransport.patName }}" 鍚楋紵</p>
+        <p>
+          纭畾瑕亄{ actionText }}杞繍鍗� "{{ currentTransport.patName }}" 鍚楋紵
+        </p>
       </div>
       <div slot="footer" class="dialog-footer">
         <el-button @click="actionOpen = false">鍙� 娑�</el-button>
@@ -447,7 +444,9 @@
   transportEdit,
   transportDel,
   transportInfo,
-  donateList
+  donateInfo,
+  donateList,
+  donateEdit
 } from "@/api/businessApi/index";
 import TransportDetail from "./transportDetail";
 import TransportEdit from "./TransportEdit";
@@ -811,8 +810,17 @@
 
         const response = await transportEdit(requestData);
 
-        if (response.code === 200) {
+        if (response.code == 200) {
           this.$modal.msgSuccess(`${this.actionText}杞繍鎴愬姛`);
+          if (requestData.transitStatus==3) {
+            const resappear = await donateInfo(requestData.reportId);
+            if (resappear.code) {
+              let obj = resappear.data;
+              obj.isDonate = 1;
+              await donateEdit(obj);
+              this.$modal.msgSuccess(`瀵瑰簲涓婃姤妗堜緥宸茶繘鍏ユ寮忔渚嬫祦绋媊);
+            }
+          }
           this.getList();
         } else {
           this.$modal.msgError(response.msg || `${this.actionText}杞繍澶辫触`);

--
Gitblit v1.9.3