From bcb9976e7680ce67fadb6fec7ab5fca36552cdbc Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 28 一月 2026 17:10:49 +0800
Subject: [PATCH] 青岛维护

---
 src/views/business/decide/index.vue |  320 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 223 insertions(+), 97 deletions(-)

diff --git a/src/views/business/decide/index.vue b/src/views/business/decide/index.vue
index a285ce9..88b380a 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"
@@ -73,13 +73,6 @@
             >淇敼</el-button
           >
           <el-button
-            type="danger"
-            icon="el-icon-delete"
-            :disabled="multiple"
-            @click="handleDelete"
-            >鍒犻櫎</el-button
-          >
-          <el-button
             type="warning"
             icon="el-icon-download"
             @click="handleExport"
@@ -103,85 +96,110 @@
       >
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column
+          label="妗堜緥缂栧彿"
+          align="center"
+          prop="caseNo"
+          width="120"
+        />
+        <el-table-column
           label="浣忛櫌鍙�"
           align="center"
-          prop="hospitalNo"
+          prop="inpatientno"
           width="120"
         />
         <el-table-column
           label="鎹愮尞鑰呭鍚�"
           align="center"
-          prop="donorName"
+          prop="name"
           width="120"
         />
-        <el-table-column label="鎬у埆" align="center" prop="gender" width="80">
+        <el-table-column label="鎬у埆" align="center" prop="sex" width="80">
           <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="treatmenthospitalname"
+          width="180"
+          show-overflow-tooltip
+        />
+        <el-table-column
           label="鐤剧梾璇婃柇"
           align="center"
-          prop="diagnosis"
-          min-width="180"
+          prop="diagnosisname"
+          min-width="200"
           show-overflow-tooltip
         />
         <el-table-column
           label="姝讳骸鍘熷洜"
           align="center"
-          prop="deathReason"
+          prop="deathreason"
           width="120"
         >
           <template slot-scope="scope">
-            <el-tag :type="reasonFilter(scope.row.deathReason)">
-              {{ reasonTextFilter(scope.row.deathReason) }}
+            <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"
+          prop="deathtime"
           width="160"
         >
           <template slot-scope="scope">
             <span>{{
-              scope.row.deathTime
-                ? parseTime(scope.row.deathTime, "{y}-{m}-{d} {h}:{i}")
+              scope.row.deathtime
+                ? parseTime(scope.row.deathtime, "{y}-{m}-{d} {h}:{i}")
                 : "-"
             }}</span>
           </template>
         </el-table-column>
         <el-table-column
-          label="鍒ゅ畾鍖荤敓"
+          label="鍒ゅ畾鍖荤敓涓�"
           align="center"
-          prop="judgmentDoctor"
+          prop="deathjudgedocto"
           width="120"
         />
         <el-table-column
-          label="鐧昏鏃堕棿"
+          label="鍒ゅ畾鍖荤敓浜�"
           align="center"
-          prop="registrationTime"
+          prop="deathjudgedoctt"
+          width="120"
+        />
+        <el-table-column
+          label="璁板綍鐘舵��"
+          align="center"
+          prop="recordstate"
+          width="100"
+        >
+          <template slot-scope="scope">
+            <el-tag :type="statusFilter(scope.row.recordstate)">
+              {{ statusTextFilter(scope.row.recordstate) }}
+            </el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鍒涘缓鏃堕棿"
+          align="center"
+          prop="createTime"
           width="160"
         >
           <template slot-scope="scope">
             <span>{{
-              scope.row.registrationTime
-                ? parseTime(scope.row.registrationTime, "{y}-{m}-{d} {h}:{i}")
+              scope.row.createTime
+                ? parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{i}")
                 : "-"
             }}</span>
           </template>
         </el-table-column>
-        <el-table-column
-          label="鐧昏浜�"
-          align="center"
-          prop="registrant"
-          width="100"
-        />
         <el-table-column
           label="鎿嶄綔"
           align="center"
@@ -203,14 +221,6 @@
               @click="handleUpdate(scope.row)"
               >淇敼</el-button
             >
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              style="color: #F56C6C"
-              @click="handleDelete(scope.row)"
-              >鍒犻櫎</el-button
-            >
           </template>
         </el-table-column>
       </el-table>
@@ -228,7 +238,7 @@
 </template>
 
 <script>
-import { listDeathJudgment, delDeathJudgment, exportDeathJudgment } from "./mockDeathJudgmentApi";
+import { queryDathInfoBaseInfo, deathinfoedit,deathinfoInfo } from "@/api/businessApi";
 import Pagination from "@/components/Pagination";
 
 export default {
@@ -253,11 +263,13 @@
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        hospitalNo: undefined,
-        donorName: undefined,
-        deathReason: undefined,
+        inpatientno: undefined,
+        name: undefined,
+        deathreason: undefined,
         deathTimeRange: []
-      }
+      },
+      // 鎵�鏈夋暟鎹紙鐢ㄤ簬鍓嶇绛涢�夛級
+      allTableData: []
     };
   },
   created() {
@@ -267,55 +279,157 @@
     // 姝讳骸鍘熷洜杩囨护鍣�
     reasonFilter(reason) {
       const reasonMap = {
-        "brain_death": "primary", // 鑴戞浜�
-        "heart_death": "danger", // 蹇冩浜�
-        "other": "info" // 鍏朵粬
+        brain_death: "primary",
+        heart_death: "danger",
+        other: "info"
       };
       return reasonMap[reason] || "info";
     },
+
     reasonTextFilter(reason) {
       const reasonMap = {
-        "brain_death": "鑴戞浜�",
-        "heart_death": "蹇冩浜�",
-        "other": "鍏朵粬"
+        brain_death: "鑴戞浜�",
+        heart_death: "蹇冩浜�",
+        other: "鍏朵粬"
       };
       return reasonMap[reason] || "鏈煡";
     },
-    // 鏌ヨ姝讳骸鍒ゅ畾鍒楄〃
-    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("鑾峰彇鏁版嵁澶辫触");
-        });
+
+    // 璁板綍鐘舵�佽繃婊ゅ櫒
+    statusFilter(status) {
+      const statusMap = {
+        "0": "warning", // 缁存姢涓�
+        "1": "success", // 宸插畬鎴�
+        "99": "danger" // 宸茬粓姝�
+      };
+      return statusMap[status] || "info";
     },
+
+    statusTextFilter(status) {
+      const statusMap = {
+        "0": "缁存姢涓�",
+        "1": "宸插畬鎴�",
+        "99": "宸茬粓姝�"
+      };
+      return statusMap[status] || "鏈煡鐘舵��";
+    },
+
+    // 鏌ヨ姝讳骸鍒ゅ畾鍒楄〃
+    async getList() {
+      this.loading = true;
+      try {
+        const response = await queryDathInfoBaseInfo(this.queryParams);
+
+        // 鏍规嵁瀹為檯鎺ュ彛杩斿洖缁撴瀯璋冩暣
+        let realData = [];
+        realData = response.data;
+        this.total = response.total;
+        // if (Array.isArray(response)) {
+        //   realData = response;
+        // } else if (response && response.data) {
+        //   realData = response.data;
+        // } else if (response && response.rows) {
+        //   realData = response.rows;
+        //   this.total = response.total || response.rows.length;
+        // } else if (response && response.code === 200) {
+        //   realData = response.data.rows || response.data;
+        //   this.total = response.data.total || realData.length;
+        // } else {
+        //   realData = [];
+        // }
+
+        // 瀛樺偍鎵�鏈夋暟鎹敤浜庡墠绔瓫閫�
+        this.allTableData = realData;
+
+        // 搴旂敤鍓嶇绛涢�夋潯浠�
+        let filteredData = this.applyFrontendFilter(realData);
+
+        // 鍓嶇鍒嗛〉澶勭悊锛堝鏋滄帴鍙d笉鏀寔鍚庣鍒嗛〉锛�
+        if (!response.total && !response.data) {
+          const startIndex =
+            (this.queryParams.pageNum - 1) * this.queryParams.pageSize;
+          const endIndex = startIndex + this.queryParams.pageSize;
+          this.deathJudgmentList = filteredData.slice(startIndex, endIndex);
+          this.total = filteredData.length;
+        } 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.includes(this.queryParams.inpatientno)
+        );
+      }
+
+      // 濮撳悕绛涢��
+      if (this.queryParams.name) {
+        filteredData = filteredData.filter(
+          item => item.name && item.name.includes(this.queryParams.name)
+        );
+      }
+
+      // 姝讳骸鍘熷洜绛涢��
+      if (this.queryParams.deathreason) {
+        filteredData = filteredData.filter(
+          item => item.deathreason === this.queryParams.deathreason
+        );
+      }
+
+      // 姝讳骸鏃堕棿鑼冨洿绛涢��
+      if (
+        this.queryParams.deathTimeRange &&
+        this.queryParams.deathTimeRange.length === 2
+      ) {
+        const [startDate, endDate] = this.queryParams.deathTimeRange;
+        filteredData = filteredData.filter(item => {
+          if (!item.deathtime) return false;
+          const deathTime = new Date(item.deathtime).getTime();
+          const startTime = new Date(startDate).getTime();
+          const endTime = new Date(endDate + " 23:59:59").getTime();
+          return deathTime >= startTime && deathTime <= 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({
@@ -323,10 +437,12 @@
         query: { id: row.id }
       });
     },
+
     // 鏂板鎸夐挳鎿嶄綔
     handleCreate() {
       this.$router.push("/case/DecideInfo");
     },
+
     // 淇敼鎸夐挳鎿嶄綔
     handleUpdate(row) {
       const id = row.id || this.ids[0];
@@ -335,28 +451,9 @@
         query: { id: id }
       });
     },
-    // 鍒犻櫎鎸夐挳鎿嶄綔
-    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(() => {});
-    },
-    // 瀵煎嚭鎸夐挳鎿嶄綔
+
+    // 瀵煎嚭鎸夐挳鎿嶄綔锛堟ā鎷熻皟鐢級
     handleExport() {
-      const queryParams = this.queryParams;
       this.$confirm("鏄惁纭瀵煎嚭鎵�鏈夋浜″垽瀹氭暟鎹紵", "璀﹀憡", {
         confirmButtonText: "纭畾",
         cancelButtonText: "鍙栨秷",
@@ -364,12 +461,19 @@
       })
         .then(() => {
           this.loading = true;
-          return exportDeathJudgment(queryParams);
+          // 妯℃嫙瀵煎嚭鎿嶄綔
+          return new Promise(resolve => {
+            setTimeout(() => {
+              resolve({ code: 200 });
+            }, 1000);
+          });
         })
         .then(response => {
           if (response.code === 200) {
             this.$message.success("瀵煎嚭鎴愬姛");
             // 瀹為檯椤圭洰涓繖閲屽鐞嗘枃浠朵笅杞�
+            // 鍙互娣诲姞浠ヤ笅浠g爜鏉ヨЕ鍙戞枃浠朵笅杞�
+            // this.downloadFile();
           }
           this.loading = false;
         })
@@ -377,6 +481,18 @@
           this.loading = false;
         });
     },
+
+    // 鏂囦欢涓嬭浇鏂规硶锛堥鐣欙級
+    downloadFile() {
+      // 瀹為檯椤圭洰涓殑鏂囦欢涓嬭浇閫昏緫
+      const link = document.createElement("a");
+      link.style.display = "none";
+      link.href = "/api/export/death-judgment"; // 鏇挎崲涓哄疄闄呭鍑烘帴鍙�
+      document.body.appendChild(link);
+      link.click();
+      document.body.removeChild(link);
+    },
+
     // 鏃堕棿鏍煎紡鍖�
     parseTime(time, pattern) {
       if (!time) return "";
@@ -434,4 +550,14 @@
 .fixed-width .el-button {
   margin: 0 5px;
 }
+
+/* 琛ㄦ牸鏍峰紡浼樺寲 */
+::v-deep .el-table .cell {
+  padding: 8px 4px;
+}
+
+::v-deep .el-table th {
+  background-color: #f5f7fa;
+  font-weight: bold;
+}
 </style>

--
Gitblit v1.9.3