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 |  523 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 369 insertions(+), 154 deletions(-)

diff --git a/src/views/business/ethicalReview/ethicalReviewInfo.vue b/src/views/business/ethicalReview/ethicalReviewInfo.vue
index 8e56dfa..a68f190 100644
--- a/src/views/business/ethicalReview/ethicalReviewInfo.vue
+++ b/src/views/business/ethicalReview/ethicalReviewInfo.vue
@@ -1,60 +1,25 @@
 <template>
   <div class="ethics-review-detail">
-    <case-basic-info :case-id="caseId" :show-attachment="true" />
+    <case-basic-info :case-id="caseId" :show-attachment="true":column="3" />
 
-    <el-card class="detail-card">
+    <el-card class="detail-card paper-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="handleCompleteReview"
-            :disabled="form.status == '3' || form.status == '2'"
-            :loading="completeLoading"
-          >
-            瀹℃煡瀹屾垚
-          </el-button>
-
-          <el-button
-            type="warning"
-            @click="handleSuspendReview"
-            :disabled="form.status == '2' || form.status == '3'"
-            :loading="suspendLoading"
-          >
-            瀹℃煡涓
-          </el-button>
-
-          <el-button
-            type="danger"
-            @click="handleEndReview"
-            :disabled="form.status == '2'"
-            :loading="endLoading"
-          >
-            缁撴潫瀹℃煡
-          </el-button>
-        </div>
       </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="initiateTheme">
-              <el-input
-                v-model="form.initiateTheme"
-                placeholder="璇疯緭鍏ュ彂璧蜂富棰�"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="鍙戣捣浜�" prop="initiatePerson">
-              <el-input v-model="form.initiatePerson" />
-            </el-form-item>
-          </el-col>
+      <el-form :model="form" ref="form" :rules="rules" label-width="120px" class="paper-form">
+        <div class="form-row">
+          <el-form-item label="鍙戣捣涓婚" prop="initiateTheme" class="col-1-3">
+            <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" :disabled="isReadOnly" />
+          </el-form-item>
           <!-- <el-col :span="8">
             <el-form-item label="瀹℃煡鐘舵��" prop="status">
               <el-select v-model="form.status" style="width: 100%">
@@ -67,57 +32,58 @@
               </el-select>
             </el-form-item>
           </el-col> -->
-        </el-row>
+        </div>
 
         <!-- 涓撳鐩稿叧淇℃伅 -->
 
-        <el-row :gutter="20">
-          <el-col :span="8">
-            <el-form-item label="浼︾悊瀹℃煡缁撹" prop="expertConclusion">
-              <el-select v-model="form.expertConclusion" style="width: 100%">
-                <el-option label="鍚屾剰" value="1" />
-                <el-option label="瀹℃煡涓�" value="2" />
-                <el-option label="涓嶅悓鎰�" value="0" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="浼︾悊瀹℃煡缁撹鏃堕棿" prop="expertTime">
-              <el-date-picker
-                v-model="form.expertTime"
-                type="datetime"
-                value-format="yyyy-MM-dd HH:mm:ss"
-                style="width: 100%"
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
+        <div class="form-row">
+          <el-form-item label="浼︾悊瀹℃煡缁撹" prop="expertConclusion" class="col-1-3">
+            <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">
+            <el-date-picker
+              v-model="form.expertTime"
+              type="datetime"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              style="width: 100%"
+              :disabled="isReadOnly"
+            />
+          </el-form-item>
+        </div>
 
-        <el-row :gutter="20">
-          <el-col :span="24">
-            <el-form-item label="瀹℃煡鎰忚" prop="expertOpinion">
-              <el-input
-                type="textarea"
-                :rows="2"
-                v-model="form.expertOpinion"
-                placeholder="璇疯緭鍏ユ剰瑙�"
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
+        <div class="form-row">
+          <el-form-item label="瀹℃煡鎰忚" prop="expertOpinion" class="col-full">
+            <el-input
+              type="textarea"
+              :rows="2"
+              v-model="form.expertOpinion"
+              placeholder="璇疯緭鍏ユ剰瑙�"
+              :disabled="isReadOnly"
+            />
+          </el-form-item>
+        </div>
 
-        <el-row :gutter="20">
-          <el-col :span="24">
-            <el-form-item label="澶囨敞" prop="remark">
-              <el-input
-                type="textarea"
-                :rows="3"
-                v-model="form.remark"
-                placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�"
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
+        <div class="form-row">
+          <el-form-item label="澶囨敞" prop="remark" class="col-full">
+            <el-input
+              type="textarea"
+              :rows="3"
+              v-model="form.remark"
+              placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�"
+              :disabled="isReadOnly"
+            />
+          </el-form-item>
+        </div>
       </el-form>
     </el-card>
 
@@ -129,6 +95,7 @@
 
       <!-- 浣跨敤 UploadAttachment 缁勪欢 -->
       <UploadAttachment
+        v-if="!isReadOnly"
         ref="uploadAttachment"
         :file-list="attachmentFileList"
         :limit="10"
@@ -186,6 +153,7 @@
                 涓嬭浇
               </el-button>
               <el-button
+                v-if="!isReadOnly"
                 size="mini"
                 type="danger"
                 @click="handleRemoveAttachment(scope.$index)"
@@ -223,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"
@@ -235,6 +209,7 @@
             鍙戦�佷笓瀹�
           </el-button>
           <el-button
+            v-if="!isReadOnly"
             size="mini"
             type="success"
             @click="handleSendToChiefExpert"
@@ -420,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"
@@ -458,7 +439,45 @@
         </el-table-column>
       </el-table>
     </el-card>
+    <div style="text-align: center; margin: 30px 0;">
+      <el-button
+        v-if="!isReadOnly"
+        type="primary"
+        @click="handleSave"
+        :loading="saveLoading"
+      >
+        淇濆瓨
+      </el-button>
 
+      <el-button
+        v-if="!isReadOnly && form.status != '3'"
+        type="success"
+        @click="handleCompleteReview"
+        :loading="completeLoading"
+      >
+        瀹℃煡瀹屾垚
+      </el-button>
+
+      <el-button
+        v-if="!isReadOnly"
+        type="warning"
+        @click="handleSuspendReview"
+        :disabled="form.status == '2' || form.status == '3'"
+        :loading="suspendLoading"
+      >
+        瀹℃煡涓
+      </el-button>
+
+      <el-button
+        v-if="!isReadOnly"
+        type="danger"
+        @click="handleEndReview"
+        :disabled="form.status == '2'"
+        :loading="endLoading"
+      >
+        缁撴潫瀹℃煡
+      </el-button>
+    </div>
     <!-- 娣诲姞涓撳瀵硅瘽妗� -->
     <el-dialog
       title="娣诲姞涓撳"
@@ -620,7 +639,7 @@
           </div>
         </el-form-item>
 
-        <el-form-item label="鍙戦�佹柟寮�" prop="sendType" required>
+        <!-- <el-form-item label="鍙戦�佹柟寮�" prop="sendType" required>
           <el-select
             v-model="sendForm.sendType"
             placeholder="璇烽�夋嫨鍙戦�佹柟寮�"
@@ -631,27 +650,27 @@
             <el-option label="鐭俊鍙戦��" value="2"></el-option>
             <el-option label="鍏朵粬鏂瑰紡" value="3"></el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
 
-        <el-form-item label="鍙戦�佹爣棰�" prop="title" required>
+        <!-- <el-form-item label="鍙戦�佹爣棰�" prop="title" required>
           <el-input v-model="sendForm.title" placeholder="璇疯緭鍏ュ彂閫佹爣棰�" />
-        </el-form-item>
+        </el-form-item> -->
 
-        <el-form-item label="鍙戦�佸唴瀹�" prop="content" required>
+        <!-- <el-form-item label="鍙戦�佸唴瀹�" prop="content" required>
           <el-input
             type="textarea"
             :rows="4"
             v-model="sendForm.content"
             placeholder="璇疯緭鍏ュ彂閫佺粰涓撳鐨勫鏌ュ唴瀹硅鏄�"
           />
-        </el-form-item>
+        </el-form-item> -->
 
-        <el-form-item label="璺宠浆閾炬帴" prop="url">
+        <!-- <el-form-item label="璺宠浆閾炬帴" prop="url">
           <el-input
             v-model="sendForm.url"
             placeholder="璇疯緭鍏ヨ烦杞摼鎺ワ紙鍙�夛級"
           />
-        </el-form-item>
+        </el-form-item> -->
       </el-form>
       <div slot="footer">
         <el-button @click="sendDialogVisible = false">鍙栨秷</el-button>
@@ -738,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>
@@ -819,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";
@@ -962,7 +982,6 @@
         startTime: "",
         endTime: "",
         sendType: "0",
-        title: "浼︾悊瀹℃煡浠诲姟閫氱煡",
         content: "",
         url: ""
       },
@@ -978,6 +997,11 @@
     };
   },
   computed: {
+    // 鏌ョ湅妯″紡锛氬彧璇伙紝绂佺敤琛ㄥ崟骞堕殣钘忎繚瀛樻寜閽�
+    isReadOnly() {
+      return this.$route.query.mode === "view";
+    },
+
     // 璁$畻灞炴�э細鑾峰彇涓撳鍒楄〃锛堢‘淇濆搷搴斿紡锛�
     ethicalreviewopinionsList() {
       return this.form.ethicalreviewopinionsList || [];
@@ -1165,7 +1189,7 @@
     },
 
     // 鑾峰彇璇︽儏
-    async getDetail(infoid, id) {
+   async getDetail(infoid, id) {
       try {
         this.expertLoading = true;
         let response = {};
@@ -1173,12 +1197,23 @@
           response = await ethicalreviewInfo(id);
         } else if (infoid) {
           response = await reviewinitiateBaseInfoList({ infoid: infoid });
+          if (response.data[0].id) {
+            this.id = response.data[0].id;
+            response = await ethicalreviewInfo(this.id);
+          }
         }
 
+        if (
+          !response.data.status ||
+          response.data.status == 0 ||
+          response.data.status == 1
+        ) {
+          response.data.status = "2";
+        }
         if (response.code == 200) {
           let detailData = {};
 
-          if (response.data && id) {
+          if (response.data && this.id) {
             this.form = response.data;
             // 瑙f瀽 filePatch 瀛楁
             this.parseFilePatch(this.form.filePatch);
@@ -1187,7 +1222,7 @@
             if (!this.form.ethicalreviewopinionsList) {
               this.$set(this.form, "ethicalreviewopinionsList", []);
             }
-          } else if (response.data && infoid) {
+          } else if (response.data && this.infoid) {
             this.form = response.data[0];
             this.parseFilePatch(this.form.filePatch);
             this.initAttachmentFileList();
@@ -1336,7 +1371,9 @@
       console.log(file, "file");
 
       this.currentPreviewFile = {
-        fileName: file,
+        // 绛惧悕闄勪欢 URL 閫氬父鏃犳墿灞曞悕锛堝 .../file-1787645145583锛夛紝
+        // 棰勮缁勪欢渚濊禆鏂囦欢鍚嶆墿灞曞悕璇嗗埆鏂囦欢绫诲瀷锛岃繖閲岃ˉ .png 璁╁叾鎸夊浘鐗囬瑙�
+        fileName: "鎵嬪啓绛惧悕.png",
         fileUrl: file,
         fileType: "png"
       };
@@ -1426,8 +1463,8 @@
     // 瀹℃煡鐘舵�佽繃婊ゅ櫒
     getReviewStatusFilter(status) {
       const statusMap = {
-        "0": "info", // 寰呮帴鏀�
-        "1": "warning", // 鏈帴鏀�
+        "0": "info", // 寰呭彂閫�
+        "1": "warning", // 宸插彂閫�
         "2": "success", // 宸叉帴鏀�
         "3": "danger", // 瓒呮椂
         "4": "danger", // 涓
@@ -1438,8 +1475,8 @@
 
     getReviewStatusText(status) {
       const statusMap = {
-        "0": "寰呮帴鏀�",
-        "1": "鏈帴鏀�",
+        "0": "寰呭彂閫�",
+        "1": "宸插彂閫�",
         "2": "宸叉帴鏀�",
         "3": "瓒呮椂",
         "4": "涓",
@@ -1451,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] || "鏈煡";
     },
@@ -1500,13 +1541,14 @@
 
     // 淇濆瓨淇℃伅
     async handleSave() {
+      if (this.saveLoading) return;
       this.$refs.form.validate(async valid => {
         if (valid) {
           this.saveLoading = true;
           // 淇濆瓨娓呯┖id渚夸簬鍚庣鏁翠綋鍒犻櫎鏂板
-          this.form.ethicalreviewopinionsList.forEach(item => {
-            item.id = null;
-          });
+          // this.form.ethicalreviewopinionsList.forEach(item => {
+          //   item.id = null;
+          // });
           try {
             const submitData = {
               ...this.form,
@@ -1522,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);
             }
 
@@ -1530,12 +1578,14 @@
               // 淇濆瓨鎴愬姛鍚庢洿鏂板師濮嬫暟鎹�
               this.saveOriginalData();
               this.isEdit = false;
-              if (!this.form.id && response.data && response.data.id) {
-                this.form.id = response.data.id;
-                this.$router.replace({
-                  query: { ...this.$route.query, id: this.form.id }
-                });
+              if (!this.form.id && response.data ) {
+                this.form.id = response.data;
+                this.id = this.form.id;
+                // this.$router.replace({
+                //   query: { ...this.$route.query, id: this.form.id }
+                // });
               }
+              this.refreshPageData();
             } else {
               this.$message.error("淇濆瓨澶辫触锛�" + (response.msg || "鏈煡閿欒"));
             }
@@ -1547,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;
+      }
     },
 
     // 瀹℃煡瀹屾垚
@@ -2006,7 +2081,7 @@
           deptName: expert.unitname || "",
           title: expert.title || "",
           donorno: expert.telephone || "",
-          receiveStatus: "0", // 寰呮帴鏀�
+          receiveStatus: "0", // 寰呭彂閫�
           expertconclusion: "",
           expertopinion: "",
           conclusionannex: "",
@@ -2060,6 +2135,9 @@
 
     // 鍙戦�佺粰鏅�氫笓瀹�
     handleSendToNormalExperts() {
+      if (!this.validateAllIds(this.ethicalreviewopinionsList)) {
+        return;
+      }
       this.currentSendExperts = this.availableNormalExperts;
       this.sendForm.expertType = "normal";
       this.sendForm.endTime = ""; // 閲嶇疆鎴鏃堕棿
@@ -2068,6 +2146,9 @@
 
     // 鍙戦�佺粰涓诲涓撳
     handleSendToChiefExpert() {
+      if (!this.validateAllIds(this.ethicalreviewopinionsList)) {
+        return;
+      }
       this.currentSendExperts = this.availableChiefExperts;
       this.sendForm.expertType = "chief";
       this.sendForm.endTime = ""; // 涓诲涓撳鏃犻渶鎴鏃堕棿
@@ -2076,12 +2157,40 @@
 
     // 鍙戦�佺粰鍗曚釜涓撳
     handleSendToExpert(expert) {
+      if (!this.validateAllIds(this.ethicalreviewopinionsList)) {
+        return;
+      }
       this.currentSendExperts = [expert];
       this.sendForm.expertType = expert.expertType == "1" ? "chief" : "normal";
       this.sendForm.endTime = expert.expertType == "1" ? "" : ""; // 涓诲涓撳鏃犻渶鎴鏃堕棿
       this.sendDialogVisible = true;
     },
 
+    validateAllIds(arr, idField = "id") {
+      if (!Array.isArray(arr) || arr.length === 0) {
+        this.$message.warning("璇峰厛閫夋嫨涓撳鍒楄〃");
+        return false;
+      }
+
+      const emptyIdItems = arr.filter(item => {
+        const id = item[idField];
+        return (
+          id === undefined ||
+          id === null ||
+          id === "" ||
+          id.toString().trim() === ""
+        );
+      });
+
+      if (emptyIdItems.length > 0) {
+        this.$message.warning(
+          "褰撳墠閫変腑涓撳鍒楄〃鏈夋湭淇濆瓨鏁版嵁锛岃淇濆瓨鍒锋柊鍚庡啀鍙戦��"
+        );
+        return false;
+      }
+
+      return true;
+    },
     // 鍙戦�佸璇濇鍏抽棴
     handleSendDialogClose() {
       this.sendForm = {
@@ -2090,7 +2199,6 @@
         startTime: "",
         endTime: "",
         sendType: "0",
-        title: "浼︾悊瀹℃煡浠诲姟閫氱煡",
         content: "",
         url: ""
       };
@@ -2110,20 +2218,20 @@
         return;
       }
 
-      if (!this.sendForm.sendType) {
-        this.$message.warning("璇烽�夋嫨鍙戦�佹柟寮�");
-        return;
-      }
+      // if (!this.sendForm.sendType) {
+      //   this.$message.warning("璇烽�夋嫨鍙戦�佹柟寮�");
+      //   return;
+      // }
 
-      if (!this.sendForm.title) {
-        this.$message.warning("璇疯緭鍏ュ彂閫佹爣棰�");
-        return;
-      }
+      // if (!this.sendForm.title) {
+      //   this.$message.warning("璇疯緭鍏ュ彂閫佹爣棰�");
+      //   return;
+      // }
 
-      if (!this.sendForm.content) {
-        this.$message.warning("璇疯緭鍏ュ彂閫佸唴瀹�");
-        return;
-      }
+      // if (!this.sendForm.content) {
+      //   this.$message.warning("璇疯緭鍏ュ彂閫佸唴瀹�");
+      //   return;
+      // }
 
       if (this.currentSendExperts.length == 0) {
         this.$message.warning("娌℃湁鎵惧埌鍙彂閫佺殑涓撳");
@@ -2172,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;
@@ -2245,7 +2354,6 @@
           startTime: "",
           endTime: "",
           sendType: "0",
-          title: "浼︾悊瀹℃煡浠诲姟閫氱煡",
           content: "",
           url: ""
         };
@@ -2262,27 +2370,35 @@
     },
     // 鍙戦�佸崟涓笓瀹剁殑鏂规硶
     async sendSingleExpert(expert, index) {
+      console.log(expert, "expert", index);
+
       try {
-        // 鏋勫缓鍙戦�佹暟鎹�
-        const sendData = {
-          number: expert.deptname || "", // 鐢ㄦ埛鎵嬫満鍙�
-          title: this.sendForm.title,
-          url: this.sendForm.url || "",
-          createTime: new Date()
-            .toISOString()
-            .replace("T", " ")
-            .substring(0, 19)
+        // // 鏋勫缓鍙戦�佹暟鎹�
+        // const sendData = {
+        //   number: expert.deptname || "", // 鐢ㄦ埛鎵嬫満鍙�
+        //   title: this.sendForm.title,
+        //   url: this.sendForm.url || "",
+        //   createTime: new Date()
+        //     .toISOString()
+        //     .replace("T", " ")
+        //     .substring(0, 19)
+        // };
+        const sendDatas = {
+          expertNo: expert.donorno || "",//7.14
+          id: expert.id || "",
+          infoId: this.infoid || ""
         };
 
         console.log(`姝e湪鍙戦�佺 ${index + 1} 涓笓瀹�: ${expert.expertname}`);
 
         // 璋冪敤鍙戦�侀�氱煡鎺ュ彛
         // const response = await sendNotification(sendData);
-        const response = await sendcall({
-          tel: expert.donorno ? expert.donorno : 13634195431, // 杩欓噷搴旇鏄� expert.deptname 鎴� expert.phone
-          messageContent:
-            "闈掑矝澶у闄勫睘鍖婚櫌涓婃姤娼滃湪鎹愮尞妗堜緥锛岃鐧诲綍OPO绯荤粺鏌ョ湅璇︾粏淇℃伅锛屽強鏃惰繘琛屽鎺ャ�傜櫥褰曢摼鎺�:https://brdeddd.qduhosos.cn/dklejdj/deljf/index"
-        });
+        // const response = await sendcall({
+        //   tel: expert.donorno ? expert.donorno : 13634195431, // 杩欓噷搴旇鏄� expert.deptname 鎴� expert.phone
+        //   messageContent:
+        //     "闈掑矝澶у闄勫睘鍖婚櫌涓婃姤娼滃湪鎹愮尞妗堜緥锛岃鐧诲綍OPO绯荤粺鏌ョ湅璇︾粏淇℃伅锛屽強鏃惰繘琛屽鎺ャ�傜櫥褰曢摼鎺�:https://brdeddd.qduhosos.cn/dklejdj/deljf/index"
+        // });
+        const response = await sendNotification(sendDatas);
 
         if (response.code == 200) {
           return {
@@ -2702,4 +2818,103 @@
     margin-bottom: 10px;
   }
 }
+
+/* ===== 绾歌川琛ㄦ牸缃戞牸鏍峰紡 ===== */
+.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