From f5e6487a78789ee372a8c6458bfd0cb740d6a0e8 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 13 五月 2026 22:13:58 +0800
Subject: [PATCH] 青岛维护
---
src/views/business/appear/index.vue | 432 +++--
src/views/business/OrganUtilization/OrganUtilizationInfo.vue | 243 --
src/views/business/decide/DecideInfo copy.vue | 816 ++++++++++
src/views/business/transfer/index.vue | 26
src/views/business/decide/DecideInfo.vue | 958 ++++++++---
src/components/assessInfoComponents/OrganAssessmentForm.vue | 138 +
src/views/business/appear/caseDetail.vue | 28
src/views/business/appear/index copy.vue | 1801 +++++++++++++++++++++++
src/views/business/assess/assessInfo.vue | 209 +-
9 files changed, 3,856 insertions(+), 795 deletions(-)
diff --git a/src/components/assessInfoComponents/OrganAssessmentForm.vue b/src/components/assessInfoComponents/OrganAssessmentForm.vue
index a3be60e..bccb24d 100644
--- a/src/components/assessInfoComponents/OrganAssessmentForm.vue
+++ b/src/components/assessInfoComponents/OrganAssessmentForm.vue
@@ -1,6 +1,20 @@
<template>
<div class="organ-assessment-form">
<el-form :model="formData" label-width="120px">
+ <!-- 娣诲姞璇勪及鏃堕棿瀛楁 -->
+ <el-form-item label="璇勪及鏃堕棿">
+ <el-date-picker
+ v-model="formData.assessmentTime"
+ type="datetime"
+ placeholder="閫夋嫨璇勪及鏃堕棿"
+ format="yyyy-MM-dd HH:mm:ss"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ :default-value="new Date()"
+ style="width: 100%"
+ />
+ </el-form-item>
+
+ <!-- 鍙妯″紡涓嬫樉绀鸿瘎浼版椂闂� -->
<el-form-item label="鍔熻兘鐘舵��">
<el-select v-model="formData.functionStatus">
<el-option label="姝e父" value="1" />
@@ -77,7 +91,7 @@
</el-table-column>
<el-table-column label="涓婁紶鏃堕棿" width="160">
<template slot-scope="scope">
- <span>{{ formatDateTime(scope.row.uploadTime) }}</span>
+ <span>{{ scope.row.uploadTime }}</span>
</template>
</el-table-column>
<el-table-column label="鏂囦欢澶у皬" width="100">
@@ -179,6 +193,7 @@
formData: {
functionStatus: "",
assessmentOpinion: "",
+ assessmentTime: "", // 鏂板璇勪及鏃堕棿瀛楁
attachments: []
},
// 棰勮鐩稿叧
@@ -215,6 +230,14 @@
},
created() {
this.initData();
+ // 濡傛灉璇勪及鏃堕棿涓虹┖锛岃缃粯璁ゅ��
+ if (!this.formData.assessmentTime) {
+ this.$set(
+ this.formData,
+ "assessmentTime",
+ this.getDefaultAssessmentTime()
+ );
+ }
},
methods: {
// 鍒濆鍖栨暟鎹�
@@ -223,6 +246,7 @@
this.formData = {
functionStatus: "",
assessmentOpinion: "",
+ assessmentTime: this.getDefaultAssessmentTime(),
attachments: []
};
this.attachmentFileList = [];
@@ -241,14 +265,26 @@
) {
this.currentAssessment = assessData[this.assessmentIndex];
- // 娣辨嫹璐濇暟鎹紝閬垮厤淇敼鍘熷鏁版嵁
+ // 娣辨嫹璐濇暟鎹�
const assessmentCopy = JSON.parse(
JSON.stringify(this.currentAssessment)
);
+ // 澶勭悊璇勪及鏃堕棿
+ let assessmentTime = assessmentCopy.assessmentTime;
+
+ // 濡傛灉鏃堕棿涓嶆槸鏈夋晥鐨勬棩鏈熷瓧绗︿覆锛屼娇鐢ㄩ粯璁ゅ��
+ if (!this.isValidDate(assessmentTime)) {
+ assessmentTime = this.getDefaultAssessmentTime();
+ } else {
+ // 纭繚鏃堕棿鏍煎紡姝g‘
+ assessmentTime = this.formatDateForPicker(assessmentTime);
+ }
+
this.formData = {
functionStatus: assessmentCopy.functionStatus || "",
assessmentOpinion: assessmentCopy.assessmentOpinion || "",
+ assessmentTime: assessmentTime, // 澶勭悊鍚庣殑鏃堕棿
attachments: Array.isArray(assessmentCopy.attachments)
? [...assessmentCopy.attachments]
: []
@@ -272,17 +308,64 @@
this.resetForm();
}
},
+ // 楠岃瘉鏃ユ湡鏄惁鏈夋晥
+ isValidDate(dateString) {
+ if (!dateString) return false;
+ try {
+ const date = new Date(dateString);
+ return !isNaN(date.getTime()) && dateString.trim() !== "";
+ } catch (error) {
+ return false;
+ }
+ },
+
+ // 涓烘棩鏈熼�夋嫨鍣ㄦ牸寮忓寲鏃ユ湡
+ formatDateForPicker(dateString) {
+ if (!dateString) return "";
+
+ try {
+ const date = new Date(dateString);
+ if (isNaN(date.getTime())) {
+ return this.getDefaultAssessmentTime();
+ }
+
+ // 鏍煎紡鍖栦负 yyyy-MM-dd HH:mm:ss
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, "0");
+ const day = String(date.getDate()).padStart(2, "0");
+ const hours = String(date.getHours()).padStart(2, "0");
+ const minutes = String(date.getMinutes()).padStart(2, "0");
+ const seconds = String(date.getSeconds()).padStart(2, "0");
+
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+ } catch (error) {
+ console.error("鏃ユ湡鏍煎紡鍖栭敊璇�:", error);
+ return this.getDefaultAssessmentTime();
+ }
+ },
// 閲嶇疆琛ㄥ崟
resetForm() {
this.formData = {
functionStatus: "",
assessmentOpinion: "",
+ assessmentTime: this.getDefaultAssessmentTime(), // 璁剧疆榛樿鏃堕棿
attachments: []
};
this.attachmentFileList = [];
},
+ // 鑾峰彇榛樿璇勪及鏃堕棿
+ getDefaultAssessmentTime() {
+ const now = new Date();
+ const year = now.getFullYear();
+ const month = String(now.getMonth() + 1).padStart(2, "0");
+ const day = String(now.getDate()).padStart(2, "0");
+ const hours = String(now.getHours()).padStart(2, "0");
+ const minutes = String(now.getMinutes()).padStart(2, "0");
+ const seconds = String(now.getSeconds()).padStart(2, "0");
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+ },
// 淇濆瓨璇勪及
handleSave() {
// 楠岃瘉蹇呰瀛楁
@@ -296,20 +379,31 @@
return;
}
+ if (!this.formData.assessmentTime) {
+ this.$message.warning("璇烽�夋嫨璇勪及鏃堕棿");
+ return;
+ }
+
+ // 楠岃瘉鏃堕棿鏍煎紡
+ if (!this.isValidDate(this.formData.assessmentTime)) {
+ this.$message.warning("璇勪及鏃堕棿鏍煎紡涓嶆纭紝璇烽噸鏂伴�夋嫨");
+ return;
+ }
+
// 鍑嗗淇濆瓨鐨勬暟鎹�
const saveData = {
functionStatus: this.formData.functionStatus,
assessmentOpinion: this.formData.assessmentOpinion,
+ assessmentTime: this.formData.assessmentTime,
attachments: Array.isArray(this.formData.attachments)
? [...this.formData.attachments]
: []
};
- // 娣诲姞璇勪及鑰呭拰璇勪及鏃堕棿
+ // 娣诲姞璇勪及鑰�
const assessmentData = {
...saveData,
- assessor: this.currentUser.name,
- assessmentTime: new Date().toISOString()
+ assessor: this.currentUser.name
};
console.log("鍙戦�佷繚瀛樿姹�:", assessmentData);
@@ -320,7 +414,6 @@
assessmentIndex: this.assessmentIndex
});
},
-
handleCancel() {
this.$emit("cancel");
},
@@ -369,7 +462,7 @@
/** 涓婁紶鎴愬姛澶勭悊 */
handleUploadSuccess({ file, fileList, response }) {
- console.log(response,'response');
+ console.log(response, "response");
if (response.code === 200) {
console.log(response, "涓婁紶鏁版嵁");
@@ -509,26 +602,6 @@
const sizes = ["B", "KB", "MB", "GB"];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
- },
-
- /** 鏃ユ湡鏃堕棿鏍煎紡鍖� */
- formatDateTime(dateTime) {
- if (!dateTime) return "";
-
- try {
- const date = new Date(dateTime);
- if (isNaN(date.getTime())) return dateTime;
-
- const year = date.getFullYear();
- const month = String(date.getMonth() + 1).padStart(2, "0");
- const day = String(date.getDate()).padStart(2, "0");
- const hours = String(date.getHours()).padStart(2, "0");
- const minutes = String(date.getMinutes()).padStart(2, "0");
-
- return `${year}-${month}-${day} ${hours}:${minutes}`;
- } catch (error) {
- return dateTime;
- }
}
}
};
@@ -581,7 +654,16 @@
font-size: 13px;
margin-left: 8px;
}
-
+.readonly-time {
+ font-size: 14px;
+ color: #606266;
+ font-weight: 500;
+ padding: 8px 15px;
+ background: #f5f7fa;
+ border-radius: 4px;
+ display: inline-block;
+ min-width: 200px;
+}
::v-deep .el-upload__tip {
font-size: 12px;
color: #909399;
diff --git a/src/views/business/OrganUtilization/OrganUtilizationInfo.vue b/src/views/business/OrganUtilization/OrganUtilizationInfo.vue
index 9a5a8b1..534c3a6 100644
--- a/src/views/business/OrganUtilization/OrganUtilizationInfo.vue
+++ b/src/views/business/OrganUtilization/OrganUtilizationInfo.vue
@@ -1,53 +1,28 @@
<template>
<div class="organ-utilization-detail">
<case-basic-info :case-id="caseId" :show-attachment="true" />
-
- <!-- 鍩烘湰淇℃伅 -->
- <el-card class="detail-card">
- <div slot="header" class="clearfix">
- <span class="detail-title">鍣ㄥ畼鍒╃敤鍩烘湰淇℃伅</span>
- <div style="float: right;">
- <el-button type="primary" @click="handleSave" :loading="saveLoading">
- 淇濆瓨
- </el-button>
- <el-button
- type="success"
- @click="handleComplete"
- :loading="confirmLoading"
- >
- 瀹屾垚鍒╃敤
- </el-button>
- </div>
- </div>
-
- <el-form :model="form" ref="form" :rules="rules" label-width="120px">
- <el-row :gutter="20">
- <el-col :span="6">
- <el-form-item align="left" label="閬椾綋鎹愮尞" prop="isbodydonation">
- <el-radio-group v-model="form.isbodydonation">
- <el-radio
- v-for="dict in dict.type.sys_0_1 || []"
- :key="dict.value"
- :label="dict.value"
- >{{ dict.label }}</el-radio
- >
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :span="18">
- <el-form-item
- align="left"
- label="鎺ユ敹鍗曚綅"
- prop="receivingunitname"
+ <el-form :model="form" ref="form" :rules="rules" label-width="120px">
+ <!-- 鍩烘湰淇℃伅 -->
+ <el-card class="detail-card">
+ <div slot="header" class="clearfix">
+ <span class="detail-title">鍣ㄥ畼鍒╃敤鍩烘湰淇℃伅</span>
+ <div style="float: right;">
+ <el-button
+ type="primary"
+ @click="handleSave"
+ :loading="saveLoading"
>
- <el-input
- v-model="form.receivingunitname"
- placeholder="璇疯緭鍏ユ帴鏀跺崟浣�"
- :disabled="form.isbodydonation !== '1'"
- />
- </el-form-item>
- </el-col>
- </el-row>
+ 淇濆瓨
+ </el-button>
+ <el-button
+ type="success"
+ @click="handleComplete"
+ :loading="confirmLoading"
+ >
+ 瀹屾垚鍒╃敤
+ </el-button>
+ </div>
+ </div>
<el-row :gutter="20">
<el-col :span="6">
@@ -103,15 +78,58 @@
</el-form-item>
</el-col>
</el-row>
- </el-form>
- </el-card>
+ </el-card>
+ <el-card class="detail-card">
+ <div slot="header" class="clearfix">
+ <span class="detail-title">閬椾綋鎹愮尞淇℃伅</span>
+ </div>
+ <el-row :gutter="20">
+ <el-col :span="6">
+ <el-form-item align="left" label="閬椾綋鎹愮尞" prop="isbodydonation">
+ <el-radio-group v-model="form.isbodydonation">
+ <el-radio
+ v-for="dict in dict.type.sys_0_1 || []"
+ :key="dict.value"
+ :label="dict.value"
+ >{{ dict.label }}</el-radio
+ >
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="18" v-if="form.isbodydonation==1">
+ <el-form-item
+ align="left"
+ label="鎺ユ敹鍗曚綅"
+ prop="receivingunitname"
+ >
+ <el-input
+ v-model="form.receivingunitname"
+ placeholder="璇疯緭鍏ユ帴鏀跺崟浣�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8" v-else>
+ <el-form-item
+ align="left"
+ label="鎺ユ敹瀹跺睘"
+ prop="relationname"
+ >
+ <el-input
+ v-model="form.relationname"
+ placeholder="璇疯緭鍏ユ帴鏀跺灞�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-card>
+ </el-form>
<!-- 鍣ㄥ畼鍒╃敤璁板綍閮ㄥ垎 - 鏁村悎鍙楄�呰鎯� -->
<el-card class="utilization-card">
<div slot="header" class="clearfix">
<span class="detail-title">鍣ㄥ畼鍒╃敤璁板綍</span>
<div style="float: right;">
- <dict-tag
+ <dict-tag
:options="dict.type.utilize_statue"
:value="form.completeState"
/>
@@ -451,34 +469,6 @@
<el-input v-model="scope.row.name" placeholder="鍙楄�呭鍚�" />
</template>
</el-table-column>
-
- <el-table-column
- label="鎿嶄綔"
- align="center"
- class-name="small-padding fixed-width"
- v-if="form.completeState !== '3'"
- >
- <template slot-scope="scope">
- <el-button
- size="mini"
- type="text"
- icon="el-icon-edit"
- @click="handleEditUtilization(scope.row)"
- >
- 缂栬緫
- </el-button>
- <el-button
- size="mini"
- type="text"
- icon="el-icon-delete"
- style="color: #F56C6C;"
- @click="handleRemoveOrgan(scope.$index)"
- v-if="!scope.row.id"
- >
- 鍒犻櫎
- </el-button>
- </template>
- </el-table-column>
</el-table>
</el-form-item>
</el-col>
@@ -584,76 +574,6 @@
</div>
</el-card>
- <!-- 缂栬緫鍒╃敤璁板綍瀵硅瘽妗� -->
- <el-dialog
- title="缂栬緫鍣ㄥ畼鍒╃敤璁板綍"
- :visible.sync="editDialogVisible"
- width="600px"
- >
- <el-form :model="currentRecord" label-width="120px">
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鍣ㄥ畼鍚嶇О">
- <el-input v-model="currentRecord.organname" readonly />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="绉绘鐘舵��">
- <el-select
- v-model="currentRecord.transplantstate"
- style="width: 100%"
- >
- <el-option
- v-for="dict in transplantStatusList"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- />
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-form-item
- label="鏈Щ妞嶅師鍥�"
- v-if="currentRecord.transplantstate === '0'"
- >
- <el-input
- type="textarea"
- :rows="3"
- v-model="currentRecord.abandonreason"
- placeholder="璇疯緭鍏ユ湭绉绘鍘熷洜"
- />
- </el-form-item>
- <el-form-item
- label="绉绘鍖婚櫌"
- v-if="currentRecord.transplantstate === '1'"
- >
- <el-select
- v-model="currentRecord.hospitalno"
- placeholder="璇烽�夋嫨绉绘鍖婚櫌"
- style="width: 100%"
- >
- <el-option
- v-for="hospital in hospitalList"
- :key="hospital.hospitalNo"
- :label="hospital.hospitalName"
- :value="hospital.hospitalNo"
- />
- </el-select>
- </el-form-item>
- <el-form-item
- label="鍙楄�呭鍚�"
- v-if="currentRecord.transplantstate === '1'"
- >
- <el-input v-model="currentRecord.name" placeholder="璇疯緭鍏ュ彈鑰呭鍚�" />
- </el-form-item>
- </el-form>
- <div slot="footer">
- <el-button @click="editDialogVisible = false">鍙栨秷</el-button>
- <el-button type="primary" @click="handleEditConfirm">纭</el-button>
- </div>
- </el-dialog>
-
<!-- 鏂囦欢棰勮瀵硅瘽妗� -->
<FilePreviewDialog
:visible="filePreviewVisible"
@@ -682,7 +602,7 @@
FilePreviewDialog,
CaseBasicInfo
},
- dicts: ["sys_BloodType", "sys_Organ", "sys_0_1",'utilize_statue'],
+ dicts: ["sys_BloodType", "sys_Organ", "sys_0_1", "utilize_statue"],
data() {
return {
caseId: null,
@@ -1093,31 +1013,6 @@
// 琛屽睍寮�浜嬩欢
handleExpandChange(row, expandedRows) {
this.expandedRows = expandedRows.map(item => item.organno);
- },
-
- // 缂栬緫鍒╃敤璁板綍
- handleEditUtilization(row) {
- const index = this.utilizationData.serviceDonatecomporganList.findIndex(
- item => item.organno === row.organno
- );
- if (index !== -1) {
- this.currentRecord = { ...row };
- this.currentEditIndex = index;
- this.editDialogVisible = true;
- }
- },
-
- // 纭缂栬緫
- handleEditConfirm() {
- if (this.currentEditIndex !== -1) {
- this.utilizationData.serviceDonatecomporganList[
- this.currentEditIndex
- ] = {
- ...this.currentRecord
- };
- this.$message.success("鍒╃敤璁板綍鏇存柊鎴愬姛");
- this.editDialogVisible = false;
- }
},
// 鍒犻櫎鍣ㄥ畼璁板綍
@@ -1854,6 +1749,7 @@
.recipient-form {
padding: 15px;
}
+
.attachment-header {
flex-wrap: wrap;
}
@@ -1863,6 +1759,7 @@
margin-top: 8px;
margin-left: 0;
}
+
.form-section {
margin-bottom: 20px;
padding-bottom: 15px;
diff --git a/src/views/business/appear/caseDetail.vue b/src/views/business/appear/caseDetail.vue
index 1e41453..3b27c8b 100644
--- a/src/views/business/appear/caseDetail.vue
+++ b/src/views/business/appear/caseDetail.vue
@@ -132,7 +132,6 @@
<!-- <el-descriptions-item label="閮ㄩ棬缂栧彿">{{
caseData.deptNo || "-"
}}</el-descriptions-item> -->
-
</el-descriptions>
</el-card>
@@ -142,7 +141,7 @@
<span class="section-title">涓婃姤淇℃伅</span>
</div>
<el-descriptions :column="2" border>
- <el-descriptions-item label="涓婃姤鍖婚櫌">{{
+ <el-descriptions-item label="涓婃姤鍖婚櫌">{{
caseData.toHospital || "-"
}}</el-descriptions-item>
<el-descriptions-item label="鎶ュ憡鑰呭鍚�">{{
@@ -295,6 +294,15 @@
{{ caseData.reportStatus === "3" ? "宸插悓鎰�" : "宸查┏鍥�" }}
</el-tag>
</el-descriptions-item>
+ <el-descriptions-item
+ label="椹冲洖鍘熷洜"
+ v-if="caseData.reportStatus == 4"
+ >
+ <dict-tag
+ :options="dict.type.reject_type"
+ :value="caseData.rejectType"
+ />
+ </el-descriptions-item>
<el-descriptions-item label="瀹℃壒浜�">{{
caseData.updateBy || "-"
}}</el-descriptions-item>
@@ -302,7 +310,7 @@
formatDateTime(caseData.updateTime)
}}</el-descriptions-item>
<el-descriptions-item label="瀹℃壒鎰忚">{{
- caseData.remark || "鏃�"
+ caseData.confirmResult || "鏃�"
}}</el-descriptions-item>
</el-descriptions>
</el-card>
@@ -424,7 +432,7 @@
default: true
}
},
- dicts: ["sys_user_sex", "sys_BloodType",'sys_Infectious'],
+ dicts: ["sys_user_sex", "sys_BloodType", "sys_Infectious", "reject_type"],
data() {
return {
// 棰勮鐩稿叧
@@ -432,7 +440,14 @@
currentPreviewFile: null,
// 鍥剧墖棰勮鐩稿叧
- imagePreviewUrls: []
+ imagePreviewUrls: [],
+ rejectOptions: [
+ { label: "濂借浆", value: "1" },
+ { label: "姝讳骸", value: "2" },
+ { label: "涓嶇鍚堟崘鐚爣鍑�", value: "3" },
+ { label: "瀹跺睘鏀惧純鎹愮尞", value: "4" },
+ { label: "鍏朵粬", value: "5" }
+ ]
};
},
computed: {
@@ -523,8 +538,9 @@
/** 鍒涘缓杞繍鍗� */
handleCreateTransport() {
this.$router.push({
- path: "/business/transport/create",
+ path: "/report/transfer",
query: {
+ autoCreate: "true",
caseId: this.caseData.id,
caseNo: this.caseData.caseNo,
patName: this.caseData.name,
diff --git a/src/views/business/appear/index copy.vue b/src/views/business/appear/index copy.vue
new file mode 100644
index 0000000..81e306f
--- /dev/null
+++ b/src/views/business/appear/index copy.vue
@@ -0,0 +1,1801 @@
+<template>
+ <div class="app-container">
+ <!-- 鎼滅储绛涢�夊尯鍩� -->
+ <el-card class="filter-card">
+ <el-form
+ :model="queryParams"
+ ref="queryForm"
+ :inline="true"
+ class="demo-form-inline"
+ >
+ <el-form-item label="濮撳悕" prop="name">
+ <el-input
+ v-model="queryParams.name"
+ placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+ clearable
+ style="width: 200px"
+ />
+ </el-form-item>
+ <el-form-item label="涓婃姤鍖婚櫌" prop="caseNo">
+ <el-input
+ v-model="queryParams.caseNo"
+ placeholder="璇疯緭鍏ヤ笂鎶ユ渚嬬紪鍙�"
+ clearable
+ style="width: 200px"
+ />
+ </el-form-item>
+ <el-form-item label="涓婃姤鐘舵��" prop="reportStatus">
+ <el-select
+ v-model="queryParams.reportStatus"
+ placeholder="璇烽�夋嫨鐘舵��"
+ clearable
+ style="width: 200px"
+ >
+ <el-option label="鍏ㄩ儴" value="" />
+ <el-option label="宸查槄璇�" value="2" />
+ <el-option label="宸插悓鎰�" value="3" />
+ <el-option label="宸查┏鍥�" value="4" />
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <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>
+ </el-card>
+
+ <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+ <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-col> -->
+
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ :disabled="multiple"
+ @click="handleDelete"
+ >鍒犻櫎</el-button
+ >
+ </el-col>
+ </el-row>
+
+ <!-- 鏁版嵁琛ㄦ牸 -->
+ <!-- 鏁版嵁琛ㄦ牸 -->
+ <el-table
+ v-loading="loading"
+ :data="caseList"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="55" align="center" />
+
+ <el-table-column
+ label="缂栧彿"
+ align="center"
+ prop="caseNo"
+ width="150"
+ fixed
+ />
+ <el-table-column
+ label="濮撳悕"
+ align="center"
+ prop="name"
+ width="100"
+ fixed
+ />
+ <el-table-column
+ label="涓婃姤鐘舵��"
+ align="center"
+ prop="reportStatus"
+ width="100"
+ >
+ <template #default="scope">
+ <el-tag :type="scope.row.reportStatus | statusFilter">
+ {{ scope.row.reportStatus | statusTextFilter }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column label="杞繍" align="center" width="100">
+ <template #default="scope">
+ <el-tag :type="getTransportStatusTag(scope.row)">
+ {{ getTransportStatusText(scope.row) }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎬у埆" align="center" prop="sex" width="80">
+ <template #default="scope">
+ <dict-tag :options="dict.type.sys_user_sex" :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 #default="scope">
+ <dict-tag
+ :options="dict.type.sys_BloodType"
+ :value="scope.row.bloodType"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鐤剧梾璇婃柇"
+ align="center"
+ prop="diagnosisname"
+ min-width="200"
+ show-overflow-tooltip
+ />
+ <el-table-column
+ label="GCS璇勫垎"
+ align="center"
+ prop="gcsScore"
+ width="80"
+ show-overflow-tooltip
+ />
+ <el-table-column
+ label="涓婃姤鍖婚櫌"
+ align="center"
+ prop="treatmenthospitalname"
+ width="150"
+ />
+ <el-table-column
+ label="涓婃姤鏃堕棿"
+ align="center"
+ prop="reporttime"
+ width="160"
+ />
+ <el-table-column label="鎿嶄綔" align="center" fixed="right" width="300">
+ <template #default="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="handleEdit(scope.row)"
+ v-if="
+ scope.row.reportStatus !== '3' &&
+ scope.row.reportStatus !== '4' &&
+ scope.row.delFlag === 0
+ "
+ >缂栬緫</el-button
+ >
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-check"
+ @click="handleApprove(scope.row)"
+ v-if="scope.row.reportStatus === '2' && scope.row.delFlag === 0"
+ >纭</el-button
+ >
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-truck"
+ :type="getTransportStatustype(scope.row)"
+ @click="handleTransport(scope.row)"
+ v-if="shouldShowTransportButton(scope.row)"
+ :disabled="!canGoToTransport(scope.row)"
+ >
+ {{ getTransportButtonText(scope.row) }}
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <!-- 鍒嗛〉 -->
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+
+ <!-- 妗堜緥璇︽儏寮规 -->
+ <el-dialog
+ :title="detailTitle"
+ :visible.sync="detailOpen"
+ width="900px"
+ append-to-body
+ :close-on-click-modal="false"
+ >
+ <case-detail :caseData="currentCase" @close="detailOpen = false" />
+ </el-dialog>
+
+ <!-- 纭寮规 -->
+ <el-dialog
+ title="妗堜緥纭"
+ :visible.sync="approveOpen"
+ width="80vw"
+ append-to-body
+ class="approve-dialog"
+ >
+ <el-container style="height: 800px;">
+ <!-- 宸︿晶锛氭渚嬭鎯� -->
+ <el-aside
+ width="50vw"
+ style="background: #f8f9fa; padding: 20px; overflow-y: auto;"
+ >
+ <div class="approve-detail-preview">
+ <h3 style="margin-bottom: 15px; color: #303133;">妗堜緥璇︽儏棰勮</h3>
+ <case-detail :caseData="currentCase" :showtitle="false" />
+ </div>
+ </el-aside>
+
+ <!-- 鍙充晶锛氱‘璁よ〃鍗� -->
+ <el-main style="padding: 20px;">
+ <el-form
+ ref="approveForm"
+ :model="approveForm"
+ :rules="approveRules"
+ label-width="100px"
+ >
+ <el-form-item label="纭缁撴灉" prop="approveResult">
+ <el-radio-group v-model="approveForm.approveResult">
+ <el-radio label="3">鍚屾剰</el-radio>
+ <el-radio label="4">椹冲洖</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="纭鎰忚" prop="approveOpinion">
+ <el-input
+ type="textarea"
+ v-model="approveForm.approveOpinion"
+ placeholder="璇疯緭鍏ヨ缁嗙殑纭鎰忚锛屽寘鎷�氳繃鎴栭┏鍥炵殑鐞嗙敱"
+ :rows="6"
+ maxlength="500"
+ show-word-limit
+ />
+ </el-form-item>
+ </el-form>
+ </el-main>
+ </el-container>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="approveOpen = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="submitApprove">纭畾</el-button>
+ </div>
+ </el-dialog>
+
+ <!-- 鏂板/缂栬緫妗堜緥寮规 -->
+ <el-dialog
+ :title="`${isEditing ? '缂栬緫' : '鏂板'}妗堜緥`"
+ :visible.sync="editOpen"
+ width="68%"
+ append-to-body
+ :close-on-click-modal="false"
+ @close="handleEditClose"
+ >
+ <el-form
+ ref="editForm"
+ :model="editForm"
+ :rules="editRules"
+ label-width="120px"
+ >
+ <!-- 鍩烘湰淇℃伅 -->
+ <el-card class="form-section" shadow="never">
+ <div slot="header" class="section-header">
+ <i
+ class="el-icon-user"
+ style="color: #409EFF; margin-right: 8px;"
+ ></i>
+ <span>鍩烘湰淇℃伅</span>
+ </div>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="妗堜緥缂栧彿" prop="caseNo">
+ <el-input
+ v-model="editForm.caseNo"
+ placeholder="璇疯緭鍏ユ渚嬬紪鍙�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎮h�呭鍚�" prop="name">
+ <el-input
+ v-model="editForm.name"
+ placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鎬у埆" prop="sex">
+ <el-select
+ v-model="editForm.sex"
+ placeholder="璇烽�夋嫨鎬у埆"
+ style="width: 100%"
+ >
+ <el-option label="鐢�" value="0" />
+ <el-option label="濂�" value="1" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="骞撮緞" prop="age">
+ <el-input-number
+ v-model="editForm.age"
+ :min="0"
+ :max="120"
+ placeholder="璇疯緭鍏ュ勾榫�"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="骞撮緞鍗曚綅" prop="ageunit">
+ <el-select
+ v-model="editForm.ageunit"
+ placeholder="璇烽�夋嫨骞撮緞鍗曚綅"
+ style="width: 100%"
+ >
+ <el-option label="宀�" value="year" />
+ <el-option label="鏈�" value="month" />
+ <el-option label="澶�" value="day" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="琛�鍨�" prop="bloodType">
+ <el-select
+ v-model="editForm.bloodType"
+ placeholder="璇烽�夋嫨琛�鍨�"
+ style="width: 100%"
+ >
+ <el-option label="A鍨�" :value="1" />
+ <el-option label="B鍨�" :value="2" />
+ <el-option label="O鍨�" :value="3" />
+ <el-option label="AB鍨�" :value="4" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="Rh闃存��" prop="rhYin">
+ <el-radio-group v-model="editForm.rhYin">
+ <el-radio label="0">鍚�</el-radio>
+ <el-radio label="1">鏄�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍑虹敓鏃ユ湡" prop="birthday">
+ <el-date-picker
+ v-model="editForm.birthday"
+ type="date"
+ placeholder="閫夋嫨鍑虹敓鏃ユ湡"
+ value-format="yyyy-MM-dd"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="璇佷欢绫诲瀷" prop="idcardtype">
+ <el-select
+ v-model="editForm.idcardtype"
+ placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in dict.type.sys_IDType"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璇佷欢鍙风爜" prop="idcardno">
+ <el-input
+ v-model="editForm.idcardno"
+ placeholder="璇疯緭鍏ヨ瘉浠跺彿鐮�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="姘戞棌" prop="nation">
+ <el-input v-model="editForm.nation" placeholder="璇疯緭鍏ユ皯鏃�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍥界睄" prop="nationality">
+ <el-input
+ v-model="editForm.nationality"
+ placeholder="璇疯緭鍏ュ浗绫�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="绫嶈疮" prop="nativeplace">
+ <el-input
+ v-model="editForm.nativeplace"
+ placeholder="璇疯緭鍏ョ睄璐�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瀛﹀巻" prop="education">
+ <el-input
+ v-model="editForm.education"
+ placeholder="璇疯緭鍏ュ鍘�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鑱屼笟" prop="occupation">
+ <el-input
+ v-model="editForm.occupation"
+ placeholder="璇疯緭鍏ヨ亴涓�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鑱旂郴鐢佃瘽" prop="phone">
+ <el-input
+ v-model="editForm.phone"
+ placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-card>
+
+ <!-- 鍦板潃淇℃伅 -->
+ <el-card class="form-section" shadow="never">
+ <div slot="header" class="section-header">
+ <i
+ class="el-icon-location-information"
+ style="color: #67C23A; margin-right: 8px;"
+ ></i>
+ <span>鍦板潃淇℃伅</span>
+ </div>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鎴风睄鍦板潃鐪�">
+ <el-input
+ v-model="editForm.registerprovincename"
+ placeholder="璇疯緭鍏ユ埛绫嶅湴鍧�鐪�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎴风睄鍦板潃甯�">
+ <el-input
+ v-model="editForm.registercityname"
+ placeholder="璇疯緭鍏ユ埛绫嶅湴鍧�甯�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鎴风睄琛楅亾">
+ <el-input
+ v-model="editForm.registertownname"
+ placeholder="璇疯緭鍏ユ埛绫嶈閬�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎴风睄绀惧尯">
+ <el-input
+ v-model="editForm.registercommunityname"
+ placeholder="璇疯緭鍏ユ埛绫嶇ぞ鍖�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-form-item label="鎴风睄璇︾粏鍦板潃" prop="registeraddress">
+ <el-input
+ v-model="editForm.registeraddress"
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ヨ缁嗙殑鎴风睄鍦板潃"
+ />
+ </el-form-item>
+
+ <el-divider>鐜颁綇鍦板潃</el-divider>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鐜颁綇鍦板潃鐪�">
+ <el-input
+ v-model="editForm.residenceprovincename"
+ placeholder="璇疯緭鍏ョ幇浣忓湴鍧�鐪�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐜颁綇鍦板潃甯�/鍖�">
+ <el-input
+ v-model="editForm.residencecountyname"
+ placeholder="璇疯緭鍏ョ幇浣忓湴鍧�甯�/鍖�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鐜颁綇鍦板潃琛楅亾">
+ <el-input
+ v-model="editForm.residencetownname"
+ placeholder="璇疯緭鍏ョ幇浣忓湴鍧�琛楅亾"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐜颁綇鍦板潃绀惧尯">
+ <el-input
+ v-model="editForm.residencecommunityname"
+ placeholder="璇疯緭鍏ョ幇浣忓湴鍧�绀惧尯"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-form-item label="鐜颁綇璇︾粏鍦板潃" prop="residenceaddress">
+ <el-input
+ v-model="editForm.residenceaddress"
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ヨ缁嗙殑鐜颁綇鍦板潃"
+ />
+ </el-form-item>
+ </el-card>
+
+ <!-- 鍖荤枟淇℃伅 -->
+ <el-card class="form-section" shadow="never">
+ <div slot="header" class="section-header">
+ <i
+ class="el-icon-first-aid-kit"
+ style="color: #E6A23C; margin-right: 8px;"
+ ></i>
+ <span>鍖荤枟淇℃伅</span>
+ </div>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鐤剧梾璇婃柇" prop="diagnosisname">
+ <el-input
+ v-model="editForm.diagnosisname"
+ placeholder="璇疯緭鍏ョ柧鐥呰瘖鏂悕绉�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="GCS璇勫垎" prop="gcsScore">
+ <el-input
+ v-model="editForm.gcsScore"
+ placeholder="璇疯緭鍏CS璇勫垎"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-form-item label="鐥呮儏姒傚喌" prop="illnessoverview">
+ <el-input
+ v-model="editForm.illnessoverview"
+ type="textarea"
+ :rows="3"
+ placeholder="璇疯緭鍏ョ梾鎯呮鍐�"
+ maxlength="500"
+ show-word-limit
+ />
+ </el-form-item>
+
+ <el-form-item label="鐥呬汉鐘跺喌" prop="patientstate">
+ <el-input
+ v-model="editForm.patientstate"
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ョ梾浜虹姸鍐�"
+ maxlength="200"
+ show-word-limit
+ />
+ </el-form-item>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="浼犳煋鐥呮儏鍐�" prop="infectious">
+ <el-checkbox-group v-model="editForm.infectious">
+ <el-checkbox
+ v-for="item in dict.type.sys_Infectious"
+ :label="item.value"
+ :value="item.value"
+ >{{ item.label }}</el-checkbox
+ >
+ </el-checkbox-group>
+ <!-- <el-input
+ v-model="editForm.infectious"
+ placeholder="璇疯緭鍏ヤ紶鏌撶梾鎯呭喌"
+ /> -->
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浼犳煋鐥呭叾浠栬鏄�">
+ <el-input
+ v-model="editForm.infectiousOther"
+ placeholder="璇疯緭鍏ヤ紶鏌撶梾鍏朵粬璇存槑"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-form-item label="鏄惁闇�瑕佽浆杩�" prop="isTransport">
+ <el-radio-group v-model="editForm.isTransport">
+ <el-radio label="1">涓嶉渶瑕�</el-radio>
+ <el-radio label="2">闇�瑕�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-card>
+
+ <!-- 鍖婚櫌淇℃伅 -->
+ <el-card class="form-section" shadow="never">
+ <div slot="header" class="section-header">
+ <i
+ class="el-icon-office-building"
+ style="color: #909399; margin-right: 8px;"
+ ></i>
+ <span>鍖婚櫌淇℃伅</span>
+ </div>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="娌荤枟鍖婚櫌" prop="treatmenthospitalname">
+ <el-input
+ v-model="editForm.treatmenthospitalname"
+ placeholder="璇疯緭鍏ユ不鐤楀尰闄㈠悕绉�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="娌荤枟绉戝" prop="treatmentdeptname">
+ <el-input
+ v-model="editForm.treatmentdeptname"
+ placeholder="璇疯緭鍏ユ不鐤楃瀹ゅ悕绉�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="浣忛櫌鍙�" prop="inpatientno">
+ <el-input
+ v-model="editForm.inpatientno"
+ placeholder="璇疯緭鍏ヤ綇闄㈠彿"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="閮ㄩ棬鍚嶇О" prop="deptName">
+ <el-input
+ v-model="editForm.deptName"
+ placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="閮ㄩ棬缂栧彿" prop="deptNo">
+ <el-input
+ v-model="editForm.deptNo"
+ placeholder="璇疯緭鍏ラ儴闂ㄧ紪鍙�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="涓婃姤鍖婚櫌" prop="toHospital">
+ <el-input
+ v-model="editForm.toHospital"
+ placeholder="璇疯緭鍏ヤ笂鎶ョ殑鍖婚櫌"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-card>
+
+ <!-- 涓婃姤淇℃伅 -->
+ <el-card class="form-section" shadow="never">
+ <div slot="header" class="section-header">
+ <i
+ class="el-icon-s-data"
+ style="color: #F56C6C; margin-right: 8px;"
+ ></i>
+ <span>涓婃姤淇℃伅</span>
+ </div>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鎶ュ憡鑰呭鍚�" prop="infoName">
+ <el-input
+ v-model="editForm.infoName"
+ placeholder="璇疯緭鍏ユ姤鍛婅�呭鍚�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎶ュ憡鑰呯數璇�" prop="reporterphone">
+ <el-input
+ v-model="editForm.phone"
+ placeholder="璇疯緭鍏ユ姤鍛婅�呰仈绯荤數璇�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鍗忚皟鍛樺鍚�" prop="coordinatorName">
+ <el-input
+ v-model="editForm.coordinatorName"
+ placeholder="璇疯緭鍏ュ崗璋冨憳濮撳悕"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍗忚皟鍛樼紪鍙�" prop="coordinatorNo">
+ <el-input
+ v-model="editForm.coordinatorNo"
+ placeholder="璇疯緭鍏ュ崗璋冨憳缂栧彿"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-form-item label="涓婃姤鐘舵��" prop="reportStatus">
+ <el-select
+ v-model="editForm.reportStatus"
+ placeholder="璇烽�夋嫨涓婃姤鐘舵��"
+ style="width: 100%"
+ :disabled="isEditing"
+ >
+ <el-option label="宸蹭笂鎶�" value="1" />
+ <el-option label="宸查槄璇�" value="2" />
+ <el-option label="宸插悓鎰�" value="3" />
+ <el-option label="宸查┏鍥�" value="4" />
+ </el-select>
+ </el-form-item>
+ </el-card>
+
+ <!-- 闄勪欢淇℃伅 -->
+ <el-card class="form-section" shadow="never">
+ <div slot="header" class="section-header">
+ <i
+ class="el-icon-folder"
+ style="color: #409EFF; margin-right: 8px;"
+ ></i>
+ <span>闄勪欢淇℃伅</span>
+ </div>
+
+ <div class="attachment-section">
+ <div class="attachment-header">
+ <i class="el-icon-paperclip"></i>
+ <span class="attachment-title">闄勪欢涓婁紶</span>
+ <span class="attachment-tip"
+ >鏀寔涓婁紶鐥呭巻銆佹楠屾姤鍛婄瓑鏂囦欢 (鏈�澶歿{
+ attachmentLimit
+ }}涓�)</span
+ >
+ </div>
+
+ <!-- 浣跨敤 UploadAttachment 缁勪欢 -->
+ <UploadAttachment
+ ref="uploadAttachment"
+ :file-list="attachmentFileList"
+ :limit="attachmentLimit"
+ :accept="attachmentAccept"
+ @change="handleAttachmentChange"
+ @upload-success="handleUploadSuccess"
+ @upload-error="handleUploadError"
+ @remove="handleAttachmentRemove"
+ />
+ </div>
+
+ <!-- 闄勪欢鍒楄〃 -->
+ <div
+ class="attachment-list"
+ v-if="editForm.annexfilesList && editForm.annexfilesList.length > 0"
+ >
+ <div class="list-title">
+ 宸蹭笂浼犻檮浠� ({{ editForm.annexfilesList.length }})
+ </div>
+ <el-table
+ :data="editForm.annexfilesList"
+ style="width: 100%"
+ size="small"
+ border
+ >
+ <el-table-column label="鏂囦欢鍚�" min-width="200">
+ <template #default="scope">
+ <i
+ class="el-icon-document"
+ style="margin-right: 8px; color: #409EFF;"
+ ></i>
+ <span class="file-name">{{ scope.row.fileName }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鏂囦欢绫诲瀷" width="100">
+ <template #default="scope">
+ <el-tag size="small">{{
+ getFileType(scope.row.fileName)
+ }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍒涘缓鏃堕棿" width="160">
+ <template #default="scope">
+ <span>{{ formatDateTime(scope.row.createTime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="澶囨敞"
+ min-width="150"
+ show-overflow-tooltip
+ >
+ <template #default="scope">
+ <span>{{ scope.row.remart || "鏃�" }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" width="200" fixed="right">
+ <template #default="scope">
+ <el-button
+ size="mini"
+ type="primary"
+ @click="handlePreview(scope.row)"
+ >
+ 棰勮
+ </el-button>
+ <el-button
+ size="mini"
+ type="danger"
+ @click="handleRemoveAttachment(scope.$index)"
+ >
+ 鍒犻櫎
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </el-card>
+
+ <!-- 澶囨敞淇℃伅 -->
+ <el-card class="form-section" shadow="never">
+ <div slot="header" class="section-header">
+ <i
+ class="el-icon-edit"
+ style="color: #67C23A; margin-right: 8px;"
+ ></i>
+ <span>澶囨敞淇℃伅</span>
+ </div>
+ <el-form-item prop="remark">
+ <el-input
+ v-model="editForm.remark"
+ type="textarea"
+ :rows="4"
+ placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�"
+ maxlength="500"
+ show-word-limit
+ />
+ </el-form-item>
+ </el-card>
+ </el-form>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="handleEditClose">鍙栨秷</el-button>
+ <el-button type="primary" :loading="saveLoading" @click="handleSave"
+ >淇濆瓨</el-button
+ >
+ </div>
+ </el-dialog>
+
+ <!-- 鏂囦欢棰勮寮圭獥 -->
+ <FilePreviewDialog
+ :visible="previewVisible"
+ :file="currentPreviewFile"
+ @close="previewVisible = false"
+ @download="handleDownload"
+ />
+ </div>
+</template>
+
+<script>
+import CaseDetail from "./caseDetail";
+import UploadAttachment from "@/components/UploadAttachment";
+import FilePreviewDialog from "@/components/FilePreviewDialog";
+import {
+ donateList,
+ donateInfo,
+ donateDel,
+ donateEdit,
+ donateAdd
+} from "@/api/businessApi/index";
+import dayjs from "dayjs";
+
+export default {
+ name: "CaseList",
+ components: {
+ CaseDetail,
+ UploadAttachment,
+ FilePreviewDialog
+ },
+ dicts: ["sys_user_sex", "sys_BloodType", "sys_Infectious", "sys_IDType"],
+ data() {
+ return {
+ // 閬僵灞�
+ loading: false,
+ saveLoading: false,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 妗堜緥琛ㄦ牸鏁版嵁
+ caseList: [],
+ // 璇︽儏寮规鏄惁鏄剧ず
+ detailOpen: false,
+ // 纭寮规鏄惁鏄剧ず
+ approveOpen: false,
+ // 缂栬緫寮规鏄惁鏄剧ず
+ editOpen: false,
+ // 缂栬緫鐘舵��
+ isEditing: false,
+ // 璇︽儏寮规鏍囬
+ detailTitle: "",
+ // 褰撳墠鎿嶄綔鐨勬渚�
+ currentCase: {},
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ caseNo: undefined,
+ name: undefined,
+ reportStatus: undefined
+ },
+ // 纭琛ㄥ崟
+ approveForm: {
+ id: null,
+ approveResult: "3",
+ approveOpinion: ""
+ },
+ // 纭琛ㄥ崟楠岃瘉
+ approveRules: {
+ approveResult: [
+ { required: true, message: "璇烽�夋嫨纭缁撴灉", trigger: "change" }
+ ],
+ approveOpinion: [
+ { required: true, message: "璇疯緭鍏ョ‘璁ゆ剰瑙�", trigger: "blur" }
+ ]
+ },
+ // 缂栬緫琛ㄥ崟
+ editForm: this.getDefaultFormData(),
+ // 琛ㄥ崟楠岃瘉瑙勫垯
+ editRules: {
+ caseNo: [
+ { required: true, message: "璇疯緭鍏ユ渚嬬紪鍙�", trigger: "blur" }
+ ],
+ name: [{ required: true, message: "璇疯緭鍏ユ偅鑰呭鍚�", trigger: "blur" }],
+ sex: [{ required: true, message: "璇烽�夋嫨鎬у埆", trigger: "change" }],
+ age: [{ required: true, message: "璇疯緭鍏ュ勾榫�", trigger: "blur" }],
+ diagnosisname: [
+ { required: true, message: "璇疯緭鍏ョ柧鐥呰瘖鏂�", trigger: "blur" }
+ ],
+ treatmenthospitalname: [
+ { required: true, message: "璇疯緭鍏ユ不鐤楀尰闄�", trigger: "blur" }
+ ],
+ reportStatus: [
+ { required: true, message: "璇烽�夋嫨涓婃姤鐘舵��", trigger: "change" }
+ ]
+ },
+ // 闄勪欢鐩稿叧閰嶇疆
+ attachmentLimit: 10,
+ attachmentAccept: ".pdf,.jpg,.jpeg,.png,.doc,.docx,.xls,.xlsx",
+ attachmentFileList: [],
+ // 棰勮鐩稿叧
+ previewVisible: false,
+ currentPreviewFile: null
+ };
+ },
+ filters: {
+ statusFilter(reportStatus) {
+ const statusMap = {
+ "1": "info", // 宸蹭笂鎶�
+ "2": "warning", // 宸查槄璇伙紙寰呯‘璁わ級
+ "3": "success", // 宸插悓鎰�
+ "4": "danger" // 宸查┏鍥�
+ };
+ return statusMap[reportStatus] || "info";
+ },
+ statusTextFilter(reportStatus) {
+ const statusMap = {
+ "1": "宸蹭笂鎶�",
+ "2": "宸查槄璇�",
+ "3": "宸插悓鎰�",
+ "4": "宸查┏鍥�"
+ };
+ return statusMap[reportStatus] || "鏈煡鐘舵��";
+ }
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 鏌ヨ妗堜緥鍒楄〃 */
+ async getList() {
+ this.loading = true;
+ try {
+ const response = await donateList(this.queryParams);
+ this.caseList = response.rows || response.data || [];
+ this.total = response.total || this.caseList.length;
+ } catch (error) {
+ console.error("鑾峰彇妗堜緥鍒楄〃澶辫触:", error);
+ this.$modal.msgError("鑾峰彇妗堜緥鍒楄〃澶辫触");
+ this.caseList = [];
+ this.total = 0;
+ } finally {
+ this.loading = false;
+ }
+ },
+ // 杞繍------------------
+ /** 鍒ゆ柇鏄惁闇�瑕佹樉绀鸿浆杩愭寜閽� */
+ shouldShowTransportButton(row) {
+ // 鍙湁宸插悓鎰忕殑妗堜緥鎵嶈兘杩涜杞繍鎿嶄綔
+ // return row.reportStatus == "3" && row.delFlag == 0;
+ return row.reportStatus != "4";
+ },
+
+ /** 鍒ゆ柇鏄惁鍙互璺宠浆鍒拌浆杩愬崟 */
+ canGoToTransport(row) {
+ // 闇�瑕佽浆杩愶紙isTransport === "2"锛変笖娌℃湁杞繍淇℃伅锛坰erviceTransport涓嶅瓨鍦ㄦ垨涓虹┖鏁扮粍锛�
+ return row.isTransport == "2" && row.serviceTransport;
+ },
+
+ /** 鑾峰彇杞繍鎸夐挳鏂囨湰 */
+ getTransportButtonText(row) {
+ if (row.isTransport == "2") {
+ if (
+ row.serviceTransport &&
+ Array.isArray(row.serviceTransport) &&
+ row.serviceTransport.length > 0
+ ) {
+ return "鏌ョ湅杞繍鍗�";
+ } else {
+ return "鍒涘缓杞繍鍗�";
+ }
+ }
+ return "鏃犻渶杞繍";
+ },
+ getTransportStatustype(row) {
+ if (row.isTransport == "1") {
+ return "info"; // 涓嶉渶瑕佽浆杩�
+ }
+ if (
+ row.serviceTransport &&
+ Array.isArray(row.serviceTransport) &&
+ row.serviceTransport.length > 0
+ ) {
+ // 鏍规嵁杞繍鍗曠姸鎬佹樉绀轰笉鍚岄鑹�
+ const transport = row.serviceTransport[0];
+ if (transport.transitStatus) {
+ return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
+ }
+ return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
+ }
+ return "success"; // 闇�瑕佽浆杩愪絾鏃犺浆杩愪俊鎭�
+ },
+ /** 鑾峰彇杞繍鐘舵�佹爣绛炬牱寮� */
+ getTransportStatusTag(row) {
+ if (row.isTransport === "1") {
+ return "info"; // 涓嶉渶瑕佽浆杩�
+ }
+ if (
+ row.serviceTransport &&
+ Array.isArray(row.serviceTransport) &&
+ row.serviceTransport.length > 0
+ ) {
+ // 鏍规嵁杞繍鍗曠姸鎬佹樉绀轰笉鍚岄鑹�
+ const transport = row.serviceTransport[0];
+ if (transport.transitStatus) {
+ switch (transport.transitStatus.toString()) {
+ case "1":
+ return "warning"; // 寰呰浆杩�
+ case "2":
+ return "primary"; // 杞繍涓�
+ case "3":
+ return "success"; // 杞繍瀹屾垚
+ case "4":
+ return "danger"; // 杞繍鍙栨秷
+ case "5":
+ return "info"; // 鏆傚瓨
+ default:
+ return "info";
+ }
+ }
+ return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
+ }
+ return "success"; // 闇�瑕佽浆杩愪絾鏃犺浆杩愪俊鎭�
+ },
+
+ /** 鑾峰彇杞繍鐘舵�佹枃鏈� */
+ getTransportStatusText(row) {
+ if (row.isTransport === "1") {
+ return "鏃犻渶杞繍";
+ }
+ if (
+ row.serviceTransport &&
+ Array.isArray(row.serviceTransport) &&
+ row.serviceTransport.length > 0
+ ) {
+ const transport = row.serviceTransport[0];
+ if (transport.transitStatus) {
+ switch (transport.transitStatus.toString()) {
+ case "1":
+ return "寰呰浆杩�";
+ case "2":
+ return "杞繍涓�";
+ case "3":
+ return "杞繍瀹屾垚";
+ case "4":
+ return "杞繍鍙栨秷";
+ case "5":
+ return "鏆傚瓨";
+ default:
+ return "鏈夎浆杩愬崟";
+ }
+ }
+ return "鏈夎浆杩愬崟";
+ }
+ return "闇�杞繍";
+ },
+
+ /** 澶勭悊杞繍鎿嶄綔 */
+ async handleTransport(row) {
+ try {
+ // 鍏堣幏鍙栨渶鏂扮殑妗堜緥淇℃伅
+ const caseData = row;
+
+ if (caseData.isTransport == "2") {
+ if (
+ caseData.serviceTransport &&
+ Array.isArray(caseData.serviceTransport) &&
+ caseData.serviceTransport.length > 0
+ ) {
+ // 宸叉湁杞繍鍗曪紝璺宠浆鍒拌浆杩愬崟璇︽儏椤�
+ const transport = caseData.serviceTransport[0];
+ this.goToTransportDetail(transport.id, row.name);
+ } else {
+ // 娌℃湁杞繍鍗曪紝璺宠浆鍒板垱寤鸿浆杩愬崟椤甸潰
+ this.goToCreateTransport(row);
+ }
+ } else {
+ this.$message.warning("璇ユ渚嬩笉闇�瑕佽浆杩�");
+ }
+ } catch (error) {
+ console.error("鑾峰彇妗堜緥淇℃伅澶辫触:", error);
+ this.$message.error("鑾峰彇妗堜緥淇℃伅澶辫触");
+ }
+ },
+
+ /** 璺宠浆鍒板垱寤鸿浆杩愬崟椤甸潰 */
+ goToCreateTransport(caseData) {
+ // 鏂瑰紡1锛氬湪鏂伴〉闈㈡墦寮�
+ this.$router.push({
+ path: "/report/transfer",
+ query: {
+ autoCreate: "true", //璺宠浆杞繍鏍囪瘑
+ caseId: caseData.id,
+ caseNo: caseData.caseNo,
+ patName: caseData.name,
+ age: caseData.age,
+ sex: caseData.sex,
+ diagnosisname: caseData.diagnosisname,
+ treatmentHospitalName: caseData.treatmenthospitalname
+ }
+ });
+ },
+
+ /** 鎵撳紑杞繍鍗曞脊妗� */
+ openTransportDialog(caseData) {
+ this.$modal.confirm({
+ title: "鍒涘缓杞繍鍗�",
+ message: `鎮ㄥ皢鍒涘缓妗堜緥銆�${caseData.caseNo} - ${caseData.name}銆戠殑杞繍鍗曪紝鏄惁缁х画锛焋,
+ confirmButtonText: "鍓嶅線鍒涘缓",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ beforeClose: (action, instance, done) => {
+ if (action === "confirm") {
+ // 璺宠浆鍒拌浆杩愬崟鍒涘缓椤甸潰
+ this.$router.push({
+ path: "/report/transfer",
+ query: {
+ caseId: caseData.id,
+ caseNo: caseData.caseNo,
+ patName: caseData.name,
+ age: caseData.age,
+ sex: caseData.sex,
+ diagnosisname: caseData.diagnosisname,
+ treatmentHospitalName: caseData.treatmenthospitalname
+ }
+ });
+ done();
+ } else {
+ done();
+ }
+ }
+ });
+ },
+
+ /** 璺宠浆鍒拌浆杩愬崟璇︽儏椤� */
+ goToTransportDetail(transportId, name) {
+ this.$router.push({
+ path: "/report/transfer",
+ query: {
+ autoCreate: "true",
+ patName: name
+ }
+ });
+ },
+ // ---------------------------------end
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map(item => item.id);
+ this.single = selection.length !== 1;
+ this.multiple = !selection.length;
+ },
+
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.queryParams = {
+ pageNum: 1,
+ pageSize: 10,
+ caseNo: undefined,
+ name: undefined,
+ reportStatus: undefined
+ };
+ this.getList();
+ },
+
+ /** 璇︽儏鎸夐挳鎿嶄綔 */
+ async handleDetail(row) {
+ try {
+ this.currentCase = row;
+
+ // 濡傛灉鐘舵�佹槸"宸蹭笂鎶�"(1)锛屽垯鏇存柊涓�"宸查槄璇�"(2)
+ if (this.currentCase.reportStatus === "1") {
+ try {
+ const updateData = {
+ ...this.currentCase,
+ reportStatus: "2",
+ updateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+ updateBy: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛"
+ };
+
+ await donateEdit(updateData);
+ this.currentCase.reportStatus = "2";
+ this.currentCase.updateTime = updateData.updateTime;
+ row.reportStatus = "2";
+ this.$modal.msgSuccess("鐘舵�佸凡鏇存柊涓哄凡闃呰");
+ } catch (updateError) {
+ console.error("鐘舵�佹洿鏂板け璐�:", updateError);
+ }
+ }
+
+ this.detailTitle = `妗堜緥璇︽儏 - ${this.currentCase.caseNo ||
+ row.caseNo}`;
+ this.detailOpen = true;
+ console.log(this.currentCase, "this.currentCase");
+ } catch (error) {
+ console.error("鑾峰彇妗堜緥璇︽儏澶辫触:", error);
+ this.currentCase = row;
+ this.detailTitle = `妗堜緥璇︽儏 - ${row.caseNo}`;
+ this.detailOpen = true;
+ }
+ },
+
+ /** 缂栬緫鎸夐挳鎿嶄綔 */
+ async handleEdit(row) {
+ try {
+ const response = await donateInfo(row.id);
+ if (response.code === 200 || response.data) {
+ this.isEditing = true;
+ const data = response.data || response;
+
+ // 澶勭悊闄勪欢
+ if (data.annexfilesList) {
+ this.attachmentFileList = this.parseAttachmentToFileList(
+ data.annexfilesList
+ );
+ } else {
+ this.attachmentFileList = [];
+ }
+
+ this.currentCase = data;
+ this.editForm = { ...data };
+ this.editForm.idcardtype = this.editForm.idcardtype.toString();
+ console.log(this.editForm.idcardtype);
+ this.editForm.infectious = this.editForm.infectious
+ .split(",")
+ .filter(item => item.trim() !== "");
+
+ this.editOpen = true;
+ this.$nextTick(() => {
+ this.$refs.editForm && this.$refs.editForm.clearValidate();
+ });
+ } else {
+ this.$message.error(response.msg || "鑾峰彇璁板綍澶辫触");
+ }
+ } catch (error) {
+ console.error("鑾峰彇璁板綍澶辫触:", error);
+ this.$modal.msgError("鑾峰彇璁板綍澶辫触");
+ }
+ },
+
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.isEditing = false;
+ this.editForm = this.getDefaultFormData();
+ this.attachmentFileList = [];
+ this.editOpen = true;
+ this.$nextTick(() => {
+ this.$refs.editForm && this.$refs.editForm.clearValidate();
+ });
+ },
+
+ /** 纭鎸夐挳鎿嶄綔 */
+ async handleApprove(row) {
+ try {
+ const response = await donateInfo(row.id);
+ this.currentCase = response.data || response || row;
+
+ this.approveForm.id = row.id;
+ this.approveForm.approveResult = "3";
+ this.approveForm.approveOpinion = "";
+
+ this.$nextTick(() => {
+ if (this.$refs.approveForm) {
+ this.$refs.approveForm.clearValidate();
+ }
+ });
+
+ this.approveOpen = true;
+ } catch (error) {
+ console.error("鑾峰彇妗堜緥璇︽儏澶辫触:", error);
+ this.currentCase = row;
+ this.approveForm.id = row.id;
+ this.approveForm.approveResult = "3";
+ this.approveForm.approveOpinion = "";
+ this.approveOpen = true;
+ this.$modal.msgError("鑾峰彇璇︽儏澶辫触锛屼絾宸叉墦寮�纭绐楀彛");
+ }
+ },
+
+ /** 鎻愪氦纭 */
+ async submitApprove() {
+ try {
+ const valid = await this.$refs.approveForm.validate();
+ if (valid) {
+ const approveData = {
+ ...this.currentCase,
+ reportStatus: this.approveForm.approveResult,
+ remark: this.approveForm.approveOpinion,
+ approvername: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛",
+ approvetime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+ updateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+ updateBy: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛"
+ };
+
+ await donateEdit(approveData);
+ this.$modal.msgSuccess("纭鎴愬姛");
+ this.approveOpen = false;
+ this.getList();
+ }
+ } catch (error) {
+ console.error("纭澶辫触:", error);
+ if (error !== "cancel") {
+ this.$modal.msgError("纭澶辫触");
+ }
+ }
+ },
+
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ async handleDelete(row) {
+ const ids = row.id || this.ids;
+ try {
+ await this.$modal.confirm(
+ '鏄惁纭鍒犻櫎妗堜緥缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�'
+ );
+ await donateDel(ids);
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ this.getList();
+ } catch (error) {
+ if (error !== "cancel") {
+ console.error("鍒犻櫎澶辫触:", error);
+ this.$modal.msgError("鍒犻櫎澶辫触");
+ }
+ }
+ },
+
+ /** 鑾峰彇榛樿琛ㄥ崟鏁版嵁 */
+ getDefaultFormData() {
+ return {
+ id: undefined,
+ caseNo: undefined,
+ name: undefined,
+ sex: undefined,
+ age: undefined,
+ ageunit: "year",
+ bloodType: undefined,
+ rhYin: "0",
+ birthday: undefined,
+ idcardtype: "1",
+ idcardno: undefined,
+ nation: undefined,
+ nationality: undefined,
+ nativeplace: undefined,
+ education: undefined,
+ occupation: undefined,
+ phone: undefined,
+ // 鎴风睄鍦板潃
+ registerprovincename: undefined,
+ registercityname: undefined,
+ registertownname: undefined,
+ registercommunityname: undefined,
+ registeraddress: undefined,
+ // 鐜颁綇鍦板潃
+ residenceprovincename: undefined,
+ residencecountyname: undefined,
+ residencetownname: undefined,
+ residencecommunityname: undefined,
+ residenceaddress: undefined,
+ // 鍖荤枟淇℃伅
+ diagnosisname: undefined,
+ illnessoverview: undefined,
+ patientstate: undefined,
+ gcsScore: undefined,
+ infectious: undefined,
+ infectiousOther: undefined,
+ isTransport: "1",
+ // 鍖婚櫌淇℃伅
+ treatmenthospitalname: undefined,
+ treatmentdeptname: undefined,
+ inpatientno: undefined,
+ deptName: undefined,
+ deptNo: undefined,
+ toHospital: undefined,
+ // 涓婃姤淇℃伅
+ infoName: undefined,
+ infoNo: undefined,
+ reporterphone: undefined,
+ coordinatorName: undefined,
+ coordinatorNo: undefined,
+ terminationCase: "0",
+ reportStatus: "1", // 榛樿宸蹭笂鎶�
+ // 闄勪欢
+ annexfilesList: [],
+ // 鍏朵粬
+ remark: undefined,
+ createBy: undefined,
+ createTime: undefined,
+ updateBy: undefined,
+ updateTime: undefined,
+ delFlag: 0
+ };
+ },
+
+ /** 闄勪欢杞崲 */
+ parseAttachmentToFileList(attachments) {
+ if (!attachments || !Array.isArray(attachments)) return [];
+ return attachments.map((item, index) => ({
+ uid: item.id || `attachment-${index}-${Date.now()}`,
+ name: item.fileName,
+ url: item.path || item.fileUrl,
+ status: "success",
+ raw: item
+ }));
+ },
+
+ /** 闄勪欢鍙樺寲澶勭悊 */
+ handleAttachmentChange(fileList) {
+ this.attachmentFileList = fileList;
+ },
+
+ /** 闄勪欢涓婁紶鎴愬姛澶勭悊 */
+ handleUploadSuccess({ file, fileList, response }) {
+ if (response && response.code === 200) {
+ if (!this.editForm.annexfilesList) {
+ this.editForm.annexfilesList = [];
+ }
+ const attachmentObj = {
+ fileName: file.name,
+ path: response.data || file.url,
+ fileUrl: response.data || file.url,
+ type: this.getFileExtension(file.name),
+ createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+ remart: file.raw?.remart || "",
+ caseNo: this.editForm.caseNo
+ };
+
+ this.editForm.annexfilesList.push(attachmentObj);
+ this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+ }
+ },
+
+ /** 闄勪欢涓婁紶閿欒澶勭悊 */
+ handleUploadError({ file, fileList, error }) {
+ console.error("闄勪欢涓婁紶澶辫触:", error);
+ this.$message.error("鏂囦欢涓婁紶澶辫触锛岃閲嶈瘯");
+ },
+
+ /** 闄勪欢绉婚櫎澶勭悊 */
+ handleAttachmentRemove(file) {
+ if (file.url && this.editForm.annexfilesList) {
+ const index = this.editForm.annexfilesList.findIndex(
+ item => item.path === file.url || item.fileUrl === file.url
+ );
+ if (index > -1) {
+ this.editForm.annexfilesList.splice(index, 1);
+ }
+ }
+ },
+
+ /** 鎵嬪姩鍒犻櫎闄勪欢 */
+ handleRemoveAttachment(index) {
+ this.editForm.annexfilesList.splice(index, 1);
+ this.attachmentFileList.splice(index, 1);
+ this.$message.success("闄勪欢鍒犻櫎鎴愬姛");
+ },
+
+ /** 鏂囦欢棰勮 */
+ handlePreview(file) {
+ this.currentPreviewFile = {
+ fileName: file.fileName,
+ fileUrl: file.path || file.fileUrl,
+ fileType: this.getFileType(file.fileName)
+ };
+ this.previewVisible = true;
+ },
+
+ /** 鏂囦欢涓嬭浇 */
+ handleDownload(file) {
+ const fileUrl = file.path || file.fileUrl;
+ const fileName = file.fileName;
+
+ if (fileUrl) {
+ const link = document.createElement("a");
+ link.href = fileUrl;
+ link.download = fileName;
+ link.style.display = "none";
+ document.body.appendChild(link);
+ link.click();
+ document.body.removeChild(link);
+ this.$message.success("寮�濮嬩笅杞芥枃浠�");
+ } else {
+ this.$message.warning("鏂囦欢璺緞涓嶅瓨鍦紝鏃犳硶涓嬭浇");
+ }
+ },
+
+ /** 鑾峰彇鏂囦欢绫诲瀷 */
+ getFileType(fileName) {
+ if (!fileName) return "other";
+ const extension = fileName
+ .split(".")
+ .pop()
+ .toLowerCase();
+ const imageTypes = ["jpg", "jpeg", "png", "gif", "bmp", "webp"];
+ const pdfTypes = ["pdf"];
+ const officeTypes = ["doc", "docx", "xls", "xlsx"];
+
+ if (imageTypes.includes(extension)) return "image";
+ if (pdfTypes.includes(extension)) return "pdf";
+ if (officeTypes.includes(extension)) return "office";
+ return "other";
+ },
+
+ /** 鑾峰彇鏂囦欢鎵╁睍鍚� */
+ getFileExtension(filename) {
+ if (!filename) return "";
+ return filename
+ .split(".")
+ .pop()
+ .toLowerCase();
+ },
+
+ /** 鏃ユ湡鏃堕棿鏍煎紡鍖� */
+ formatDateTime(dateTime) {
+ if (!dateTime) return "";
+ return dayjs(dateTime).format("YYYY-MM-DD HH:mm:ss");
+ },
+
+ /** 鍏抽棴缂栬緫瀵硅瘽妗� */
+ handleEditClose() {
+ this.editOpen = false;
+ this.currentCase = {};
+ this.editForm = this.getDefaultFormData();
+ this.attachmentFileList = [];
+ this.$nextTick(() => {
+ this.$refs.editForm && this.$refs.editForm.clearValidate();
+ });
+ },
+
+ /** 淇濆瓨琛ㄥ崟 */
+ async handleSave() {
+ try {
+ const valid = await this.$refs.editForm.validate();
+ if (!valid) return;
+
+ const pendingFiles = this.attachmentFileList.filter(
+ item => item.status !== "success"
+ );
+ if (pendingFiles.length > 0) {
+ this.$message.warning(
+ "杩樻湁鏂囦欢鏈笂浼犲畬鎴愶紝璇峰厛涓婁紶鎵�鏈夋枃浠舵垨绉婚櫎鏈笂浼犵殑鏂囦欢"
+ );
+ return;
+ }
+
+ this.saveLoading = true;
+
+ const requestData = { ...this.editForm };
+ requestData.infectious = requestData.infectious.join(",");
+ let response;
+
+ if (this.isEditing) {
+ response = await donateEdit(requestData);
+ } else {
+ // 鏂板鏃惰缃垱寤轰俊鎭�
+ requestData.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
+ requestData.createBy = this.$store.state.user?.name || "褰撳墠鐢ㄦ埛";
+ response = await donateAdd(requestData);
+ }
+
+ if (response.code === 200) {
+ this.$message.success(this.isEditing ? "淇敼鎴愬姛" : "鏂板鎴愬姛");
+ this.handleEditClose();
+ this.getList();
+ } else {
+ this.$message.error(response.msg || "鎿嶄綔澶辫触");
+ }
+ } catch (error) {
+ console.error("淇濆瓨澶辫触:", error);
+ this.$message.error("鎿嶄綔澶辫触锛岃绋嶅悗閲嶈瘯");
+ } finally {
+ this.saveLoading = false;
+ }
+ }
+ }
+};
+</script>
+
+<style scoped>
+.app-container {
+ padding: 20px;
+}
+
+.filter-card {
+ margin-bottom: 20px;
+}
+
+.mb8 {
+ margin-bottom: 8px;
+}
+
+/* 琛ㄥ崟鍖哄煙鏍峰紡 */
+.form-section {
+ margin-bottom: 16px;
+}
+
+.section-header {
+ display: flex;
+ align-items: center;
+ font-weight: bold;
+ color: #303133;
+}
+
+.dialog-footer {
+ text-align: right;
+ padding: 20px 0 0;
+}
+
+/* 闄勪欢鏍峰紡 */
+.attachment-section {
+ margin-bottom: 16px;
+}
+
+.attachment-header {
+ display: flex;
+ align-items: center;
+ margin-bottom: 16px;
+ padding: 8px 0;
+ border-bottom: 1px solid #ebeef5;
+}
+
+.attachment-title {
+ font-weight: bold;
+ margin: 0 8px;
+}
+
+.attachment-tip {
+ font-size: 12px;
+ color: #909399;
+}
+
+.attachment-list {
+ margin-top: 16px;
+}
+
+.list-title {
+ font-weight: bold;
+ margin-bottom: 12px;
+ color: #303133;
+}
+
+.file-name {
+ font-size: 13px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+/* 纭寮规鏍峰紡 */
+.approve-dialog >>> .el-dialog__body {
+ padding: 0;
+}
+
+.approve-detail-preview {
+ height: 100%;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 1200px) {
+ .approve-dialog {
+ width: 95% !important;
+ }
+
+ .el-aside {
+ width: 50% !important;
+ }
+}
+</style>
diff --git a/src/views/business/appear/index.vue b/src/views/business/appear/index.vue
index 39581d2..a1ee5cc 100644
--- a/src/views/business/appear/index.vue
+++ b/src/views/business/appear/index.vue
@@ -48,12 +48,6 @@
<!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
<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-col> -->
-
<el-col :span="1.5">
<el-button
type="danger"
@@ -67,14 +61,13 @@
</el-row>
<!-- 鏁版嵁琛ㄦ牸 -->
- <!-- 鏁版嵁琛ㄦ牸 -->
<el-table
v-loading="loading"
:data="caseList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
-
+
<el-table-column
label="缂栧彿"
align="center"
@@ -165,7 +158,7 @@
v-if="
scope.row.reportStatus !== '3' &&
scope.row.reportStatus !== '4' &&
- scope.row.delFlag === 0
+ scope.row.delFlag == 0
"
>缂栬緫</el-button
>
@@ -174,20 +167,28 @@
type="text"
icon="el-icon-check"
@click="handleApprove(scope.row)"
- v-if="scope.row.reportStatus === '2' && scope.row.delFlag === 0"
+ v-if="scope.row.reportStatus == '2' && scope.row.delFlag == 0"
>纭</el-button
>
+ <!-- 绉婚櫎杞繍鎸夐挳 -->
<el-button
+ v-if="scope.row.serviceTransport.length"
size="mini"
- type="text"
- icon="el-icon-truck"
- :type="getTransportStatustype(scope.row)"
- @click="handleTransport(scope.row)"
- v-if="shouldShowTransportButton(scope.row)"
- :disabled="!canGoToTransport(scope.row)"
+ type="primary"
+ @click="goToTransportDetail(scope.row.name)"
+ >鏌ョ湅杞繍鍗�</el-button
>
- {{ getTransportButtonText(scope.row) }}
- </el-button>
+ <el-button
+ v-if="
+ scope.row.reportStatus == 3 &&
+ !scope.row.serviceTransport.length &&
+ scope.row.isTransport == 2
+ "
+ size="mini"
+ type="success"
+ @click="Createatransferorder(scope.row)"
+ >鍒涘缓杞繍鍗�</el-button
+ >
</template>
</el-table-column>
</el-table>
@@ -220,20 +221,18 @@
append-to-body
class="approve-dialog"
>
- <el-container style="height: 800px;">
+ <!-- 浣跨敤 div 甯冨眬鏇夸唬 el-container -->
+ <div class="approve-dialog-content">
<!-- 宸︿晶锛氭渚嬭鎯� -->
- <el-aside
- width="50vw"
- style="background: #f8f9fa; padding: 20px; overflow-y: auto;"
- >
+ <div class="approve-detail-left">
<div class="approve-detail-preview">
<h3 style="margin-bottom: 15px; color: #303133;">妗堜緥璇︽儏棰勮</h3>
<case-detail :caseData="currentCase" :showtitle="false" />
</div>
- </el-aside>
+ </div>
<!-- 鍙充晶锛氱‘璁よ〃鍗� -->
- <el-main style="padding: 20px;">
+ <div class="approve-form-right">
<el-form
ref="approveForm"
:model="approveForm"
@@ -241,24 +240,69 @@
label-width="100px"
>
<el-form-item label="纭缁撴灉" prop="approveResult">
- <el-radio-group v-model="approveForm.approveResult">
+ <el-radio-group
+ v-model="approveForm.approveResult"
+ @change="handleApproveResultChange"
+ >
<el-radio label="3">鍚屾剰</el-radio>
<el-radio label="4">椹冲洖</el-radio>
</el-radio-group>
</el-form-item>
- <el-form-item label="纭鎰忚" prop="approveOpinion">
+
+ <!-- 褰撻�夋嫨"鍚屾剰"鏃舵樉绀鸿浆杩愰�夐」 -->
+ <el-form-item
+ v-if="approveForm.approveResult == '3'"
+ label="鏄惁闇�瑕佽浆杩�"
+ prop="isTransport"
+ >
+ <el-radio-group v-model="approveForm.isTransport">
+ <el-radio label="1">涓嶉渶瑕�</el-radio>
+ <el-radio label="2">闇�瑕�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+
+ <!-- 褰撻�夋嫨"椹冲洖"鏃舵樉绀洪┏鍥炲師鍥� -->
+ <div v-if="approveForm.approveResult == '4'">
+ <el-form-item label="椹冲洖鍘熷洜" prop="rejectType">
+ <el-radio-group v-model="approveForm.rejectType">
+ <el-radio label="1">濂借浆</el-radio>
+ <el-radio label="2">姝讳骸</el-radio>
+ <el-radio label="3">涓嶇鍚堟崘鐚爣鍑�</el-radio>
+ <el-radio label="4">瀹跺睘鏀惧純鎹愮尞</el-radio>
+ <el-radio label="5">鍏朵粬</el-radio>
+ </el-radio-group>
+ </el-form-item>
+
+ <el-form-item label="椹冲洖鎰忚" prop="confirmResult">
+ <el-input
+ type="textarea"
+ v-model="approveForm.confirmResult"
+ placeholder="璇疯緭鍏ヨ缁嗙殑椹冲洖鎰忚"
+ :rows="6"
+ maxlength="500"
+ show-word-limit
+ />
+ </el-form-item>
+ </div>
+
+ <!-- 褰撻�夋嫨"鍚屾剰"鏃舵樉绀虹‘璁ゆ剰瑙� -->
+ <el-form-item
+ v-if="approveForm.approveResult == '3'"
+ label="纭鎰忚"
+ prop="confirmResult"
+ >
<el-input
type="textarea"
- v-model="approveForm.approveOpinion"
- placeholder="璇疯緭鍏ヨ缁嗙殑纭鎰忚锛屽寘鎷�氳繃鎴栭┏鍥炵殑鐞嗙敱"
+ v-model="approveForm.confirmResult"
+ placeholder="璇疯緭鍏ョ‘璁ゆ剰瑙�"
:rows="6"
maxlength="500"
show-word-limit
/>
</el-form-item>
</el-form>
- </el-main>
- </el-container>
+ </div>
+ </div>
<div slot="footer" class="dialog-footer">
<el-button @click="approveOpen = false">鍙栨秷</el-button>
@@ -993,15 +1037,33 @@
approveForm: {
id: null,
approveResult: "3",
- approveOpinion: ""
+ confirmResult: "",
+ rejectType: "", // 椹冲洖鍘熷洜
+ isTransport: "1", // 鏄惁闇�瑕佽浆杩�
+ createTransport: false, // 鏄惁闇�瑕佸垱寤鸿浆杩愬崟
+ isDonate: "0" // 鏄惁鎹愮尞锛�0-鏈崘鐚紝1-宸叉崘鐚�
},
// 纭琛ㄥ崟楠岃瘉
approveRules: {
approveResult: [
{ required: true, message: "璇烽�夋嫨纭缁撴灉", trigger: "change" }
],
- approveOpinion: [
+ confirmResult: [
{ required: true, message: "璇疯緭鍏ョ‘璁ゆ剰瑙�", trigger: "blur" }
+ ],
+ rejectType: {
+ required: false,
+ validator: (rule, value, callback) => {
+ if (this.approveForm.approveResult == "4" && !value) {
+ callback(new Error("璇烽�夋嫨椹冲洖鍘熷洜"));
+ } else {
+ callback();
+ }
+ },
+ trigger: "change"
+ },
+ isTransport: [
+ { required: true, message: "璇烽�夋嫨鏄惁闇�瑕佽浆杩�", trigger: "change" }
]
},
// 缂栬緫琛ㄥ崟
@@ -1073,56 +1135,31 @@
this.loading = false;
}
},
- // 杞繍------------------
- /** 鍒ゆ柇鏄惁闇�瑕佹樉绀鸿浆杩愭寜閽� */
- shouldShowTransportButton(row) {
- // 鍙湁宸插悓鎰忕殑妗堜緥鎵嶈兘杩涜杞繍鎿嶄綔
- // return row.reportStatus == "3" && row.delFlag == 0;
- return row.reportStatus != "4";
+
+ /** 纭缁撴灉鍙樺寲澶勭悊 */
+ handleApproveResultChange(value) {
+ if (value == "3") {
+ // 閫夋嫨鍚屾剰鏃讹紝閲嶇疆椹冲洖鍘熷洜
+ this.approveForm.rejectType = "";
+ this.approveForm.isDonate = "0"; // 閲嶇疆涓烘湭鎹愮尞
+ } else if (value == "4") {
+ // 閫夋嫨椹冲洖鏃讹紝閲嶇疆杞繍閫夐」
+ this.approveForm.isTransport = "1";
+ this.approveForm.createTransport = false;
+ }
+
+ // 娓呴櫎楠岃瘉
+ this.$nextTick(() => {
+ if (this.$refs.approveForm) {
+ this.$refs.approveForm.clearValidate();
+ }
+ });
},
- /** 鍒ゆ柇鏄惁鍙互璺宠浆鍒拌浆杩愬崟 */
- canGoToTransport(row) {
- // 闇�瑕佽浆杩愶紙isTransport === "2"锛変笖娌℃湁杞繍淇℃伅锛坰erviceTransport涓嶅瓨鍦ㄦ垨涓虹┖鏁扮粍锛�
- return row.isTransport == "2" && row.serviceTransport;
- },
-
- /** 鑾峰彇杞繍鎸夐挳鏂囨湰 */
- getTransportButtonText(row) {
- if (row.isTransport == "2") {
- if (
- row.serviceTransport &&
- Array.isArray(row.serviceTransport) &&
- row.serviceTransport.length > 0
- ) {
- return "鏌ョ湅杞繍鍗�";
- } else {
- return "鍒涘缓杞繍鍗�";
- }
- }
- return "鏃犻渶杞繍";
- },
- getTransportStatustype(row) {
- if (row.isTransport == "1") {
- return "info"; // 涓嶉渶瑕佽浆杩�
- }
- if (
- row.serviceTransport &&
- Array.isArray(row.serviceTransport) &&
- row.serviceTransport.length > 0
- ) {
- // 鏍规嵁杞繍鍗曠姸鎬佹樉绀轰笉鍚岄鑹�
- const transport = row.serviceTransport[0];
- if (transport.transitStatus) {
- return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
- }
- return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
- }
- return "success"; // 闇�瑕佽浆杩愪絾鏃犺浆杩愪俊鎭�
- },
+ // 杞繍鐩稿叧鏂规硶
/** 鑾峰彇杞繍鐘舵�佹爣绛炬牱寮� */
getTransportStatusTag(row) {
- if (row.isTransport === "1") {
+ if (row.isTransport == "1") {
return "info"; // 涓嶉渶瑕佽浆杩�
}
if (
@@ -1155,7 +1192,7 @@
/** 鑾峰彇杞繍鐘舵�佹枃鏈� */
getTransportStatusText(row) {
- if (row.isTransport === "1") {
+ if (row.isTransport == "1") {
return "鏃犻渶杞繍";
}
if (
@@ -1185,95 +1222,26 @@
return "闇�杞繍";
},
- /** 澶勭悊杞繍鎿嶄綔 */
- async handleTransport(row) {
- try {
- // 鍏堣幏鍙栨渶鏂扮殑妗堜緥淇℃伅
- const caseData = row;
-
- if (caseData.isTransport == "2") {
- if (
- caseData.serviceTransport &&
- Array.isArray(caseData.serviceTransport) &&
- caseData.serviceTransport.length > 0
- ) {
- // 宸叉湁杞繍鍗曪紝璺宠浆鍒拌浆杩愬崟璇︽儏椤�
- const transport = caseData.serviceTransport[0];
- this.goToTransportDetail(transport.id, row.name);
- } else {
- // 娌℃湁杞繍鍗曪紝璺宠浆鍒板垱寤鸿浆杩愬崟椤甸潰
- this.goToCreateTransport(row);
- }
- } else {
- this.$message.warning("璇ユ渚嬩笉闇�瑕佽浆杩�");
- }
- } catch (error) {
- console.error("鑾峰彇妗堜緥淇℃伅澶辫触:", error);
- this.$message.error("鑾峰彇妗堜緥淇℃伅澶辫触");
- }
- },
-
/** 璺宠浆鍒板垱寤鸿浆杩愬崟椤甸潰 */
- goToCreateTransport(caseData) {
- // 鏂瑰紡1锛氬湪鏂伴〉闈㈡墦寮�
- this.$router.push({
- path: "/report/transfer",
- query: {
- autoCreate: "true", //璺宠浆杞繍鏍囪瘑
- caseId: caseData.id,
- caseNo: caseData.caseNo,
- patName: caseData.name,
- age: caseData.age,
- sex: caseData.sex,
- diagnosisname: caseData.diagnosisname,
- treatmentHospitalName: caseData.treatmenthospitalname
- }
- });
- },
+ Createatransferorder(res) {
+ console.log(res);
- /** 鎵撳紑杞繍鍗曞脊妗� */
- openTransportDialog(caseData) {
- this.$modal.confirm({
- title: "鍒涘缓杞繍鍗�",
- message: `鎮ㄥ皢鍒涘缓妗堜緥銆�${caseData.caseNo} - ${caseData.name}銆戠殑杞繍鍗曪紝鏄惁缁х画锛焋,
- confirmButtonText: "鍓嶅線鍒涘缓",
- cancelButtonText: "鍙栨秷",
- type: "warning",
- beforeClose: (action, instance, done) => {
- if (action === "confirm") {
- // 璺宠浆鍒拌浆杩愬崟鍒涘缓椤甸潰
- this.$router.push({
- path: "/report/transfer",
- query: {
- caseId: caseData.id,
- caseNo: caseData.caseNo,
- patName: caseData.name,
- age: caseData.age,
- sex: caseData.sex,
- diagnosisname: caseData.diagnosisname,
- treatmentHospitalName: caseData.treatmenthospitalname
- }
- });
- done();
- } else {
- done();
- }
- }
- });
- },
-
- /** 璺宠浆鍒拌浆杩愬崟璇︽儏椤� */
- goToTransportDetail(transportId, name) {
this.$router.push({
path: "/report/transfer",
query: {
autoCreate: "true",
- patName: name
+ caseId: res.id,
+ caseNo: res.caseNo,
+ patName: res.name,
+ age: res.age,
+ sex: res.sex,
+ diagnosisname: res.diagnosisname,
+ treatmentHospitalName: res.treatmenthospitalname
}
});
},
- // ---------------------------------end
- // 澶氶�夋閫変腑鏁版嵁
+
+ /** 澶氶�夋閫変腑鏁版嵁 */
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id);
this.single = selection.length !== 1;
@@ -1304,7 +1272,7 @@
this.currentCase = row;
// 濡傛灉鐘舵�佹槸"宸蹭笂鎶�"(1)锛屽垯鏇存柊涓�"宸查槄璇�"(2)
- if (this.currentCase.reportStatus === "1") {
+ if (this.currentCase.reportStatus == "1") {
try {
const updateData = {
...this.currentCase,
@@ -1339,7 +1307,7 @@
async handleEdit(row) {
try {
const response = await donateInfo(row.id);
- if (response.code === 200 || response.data) {
+ if (response.code == 200 || response.data) {
this.isEditing = true;
const data = response.data || response;
@@ -1392,7 +1360,10 @@
this.approveForm.id = row.id;
this.approveForm.approveResult = "3";
- this.approveForm.approveOpinion = "";
+ this.approveForm.confirmResult = "";
+ this.approveForm.rejectType = "";
+ this.approveForm.isTransport = row.isTransport || "1";
+ this.approveForm.isDonate = "0";
this.$nextTick(() => {
if (this.$refs.approveForm) {
@@ -1406,7 +1377,7 @@
this.currentCase = row;
this.approveForm.id = row.id;
this.approveForm.approveResult = "3";
- this.approveForm.approveOpinion = "";
+ this.approveForm.confirmResult = "";
this.approveOpen = true;
this.$modal.msgError("鑾峰彇璇︽儏澶辫触锛屼絾宸叉墦寮�纭绐楀彛");
}
@@ -1416,21 +1387,66 @@
async submitApprove() {
try {
const valid = await this.$refs.approveForm.validate();
- if (valid) {
- const approveData = {
- ...this.currentCase,
- reportStatus: this.approveForm.approveResult,
- remark: this.approveForm.approveOpinion,
- approvername: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛",
- approvetime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
- updateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
- updateBy: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛"
- };
+ if (!valid) return;
- await donateEdit(approveData);
- this.$modal.msgSuccess("纭鎴愬姛");
- this.approveOpen = false;
- this.getList();
+ // 鍑嗗纭鏁版嵁
+ const approveData = {
+ ...this.currentCase,
+ reportStatus: this.approveForm.approveResult,
+ confirmResult: this.approveForm.confirmResult,
+ approvername: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛",
+ approvetime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+ updateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+ updateBy: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛"
+ };
+
+ // 澶勭悊纭缁撴灉
+ if (this.approveForm.approveResult == "3") {
+ // 鍚屾剰
+ approveData.isTransport = this.approveForm.isTransport;
+
+ // 濡傛灉涓嶉渶瑕佽浆杩愶紝璁剧疆isDonate涓�1
+ if (this.approveForm.isTransport == "1") {
+ approveData.isDonate = "1";
+ } else {
+ approveData.isDonate = "0";
+ }
+ } else if (this.approveForm.approveResult == "4") {
+ // 椹冲洖
+ approveData.rejectType = this.approveForm.rejectType;
+ approveData.isTransport = "1"; // 椹冲洖鐨勬渚嬩笉闇�瑕佽浆杩�
+ approveData.isDonate = "1"; // 椹冲洖鐨勬渚嬫爣璁颁负宸叉崘鐚�
+ }
+
+ // 淇濆瓨妗堜緥纭淇℃伅
+ await donateEdit(approveData);
+
+ this.$modal.msgSuccess("纭鎴愬姛");
+
+ // 鍏抽棴纭瀵硅瘽妗�
+ this.approveOpen = false;
+
+ // 鍒锋柊鍒楄〃
+ this.getList();
+
+ // 濡傛灉鍚屾剰涓旈渶瑕佽浆杩愶紝璺宠浆鍒拌浆杩愬崟鍒涘缓椤甸潰
+ if (
+ this.approveForm.approveResult == "3" &&
+ this.approveForm.isTransport == "2"
+ ) {
+ this.$router.push({
+ path: "/report/transfer",
+ query: {
+ autoCreate: "true",
+ caseId: this.currentCase.id,
+ caseNo: this.currentCase.caseNo,
+ patName: this.currentCase.name,
+ age: this.currentCase.age,
+ sex: this.currentCase.sex,
+ diagnosisname: this.currentCase.diagnosisname,
+ treatmentHospitalName: this.currentCase.treatmenthospitalname
+ }
+ });
}
} catch (error) {
console.error("纭澶辫触:", error);
@@ -1498,6 +1514,8 @@
infectious: undefined,
infectiousOther: undefined,
isTransport: "1",
+ isDonate: "0", // 鏂板锛氭槸鍚︽崘鐚�
+ rejectType: undefined, // 鏂板锛氶┏鍥炲師鍥�
// 鍖婚櫌淇℃伅
treatmenthospitalname: undefined,
treatmentdeptname: undefined,
@@ -1544,7 +1562,7 @@
/** 闄勪欢涓婁紶鎴愬姛澶勭悊 */
handleUploadSuccess({ file, fileList, response }) {
- if (response && response.code === 200) {
+ if (response && response.code == 200) {
if (!this.editForm.annexfilesList) {
this.editForm.annexfilesList = [];
}
@@ -1573,7 +1591,7 @@
handleAttachmentRemove(file) {
if (file.url && this.editForm.annexfilesList) {
const index = this.editForm.annexfilesList.findIndex(
- item => item.path === file.url || item.fileUrl === file.url
+ item => item.path == file.url || item.fileUrl == file.url
);
if (index > -1) {
this.editForm.annexfilesList.splice(index, 1);
@@ -1659,7 +1677,15 @@
this.$refs.editForm && this.$refs.editForm.clearValidate();
});
},
-
+ goToTransportDetail(name) {
+ this.$router.push({
+ path: "/report/transfer",
+ query: {
+ autoCreate: "true",
+ patName: name
+ }
+ });
+ },
/** 淇濆瓨琛ㄥ崟 */
async handleSave() {
try {
@@ -1691,7 +1717,7 @@
response = await donateAdd(requestData);
}
- if (response.code === 200) {
+ if (response.code == 200) {
this.$message.success(this.isEditing ? "淇敼鎴愬姛" : "鏂板鎴愬姛");
this.handleEditClose();
this.getList();
@@ -1787,7 +1813,49 @@
.approve-detail-preview {
height: 100%;
}
+.approve-dialog-content {
+ display: flex;
+ height: 600px; /* 鍙互璋冩暣楂樺害 */
+ overflow: hidden;
+}
+.approve-detail-left {
+ width: 50%;
+ background: #f8f9fa;
+ padding: 20px;
+ overflow-y: auto;
+ border-right: 1px solid #e4e7ed;
+}
+
+.approve-form-right {
+ width: 50%;
+ padding: 20px;
+ overflow-y: auto;
+}
+
+.approve-detail-preview {
+ height: 100%;
+}
+
+/* 鍝嶅簲寮忚皟鏁� */
+@media (max-width: 1200px) {
+ .approve-dialog-content {
+ flex-direction: column;
+ height: auto;
+ max-height: 80vh;
+ }
+
+ .approve-detail-left,
+ .approve-form-right {
+ width: 100%;
+ height: auto;
+ }
+
+ .approve-detail-left {
+ border-right: none;
+ border-bottom: 1px solid #e4e7ed;
+ }
+}
/* 鍝嶅簲寮忚璁� */
@media (max-width: 1200px) {
.approve-dialog {
diff --git a/src/views/business/assess/assessInfo.vue b/src/views/business/assess/assessInfo.vue
index 346cff1..a465c99 100644
--- a/src/views/business/assess/assessInfo.vue
+++ b/src/views/business/assess/assessInfo.vue
@@ -1,63 +1,7 @@
<template>
<div class="assessment-detail">
<!-- 鍩虹妗堜緥淇℃伅 -->
- <case-basic-info
- :case-id="caseId"
- :show-attachment="true"
- />
- <!-- <el-card class="basic-info-card">
- <div slot="header" class="clearfix">
- <span>妗堜緥鍩烘湰淇℃伅</span>
- <el-button
- style="float: right; padding: 3px 0"
- type="text"
- @click="handleAttachmentPreview"
- >
- <i class="el-icon-folder-opened"></i> 鏌ョ湅闄勪欢
- </el-button>
- </div>
-
- <el-descriptions :column="2" border>
- <el-descriptions-item label="浣忛櫌鍙�">{{
- assessmentData.caseNo
- }}</el-descriptions-item>
- <el-descriptions-item label="娼滃湪鎹愮尞鑰呭鍚�">{{
- assessmentData.name || assessmentData.donorName
- }}</el-descriptions-item>
- <el-descriptions-item label="鎬у埆">
- <dict-tag
- :options="dict.type.sys_user_sex"
- :value="assessmentData.sex"
- />
- </el-descriptions-item>
- <el-descriptions-item label="骞撮緞"
- >{{ assessmentData.age }}宀�</el-descriptions-item
- >
- <el-descriptions-item label="琛�鍨�">
- {{ assessmentData.bloodtype }}
- </el-descriptions-item>
- <el-descriptions-item label="璇佷欢鍙风爜">{{
- assessmentData.idcardno
- }}</el-descriptions-item>
- <el-descriptions-item label="鐤剧梾璇婃柇">{{
- assessmentData.diagnosisname
- }}</el-descriptions-item>
- <el-descriptions-item label="鎵�鍦ㄥ尰鐤楁満鏋�">{{
- assessmentData.treatmenthospitalname
- }}</el-descriptions-item>
- <el-descriptions-item label="鍗忚皟鍛�">{{
- assessmentData.coordinatorName
- }}</el-descriptions-item>
- <el-descriptions-item label="璇勪及鏃堕棿">{{
- assessmentData.assessTime
- }}</el-descriptions-item>
- <el-descriptions-item label="璇勪及鐘舵��">
- <el-tag :type="statusFilter(assessmentData.assessState)">
- {{ statusTextFilter(assessmentData.assessState) }}
- </el-tag>
- </el-descriptions-item>
- </el-descriptions>
- </el-card> -->
+ <case-basic-info :case-id="caseId" :show-attachment="true" />
<el-card class="organ-assessment-card">
<div slot="header" class="clearfix">
@@ -128,7 +72,7 @@
v-for="(assessment, index) in getOrganAssessments(scope.row)"
:key="`${scope.row.organno}_${index}`"
:label="`绗�${index + 1}娆¤瘎浼癭"
- :name="index"
+ :name="String(index)"
>
<organ-assessment-form
:organ-data="scope.row"
@@ -195,7 +139,7 @@
class="assessment-detail-card"
>
<div
- v-if="getOrganAssessments(scope.row).length === 0"
+ v-if="getOrganAssessments(scope.row).length == 0"
class="no-assessment"
>
<el-empty description="鏆傛棤璇勪及璁板綍"></el-empty>
@@ -229,18 +173,24 @@
border
class="detail-descriptions"
>
+ <!-- 璇勪及鏃堕棿 -->
<el-descriptions-item label="璇勪及鏃堕棿" :span="2">
- <span class="time-text">{{
- assessment.assessmentTime || "-"
- }}</span>
+ <span class="time-text">
+ {{
+ parseTime(assessment.assessmentTime) ||
+ "鏈缃�"
+ }}
+ </span>
</el-descriptions-item>
+ <!-- 鍘熸湁鐨勮瘎浼颁汉淇℃伅 -->
<el-descriptions-item label="璇勪及浜�">
<el-tag type="info" size="small">
{{ assessment.assessor || "鏈~鍐�" }}
</el-tag>
</el-descriptions-item>
+ <!-- 鍔熻兘鐘舵�� -->
<el-descriptions-item label="鍔熻兘鐘舵��">
<el-tag
:type="
@@ -258,6 +208,7 @@
</el-tag>
</el-descriptions-item>
+ <!-- 璇勪及鎰忚 -->
<el-descriptions-item label="璇勪及鎰忚" :span="2">
<div class="opinion-content">
{{
@@ -267,6 +218,7 @@
</div>
</el-descriptions-item>
+ <!-- 闄勪欢鏁伴噺 -->
<el-descriptions-item
label="闄勪欢鏁伴噺"
:span="2"
@@ -308,52 +260,50 @@
<el-descriptions-item label="鑾峰彇鍓嶆椿妫�">
<el-tag
:type="
- scope.row.isbiopsybefore === '1'
+ scope.row.isbiopsybefore == '1'
? 'success'
: 'info'
"
size="small"
>
- {{ scope.row.isbiopsybefore === "1" ? "鏄�" : "鍚�" }}
+ {{ scope.row.isbiopsybefore == "1" ? "鏄�" : "鍚�" }}
</el-tag>
</el-descriptions-item>
<el-descriptions-item label="鑾峰彇鍚庢椿妫�">
<el-tag
:type="
- scope.row.isbiopsyafter === '1'
+ scope.row.isbiopsyafter == '1'
? 'success'
: 'info'
"
size="small"
>
- {{ scope.row.isbiopsyafter === "1" ? "鏄�" : "鍚�" }}
+ {{ scope.row.isbiopsyafter == "1" ? "鏄�" : "鍚�" }}
</el-tag>
</el-descriptions-item>
<el-descriptions-item label="杈圭紭鍣ㄥ畼">
<el-tag
:type="
- scope.row.ismarginalorgan === '1'
+ scope.row.ismarginalorgan == '1'
? 'warning'
: 'info'
"
size="small"
>
- {{
- scope.row.ismarginalorgan === "1" ? "鏄�" : "鍚�"
- }}
+ {{ scope.row.ismarginalorgan == "1" ? "鏄�" : "鍚�" }}
</el-tag>
</el-descriptions-item>
<el-descriptions-item label="鐥呭師鑿岄槼鎬�">
<el-tag
:type="
- scope.row.ispathogenpositive === '1'
+ scope.row.ispathogenpositive == '1'
? 'danger'
: 'info'
"
size="small"
>
{{
- scope.row.ispathogenpositive === "1" ? "鏄�" : "鍚�"
+ scope.row.ispathogenpositive == "1" ? "鏄�" : "鍚�"
}}
</el-tag>
</el-descriptions-item>
@@ -372,7 +322,11 @@
</template>
</el-table-column>
- <el-table-column label="鍣ㄥ畼缂栧彿" align="center" prop="organnumber" />
+ <el-table-column label="鍣ㄥ畼缂栧彿" align="center" prop="organnumber">
+ <template slot-scope="scope">
+ {{ getOrganvalue(scope.row.organno) }}
+ </template>
+ </el-table-column>
<el-table-column
label="鑾峰彇鏈烘瀯"
@@ -413,9 +367,9 @@
<template slot-scope="scope">
<el-tag
:type="
- getOrganOverallStatus(scope.row) === 'completed'
+ getOrganOverallStatus(scope.row) == 'completed'
? 'success'
- : getOrganOverallStatus(scope.row) === 'assessing'
+ : getOrganOverallStatus(scope.row) == 'assessing'
? 'primary'
: 'warning'
"
@@ -554,14 +508,14 @@
},
computed: {
isCoordinator() {
- return this.currentUser.role === "coordinator";
+ return this.currentUser.role == "coordinator";
},
currentDepartment() {
return this.currentUser.department;
},
// 鏍规嵁鎹愮尞鍐冲畾杩囨护鍚庣殑鍣ㄥ畼鍒楄〃
filteredOrganAssessmentList() {
- if (!this.organdecisionValues || this.organdecisionValues.length === 0) {
+ if (!this.organdecisionValues || this.organdecisionValues.length == 0) {
return [];
}
@@ -585,7 +539,7 @@
return (
assessments &&
assessments.length > 0 &&
- assessments.every(assessment => assessment.status === "assessed")
+ assessments.every(assessment => assessment.status == "assessed")
);
});
},
@@ -611,20 +565,25 @@
this.infoid = this.$route.query.infoid;
this.caseId = this.infoid;
this.assessmentId = this.$route.query.id;
- this.isEdit = this.$route.query.assess === "true";
+ this.isEdit = this.$route.query.assess == "true";
this.getAssessmentDetail();
},
methods: {
// 鏍规嵁瀛楀吀value鑾峰彇label
getOrganLabel(organValue) {
- const dictItem = this.organDict.find(item => item.value === organValue);
+ const dictItem = this.organDict.find(item => item.value == organValue);
return dictItem ? dictItem.label : organValue;
+ },
+ getOrganvalue(organValue) {
+ const dictItem = this.organDict.find(item => item.value == organValue);
+
+ return dictItem ? dictItem.value : organValue;
},
// Tab鐐瑰嚮浜嬩欢
handleTabClick(organ, tab) {
if (tab.name !== "add") {
- this.activeTabMap.set(organ.organno, tab.name);
+ this.activeTabMap.set(organ.organno, String(tab.name));
}
},
// 鑾峰彇鍔熻兘鐘舵�佹爣绛剧被鍨�
@@ -651,7 +610,7 @@
// 鏄剧ず闄勪欢鍒楄〃
showAttachmentList(attachments, assessmentNumber) {
- if (!attachments || attachments.length === 0) {
+ if (!attachments || attachments.length == 0) {
this.$message.info(`绗�${assessmentNumber}娆¤瘎浼版殏鏃犻檮浠禶);
return;
}
@@ -694,7 +653,7 @@
if (!organ.assesscontent) return [];
try {
const assessData =
- typeof organ.assesscontent === "string"
+ typeof organ.assesscontent == "string"
? JSON.parse(organ.assesscontent)
: organ.assesscontent;
@@ -780,7 +739,7 @@
const saveMethod = this.assessmentData.id ? assessedit : assessAdd;
const response = await saveMethod(saveData);
- if (response.code === 200) {
+ if (response.code == 200) {
this.$message.success("璇勪及琛ㄤ繚瀛樻垚鍔燂紒");
if (!this.assessmentData.id && response.data) {
this.assessmentData.id = response.data;
@@ -806,6 +765,7 @@
async handleOrganDecisionChange(newDecision) {
const oldDecision = [...this.prevOrgandecisionValues];
this.autoHandleDecisionChange(newDecision);
+ console.log(newDecision);
const removedDecisions = oldDecision.filter(
item => !newDecision.includes(item)
@@ -818,7 +778,7 @@
this.prevOrgandecisionValues = [...newDecision];
this.$forceUpdate();
- if (newDecision.length === 0) {
+ if (newDecision.length == 0) {
this.expandedRowKeys = [];
}
},
@@ -917,7 +877,7 @@
for (const organValue of relatedOrgans) {
const organIndex = this.organAssessmentList.findIndex(
- organ => organ.organno === organValue && organ.delFlag !== "1"
+ organ => organ.organno == organValue && organ.delFlag !== "1"
);
if (organIndex !== -1) {
@@ -959,7 +919,7 @@
// 纭繚鍣ㄥ畼瀛樺湪
ensureOrganExists(organValue) {
const exists = this.organAssessmentList.some(
- organ => organ.organno === organValue && organ.delFlag !== "1"
+ organ => organ.organno == organValue && organ.delFlag !== "1"
);
if (!exists) {
@@ -991,7 +951,7 @@
try {
const response = await evaluateBaseInfolist({ infoid: this.infoid });
- if (response.code === 200) {
+ if (response.code == 200) {
this.handleResponseData(response);
} else {
this.$message.error("鑾峰彇璇︽儏澶辫触锛�" + (response.msg || "鏈煡閿欒"));
@@ -1065,7 +1025,7 @@
const organno = organ.organno;
// 濡傛灉 assesscontent 鏄瓧绗︿覆锛岀‘淇濆畠鏄湁鏁堢殑 JSON
- if (organ.assesscontent && typeof organ.assesscontent === "string") {
+ if (organ.assesscontent && typeof organ.assesscontent == "string") {
try {
JSON.parse(organ.assesscontent);
} catch (error) {
@@ -1081,9 +1041,9 @@
const assessments = this.getOrganAssessments(organ);
const activeTab = this.activeTabMap.has(organno)
- ? this.activeTabMap.get(organno)
+ ? String(this.activeTabMap.get(organno))
: assessments.length > 0
- ? 0
+ ? "0"
: "summary";
return {
@@ -1101,7 +1061,7 @@
return {
index: index,
status: "pending",
- assessmentTime: "",
+ assessmentTime: new Date().toLocaleString("zh-CN"), // 娣诲姞榛樿璇勪及鏃堕棿
assessor: "",
functionStatus: "",
assessmentOpinion: "",
@@ -1125,20 +1085,20 @@
// 鑾峰彇鍣ㄥ畼鏁翠綋鐘舵��
getOrganOverallStatus(organ) {
const assessments = this.getOrganAssessments(organ);
- if (assessments.length === 0) {
+ if (assessments.length == 0) {
return "pending";
}
const validAssessments = assessments.filter(a => a.delFlag !== "1");
- if (validAssessments.length === 0) {
+ if (validAssessments.length == 0) {
return "pending";
}
const allAssessed = validAssessments.every(
- assessment => assessment.status === "assessed"
+ assessment => assessment.status == "assessed"
);
const someAssessed = validAssessments.some(
- assessment => assessment.status === "assessed"
+ assessment => assessment.status == "assessed"
);
if (allAssessed) return "completed";
@@ -1167,7 +1127,7 @@
} else {
this.expandedRowKeys = [key];
this.organAssessmentList.forEach(item => {
- item.expanded = item.organno === key;
+ item.expanded = item.organno == key;
});
}
},
@@ -1185,14 +1145,15 @@
const assessments = this.getOrganAssessments(organ);
const newAssessment = {
...this.getDefaultAssessment(assessments.length),
- assessor: this.currentUser.name
+ assessor: this.currentUser.name,
+ assessmentTime: new Date().toLocaleString("zh-CN") // 璁剧疆鍏蜂綋鐨勮瘎浼版椂闂�
};
const newAssessments = [...assessments, newAssessment];
this.$set(organ, "assesscontent", JSON.stringify(newAssessments));
- organ.activeTab = assessments.length;
- this.activeTabMap.set(organ.organno, assessments.length);
+ organ.activeTab = String(assessments.length);
+ this.activeTabMap.set(organ.organno, String(assessments.length));
this.$message.success("宸叉坊鍔犳柊鐨勮瘎浼�");
},
@@ -1203,32 +1164,25 @@
this.deleteOrganAssessment(organData, assessmentIndex);
},
// 澶勭悊璇勪及淇濆瓨
+ // 鍦� AssessmentDetail.vue 鐨� handleSaveAssessment 鏂规硶涓�
handleSaveAssessment(data) {
const { organData, assessmentData, assessmentIndex } = data;
const assessments = this.getOrganAssessments(organData);
- console.log("淇濆瓨璇勪及鏁版嵁:", data);
-
if (assessments[assessmentIndex]) {
- // 鍒涘缓鏂扮殑璇勪及鏁扮粍
const newAssessments = [...assessments];
newAssessments[assessmentIndex] = {
...assessments[assessmentIndex],
...assessmentData,
- status: "assessed", // 鏍囪涓哄凡璇勪及
- assessmentTime: new Date().toISOString(), // 璁剧疆璇勪及鏃堕棿
- delFlag: "0" // 纭繚鍒犻櫎鏍囧織
+ status: "assessed",
+ assessmentTime:
+ assessmentData.assessmentTime || new Date().toLocaleString("zh-CN"),
+ delFlag: "0"
};
- // 鏇存柊 assesscontent
this.$set(organData, "assesscontent", JSON.stringify(newAssessments));
-
- // 寮哄埗閲嶆柊娓叉煋
this.$forceUpdate();
-
this.$message.success("璇勪及淇濆瓨鎴愬姛");
-
- // 妫�鏌ユ槸鍚﹂渶瑕佽嚜鍔ㄥ垏鎹㈠埌涓嬩竴涓瘎浼�
this.checkAndSwitchTab(organData, assessmentIndex);
}
},
@@ -1238,8 +1192,8 @@
const assessments = this.getOrganAssessments(organData);
if (currentIndex < assessments.length - 1) {
// 濡傛灉杩樻湁涓嬩竴涓瘎浼帮紝鑷姩鍒囨崲鍒颁笅涓�涓�
- organData.activeTab = currentIndex + 1;
- this.activeTabMap.set(organData.organno, currentIndex + 1);
+ organData.activeTab = String(currentIndex + 1);
+ this.activeTabMap.set(organData.organno, String(currentIndex + 1));
} else {
// 濡傛灉娌℃湁涓嬩竴涓瘎浼帮紝鍒囨崲鍒版眹鎬婚〉
organData.activeTab = "summary";
@@ -1279,14 +1233,14 @@
this.$set(organ, "assesscontent", JSON.stringify(newAssessments));
// 澶勭悊tab鍒囨崲
- if (newAssessments.length === 0) {
+ if (newAssessments.length == 0) {
organ.activeTab = "summary";
this.activeTabMap.set(organ.organno, "summary");
- } else if (organ.activeTab === assessmentIndex) {
+ } else if (organ.activeTab == String(assessmentIndex)) {
const newIndex = Math.max(0, assessmentIndex - 1);
- organ.activeTab = newIndex;
- this.activeTabMap.set(organ.organno, newIndex);
- } else if (organ.activeTab === "summary") {
+ organ.activeTab = String(newIndex);
+ this.activeTabMap.set(organ.organno, String(newIndex));
+ } else if (organ.activeTab == "summary") {
this.activeTabMap.set(organ.organno, "summary");
}
@@ -1301,16 +1255,18 @@
// 鑾峰彇鏈�鏂拌瘎浼版椂闂�
getLatestAssessmentTime(organ) {
const assessments = this.getOrganAssessments(organ);
- if (assessments.length === 0) return null;
+ if (assessments.length == 0) return null;
const assessed = assessments.filter(
a => a.assessmentTime && a.delFlag !== "1"
);
- if (assessed.length === 0) return null;
+ if (assessed.length == 0) return null;
- return assessed.sort(
- (a, b) => new Date(b.assessmentTime) - new Date(a.assessmentTime)
- )[0].assessmentTime;
+ return this.parseTime(
+ assessed.sort(
+ (a, b) => new Date(b.assessmentTime) - new Date(a.assessmentTime)
+ )[0].assessmentTime
+ );
},
// 鑾峰彇璇勪及鐘舵�佹爣绛剧被鍨�
@@ -1372,7 +1328,7 @@
if (this.assessmentData.assessannex) {
try {
const annexData =
- typeof this.assessmentData.assessannex === "string"
+ typeof this.assessmentData.assessannex == "string"
? JSON.parse(this.assessmentData.assessannex)
: this.assessmentData.assessannex;
@@ -1411,7 +1367,7 @@
const response = await assessedit(updateData);
- if (response.code === 200) {
+ if (response.code == 200) {
this.$message.success("璇勪及瀹屾垚纭鎴愬姛");
this.assessmentData.assessState = "3";
this.isEdit = false;
@@ -1519,6 +1475,7 @@
.fixed-width .el-button {
margin: 0 2px;
}
+
/* 姹囨�婚〉闈㈡牱寮� */
.assessment-summary {
padding: 10px;
diff --git a/src/views/business/decide/DecideInfo copy.vue b/src/views/business/decide/DecideInfo copy.vue
new file mode 100644
index 0000000..239e5f9
--- /dev/null
+++ b/src/views/business/decide/DecideInfo copy.vue
@@ -0,0 +1,816 @@
+<template>
+ <div class="death-judgment-detail">
+ <case-basic-info :case-id="caseId" :show-attachment="true" />
+ <el-card class="detail-card">
+ <!-- 鍩虹淇℃伅 -->
+ <div slot="header" class="clearfix">
+ <span class="detail-title">姝讳骸鍒ゅ畾鍩烘湰淇℃伅</span>
+ <el-button
+ v-if="isEdit"
+ type="success"
+ style="float: right"
+ @click="handleSave"
+ :loading="saveLoading"
+ >
+ 淇濆瓨淇℃伅
+ </el-button>
+ <el-button
+ v-else
+ type="primary"
+ style="float: right"
+ @click="handleEdit"
+ >
+ 缂栬緫淇℃伅
+ </el-button>
+ </div>
+
+ <el-form :model="form" ref="form" :rules="rules" label-width="120px">
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <el-form-item label="姝讳骸鍘熷洜" prop="deathreason">
+ <el-input v-model="form.deathreason" :readonly="!isEdit" />
+ <!-- <el-select
+ v-model="form.deathreason"
+ :disabled="!isEdit"
+ style="width: 100%"
+ >
+ <el-option label="鑴戞浜�" value="brain_death" />
+ <el-option label="蹇冩浜�" value="heart_death" />
+ <el-option label="鍏朵粬" value="other" />
+ </el-select> -->
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="璐熻矗浜�" prop="responsibleusername">
+ <el-input
+ v-model="form.responsibleusername"
+ :readonly="!isEdit"
+ />
+ </el-form-item>
+ </el-col>
+ <!-- <el-col :span="8">
+ <el-form-item label="璁板綍鐘舵��" prop="recordstate">
+ <el-tag :type="getStatusTag(form.recordstate)">
+ {{ getStatusText(form.recordstate) }}
+ </el-tag>
+ </el-form-item>
+ </el-col> -->
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <el-form-item label="姝讳骸鏃堕棿" prop="deathtime">
+ <el-date-picker
+ v-model="form.deathtime"
+ type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ style="width: 100%"
+ :disabled="!isEdit"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="deathjudgedocto">
+ <el-input v-model="form.deathjudgedocto" :readonly="!isEdit" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鍒ゅ畾鍖荤敓浜�" prop="deathjudgedoctt">
+ <el-input v-model="form.deathjudgedoctt" :readonly="!isEdit" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <el-form-item label="鍣ㄥ畼鑾峰彇鏈烘瀯" prop="gainhospitalname">
+ <el-input v-model="form.gainhospitalname" :readonly="!isEdit" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鏄惁榛樺搥缂呮��" prop="isspendremember">
+ <el-select
+ v-model="form.isspendremember"
+ :disabled="!isEdit"
+ style="width: 100%"
+ >
+ <el-option label="鏄�" :value="1" />
+ <el-option label="鍚�" :value="0" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鎭㈠閬椾綋浠" prop="isrestoreremains">
+ <el-select
+ v-model="form.isrestoreremains"
+ :disabled="!isEdit"
+ style="width: 100%"
+ >
+ <el-option label="鏄�" :value="1" />
+ <el-option label="鍚�" :value="0" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-form-item label="姝讳骸鍒ゅ畾璇存槑" prop="remark">
+ <el-input
+ type="textarea"
+ :rows="3"
+ v-model="form.remark"
+ :readonly="!isEdit"
+ placeholder="璇︾粏璁板綍姝讳骸鍒ゅ畾杩囩▼鍜屼緷鎹�"
+ />
+ </el-form-item>
+ </el-form>
+ </el-card>
+
+ <!-- 璇勪及琛ㄩ檮浠� -->
+ <el-card class="attachment-card">
+ <div slot="header" class="clearfix">
+ <span class="detail-title">姝讳骸鍒ゅ畾璇勪及琛ㄩ檮浠�</span>
+ <!-- <el-button
+ v-if="isEdit"
+ type="primary"
+ size="mini"
+ @click="openUploadDialog"
+ :loading="uploadLoading"
+ >
+ 涓婁紶闄勪欢
+ </el-button> -->
+ </div>
+
+ <!-- 闄勪欢绫诲瀷閫夐」鍗� -->
+ <el-tabs v-model="activeAttachmentType" type="card">
+ <el-tab-pane
+ v-for="type in attachmentTypes"
+ :key="type.value"
+ :label="type.label"
+ :name="type.value"
+ >
+ <div class="attachment-upload-section">
+ <div class="upload-header">
+ <span class="upload-title">{{ type.label }}</span>
+ <el-tooltip content="鐐瑰嚮涓婁紶璇ョ被鍨嬭瘎浼拌〃" placement="top">
+ <el-button
+ size="mini"
+ type="primary"
+ icon="el-icon-plus"
+ @click="openUploadDialog(type.value)"
+ :disabled="!isEdit"
+ >
+ 娣诲姞璇勪及琛�
+ </el-button>
+ </el-tooltip>
+ </div>
+
+ <!-- 闄勪欢鍒楄〃 -->
+ <el-table
+ :data="getAttachmentsByType(type.value)"
+ v-loading="attachmentLoading"
+ style="width: 100%; margin-top: 15px;"
+ >
+ <el-table-column label="鏂囦欢鍚嶇О" min-width="200">
+ <template slot-scope="scope">
+ <div class="file-info">
+ <i
+ class="el-icon-document"
+ style="margin-right: 8px; color: #409EFF;"
+ ></i>
+ <span>{{ scope.row.fileName }}</span>
+ </div>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鏂囦欢绫诲瀷" width="100" align="center">
+ <template slot-scope="scope">
+ <el-tag size="small">{{
+ getFileType(scope.row.fileName)
+ }}</el-tag>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鏂囦欢澶у皬" width="100" align="center">
+ <template slot-scope="scope">
+ <span>{{ formatFileSize(scope.row.fileSize) }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="涓婁紶鏃堕棿" width="160" align="center">
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.uploadTime) }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="涓婁紶浜�" width="100" align="center">
+ <template slot-scope="scope">
+ <span>{{ scope.row.uploader }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鎿嶄綔" width="180" align="center">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handlePreview(scope.row)"
+ >棰勮</el-button
+ >
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-download"
+ @click="handleDownload(scope.row)"
+ >涓嬭浇</el-button
+ >
+ <el-button
+ v-if="isEdit"
+ size="mini"
+ type="text"
+ icon="el-icon-delete"
+ style="color: #F56C6C;"
+ @click="handleRemoveAttachment(scope.row)"
+ >鍒犻櫎</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <div
+ v-if="getAttachmentsByType(type.value).length === 0"
+ class="empty-attachment"
+ >
+ <el-empty
+ description="鏆傛棤璇勪及琛ㄩ檮浠�"
+ :image-size="80"
+ ></el-empty>
+ </div>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </el-card>
+
+ <!-- 涓婁紶瀵硅瘽妗� -->
+ <el-dialog
+ :title="`涓婁紶${getCurrentTypeLabel}璇勪及琛╜"
+ :visible.sync="uploadDialogVisible"
+ width="500px"
+ :close-on-click-modal="false"
+ >
+ <el-upload
+ ref="uploadRef"
+ class="upload-demo"
+ drag
+ :action="uploadAction"
+ :headers="headers"
+ multiple
+ :file-list="tempFileList"
+ :before-upload="beforeUpload"
+ :on-change="handleFileChange"
+ :on-remove="handleTempRemove"
+ :on-success="handleUploadSuccess"
+ :auto-upload="false"
+ >
+ <i class="el-icon-upload"></i>
+ <div class="el-upload__text">
+ 灏嗚瘎浼拌〃鏂囦欢鎷栧埌姝ゅ锛屾垨<em>鐐瑰嚮涓婁紶</em>
+ </div>
+ <div class="el-upload__tip" slot="tip">
+ 鏀寔涓婁紶pdf銆乯pg銆乸ng銆乨oc銆乨ocx銆亁ls銆亁lsx鏍煎紡鏂囦欢锛屽崟涓枃浠朵笉瓒呰繃10MB
+ </div>
+ </el-upload>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="uploadDialogVisible = false">鍙栨秷</el-button>
+ <el-button
+ type="primary"
+ @click="submitUpload"
+ :loading="uploadLoading"
+ :disabled="tempFileList.length === 0"
+ >
+ 纭涓婁紶
+ </el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ deathinfoedit,
+ deathinfoadd,
+ queryDathInfoBaseInfo
+} from "@/api/businessApi";
+import { getToken } from "@/utils/auth";
+import CaseBasicInfo from "@/components/CaseBasicInfo";
+
+export default {
+ name: "DeathJudgmentDetail",
+ components: { CaseBasicInfo },
+
+ data() {
+ return {
+ caseId: null,
+ // 鏄惁缂栬緫妯″紡
+ isEdit: false,
+ // 淇濆瓨鍔犺浇鐘舵��
+ saveLoading: false,
+ infoid: undefined,
+
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ id: undefined,
+ infoid: undefined,
+ donorno: "",
+ name: "",
+ sex: "",
+ age: "",
+ diagnosisname: "",
+ deathreason: "",
+ deathtime: "",
+ deathjudgedocto: "",
+ deathjudgedoctt: "",
+ gainhospitalno: "",
+ gainhospitalname: "",
+ isspendremember: 0,
+ isrestoreremains: 0,
+ rememberAnnex: "",
+ responsibleuserid: "",
+ responsibleusername: "",
+ recordstate: "0",
+ judgmentDescription: ""
+ },
+ // 琛ㄥ崟楠岃瘉瑙勫垯
+ rules: {
+ name: [
+ { required: true, message: "鎹愮尞鑰呭鍚嶄笉鑳戒负绌�", trigger: "blur" }
+ ],
+ deathreason: [
+ { required: true, message: "姝讳骸鍘熷洜涓嶈兘涓虹┖", trigger: "change" }
+ ],
+ deathtime: [
+ { required: true, message: "姝讳骸鏃堕棿涓嶈兘涓虹┖", trigger: "change" }
+ ],
+ deathjudgedocto: [
+ { required: true, message: "鍒ゅ畾鍖荤敓涓�涓嶈兘涓虹┖", trigger: "blur" }
+ ]
+ },
+ // 闄勪欢鐩稿叧鏁版嵁
+ activeAttachmentType: "1",
+ attachmentLoading: false,
+ uploadDialogVisible: false,
+ uploadLoading: false,
+ tempFileList: [],
+ currentUploadType: "",
+ uploadAction: process.env.VUE_APP_BASE_API + "/common/upload",
+ headers: {
+ Authorization: "Bearer " + getToken()
+ },
+ // 璇勪及琛ㄧ被鍨嬪畾涔�
+ attachmentTypes: [
+ { value: "1", label: "鑴戞浜″垽瀹氳〃" },
+ { value: "2", label: "鑴戠數鍥捐瘎浼拌〃" },
+ { value: "3", label: "鐭綔浼忔湡浣撴劅璇卞彂鐢典綅璇勪及琛�" },
+ { value: "4", label: "缁忛澶氭櫘鍕掕秴澹拌瘎浼拌褰�" },
+ { value: "5", label: "鍗仴濮旇剳鎹熶激璐ㄦ帶涓績 - 涓村簥缁煎悎璇勪及琛�" },
+ { value: "6", label: "UW璇勫垎琛�" },
+ { value: "7", label: "蹇冩浜″垽瀹氳〃" }
+ ],
+
+ // 闄勪欢鍒楄〃鏁版嵁
+ attachmentList: []
+ };
+ },
+ computed: {
+ getCurrentTypeLabel() {
+ const type = this.attachmentTypes.find(
+ t => t.value === this.currentUploadType
+ );
+ return type ? type.label : "";
+ }
+ },
+ created() {
+ this.infoid = this.$route.query.infoid;
+ this.caseId = this.infoid;
+ const id = this.$route.query.id;
+ this.isEdit = this.$route.query.isEdit;
+ this.getDetail(this.infoid);
+
+ // if (id && !this.$route.path.includes("/add")) {
+ // this.getDetail(id);
+ // } else if (this.$route.path.includes("/add")) {
+ // this.generateDonorNo();
+ // }
+ this.getAttachmentList();
+ },
+ methods: {
+ // 鐢熸垚鎹愮尞鑰呯紪鍙�
+ generateDonorNo() {
+ const timestamp = Date.now().toString();
+ this.form.donorno = "DONOR" + timestamp.slice(-8);
+ },
+ // 鑾峰彇璇︽儏
+ async getDetail(infoid) {
+ try {
+ const response = await queryDathInfoBaseInfo({ infoid });
+ let realData = {};
+
+ if (response && response.data) {
+ realData = response.data[0];
+ } else if (response) {
+ realData = response;
+ }
+
+ // 鏄犲皠瀛楁鍒拌〃鍗�
+ this.form = {
+ ...this.form,
+ ...realData,
+ // 纭繚鏁板�肩被鍨嬪瓧娈垫纭浆鎹�
+ isspendremember: realData.isspendremember
+ ? parseInt(realData.isspendremember)
+ : 0,
+ isrestoreremains: realData.isrestoreremains
+ ? parseInt(realData.isrestoreremains)
+ : 0
+ };
+
+ // 瑙f瀽闄勪欢淇℃伅
+ if (realData.rememberAnnex) {
+ this.parseAttachmentData(realData.rememberAnnex);
+ }
+ } catch (error) {
+ console.error("鑾峰彇姝讳骸鍒ゅ畾璇︽儏澶辫触:", error);
+ this.$message.error("鏁版嵁鍔犺浇澶辫触");
+ }
+ },
+ // 瑙f瀽闄勪欢鏁版嵁
+ parseAttachmentData(attachmentJson) {
+ try {
+ if (attachmentJson) {
+ const attachments = JSON.parse(attachmentJson);
+ if (Array.isArray(attachments)) {
+ this.attachmentList = attachments;
+ }
+ }
+ } catch (error) {
+ console.error("瑙f瀽闄勪欢鏁版嵁澶辫触:", error);
+ }
+ },
+ // 鏋勫缓闄勪欢JSON鏁版嵁
+ buildAttachmentJson() {
+ return JSON.stringify(this.attachmentList);
+ },
+ // 鑾峰彇鐘舵�佹爣绛炬牱寮�
+ getStatusTag(status) {
+ const statusMap = {
+ "0": "warning", // 缁存姢涓�
+ "1": "success", // 宸插畬鎴�
+ "99": "danger" // 宸茬粓姝�
+ };
+ return statusMap[status] || "info";
+ },
+ // 鑾峰彇鐘舵�佹枃鏈�
+ getStatusText(status) {
+ const textMap = {
+ "0": "缁存姢涓�",
+ "1": "宸插畬鎴�",
+ "99": "宸茬粓姝�"
+ };
+ return textMap[status] || "鏈煡鐘舵��";
+ },
+ // 鑾峰彇闄勪欢鍒楄〃
+ getAttachmentList() {
+ this.attachmentLoading = true;
+ // 瀹為檯椤圭洰涓粠鎺ュ彛鑾峰彇闄勪欢鏁版嵁
+ setTimeout(() => {
+ this.attachmentLoading = false;
+ }, 500);
+ },
+ // 鏍规嵁绫诲瀷鑾峰彇闄勪欢
+ getAttachmentsByType(type) {
+ return this.attachmentList.filter(item => item.type === type);
+ },
+ // 鑾峰彇鏂囦欢绫诲瀷
+ getFileType(fileName) {
+ const ext = fileName
+ .split(".")
+ .pop()
+ .toLowerCase();
+ const typeMap = {
+ pdf: "PDF",
+ doc: "DOC",
+ docx: "DOCX",
+ xls: "XLS",
+ xlsx: "XLSX",
+ jpg: "JPG",
+ jpeg: "JPEG",
+ png: "PNG"
+ };
+ return typeMap[ext] || ext.toUpperCase();
+ },
+ // 鎵撳紑涓婁紶瀵硅瘽妗�
+ openUploadDialog(type = null) {
+ this.currentUploadType = type || this.activeAttachmentType;
+ this.tempFileList = [];
+ this.uploadDialogVisible = true;
+ this.$nextTick(() => {
+ if (this.$refs.uploadRef) {
+ this.$refs.uploadRef.clearFiles();
+ }
+ });
+ },
+ // 涓婁紶鍓嶆牎楠�
+ beforeUpload(file) {
+ const allowedTypes = [
+ "application/pdf",
+ "image/jpeg",
+ "image/png",
+ "application/msword",
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+ "application/vnd.ms-excel",
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+ ];
+
+ const maxSize = 10 * 1024 * 1024; // 10MB
+
+ const isTypeOk =
+ allowedTypes.includes(file.type) ||
+ file.name.endsWith(".pdf") ||
+ file.name.endsWith(".jpg") ||
+ file.name.endsWith(".jpeg") ||
+ file.name.endsWith(".png") ||
+ file.name.endsWith(".doc") ||
+ file.name.endsWith(".docx") ||
+ file.name.endsWith(".xls") ||
+ file.name.endsWith(".xlsx");
+
+ if (!isTypeOk) {
+ this.$message.error(
+ "鏂囦欢鏍煎紡涓嶆敮鎸侊紝璇蜂笂浼爌df銆乯pg銆乸ng銆乨oc銆乨ocx銆亁ls鎴杧lsx鏍煎紡鏂囦欢"
+ );
+ return false;
+ }
+
+ if (file.size > maxSize) {
+ this.$message.error("鏂囦欢澶у皬涓嶈兘瓒呰繃10MB");
+ return false;
+ }
+
+ return true;
+ },
+ // 鏂囦欢閫夋嫨鍙樺寲
+ handleFileChange(file, fileList) {
+ this.tempFileList = fileList;
+ },
+ // 绉婚櫎涓存椂鏂囦欢
+ handleTempRemove(file, fileList) {
+ this.tempFileList = fileList;
+ },
+ /** 涓婁紶鎴愬姛澶勭悊 */
+ handleUploadSuccess(response, file, fileList) {
+ if (response.code === 200) {
+ file.url = response.data || response.url;
+ this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+ for (const file of this.tempFileList) {
+ const newAttachment = {
+ id: Date.now() + Math.random(),
+ type: this.currentUploadType,
+ typeName: this.getCurrentTypeLabel,
+ fileName: file.name,
+ fileSize: file.size,
+ uploadTime: new Date().toISOString(),
+ uploader: "褰撳墠鐢ㄦ埛",
+ fileUrl: file.url
+ };
+
+ this.attachmentList.push(newAttachment);
+ }
+
+ // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
+ this.form.rememberAnnex = this.buildAttachmentJson();
+
+ this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+ this.uploadDialogVisible = false;
+ this.uploadLoading = false;
+ this.tempFileList = [];
+ } else {
+ this.$message.error(response.msg || "鏂囦欢涓婁紶澶辫触");
+ }
+ },
+ // 鎻愪氦涓婁紶
+ async submitUpload() {
+ if (this.tempFileList.length === 0) {
+ this.$message.warning("璇峰厛閫夋嫨瑕佷笂浼犵殑鏂囦欢");
+ return;
+ }
+ this.$refs.uploadRef.submit();
+ this.uploadLoading = true;
+
+ // try {
+ // for (const file of this.tempFileList) {
+ // const newAttachment = {
+ // id: Date.now() + Math.random(),
+ // type: this.currentUploadType,
+ // typeName: this.getCurrentTypeLabel,
+ // fileName: file.name,
+ // fileSize: file.size,
+ // uploadTime: new Date().toISOString(),
+ // uploader: "褰撳墠鐢ㄦ埛",
+ // fileUrl: URL.createObjectURL(file.raw)
+ // };
+
+ // this.attachmentList.push(newAttachment);
+ // }
+
+ // // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
+ // this.form.rememberAnnex = this.buildAttachmentJson();
+
+ // this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+ // this.uploadDialogVisible = false;
+ // this.tempFileList = [];
+ // } catch (error) {
+ // this.$message.error("鏂囦欢涓婁紶澶辫触");
+ // console.error("涓婁紶澶辫触:", error);
+ // } finally {
+ // this.uploadLoading = false;
+ // }
+ },
+ // 鍒犻櫎闄勪欢
+ handleRemoveAttachment(attachment) {
+ this.$confirm("纭畾瑕佸垹闄よ繖涓瘎浼拌〃闄勪欢鍚楋紵", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ const index = this.attachmentList.findIndex(
+ item => item.id === attachment.id
+ );
+ if (index !== -1) {
+ this.attachmentList.splice(index, 1);
+ // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
+ this.form.rememberAnnex = this.buildAttachmentJson();
+ this.$message.success("璇勪及琛ㄥ垹闄ゆ垚鍔�");
+ }
+ })
+ .catch(() => {});
+ },
+ // 棰勮闄勪欢
+ handlePreview(attachment) {
+ if (attachment.fileName.endsWith(".pdf")) {
+ window.open(attachment.fileUrl, "_blank");
+ } else if (attachment.fileName.match(/\.(jpg|jpeg|png)$/i)) {
+ this.$alert(
+ `<img src="${attachment.fileUrl}" style="max-width: 100%;" alt="${attachment.fileName}">`,
+ "鍥剧墖棰勮",
+ {
+ dangerouslyUseHTMLString: true,
+ customClass: "image-preview-dialog"
+ }
+ );
+ } else {
+ this.$message.info("璇ユ枃浠剁被鍨嬫殏涓嶆敮鎸佸湪绾块瑙堬紝璇蜂笅杞藉悗鏌ョ湅");
+ }
+ },
+ // 涓嬭浇闄勪欢
+ handleDownload(attachment) {
+ const link = document.createElement("a");
+ link.href = attachment.fileUrl;
+ link.download = attachment.fileName;
+ link.click();
+ this.$message.success(`寮�濮嬩笅杞�: ${attachment.fileName}`);
+ },
+ // 缂栬緫淇℃伅
+ handleEdit() {
+ this.isEdit = true;
+ },
+ // 淇濆瓨淇℃伅
+ async handleSave() {
+ this.$refs.form.validate(async valid => {
+ if (valid) {
+ this.saveLoading = true;
+
+ try {
+ // 鏋勫缓鎻愪氦鏁版嵁
+ const submitData = {
+ ...this.form,
+ infoid: this.infoid,
+ // 纭繚闄勪欢鏁版嵁鏈�鏂�
+ rememberannex: this.buildAttachmentJson()
+ };
+ let response = null;
+
+ if (submitData.id) {
+ response = await deathinfoedit(submitData);
+ } else {
+ response = await deathinfoadd(submitData);
+ }
+ // const response = await deathinfoedit(submitData);
+
+ if (response.code === 200) {
+ this.$message.success("淇濆瓨鎴愬姛");
+ this.isEdit = false;
+ if (!this.form.id) {
+ this.form.id = response.data;
+ }
+ if (this.$route.path.includes("/add")) {
+ this.$router.push("/case/deathJudgment");
+ }
+ } else {
+ this.$message.error(response.message || "淇濆瓨澶辫触");
+ }
+ } catch (error) {
+ console.error("淇濆瓨澶辫触:", error);
+ this.$message.error("淇濆瓨澶辫触");
+ } finally {
+ this.saveLoading = false;
+ }
+ }
+ });
+ },
+ // 鏂囦欢澶у皬鏍煎紡鍖�
+ formatFileSize(size) {
+ if (size === 0) return "0 B";
+ const k = 1024;
+ const sizes = ["B", "KB", "MB", "GB"];
+ const i = Math.floor(Math.log(size) / Math.log(k));
+ return parseFloat((size / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
+ },
+ // 鏃堕棿鏍煎紡鍖�
+ parseTime(time) {
+ if (!time) return "";
+ const date = new Date(time);
+ return `${date.getFullYear()}-${(date.getMonth() + 1)
+ .toString()
+ .padStart(2, "0")}-${date
+ .getDate()
+ .toString()
+ .padStart(2, "0")} ${date
+ .getHours()
+ .toString()
+ .padStart(2, "0")}:${date
+ .getMinutes()
+ .toString()
+ .padStart(2, "0")}`;
+ }
+ }
+};
+</script>
+
+<style scoped>
+.death-judgment-detail {
+ padding: 20px;
+}
+
+.detail-card {
+ margin-bottom: 20px;
+}
+
+.attachment-card {
+ margin-bottom: 20px;
+}
+
+.detail-title {
+ font-size: 16px;
+ font-weight: bold;
+}
+
+.attachment-upload-section {
+ padding: 10px;
+}
+
+.upload-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 15px;
+}
+
+.upload-title {
+ font-size: 14px;
+ font-weight: 600;
+ color: #303133;
+}
+
+.file-info {
+ display: flex;
+ align-items: center;
+}
+
+.empty-attachment {
+ text-align: center;
+ padding: 40px 0;
+ color: #909399;
+}
+
+/* 鍥剧墖棰勮瀵硅瘽妗嗘牱寮� */
+:deep(.image-preview-dialog) {
+ width: auto;
+ max-width: 90vw;
+}
+
+:deep(.image-preview-dialog .el-message-box__content) {
+ text-align: center;
+}
+</style>
diff --git a/src/views/business/decide/DecideInfo.vue b/src/views/business/decide/DecideInfo.vue
index 239e5f9..ee6b80a 100644
--- a/src/views/business/decide/DecideInfo.vue
+++ b/src/views/business/decide/DecideInfo.vue
@@ -1,45 +1,36 @@
<template>
<div class="death-judgment-detail">
<case-basic-info :case-id="caseId" :show-attachment="true" />
- <el-card class="detail-card">
- <!-- 鍩虹淇℃伅 -->
+<!-- 鍏叡淇℃伅妯″潡锛堢嫭绔嬫樉绀猴級 -->
+
+ <!-- 鍒ゅ畾绫诲瀷鏍囩椤� -->
+ <el-card class="type-card">
+ <el-tabs
+ v-model="activeJudgmentType"
+ type="card"
+ @tab-click="handleTabChange"
+ >
+ <el-tab-pane label="鑴戞浜″垽瀹�" name="brain">
+ <span slot="label">
+ <i class="el-icon-s-promotion" style="margin-right: 5px;"></i>
+ 鑴戞浜″垽瀹�
+ </span>
+ </el-tab-pane>
+ <el-tab-pane label="蹇冩浜″垽瀹�" name="heart">
+ <span slot="label">
+ <i class="el-icon-help" style="margin-right: 5px;"></i>
+ 蹇冩浜″垽瀹�
+ </span>
+ </el-tab-pane>
+ </el-tabs>
+ </el-card>
+<el-card class="detail-card common-info-card">
<div slot="header" class="clearfix">
- <span class="detail-title">姝讳骸鍒ゅ畾鍩烘湰淇℃伅</span>
- <el-button
- v-if="isEdit"
- type="success"
- style="float: right"
- @click="handleSave"
- :loading="saveLoading"
- >
- 淇濆瓨淇℃伅
- </el-button>
- <el-button
- v-else
- type="primary"
- style="float: right"
- @click="handleEdit"
- >
- 缂栬緫淇℃伅
- </el-button>
+ <span class="detail-title">鍏叡淇℃伅</span>
</div>
- <el-form :model="form" ref="form" :rules="rules" label-width="120px">
- <el-row :gutter="20">
- <el-col :span="8">
- <el-form-item label="姝讳骸鍘熷洜" prop="deathreason">
- <el-input v-model="form.deathreason" :readonly="!isEdit" />
- <!-- <el-select
- v-model="form.deathreason"
- :disabled="!isEdit"
- style="width: 100%"
- >
- <el-option label="鑴戞浜�" value="brain_death" />
- <el-option label="蹇冩浜�" value="heart_death" />
- <el-option label="鍏朵粬" value="other" />
- </el-select> -->
- </el-form-item>
- </el-col>
+ <el-form :model="form" label-width="120px">
+ <el-row>
<el-col :span="8">
<el-form-item label="璐熻矗浜�" prop="responsibleusername">
<el-input
@@ -48,39 +39,7 @@
/>
</el-form-item>
</el-col>
- <!-- <el-col :span="8">
- <el-form-item label="璁板綍鐘舵��" prop="recordstate">
- <el-tag :type="getStatusTag(form.recordstate)">
- {{ getStatusText(form.recordstate) }}
- </el-tag>
- </el-form-item>
- </el-col> -->
</el-row>
-
- <el-row :gutter="20">
- <el-col :span="8">
- <el-form-item label="姝讳骸鏃堕棿" prop="deathtime">
- <el-date-picker
- v-model="form.deathtime"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- style="width: 100%"
- :disabled="!isEdit"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="deathjudgedocto">
- <el-input v-model="form.deathjudgedocto" :readonly="!isEdit" />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="鍒ゅ畾鍖荤敓浜�" prop="deathjudgedoctt">
- <el-input v-model="form.deathjudgedoctt" :readonly="!isEdit" />
- </el-form-item>
- </el-col>
- </el-row>
-
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="鍣ㄥ畼鑾峰彇鏈烘瀯" prop="gainhospitalname">
@@ -112,148 +71,370 @@
</el-form-item>
</el-col>
</el-row>
-
- <el-form-item label="姝讳骸鍒ゅ畾璇存槑" prop="remark">
- <el-input
- type="textarea"
- :rows="3"
- v-model="form.remark"
- :readonly="!isEdit"
- placeholder="璇︾粏璁板綍姝讳骸鍒ゅ畾杩囩▼鍜屼緷鎹�"
- />
- </el-form-item>
</el-form>
</el-card>
-
- <!-- 璇勪及琛ㄩ檮浠� -->
- <el-card class="attachment-card">
+ <!-- 鑴戞浜″垽瀹氭ā鍧� -->
+ <el-card v-if="activeJudgmentType === 'brain'" class="detail-card">
<div slot="header" class="clearfix">
- <span class="detail-title">姝讳骸鍒ゅ畾璇勪及琛ㄩ檮浠�</span>
- <!-- <el-button
+ <span class="detail-title">鑴戞浜″垽瀹氫俊鎭�</span>
+ <el-button
v-if="isEdit"
- type="primary"
- size="mini"
- @click="openUploadDialog"
- :loading="uploadLoading"
+ style="float: right; margin-left: 10px;"
+ type="success"
+ @click="handleSave"
+ :loading="saveLoading"
>
- 涓婁紶闄勪欢
- </el-button> -->
+ 淇濆瓨淇℃伅
+ </el-button>
+ <el-button
+ v-else
+ style="float: right; margin-left: 10px;"
+ type="primary"
+ @click="handleEdit"
+ >
+ 缂栬緫淇℃伅
+ </el-button>
</div>
- <!-- 闄勪欢绫诲瀷閫夐」鍗� -->
- <el-tabs v-model="activeAttachmentType" type="card">
- <el-tab-pane
- v-for="type in attachmentTypes"
- :key="type.value"
- :label="type.label"
- :name="type.value"
- >
- <div class="attachment-upload-section">
- <div class="upload-header">
- <span class="upload-title">{{ type.label }}</span>
- <el-tooltip content="鐐瑰嚮涓婁紶璇ョ被鍨嬭瘎浼拌〃" placement="top">
- <el-button
- size="mini"
- type="primary"
- icon="el-icon-plus"
- @click="openUploadDialog(type.value)"
- :disabled="!isEdit"
- >
- 娣诲姞璇勪及琛�
- </el-button>
- </el-tooltip>
+ <el-form :model="form" ref="brainForm" :rules="rules" label-width="120px">
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <el-form-item label="姝讳骸鍘熷洜" prop="deathreason">
+ <el-input v-model="form.deathreason" :readonly="!isEdit" />
+ </el-form-item>
+ </el-col>
+
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <el-form-item label="姝讳骸鏃堕棿" prop="deathtime">
+ <el-date-picker
+ v-model="form.deathtime"
+ type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ style="width: 100%"
+ :disabled="!isEdit"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="deathjudgedocto">
+ <el-input v-model="form.deathjudgedocto" :readonly="!isEdit" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鍒ゅ畾鍖荤敓浜�" prop="deathjudgedoctt">
+ <el-input v-model="form.deathjudgedoctt" :readonly="!isEdit" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+
+ <!-- 鑴戞浜¤瘎浼拌〃闄勪欢 -->
+ <div class="attachment-section">
+ <div class="attachment-header">
+ <h3>鑴戞浜″垽瀹氳瘎浼拌〃闄勪欢</h3>
+ </div>
+
+ <!-- 闄勪欢绫诲瀷閫夐」鍗� -->
+ <el-tabs v-model="activeAttachmentType" type="card">
+ <el-tab-pane
+ v-for="type in brainDeathAttachmentTypes"
+ :key="type.value"
+ :label="type.label"
+ :name="type.value"
+ >
+ <div class="attachment-upload-section">
+ <div class="upload-header">
+ <span class="upload-title">{{ type.label }}</span>
+ <el-tooltip content="鐐瑰嚮涓婁紶璇ョ被鍨嬭瘎浼拌〃" placement="top">
+ <el-button
+ size="mini"
+ type="primary"
+ icon="el-icon-plus"
+ @click="openUploadDialog(type.value)"
+ :disabled="!isEdit"
+ >
+ 娣诲姞璇勪及琛�
+ </el-button>
+ </el-tooltip>
+ </div>
+
+ <!-- 闄勪欢鍒楄〃 -->
+ <el-table
+ :data="getAttachmentsByType(type.value)"
+ v-loading="attachmentLoading"
+ style="width: 100%; margin-top: 15px;"
+ >
+ <el-table-column label="鏂囦欢鍚嶇О" min-width="200">
+ <template slot-scope="scope">
+ <div class="file-info">
+ <i
+ class="el-icon-document"
+ style="margin-right: 8px; color: #409EFF;"
+ ></i>
+ <span>{{ scope.row.fileName }}</span>
+ </div>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鏂囦欢绫诲瀷" width="100" align="center">
+ <template slot-scope="scope">
+ <el-tag size="small">{{
+ getFileType(scope.row.fileName)
+ }}</el-tag>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鏂囦欢澶у皬" width="100" align="center">
+ <template slot-scope="scope">
+ <span>{{ formatFileSize(scope.row.fileSize) }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="涓婁紶鏃堕棿" width="160" align="center">
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.uploadTime) }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="涓婁紶浜�" width="100" align="center">
+ <template slot-scope="scope">
+ <span>{{ scope.row.uploader }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鎿嶄綔" width="180" align="center">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handlePreview(scope.row)"
+ >棰勮</el-button
+ >
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-download"
+ @click="handleDownload(scope.row)"
+ >涓嬭浇</el-button
+ >
+ <el-button
+ v-if="isEdit"
+ size="mini"
+ type="text"
+ icon="el-icon-delete"
+ style="color: #F56C6C;"
+ @click="handleRemoveAttachment(scope.row)"
+ >鍒犻櫎</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <div
+ v-if="getAttachmentsByType(type.value).length === 0"
+ class="empty-attachment"
+ >
+ <el-empty
+ description="鏆傛棤璇勪及琛ㄩ檮浠�"
+ :image-size="80"
+ ></el-empty>
+ </div>
</div>
-
- <!-- 闄勪欢鍒楄〃 -->
- <el-table
- :data="getAttachmentsByType(type.value)"
- v-loading="attachmentLoading"
- style="width: 100%; margin-top: 15px;"
- >
- <el-table-column label="鏂囦欢鍚嶇О" min-width="200">
- <template slot-scope="scope">
- <div class="file-info">
- <i
- class="el-icon-document"
- style="margin-right: 8px; color: #409EFF;"
- ></i>
- <span>{{ scope.row.fileName }}</span>
- </div>
- </template>
- </el-table-column>
-
- <el-table-column label="鏂囦欢绫诲瀷" width="100" align="center">
- <template slot-scope="scope">
- <el-tag size="small">{{
- getFileType(scope.row.fileName)
- }}</el-tag>
- </template>
- </el-table-column>
-
- <el-table-column label="鏂囦欢澶у皬" width="100" align="center">
- <template slot-scope="scope">
- <span>{{ formatFileSize(scope.row.fileSize) }}</span>
- </template>
- </el-table-column>
-
- <el-table-column label="涓婁紶鏃堕棿" width="160" align="center">
- <template slot-scope="scope">
- <span>{{ parseTime(scope.row.uploadTime) }}</span>
- </template>
- </el-table-column>
-
- <el-table-column label="涓婁紶浜�" width="100" align="center">
- <template slot-scope="scope">
- <span>{{ scope.row.uploader }}</span>
- </template>
- </el-table-column>
-
- <el-table-column label="鎿嶄綔" width="180" align="center">
- <template slot-scope="scope">
- <el-button
- size="mini"
- type="text"
- icon="el-icon-view"
- @click="handlePreview(scope.row)"
- >棰勮</el-button
- >
- <el-button
- size="mini"
- type="text"
- icon="el-icon-download"
- @click="handleDownload(scope.row)"
- >涓嬭浇</el-button
- >
- <el-button
- v-if="isEdit"
- size="mini"
- type="text"
- icon="el-icon-delete"
- style="color: #F56C6C;"
- @click="handleRemoveAttachment(scope.row)"
- >鍒犻櫎</el-button
- >
- </template>
- </el-table-column>
- </el-table>
-
- <div
- v-if="getAttachmentsByType(type.value).length === 0"
- class="empty-attachment"
- >
- <el-empty
- description="鏆傛棤璇勪及琛ㄩ檮浠�"
- :image-size="80"
- ></el-empty>
- </div>
- </div>
- </el-tab-pane>
- </el-tabs>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
</el-card>
- <!-- 涓婁紶瀵硅瘽妗� -->
+ <!-- 蹇冩浜″垽瀹氭ā鍧� -->
+ <el-card v-else class="detail-card">
+ <div slot="header" class="clearfix">
+ <span class="detail-title">蹇冩浜″垽瀹氫俊鎭�</span>
+ <el-button
+ v-if="isEdit"
+ style="float: right; margin-left: 10px;"
+ type="success"
+ @click="handleSave"
+ :loading="saveLoading"
+ >
+ 淇濆瓨淇℃伅
+ </el-button>
+ <el-button
+ v-else
+ style="float: right; margin-left: 10px;"
+ type="primary"
+ @click="handleEdit"
+ >
+ 缂栬緫淇℃伅
+ </el-button>
+ </div>
+
+ <el-form :model="form" ref="heartForm" :rules="rules" label-width="120px">
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <el-form-item label="蹇冩浜″師鍥�" prop="heartdeathreason">
+ <el-input v-model="form.heartdeathreason" :readonly="!isEdit" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <el-form-item label="蹇冩浜℃椂闂�" prop="heartdeathtime">
+ <el-date-picker
+ v-model="form.heartdeathtime"
+ type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ style="width: 100%"
+ :disabled="!isEdit"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="heartdeathjudgedocto">
+ <el-input
+ v-model="form.heartdeathjudgedocto"
+ :readonly="!isEdit"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鍒ゅ畾鍖荤敓浜�" prop="heartdeathjudgedoctt">
+ <el-input
+ v-model="form.heartdeathjudgedoctt"
+ :readonly="!isEdit"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+
+ <!-- 蹇冩浜¤瘎浼拌〃闄勪欢 -->
+ <div class="attachment-section">
+ <div class="attachment-header">
+ <h3>蹇冩浜″垽瀹氳瘎浼拌〃闄勪欢</h3>
+ </div>
+
+ <!-- 蹇冩浜¢檮浠剁被鍨嬮�夐」鍗� -->
+ <el-tabs v-model="activeHeartDeathAttachmentType" type="card">
+ <el-tab-pane
+ v-for="type in heartDeathAttachmentTypes"
+ :key="type.value"
+ :label="type.label"
+ :name="type.value"
+ >
+ <div class="attachment-upload-section">
+ <div class="upload-header">
+ <span class="upload-title">{{ type.label }}</span>
+ <el-tooltip content="鐐瑰嚮涓婁紶璇ョ被鍨嬭瘎浼拌〃" placement="top">
+ <el-button
+ size="mini"
+ type="primary"
+ icon="el-icon-plus"
+ @click="openHeartDeathUploadDialog(type.value)"
+ :disabled="!isEdit"
+ >
+ 娣诲姞璇勪及琛�
+ </el-button>
+ </el-tooltip>
+ </div>
+
+ <!-- 蹇冩浜¢檮浠跺垪琛� -->
+ <el-table
+ :data="getHeartDeathAttachmentsByType(type.value)"
+ v-loading="attachmentLoading"
+ style="width: 100%; margin-top: 15px;"
+ >
+ <el-table-column label="鏂囦欢鍚嶇О" min-width="200">
+ <template slot-scope="scope">
+ <div class="file-info">
+ <i
+ class="el-icon-document"
+ style="margin-right: 8px; color: #409EFF;"
+ ></i>
+ <span>{{ scope.row.fileName }}</span>
+ </div>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鏂囦欢绫诲瀷" width="100" align="center">
+ <template slot-scope="scope">
+ <el-tag size="small">{{
+ getFileType(scope.row.fileName)
+ }}</el-tag>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鏂囦欢澶у皬" width="100" align="center">
+ <template slot-scope="scope">
+ <span>{{ formatFileSize(scope.row.fileSize) }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="涓婁紶鏃堕棿" width="160" align="center">
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.uploadTime) }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="涓婁紶浜�" width="100" align="center">
+ <template slot-scope="scope">
+ <span>{{ scope.row.uploader }}</span>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鎿嶄綔" width="180" align="center">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handlePreview(scope.row)"
+ >棰勮</el-button
+ >
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-download"
+ @click="handleDownload(scope.row)"
+ >涓嬭浇</el-button
+ >
+ <el-button
+ v-if="isEdit"
+ size="mini"
+ type="text"
+ icon="el-icon-delete"
+ style="color: #F56C6C;"
+ @click="handleRemoveHeartDeathAttachment(scope.row)"
+ >鍒犻櫎</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <div
+ v-if="getHeartDeathAttachmentsByType(type.value).length === 0"
+ class="empty-attachment"
+ >
+ <el-empty
+ description="鏆傛棤璇勪及琛ㄩ檮浠�"
+ :image-size="80"
+ ></el-empty>
+ </div>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ </el-card>
+
+
+
+ <!-- 涓婁紶瀵硅瘽妗嗭紙鑴戞浜★級 -->
<el-dialog
- :title="`涓婁紶${getCurrentTypeLabel}璇勪及琛╜"
+ :title="`涓婁紶${getCurrentBrainDeathTypeLabel}璇勪及琛╜"
:visible.sync="uploadDialogVisible"
width="500px"
:close-on-click-modal="false"
@@ -293,6 +474,51 @@
</el-button>
</div>
</el-dialog>
+
+ <!-- 涓婁紶瀵硅瘽妗嗭紙蹇冩浜★級 -->
+ <el-dialog
+ :title="`涓婁紶${getCurrentHeartDeathTypeLabel}璇勪及琛╜"
+ :visible.sync="heartDeathUploadDialogVisible"
+ width="500px"
+ :close-on-click-modal="false"
+ >
+ <el-upload
+ ref="heartDeathUploadRef"
+ class="upload-demo"
+ drag
+ :action="uploadAction"
+ :headers="headers"
+ multiple
+ :file-list="tempHeartDeathFileList"
+ :before-upload="beforeUpload"
+ :on-change="handleHeartDeathFileChange"
+ :on-remove="handleHeartDeathTempRemove"
+ :on-success="handleHeartDeathUploadSuccess"
+ :auto-upload="false"
+ >
+ <i class="el-icon-upload"></i>
+ <div class="el-upload__text">
+ 灏嗚瘎浼拌〃鏂囦欢鎷栧埌姝ゅ锛屾垨<em>鐐瑰嚮涓婁紶</em>
+ </div>
+ <div class="el-upload__tip" slot="tip">
+ 鏀寔涓婁紶pdf銆乯pg銆乸ng銆乨oc銆乨ocx銆亁ls銆亁lsx鏍煎紡鏂囦欢锛屽崟涓枃浠朵笉瓒呰繃10MB
+ </div>
+ </el-upload>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="heartDeathUploadDialogVisible = false"
+ >鍙栨秷</el-button
+ >
+ <el-button
+ type="primary"
+ @click="submitHeartDeathUpload"
+ :loading="heartDeathUploadLoading"
+ :disabled="tempHeartDeathFileList.length === 0"
+ >
+ 纭涓婁紶
+ </el-button>
+ </div>
+ </el-dialog>
</div>
</template>
@@ -312,11 +538,12 @@
data() {
return {
caseId: null,
- // 鏄惁缂栬緫妯″紡
isEdit: false,
- // 淇濆瓨鍔犺浇鐘舵��
saveLoading: false,
infoid: undefined,
+
+ // 鍒ゅ畾绫诲瀷鏍囩
+ activeJudgmentType: "brain", // 榛樿鏄剧ず鑴戞浜�
// 琛ㄥ崟鏁版嵁
form: {
@@ -327,19 +554,28 @@
sex: "",
age: "",
diagnosisname: "",
+ // 鑴戞浜$浉鍏冲瓧娈�
deathreason: "",
deathtime: "",
deathjudgedocto: "",
deathjudgedoctt: "",
+ // 蹇冩浜$浉鍏冲瓧娈�
+ heartdeathtime: "",
+ heartdeathreason: "",
+ heartdeathjudgedocto: "",
+ heartdeathjudgedoctt: "",
+ heartDeathRemark: "",
+ // 鍏叡瀛楁
gainhospitalno: "",
gainhospitalname: "",
isspendremember: 0,
isrestoreremains: 0,
rememberAnnex: "",
+ heartdeathjudgeannex: "", // 鏂板蹇冩浜¢檮浠跺瓧娈�
responsibleuserid: "",
responsibleusername: "",
recordstate: "0",
- judgmentDescription: ""
+ remark: ""
},
// 琛ㄥ崟楠岃瘉瑙勫垯
rules: {
@@ -354,38 +590,67 @@
],
deathjudgedocto: [
{ required: true, message: "鍒ゅ畾鍖荤敓涓�涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ heartdeathreason: [
+ { required: false, message: "蹇冩浜″師鍥犱笉鑳戒负绌�", trigger: "blur" }
+ ],
+ heartdeathtime: [
+ { required: false, message: "蹇冩浜℃椂闂翠笉鑳戒负绌�", trigger: "change" }
+ ],
+ heartdeathjudgedocto: [
+ {
+ required: false,
+ message: "蹇冩浜″垽瀹氬尰鐢熶竴涓嶈兘涓虹┖",
+ trigger: "blur"
+ }
]
},
// 闄勪欢鐩稿叧鏁版嵁
activeAttachmentType: "1",
+ activeHeartDeathAttachmentType: "heart_1", // 蹇冩浜¢檮浠剁被鍨�
attachmentLoading: false,
uploadDialogVisible: false,
+ heartDeathUploadDialogVisible: false, // 蹇冩浜′笂浼犲璇濇
uploadLoading: false,
+ heartDeathUploadLoading: false, // 蹇冩浜′笂浼犲姞杞界姸鎬�
tempFileList: [],
+ tempHeartDeathFileList: [], // 蹇冩浜′复鏃舵枃浠跺垪琛�
currentUploadType: "",
+ currentHeartDeathUploadType: "", // 褰撳墠蹇冩浜′笂浼犵被鍨�
uploadAction: process.env.VUE_APP_BASE_API + "/common/upload",
headers: {
Authorization: "Bearer " + getToken()
},
- // 璇勪及琛ㄧ被鍨嬪畾涔�
- attachmentTypes: [
+ // 鑴戞浜¤瘎浼拌〃绫诲瀷瀹氫箟
+ brainDeathAttachmentTypes: [
{ value: "1", label: "鑴戞浜″垽瀹氳〃" },
{ value: "2", label: "鑴戠數鍥捐瘎浼拌〃" },
{ value: "3", label: "鐭綔浼忔湡浣撴劅璇卞彂鐢典綅璇勪及琛�" },
{ value: "4", label: "缁忛澶氭櫘鍕掕秴澹拌瘎浼拌褰�" },
{ value: "5", label: "鍗仴濮旇剳鎹熶激璐ㄦ帶涓績 - 涓村簥缁煎悎璇勪及琛�" },
- { value: "6", label: "UW璇勫垎琛�" },
- { value: "7", label: "蹇冩浜″垽瀹氳〃" }
+ { value: "6", label: "UW璇勫垎琛�" }
+ ],
+ // 蹇冩浜¤瘎浼拌〃绫诲瀷瀹氫箟
+ heartDeathAttachmentTypes: [
+ { value: "heart_1", label: "蹇冩浜″垽瀹氳〃" },
+ { value: "heart_2", label: "蹇冪數鍥捐瘎浼拌〃" }
],
// 闄勪欢鍒楄〃鏁版嵁
- attachmentList: []
+ attachmentList: [], // 鑴戞浜¢檮浠�
+ heartDeathAttachmentList: [] // 蹇冩浜¢檮浠�
};
},
computed: {
- getCurrentTypeLabel() {
- const type = this.attachmentTypes.find(
+ getCurrentBrainDeathTypeLabel() {
+ const type = this.brainDeathAttachmentTypes.find(
t => t.value === this.currentUploadType
+ );
+ return type ? type.label : "";
+ },
+ getCurrentHeartDeathTypeLabel() {
+ const type = this.heartDeathAttachmentTypes.find(
+ t => t.value === this.currentHeartDeathUploadType
);
return type ? type.label : "";
}
@@ -393,23 +658,29 @@
created() {
this.infoid = this.$route.query.infoid;
this.caseId = this.infoid;
- const id = this.$route.query.id;
- this.isEdit = this.$route.query.isEdit;
- this.getDetail(this.infoid);
+ this.isEdit = this.$route.query.isEdit === "true";
- // if (id && !this.$route.path.includes("/add")) {
- // this.getDetail(id);
- // } else if (this.$route.path.includes("/add")) {
- // this.generateDonorNo();
- // }
+ // 浠庤矾鐢卞弬鏁拌幏鍙栭粯璁ゆ樉绀虹被鍨�
+ if (this.$route.query.judgmentType) {
+ this.activeJudgmentType = this.$route.query.judgmentType;
+ }
+
+ this.getDetail(this.infoid);
this.getAttachmentList();
},
methods: {
+ // 鏍囩椤靛垏鎹�
+ handleTabChange(tab) {
+ this.activeJudgmentType = tab.name;
+ // 鍙互鍦ㄨ繖閲屾坊鍔犲叾浠栧垏鎹㈤�昏緫
+ },
+
// 鐢熸垚鎹愮尞鑰呯紪鍙�
generateDonorNo() {
const timestamp = Date.now().toString();
this.form.donorno = "DONOR" + timestamp.slice(-8);
},
+
// 鑾峰彇璇︽儏
async getDetail(infoid) {
try {
@@ -437,30 +708,47 @@
// 瑙f瀽闄勪欢淇℃伅
if (realData.rememberAnnex) {
- this.parseAttachmentData(realData.rememberAnnex);
+ this.parseAttachmentData(realData.rememberAnnex, "brain");
+ }
+
+ // 瑙f瀽蹇冩浜¢檮浠朵俊鎭�
+ if (realData.heartdeathjudgeannex) {
+ this.parseAttachmentData(realData.heartdeathjudgeannex, "heart");
}
} catch (error) {
console.error("鑾峰彇姝讳骸鍒ゅ畾璇︽儏澶辫触:", error);
this.$message.error("鏁版嵁鍔犺浇澶辫触");
}
},
+
// 瑙f瀽闄勪欢鏁版嵁
- parseAttachmentData(attachmentJson) {
+ parseAttachmentData(attachmentJson, type = "brain") {
try {
if (attachmentJson) {
const attachments = JSON.parse(attachmentJson);
if (Array.isArray(attachments)) {
- this.attachmentList = attachments;
+ if (type === "brain") {
+ this.attachmentList = attachments;
+ } else if (type === "heart") {
+ this.heartDeathAttachmentList = attachments;
+ }
}
}
} catch (error) {
console.error("瑙f瀽闄勪欢鏁版嵁澶辫触:", error);
}
},
- // 鏋勫缓闄勪欢JSON鏁版嵁
- buildAttachmentJson() {
+
+ // 鏋勫缓鑴戞浜¢檮浠禞SON鏁版嵁
+ buildBrainDeathAttachmentJson() {
return JSON.stringify(this.attachmentList);
},
+
+ // 鏋勫缓蹇冩浜¢檮浠禞SON鏁版嵁
+ buildHeartDeathAttachmentJson() {
+ return JSON.stringify(this.heartDeathAttachmentList);
+ },
+
// 鑾峰彇鐘舵�佹爣绛炬牱寮�
getStatusTag(status) {
const statusMap = {
@@ -470,6 +758,7 @@
};
return statusMap[status] || "info";
},
+
// 鑾峰彇鐘舵�佹枃鏈�
getStatusText(status) {
const textMap = {
@@ -479,18 +768,25 @@
};
return textMap[status] || "鏈煡鐘舵��";
},
+
// 鑾峰彇闄勪欢鍒楄〃
getAttachmentList() {
this.attachmentLoading = true;
- // 瀹為檯椤圭洰涓粠鎺ュ彛鑾峰彇闄勪欢鏁版嵁
setTimeout(() => {
this.attachmentLoading = false;
}, 500);
},
- // 鏍规嵁绫诲瀷鑾峰彇闄勪欢
+
+ // 鏍规嵁绫诲瀷鑾峰彇鑴戞浜¢檮浠�
getAttachmentsByType(type) {
return this.attachmentList.filter(item => item.type === type);
},
+
+ // 鏍规嵁绫诲瀷鑾峰彇蹇冩浜¢檮浠�
+ getHeartDeathAttachmentsByType(type) {
+ return this.heartDeathAttachmentList.filter(item => item.type === type);
+ },
+
// 鑾峰彇鏂囦欢绫诲瀷
getFileType(fileName) {
const ext = fileName
@@ -509,7 +805,8 @@
};
return typeMap[ext] || ext.toUpperCase();
},
- // 鎵撳紑涓婁紶瀵硅瘽妗�
+
+ // 鎵撳紑鑴戞浜′笂浼犲璇濇
openUploadDialog(type = null) {
this.currentUploadType = type || this.activeAttachmentType;
this.tempFileList = [];
@@ -520,6 +817,20 @@
}
});
},
+
+ // 鎵撳紑蹇冩浜′笂浼犲璇濇
+ openHeartDeathUploadDialog(type = null) {
+ this.currentHeartDeathUploadType =
+ type || this.activeHeartDeathAttachmentType;
+ this.tempHeartDeathFileList = [];
+ this.heartDeathUploadDialogVisible = true;
+ this.$nextTick(() => {
+ if (this.$refs.heartDeathUploadRef) {
+ this.$refs.heartDeathUploadRef.clearFiles();
+ }
+ });
+ },
+
// 涓婁紶鍓嶆牎楠�
beforeUpload(file) {
const allowedTypes = [
@@ -559,24 +870,38 @@
return true;
},
- // 鏂囦欢閫夋嫨鍙樺寲
+
+ // 鑴戞浜℃枃浠堕�夋嫨鍙樺寲
handleFileChange(file, fileList) {
this.tempFileList = fileList;
},
- // 绉婚櫎涓存椂鏂囦欢
+
+ // 蹇冩浜℃枃浠堕�夋嫨鍙樺寲
+ handleHeartDeathFileChange(file, fileList) {
+ this.tempHeartDeathFileList = fileList;
+ },
+
+ // 绉婚櫎鑴戞浜′复鏃舵枃浠�
handleTempRemove(file, fileList) {
this.tempFileList = fileList;
},
- /** 涓婁紶鎴愬姛澶勭悊 */
+
+ // 绉婚櫎蹇冩浜′复鏃舵枃浠�
+ handleHeartDeathTempRemove(file, fileList) {
+ this.tempHeartDeathFileList = fileList;
+ },
+
+ // 鑴戞浜′笂浼犳垚鍔熷鐞�
handleUploadSuccess(response, file, fileList) {
if (response.code === 200) {
file.url = response.data || response.url;
this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+
for (const file of this.tempFileList) {
const newAttachment = {
id: Date.now() + Math.random(),
type: this.currentUploadType,
- typeName: this.getCurrentTypeLabel,
+ typeName: this.getCurrentBrainDeathTypeLabel,
fileName: file.name,
fileSize: file.size,
uploadTime: new Date().toISOString(),
@@ -587,8 +912,8 @@
this.attachmentList.push(newAttachment);
}
- // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
- this.form.rememberAnnex = this.buildAttachmentJson();
+ // 鏇存柊鑴戞浜¢檮浠禞SON鏁版嵁鍒拌〃鍗�
+ this.form.rememberAnnex = this.buildBrainDeathAttachmentJson();
this.$message.success("鏂囦欢涓婁紶鎴愬姛");
this.uploadDialogVisible = false;
@@ -598,45 +923,60 @@
this.$message.error(response.msg || "鏂囦欢涓婁紶澶辫触");
}
},
- // 鎻愪氦涓婁紶
- async submitUpload() {
+
+ // 蹇冩浜′笂浼犳垚鍔熷鐞�
+ handleHeartDeathUploadSuccess(response, file, fileList) {
+ if (response.code === 200) {
+ file.url = response.data || response.url;
+
+ for (const file of this.tempHeartDeathFileList) {
+ const newAttachment = {
+ id: Date.now() + Math.random(),
+ type: this.currentHeartDeathUploadType,
+ typeName: this.getCurrentHeartDeathTypeLabel,
+ fileName: file.name,
+ fileSize: file.size,
+ uploadTime: new Date().toISOString(),
+ uploader: "褰撳墠鐢ㄦ埛",
+ fileUrl: file.url
+ };
+
+ this.heartDeathAttachmentList.push(newAttachment);
+ }
+
+ // 鏇存柊蹇冩浜¢檮浠禞SON鏁版嵁鍒拌〃鍗�
+ this.form.heartdeathjudgeannex = this.buildHeartDeathAttachmentJson();
+
+ this.$message.success("鏂囦欢涓婁紶鎴愬姛");
+ this.heartDeathUploadDialogVisible = false;
+ this.heartDeathUploadLoading = false;
+ this.tempHeartDeathFileList = [];
+ } else {
+ this.$message.error(response.msg || "鏂囦欢涓婁紶澶辫触");
+ }
+ },
+
+ // 鎻愪氦鑴戞浜′笂浼�
+ submitUpload() {
if (this.tempFileList.length === 0) {
this.$message.warning("璇峰厛閫夋嫨瑕佷笂浼犵殑鏂囦欢");
return;
}
this.$refs.uploadRef.submit();
this.uploadLoading = true;
-
- // try {
- // for (const file of this.tempFileList) {
- // const newAttachment = {
- // id: Date.now() + Math.random(),
- // type: this.currentUploadType,
- // typeName: this.getCurrentTypeLabel,
- // fileName: file.name,
- // fileSize: file.size,
- // uploadTime: new Date().toISOString(),
- // uploader: "褰撳墠鐢ㄦ埛",
- // fileUrl: URL.createObjectURL(file.raw)
- // };
-
- // this.attachmentList.push(newAttachment);
- // }
-
- // // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
- // this.form.rememberAnnex = this.buildAttachmentJson();
-
- // this.$message.success("鏂囦欢涓婁紶鎴愬姛");
- // this.uploadDialogVisible = false;
- // this.tempFileList = [];
- // } catch (error) {
- // this.$message.error("鏂囦欢涓婁紶澶辫触");
- // console.error("涓婁紶澶辫触:", error);
- // } finally {
- // this.uploadLoading = false;
- // }
},
- // 鍒犻櫎闄勪欢
+
+ // 鎻愪氦蹇冩浜′笂浼�
+ submitHeartDeathUpload() {
+ if (this.tempHeartDeathFileList.length === 0) {
+ this.$message.warning("璇峰厛閫夋嫨瑕佷笂浼犵殑鏂囦欢");
+ return;
+ }
+ this.$refs.heartDeathUploadRef.submit();
+ this.heartDeathUploadLoading = true;
+ },
+
+ // 鍒犻櫎鑴戞浜¢檮浠�
handleRemoveAttachment(attachment) {
this.$confirm("纭畾瑕佸垹闄よ繖涓瘎浼拌〃闄勪欢鍚楋紵", "鎻愮ず", {
confirmButtonText: "纭畾",
@@ -649,13 +989,33 @@
);
if (index !== -1) {
this.attachmentList.splice(index, 1);
- // 鏇存柊闄勪欢JSON鏁版嵁鍒拌〃鍗�
- this.form.rememberAnnex = this.buildAttachmentJson();
+ this.form.rememberAnnex = this.buildBrainDeathAttachmentJson();
this.$message.success("璇勪及琛ㄥ垹闄ゆ垚鍔�");
}
})
.catch(() => {});
},
+
+ // 鍒犻櫎蹇冩浜¢檮浠�
+ handleRemoveHeartDeathAttachment(attachment) {
+ this.$confirm("纭畾瑕佸垹闄よ繖涓瘎浼拌〃闄勪欢鍚楋紵", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ const index = this.heartDeathAttachmentList.findIndex(
+ item => item.id === attachment.id
+ );
+ if (index !== -1) {
+ this.heartDeathAttachmentList.splice(index, 1);
+ this.form.heartdeathjudgeannex = this.buildHeartDeathAttachmentJson();
+ this.$message.success("璇勪及琛ㄥ垹闄ゆ垚鍔�");
+ }
+ })
+ .catch(() => {});
+ },
+
// 棰勮闄勪欢
handlePreview(attachment) {
if (attachment.fileName.endsWith(".pdf")) {
@@ -673,6 +1033,7 @@
this.$message.info("璇ユ枃浠剁被鍨嬫殏涓嶆敮鎸佸湪绾块瑙堬紝璇蜂笅杞藉悗鏌ョ湅");
}
},
+
// 涓嬭浇闄勪欢
handleDownload(attachment) {
const link = document.createElement("a");
@@ -681,13 +1042,19 @@
link.click();
this.$message.success(`寮�濮嬩笅杞�: ${attachment.fileName}`);
},
+
// 缂栬緫淇℃伅
handleEdit() {
this.isEdit = true;
},
+
// 淇濆瓨淇℃伅
async handleSave() {
- this.$refs.form.validate(async valid => {
+ // 鏍规嵁褰撳墠鏍囩閫夋嫨楠岃瘉瑙勫垯
+ let formRef =
+ this.activeJudgmentType === "brain" ? "brainForm" : "heartForm";
+
+ this.$refs[formRef].validate(async valid => {
if (valid) {
this.saveLoading = true;
@@ -697,7 +1064,8 @@
...this.form,
infoid: this.infoid,
// 纭繚闄勪欢鏁版嵁鏈�鏂�
- rememberannex: this.buildAttachmentJson()
+ rememberAnnex: this.buildBrainDeathAttachmentJson(),
+ heartdeathjudgeannex: this.buildHeartDeathAttachmentJson()
};
let response = null;
@@ -706,7 +1074,6 @@
} else {
response = await deathinfoadd(submitData);
}
- // const response = await deathinfoedit(submitData);
if (response.code === 200) {
this.$message.success("淇濆瓨鎴愬姛");
@@ -729,6 +1096,7 @@
}
});
},
+
// 鏂囦欢澶у皬鏍煎紡鍖�
formatFileSize(size) {
if (size === 0) return "0 B";
@@ -737,6 +1105,7 @@
const i = Math.floor(Math.log(size) / Math.log(k));
return parseFloat((size / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
},
+
// 鏃堕棿鏍煎紡鍖�
parseTime(time) {
if (!time) return "";
@@ -763,17 +1132,60 @@
padding: 20px;
}
-.detail-card {
+.type-card {
margin-bottom: 20px;
+ border: none;
+ box-shadow: none;
}
-.attachment-card {
+.type-card >>> .el-tabs__item {
+ font-size: 16px;
+ font-weight: bold;
+ padding: 0 20px;
+ height: 50px;
+ line-height: 50px;
+}
+
+.type-card >>> .el-tabs__item.is-active {
+ color: #409eff;
+ border-bottom: 3px solid #409eff;
+}
+
+.detail-card {
margin-bottom: 20px;
+ border: 1px solid #e6ebf5;
+ border-radius: 8px;
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+}
+
+.common-info-card {
+ border-top: 2px solid #67c23a;
+}
+
+.detail-card >>> .el-card__header {
+ background-color: #f5f7fa;
+ border-bottom: 1px solid #e6ebf5;
+ padding: 15px 20px;
}
.detail-title {
- font-size: 16px;
+ font-size: 18px;
font-weight: bold;
+ color: #303133;
+}
+
+.attachment-section {
+ margin-top: 20px;
+ padding-top: 20px;
+ border-top: 1px solid #e6ebf5;
+}
+
+.attachment-header h3 {
+ font-size: 16px;
+ color: #303133;
+ margin-bottom: 15px;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #eee;
}
.attachment-upload-section {
@@ -785,6 +1197,7 @@
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
+ padding: 10px 0;
}
.upload-title {
@@ -802,6 +1215,9 @@
text-align: center;
padding: 40px 0;
color: #909399;
+ border: 1px dashed #dcdfe6;
+ border-radius: 4px;
+ margin-top: 20px;
}
/* 鍥剧墖棰勮瀵硅瘽妗嗘牱寮� */
diff --git a/src/views/business/transfer/index.vue b/src/views/business/transfer/index.vue
index fa88fe4..bbf0b4d 100644
--- a/src/views/business/transfer/index.vue
+++ b/src/views/business/transfer/index.vue
@@ -149,12 +149,7 @@
<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="caseNo"
- 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">
@@ -430,7 +425,9 @@
append-to-body
>
<div class="action-confirm">
- <p>纭畾瑕亄{ actionText }}杞繍鍗� "{{ currentTransport.patName }}" 鍚楋紵</p>
+ <p>
+ 纭畾瑕亄{ actionText }}杞繍鍗� "{{ currentTransport.patName }}" 鍚楋紵
+ </p>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="actionOpen = false">鍙� 娑�</el-button>
@@ -447,7 +444,9 @@
transportEdit,
transportDel,
transportInfo,
- donateList
+ donateInfo,
+ donateList,
+ donateEdit
} from "@/api/businessApi/index";
import TransportDetail from "./transportDetail";
import TransportEdit from "./TransportEdit";
@@ -811,8 +810,17 @@
const response = await transportEdit(requestData);
- if (response.code === 200) {
+ if (response.code == 200) {
this.$modal.msgSuccess(`${this.actionText}杞繍鎴愬姛`);
+ if (requestData.transitStatus==3) {
+ const resappear = await donateInfo(requestData.reportId);
+ if (resappear.code) {
+ let obj = resappear.data;
+ obj.isDonate = 1;
+ await donateEdit(obj);
+ this.$modal.msgSuccess(`瀵瑰簲涓婃姤妗堜緥宸茶繘鍏ユ寮忔渚嬫祦绋媊);
+ }
+ }
this.getList();
} else {
this.$modal.msgError(response.msg || `${this.actionText}杞繍澶辫触`);
--
Gitblit v1.9.3