From 6623e51d0b1edb191ca50201c0130cb5ed1beda8 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期五, 08 五月 2026 14:03:02 +0800
Subject: [PATCH] 青岛推送

---
 src/views/business/allocation/allocationInfo.vue |  238 ++++++++++++++++++++++------------------------------------
 1 files changed, 91 insertions(+), 147 deletions(-)

diff --git a/src/views/business/allocation/allocationInfo.vue b/src/views/business/allocation/allocationInfo.vue
index fa02806..cfa9d2d 100644
--- a/src/views/business/allocation/allocationInfo.vue
+++ b/src/views/business/allocation/allocationInfo.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="organ-allocation-detail">
+    <case-basic-info :case-id="caseId" :show-attachment="true" />
     <!-- 鍩烘湰淇℃伅閮ㄥ垎 -->
     <el-card class="detail-card">
       <div slot="header" class="clearfix">
@@ -11,7 +12,7 @@
           <el-button
             type="success"
             @click="handleConfirmAllocation"
-            :disabled="form.allocationStatus === '1'"
+            :disabled="form.allocationStatus == '1'"
             :loading="confirmLoading"
           >
             纭鍒嗛厤
@@ -21,85 +22,19 @@
 
       <el-form :model="form" ref="form" :rules="rules" label-width="120px">
         <el-row :gutter="20">
-          <el-col :span="8">
-            <el-form-item label="浣忛櫌鍙�" prop="donorno">
-              <el-input v-model="form.donorno" readonly />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="妗堜緥缂栧彿" prop="caseNo">
-              <el-input v-model="form.caseNo" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="鎹愮尞鑰呭鍚�" prop="name">
-              <el-input v-model="form.name" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="8">
-            <el-form-item label="鎬у埆" prop="sex">
-              <el-select v-model="form.sex" style="width: 100%">
-                <el-option label="鐢�" value="0" />
-                <el-option label="濂�" value="1" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="骞撮緞" prop="age">
-              <el-input v-model="form.age" />
-            </el-form-item>
-          </el-col>
-          <!-- <el-col :span="8">
-            <el-form-item label="鎹愮尞绫诲埆" prop="donationcategory">
-              <el-select v-model="form.donationcategory" style="width: 100%">
-                <el-option
-                  v-for="dict in dict.type.sys_DonationCategory || []"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
-                />
-              </el-select>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="8">
-            <el-form-item label="琛�鍨�" prop="bloodtype">
-              <el-select v-model="form.bloodtype" style="width: 100%">
-                <el-option
-                  v-for="dict in dict.type.sys_BloodType || []"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
-                />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="璇佷欢鍙风爜" prop="idcardno">
-              <el-input v-model="form.idcardno" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="璁板綍鐘舵��" prop="recordstate">
-              <el-input v-model="form.recordstate" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20">
           <el-col :span="12">
-            <el-form-item label="鐤剧梾璇婃柇" prop="diagnosisname">
-              <el-input
-                type="textarea"
-                :rows="2"
-                v-model="form.diagnosisname"
-                placeholder="璇疯緭鍏ョ柧鐥呰瘖鏂俊鎭�"
-              />
+            <el-form-item label="鍒嗛厤鐘舵��" prop="allocationStatus">
+              <el-select
+                v-model="form.allocationStatus"
+                placeholder="璇烽�夋嫨鍒嗛厤鐘舵��"
+              >
+                <el-option
+                  v-for="dict in dict.type.organ_allocation_status || []"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -109,26 +44,7 @@
                 type="datetime"
                 value-format="yyyy-MM-dd HH:mm:ss"
                 style="width: 100%"
-                :disabled="form.allocationStatus === '1'"
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <el-form-item label="鎵�鍦ㄥ尰鐤楁満鏋�" prop="treatmenthospitalname">
-              <el-input
-                v-model="form.treatmenthospitalname"
-                placeholder="璇疯緭鍏ュ尰鐤楁満鏋勫悕绉�"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="鍖荤枟鏈烘瀯缂栫爜" prop="treatmenthospitalno">
-              <el-input
-                v-model="form.treatmenthospitalno"
-                placeholder="璇疯緭鍏ュ尰鐤楁満鏋勭紪鐮�"
+                :disabled="form.allocationStatus == '1'"
               />
             </el-form-item>
           </el-col>
@@ -137,7 +53,7 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="鐧昏浜�" prop="registrationName">
-              <el-input v-model="form.registrationName" readonly />
+              <el-input v-model="form.registrationName" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -147,7 +63,6 @@
                 type="datetime"
                 value-format="yyyy-MM-dd HH:mm:ss"
                 style="width: 100%"
-                readonly
               />
             </el-form-item>
           </el-col>
@@ -162,17 +77,17 @@
         <div style="float: right;">
           <el-tag
             :type="
-              form.allocationStatus === '1'
+              form.allocationStatus == '1'
                 ? 'success'
-                : form.allocationStatus === '2'
+                : form.allocationStatus == '2'
                 ? 'danger'
                 : 'warning'
             "
           >
             {{
-              form.allocationStatus === "1"
+              form.allocationStatus == "1"
                 ? "宸插垎閰�"
-                : form.allocationStatus === "2"
+                : form.allocationStatus == "2"
                 ? "浣滃簾"
                 : "鏈垎閰�"
             }}
@@ -197,7 +112,7 @@
                   v-for="dict in dict.type.sys_Organ || []"
                   :key="dict.value"
                   :label="dict.value"
-                  :disabled="form.allocationStatus === '1'"
+                  :disabled="form.allocationStatus == '1'"
                 >
                   {{ dict.label }}
                 </el-checkbox>
@@ -247,7 +162,7 @@
                     <el-input
                       v-model="scope.row.caseno"
                       placeholder="鍒嗛厤绯荤粺缂栧彿"
-                      :disabled="form.allocationStatus === '1'"
+                      :disabled="form.allocationStatus == '1'"
                     />
                   </template>
                 </el-table-column>
@@ -267,7 +182,7 @@
                       type="datetime"
                       value-format="yyyy-MM-dd HH:mm:ss"
                       placeholder="閫夋嫨鍒嗛厤鎺ユ敹鏃堕棿"
-                      :disabled="form.allocationStatus === '1'"
+                      :disabled="form.allocationStatus == '1'"
                     />
                   </template>
                 </el-table-column>
@@ -282,7 +197,7 @@
                     <el-input
                       v-model="scope.row.name"
                       placeholder="鍙椾綋濮撴皬"
-                      :disabled="form.allocationStatus === '1'"
+                      :disabled="form.allocationStatus == '1'"
                     />
                   </template>
                 </el-table-column>
@@ -318,7 +233,7 @@
                       clearable
                       v-model="scope.row.reallocationreason"
                       placeholder="璇疯緭鍏ヨ鏄�"
-                      :disabled="form.allocationStatus === '1'"
+                      :disabled="form.allocationStatus == '1'"
                     />
                   </template>
                 </el-table-column>
@@ -382,17 +297,17 @@
                 <span class="stat-value">
                   <el-tag
                     :type="
-                      form.allocationStatus === '1'
+                      form.allocationStatus == '1'
                         ? 'success'
-                        : form.allocationStatus === '2'
+                        : form.allocationStatus == '2'
                         ? 'danger'
                         : 'warning'
                     "
                   >
                     {{
-                      form.allocationStatus === "1"
+                      form.allocationStatus == "1"
                         ? "宸插垎閰�"
-                        : form.allocationStatus === "2"
+                        : form.allocationStatus == "2"
                         ? "浣滃簾"
                         : "鏈垎閰�"
                     }}
@@ -410,14 +325,14 @@
         </div>
       </el-form>
 
-      <div class="dialog-footer" v-if="form.allocationStatus !== '1'">
+      <!-- <div class="dialog-footer" v-if="form.allocationStatus !== '1'">
         <el-button
           type="primary"
           @click="handleSaveAllocation"
           :loading="saveLoading"
           :disabled="
             !allocationData.serviceDonateorganList ||
-              allocationData.serviceDonateorganList.length === 0
+              allocationData.serviceDonateorganList.length == 0
           "
         >
           淇濆瓨鍒嗛厤璁板綍
@@ -430,7 +345,7 @@
         >
           纭瀹屾垚鍒嗛厤
         </el-button>
-      </div>
+      </div> -->
     </el-card>
 
     <!-- 闄勪欢绠$悊閮ㄥ垎浼樺寲 -->
@@ -543,8 +458,6 @@
       </div>
     </el-dialog>
 
-
-
     <!-- 闄勪欢棰勮瀵硅瘽妗� -->
     <FilePreviewDialog
       :visible="filePreviewVisible"
@@ -559,12 +472,13 @@
 import {
   allocationList,
   allocationadd,
-  allocationedit
+  allocationedit,
+  donateorganBaseinfoInfo
 } from "@/api/businessApi";
 import UploadAttachment from "@/components/UploadAttachment";
 import FilePreviewDialog from "@/components/FilePreviewDialog";
 import OrgSelecter from "@/views/project/components/orgselect";
-
+import CaseBasicInfo from "@/components/CaseBasicInfo";
 import dayjs from "dayjs";
 
 export default {
@@ -572,16 +486,20 @@
   components: {
     UploadAttachment,
     OrgSelecter,
-    FilePreviewDialog
+    FilePreviewDialog,
+    CaseBasicInfo
   },
   dicts: [
     "sys_BloodType",
     "sys_DonationCategory",
     "sys_RecordState",
-    "sys_Organ"
+    "sys_Organ",
+    "organ_allocation_status"
   ],
   data() {
     return {
+      caseId: null,
+
       // 琛ㄥ崟鏁版嵁
       form: {
         id: undefined,
@@ -721,12 +639,13 @@
     }
   },
   created() {
+    this.caseId = this.$route.query.infoid;
     this.initData();
   },
   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;
     },
 
@@ -749,7 +668,7 @@
         .substring(0, 19);
 
       if (infoid) {
-        this.getDetail(infoid);
+        this.getDetail(infoid, id);
       } else {
         this.generateDonorNo();
       }
@@ -762,20 +681,35 @@
       this.form.donorno = "D" + timestamp.slice(-8);
       this.form.caseNo = "CASE" + timestamp.slice(-6);
     },
+
+    // 瑙f瀽 filePatch 瀛楁
+    parseFilePatch(filePatch) {
+      if (!filePatch) {
+        this.form.attachments = [];
+        return;
+      }
+
+      try {
+        this.form.attachments = JSON.parse(filePatch);
+      } catch (error) {
+        console.error("瑙f瀽 filePatch 瀛楁澶辫触:", error);
+        this.form.attachments = [];
+      }
+    },
     // 鑾峰彇璇︽儏
-    async getDetail(infoid) {
+    async getDetail(infoid, id) {
       this.loading = true;
+      donateorganBaseinfoInfo(id);
       try {
         const response = await allocationList({ infoid });
-        if (
-          response.code === 200 &&
-          response.data &&
-          response.data.length > 0
-        ) {
+        if (response.code == 200 && response.data && response.data.length > 0) {
           const data = response.data[0];
 
+          data.allocationStatus = JSON.stringify(data.allocationStatus);
           // 濉厖琛ㄥ崟鏁版嵁
           Object.assign(this.form, data);
+          // 杞崲闄勪欢涓洪泦鍚�
+          this.parseFilePatch(this.form.fileName);
 
           // 鍒濆鍖栭檮浠�
           if (this.form.attachments) {
@@ -804,7 +738,7 @@
                 if (item.organname) {
                   const dictItem = this.organDict.find(
                     org =>
-                      org.label === item.organname ||
+                      org.label == item.organname ||
                       (item.organname && item.organname.includes(org.label))
                   );
                   return dictItem ? dictItem.value : null;
@@ -944,7 +878,7 @@
       let organName = this.getOrganLabel(organValue);
 
       // 濡傛灉鏄�"鍏朵粬"鍣ㄥ畼涓旀湁杈撳叆鍊�
-      if (organValue === "C01" && this.otherOrganInput) {
+      if (organValue == "C01" && this.otherOrganInput) {
         organName = `鍏朵粬(${this.otherOrganInput})`;
       }
 
@@ -965,7 +899,7 @@
     // 鍖婚櫌閫夋嫨鍙樺寲
     handleHospitalChange(row, hospitalNo) {
       const hospital = this.hospitalList.find(
-        item => item.hospitalNo === hospitalNo
+        item => item.hospitalNo == hospitalNo
       );
       if (hospital) {
         row.transplantHospitalName = hospital.hospitalName;
@@ -1003,6 +937,13 @@
       }
       return "";
     },
+    // 鏋勫缓 filePatch 瀛楁
+    buildFilePatch() {
+      if (!this.attachments || this.attachments.length == 0) {
+        return "";
+      }
+      return JSON.stringify(this.attachments);
+    },
     // 淇濆瓨鍩烘湰淇℃伅
     async handleSave() {
       this.$refs.form.validate(async valid => {
@@ -1015,22 +956,25 @@
         try {
           const saveData = {
             ...this.form,
-            attachments: this.attachments,
             serviceDonateorganList:
               this.allocationData.serviceDonateorganList || []
           };
-          console.log(this.form.recordstate);
+          saveData.fileName = this.buildFilePatch();
+          saveData.serviceDonateorganList.forEach(item => {
+            item.baseid = this.form.id;
+            item.infoid = this.form.infoid;
+          });
           this.form.recordstate = 1;
           const apiMethod = this.form.id ? allocationedit : allocationadd;
           const response = await apiMethod(saveData);
 
-          if (response.code === 200) {
+          if (response.code == 200) {
             this.$message.success("淇濆瓨鎴愬姛");
-            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.$router.replace({
+              //   query: { ...this.$route.query, id: this.form.id }
+              // });
             }
           } else {
             this.$message.error("淇濆瓨澶辫触锛�" + (response.msg || "鏈煡閿欒"));
@@ -1061,7 +1005,7 @@
 
         const response = await allocationedit(saveData);
 
-        if (response.code === 200) {
+        if (response.code == 200) {
           this.$message.success("鍒嗛厤璁板綍淇濆瓨鎴愬姛");
         } else {
           this.$message.error(
@@ -1105,7 +1049,7 @@
 
             const response = await allocationedit(saveData);
 
-            if (response.code === 200) {
+            if (response.code == 200) {
               this.$message.success("鍣ㄥ畼鍒嗛厤宸插畬鎴�");
             } else {
               this.$message.error(
@@ -1136,7 +1080,7 @@
     handleAttachmentRemove(file) {
       if (file.url) {
         const index = this.attachments.findIndex(
-          item => item.path === file.url || item.fileUrl === file.url
+          item => item.path == file.url || item.fileUrl == file.url
         );
         if (index > -1) {
           this.attachments.splice(index, 1);
@@ -1147,7 +1091,7 @@
 
     /** 涓婁紶鎴愬姛澶勭悊 */
     handleUploadSuccess({ file, fileList, response }) {
-      if (response.code === 200) {
+      if (response.code == 200) {
         const attachmentObj = {
           fileName: file.name,
           path: response.fileUrl || file.url,
@@ -1276,7 +1220,7 @@
 
     /** 鏍煎紡鍖栨枃浠跺ぇ灏� */
     formatFileSize(bytes) {
-      if (!bytes || bytes === 0) return "0 B";
+      if (!bytes || bytes == 0) return "0 B";
       const k = 1024;
       const sizes = ["B", "KB", "MB", "GB"];
       const i = Math.floor(Math.log(bytes) / Math.log(k));

--
Gitblit v1.9.3