From 631c8f37b449b09d19345b76400a39abdb7800f6 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期四, 15 一月 2026 15:48:42 +0800
Subject: [PATCH] api封装档案、上报、转运接入

---
 src/views/business/appear/caseDetail.vue |  595 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 387 insertions(+), 208 deletions(-)

diff --git a/src/views/business/appear/caseDetail.vue b/src/views/business/appear/caseDetail.vue
index 05826f7..2c9d4b5 100644
--- a/src/views/business/appear/caseDetail.vue
+++ b/src/views/business/appear/caseDetail.vue
@@ -1,117 +1,241 @@
 <template>
   <div class="case-detail">
-    <el-tabs v-model="activeTab">
-      <el-tab-pane label="鍩烘湰淇℃伅" name="basic">
-        <el-descriptions :column="2" border>
-          <el-descriptions-item label="鎹愮尞缂栧彿">{{ caseData.donorNo }}</el-descriptions-item>
-          <el-descriptions-item label="鎹愮尞鑰呭鍚�">{{ caseData.donorName }}</el-descriptions-item>
-          <el-descriptions-item label="鎬у埆">
-            <dict-tag :options="genderOptions" :value="caseData.gender"/>
-          </el-descriptions-item>
-          <el-descriptions-item label="骞撮緞">{{ caseData.age }}宀�</el-descriptions-item>
-          <el-descriptions-item label="琛�鍨�">
-            <dict-tag :options="bloodTypeOptions" :value="caseData.bloodType"/>
-          </el-descriptions-item>
-          <el-descriptions-item label="璇佷欢鍙风爜">{{ caseData.idCardNo }}</el-descriptions-item>
-          <el-descriptions-item label="姘戞棌">{{ caseData.nation }}</el-descriptions-item>
-          <el-descriptions-item label="鑱旂郴鐢佃瘽">{{ caseData.phone }}</el-descriptions-item>
-          <el-descriptions-item label="浣忓潃" :span="2">{{ caseData.address }}</el-descriptions-item>
-        </el-descriptions>
-      </el-tab-pane>
+    <!-- 鍩烘湰淇℃伅妯″潡 -->
+    <el-card class="detail-section">
+      <div slot="header" class="section-header">
+        <span class="section-title">鍩烘湰淇℃伅</span>
+      </div>
+      <el-descriptions :column="2" border>
+        <el-descriptions-item label="妗堜緥缂栧彿">{{
+          caseData.caseNo || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鎹愮尞鑰呭鍚�">{{
+          caseData.name || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鎬у埆">
+          <dict-tag
+            :options="dict.type.sys_user_sex"
+            :value="caseData.sex ? parseInt(caseData.sex) : ''"
+          />
+        </el-descriptions-item>
+        <el-descriptions-item label="骞撮緞">
+          {{ caseData.age || "-"
+          }}{{
+            caseData.ageunit ? `(${getAgeUnitText(caseData.ageunit)})` : ""
+          }}
+        </el-descriptions-item>
+        <el-descriptions-item label="琛�鍨�">
+          <dict-tag
+            :options="dict.type.sys_BloodType"
+            :value="caseData.bloodType"
+          />
+        </el-descriptions-item>
+        <el-descriptions-item label="Rh闃存��">
+          {{
+            caseData.rhYin === "1" ? "鏄�" : caseData.rhYin === "0" ? "鍚�" : "-"
+          }}
+        </el-descriptions-item>
+        <el-descriptions-item label="璇佷欢绫诲瀷">
+          {{ getIdCardTypeText(caseData.idcardtype) }}
+        </el-descriptions-item>
+        <el-descriptions-item label="璇佷欢鍙风爜">{{
+          caseData.idcardno || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="姘戞棌">{{
+          caseData.nation || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鍥界睄">{{
+          caseData.nationality || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="绫嶈疮">{{
+          caseData.nativeplace || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="瀛﹀巻">{{
+          caseData.education || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鑱屼笟">{{
+          caseData.occupation || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鍑虹敓鏃ユ湡">{{
+          formatDate(caseData.birthday)
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鑱旂郴鐢佃瘽">{{
+          caseData.phone || "-"
+        }}</el-descriptions-item>
+      </el-descriptions>
+    </el-card>
 
-      <el-tab-pane label="鍖荤枟淇℃伅" name="medical">
-        <el-descriptions :column="1" border>
-          <el-descriptions-item label="鐤剧梾璇婃柇">{{ caseData.diagnosis }}</el-descriptions-item>
-          <el-descriptions-item label="浣忛櫌鍙�">{{ caseData.inpatientNo }}</el-descriptions-item>
-          <el-descriptions-item label="鎵�鍦ㄧ瀹�">{{ caseData.departmentName }}</el-descriptions-item>
-          <el-descriptions-item label="涓绘不鍖荤敓">{{ caseData.doctorName }}</el-descriptions-item>
-          <el-descriptions-item label="浼犳煋鐥呮儏鍐�">{{ caseData.infectiousDisease || '鏃�' }}</el-descriptions-item>
-          <el-descriptions-item label="鍖荤枟璁板綍">{{ caseData.medicalRecord }}</el-descriptions-item>
-        </el-descriptions>
-      </el-tab-pane>
+    <!-- 鍦板潃淇℃伅妯″潡 -->
+    <el-card class="detail-section">
+      <div slot="header" class="section-header">
+        <span class="section-title">鍦板潃淇℃伅</span>
+      </div>
+      <el-descriptions :column="1" border>
+        <el-descriptions-item label="鎴风睄鍦板潃">
+          {{ getFullRegisterAddress() }}
+        </el-descriptions-item>
+        <el-descriptions-item label="鐜颁綇鍦板潃">
+          {{ getFullResidenceAddress() }}
+        </el-descriptions-item>
+      </el-descriptions>
+    </el-card>
 
-      <el-tab-pane label="鍖婚櫌淇℃伅" name="hospital">
-        <el-descriptions :column="2" border>
-          <el-descriptions-item label="鍖婚櫌鍚嶇О">{{ caseData.hospitalName }}</el-descriptions-item>
-          <el-descriptions-item label="鍖婚櫌绾у埆">{{ caseData.hospitalLevel }}</el-descriptions-item>
-          <el-descriptions-item label="鑱旂郴浜�">{{ caseData.contactPerson }}</el-descriptions-item>
-          <el-descriptions-item label="鑱旂郴鐢佃瘽">{{ caseData.contactPhone }}</el-descriptions-item>
-          <el-descriptions-item label="鍖婚櫌鍦板潃" :span="2">{{ caseData.hospitalAddress }}</el-descriptions-item>
-        </el-descriptions>
-      </el-tab-pane>
+    <!-- 鍖荤枟淇℃伅妯″潡 -->
+    <el-card class="detail-section">
+      <div slot="header" class="section-header">
+        <span class="section-title">鍖荤枟淇℃伅</span>
+      </div>
+      <el-descriptions :column="1" border>
+        <el-descriptions-item label="鐤剧梾璇婃柇鍚嶇О">{{
+          caseData.diagnosisname || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鐥呮儏姒傚喌">{{
+          caseData.illnessoverview || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鐥呬汉鐘跺喌">{{
+          caseData.patientstate || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="GCS璇勫垎">{{
+          caseData.gcsScore || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="浼犳煋鐥呮儏鍐�">{{
+          caseData.infectious || "鏃�"
+        }}</el-descriptions-item>
+        <el-descriptions-item
+          label="浼犳煋鐥呭叾浠栬鏄�"
+          v-if="caseData.infectiousOther"
+          >{{ caseData.infectiousOther }}</el-descriptions-item
+        >
+        <el-descriptions-item label="鏄惁闇�瑕佽浆杩�">
+          {{ caseData.isTransport === "2" ? "闇�瑕�" : "涓嶉渶瑕�" }}
+        </el-descriptions-item>
+      </el-descriptions>
+    </el-card>
 
-      <!-- 鏂板闄勪欢淇℃伅鏍囩椤� -->
-      <el-tab-pane label="闄勪欢淇℃伅" name="attachments">
-        <el-card class="attachment-card">
-          <div slot="header" class="clearfix">
-            <span>闄勪欢鍒楄〃</span>
-            <el-button
-              style="float: right; padding: 3px 0"
-              type="text"
-              @click="handleUpload"
+    <!-- 鍖婚櫌淇℃伅妯″潡 -->
+    <el-card class="detail-section">
+      <div slot="header" class="section-header">
+        <span class="section-title">鍖婚櫌淇℃伅</span>
+      </div>
+      <el-descriptions :column="2" border>
+        <el-descriptions-item label="娌荤枟鍖婚櫌鍚嶇О">{{
+          caseData.treatmenthospitalname || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="娌荤枟绉戝鍚嶇О">{{
+          caseData.treatmentdeptname || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="浣忛櫌鍙�">{{
+          caseData.inpatientno || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="閮ㄩ棬鍚嶇О">{{
+          caseData.deptName || "-"
+        }}</el-descriptions-item>
+      </el-descriptions>
+    </el-card>
+
+    <!-- 涓婃姤淇℃伅妯″潡 -->
+    <el-card class="detail-section">
+      <div slot="header" class="section-header">
+        <span class="section-title">涓婃姤淇℃伅</span>
+      </div>
+      <el-descriptions :column="2" border>
+        <el-descriptions-item label="鎶ュ憡鑰呭鍚�">{{
+          caseData.infoName || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鎶ュ憡鑰呯紪鍙�">{{
+          caseData.infoNo || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鎶ュ憡鑰呰仈绯荤數璇�">{{
+          caseData.reporterphone || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鍗忚皟鍛樺鍚�">{{
+          caseData.coordinatorName || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鍗忚皟鍛樼紪鍙�">{{
+          caseData.coordinatorNo || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="涓婃姤鐘舵��">
+          <el-tag :type="getStatusType(caseData.reportStatus)">
+            {{ getStatusText(caseData.reportStatus) }}
+          </el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="鎶ュ憡鏃堕棿">{{
+          formatDateTime(caseData.reporttime)
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鏄惁缁堟妗堜緥">
+          {{ caseData.terminationCase === "1" ? "宸茬粓姝�" : "杩涜涓�" }}
+        </el-descriptions-item>
+      </el-descriptions>
+    </el-card>
+
+    <!-- 闄勪欢淇℃伅妯″潡 -->
+    <el-card class="detail-section" v-if="attachmentList.length > 0">
+      <div slot="header" class="section-header">
+        <span class="section-title">闄勪欢淇℃伅</span>
+      </div>
+      <el-table :data="attachmentList" style="width: 100%">
+        <el-table-column label="鏂囦欢鍚�" width="300">
+          <template slot-scope="scope">
+            <i class="el-icon-document" style="margin-right: 8px;"></i>
+            <span>{{ scope.row.fileName }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="鏂囦欢绫诲瀷" width="120">
+          <template slot-scope="scope">
+            <el-tag size="small">{{ scope.row.fileType }}</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="澶у皬" width="100">
+          <template slot-scope="scope">
+            <span>{{ formatFileSize(scope.row.fileSize) }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="涓婁紶鏃堕棿" width="180">
+          <template slot-scope="scope">
+            <span>{{ scope.row.uploadTime }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔">
+          <template slot-scope="scope">
+            <el-button size="mini" @click="handlePreview(scope.row)"
+              >棰勮</el-button
             >
-              涓婁紶闄勪欢
-            </el-button>
-          </div>
+            <el-button
+              size="mini"
+              type="success"
+              @click="handleDownload(scope.row)"
+              >涓嬭浇</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-card>
 
-          <el-table :data="attachmentList" style="width: 100%">
-            <el-table-column label="鏂囦欢鍚�" width="300">
-              <template slot-scope="scope">
-                <i class="el-icon-document" style="margin-right: 8px;"></i>
-                <span>{{ scope.row.fileName }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="鏂囦欢绫诲瀷" width="120">
-              <template slot-scope="scope">
-                <el-tag size="small">{{ scope.row.fileType }}</el-tag>
-              </template>
-            </el-table-column>
-            <el-table-column label="澶у皬" width="100">
-              <template slot-scope="scope">
-                <span>{{ formatFileSize(scope.row.fileSize) }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="涓婁紶鏃堕棿" width="180">
-              <template slot-scope="scope">
-                <span>{{ scope.row.uploadTime }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="鎿嶄綔">
-              <template slot-scope="scope">
-                <el-button size="mini" @click="handlePreview(scope.row)"
-                  >棰勮</el-button
-                >
-                <el-button
-                  size="mini"
-                  type="success"
-                  @click="handleDownload(scope.row)"
-                  >涓嬭浇</el-button
-                >
-                <el-button
-                  size="mini"
-                  type="danger"
-                  @click="handleDelete(scope.row)"
-                  >鍒犻櫎</el-button
-                >
-              </template>
-            </el-table-column>
-          </el-table>
-        </el-card>
-      </el-tab-pane>
-
-      <el-tab-pane label="瀹℃壒淇℃伅" name="approval" v-if="caseData.status !== '0'">
-        <el-descriptions :column="1" border>
-          <el-descriptions-item label="瀹℃壒缁撴灉">
-            <el-tag :type="caseData.status | statusFilter">
-              {{ caseData.status | statusTextFilter }}
-            </el-tag>
-          </el-descriptions-item>
-          <el-descriptions-item label="瀹℃壒鏃堕棿">{{ caseData.approveTime }}</el-descriptions-item>
-          <el-descriptions-item label="瀹℃壒浜�">{{ caseData.approverName }}</el-descriptions-item>
-          <el-descriptions-item label="瀹℃壒鎰忚">{{ caseData.approveOpinion }}</el-descriptions-item>
-        </el-descriptions>
-      </el-tab-pane>
-    </el-tabs>
+    <!-- 瀹℃壒淇℃伅妯″潡锛堢姸鎬佷负宸插悓鎰忔垨宸查┏鍥炴椂鏄剧ず锛� -->
+    <el-card
+      class="detail-section"
+      v-if="caseData.reportStatus === '3' || caseData.reportStatus === '4'"
+    >
+      <div slot="header" class="section-header">
+        <span class="section-title">瀹℃壒淇℃伅</span>
+      </div>
+      <el-descriptions :column="1" border>
+        <el-descriptions-item label="瀹℃壒缁撴灉">
+          <el-tag :type="caseData.reportStatus === '3' ? 'success' : 'danger'">
+            {{ caseData.reportStatus === "3" ? "宸插悓鎰�" : "宸查┏鍥�" }}
+          </el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="瀹℃壒鏃堕棿">{{
+          formatDateTime(caseData.updateTime)
+        }}</el-descriptions-item>
+        <el-descriptions-item label="瀹℃壒浜�">{{
+          caseData.updateBy || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="瀹℃壒鎰忚">{{
+          caseData.remark || "鏃�"
+        }}</el-descriptions-item>
+      </el-descriptions>
+    </el-card>
 
     <!-- PDF棰勮寮圭獥 -->
     <el-dialog
@@ -229,7 +353,7 @@
       </div>
     </el-dialog>
 
-    <div class="detail-footer">
+    <div class="detail-footer" v-if="showtitle">
       <el-button @click="handleClose">鍏抽棴</el-button>
     </div>
   </div>
@@ -247,107 +371,198 @@
     caseData: {
       type: Object,
       default: () => ({})
+    },
+    showtitle: {
+      type: Boolean,
+      default: true
     }
   },
+  dicts: ["sys_user_sex", "sys_BloodType"],
   filters: {
     statusFilter(status) {
       const statusMap = {
-        '0': 'warning',
-        '1': 'success',
-        '2': 'danger'
+        "0": "warning",
+        "1": "success",
+        "2": "danger"
       };
       return statusMap[status];
     },
     statusTextFilter(status) {
       const statusMap = {
-        '0': '寰呭鎵�',
-        '1': '宸查�氳繃',
-        '2': '宸查┏鍥�'
+        "0": "寰呭鎵�",
+        "1": "宸查�氳繃",
+        "2": "宸查┏鍥�"
       };
       return statusMap[status];
     }
   },
   data() {
     return {
-      activeTab: 'basic',
-      genderOptions: [
-        { value: "0", label: "鐢�" },
-        { value: "1", label: "濂�" }
-      ],
-      bloodTypeOptions: [
-        { value: "A", label: "A鍨�" },
-        { value: "B", label: "B鍨�" },
-        { value: "O", label: "O鍨�" },
-        { value: "AB", label: "AB鍨�" }
-      ],
-
-      // 闄勪欢鐩稿叧鏁版嵁
-      attachmentList: [
-        {
-          id: 1,
-          fileName: "鎹愮尞鑰呰韩浠借瘉.jpg",
-          fileType: "jpg",
-          fileSize: 1024000,
-          uploadTime: "2024-12-19 10:30:00",
-          fileUrl: "https://img95.699pic.com/photo/40142/8262.jpg_wh860.jpg"
-        },
-        {
-          id: 2,
-          fileName: "鍖荤枟璇婃柇璇佹槑.pdf",
-          fileType: "pdf",
-          fileSize: 2048000,
-          uploadTime: "2024-12-19 11:20:00",
-          fileUrl:
-            "http://192.168.100.10:8080/profile/upload/2025/12/19/(鍚撮緳8.7)姣忔棩宸ヤ綔鎬荤粨1766131266142.pdf"
-        },
-        {
-          id: 3,
-          fileName: "妫�楠屾姤鍛婂崟.jpg",
-          fileType: "docx",
-          fileSize: 512000,
-          uploadTime: "2024-12-19 14:15:00",
-          fileUrl: "https://img95.699pic.com/photo/40019/3490.jpg_wh860.jpg"
-        }
-      ],
-
-      // PDF棰勮鐩稿叧鏁版嵁
+      // 棰勮鐩稿叧鏁版嵁锛堜繚鎸佸師鏈変唬鐮侊級
       pdfPreviewVisible: false,
+      imagePreviewVisible: false,
+      unsupportedPreviewVisible: false,
       pdfLoading: false,
       pdfUrl: "",
       currentPage: 1,
       pageCount: 0,
       scale: 100,
       pageRotate: 0,
-
-      // 鍥剧墖棰勮鐩稿叧
-      imagePreviewVisible: false,
-
-      // 涓嶆敮鎸侀瑙堢浉鍏�
-      unsupportedPreviewVisible: false,
-
-      // 閫氱敤棰勮鏁版嵁
       previewTitle: "",
       previewUrl: "",
-      currentFile: null
+      currentFile: null,
+
+      // 闄勪欢鍒楄〃
+      attachmentList: []
     };
+  },
+  watch: {
+    caseData: {
+      immediate: true,
+      handler(newVal) {
+        if (newVal && newVal.annexfilesList) {
+          this.loadAttachments(newVal.annexfilesList);
+        }
+      }
+    }
   },
   methods: {
     handleClose() {
-      this.$emit('close');
+      this.$emit("close");
     },
 
-    // 鑾峰彇鏂囦欢绫诲瀷
+    // 鍔犺浇闄勪欢
+    loadAttachments(annexfilesList) {
+      if (!annexfilesList || !Array.isArray(annexfilesList)) {
+        this.attachmentList = [];
+        return;
+      }
+
+      this.attachmentList = annexfilesList.map((file, index) => ({
+        id: index + 1,
+        fileName: file.fileName || `闄勪欢${index + 1}`,
+        fileType: this.getFileExtension(file.fileUrl || ""),
+        fileSize: file.fileSize || 0,
+        uploadTime: file.uploadTime || this.formatDateTime(new Date()),
+        fileUrl: file.fileUrl || ""
+      }));
+    },
+
+    // 鑾峰彇鏂囦欢鎵╁睍鍚�
+    getFileExtension(filename) {
+      return (
+        filename
+          .split(".")
+          .pop()
+          ?.toLowerCase() || "unknown"
+      );
+    },
+
+    // 鏍煎紡鍖栨棩鏈熸椂闂�
+    formatDateTime(dateString) {
+      if (!dateString) return "-";
+      return dateString.replace("T", " ").substring(0, 19);
+    },
+
+    // 鏍煎紡鍖栨棩鏈�
+    formatDate(dateString) {
+      if (!dateString) return "-";
+      return dateString.split("T")[0];
+    },
+
+    // 鑾峰彇瀹屾暣鎴风睄鍦板潃
+    getFullRegisterAddress() {
+      const {
+        registerprovincename,
+        registercityname,
+        registertownname,
+        registercommunityname,
+        registeraddress
+      } = this.caseData;
+      const addressParts = [
+        registerprovincename,
+        registercityname,
+        registertownname,
+        registercommunityname,
+        registeraddress
+      ];
+      return addressParts.filter(part => part).join("") || "-";
+    },
+
+    // 鑾峰彇瀹屾暣鐜颁綇鍦板潃
+    getFullResidenceAddress() {
+      const {
+        residenceprovincename,
+        residencecountyname,
+        residencetownname,
+        residencecommunityname,
+        residenceaddress
+      } = this.caseData;
+      const addressParts = [
+        residenceprovincename,
+        residencecountyname,
+        residencetownname,
+        residencecommunityname,
+        residenceaddress
+      ];
+      return addressParts.filter(part => part).join("") || "-";
+    },
+
+    // 鑾峰彇鐘舵�佹枃鏈�
+    getStatusText(status) {
+      const statusMap = {
+        "1": "宸蹭笂鎶�",
+        "2": "宸查槄璇�",
+        "3": "宸插悓鎰�",
+        "4": "宸查┏鍥�"
+      };
+      return statusMap[status] || "鏈煡鐘舵��";
+    },
+
+    // 鑾峰彇鐘舵�佺被鍨�
+    getStatusType(status) {
+      const statusMap = {
+        "1": "info",
+        "2": "warning",
+        "3": "success",
+        "4": "danger"
+      };
+      return statusMap[status] || "info";
+    },
+
+    // 鑾峰彇骞撮緞鍗曚綅鏂囨湰
+    getAgeUnitText(unit) {
+      const unitMap = {
+        year: "宀�",
+        month: "鏈�",
+        day: "澶�"
+      };
+      return unitMap[unit] || unit;
+    },
+
+    // 鑾峰彇璇佷欢绫诲瀷鏂囨湰
+    getIdCardTypeText(type) {
+      const typeMap = {
+        "1": "韬唤璇�",
+        "2": "鎶ょ収",
+        "3": "鍐涘畼璇�"
+      };
+      return typeMap[type] || type || "-";
+    },
+
+    // 鏂囦欢棰勮鐩稿叧鏂规硶锛堜繚鎸佸師鏈変唬鐮侊級
     getFileType(fileName) {
-      const extension = fileName.split('.').pop().toLowerCase();
+      const extension = fileName
+        .split(".")
+        .pop()
+        .toLowerCase();
       const imageTypes = ["jpg", "jpeg", "png", "gif", "bmp", "webp"];
       const pdfTypes = ["pdf"];
-
       if (imageTypes.includes(extension)) return "image";
       if (pdfTypes.includes(extension)) return "pdf";
       return "other";
     },
 
-    // 鏂囦欢棰勮涓诲叆鍙�
     handlePreview(file) {
       this.currentFile = file;
       this.previewTitle = `棰勮 - ${file.fileName}`;
@@ -367,7 +582,6 @@
       }
     },
 
-    // PDF棰勮鏂规硶
     previewPdf(file) {
       this.pdfPreviewVisible = true;
       this.pdfLoading = true;
@@ -377,13 +591,11 @@
       this.pdfUrl = file.fileUrl;
     },
 
-    // PDF鍔犺浇瀹屾垚鍥炶皟
     loadPdfHandler() {
       this.pdfLoading = false;
       this.currentPage = 1;
     },
 
-    // PDF鍔犺浇閿欒澶勭悊
     pdfErrorHandler(error) {
       console.error("PDF鍔犺浇澶辫触:", error);
       this.pdfLoading = false;
@@ -391,26 +603,18 @@
       this.pdfPreviewVisible = false;
     },
 
-    // 缈婚〉鍔熻兘
     changePage(newPage) {
       if (newPage < 1 || newPage > this.pageCount) return;
       this.currentPage = newPage;
     },
 
-    // 缂╂斁鍔熻兘
     zoomIn() {
-      if (this.scale >= 200) {
-        this.$message.info("宸叉斁澶у埌鏈�澶ф瘮渚�");
-        return;
-      }
+      if (this.scale >= 200) return;
       this.scale += 10;
     },
 
     zoomOut() {
-      if (this.scale <= 50) {
-        this.$message.info("宸茬缉灏忓埌鏈�灏忔瘮渚�");
-        return;
-      }
+      if (this.scale <= 50) return;
       this.scale -= 10;
     },
 
@@ -418,24 +622,20 @@
       this.scale = 100;
     },
 
-    // 鍥剧墖棰勮鏂规硶
     previewImage(file) {
       this.imagePreviewVisible = true;
     },
 
-    // 涓嶆敮鎸侀瑙堢殑鏂囦欢绫诲瀷
     previewUnsupported(file) {
       this.unsupportedPreviewVisible = true;
     },
 
-    // PDF瀵硅瘽妗嗗叧闂鐞�
     handlePdfDialogClose() {
       this.pdfUrl = "";
       this.currentPage = 1;
       this.pageCount = 0;
     },
 
-    // 鏂囦欢涓嬭浇
     handleDownload(file) {
       const link = document.createElement("a");
       link.href = file.fileUrl;
@@ -447,31 +647,10 @@
       this.$message.success("寮�濮嬩笅杞芥枃浠�");
     },
 
-    // 涓撶敤PDF涓嬭浇鏂规硶
     downloadPdf(file) {
       this.handleDownload(file);
     },
 
-    // 鏂囦欢鍒犻櫎
-    handleDelete(file) {
-      this.$confirm("纭畾瑕佸垹闄よ繖涓檮浠跺悧锛�", "鎻愮ず", {
-        confirmButtonText: "纭畾",
-        cancelButtonText: "鍙栨秷",
-        type: "warning"
-      }).then(() => {
-        this.attachmentList = this.attachmentList.filter(
-          item => item.id !== file.id
-        );
-        this.$message.success("鍒犻櫎鎴愬姛");
-      });
-    },
-
-    // 涓婁紶闄勪欢
-    handleUpload() {
-      this.$message.info("涓婁紶鍔熻兘寰呭疄鐜�");
-    },
-
-    // 鏍煎紡鍖栨枃浠跺ぇ灏�
     formatFileSize(bytes) {
       if (bytes === 0) return "0 B";
       const k = 1024;

--
Gitblit v1.9.3