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 |  104 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 73 insertions(+), 31 deletions(-)

diff --git a/src/views/business/decide/DecideInfo.vue b/src/views/business/decide/DecideInfo.vue
index 0590feb..ed708d2 100644
--- a/src/views/business/decide/DecideInfo.vue
+++ b/src/views/business/decide/DecideInfo.vue
@@ -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>
 
@@ -56,7 +56,7 @@
         <span class="detail-title">鑴戞浜″垽瀹氫俊鎭�</span>
 
         <el-button
-          v-if="!isEdit"
+          v-if="!isReadOnly && !isEdit"
           style="float: right; margin-left: 10px;"
           type="primary"
           @click="handleEdit"
@@ -68,25 +68,25 @@
       <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" :readonly="!isEdit" />
+            <el-input v-model="form.deathreason" :disabled="isReadOnly || !isEdit" />
           </el-form-item>
-        </div>
-
-        <div class="form-row">
           <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="!isEdit"
+              :disabled="isReadOnly || !isEdit"
             />
           </el-form-item>
+        </div>
+
+        <div class="form-row">
           <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="deathjudgedocto" class="col-1-3">
-            <el-input v-model="form.deathjudgedocto" :readonly="!isEdit" />
+            <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" :readonly="!isEdit" />
+            <el-input v-model="form.deathjudgedoctt" :disabled="isReadOnly || !isEdit" />
           </el-form-item>
         </div>
         <div class="form-row">
@@ -94,16 +94,16 @@
             <div
               v-for="(doctor, index) in brainExtraDoctors"
               :key="index"
-              style="display: flex; align-items: center; margin-bottom: 8px;"
+              style="display: flex; align-items: center; margin-bottom: 8px; width: 100%;"
             >
               <el-input
                 v-model="brainExtraDoctors[index]"
                 placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
                 style="flex: 1; margin-right: 10px;"
-                :readonly="!isEdit"
+                :disabled="isReadOnly || !isEdit"
               />
               <el-button
-                v-if="isEdit"
+                v-if="!isReadOnly && isEdit"
                 type="danger"
                 icon="el-icon-minus"
                 circle
@@ -112,7 +112,7 @@
               />
             </div>
             <el-button
-              v-if="isEdit"
+              v-if="!isReadOnly && isEdit"
               type="primary"
               icon="el-icon-plus"
               size="small"
@@ -143,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"
@@ -215,7 +216,7 @@
                       >涓嬭浇</el-button
                     >
                     <el-button
-                      v-if="isEdit"
+                      v-if="!isReadOnly && isEdit"
                       size="mini"
                       type="text"
                       icon="el-icon-delete"
@@ -247,7 +248,7 @@
       <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"
@@ -256,7 +257,7 @@
           淇濆瓨淇℃伅
         </el-button>
         <el-button
-          v-else
+          v-else-if="!isReadOnly"
           style="float: right; margin-left: 10px;"
           type="primary"
           @click="handleEdit"
@@ -268,30 +269,30 @@
       <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" :readonly="!isEdit" />
+            <el-input v-model="form.heartdeathreason" :disabled="isReadOnly || !isEdit" />
           </el-form-item>
-        </div>
-
-        <div class="form-row">
           <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="!isEdit"
+              :disabled="isReadOnly || !isEdit"
             />
           </el-form-item>
+        </div>
+
+        <div class="form-row">
           <el-form-item label="鍒ゅ畾鍖荤敓涓�" prop="heartdeathjudgedocto" class="col-1-3">
             <el-input
               v-model="form.heartdeathjudgedocto"
-              :readonly="!isEdit"
+              :disabled="isReadOnly || !isEdit"
             />
           </el-form-item>
           <el-form-item label="鍒ゅ畾鍖荤敓浜�" prop="heartdeathjudgedoctt" class="col-1-3">
             <el-input
               v-model="form.heartdeathjudgedoctt"
-              :readonly="!isEdit"
+              :disabled="isReadOnly || !isEdit"
             />
           </el-form-item>
         </div>
@@ -300,16 +301,16 @@
             <div
               v-for="(doctor, index) in heartExtraDoctors"
               :key="index"
-              style="display: flex; align-items: center; margin-bottom: 8px;"
+              style="display: flex; align-items: center; margin-bottom: 8px; width: 100%;"
             >
               <el-input
                 v-model="heartExtraDoctors[index]"
                 placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
                 style="flex: 1; margin-right: 10px;"
-                :readonly="!isEdit"
+                :disabled="isReadOnly || !isEdit"
               />
               <el-button
-                v-if="isEdit"
+                v-if="!isReadOnly && isEdit"
                 type="danger"
                 icon="el-icon-minus"
                 circle
@@ -318,7 +319,7 @@
               />
             </div>
             <el-button
-              v-if="isEdit"
+              v-if="!isReadOnly && isEdit"
               type="primary"
               icon="el-icon-plus"
               size="small"
@@ -349,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"
@@ -421,7 +423,7 @@
                       >涓嬭浇</el-button
                     >
                     <el-button
-                      v-if="isEdit"
+                      v-if="!isReadOnly && isEdit"
                       size="mini"
                       type="text"
                       icon="el-icon-delete"
@@ -450,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"
@@ -458,7 +460,7 @@
         淇濆瓨淇℃伅
       </el-button>
       <el-button
-        v-if="isEdit"
+        v-if="!isReadOnly && isEdit"
         type="success"
         @click="accomplish"
         :loading="saveLoading"
@@ -569,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";
@@ -693,6 +696,10 @@
     };
   },
   computed: {
+    // 鏌ョ湅妯″紡锛氬彧璇伙紝绂佺敤琛ㄥ崟骞堕殣钘忎繚瀛樻寜閽�
+    isReadOnly() {
+      return this.$route.query.mode === "view";
+    },
     getCurrentBrainDeathTypeLabel() {
       const type = this.brainDeathAttachmentTypes.find(
         t => t.value === this.currentUploadType
@@ -715,6 +722,9 @@
     if (this.$route.query.judgmentType) {
       this.activeJudgmentType = this.$route.query.judgmentType;
     }
+
+    // 鏌ョ湅妯″紡涓嬮粯璁ゅ彧璇�
+    this.isEdit = !this.isReadOnly;
 
     this.getDetail(this.infoid);
     this.getAttachmentList();
@@ -1177,6 +1187,7 @@
     },
     // 淇濆瓨淇℃伅
     async handleSave() {
+      if (this.saveLoading) return;
       // 鏍规嵁褰撳墠鏍囩閫夋嫨楠岃瘉瑙勫垯
       let formRef =
         this.activeJudgmentType === "brain" ? "brainForm" : "heartForm";
@@ -1221,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);
             }
 
@@ -1246,6 +1263,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;
+      }
+    },
+
     // 鏂囦欢澶у皬鏍煎紡鍖�
     formatFileSize(size) {
       if (size === 0) return "0 B";

--
Gitblit v1.9.3