From 4c9fdc87987140e8b2c3f0dfc2f6608cdb6be774 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 21 十月 2026 17:39:24 +0800
Subject: [PATCH] 青岛维护
---
src/views/business/decide/DecideInfo.vue | 411 ++++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 266 insertions(+), 145 deletions(-)
diff --git a/src/views/business/decide/DecideInfo.vue b/src/views/business/decide/DecideInfo.vue
index 9522c29..ed708d2 100644
--- a/src/views/business/decide/DecideInfo.vue
+++ b/src/views/business/decide/DecideInfo.vue
@@ -1,6 +1,6 @@
<template>
<div class="death-judgment-detail">
- <case-basic-info :case-id="caseId" :show-attachment="true" />
+ <case-basic-info :case-id="caseId" :show-attachment="true":column="3" />
<!-- 鍏叡淇℃伅妯″潡锛堢嫭绔嬫樉绀猴級 -->
<!-- 鍒ゅ畾绫诲瀷鏍囩椤� -->
@@ -35,7 +35,7 @@
<el-form-item label="璐熻矗浜�" prop="responsibleusername">
<el-input
v-model="form.responsibleusername"
- :readonly="!isEdit"
+ :disabled="isReadOnly || !isEdit"
/>
</el-form-item>
</el-col>
@@ -43,7 +43,7 @@
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="鍣ㄥ畼鑾峰彇鏈烘瀯" prop="gainhospitalname">
- <el-input v-model="form.gainhospitalname" :readonly="!isEdit" />
+ <el-input v-model="form.gainhospitalname" :disabled="isReadOnly || !isEdit" />
</el-form-item>
</el-col>
@@ -51,12 +51,12 @@
</el-form>
</el-card> -->
<!-- 鑴戞浜″垽瀹氭ā鍧� -->
- <el-card v-if="activeJudgmentType === 'brain'" class="detail-card">
+ <el-card v-if="activeJudgmentType === 'brain'" class="detail-card paper-card">
<div slot="header" class="clearfix">
<span class="detail-title">鑴戞浜″垽瀹氫俊鎭�</span>
<el-button
- v-if="!isEdit"
+ v-if="!isReadOnly && !isEdit"
style="float: right; margin-left: 10px;"
type="primary"
@click="handleEdit"
@@ -65,73 +65,63 @@
</el-button>
</div>
- <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-form :model="form" ref="brainForm" :rules="rules" label-width="120px" class="paper-form">
+ <div class="form-row">
+ <el-form-item label="姝讳骸鍘熷洜" prop="deathreason" class="col-1-3">
+ <el-input v-model="form.deathreason" :disabled="isReadOnly || !isEdit" />
+ </el-form-item>
+ <el-form-item label="姝讳骸鏃堕棿" prop="deathtime" class="col-1-3">
+ <el-date-picker
+ v-model="form.deathtime"
+ type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ style="width: 100%"
+ :disabled="isReadOnly || !isEdit"
+ />
+ </el-form-item>
+ </div>
- <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"
+ <div class="form-row">
+ <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="deathjudgedocto" class="col-1-3">
+ <el-input v-model="form.deathjudgedocto" :disabled="isReadOnly || !isEdit" />
+ </el-form-item>
+ <el-form-item label="鍒ゅ畾鍖荤敓浜�" prop="deathjudgedoctt" class="col-1-3">
+ <el-input v-model="form.deathjudgedoctt" :disabled="isReadOnly || !isEdit" />
+ </el-form-item>
+ </div>
+ <div class="form-row">
+ <el-form-item label="鍏朵粬鍒ゅ畾鍖荤敓" class="col-full">
+ <div
+ v-for="(doctor, index) in brainExtraDoctors"
+ :key="index"
+ style="display: flex; align-items: center; margin-bottom: 8px; width: 100%;"
+ >
+ <el-input
+ v-model="brainExtraDoctors[index]"
+ placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
+ style="flex: 1; margin-right: 10px;"
+ :disabled="isReadOnly || !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="24">
- <el-form-item label="鍏朵粬鍒ゅ畾鍖荤敓">
- <div
- v-for="(doctor, index) in brainExtraDoctors"
- :key="index"
- style="display: flex; align-items: center; margin-bottom: 8px;"
- >
- <el-input
- v-model="brainExtraDoctors[index]"
- placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
- style="flex: 1; margin-right: 10px;"
- :readonly="!isEdit"
- />
- <el-button
- v-if="isEdit"
- type="danger"
- icon="el-icon-minus"
- circle
- size="mini"
- @click="removeBrainDoctor(index)"
- />
- </div>
<el-button
- v-if="isEdit"
- type="primary"
- icon="el-icon-plus"
- size="small"
- @click="addBrainDoctor"
- >
- 娣诲姞鍖荤敓
- </el-button>
- </el-form-item>
- </el-col>
- </el-row>
+ v-if="!isReadOnly && isEdit"
+ type="danger"
+ icon="el-icon-minus"
+ circle
+ size="mini"
+ @click="removeBrainDoctor(index)"
+ />
+ </div>
+ <el-button
+ v-if="!isReadOnly && isEdit"
+ type="primary"
+ icon="el-icon-plus"
+ size="small"
+ @click="addBrainDoctor"
+ >
+ 娣诲姞鍖荤敓
+ </el-button>
+ </el-form-item>
+ </div>
</el-form>
<!-- 鑴戞浜¤瘎浼拌〃闄勪欢 -->
@@ -153,6 +143,7 @@
<span class="upload-title">{{ type.label }}</span>
<el-tooltip content="鐐瑰嚮涓婁紶璇ョ被鍨嬭瘎浼拌〃" placement="top">
<el-button
+ v-if="!isReadOnly"
size="mini"
type="primary"
icon="el-icon-plus"
@@ -225,7 +216,7 @@
>涓嬭浇</el-button
>
<el-button
- v-if="isEdit"
+ v-if="!isReadOnly && isEdit"
size="mini"
type="text"
icon="el-icon-delete"
@@ -253,11 +244,11 @@
</el-card>
<!-- 蹇冩浜″垽瀹氭ā鍧� -->
- <el-card v-else class="detail-card">
+ <el-card v-else class="detail-card paper-card">
<div slot="header" class="clearfix">
<span class="detail-title">蹇冩浜″垽瀹氫俊鎭�</span>
<el-button
- v-if="isEdit"
+ v-if="!isReadOnly && isEdit"
style="float: right; margin-left: 10px;"
type="success"
@click="handleSave"
@@ -266,7 +257,7 @@
淇濆瓨淇℃伅
</el-button>
<el-button
- v-else
+ v-else-if="!isReadOnly"
style="float: right; margin-left: 10px;"
type="primary"
@click="handleEdit"
@@ -275,79 +266,69 @@
</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-form :model="form" ref="heartForm" :rules="rules" label-width="120px" class="paper-form">
+ <div class="form-row">
+ <el-form-item label="蹇冩浜″師鍥�" prop="heartdeathreason" class="col-1-3">
+ <el-input v-model="form.heartdeathreason" :disabled="isReadOnly || !isEdit" />
+ </el-form-item>
+ <el-form-item label="蹇冩浜″垽瀹氬畬鎴愭椂闂�" prop="heartdeathtime" class="col-1-3">
+ <el-date-picker
+ v-model="form.heartdeathtime"
+ type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ style="width: 100%"
+ :disabled="isReadOnly || !isEdit"
+ />
+ </el-form-item>
+ </div>
- <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">
+ <div class="form-row">
+ <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="heartdeathjudgedocto" class="col-1-3">
+ <el-input
+ v-model="form.heartdeathjudgedocto"
+ :disabled="isReadOnly || !isEdit"
+ />
+ </el-form-item>
+ <el-form-item label="鍒ゅ畾鍖荤敓浜�" prop="heartdeathjudgedoctt" class="col-1-3">
+ <el-input
+ v-model="form.heartdeathjudgedoctt"
+ :disabled="isReadOnly || !isEdit"
+ />
+ </el-form-item>
+ </div>
+ <div class="form-row">
+ <el-form-item label="鍏朵粬鍒ゅ畾鍖荤敓" class="col-full">
+ <div
+ v-for="(doctor, index) in heartExtraDoctors"
+ :key="index"
+ style="display: flex; align-items: center; margin-bottom: 8px; width: 100%;"
+ >
<el-input
- v-model="form.heartdeathjudgedocto"
- :readonly="!isEdit"
+ v-model="heartExtraDoctors[index]"
+ placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
+ style="flex: 1; margin-right: 10px;"
+ :disabled="isReadOnly || !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-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="鍏朵粬鍒ゅ畾鍖荤敓">
- <div
- v-for="(doctor, index) in heartExtraDoctors"
- :key="index"
- style="display: flex; align-items: center; margin-bottom: 8px;"
- >
- <el-input
- v-model="heartExtraDoctors[index]"
- placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
- style="flex: 1; margin-right: 10px;"
- :readonly="!isEdit"
- />
- <el-button
- v-if="isEdit"
- type="danger"
- icon="el-icon-minus"
- circle
- size="mini"
- @click="removeHeartDoctor(index)"
- />
- </div>
<el-button
- v-if="isEdit"
- type="primary"
- icon="el-icon-plus"
- size="small"
- @click="addHeartDoctor"
- >
- 娣诲姞鍖荤敓
- </el-button>
- </el-form-item>
- </el-col>
- </el-row>
+ v-if="!isReadOnly && isEdit"
+ type="danger"
+ icon="el-icon-minus"
+ circle
+ size="mini"
+ @click="removeHeartDoctor(index)"
+ />
+ </div>
+ <el-button
+ v-if="!isReadOnly && isEdit"
+ type="primary"
+ icon="el-icon-plus"
+ size="small"
+ @click="addHeartDoctor"
+ >
+ 娣诲姞鍖荤敓
+ </el-button>
+ </el-form-item>
+ </div>
</el-form>
<!-- 蹇冩浜¤瘎浼拌〃闄勪欢 -->
@@ -369,6 +350,7 @@
<span class="upload-title">{{ type.label }}</span>
<el-tooltip content="鐐瑰嚮涓婁紶璇ョ被鍨嬭瘎浼拌〃" placement="top">
<el-button
+ v-if="!isReadOnly"
size="mini"
type="primary"
icon="el-icon-plus"
@@ -441,7 +423,7 @@
>涓嬭浇</el-button
>
<el-button
- v-if="isEdit"
+ v-if="!isReadOnly && isEdit"
size="mini"
type="text"
icon="el-icon-delete"
@@ -470,7 +452,7 @@
<!-- 搴曢儴鎿嶄綔鎸夐挳 -->
<div style="text-align: center; margin: 30px 0;">
<el-button
- v-if="isEdit"
+ v-if="!isReadOnly && isEdit"
type="primary"
@click="handleSave"
:loading="saveLoading"
@@ -478,7 +460,7 @@
淇濆瓨淇℃伅
</el-button>
<el-button
- v-if="isEdit"
+ v-if="!isReadOnly && isEdit"
type="success"
@click="accomplish"
:loading="saveLoading"
@@ -589,6 +571,7 @@
deathinfoadd,
queryDathInfoBaseInfo
} from "@/api/businessApi";
+import { getDonatebaseinfo } from "@/api/project/donatebaseinfo";
import { getToken } from "@/utils/auth";
import CaseBasicInfo from "@/components/CaseBasicInfo";
import FilePreviewDialog from "@/components/FilePreviewDialog";
@@ -713,6 +696,10 @@
};
},
computed: {
+ // 鏌ョ湅妯″紡锛氬彧璇伙紝绂佺敤琛ㄥ崟骞堕殣钘忎繚瀛樻寜閽�
+ isReadOnly() {
+ return this.$route.query.mode === "view";
+ },
getCurrentBrainDeathTypeLabel() {
const type = this.brainDeathAttachmentTypes.find(
t => t.value === this.currentUploadType
@@ -735,6 +722,9 @@
if (this.$route.query.judgmentType) {
this.activeJudgmentType = this.$route.query.judgmentType;
}
+
+ // 鏌ョ湅妯″紡涓嬮粯璁ゅ彧璇�
+ this.isEdit = !this.isReadOnly;
this.getDetail(this.infoid);
this.getAttachmentList();
@@ -1197,6 +1187,7 @@
},
// 淇濆瓨淇℃伅
async handleSave() {
+ if (this.saveLoading) return;
// 鏍规嵁褰撳墠鏍囩閫夋嫨楠岃瘉瑙勫垯
let formRef =
this.activeJudgmentType === "brain" ? "brainForm" : "heartForm";
@@ -1241,6 +1232,12 @@
if (submitData.id) {
response = await deathinfoedit(submitData);
} else {
+ // 鏂板鏃舵牎楠屾槸鍚﹀凡鏈夌浉鍚屾偅鑰�
+ const exists = await this.checkPatientExists();
+ if (exists) {
+ this.$message.warning("璇ユ偅鑰呭凡瀛樺湪锛岃鍕块噸澶嶆坊鍔�");
+ return;
+ }
response = await deathinfoadd(submitData);
}
@@ -1264,6 +1261,31 @@
}
}
});
+ },
+
+ // 鏂板鏃舵牎楠屾槸鍚﹀凡鏈夌浉鍚屾偅鑰咃紙鎸変綇闄㈠彿锛�
+ async checkPatientExists() {
+ let inpatientno = this.form.inpatientno;
+ if (!inpatientno && this.caseId) {
+ try {
+ const caseRes = await getDonatebaseinfo(this.caseId);
+ inpatientno = (caseRes.data && caseRes.data.inpatientno) || "";
+ } catch (e) {
+ inpatientno = "";
+ }
+ }
+ if (!inpatientno) return false;
+ try {
+ const res = await queryDathInfoBaseInfo({
+ inpatientno,
+ pageNum: 1,
+ pageSize: 1
+ });
+ const list = res.rows || res.data || [];
+ return list.some(item => item && item.id != null && item.id !== "");
+ } catch (e) {
+ return false;
+ }
},
// 鏂囦欢澶у皬鏍煎紡鍖�
@@ -1398,4 +1420,103 @@
:deep(.image-preview-dialog .el-message-box__content) {
text-align: center;
}
+
+/* ===== 绾歌川琛ㄦ牸缃戞牸鏍峰紡 ===== */
+.paper-card >>> .el-card__body {
+ padding: 16px;
+}
+
+.paper-form {
+ border-left: 1px solid #d0d3db;
+ background: #fff;
+}
+
+.paper-form >>> .form-row {
+ display: flex;
+ width: 100%;
+ border-top: 1px solid #d0d3db;
+ /* 涓婄Щ1px涓庝笂涓�琛岀殑border-bottom閲嶅彔锛屼袱琛屼箣闂村彧鏄剧ず涓�鏉�1px缁嗙嚎 */
+ margin-top: -1px;
+}
+.paper-form >>> .form-row:first-child {
+ margin-top: 0;
+}
+
+/* 琛屽熬绌虹櫧濉厖锛氫笉婊℃暣琛岀殑鍙充晶鑷姩琛ヤ竴涓┖鐧芥牸瀛愶紝缃戞牸淇濇寔闂悎锛堝彸渚ч�傚綋鐣欑櫧锛� */
+.paper-form >>> .form-row::after {
+ content: "";
+ flex: 1 1 0;
+ min-height: 42px;
+ background: linear-gradient(to left, #d0d3db 1px, transparent 1px),
+ linear-gradient(to top, #d0d3db 1px, transparent 1px);
+ background-color: #fff;
+}
+
+.paper-form >>> .el-form-item {
+ flex: 0 0 33.3333%;
+ display: flex;
+ margin: 0;
+ background: #fff;
+ border-right: 1px solid #d0d3db;
+ border-bottom: 1px solid #d0d3db;
+}
+.paper-form >>> .el-form-item::after,
+.paper-form >>> .el-form-item::before {
+ display: none;
+}
+
+.paper-form >>> .col-1-3 { flex: 0 0 33.3333%; }
+.paper-form >>> .col-half { flex: 0 0 50%; }
+.paper-form >>> .col-2-3 { flex: 0 0 66.6666%; }
+.paper-form >>> .col-full { flex: 0 0 100%; }
+
+.paper-form >>> .el-form-item__label {
+ flex: 0 0 150px;
+ width: 150px !important;
+ float: none;
+ padding: 0 8px !important;
+ background: #ecf5ff;
+ border-right: 1px solid #d0d3db;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ font-size: 13px;
+ font-weight: 600;
+ color: #2c3038;
+ line-height: 1.3;
+ white-space: nowrap;
+}
+.paper-form >>> .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label:before {
+ color: #f56c6c;
+ margin-right: 2px;
+}
+
+.paper-form >>> .el-form-item__content {
+ flex: 1;
+ margin-left: 0 !important;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ padding: 6px 10px;
+ background: #fff;
+ min-height: 42px;
+ line-height: 1.4;
+}
+
+/* 鎺т欢瀹藉害閫備腑锛屼笉閾烘弧鏁存牸锛堝唴瀹圭煭鏃惰緭鍏ユ涓嶅啀鎷夊緱寰堥暱锛� */
+.paper-form >>> .el-form-item__content .el-input,
+.paper-form >>> .el-form-item__content .el-select,
+.paper-form >>> .el-form-item__content .el-cascader {
+ width: 220px;
+ max-width: 100%;
+}
+.paper-form >>> .el-form-item__content .el-date-editor {
+ width: 240px;
+ max-width: 100%;
+}
+.paper-form >>> .el-form-item__content .el-range-editor {
+ width: 360px;
+ max-width: 100%;
+}
</style>
--
Gitblit v1.9.3