From 0c03027d7f238bf5beb98e85463f53f0bd92bbaa Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期一, 20 四月 2026 17:56:01 +0800
Subject: [PATCH] 青岛维护
---
src/views/business/transfer/index.vue | 624 ++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 427 insertions(+), 197 deletions(-)
diff --git a/src/views/business/transfer/index.vue b/src/views/business/transfer/index.vue
index 817978b..39faefb 100644
--- a/src/views/business/transfer/index.vue
+++ b/src/views/business/transfer/index.vue
@@ -8,15 +8,6 @@
: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-item label="妗堜緥缂栧彿" prop="caseNo">
<el-input
v-model="queryParams.caseNo"
@@ -26,27 +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-form-item label="杞繍鐘舵��" prop="transitStatus">
<el-select
- v-model="queryParams.status"
+ v-model="queryParams.transitStatus"
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-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="鍒涘缓鏃堕棿">
@@ -148,7 +140,7 @@
></right-toolbar>
</el-row>
- <!-- 鏁版嵁琛ㄦ牸 -->
+ <!-- 鏁版嵁琛ㄦ牸 - 鐩存帴浣跨敤鍚庣杩斿洖鐨勬暟鎹粨鏋� -->
<el-table
v-loading="loading"
:data="transportList"
@@ -156,19 +148,28 @@
>
<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="reportId"
+ width="140"
+ />
<el-table-column
label="妗堜緥缂栧彿"
align="center"
prop="caseNo"
width="140"
/>
- <el-table-column label="鎹愮尞鑰呬俊鎭�" align="center" width="180">
+ <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-name">{{ scope.row.patName }}</div>
<div class="donor-details">
- {{ scope.row.gender }} | {{ scope.row.age }}宀�
+ <dict-tag
+ :options="dict.type.sys_user_sex"
+ :value="parseInt(scope.row.sex)"
+ />
+ | {{ scope.row.age }}宀�
</div>
</div>
</template>
@@ -176,37 +177,37 @@
<el-table-column
label="鐤剧梾璇婃柇"
align="center"
- prop="diagnosis"
+ prop="diagnosisname"
min-width="200"
show-overflow-tooltip
/>
<el-table-column
- label="鍖荤枟鏈烘瀯"
+ label="娌荤枟鍖婚櫌"
align="center"
- prop="hospitalName"
+ prop="treatmentHospitalName"
width="150"
/>
<el-table-column
label="璁″垝杞繍鏃堕棿"
align="center"
- prop="transportTime"
+ prop="transportStartTime"
width="160"
/>
<el-table-column
label="璐熻矗鍗忚皟鍛�"
align="center"
- prop="coordinator"
+ prop="contactPerson"
width="100"
/>
<el-table-column
label="杞繍鐘舵��"
align="center"
- prop="status"
+ 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>
@@ -219,6 +220,7 @@
<el-table-column
label="鎿嶄綔"
align="center"
+ fixed="right"
class-name="small-padding fixed-width"
width="220"
>
@@ -242,7 +244,7 @@
type="text"
icon="el-icon-video-play"
@click="handleStartTransport(scope.row)"
- v-if="scope.row.status === 'pending'"
+ v-if="scope.row.transitStatus === 1"
>寮�濮嬭浆杩�</el-button
>
<el-button
@@ -250,7 +252,7 @@
type="text"
icon="el-icon-check"
@click="handleCompleteTransport(scope.row)"
- v-if="scope.row.status === 'transporting'"
+ v-if="scope.row.transitStatus === 2"
>瀹屾垚杞繍</el-button
>
</template>
@@ -279,11 +281,120 @@
@close="detailOpen = false"
/>
</el-dialog>
+
+ <!-- 妗堜緥閫夋嫨瀵硅瘽妗� -->
+ <el-dialog
+ title="閫夋嫨杞繍妗堜緥"
+ :visible.sync="selectCaseOpen"
+ width="900px"
+ append-to-body
+ :close-on-click-modal="false"
+ >
+ <div class="case-select-container">
+ <el-card class="search-card">
+ <el-form :model="caseQueryParams" inline>
+ <el-form-item label="妗堜緥缂栧彿">
+ <el-input
+ v-model="caseQueryParams.caseNo"
+ placeholder="璇疯緭鍏ユ渚嬬紪鍙�"
+ clearable
+ style="width: 180px"
+ />
+ </el-form-item>
+ <el-form-item label="鎮h�呭鍚�">
+ <el-input
+ v-model="caseQueryParams.patName"
+ placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+ clearable
+ style="width: 150px"
+ />
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" @click="searchCaseList"
+ >鎼滅储</el-button
+ >
+ <el-button icon="el-icon-refresh" @click="resetCaseSearch"
+ >閲嶇疆</el-button
+ >
+ </el-form-item>
+ </el-form>
+ </el-card>
+
+ <el-card>
+ <el-table
+ v-loading="caseLoading"
+ :data="availableCaseList"
+ @row-click="handleCaseSelect"
+ highlight-current-row
+ style="width: 100%"
+ >
+ <el-table-column label="妗堜緥缂栧彿" prop="caseNo" width="150" align="center" />
+ <el-table-column label="鎮h�呭鍚�" prop="name" width="120" align="center" />
+ <el-table-column label="鎬у埆" width="80" align="center">
+ <template slot-scope="scope">
+ <dict-tag
+ :options="dict.type.sys_user_sex"
+ :value="scope.row.sex"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column label="骞撮緞" prop="age" width="80" align="center" />
+ <el-table-column label="琛�鍨�" width="80" align="center">
+ <template slot-scope="scope">
+ <dict-tag
+ :options="dict.type.sys_BloodType"
+ :value="scope.row.bloodType"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column label="鐤剧梾璇婃柇" prop="diagnosisname" min-width="200" show-overflow-tooltip />
+ <el-table-column label="娌荤枟鍖婚櫌" prop="treatmenthospitalname" width="150" />
+ <el-table-column label="鏄惁宸茶浆杩�" width="100" align="center">
+ <template slot-scope="scope">
+ <el-tag
+ :type="hasTransport(scope.row) ? 'danger' : 'success'"
+ size="small"
+ >
+ {{ hasTransport(scope.row) ? '宸茶浆杩�' : '鍙浆杩�' }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" width="80" align="center">
+ <template slot-scope="scope">
+ <el-button
+ type="text"
+ size="mini"
+ @click="selectCase(scope.row)"
+ :disabled="hasTransport(scope.row)"
+ >
+ 閫夋嫨
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <!-- 鍒嗛〉 -->
+ <pagination
+ v-show="caseTotal > 0"
+ :total="caseTotal"
+ :page.sync="caseQueryParams.pageNum"
+ :limit.sync="caseQueryParams.pageSize"
+ @pagination="searchCaseList"
+ />
+ </el-card>
+ </div>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="selectCaseOpen = false">鍙栨秷</el-button>
+ </div>
+ </el-dialog>
+
<!-- 鏂板锛氫慨鏀瑰脊妗� -->
<transport-edit
:edit-open="editOpen"
:transport-data="currentTransport"
:is-edit="isEditing"
+ :selected-case="selectedCase"
@update:edit-open="editOpen = $event"
@close="handleEditClose"
@save-success="handleSaveSuccess"
@@ -296,7 +407,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>
@@ -308,19 +423,23 @@
<script>
import {
- listTransport,
- getTransport,
- delTransport,
- updateTransportStatus
-} from "@/api/system/business";
+ transportList,
+ transportAdd,
+ transportEdit,
+ transportDelete,
+ transportInfo,
+ donateList
+} from "@/api/businessApi/index";
import TransportDetail from "./transportDetail";
import TransportEdit from "./TransportEdit";
export default {
name: "TransportList",
components: { TransportDetail, TransportEdit },
+ dicts: ["sys_user_sex", "sys_BloodType"],
data() {
return {
+
// 閬僵灞�
loading: false,
// 閫変腑鏁扮粍
@@ -337,6 +456,8 @@
transportList: [],
// 璇︽儏寮规鏄惁鏄剧ず
detailOpen: false,
+ // 妗堜緥閫夋嫨寮规鏄惁鏄剧ず
+ selectCaseOpen: false,
// 鎿嶄綔纭寮规鏄惁鏄剧ず
actionOpen: false,
// 鏂板锛氫慨鏀瑰脊妗嗙浉鍏虫暟鎹�
@@ -362,139 +483,209 @@
queryParams: {
pageNum: 1,
pageSize: 10,
- transportNo: undefined,
caseNo: undefined,
- donorName: undefined,
- status: undefined
+ patName: undefined,
+ transitStatus: undefined,
+ searchValue: undefined,
+ params: {}
+ },
+ // 妗堜緥閫夋嫨鐩稿叧
+ caseLoading: false,
+ availableCaseList: [],
+ caseTotal: 0,
+ selectedCase: null,
+ caseQueryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ caseNo: undefined,
+ patName: undefined,
+ // 鍙煡璇㈠凡鍚屾剰涓旈渶瑕佽浆杩愮殑妗堜緥
+ // reportStatus: "3", // 宸插悓鎰�
+ isTransport: "2" // 闇�瑕佽浆杩�
}
};
},
- filters: {
- statusFilter(status) {
- const statusMap = {
- pending: "warning",
- transporting: "primary",
- completed: "success",
- cancelled: "danger"
- };
- return statusMap[status];
- }
- },
created() {
this.getList();
+ this.checkAutoCreate();
},
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 {
+ 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
+ };
+
+ if (this.dateRange && this.dateRange.length === 2) {
+ requestParams.transportStartTime = this.dateRange.join(",");
+ }
+
+ const response = await transportList(requestParams);
+
+ if (response.code === 200) {
+ 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);
+ }
+ },
+ checkAutoCreate() {
+ const query = this.$route.query;
+ if (query.autoCreate === 'true') {
+ // 鑷姩鎵撳紑妗堜緥閫夋嫨寮规
+ this.selectCaseOpen = true;
+ this.resetCaseSearch();
+
+ // 濡傛灉鏈夌壒瀹氱殑妗堜緥缂栧彿锛屽彲浠ラ鍏堟悳绱�
+ if (query.caseNo) {
+ this.caseQueryParams.caseNo = query.caseNo;
+ this.searchCaseList();
+ }
+ }
+ },
+ /** 鎼滅储鍙敤妗堜緥 */
+ async searchCaseList() {
+ this.caseLoading = true;
+ try {
+ const response = await donateList(this.caseQueryParams);
+ if (response.code === 200) {
+ this.availableCaseList = response.rows || response.data || [];
+ this.caseTotal = response.total || 0;
+ } else {
+ this.$modal.msgError(response.msg || "鑾峰彇妗堜緥鍒楄〃澶辫触");
+ }
+ } catch (error) {
+ console.error("鑾峰彇妗堜緥鍒楄〃澶辫触:", error);
+ this.$modal.msgError("鑾峰彇妗堜緥鍒楄〃澶辫触");
+ } finally {
+ this.caseLoading = false;
+ }
+ },
+
+ /** 閲嶇疆妗堜緥鎼滅储 */
+ resetCaseSearch() {
+ this.caseQueryParams = {
+ pageNum: 1,
+ pageSize: 10,
+ caseNo: undefined,
+ patName: undefined,
+ // reportStatus: "3",
+ isTransport: "2"
+ };
+ this.searchCaseList();
+ },
+
+ /** 鍒ゆ柇妗堜緥鏄惁宸叉湁杞繍鍗� */
+ hasTransport(caseData) {
+ // 妫�鏌ユ渚嬫槸鍚︽湁杞繍淇℃伅
+ if (caseData.serviceTransport &&
+ Array.isArray(caseData.serviceTransport) &&
+ caseData.serviceTransport.length > 0) {
+ return true;
+ }
+ return false;
+ },
+
+ /** 閫夋嫨妗堜緥 */
+ selectCase(caseData) {
+ if (this.hasTransport(caseData)) {
+ this.$message.warning("璇ユ渚嬪凡鏈夎浆杩愬崟锛岃閫夋嫨鍏朵粬妗堜緥");
+ return;
+ }
+
+ this.selectedCase = caseData;
+ this.selectCaseOpen = false;
+
+ // 鎵撳紑杞繍鍗曠紪杈戦〉闈紝骞朵紶鍏ラ�変腑鐨勬渚�
+ this.currentTransport = this.convertCaseToTransport(caseData);
+ this.isEditing = false;
+ this.editOpen = true;
+ },
+
+ /** 灏嗘渚嬩俊鎭浆鎹负杞繍鍗曟牸寮� */
+ convertCaseToTransport(caseData) {
+ return {
+ caseNo: caseData.caseNo,
+ patName: caseData.name,
+ sex: caseData.sex,
+ age: caseData.age,
+ diagnosisname: caseData.diagnosisname,
+ treatmentHospitalName: caseData.treatmenthospitalname,
+ treatmentDeptName: caseData.treatmentdeptname,
+ // 鍏朵粬瀛楁鍙互鏍规嵁闇�瑕佷粠妗堜緥涓幏鍙�
+ transportStartPlace: caseData.treatmenthospitalname || '',
+ contactPerson: caseData.coordinatorName || '',
+ transitStatus: 1, // 榛樿寰呰浆杩�
+ // 娓呯┖鍏朵粬瀛楁
+ id: undefined,
+ reportId: undefined,
+ transportStartTime: undefined,
+ doctor: undefined,
+ doctorPhone: undefined,
+ nurse: undefined,
+ nursePhone: undefined,
+ driver: undefined,
+ driverPhone: undefined,
+ icuDoctor: undefined,
+ icuDoctorPhone: undefined,
+ annexfilesList: [],
+ remark: undefined
+ };
+ },
+
+ /** 鑾峰彇鐘舵�佹爣绛剧被鍨� */
+ 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"
+ item => item.transitStatus === 1
).length;
this.stats.completedTransports = this.transportList.filter(
- item => item.status === "completed"
+ 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;
},
@@ -504,46 +695,59 @@
this.queryParams.pageNum = 1;
this.getList();
},
+
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.dateRange = [];
+ this.queryParams = {
+ pageNum: 1,
+ pageSize: 10,
+ caseNo: undefined,
+ patName: undefined,
+ transitStatus: undefined,
+ searchValue: undefined
+ };
+ this.getList();
+ },
+
+ /** 璇︽儏鎸夐挳鎿嶄綔 */
+ handleDetail(row) {
+ this.currentTransport = row;
+ this.detailTitle = `杞繍鍗曡鎯� - ${row.reportId || row.id}`;
+ this.detailOpen = true;
+ },
+
/** 淇敼鎸夐挳鎿嶄綔 */
handleUpdate(row) {
this.currentTransport = row || {};
this.isEditing = true;
+ this.selectedCase = null; // 缂栬緫鏃朵笉浼犲叆妗堜緥淇℃伅
this.editOpen = true;
},
/** 鏂板缓杞繍鍗� */
handleAdd() {
+ // 鎵撳紑妗堜緥閫夋嫨寮规
+ this.selectCaseOpen = true;
+ this.selectedCase = null;
this.currentTransport = {};
- this.isEditing = false;
- this.editOpen = true;
+ this.resetCaseSearch(); // 閲嶇疆骞舵悳绱㈡渚�
},
/** 淇敼寮规鍏抽棴澶勭悊 */
handleEditClose() {
this.editOpen = false;
this.currentTransport = {};
+ this.selectedCase = null;
},
/** 淇濆瓨鎴愬姛澶勭悊 */
handleSaveSuccess() {
this.getList(); // 閲嶆柊鍔犺浇鍒楄〃
},
- /** 閲嶇疆鎸夐挳鎿嶄綔 */
- resetQuery() {
- this.dateRange = [];
- this.resetForm("queryForm");
- this.handleQuery();
- },
-
- /** 璇︽儏鎸夐挳鎿嶄綔 */
- handleDetail(row) {
- this.currentTransport = row;
- this.detailTitle = `杞繍鍗曡鎯� - ${row.id}`;
- this.detailOpen = true;
- },
/** 寮�濮嬭浆杩愭搷浣� */
- handleStartTransport(row) {
+ async handleStartTransport(row) {
this.currentTransport = row;
this.actionTitle = "寮�濮嬭浆杩�";
this.actionText = "寮�濮�";
@@ -551,7 +755,7 @@
},
/** 瀹屾垚杞繍鎿嶄綔 */
- handleCompleteTransport(row) {
+ async handleCompleteTransport(row) {
this.currentTransport = row;
this.actionTitle = "瀹屾垚杞繍";
this.actionText = "瀹屾垚";
@@ -559,47 +763,56 @@
},
/** 纭鎿嶄綔 */
- confirmAction() {
- const index = this.transportList.findIndex(
- item => item.id === this.currentTransport.id
- );
- if (index !== -1) {
+ async confirmAction() {
+ try {
+ let requestData = {
+ id: this.currentTransport.id || this.currentTransport.reportId
+ };
+
if (this.actionText === "寮�濮�") {
- this.transportList[index].status = "transporting";
- this.transportList[index].statusText = "杞繍涓�";
+ requestData.transitStatus = 2; // 璁剧疆涓鸿浆杩愪腑
} else if (this.actionText === "瀹屾垚") {
- this.transportList[index].status = "completed";
- this.transportList[index].statusText = "宸插畬鎴�";
- this.transportList[index].completedTime = new Date().toLocaleString();
+ requestData.transitStatus = 3; // 璁剧疆涓鸿浆杩愬畬鎴�
}
- // 鏇存柊缁熻鏁版嵁
- this.updateStats();
+ const response = await transportEdit(requestData);
- this.$modal.msgSuccess(`${this.actionText}鎴愬姛`);
+ 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;
},
-
-
-
-
/** 鍒犻櫎鎸夐挳鎿嶄綔 */
- 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();
+ 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("鍒犻櫎鎴愬姛");
- })
- .catch(() => {});
+ this.getList();
+ } else {
+ this.$modal.msgError(response.msg || "鍒犻櫎澶辫触");
+ }
+ } catch (error) {
+ if (error !== "cancel") {
+ console.error("鍒犻櫎澶辫触:", error);
+ this.$modal.msgError("鍒犻櫎澶辫触锛岃绋嶅悗閲嶈瘯");
+ }
+ }
},
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
@@ -611,12 +824,25 @@
},
`transport_${new Date().getTime()}.xlsx`
);
+ },
+
+ // 鐐瑰嚮琛岄�夋嫨妗堜緥
+ handleCaseSelect(row) {
+ this.selectCase(row);
}
}
};
</script>
<style scoped>
+.case-select-container {
+ max-height: 600px;
+ overflow: auto;
+}
+
+.search-card {
+ margin-bottom: 20px;
+}
.filter-card {
margin-bottom: 20px;
}
@@ -675,7 +901,9 @@
}
.donor-info {
- text-align: left;
+ text-align: center;
+ display: flex;
+ justify-content: center
}
.donor-name {
@@ -684,8 +912,10 @@
}
.donor-details {
- font-size: 12px;
- color: #909399;
+ margin-left: 5px;
+ font-size: 16px;
+ color: #093ca4;
+ display: flex;
}
.mb8 {
--
Gitblit v1.9.3