From 3453ba7e5243022ad4388da1515dc75ad8d81f94 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期日, 17 五月 2026 15:00:23 +0800
Subject: [PATCH] 近期调试

---
 src/views/business/decide/index.vue |  685 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 523 insertions(+), 162 deletions(-)

diff --git a/src/views/business/decide/index.vue b/src/views/business/decide/index.vue
index 73c4a50..9ccf9f2 100644
--- a/src/views/business/decide/index.vue
+++ b/src/views/business/decide/index.vue
@@ -8,27 +8,27 @@
         :inline="true"
         label-width="100px"
       >
-        <el-form-item label="浣忛櫌鍙�" prop="hospitalNo">
+        <el-form-item label="浣忛櫌鍙�" prop="inpatientno">
           <el-input
-            v-model="queryParams.hospitalNo"
+            v-model="queryParams.inpatientno"
             placeholder="璇疯緭鍏ヤ綇闄㈠彿"
             clearable
             style="width: 200px"
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="鎹愮尞鑰呭鍚�" prop="donorName">
+        <el-form-item label="鎹愮尞鑰呭鍚�" prop="name">
           <el-input
-            v-model="queryParams.donorName"
+            v-model="queryParams.name"
             placeholder="璇疯緭鍏ユ崘鐚�呭鍚�"
             clearable
             style="width: 200px"
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="姝讳骸鍘熷洜" prop="deathReason">
+        <el-form-item label="姝讳骸鍘熷洜" prop="deathreason">
           <el-select
-            v-model="queryParams.deathReason"
+            v-model="queryParams.deathreason"
             placeholder="璇烽�夋嫨姝讳骸鍘熷洜"
             clearable
             style="width: 200px"
@@ -62,23 +62,25 @@
     <el-card class="tool-card">
       <el-row :gutter="10">
         <el-col :span="16">
-          <el-button type="primary" icon="el-icon-plus" @click="handleCreate"
-            >鏂板缓姝讳骸鍒ゅ畾</el-button
+          <!-- <el-button
+            type="primary"
+            icon="el-icon-plus"
+            @click="handleCreate"
+            >鏂板鑴戞浜″垽瀹�</el-button
           >
           <el-button
             type="success"
+            icon="el-icon-plus"
+            @click="handleCreateHeartDeath"
+            >鏂板蹇冩浜″垽瀹�</el-button
+          >
+          <el-button
+            type="warning"
             icon="el-icon-edit"
             :disabled="single"
             @click="handleUpdate"
             >淇敼</el-button
-          >
-          <el-button
-            type="danger"
-            icon="el-icon-delete"
-            :disabled="multiple"
-            @click="handleDelete"
-            >鍒犻櫎</el-button
-          >
+          > -->
           <el-button
             type="warning"
             icon="el-icon-download"
@@ -100,98 +102,190 @@
         v-loading="loading"
         :data="deathJudgmentList"
         @selection-change="handleSelectionChange"
+        :header-cell-style="{ background: '#f5f7fa', 'font-weight': 'bold' }"
       >
         <el-table-column type="selection" width="55" align="center" />
+
+        <!-- 鍩虹淇℃伅鍒� -->
         <el-table-column
           label="浣忛櫌鍙�"
           align="center"
-          prop="hospitalNo"
+          prop="inpatientno"
           width="120"
+          fixed="left"
         />
         <el-table-column
-          label="鎹愮尞鑰呭鍚�"
+          label="濮撳悕"
           align="center"
-          prop="donorName"
-          width="120"
+          prop="name"
+          width="100"
+          fixed="left"
         />
-        <el-table-column label="鎬у埆" align="center" prop="gender" width="80">
+        <el-table-column
+          label="鎬у埆"
+          align="center"
+          prop="sex"
+          width="80"
+          fixed="left"
+        >
           <template slot-scope="scope">
             <dict-tag
               :options="dict.type.sys_user_sex"
-              :value="parseInt(scope.row.gender)"
+              :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="age"
+          width="80"
+          fixed="left"
+        />
+
         <el-table-column
           label="鐤剧梾璇婃柇"
           align="center"
-          prop="diagnosis"
-          min-width="180"
+          prop="diagnosisname"
+          min-width="200"
           show-overflow-tooltip
         />
+        <!-- 鐘舵�佷俊鎭� -->
         <el-table-column
-          label="姝讳骸鍘熷洜"
+          label="鍒ゅ畾鐘舵��"
           align="center"
-          prop="deathReason"
-          width="120"
-        >
-          <template slot-scope="scope">
-            <el-tag :type="reasonFilter(scope.row.deathReason)">
-              {{ reasonTextFilter(scope.row.deathReason) }}
-            </el-tag>
-          </template>
-        </el-table-column>
-        <el-table-column
-          label="姝讳骸鏃堕棿"
-          align="center"
-          prop="deathTime"
-          width="160"
-        >
-          <template slot-scope="scope">
-            <span>{{
-              scope.row.deathTime
-                ? parseTime(scope.row.deathTime, "{y}-{m}-{d} {h}:{i}")
-                : "-"
-            }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column
-          label="鍒ゅ畾鍖荤敓"
-          align="center"
-          prop="judgmentDoctor"
-          width="120"
-        />
-          <el-table-column
-          label="鍒ゅ畾鍖荤敓浜�"
-          align="center"
-          prop="judgmentDoctortwo"
-          width="120"
-        />
-        <el-table-column
-          label="鐧昏鏃堕棿"
-          align="center"
-          prop="registrationTime"
-          width="160"
-        >
-          <template slot-scope="scope">
-            <span>{{
-              scope.row.registrationTime
-                ? parseTime(scope.row.registrationTime, "{y}-{m}-{d} {h}:{i}")
-                : "-"
-            }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column
-          label="鐧昏浜�"
-          align="center"
-          prop="registrant"
+          prop="state"
           width="100"
-        />
+        >
+          <template slot-scope="scope">
+            <dict-tag
+              :options="dict.type.decide_type"
+              :value="scope.row.state"
+            />
+          </template>
+        </el-table-column>
+        <!-- 鑴戞浜″垽瀹氫俊鎭� -->
+        <el-table-column label="鑴戞浜″垽瀹�" align="center">
+          <el-table-column
+            label="姝讳骸鍘熷洜"
+            align="center"
+            prop="deathreason"
+            width="120"
+          >
+            <template slot-scope="scope">
+              <el-tag
+                v-if="scope.row.deathreason"
+                :type="getDeathReasonTagType(scope.row.deathreason)"
+              >
+                {{ getDeathReasonText(scope.row.deathreason) }}
+              </el-tag>
+              <span v-else>-</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="姝讳骸鏃堕棿"
+            align="center"
+            prop="deathtime"
+            width="160"
+          >
+            <template slot-scope="scope">
+              <span>{{
+                scope.row.deathtime ? formatTime(scope.row.deathtime) : "-"
+              }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="鍒ゅ畾鍖荤敓涓�"
+            align="center"
+            prop="deathjudgedocto"
+            width="120"
+          >
+            <template slot-scope="scope">
+              {{ scope.row.deathjudgedocto || "-" }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="鍒ゅ畾鍖荤敓浜�"
+            align="center"
+            prop="deathjudgedoctt"
+            width="120"
+          >
+            <template slot-scope="scope">
+              {{ scope.row.deathjudgedoctt || "-" }}
+            </template>
+          </el-table-column>
+        </el-table-column>
+
+        <!-- 蹇冩浜″垽瀹氫俊鎭� -->
+        <el-table-column label="蹇冩浜″垽瀹�" align="center">
+          <el-table-column
+            label="姝讳骸鍘熷洜"
+            align="center"
+            prop="heartdeathreason"
+            width="120"
+          >
+            <template slot-scope="scope">
+              <el-tag v-if="scope.row.heartdeathreason" type="danger">
+                {{ getHeartDeathReasonText(scope.row.heartdeathreason) }}
+              </el-tag>
+              <span v-else>-</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="姝讳骸鏃堕棿"
+            align="center"
+            prop="heartdeathtime"
+            width="160"
+          >
+            <template slot-scope="scope">
+              <span>{{
+                scope.row.heartdeathtime
+                  ? formatTime(scope.row.heartdeathtime)
+                  : "-"
+              }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="鍒ゅ畾鍖荤敓涓�"
+            align="center"
+            prop="heartdeathjudgedocto"
+            width="120"
+          >
+            <template slot-scope="scope">
+              {{ scope.row.heartdeathjudgedocto || "-" }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="鍒ゅ畾鍖荤敓浜�"
+            align="center"
+            prop="heartdeathjudgedoctt"
+            width="120"
+          >
+            <template slot-scope="scope">
+              {{ scope.row.heartdeathjudgedoctt || "-" }}
+            </template>
+          </el-table-column>
+        </el-table-column>
+
+        <!-- 鍒ゅ畾鏃堕棿鍜屾搷浣滃垪 -->
+        <el-table-column
+          label="鍒ゅ畾鏃堕棿"
+          align="center"
+          prop="createTime"
+          width="160"
+        >
+          <template slot-scope="scope">
+            <span>{{
+              scope.row.createTime ? formatTime(scope.row.createTime) : "-"
+            }}</span>
+          </template>
+        </el-table-column>
+
         <el-table-column
           label="鎿嶄綔"
           align="center"
-          width="210"
+          width="200"
+          fixed="right"
           class-name="small-padding fixed-width"
         >
           <template slot-scope="scope">
@@ -202,21 +296,23 @@
               @click="handleView(scope.row)"
               >璇︽儏</el-button
             >
-            <el-button
+            <el-dropdown
               size="mini"
-              type="text"
-              icon="el-icon-edit"
-              @click="handleUpdate(scope.row)"
-              >淇敼</el-button
+              @command="command => handleUpdateDropdown(scope.row, command)"
             >
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              style="color: #F56C6C"
-              @click="handleDelete(scope.row)"
-              >鍒犻櫎</el-button
-            >
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                class="el-button--text"
+              >
+                淇敼<i class="el-icon-arrow-down el-icon--right"></i>
+              </el-button>
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="brainDeath">鑴戞浜�</el-dropdown-item>
+                <el-dropdown-item command="heartDeath">蹇冩浜�</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
           </template>
         </el-table-column>
       </el-table>
@@ -234,13 +330,17 @@
 </template>
 
 <script>
-import { listDeathJudgment, delDeathJudgment, exportDeathJudgment } from "./mockDeathJudgmentApi";
+import {
+  queryDathInfoBaseInfo,
+  deathinfoedit,
+  deathinfoInfo
+} from "@/api/businessApi";
 import Pagination from "@/components/Pagination";
 
 export default {
   name: "DeathJudgmentList",
   components: { Pagination },
-  dicts: ["sys_user_sex"],
+  dicts: ["sys_user_sex", "decide_type"],
   data() {
     return {
       // 閬僵灞�
@@ -259,10 +359,32 @@
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        hospitalNo: undefined,
-        donorName: undefined,
-        deathReason: undefined,
+        inpatientno: undefined,
+        name: undefined,
+        deathreason: undefined,
         deathTimeRange: []
+      },
+      // 鎵�鏈夋暟鎹紙鐢ㄤ簬鍓嶇绛涢�夛級
+      allTableData: [],
+      // 姝讳骸鍘熷洜鏄犲皠
+      deathReasonMap: {
+        brain_death: { text: "鑴戞浜�", type: "primary" },
+        heart_death: { text: "蹇冩浜�", type: "danger" },
+        other: { text: "鍏朵粬", type: "info" }
+      },
+      // 蹇冩浜″師鍥犳槧灏�
+      heartDeathReasonMap: {
+        cardiac_arrest: { text: "蹇冩悘楠ゅ仠", type: "danger" },
+        myocardial_infarction: { text: "蹇冭倢姊楁", type: "danger" },
+        heart_failure: { text: "蹇冨姏琛扮", type: "danger" },
+        other: { text: "鍏朵粬", type: "info" }
+      },
+      // 鐘舵�佹槧灏�
+      statusMap: {
+        "0": { text: "缁存姢涓�", type: "warning" },
+        "1": { text: "宸插畬鎴�", type: "success" },
+        "2": { text: "瀹℃牳涓�", type: "info" },
+        "99": { text: "宸茬粓姝�", type: "danger" }
       }
     };
   },
@@ -270,99 +392,242 @@
     this.getList();
   },
   methods: {
-    // 姝讳骸鍘熷洜杩囨护鍣�
-    reasonFilter(reason) {
-      const reasonMap = {
-        "brain_death": "primary", // 鑴戞浜�
-        "heart_death": "danger", // 蹇冩浜�
-        "other": "info" // 鍏朵粬
-      };
-      return reasonMap[reason] || "info";
+    // 鑾峰彇姝讳骸鍘熷洜鏍囩绫诲瀷
+    getDeathReasonTagType(reason) {
+      return this.deathReasonMap[reason]?.type || "info";
     },
-    reasonTextFilter(reason) {
-      const reasonMap = {
-        "brain_death": "鑴戞浜�",
-        "heart_death": "蹇冩浜�",
-        "other": "鍏朵粬"
-      };
-      return reasonMap[reason] || "鏈煡";
+
+    // 鑾峰彇姝讳骸鍘熷洜鏂囨湰
+    getDeathReasonText(reason) {
+      return this.deathReasonMap[reason]?.text || "鏈煡";
     },
+
+    // 鑾峰彇蹇冩浜″師鍥犳枃鏈�
+    getHeartDeathReasonText(reason) {
+      if (!reason) return "-";
+      return this.heartDeathReasonMap[reason]?.text || reason;
+    },
+
+    // 鑾峰彇鐘舵�佹爣绛剧被鍨�
+    getStatusTagType(status) {
+      return this.statusMap[status]?.type || "info";
+    },
+
+    // 鑾峰彇鐘舵�佹枃鏈�
+    getStatusText(status) {
+      return this.statusMap[status]?.text || "鏈煡鐘舵��";
+    },
+
+    // 鏍煎紡鍖栨椂闂�
+    formatTime(time) {
+      if (!time) return "-";
+      return this.parseTime(time, "{y}-{m}-{d} {h}:{i}");
+    },
+
     // 鏌ヨ姝讳骸鍒ゅ畾鍒楄〃
-    getList() {
+    async getList() {
       this.loading = true;
-      listDeathJudgment(this.queryParams)
-        .then(response => {
-          if (response.code === 200) {
-            this.deathJudgmentList = response.data.rows;
-            this.total = response.data.total;
-          } else {
-            this.$message.error("鑾峰彇鏁版嵁澶辫触");
-          }
-          this.loading = false;
-        })
-        .catch(error => {
-          console.error("鑾峰彇姝讳骸鍒ゅ畾鍒楄〃澶辫触:", error);
-          this.loading = false;
-          this.$message.error("鑾峰彇鏁版嵁澶辫触");
-        });
+      try {
+        const response = await queryDathInfoBaseInfo(this.queryParams);
+
+        // 鏍规嵁瀹為檯鎺ュ彛杩斿洖缁撴瀯璋冩暣
+        let realData = [];
+        if (response.code === 200) {
+          realData = response.rows || response.data || [];
+          this.total = response.total || realData.length;
+        } else {
+          realData = [];
+          this.total = 0;
+        }
+
+        // 瀛樺偍鎵�鏈夋暟鎹敤浜庡墠绔瓫閫�
+        this.allTableData = realData;
+
+        // 搴旂敤鍓嶇绛涢�夋潯浠�
+        let filteredData = this.applyFrontendFilter(realData);
+
+        // 鍓嶇鍒嗛〉澶勭悊锛堝鏋滄帴鍙d笉鏀寔鍚庣鍒嗛〉锛�
+        if (
+          this.total === filteredData.length &&
+          this.total > this.queryParams.pageSize
+        ) {
+          const startIndex =
+            (this.queryParams.pageNum - 1) * this.queryParams.pageSize;
+          const endIndex = startIndex + this.queryParams.pageSize;
+          this.deathJudgmentList = filteredData.slice(startIndex, endIndex);
+        } else {
+          // 鎺ュ彛宸插垎椤碉紝鐩存帴浣跨敤杩斿洖鏁版嵁
+          this.deathJudgmentList = filteredData;
+        }
+      } catch (error) {
+        console.error("鑾峰彇姝讳骸鍒ゅ畾鏁版嵁澶辫触:", error);
+        this.$message.error("鏁版嵁鍔犺浇澶辫触");
+        this.deathJudgmentList = [];
+        this.total = 0;
+      } finally {
+        this.loading = false;
+      }
     },
+
+    // 搴旂敤鍓嶇绛涢��
+    applyFrontendFilter(data) {
+      let filteredData = data;
+
+      // 浣忛櫌鍙风瓫閫�
+      if (this.queryParams.inpatientno) {
+        filteredData = filteredData.filter(
+          item =>
+            item.inpatientno &&
+            item.inpatientno
+              .toString()
+              .toLowerCase()
+              .includes(this.queryParams.inpatientno.toLowerCase())
+        );
+      }
+
+      // 濮撳悕绛涢��
+      if (this.queryParams.name) {
+        filteredData = filteredData.filter(
+          item =>
+            item.name &&
+            item.name
+              .toLowerCase()
+              .includes(this.queryParams.name.toLowerCase())
+        );
+      }
+
+      // 姝讳骸鍘熷洜绛涢��
+      if (this.queryParams.deathreason) {
+        filteredData = filteredData.filter(item => {
+          // 鍚屾椂绛涢�夎剳姝讳骸鍜屽績姝讳骸鍘熷洜
+          return (
+            item.deathreason === this.queryParams.deathreason ||
+            item.heartdeathreason === this.queryParams.deathreason
+          );
+        });
+      }
+
+      // 姝讳骸鏃堕棿鑼冨洿绛涢��
+      if (
+        this.queryParams.deathTimeRange &&
+        this.queryParams.deathTimeRange.length === 2
+      ) {
+        const [startDate, endDate] = this.queryParams.deathTimeRange;
+        filteredData = filteredData.filter(item => {
+          // 鍚屾椂绛涢�夎剳姝讳骸鏃堕棿鍜屽績姝讳骸鏃堕棿
+          const brainDeathTime = item.deathtime
+            ? new Date(item.deathtime).getTime()
+            : null;
+          const heartDeathTime = item.heartdeathtime
+            ? new Date(item.heartdeathtime).getTime()
+            : null;
+          const startTime = new Date(startDate).getTime();
+          const endTime = new Date(endDate + " 23:59:59").getTime();
+
+          return (
+            (brainDeathTime &&
+              brainDeathTime >= startTime &&
+              brainDeathTime <= endTime) ||
+            (heartDeathTime &&
+              heartDeathTime >= startTime &&
+              heartDeathTime <= endTime)
+          );
+        });
+      }
+
+      return filteredData;
+    },
+
     // 鎼滅储鎸夐挳鎿嶄綔
     handleQuery() {
       this.queryParams.pageNum = 1;
       this.getList();
     },
+
     // 閲嶇疆鎸夐挳鎿嶄綔
     resetQuery() {
       this.$refs.queryForm.resetFields();
-      this.handleQuery();
+      this.queryParams.pageNum = 1;
+      this.getList();
     },
+
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
     },
+
     // 鏌ョ湅璇︽儏
     handleView(row) {
       this.$router.push({
         path: "/case/DecideInfo",
-        query: { id: row.id }
+        query: {
+          id: row.id,
+          infoid: row.infoid,
+          type: this.getDeathType(row) // 浼犻�掓浜$被鍨�
+        }
       });
     },
-    // 鏂板鎸夐挳鎿嶄綔
-    handleCreate() {
-      this.$router.push("/case/DecideInfo");
+
+    // 鑾峰彇姝讳骸绫诲瀷
+    getDeathType(row) {
+      if (row.deathreason && row.deathreason.includes("brain")) {
+        return "brain";
+      } else if (row.heartdeathreason) {
+        return "heart";
+      }
+      return "brain"; // 榛樿鑴戞浜�
     },
-    // 淇敼鎸夐挳鎿嶄綔
-    handleUpdate(row) {
-      const id = row.id || this.ids[0];
+
+    // 鏂板鑴戞浜″垽瀹�
+    handleCreate() {
       this.$router.push({
         path: "/case/DecideInfo",
-        query: { id: id }
+        query: { type: "brain" }
       });
     },
-    // 鍒犻櫎鎸夐挳鎿嶄綔
-    handleDelete(row) {
-      const ids = row.id ? [row.id] : this.ids;
-      this.$confirm("鏄惁纭鍒犻櫎閫変腑鐨勬暟鎹」锛�", "璀﹀憡", {
-        confirmButtonText: "纭畾",
-        cancelButtonText: "鍙栨秷",
-        type: "warning"
-      })
-        .then(() => {
-          return delDeathJudgment(ids);
-        })
-        .then(response => {
-          if (response.code === 200) {
-            this.$message.success("鍒犻櫎鎴愬姛");
-            this.getList();
-          }
-        })
-        .catch(() => {});
+
+    // 鏂板蹇冩浜″垽瀹�
+    handleCreateHeartDeath() {
+      this.$router.push({
+        path: "/case/DecideInfo",
+        query: { type: "heart" }
+      });
     },
+
+    // 淇敼鎸夐挳鎿嶄綔锛堜笅鎷夎彍鍗曪級
+    handleUpdateDropdown(row, command) {
+      const id = row.id;
+      const infoid = row.infoid;
+
+      if (command === "brainDeath") {
+        // 淇敼鑴戞浜″垽瀹�
+        this.$router.push({
+          path: "/case/DecideInfo",
+          query: {
+            id: id,
+            infoid: infoid,
+            type: "brain",
+            isEdit: true
+          }
+        });
+      } else if (command === "heartDeath") {
+        // 淇敼蹇冩浜″垽瀹�
+        this.$router.push({
+          path: "/case/DecideInfo",
+          query: {
+            id: id,
+            infoid: infoid,
+            type: "heart",
+            isEdit: true
+          }
+        });
+      }
+    },
+
     // 瀵煎嚭鎸夐挳鎿嶄綔
     handleExport() {
-      const queryParams = this.queryParams;
       this.$confirm("鏄惁纭瀵煎嚭鎵�鏈夋浜″垽瀹氭暟鎹紵", "璀﹀憡", {
         confirmButtonText: "纭畾",
         cancelButtonText: "鍙栨秷",
@@ -370,12 +635,13 @@
       })
         .then(() => {
           this.loading = true;
-          return exportDeathJudgment(queryParams);
+          // 杩欓噷璋冪敤瀵煎嚭鎺ュ彛
+          return this.exportData();
         })
         .then(response => {
           if (response.code === 200) {
             this.$message.success("瀵煎嚭鎴愬姛");
-            // 瀹為檯椤圭洰涓繖閲屽鐞嗘枃浠朵笅杞�
+            this.downloadExportFile(response);
           }
           this.loading = false;
         })
@@ -383,7 +649,35 @@
           this.loading = false;
         });
     },
-    // 鏃堕棿鏍煎紡鍖�
+
+    // 瀵煎嚭鏁版嵁
+    async exportData() {
+      try {
+        // 璋冪敤瀵煎嚭鎺ュ彛
+        const response = await exportDeathJudgment(this.queryParams);
+        return response;
+      } catch (error) {
+        console.error("瀵煎嚭澶辫触:", error);
+        this.$message.error("瀵煎嚭澶辫触");
+        throw error;
+      }
+    },
+
+    // 涓嬭浇瀵煎嚭鏂囦欢
+    downloadExportFile(response) {
+      // 鍋囪鎺ュ彛杩斿洖鏂囦欢涓嬭浇鍦板潃
+      if (response.data && response.data.fileUrl) {
+        const link = document.createElement("a");
+        link.style.display = "none";
+        link.href = response.data.fileUrl;
+        link.download = "姝讳骸鍒ゅ畾鏁版嵁.xlsx";
+        document.body.appendChild(link);
+        link.click();
+        document.body.removeChild(link);
+      }
+    },
+
+    // 鏃堕棿鏍煎紡鍖栧伐鍏峰嚱鏁�
     parseTime(time, pattern) {
       if (!time) return "";
       const format = pattern || "{y}-{m}-{d} {h}:{i}:{s}";
@@ -438,6 +732,73 @@
 }
 
 .fixed-width .el-button {
-  margin: 0 5px;
+  margin: 0 2px;
+}
+
+/* 琛ㄦ牸鏍峰紡浼樺寲 */
+::v-deep .el-table {
+  border: 1px solid #ebeef5;
+  border-radius: 4px;
+}
+
+::v-deep .el-table th {
+  background-color: #f5f7fa;
+  font-weight: bold;
+  color: #333;
+}
+
+::v-deep .el-table .cell {
+  padding: 8px 4px;
+  line-height: 1.5;
+}
+
+::v-deep .el-table--border td,
+::v-deep .el-table--border th {
+  border-right: 1px solid #ebeef5;
+}
+
+::v-deep .el-table--border {
+  border: 1px solid #ebeef5;
+  border-bottom: none;
+}
+
+/* 澶氱骇琛ㄥご鏍峰紡 */
+::v-deep .el-table .el-table__header-wrapper tr:first-child th {
+  background-color: #f8f9fa;
+  border-bottom: 2px solid #409eff;
+}
+
+::v-deep .el-table .el-table__header-wrapper tr:nth-child(2) th {
+  background-color: #f0f7ff;
+}
+
+/* 鎿嶄綔鍒楁寜閽牱寮� */
+.el-dropdown-link {
+  cursor: pointer;
+  color: #409eff;
+}
+
+.el-dropdown-link:hover {
+  color: #66b1ff;
+}
+
+/* 鏍囩鏍峰紡浼樺寲 */
+::v-deep .el-tag {
+  margin: 2px;
+  border-radius: 12px;
+  font-size: 12px;
+  padding: 0 8px;
+  height: 24px;
+  line-height: 22px;
+}
+
+/* 鍒嗛〉鏍峰紡 */
+.pagination-container {
+  margin-top: 20px;
+  padding: 10px 0;
+  background: #fff;
+  border: 1px solid #ebeef5;
+  border-top: none;
+  border-radius: 0 0 4px 4px;
 }
 </style>

--
Gitblit v1.9.3