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/transfer/index.vue | 607 +++++++++++++++++++++++++++++++++---------------------
1 files changed, 373 insertions(+), 234 deletions(-)
diff --git a/src/views/business/transfer/index.vue b/src/views/business/transfer/index.vue
index c4d14c4..5325b13 100644
--- a/src/views/business/transfer/index.vue
+++ b/src/views/business/transfer/index.vue
@@ -2,16 +2,12 @@
<div class="app-container">
<!-- 鎼滅储绛涢�夊尯鍩� -->
<el-card class="filter-card">
- <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="80px">
- <el-form-item label="杞繍鍗曞彿" prop="transportNo">
- <el-input
- v-model="queryParams.transportNo"
- placeholder="璇疯緭鍏ヨ浆杩愬崟鍙�"
- clearable
- style="width: 200px"
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
+ <el-form
+ :model="queryParams"
+ ref="queryForm"
+ :inline="true"
+ label-width="80px"
+ >
<el-form-item label="妗堜緥缂栧彿" prop="caseNo">
<el-input
v-model="queryParams.caseNo"
@@ -21,22 +17,28 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
- <el-form-item label="鎹愮尞鑰呭鍚�" prop="donorName">
+ <el-form-item label="鎮h�呭鍚�" prop="patName">
<el-input
- v-model="queryParams.donorName"
- placeholder="璇疯緭鍏ユ崘鐚�呭鍚�"
+ v-model="queryParams.patName"
+ placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
- <el-form-item label="杞繍鐘舵��" prop="status">
- <el-select v-model="queryParams.status" placeholder="杞繍鐘舵��" clearable style="width: 200px">
- <el-option label="鍏ㄩ儴" value=""/>
- <el-option label="寰呭嚭鍙�" value="pending"/>
- <el-option label="杞繍涓�" value="transporting"/>
- <el-option label="宸插畬鎴�" value="completed"/>
- <el-option label="宸插彇娑�" value="cancelled"/>
+ <el-form-item label="杞繍鐘舵��" prop="transitStatus">
+ <el-select
+ v-model="queryParams.transitStatus"
+ placeholder="杞繍鐘舵��"
+ clearable
+ style="width: 200px"
+ >
+ <el-option label="鍏ㄩ儴" value="" />
+ <el-option label="寰呰浆杩�" :value="1" />
+ <el-option label="杞繍涓�" :value="2" />
+ <el-option label="杞繍瀹屾垚" :value="3" />
+ <el-option label="杞繍鍙栨秷" :value="4" />
+ <el-option label="鏆傚瓨" :value="5" />
</el-select>
</el-form-item>
<el-form-item label="鍒涘缓鏃堕棿">
@@ -51,7 +53,9 @@
></el-date-picker>
</el-form-item>
<el-form-item>
- <el-button type="primary" icon="el-icon-search" @click="handleQuery">鎼滅储</el-button>
+ <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>
@@ -97,71 +101,166 @@
<!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
<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-button type="primary" plain icon="el-icon-plus" @click="handleAdd"
+ >鏂板缓杞繍鍗�</el-button
+ >
</el-col>
<el-col :span="1.5">
- <el-button type="success" plain icon="el-icon-edit" :disabled="single" @click="handleUpdate">淇敼</el-button>
+ <el-button
+ type="success"
+ plain
+ icon="el-icon-edit"
+ :disabled="single"
+ @click="handleUpdate"
+ >淇敼</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-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ :disabled="multiple"
+ @click="handleDelete"
+ >鍒犻櫎</el-button
+ >
</el-col>
<el-col :span="1.5">
- <el-button type="warning" plain icon="el-icon-download" @click="handleExport">瀵煎嚭</el-button>
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ @click="handleExport"
+ >瀵煎嚭</el-button
+ >
</el-col>
- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+ <right-toolbar
+ :showSearch.sync="showSearch"
+ @queryTable="getList"
+ ></right-toolbar>
</el-row>
- <!-- 鏁版嵁琛ㄦ牸 -->
- <el-table v-loading="loading" :data="transportList" @selection-change="handleSelectionChange">
- <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="id" width="140"/>
- <el-table-column label="妗堜緥缂栧彿" align="center" prop="caseNo" width="140"/>
- <el-table-column label="鎹愮尞鑰呬俊鎭�" align="center" width="180">
+ <!-- 鏁版嵁琛ㄦ牸 - 鐩存帴浣跨敤鍚庣杩斿洖鐨勬暟鎹粨鏋� -->
+ <el-table
+ v-loading="loading"
+ :data="transportList"
+ @selection-change="handleSelectionChange"
+ >
+ <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="reportId"
+ 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">
- <div class="donor-name">{{ scope.row.donorName }}</div>
- <div class="donor-details">{{ scope.row.gender }} | {{ scope.row.age }}宀�</div>
+ <div class="donor-name">{{ scope.row.patName }}</div>
+ <div class="donor-details">
+ <dict-tag
+ :options="dict.type.sys_user_sex"
+ :value="parseInt(scope.row.sex)"
+ />
+ | {{ scope.row.age }}宀�
+ </div>
</div>
</template>
</el-table-column>
- <el-table-column label="鐤剧梾璇婃柇" align="center" prop="diagnosis" min-width="200" show-overflow-tooltip/>
- <el-table-column label="鍖荤枟鏈烘瀯" align="center" prop="hospitalName" width="150"/>
- <el-table-column label="璁″垝杞繍鏃堕棿" align="center" prop="transportTime" width="160"/>
- <el-table-column label="璐熻矗鍗忚皟鍛�" align="center" prop="coordinator" width="100"/>
- <el-table-column label="杞繍鐘舵��" align="center" prop="status" width="100">
+ <el-table-column
+ label="鐤剧梾璇婃柇"
+ align="center"
+ prop="diagnosisname"
+ min-width="200"
+ show-overflow-tooltip
+ />
+ <el-table-column
+ label="娌荤枟鍖婚櫌"
+ align="center"
+ prop="treatmentHospitalName"
+ width="150"
+ />
+ <el-table-column
+ label="璁″垝杞繍鏃堕棿"
+ align="center"
+ prop="transportStartTime"
+ width="160"
+ />
+ <el-table-column
+ label="璐熻矗鍗忚皟鍛�"
+ align="center"
+ prop="contactPerson"
+ width="100"
+ />
+ <el-table-column
+ label="杞繍鐘舵��"
+ align="center"
+ prop="transitStatus"
+ width="100"
+ >
<template slot-scope="scope">
- <el-tag :type="scope.row.status | statusFilter">
- {{ scope.row.statusText }}
+ <el-tag :type="getStatusTagType(scope.row.transitStatus)">
+ {{ getStatusText(scope.row.transitStatus) }}
</el-tag>
</template>
</el-table-column>
- <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="160"/>
- <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="220">
+ <el-table-column
+ label="鍒涘缓鏃堕棿"
+ align="center"
+ prop="createTime"
+ width="160"
+ />
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ class-name="small-padding fixed-width"
+ width="220"
+ >
<template slot-scope="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="handleUpdate(scope.row)">缂栬緫</el-button>
+ <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="handleUpdate(scope.row)"
+ >缂栬緫</el-button
+ >
<el-button
size="mini"
type="text"
icon="el-icon-video-play"
@click="handleStartTransport(scope.row)"
- v-if="scope.row.status === 'pending'"
- >寮�濮嬭浆杩�</el-button>
+ v-if="scope.row.transitStatus === 1"
+ >寮�濮嬭浆杩�</el-button
+ >
<el-button
size="mini"
type="text"
icon="el-icon-check"
@click="handleCompleteTransport(scope.row)"
- v-if="scope.row.status === 'transporting'"
- >瀹屾垚杞繍</el-button>
+ v-if="scope.row.transitStatus === 2"
+ >瀹屾垚杞繍</el-button
+ >
</template>
</el-table-column>
</el-table>
<!-- 鍒嗛〉 -->
<pagination
- v-show="total>0"
+ v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@@ -176,9 +275,20 @@
append-to-body
:close-on-click-modal="false"
>
- <transport-detail :transportData="currentTransport" @close="detailOpen = false"/>
+ <transport-detail
+ :transportData="currentTransport"
+ @close="detailOpen = false"
+ />
</el-dialog>
-
+ <!-- 鏂板锛氫慨鏀瑰脊妗� -->
+ <transport-edit
+ :edit-open="editOpen"
+ :transport-data="currentTransport"
+ :is-edit="isEditing"
+ @update:edit-open="editOpen = $event"
+ @close="handleEditClose"
+ @save-success="handleSaveSuccess"
+ />
<!-- 鎿嶄綔纭寮规 -->
<el-dialog
:title="actionTitle"
@@ -187,7 +297,11 @@
append-to-body
>
<div class="action-confirm">
- <p>纭畾瑕亄{ actionText }}杞繍鍗� "{{ currentTransport.id }}" 鍚楋紵</p>
+ <p>
+ 纭畾瑕亄{ actionText }}杞繍鍗� "{{
+ currentTransport.reportId || currentTransport.id
+ }}" 鍚楋紵
+ </p>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="actionOpen = false">鍙� 娑�</el-button>
@@ -198,12 +312,20 @@
</template>
<script>
-import { listTransport, getTransport, delTransport, updateTransportStatus } from "@/api/system/business";
-import TransportDetail from './transportDetail';
+import {
+ transportList,
+ transportAdd,
+ transportEdit,
+ transportDelete,
+ transportInfo
+} from "@/api/businessApi/index";
+import TransportDetail from "./transportDetail";
+import TransportEdit from "./TransportEdit";
export default {
name: "TransportList",
- components: { TransportDetail },
+ components: { TransportDetail, TransportEdit },
+ dicts: ["sys_user_sex", "sys_BloodType"],
data() {
return {
// 閬僵灞�
@@ -218,12 +340,15 @@
showSearch: true,
// 鎬绘潯鏁�
total: 0,
- // 杞繍鍗曡〃鏍兼暟鎹�
+ // 杞繍鍗曡〃鏍兼暟鎹� - 鐩存帴浣跨敤鍚庣杩斿洖鐨勬暟鎹粨鏋�
transportList: [],
// 璇︽儏寮规鏄惁鏄剧ず
detailOpen: false,
// 鎿嶄綔纭寮规鏄惁鏄剧ず
actionOpen: false,
+ // 鏂板锛氫慨鏀瑰脊妗嗙浉鍏虫暟鎹�
+ editOpen: false,
+ isEditing: false,
// 璇︽儏寮规鏍囬
detailTitle: "",
// 鎿嶄綔纭鏍囬
@@ -240,138 +365,101 @@
pendingTransports: 0,
completedTransports: 0
},
- // 鏌ヨ鍙傛暟
+ // 鏌ヨ鍙傛暟锛堝畬鍏ㄩ�傞厤鍚庣鎺ュ彛锛�
queryParams: {
pageNum: 1,
pageSize: 10,
- transportNo: undefined,
- caseNo: undefined,
- donorName: undefined,
- status: undefined
+ caseNo: undefined, // 妗堜緥缂栧彿
+ patName: undefined, // 鎮h�呭鍚�
+ transitStatus: undefined, // 杞繍鐘舵�侊細1寰呰浆杩� 2杞繍涓� 3杞繍瀹屾垚 4杞繍鍙栨秷 5鏆傚瓨
+ searchValue: undefined, // 鎼滅储鍊�
+ params: {} // 鍏朵粬鍙傛暟瀵硅薄
}
};
- },
- filters: {
- statusFilter(status) {
- const statusMap = {
- 'pending': 'warning',
- 'transporting': 'primary',
- 'completed': 'success',
- 'cancelled': 'danger'
- };
- return statusMap[status];
- }
},
created() {
this.getList();
},
methods: {
- /** 鏌ヨ杞繍鍗曞垪琛� */
- getList() {
+ /** 鏌ヨ杞繍鍗曞垪琛� - 鐩存帴浣跨敤鍚庣鏁版嵁缁撴瀯 */
+ async getList() {
this.loading = true;
- // 妯℃嫙API璋冪敤寤惰繜
- setTimeout(() => {
- // 娴嬭瘯鏁版嵁
- this.transportList = [
- {
- id: 'T20241217001',
- caseNo: 'DON20241216001',
- donorName: '寮犱笁',
- gender: '鐢�',
- age: 38,
- diagnosis: '鑴戝浼ゅ鑷磋剳姝讳骸锛岀粡鎶㈡晳鏃犳晥瀹e竷鑴戞浜°�傚灞炲悓鎰忓櫒瀹樻崘鐚��',
- hospitalName: '闈掑矝闀滄箹鍖婚櫌',
- transportTime: '2024-12-17 14:30:00',
- coordinator: '寮犲尰鐢�',
- createTime: '2024-12-16 09:30:00',
- status: 'pending',
- statusText: '寰呭嚭鍙�',
- departureLocation: '闈掑矝甯傜珛鍖婚櫌鎬ヨ瘖绉�',
- destinationHospital: '闈掑矝闀滄箹鍖婚櫌',
- emergencyDoctor: '鐜嬪尰鐢�',
- nurse: '鏉庢姢澹�',
- driver: '鍒樺笀鍌�',
- icuDoctor: '璧靛尰鐢�',
- contacts: [
- { role: '鍗忚皟鍛樼數璇�', phone: '13800138000' },
- { role: '鎬ヨ瘖鍖荤敓鐢佃瘽', phone: '13800138001' },
- { role: '鎶ゅ+鐢佃瘽', phone: '13800138002' },
- { role: '鍙告満鐢佃瘽', phone: '13800138003' },
- { role: 'ICU鍖荤敓鐢佃瘽', phone: '13800138004' }
- ],
- remarks: '闇�瑕佸噯澶囧懠鍚告満绛夋�ユ晳璁惧'
- },
- {
- id: 'T20241217002',
- caseNo: 'DON20241216002',
- donorName: '鏉庡洓',
- gender: '濂�',
- age: 45,
- diagnosis: '鑴戞姝伙紝鑴戝共鍔熻兘涓уけ',
- hospitalName: '闈掑矝澶у闄勫睘鍖婚櫌',
- transportTime: '2024-12-17 16:00:00',
- coordinator: '鏉庡尰鐢�',
- createTime: '2024-12-16 11:20:00',
- status: 'transporting',
- statusText: '杞繍涓�',
- departureLocation: '闈掑矝澶у闄勫睘鍖婚櫌ICU',
- destinationHospital: '闈掑矝鍣ㄥ畼绉绘涓績',
- currentLocation: '闈掑矝甯傚崡鍖洪娓腑璺�',
- estimatedTime: '30鍒嗛挓'
- },
- {
- id: 'T20241216003',
- caseNo: 'DON20241215001',
- donorName: '鐜嬩簲',
- gender: '鐢�',
- age: 52,
- diagnosis: '蹇冭剰楠ゅ仠锛屽鍣ㄥ畼鍔熻兘琛扮',
- hospitalName: '闈掑矝甯傜珛鍖婚櫌',
- transportTime: '2024-12-16 10:15:00',
- coordinator: '鐜嬪尰鐢�',
- createTime: '2024-12-15 14:45:00',
- status: 'completed',
- statusText: '宸插畬鎴�',
- departureLocation: '闈掑矝甯傜珛鍖婚櫌蹇冨唴绉�',
- destinationHospital: '闈掑矝鍣ㄥ畼绉绘涓績',
- completedTime: '2024-12-16 12:30:00',
- distance: '15鍏噷',
- duration: '2灏忔椂15鍒嗛挓'
- },
- {
- id: 'T20241216004',
- caseNo: 'DON20241214001',
- donorName: '璧靛叚',
- gender: '濂�',
- age: 29,
- diagnosis: '鎬ユ�ц倽琛扮',
- hospitalName: '闈掑矝绉戝ぇ鍖婚櫌',
- transportTime: '2024-12-16 08:30:00',
- coordinator: '璧靛尰鐢�',
- createTime: '2024-12-14 16:20:00',
- status: 'cancelled',
- statusText: '宸插彇娑�',
- cancelReason: '瀹跺睘涓存椂鏀瑰彉鍐冲畾'
- }
- ];
- // 鏇存柊缁熻鏁版嵁
- this.updateStats();
- this.total = this.transportList.length;
+ try {
+ // 鏋勫缓绗﹀悎鍚庣鎺ュ彛鐨勮姹傚弬鏁� [1,2](@ref)
+ const requestParams = {
+ pageNum: this.queryParams.pageNum,
+ pageSize: this.queryParams.pageSize,
+ caseNo: this.queryParams.caseNo,
+ patName: this.queryParams.patName,
+ transitStatus: this.queryParams.transitStatus,
+ searchValue: this.queryParams.searchValue
+ };
+
+ // 澶勭悊鏃堕棿鑼冨洿鍙傛暟 [5](@ref)
+ if (this.dateRange && this.dateRange.length === 2) {
+ requestParams.transportStartTime = this.dateRange.join(",");
+ }
+
+ // 璋冪敤姝e紡鎺ュ彛 [3](@ref)
+ const response = await transportList(requestParams);
+
+ if (response.code === 200) {
+ // 鐩存帴浣跨敤鍚庣杩斿洖鐨勬暟鎹粨鏋勶紝涓嶈繘琛岃浆鎹� [8](@ref)
+ this.transportList = response.rows || response.data || [];
+ this.total = response.total || 0;
+
+ // 鏇存柊缁熻鏁版嵁
+ this.updateStats();
+ } else {
+ this.$modal.msgError(response.msg || "鑾峰彇杞繍鍗曞垪琛ㄥけ璐�");
+ }
+ } catch (error) {
+ console.error("鑾峰彇杞繍鍗曞垪琛ㄥけ璐�:", error);
+ this.$modal.msgError("缃戠粶璇锋眰澶辫触锛岃绋嶅悗閲嶈瘯");
+ } finally {
this.loading = false;
- }, 500);
+ }
+ },
+
+ /** 鑾峰彇鐘舵�佹爣绛剧被鍨� */
+ getStatusTagType(transitStatus) {
+ const statusMap = {
+ 1: "warning", // 寰呰浆杩�
+ 2: "primary", // 杞繍涓�
+ 3: "success", // 杞繍瀹屾垚
+ 4: "danger", // 杞繍鍙栨秷
+ 5: "info" // 鏆傚瓨
+ };
+ return statusMap[transitStatus] || "info";
+ },
+
+ /** 鑾峰彇鐘舵�佹枃鏈� */
+ getStatusText(transitStatus) {
+ const statusMap = {
+ 1: "寰呰浆杩�",
+ 2: "杞繍涓�",
+ 3: "杞繍瀹屾垚",
+ 4: "杞繍鍙栨秷",
+ 5: "鏆傚瓨"
+ };
+ return statusMap[transitStatus] || "鏈煡鐘舵��";
},
// 鏇存柊缁熻鏁版嵁
updateStats() {
this.stats.totalTransports = this.transportList.length;
- this.stats.pendingTransports = this.transportList.filter(item => item.status === 'pending').length;
- this.stats.completedTransports = this.transportList.filter(item => item.status === 'completed').length;
+ this.stats.pendingTransports = this.transportList.filter(
+ item => item.transitStatus === 1
+ ).length;
+ this.stats.completedTransports = this.transportList.filter(
+ item => item.transitStatus === 3
+ ).length;
},
// 澶氶�夋閫変腑鏁版嵁
handleSelectionChange(selection) {
- this.ids = selection.map(item => item.id);
+ this.ids = selection.map(item => item.reportId || item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
@@ -385,82 +473,129 @@
/** 閲嶇疆鎸夐挳鎿嶄綔 */
resetQuery() {
this.dateRange = [];
- this.resetForm("queryForm");
- this.handleQuery();
+ this.queryParams = {
+ pageNum: 1,
+ pageSize: 10,
+ caseNo: undefined,
+ patName: undefined,
+ transitStatus: undefined,
+ searchValue: undefined
+ };
+ this.getList();
},
/** 璇︽儏鎸夐挳鎿嶄綔 */
handleDetail(row) {
this.currentTransport = row;
- this.detailTitle = `杞繍鍗曡鎯� - ${row.id}`;
+ this.detailTitle = `杞繍鍗曡鎯� - ${row.reportId || row.id}`;
this.detailOpen = true;
- },
-
- /** 寮�濮嬭浆杩愭搷浣� */
- handleStartTransport(row) {
- this.currentTransport = row;
- this.actionTitle = '寮�濮嬭浆杩�';
- this.actionText = '寮�濮�';
- this.actionOpen = true;
- },
-
- /** 瀹屾垚杞繍鎿嶄綔 */
- handleCompleteTransport(row) {
- this.currentTransport = row;
- this.actionTitle = '瀹屾垚杞繍';
- this.actionText = '瀹屾垚';
- this.actionOpen = true;
- },
-
- /** 纭鎿嶄綔 */
- confirmAction() {
- const index = this.transportList.findIndex(item => item.id === this.currentTransport.id);
- if (index !== -1) {
- if (this.actionText === '寮�濮�') {
- this.transportList[index].status = 'transporting';
- this.transportList[index].statusText = '杞繍涓�';
- } else if (this.actionText === '瀹屾垚') {
- this.transportList[index].status = 'completed';
- this.transportList[index].statusText = '宸插畬鎴�';
- this.transportList[index].completedTime = new Date().toLocaleString();
- }
-
- // 鏇存柊缁熻鏁版嵁
- this.updateStats();
-
- this.$modal.msgSuccess(`${this.actionText}鎴愬姛`);
- }
- this.actionOpen = false;
- },
-
- /** 鏂板鎸夐挳鎿嶄綔 */
- handleAdd() {
- this.$router.push('/transport/add');
},
/** 淇敼鎸夐挳鎿嶄綔 */
handleUpdate(row) {
- const id = row.id || this.ids[0];
- this.$router.push('/transport/edit/' + id);
+ this.currentTransport = row || {};
+ this.isEditing = true;
+ this.editOpen = true;
},
- /** 鍒犻櫎鎸夐挳鎿嶄綔 */
- handleDelete(row) {
- const ids = row.id || this.ids;
- this.$modal.confirm('鏄惁纭鍒犻櫎杞繍鍗曠紪鍙蜂负"' + ids + '"鐨勬暟鎹」锛�').then(() => {
- // 妯℃嫙鍒犻櫎鎿嶄綔
- this.transportList = this.transportList.filter(item => !ids.includes(item.id));
- this.total = this.transportList.length;
- this.updateStats();
- this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
- }).catch(() => {});
+ /** 鏂板缓杞繍鍗� */
+ handleAdd() {
+ this.currentTransport = {};
+ this.isEditing = false;
+ this.editOpen = true;
+ },
+
+ /** 淇敼寮规鍏抽棴澶勭悊 */
+ handleEditClose() {
+ this.editOpen = false;
+ this.currentTransport = {};
+ },
+
+ /** 淇濆瓨鎴愬姛澶勭悊 */
+ handleSaveSuccess() {
+ this.getList(); // 閲嶆柊鍔犺浇鍒楄〃
+ },
+
+ /** 寮�濮嬭浆杩愭搷浣� */
+ async handleStartTransport(row) {
+ this.currentTransport = row;
+ this.actionTitle = "寮�濮嬭浆杩�";
+ this.actionText = "寮�濮�";
+ this.actionOpen = true;
+ },
+
+ /** 瀹屾垚杞繍鎿嶄綔 */
+ async handleCompleteTransport(row) {
+ this.currentTransport = row;
+ this.actionTitle = "瀹屾垚杞繍";
+ this.actionText = "瀹屾垚";
+ this.actionOpen = true;
+ },
+
+ /** 纭鎿嶄綔 - 浣跨敤鍚庣鍘熷鏁版嵁缁撴瀯 [4](@ref) */
+ async confirmAction() {
+ try {
+ let requestData = {
+ id: this.currentTransport.id || this.currentTransport.reportId
+ };
+
+ if (this.actionText === "寮�濮�") {
+ requestData.transitStatus = 2; // 璁剧疆涓鸿浆杩愪腑
+ } else if (this.actionText === "瀹屾垚") {
+ requestData.transitStatus = 3; // 璁剧疆涓鸿浆杩愬畬鎴�
+ }
+
+ // 鐩存帴浼犻�掑悗绔渶瑕佺殑鍙傛暟 [8](@ref)
+ const response = await transportEdit(requestData);
+
+ if (response.code === 200) {
+ this.$modal.msgSuccess(`${this.actionText}杞繍鎴愬姛`);
+ this.getList(); // 鍒锋柊鍒楄〃
+ } else {
+ this.$modal.msgError(response.msg || `${this.actionText}杞繍澶辫触`);
+ }
+ } catch (error) {
+ console.error(`${this.actionText}杞繍澶辫触:`, error);
+ this.$modal.msgError("鎿嶄綔澶辫触锛岃绋嶅悗閲嶈瘯");
+ }
+ this.actionOpen = false;
+ },
+
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 - 浣跨敤鍚庣鍘熷ID [1](@ref) */
+ async handleDelete(row) {
+ const ids = row.reportId || row.id || this.ids;
+
+ try {
+ await this.$modal.confirm(
+ '鏄惁纭鍒犻櫎杞繍鍗曠紪鍙蜂负"' + ids + '"鐨勬暟鎹」锛�'
+ );
+
+ const response = await transportDelete(ids);
+
+ if (response.code === 200) {
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ this.getList(); // 鍒锋柊鍒楄〃
+ } else {
+ this.$modal.msgError(response.msg || "鍒犻櫎澶辫触");
+ }
+ } catch (error) {
+ if (error !== "cancel") {
+ console.error("鍒犻櫎澶辫触:", error);
+ this.$modal.msgError("鍒犻櫎澶辫触锛岃绋嶅悗閲嶈瘯");
+ }
+ }
},
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
handleExport() {
- this.download('system/transport/export', {
- ...this.queryParams
- }, `transport_${new Date().getTime()}.xlsx`)
+ // 鐩存帴浣跨敤鍚庣鍙傛暟缁撴瀯杩涜瀵煎嚭 [5](@ref)
+ this.download(
+ "system/transport/export",
+ {
+ ...this.queryParams
+ },
+ `transport_${new Date().getTime()}.xlsx`
+ );
}
}
};
@@ -486,15 +621,15 @@
}
.stats-card.total {
- border-left: 4px solid #409EFF;
+ border-left: 4px solid #409eff;
}
.stats-card.pending {
- border-left: 4px solid #E6A23C;
+ border-left: 4px solid #e6a23c;
}
.stats-card.completed {
- border-left: 4px solid #67C23A;
+ border-left: 4px solid #67c23a;
}
.stat-content {
@@ -525,7 +660,9 @@
}
.donor-info {
- text-align: left;
+ text-align: center;
+ display: flex;
+ justify-content: center
}
.donor-name {
@@ -534,8 +671,10 @@
}
.donor-details {
- font-size: 12px;
- color: #909399;
+ margin-left: 5px;
+ font-size: 16px;
+ color: #093ca4;
+ display: flex;
}
.mb8 {
--
Gitblit v1.9.3