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 | 286 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 263 insertions(+), 23 deletions(-)
diff --git a/src/views/business/transfer/index.vue b/src/views/business/transfer/index.vue
index 9c33c9e..39faefb 100644
--- a/src/views/business/transfer/index.vue
+++ b/src/views/business/transfer/index.vue
@@ -281,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"
@@ -318,7 +427,8 @@
transportAdd,
transportEdit,
transportDelete,
- transportInfo
+ transportInfo,
+ donateList
} from "@/api/businessApi/index";
import TransportDetail from "./transportDetail";
import TransportEdit from "./TransportEdit";
@@ -329,6 +439,7 @@
dicts: ["sys_user_sex", "sys_BloodType"],
data() {
return {
+
// 閬僵灞�
loading: false,
// 閫変腑鏁扮粍
@@ -341,10 +452,12 @@
showSearch: true,
// 鎬绘潯鏁�
total: 0,
- // 杞繍鍗曡〃鏍兼暟鎹� - 鐩存帴浣跨敤鍚庣杩斿洖鐨勬暟鎹粨鏋�
+ // 杞繍鍗曡〃鏍兼暟鎹�
transportList: [],
// 璇︽儏寮规鏄惁鏄剧ず
detailOpen: false,
+ // 妗堜緥閫夋嫨寮规鏄惁鏄剧ず
+ selectCaseOpen: false,
// 鎿嶄綔纭寮规鏄惁鏄剧ず
actionOpen: false,
// 鏂板锛氫慨鏀瑰脊妗嗙浉鍏虫暟鎹�
@@ -366,28 +479,42 @@
pendingTransports: 0,
completedTransports: 0
},
- // 鏌ヨ鍙傛暟锛堝畬鍏ㄩ�傞厤鍚庣鎺ュ彛锛�
+ // 鏌ヨ鍙傛暟
queryParams: {
pageNum: 1,
pageSize: 10,
- caseNo: undefined, // 妗堜緥缂栧彿
- patName: undefined, // 鎮h�呭鍚�
- transitStatus: undefined, // 杞繍鐘舵�侊細1寰呰浆杩� 2杞繍涓� 3杞繍瀹屾垚 4杞繍鍙栨秷 5鏆傚瓨
- searchValue: undefined, // 鎼滅储鍊�
- params: {} // 鍏朵粬鍙傛暟瀵硅薄
+ caseNo: 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" // 闇�瑕佽浆杩�
}
};
},
created() {
this.getList();
+ this.checkAutoCreate();
},
methods: {
- /** 鏌ヨ杞繍鍗曞垪琛� - 鐩存帴浣跨敤鍚庣鏁版嵁缁撴瀯 */
+ /** 鏌ヨ杞繍鍗曞垪琛� */
async getList() {
this.loading = true;
try {
- // 鏋勫缓绗﹀悎鍚庣鎺ュ彛鐨勮姹傚弬鏁� [1,2](@ref)
const requestParams = {
pageNum: this.queryParams.pageNum,
pageSize: this.queryParams.pageSize,
@@ -397,20 +524,15 @@
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 || "鑾峰彇杞繍鍗曞垪琛ㄥけ璐�");
@@ -421,6 +543,109 @@
} finally {
this.loading = false;
}
+ },
+ 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
+ };
},
/** 鑾峰彇鐘舵�佹爣绛剧被鍨� */
@@ -496,20 +721,24 @@
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;
},
/** 淇濆瓨鎴愬姛澶勭悊 */
@@ -533,7 +762,7 @@
this.actionOpen = true;
},
- /** 纭鎿嶄綔 - 浣跨敤鍚庣鍘熷鏁版嵁缁撴瀯 [4](@ref) */
+ /** 纭鎿嶄綔 */
async confirmAction() {
try {
let requestData = {
@@ -546,12 +775,11 @@
requestData.transitStatus = 3; // 璁剧疆涓鸿浆杩愬畬鎴�
}
- // 鐩存帴浼犻�掑悗绔渶瑕佺殑鍙傛暟 [8](@ref)
const response = await transportEdit(requestData);
if (response.code === 200) {
this.$modal.msgSuccess(`${this.actionText}杞繍鎴愬姛`);
- this.getList(); // 鍒锋柊鍒楄〃
+ this.getList();
} else {
this.$modal.msgError(response.msg || `${this.actionText}杞繍澶辫触`);
}
@@ -562,7 +790,7 @@
this.actionOpen = false;
},
- /** 鍒犻櫎鎸夐挳鎿嶄綔 - 浣跨敤鍚庣鍘熷ID [1](@ref) */
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
async handleDelete(row) {
const ids = row.reportId || row.id || this.ids;
@@ -575,7 +803,7 @@
if (response.code === 200) {
this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
- this.getList(); // 鍒锋柊鍒楄〃
+ this.getList();
} else {
this.$modal.msgError(response.msg || "鍒犻櫎澶辫触");
}
@@ -589,7 +817,6 @@
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
handleExport() {
- // 鐩存帴浣跨敤鍚庣鍙傛暟缁撴瀯杩涜瀵煎嚭 [5](@ref)
this.download(
"system/transport/export",
{
@@ -597,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;
}
--
Gitblit v1.9.3