From 475a352a4bfd7ac3a81e8c7c92d3bb64e2e01037 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期五, 27 二月 2026 15:48:37 +0800
Subject: [PATCH] 青岛维护提交

---
 src/views/business/maintain/index.vue |  396 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 206 insertions(+), 190 deletions(-)

diff --git a/src/views/business/maintain/index.vue b/src/views/business/maintain/index.vue
index ebd1884..29c2bbb 100644
--- a/src/views/business/maintain/index.vue
+++ b/src/views/business/maintain/index.vue
@@ -8,37 +8,37 @@
         :inline="true"
         label-width="100px"
       >
-        <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="hospitalName">
+        <el-form-item label="鎵�鍦ㄥ尰鐤楁満鏋�" prop="treatmenthospitalname">
           <el-input
-            v-model="queryParams.hospitalName"
+            v-model="queryParams.treatmenthospitalname"
             placeholder="璇疯緭鍏ュ尰鐤楁満鏋�"
             clearable
             style="width: 200px"
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="鍖荤枟缁勪汉鍛�" prop="medicalStaff">
+        <el-form-item label="鍗忚皟鍛�" prop="coordinatorName">
           <el-input
-            v-model="queryParams.medicalStaff"
-            placeholder="璇疯緭鍏ュ尰鐤楃粍浜哄憳"
+            v-model="queryParams.coordinatorName"
+            placeholder="璇疯緭鍏ュ崗璋冨憳濮撳悕"
             clearable
             style="width: 200px"
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="鎮h�呯姸鎬�" prop="patientStatus">
+        <el-form-item label="鎮h�呯姸鎬�" prop="recordstate">
           <el-select
-            v-model="queryParams.patientStatus"
-            placeholder="璇烽�夋嫨鎮h�呯姸鎬�"
+            v-model="queryParams.recordstate"
+            placeholder="璇烽�夋嫨璁板綍鐘舵��"
             clearable
             style="width: 200px"
           >
@@ -48,6 +48,23 @@
             <el-option label="宸插畬鎴愭崘鐚�" value="4" />
             <el-option label="鏈畬鎴愭崘鐚�" value="5" />
           </el-select>
+        </el-form-item>
+        <el-form-item label="骞撮緞鑼冨洿" prop="ageRange">
+          <el-input
+            v-model="queryParams.startAge"
+            placeholder="鏈�灏忓勾榫�"
+            clearable
+            style="width: 95px"
+            @keyup.enter.native="handleQuery"
+          />
+          <span style="margin: 0 5px">-</span>
+          <el-input
+            v-model="queryParams.endAge"
+            placeholder="鏈�澶у勾榫�"
+            clearable
+            style="width: 95px"
+            @keyup.enter.native="handleQuery"
+          />
         </el-form-item>
         <el-form-item label="妗f褰曞叆鏃堕棿" prop="recordTimeRange">
           <el-date-picker
@@ -73,23 +90,6 @@
     <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="success"
-            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"
@@ -121,113 +121,101 @@
           width="120"
         />
         <el-table-column
-          label="娼滃湪鎹愮尞鑰呭鍚�"
+          label="鎹愮尞鑰呯紪鍙�"
           align="center"
-          prop="donorName"
+          prop="donorno"
           width="120"
         />
-        <el-table-column label="鎬у埆" align="center" prop="gender" width="80">
+        <el-table-column
+          label="娼滃湪鎹愮尞鑰呭鍚�"
+          align="center"
+          prop="name"
+          width="120"
+        />
+        <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="bloodtype"
+          width="80"
+        >
+          <template slot-scope="scope">
+            <dict-tag
+              :options="dict.type.sys_BloodType"
+              :value="scope.row.bloodtype"
+            /> </template
+        ></el-table-column>
+        <el-table-column
           label="鐤剧梾璇婃柇"
           align="center"
-          prop="diagnosis"
+          prop="diagnosisname"
           min-width="180"
           show-overflow-tooltip
         />
         <el-table-column
-          label="鎵�鍦ㄥ尰鐤楁満鏋�"
+          label="棣栬瘖鍖荤枟鏈烘瀯"
           align="center"
-          prop="hospitalName"
+          prop="treatmenthospitalname"
           width="150"
           show-overflow-tooltip
         />
         <el-table-column
-          label="鎮h�呯姸鎬�"
+          label="浣忛櫌鍙�"
           align="center"
-          prop="patientStatus"
+          prop="inpatientno"
           width="120"
-        >
-          <template slot-scope="scope">
-            <el-tag :type="statusFilter(scope.row.patientStatus)">
-              {{ statusTextFilter(scope.row.patientStatus) }}
-            </el-tag>
-          </template>
-        </el-table-column>
-        <el-table-column
-          label="鍏ラ櫌鏃堕棿"
-          align="center"
-          prop="admissionTime"
-          width="120"
-        >
-          <template slot-scope="scope">
-            <span>{{
-              scope.row.admissionTime
-                ? parseTime(scope.row.admissionTime, "{y}-{m}-{d}")
-                : "-"
-            }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column
-          label="鍑洪櫌鏃堕棿"
-          align="center"
-          prop="dischargeTime"
-          width="120"
-        >
-          <template slot-scope="scope">
-            <span>{{
-              scope.row.dischargeTime
-                ? parseTime(scope.row.dischargeTime, "{y}-{m}-{d}")
-                : "-"
-            }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column
-          label="鏈�鏂板煿鍏荤粨鏋�"
-          align="center"
-          prop="latestCultureResult"
-          width="120"
-        >
-          <template slot-scope="scope">
-            <el-tag
-              :type="scope.row.latestCultureResult === '闃存��' ? 'success' : 'danger'"
-              effect="plain"
-            >
-              {{ scope.row.latestCultureResult || '鏈娴�' }}
-            </el-tag>
-          </template>
-        </el-table-column>
+        />
         <!-- <el-table-column
-          label="鎶ょ悊鏍告煡琛ㄥ綍鍏ユ椂闂�"
+          label="璁板綍鐘舵��"
           align="center"
-          prop="lastRecordTime"
-          width="140"
+          prop="recordstate"
+          width="120"
         >
           <template slot-scope="scope">
-            <span>{{
-              scope.row.lastRecordTime
-                ? parseTime(scope.row.lastRecordTime, "{y}-{m}-{d} {h}:{i}")
-                : "-"
-            }}</span>
+            <el-tag :type="statusFilter(scope.row.recordstate)">
+              {{ statusTextFilter(scope.row.recordstate) }}
+            </el-tag>
           </template>
         </el-table-column> -->
         <el-table-column
           label="鍗忚皟鍛�"
           align="center"
-          prop="coordinator"
+          prop="coordinatorName"
           width="100"
         />
         <el-table-column
+          label="缁存姢椤圭洰"
+          align="center"
+          prop="itemName"
+          width="120"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="缁存姢鏃堕棿"
+          align="center"
+          prop="itemTime"
+          width="140"
+        >
+          <template slot-scope="scope">
+            <span>{{
+              scope.row.itemTime
+                ? parseTime(scope.row.itemTime, "{y}-{m}-{d} {h}:{i}")
+                : "-"
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
           label="鎿嶄綔"
           align="center"
-          width="180"
+          width="120"
           class-name="small-padding fixed-width"
         >
           <template slot-scope="scope">
@@ -238,20 +226,6 @@
               @click.stop="handleView(scope.row)"
               >璇︽儏</el-button
             >
-            <!-- <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-edit"
-              @click.stop="handleRecord(scope.row)"
-              >褰曞叆鏍告煡</el-button
-            >
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-document"
-              @click.stop="handleRecordList(scope.row)"
-              >璁板綍鏌ヨ</el-button
-            > -->
           </template>
         </el-table-column>
       </el-table>
@@ -269,13 +243,13 @@
 </template>
 
 <script>
-import { listMaintenance, delMaintenance, exportMaintenance } from "./mockMaintenanceApi";
+import { maintainList } from "@/api/businessApi";
 import Pagination from "@/components/Pagination";
 
 export default {
   name: "MaintenanceList",
   components: { Pagination },
-  dicts: ["sys_user_sex"],
+  dicts: ["sys_user_sex",'sys_BloodType'],
   data() {
     return {
       // 閬僵灞�
@@ -294,11 +268,19 @@
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        donorName: undefined,
-        hospitalName: undefined,
-        medicalStaff: undefined,
-        patientStatus: undefined,
-        recordTimeRange: []
+        name: undefined, // 鎹愮尞鑰呭鍚�
+        treatmenthospitalname: undefined, // 鍖荤枟鏈烘瀯鍚嶇О
+        coordinatorName: undefined, // 鍗忚皟鍛樺鍚�
+        recordstate: undefined, // 璁板綍鐘舵��
+        startAge: undefined, // 寮�濮嬪勾榫�
+        endAge: undefined, // 缁撴潫骞撮緞
+        caseNo: undefined, // 妗堜緥缂栧彿
+        donorno: undefined, // 鎹愮尞鑰呯紪鍙�
+        sex: undefined, // 鎬у埆
+        bloodtype: undefined, // 琛�鍨�
+        diagnosisname: undefined, // 鐤剧梾璇婃柇鍚嶇О
+        inpatientno: undefined, // 浣忛櫌鍙�
+        recordTimeRange: [] // 鏃堕棿鑼冨洿
       }
     };
   },
@@ -309,11 +291,11 @@
     // 鐘舵�佽繃婊ゅ櫒
     statusFilter(status) {
       const statusMap = {
-        "1": "primary",   // DCD
-        "2": "warning",   // DBD
-        "3": "info",       // DBCD
-        "4": "success",    // 宸插畬鎴愭崘鐚�
-        "5": "danger"      // 鏈畬鎴愭崘鐚�
+        "1": "primary", // DCD
+        "2": "warning", // DBD
+        "3": "info", // DBCD
+        "4": "success", // 宸插畬鎴愭崘鐚�
+        "5": "danger" // 鏈畬鎴愭崘鐚�
       };
       return statusMap[status] || "info";
     },
@@ -330,13 +312,45 @@
     // 鏌ヨ渚涜�呯淮鎶ゅ垪琛�
     getList() {
       this.loading = true;
-      listMaintenance(this.queryParams)
+
+      // 澶勭悊鏌ヨ鍙傛暟锛岃繃婊ゆ帀绌哄��
+      const params = this.cleanObject(this.queryParams);
+
+      // 澶勭悊鏃堕棿鑼冨洿鍙傛暟
+      if (params.recordTimeRange && params.recordTimeRange.length === 2) {
+        params.startTime = params.recordTimeRange[0] + " 00:00:00";
+        params.endTime = params.recordTimeRange[1] + " 23:59:59";
+        delete params.recordTimeRange;
+      }
+
+      // 鍒犻櫎鍒嗛〉鍙傛暟涓殑绌哄��
+      delete params.pageNum;
+      delete params.pageSize;
+
+      maintainList({
+        pageNum: this.queryParams.pageNum,
+        pageSize: this.queryParams.pageSize,
+        ...params
+      })
         .then(response => {
           if (response.code === 200) {
-            this.maintenanceList = response.data.rows;
-            this.total = response.data.total;
+            this.maintenanceList = response.data;
+            this.total = response.total || 0;
+
+            // 澶勭悊骞撮緞鏄剧ず
+            this.maintenanceList.forEach(item => {
+              if (item.startAge !== undefined && item.endAge !== undefined) {
+                item.age = `${item.startAge}-${item.endAge}`;
+              } else if (item.startAge !== undefined) {
+                item.age = `${item.startAge}+`;
+              } else if (item.endAge !== undefined) {
+                item.age = `0-${item.endAge}`;
+              } else {
+                item.age = "-";
+              }
+            });
           } else {
-            this.$message.error("鑾峰彇鏁版嵁澶辫触");
+            this.$message.error(response.msg || "鑾峰彇鏁版嵁澶辫触");
           }
           this.loading = false;
         })
@@ -346,6 +360,16 @@
           this.$message.error("鑾峰彇鏁版嵁澶辫触");
         });
     },
+    // 娓呯悊瀵硅薄涓殑绌哄��
+    cleanObject(obj) {
+      const cleaned = {};
+      Object.keys(obj).forEach(key => {
+        if (obj[key] !== undefined && obj[key] !== null && obj[key] !== "") {
+          cleaned[key] = obj[key];
+        }
+      });
+      return cleaned;
+    },
     // 鎼滅储鎸夐挳鎿嶄綔
     handleQuery() {
       this.queryParams.pageNum = 1;
@@ -353,8 +377,26 @@
     },
     // 閲嶇疆鎸夐挳鎿嶄綔
     resetQuery() {
-      this.$refs.queryForm.resetFields();
-      this.handleQuery();
+      this.queryParams = {
+        pageNum: 1,
+        pageSize: 10,
+        name: undefined,
+        treatmenthospitalname: undefined,
+        coordinatorName: undefined,
+        recordstate: undefined,
+        startAge: undefined,
+        endAge: undefined,
+        caseNo: undefined,
+        donorno: undefined,
+        sex: undefined,
+        bloodtype: undefined,
+        diagnosisname: undefined,
+        inpatientno: undefined,
+        recordTimeRange: []
+      };
+      this.$nextTick(() => {
+        this.getList();
+      });
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
@@ -366,64 +408,20 @@
     handleRowClick(row) {
       this.$router.push({
         path: "/case/maintainInfo",
-        query: { id: row.id }
+        query: { id: row.id, infoid: row.infoid }
       });
     },
     // 鏌ョ湅璇︽儏
     handleView(row) {
       this.$router.push({
         path: "/case/maintainInfo",
-        query: { id: row.id }
+        query: { id: row.id, infoid: row.infoid }
       });
-    },
-    // 褰曞叆鎶ょ悊鏍告煡
-    handleRecord(row) {
-      this.$router.push({
-        path: "/case/maintenance/record",
-        query: { id: row.id, maintenanceId: row.maintenanceId }
-      });
-    },
-    // 鏌ョ湅璁板綍鍒楄〃
-    handleRecordList(row) {
-      this.$router.push({
-        path: "/case/maintenance/records",
-        query: { id: row.id, maintenanceId: row.maintenanceId }
-      });
-    },
-    // 鏂板鎸夐挳鎿嶄綔
-    handleCreate() {
-      this.$router.push("/case/maintenance/add");
-    },
-    // 淇敼鎸夐挳鎿嶄綔
-    handleUpdate() {
-      const id = this.ids[0];
-      this.$router.push({
-        path: "/case/maintenance/edit",
-        query: { id: id }
-      });
-    },
-    // 鍒犻櫎鎸夐挳鎿嶄綔
-    handleDelete() {
-      const ids = this.ids;
-      this.$confirm("鏄惁纭鍒犻櫎閫変腑鐨勬暟鎹」锛�", "璀﹀憡", {
-        confirmButtonText: "纭畾",
-        cancelButtonText: "鍙栨秷",
-        type: "warning"
-      })
-        .then(() => {
-          return delMaintenance(ids);
-        })
-        .then(response => {
-          if (response.code === 200) {
-            this.$message.success("鍒犻櫎鎴愬姛");
-            this.getList();
-          }
-        })
-        .catch(() => {});
     },
     // 瀵煎嚭鎸夐挳鎿嶄綔
     handleExport() {
-      const queryParams = this.queryParams;
+      const queryParams = this.cleanObject(this.queryParams);
+
       this.$confirm("鏄惁纭瀵煎嚭鎵�鏈夌淮鎶ゆ暟鎹紵", "璀﹀憡", {
         confirmButtonText: "纭畾",
         cancelButtonText: "鍙栨秷",
@@ -431,13 +429,11 @@
       })
         .then(() => {
           this.loading = true;
-          return exportMaintenance(queryParams);
-        })
-        .then(response => {
-          if (response.code === 200) {
+          // 杩欓噷闇�瑕佽皟鐢ㄥ鍑烘帴鍙o紝鏆傛椂鐢ㄦā鎷熸垚鍔�
+          setTimeout(() => {
             this.$message.success("瀵煎嚭鎴愬姛");
-          }
-          this.loading = false;
+            this.loading = false;
+          }, 1000);
         })
         .catch(() => {
           this.loading = false;
@@ -449,17 +445,37 @@
       const date = new Date(time);
       if (pattern) {
         return pattern.replace(/{(\w+)}/g, (match, p) => {
-          switch(p) {
-            case 'y': return date.getFullYear();
-            case 'm': return (date.getMonth() + 1).toString().padStart(2, '0');
-            case 'd': return date.getDate().toString().padStart(2, '0');
-            case 'h': return date.getHours().toString().padStart(2, '0');
-            case 'i': return date.getMinutes().toString().padStart(2, '0');
-            default: return match;
+          switch (p) {
+            case "y":
+              return date.getFullYear();
+            case "m":
+              return (date.getMonth() + 1).toString().padStart(2, "0");
+            case "d":
+              return date
+                .getDate()
+                .toString()
+                .padStart(2, "0");
+            case "h":
+              return date
+                .getHours()
+                .toString()
+                .padStart(2, "0");
+            case "i":
+              return date
+                .getMinutes()
+                .toString()
+                .padStart(2, "0");
+            default:
+              return match;
           }
         });
       }
-      return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")}`;
+      return `${date.getFullYear()}-${(date.getMonth() + 1)
+        .toString()
+        .padStart(2, "0")}-${date
+        .getDate()
+        .toString()
+        .padStart(2, "0")}`;
     }
   }
 };

--
Gitblit v1.9.3