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/ethicalReview/ethicalReviewInfo.vue | 109 ++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 92 insertions(+), 17 deletions(-)
diff --git a/src/views/business/ethicalReview/ethicalReviewInfo.vue b/src/views/business/ethicalReview/ethicalReviewInfo.vue
index 2e175aa..a68f190 100644
--- a/src/views/business/ethicalReview/ethicalReviewInfo.vue
+++ b/src/views/business/ethicalReview/ethicalReviewInfo.vue
@@ -14,10 +14,11 @@
<el-input
v-model="form.initiateTheme"
placeholder="璇疯緭鍏ュ彂璧蜂富棰�"
+ :disabled="isReadOnly"
/>
</el-form-item>
<el-form-item label="鍙戣捣浜�" prop="initiatePerson" class="col-1-3">
- <el-input v-model="form.initiatePerson" />
+ <el-input v-model="form.initiatePerson" :disabled="isReadOnly" />
</el-form-item>
<!-- <el-col :span="8">
<el-form-item label="瀹℃煡鐘舵��" prop="status">
@@ -37,10 +38,16 @@
<div class="form-row">
<el-form-item label="浼︾悊瀹℃煡缁撹" prop="expertConclusion" class="col-1-3">
- <el-select v-model="form.expertConclusion" style="width: 100%">
+ <el-select
+ v-model="form.expertConclusion"
+ style="width: 100%"
+ :disabled="isReadOnly"
+ >
<el-option label="鍚屾剰" value="1" />
<el-option label="瀹℃煡涓�" value="2" />
<el-option label="涓嶅悓鎰�" value="0" />
+ <el-option label="寮冩潈" value="3" />
+ <el-option label="淇敼鍚庡悓鎰�" value="4" />
</el-select>
</el-form-item>
<el-form-item label="浼︾悊瀹℃煡缁撹鏃堕棿" prop="expertTime" class="col-1-3">
@@ -49,6 +56,7 @@
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%"
+ :disabled="isReadOnly"
/>
</el-form-item>
</div>
@@ -60,6 +68,7 @@
:rows="2"
v-model="form.expertOpinion"
placeholder="璇疯緭鍏ユ剰瑙�"
+ :disabled="isReadOnly"
/>
</el-form-item>
</div>
@@ -71,6 +80,7 @@
:rows="3"
v-model="form.remark"
placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�"
+ :disabled="isReadOnly"
/>
</el-form-item>
</div>
@@ -85,6 +95,7 @@
<!-- 浣跨敤 UploadAttachment 缁勪欢 -->
<UploadAttachment
+ v-if="!isReadOnly"
ref="uploadAttachment"
:file-list="attachmentFileList"
:limit="10"
@@ -142,6 +153,7 @@
涓嬭浇
</el-button>
<el-button
+ v-if="!isReadOnly"
size="mini"
type="danger"
@click="handleRemoveAttachment(scope.$index)"
@@ -179,10 +191,16 @@
>
鍒锋柊
</el-button>
- <el-button size="mini" type="primary" @click="handleAddExpert">
+ <el-button
+ v-if="!isReadOnly"
+ size="mini"
+ type="primary"
+ @click="handleAddExpert"
+ >
娣诲姞涓撳
</el-button>
<el-button
+ v-if="!isReadOnly"
size="mini"
type="primary"
@click="handleSendToNormalExperts"
@@ -191,6 +209,7 @@
鍙戦�佷笓瀹�
</el-button>
<el-button
+ v-if="!isReadOnly"
size="mini"
type="success"
@click="handleSendToChiefExpert"
@@ -376,7 +395,13 @@
</template>
</el-table-column>
- <el-table-column label="鎿嶄綔" width="180" align="center" fixed="right">
+ <el-table-column
+ v-if="!isReadOnly"
+ label="鎿嶄綔"
+ width="180"
+ align="center"
+ fixed="right"
+ >
<template slot-scope="scope">
<el-button
size="mini"
@@ -415,12 +440,17 @@
</el-table>
</el-card>
<div style="text-align: center; margin: 30px 0;">
- <el-button type="primary" @click="handleSave" :loading="saveLoading">
+ <el-button
+ v-if="!isReadOnly"
+ type="primary"
+ @click="handleSave"
+ :loading="saveLoading"
+ >
淇濆瓨
</el-button>
<el-button
- v-if="form.status != '3'"
+ v-if="!isReadOnly && form.status != '3'"
type="success"
@click="handleCompleteReview"
:loading="completeLoading"
@@ -429,6 +459,7 @@
</el-button>
<el-button
+ v-if="!isReadOnly"
type="warning"
@click="handleSuspendReview"
:disabled="form.status == '2' || form.status == '3'"
@@ -438,6 +469,7 @@
</el-button>
<el-button
+ v-if="!isReadOnly"
type="danger"
@click="handleEndReview"
:disabled="form.status == '2'"
@@ -725,7 +757,7 @@
<el-row :gutter="20" style="margin-top: 20px;">
<el-col :span="12">
<div class="history-stat-item">
- <div class="history-stat-label">鏈帴鏀舵暟閲�</div>
+ <div class="history-stat-label">宸插彂閫佹湭鎺ユ敹鏁伴噺</div>
<div class="history-stat-value">
{{ expertHistoryData.notAcceptCount || 0 }}
</div>
@@ -806,6 +838,7 @@
sendcall
} from "@/api/businessApi";
import { listExternalperson } from "@/api/project/externalperson";
+import { getDonatebaseinfo } from "@/api/project/donatebaseinfo";
import CaseBasicInfo from "@/components/CaseBasicInfo";
import UploadAttachment from "@/components/UploadAttachment";
import FilePreviewDialog from "@/components/FilePreviewDialog";
@@ -964,6 +997,11 @@
};
},
computed: {
+ // 鏌ョ湅妯″紡锛氬彧璇伙紝绂佺敤琛ㄥ崟骞堕殣钘忎繚瀛樻寜閽�
+ isReadOnly() {
+ return this.$route.query.mode === "view";
+ },
+
// 璁$畻灞炴�э細鑾峰彇涓撳鍒楄〃锛堢‘淇濆搷搴斿紡锛�
ethicalreviewopinionsList() {
return this.form.ethicalreviewopinionsList || [];
@@ -1333,7 +1371,9 @@
console.log(file, "file");
this.currentPreviewFile = {
- fileName: file,
+ // 绛惧悕闄勪欢 URL 閫氬父鏃犳墿灞曞悕锛堝 .../file-1787645145583锛夛紝
+ // 棰勮缁勪欢渚濊禆鏂囦欢鍚嶆墿灞曞悕璇嗗埆鏂囦欢绫诲瀷锛岃繖閲岃ˉ .png 璁╁叾鎸夊浘鐗囬瑙�
+ fileName: "鎵嬪啓绛惧悕.png",
fileUrl: file,
fileType: "png"
};
@@ -1423,8 +1463,8 @@
// 瀹℃煡鐘舵�佽繃婊ゅ櫒
getReviewStatusFilter(status) {
const statusMap = {
- "0": "info", // 寰呮帴鏀�
- "1": "warning", // 鏈帴鏀�
+ "0": "info", // 寰呭彂閫�
+ "1": "warning", // 宸插彂閫�
"2": "success", // 宸叉帴鏀�
"3": "danger", // 瓒呮椂
"4": "danger", // 涓
@@ -1435,8 +1475,8 @@
getReviewStatusText(status) {
const statusMap = {
- "0": "寰呮帴鏀�",
- "1": "鏈帴鏀�",
+ "0": "寰呭彂閫�",
+ "1": "宸插彂閫�",
"2": "宸叉帴鏀�",
"3": "瓒呮椂",
"4": "涓",
@@ -1448,18 +1488,22 @@
// 缁撹杩囨护鍣�
getConclusionFilter(conclusion) {
const conclusionMap = {
+ "0": "danger", // 涓嶅悓鎰�
"1": "success", // 鍚屾剰
"2": "warning", // 瀹℃煡涓�
- "0": "danger" // 涓嶅悓鎰�
+ "3": "info", // 寮冩潈
+ "4": "success" // 淇敼鍚庡悓鎰�
};
return conclusionMap[conclusion] || "info";
},
getConclusionText(conclusion) {
const conclusionMap = {
+ "0": "涓嶅悓鎰�",
"1": "鍚屾剰",
"2": "瀹℃煡涓�",
- "0": "涓嶅悓鎰�"
+ "3": "寮冩潈",
+ "4": "淇敼鍚庡悓鎰�"
};
return conclusionMap[conclusion] || "鏈煡";
},
@@ -1497,6 +1541,7 @@
// 淇濆瓨淇℃伅
async handleSave() {
+ if (this.saveLoading) return;
this.$refs.form.validate(async valid => {
if (valid) {
this.saveLoading = true;
@@ -1519,6 +1564,12 @@
if (submitData.id) {
response = await ethicalreviewedit(submitData);
} else {
+ // 鏂板鏃舵牎楠屾槸鍚﹀凡鏈夌浉鍚屾偅鑰�
+ const exists = await this.checkPatientExists();
+ if (exists) {
+ this.$message.warning("璇ユ偅鑰呭凡瀛樺湪锛岃鍕块噸澶嶆坊鍔�");
+ return;
+ }
response = await ethicalreviewadd(submitData);
}
@@ -1546,6 +1597,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 reviewinitiateBaseInfoList({
+ inpatientno,
+ pageNum: 1,
+ pageSize: 1
+ });
+ const list = res.data || [];
+ return list.some(item => item && item.id != null && item.id !== "");
+ } catch (e) {
+ return false;
+ }
},
// 瀹℃煡瀹屾垚
@@ -2005,7 +2081,7 @@
deptName: expert.unitname || "",
title: expert.title || "",
donorno: expert.telephone || "",
- receiveStatus: "0", // 寰呮帴鏀�
+ receiveStatus: "0", // 寰呭彂閫�
expertconclusion: "",
expertopinion: "",
conclusionannex: "",
@@ -2204,6 +2280,7 @@
if (index != -1) {
this.form.ethicalreviewopinionsList[index].receiveStatus = "1"; // 宸叉帴鏀�
+ this.form.ethicalreviewopinionsList[index].expertconclusion = "2"; // 瀹℃煡涓�
this.form.ethicalreviewopinionsList[
index
].startTime = this.sendForm.startTime;
@@ -2750,8 +2827,6 @@
.paper-form {
border-left: 1px solid #d0d3db;
background: #fff;
- /* 瓒呭灞忛檺鍒惰〃鍗曟渶澶у搴︼紝鍙充晶鐣欑櫧锛岄伩鍏嶅瓧娈靛垎甯冭繃寮� */
- max-width: 1400px;
}
.paper-form >>> .form-row {
--
Gitblit v1.9.3