From f5e6487a78789ee372a8c6458bfd0cb740d6a0e8 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 13 五月 2026 22:13:58 +0800
Subject: [PATCH] 青岛维护

---
 src/views/business/appear/index.vue |  432 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 250 insertions(+), 182 deletions(-)

diff --git a/src/views/business/appear/index.vue b/src/views/business/appear/index.vue
index 39581d2..a1ee5cc 100644
--- a/src/views/business/appear/index.vue
+++ b/src/views/business/appear/index.vue
@@ -48,12 +48,6 @@
 
     <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
     <el-row :gutter="10" class="mb8">
-      <!-- <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd"
-          >鏂板妗堜緥</el-button
-        >
-      </el-col> -->
-
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -67,14 +61,13 @@
     </el-row>
 
     <!-- 鏁版嵁琛ㄦ牸 -->
-    <!-- 鏁版嵁琛ㄦ牸 -->
     <el-table
       v-loading="loading"
       :data="caseList"
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center" />
-      
+
       <el-table-column
         label="缂栧彿"
         align="center"
@@ -165,7 +158,7 @@
             v-if="
               scope.row.reportStatus !== '3' &&
                 scope.row.reportStatus !== '4' &&
-                scope.row.delFlag === 0
+                scope.row.delFlag == 0
             "
             >缂栬緫</el-button
           >
@@ -174,20 +167,28 @@
             type="text"
             icon="el-icon-check"
             @click="handleApprove(scope.row)"
-            v-if="scope.row.reportStatus === '2' && scope.row.delFlag === 0"
+            v-if="scope.row.reportStatus == '2' && scope.row.delFlag == 0"
             >纭</el-button
           >
+          <!-- 绉婚櫎杞繍鎸夐挳 -->
           <el-button
+            v-if="scope.row.serviceTransport.length"
             size="mini"
-            type="text"
-            icon="el-icon-truck"
-            :type="getTransportStatustype(scope.row)"
-            @click="handleTransport(scope.row)"
-            v-if="shouldShowTransportButton(scope.row)"
-            :disabled="!canGoToTransport(scope.row)"
+            type="primary"
+            @click="goToTransportDetail(scope.row.name)"
+            >鏌ョ湅杞繍鍗�</el-button
           >
-            {{ getTransportButtonText(scope.row) }}
-          </el-button>
+          <el-button
+            v-if="
+              scope.row.reportStatus == 3 &&
+                !scope.row.serviceTransport.length &&
+                scope.row.isTransport == 2
+            "
+            size="mini"
+            type="success"
+            @click="Createatransferorder(scope.row)"
+            >鍒涘缓杞繍鍗�</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
@@ -220,20 +221,18 @@
       append-to-body
       class="approve-dialog"
     >
-      <el-container style="height: 800px;">
+      <!-- 浣跨敤 div 甯冨眬鏇夸唬 el-container -->
+      <div class="approve-dialog-content">
         <!-- 宸︿晶锛氭渚嬭鎯� -->
-        <el-aside
-          width="50vw"
-          style="background: #f8f9fa; padding: 20px; overflow-y: auto;"
-        >
+        <div class="approve-detail-left">
           <div class="approve-detail-preview">
             <h3 style="margin-bottom: 15px; color: #303133;">妗堜緥璇︽儏棰勮</h3>
             <case-detail :caseData="currentCase" :showtitle="false" />
           </div>
-        </el-aside>
+        </div>
 
         <!-- 鍙充晶锛氱‘璁よ〃鍗� -->
-        <el-main style="padding: 20px;">
+        <div class="approve-form-right">
           <el-form
             ref="approveForm"
             :model="approveForm"
@@ -241,24 +240,69 @@
             label-width="100px"
           >
             <el-form-item label="纭缁撴灉" prop="approveResult">
-              <el-radio-group v-model="approveForm.approveResult">
+              <el-radio-group
+                v-model="approveForm.approveResult"
+                @change="handleApproveResultChange"
+              >
                 <el-radio label="3">鍚屾剰</el-radio>
                 <el-radio label="4">椹冲洖</el-radio>
               </el-radio-group>
             </el-form-item>
-            <el-form-item label="纭鎰忚" prop="approveOpinion">
+
+            <!-- 褰撻�夋嫨"鍚屾剰"鏃舵樉绀鸿浆杩愰�夐」 -->
+            <el-form-item
+              v-if="approveForm.approveResult == '3'"
+              label="鏄惁闇�瑕佽浆杩�"
+              prop="isTransport"
+            >
+              <el-radio-group v-model="approveForm.isTransport">
+                <el-radio label="1">涓嶉渶瑕�</el-radio>
+                <el-radio label="2">闇�瑕�</el-radio>
+              </el-radio-group>
+            </el-form-item>
+
+            <!-- 褰撻�夋嫨"椹冲洖"鏃舵樉绀洪┏鍥炲師鍥� -->
+            <div v-if="approveForm.approveResult == '4'">
+              <el-form-item label="椹冲洖鍘熷洜" prop="rejectType">
+                <el-radio-group v-model="approveForm.rejectType">
+                  <el-radio label="1">濂借浆</el-radio>
+                  <el-radio label="2">姝讳骸</el-radio>
+                  <el-radio label="3">涓嶇鍚堟崘鐚爣鍑�</el-radio>
+                  <el-radio label="4">瀹跺睘鏀惧純鎹愮尞</el-radio>
+                  <el-radio label="5">鍏朵粬</el-radio>
+                </el-radio-group>
+              </el-form-item>
+
+              <el-form-item label="椹冲洖鎰忚" prop="confirmResult">
+                <el-input
+                  type="textarea"
+                  v-model="approveForm.confirmResult"
+                  placeholder="璇疯緭鍏ヨ缁嗙殑椹冲洖鎰忚"
+                  :rows="6"
+                  maxlength="500"
+                  show-word-limit
+                />
+              </el-form-item>
+            </div>
+
+            <!-- 褰撻�夋嫨"鍚屾剰"鏃舵樉绀虹‘璁ゆ剰瑙� -->
+            <el-form-item
+              v-if="approveForm.approveResult == '3'"
+              label="纭鎰忚"
+              prop="confirmResult"
+            >
               <el-input
                 type="textarea"
-                v-model="approveForm.approveOpinion"
-                placeholder="璇疯緭鍏ヨ缁嗙殑纭鎰忚锛屽寘鎷�氳繃鎴栭┏鍥炵殑鐞嗙敱"
+                v-model="approveForm.confirmResult"
+                placeholder="璇疯緭鍏ョ‘璁ゆ剰瑙�"
                 :rows="6"
                 maxlength="500"
                 show-word-limit
               />
             </el-form-item>
           </el-form>
-        </el-main>
-      </el-container>
+        </div>
+      </div>
 
       <div slot="footer" class="dialog-footer">
         <el-button @click="approveOpen = false">鍙栨秷</el-button>
@@ -993,15 +1037,33 @@
       approveForm: {
         id: null,
         approveResult: "3",
-        approveOpinion: ""
+        confirmResult: "",
+        rejectType: "", // 椹冲洖鍘熷洜
+        isTransport: "1", // 鏄惁闇�瑕佽浆杩�
+        createTransport: false, // 鏄惁闇�瑕佸垱寤鸿浆杩愬崟
+        isDonate: "0" // 鏄惁鎹愮尞锛�0-鏈崘鐚紝1-宸叉崘鐚�
       },
       // 纭琛ㄥ崟楠岃瘉
       approveRules: {
         approveResult: [
           { required: true, message: "璇烽�夋嫨纭缁撴灉", trigger: "change" }
         ],
-        approveOpinion: [
+        confirmResult: [
           { required: true, message: "璇疯緭鍏ョ‘璁ゆ剰瑙�", trigger: "blur" }
+        ],
+        rejectType: {
+          required: false,
+          validator: (rule, value, callback) => {
+            if (this.approveForm.approveResult == "4" && !value) {
+              callback(new Error("璇烽�夋嫨椹冲洖鍘熷洜"));
+            } else {
+              callback();
+            }
+          },
+          trigger: "change"
+        },
+        isTransport: [
+          { required: true, message: "璇烽�夋嫨鏄惁闇�瑕佽浆杩�", trigger: "change" }
         ]
       },
       // 缂栬緫琛ㄥ崟
@@ -1073,56 +1135,31 @@
         this.loading = false;
       }
     },
-    // 杞繍------------------
-    /** 鍒ゆ柇鏄惁闇�瑕佹樉绀鸿浆杩愭寜閽� */
-    shouldShowTransportButton(row) {
-      // 鍙湁宸插悓鎰忕殑妗堜緥鎵嶈兘杩涜杞繍鎿嶄綔
-      // return row.reportStatus == "3" && row.delFlag == 0;
-      return row.reportStatus != "4";
+
+    /** 纭缁撴灉鍙樺寲澶勭悊 */
+    handleApproveResultChange(value) {
+      if (value == "3") {
+        // 閫夋嫨鍚屾剰鏃讹紝閲嶇疆椹冲洖鍘熷洜
+        this.approveForm.rejectType = "";
+        this.approveForm.isDonate = "0"; // 閲嶇疆涓烘湭鎹愮尞
+      } else if (value == "4") {
+        // 閫夋嫨椹冲洖鏃讹紝閲嶇疆杞繍閫夐」
+        this.approveForm.isTransport = "1";
+        this.approveForm.createTransport = false;
+      }
+
+      // 娓呴櫎楠岃瘉
+      this.$nextTick(() => {
+        if (this.$refs.approveForm) {
+          this.$refs.approveForm.clearValidate();
+        }
+      });
     },
 
-    /** 鍒ゆ柇鏄惁鍙互璺宠浆鍒拌浆杩愬崟 */
-    canGoToTransport(row) {
-      // 闇�瑕佽浆杩愶紙isTransport === "2"锛変笖娌℃湁杞繍淇℃伅锛坰erviceTransport涓嶅瓨鍦ㄦ垨涓虹┖鏁扮粍锛�
-      return row.isTransport == "2" && row.serviceTransport;
-    },
-
-    /** 鑾峰彇杞繍鎸夐挳鏂囨湰 */
-    getTransportButtonText(row) {
-      if (row.isTransport == "2") {
-        if (
-          row.serviceTransport &&
-          Array.isArray(row.serviceTransport) &&
-          row.serviceTransport.length > 0
-        ) {
-          return "鏌ョ湅杞繍鍗�";
-        } else {
-          return "鍒涘缓杞繍鍗�";
-        }
-      }
-      return "鏃犻渶杞繍";
-    },
-    getTransportStatustype(row) {
-      if (row.isTransport == "1") {
-        return "info"; // 涓嶉渶瑕佽浆杩�
-      }
-      if (
-        row.serviceTransport &&
-        Array.isArray(row.serviceTransport) &&
-        row.serviceTransport.length > 0
-      ) {
-        // 鏍规嵁杞繍鍗曠姸鎬佹樉绀轰笉鍚岄鑹�
-        const transport = row.serviceTransport[0];
-        if (transport.transitStatus) {
-          return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
-        }
-        return "primary"; // 鏈夎浆杩愪俊鎭絾鏃犵姸鎬�
-      }
-      return "success"; // 闇�瑕佽浆杩愪絾鏃犺浆杩愪俊鎭�
-    },
+    // 杞繍鐩稿叧鏂规硶
     /** 鑾峰彇杞繍鐘舵�佹爣绛炬牱寮� */
     getTransportStatusTag(row) {
-      if (row.isTransport === "1") {
+      if (row.isTransport == "1") {
         return "info"; // 涓嶉渶瑕佽浆杩�
       }
       if (
@@ -1155,7 +1192,7 @@
 
     /** 鑾峰彇杞繍鐘舵�佹枃鏈� */
     getTransportStatusText(row) {
-      if (row.isTransport === "1") {
+      if (row.isTransport == "1") {
         return "鏃犻渶杞繍";
       }
       if (
@@ -1185,95 +1222,26 @@
       return "闇�杞繍";
     },
 
-    /** 澶勭悊杞繍鎿嶄綔 */
-    async handleTransport(row) {
-      try {
-        // 鍏堣幏鍙栨渶鏂扮殑妗堜緥淇℃伅
-        const caseData = row;
-
-        if (caseData.isTransport == "2") {
-          if (
-            caseData.serviceTransport &&
-            Array.isArray(caseData.serviceTransport) &&
-            caseData.serviceTransport.length > 0
-          ) {
-            // 宸叉湁杞繍鍗曪紝璺宠浆鍒拌浆杩愬崟璇︽儏椤�
-            const transport = caseData.serviceTransport[0];
-            this.goToTransportDetail(transport.id, row.name);
-          } else {
-            // 娌℃湁杞繍鍗曪紝璺宠浆鍒板垱寤鸿浆杩愬崟椤甸潰
-            this.goToCreateTransport(row);
-          }
-        } else {
-          this.$message.warning("璇ユ渚嬩笉闇�瑕佽浆杩�");
-        }
-      } catch (error) {
-        console.error("鑾峰彇妗堜緥淇℃伅澶辫触:", error);
-        this.$message.error("鑾峰彇妗堜緥淇℃伅澶辫触");
-      }
-    },
-
     /** 璺宠浆鍒板垱寤鸿浆杩愬崟椤甸潰 */
-    goToCreateTransport(caseData) {
-      // 鏂瑰紡1锛氬湪鏂伴〉闈㈡墦寮�
-      this.$router.push({
-        path: "/report/transfer",
-        query: {
-          autoCreate: "true", //璺宠浆杞繍鏍囪瘑
-          caseId: caseData.id,
-          caseNo: caseData.caseNo,
-          patName: caseData.name,
-          age: caseData.age,
-          sex: caseData.sex,
-          diagnosisname: caseData.diagnosisname,
-          treatmentHospitalName: caseData.treatmenthospitalname
-        }
-      });
-    },
+    Createatransferorder(res) {
+      console.log(res);
 
-    /** 鎵撳紑杞繍鍗曞脊妗� */
-    openTransportDialog(caseData) {
-      this.$modal.confirm({
-        title: "鍒涘缓杞繍鍗�",
-        message: `鎮ㄥ皢鍒涘缓妗堜緥銆�${caseData.caseNo} - ${caseData.name}銆戠殑杞繍鍗曪紝鏄惁缁х画锛焋,
-        confirmButtonText: "鍓嶅線鍒涘缓",
-        cancelButtonText: "鍙栨秷",
-        type: "warning",
-        beforeClose: (action, instance, done) => {
-          if (action === "confirm") {
-            // 璺宠浆鍒拌浆杩愬崟鍒涘缓椤甸潰
-            this.$router.push({
-              path: "/report/transfer",
-              query: {
-                caseId: caseData.id,
-                caseNo: caseData.caseNo,
-                patName: caseData.name,
-                age: caseData.age,
-                sex: caseData.sex,
-                diagnosisname: caseData.diagnosisname,
-                treatmentHospitalName: caseData.treatmenthospitalname
-              }
-            });
-            done();
-          } else {
-            done();
-          }
-        }
-      });
-    },
-
-    /** 璺宠浆鍒拌浆杩愬崟璇︽儏椤� */
-    goToTransportDetail(transportId, name) {
       this.$router.push({
         path: "/report/transfer",
         query: {
           autoCreate: "true",
-          patName: name
+          caseId: res.id,
+          caseNo: res.caseNo,
+          patName: res.name,
+          age: res.age,
+          sex: res.sex,
+          diagnosisname: res.diagnosisname,
+          treatmentHospitalName: res.treatmenthospitalname
         }
       });
     },
-    // ---------------------------------end
-    // 澶氶�夋閫変腑鏁版嵁
+
+    /** 澶氶�夋閫変腑鏁版嵁 */
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id);
       this.single = selection.length !== 1;
@@ -1304,7 +1272,7 @@
         this.currentCase = row;
 
         // 濡傛灉鐘舵�佹槸"宸蹭笂鎶�"(1)锛屽垯鏇存柊涓�"宸查槄璇�"(2)
-        if (this.currentCase.reportStatus === "1") {
+        if (this.currentCase.reportStatus == "1") {
           try {
             const updateData = {
               ...this.currentCase,
@@ -1339,7 +1307,7 @@
     async handleEdit(row) {
       try {
         const response = await donateInfo(row.id);
-        if (response.code === 200 || response.data) {
+        if (response.code == 200 || response.data) {
           this.isEditing = true;
           const data = response.data || response;
 
@@ -1392,7 +1360,10 @@
 
         this.approveForm.id = row.id;
         this.approveForm.approveResult = "3";
-        this.approveForm.approveOpinion = "";
+        this.approveForm.confirmResult = "";
+        this.approveForm.rejectType = "";
+        this.approveForm.isTransport = row.isTransport || "1";
+        this.approveForm.isDonate = "0";
 
         this.$nextTick(() => {
           if (this.$refs.approveForm) {
@@ -1406,7 +1377,7 @@
         this.currentCase = row;
         this.approveForm.id = row.id;
         this.approveForm.approveResult = "3";
-        this.approveForm.approveOpinion = "";
+        this.approveForm.confirmResult = "";
         this.approveOpen = true;
         this.$modal.msgError("鑾峰彇璇︽儏澶辫触锛屼絾宸叉墦寮�纭绐楀彛");
       }
@@ -1416,21 +1387,66 @@
     async submitApprove() {
       try {
         const valid = await this.$refs.approveForm.validate();
-        if (valid) {
-          const approveData = {
-            ...this.currentCase,
-            reportStatus: this.approveForm.approveResult,
-            remark: this.approveForm.approveOpinion,
-            approvername: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛",
-            approvetime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
-            updateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
-            updateBy: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛"
-          };
+        if (!valid) return;
 
-          await donateEdit(approveData);
-          this.$modal.msgSuccess("纭鎴愬姛");
-          this.approveOpen = false;
-          this.getList();
+        // 鍑嗗纭鏁版嵁
+        const approveData = {
+          ...this.currentCase,
+          reportStatus: this.approveForm.approveResult,
+          confirmResult: this.approveForm.confirmResult,
+          approvername: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛",
+          approvetime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+          updateTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+          updateBy: this.$store.state.user?.name || "褰撳墠鐢ㄦ埛"
+        };
+
+        // 澶勭悊纭缁撴灉
+        if (this.approveForm.approveResult == "3") {
+          // 鍚屾剰
+          approveData.isTransport = this.approveForm.isTransport;
+
+          // 濡傛灉涓嶉渶瑕佽浆杩愶紝璁剧疆isDonate涓�1
+          if (this.approveForm.isTransport == "1") {
+            approveData.isDonate = "1";
+          } else {
+            approveData.isDonate = "0";
+          }
+        } else if (this.approveForm.approveResult == "4") {
+          // 椹冲洖
+          approveData.rejectType = this.approveForm.rejectType;
+          approveData.isTransport = "1"; // 椹冲洖鐨勬渚嬩笉闇�瑕佽浆杩�
+          approveData.isDonate = "1"; // 椹冲洖鐨勬渚嬫爣璁颁负宸叉崘鐚�
+        }
+
+        // 淇濆瓨妗堜緥纭淇℃伅
+        await donateEdit(approveData);
+
+        this.$modal.msgSuccess("纭鎴愬姛");
+
+        // 鍏抽棴纭瀵硅瘽妗�
+        this.approveOpen = false;
+
+        // 鍒锋柊鍒楄〃
+        this.getList();
+
+        // 濡傛灉鍚屾剰涓旈渶瑕佽浆杩愶紝璺宠浆鍒拌浆杩愬崟鍒涘缓椤甸潰
+        if (
+          this.approveForm.approveResult == "3" &&
+          this.approveForm.isTransport == "2"
+        ) {
+          this.$router.push({
+            path: "/report/transfer",
+            query: {
+              autoCreate: "true",
+              caseId: this.currentCase.id,
+              caseNo: this.currentCase.caseNo,
+              patName: this.currentCase.name,
+              age: this.currentCase.age,
+              sex: this.currentCase.sex,
+              diagnosisname: this.currentCase.diagnosisname,
+              treatmentHospitalName: this.currentCase.treatmenthospitalname
+            }
+          });
         }
       } catch (error) {
         console.error("纭澶辫触:", error);
@@ -1498,6 +1514,8 @@
         infectious: undefined,
         infectiousOther: undefined,
         isTransport: "1",
+        isDonate: "0", // 鏂板锛氭槸鍚︽崘鐚�
+        rejectType: undefined, // 鏂板锛氶┏鍥炲師鍥�
         // 鍖婚櫌淇℃伅
         treatmenthospitalname: undefined,
         treatmentdeptname: undefined,
@@ -1544,7 +1562,7 @@
 
     /** 闄勪欢涓婁紶鎴愬姛澶勭悊 */
     handleUploadSuccess({ file, fileList, response }) {
-      if (response && response.code === 200) {
+      if (response && response.code == 200) {
         if (!this.editForm.annexfilesList) {
           this.editForm.annexfilesList = [];
         }
@@ -1573,7 +1591,7 @@
     handleAttachmentRemove(file) {
       if (file.url && this.editForm.annexfilesList) {
         const index = this.editForm.annexfilesList.findIndex(
-          item => item.path === file.url || item.fileUrl === file.url
+          item => item.path == file.url || item.fileUrl == file.url
         );
         if (index > -1) {
           this.editForm.annexfilesList.splice(index, 1);
@@ -1659,7 +1677,15 @@
         this.$refs.editForm && this.$refs.editForm.clearValidate();
       });
     },
-
+    goToTransportDetail(name) {
+      this.$router.push({
+        path: "/report/transfer",
+        query: {
+          autoCreate: "true",
+          patName: name
+        }
+      });
+    },
     /** 淇濆瓨琛ㄥ崟 */
     async handleSave() {
       try {
@@ -1691,7 +1717,7 @@
           response = await donateAdd(requestData);
         }
 
-        if (response.code === 200) {
+        if (response.code == 200) {
           this.$message.success(this.isEditing ? "淇敼鎴愬姛" : "鏂板鎴愬姛");
           this.handleEditClose();
           this.getList();
@@ -1787,7 +1813,49 @@
 .approve-detail-preview {
   height: 100%;
 }
+.approve-dialog-content {
+  display: flex;
+  height: 600px; /* 鍙互璋冩暣楂樺害 */
+  overflow: hidden;
+}
 
+.approve-detail-left {
+  width: 50%;
+  background: #f8f9fa;
+  padding: 20px;
+  overflow-y: auto;
+  border-right: 1px solid #e4e7ed;
+}
+
+.approve-form-right {
+  width: 50%;
+  padding: 20px;
+  overflow-y: auto;
+}
+
+.approve-detail-preview {
+  height: 100%;
+}
+
+/* 鍝嶅簲寮忚皟鏁� */
+@media (max-width: 1200px) {
+  .approve-dialog-content {
+    flex-direction: column;
+    height: auto;
+    max-height: 80vh;
+  }
+
+  .approve-detail-left,
+  .approve-form-right {
+    width: 100%;
+    height: auto;
+  }
+
+  .approve-detail-left {
+    border-right: none;
+    border-bottom: 1px solid #e4e7ed;
+  }
+}
 /* 鍝嶅簲寮忚璁� */
 @media (max-width: 1200px) {
   .approve-dialog {

--
Gitblit v1.9.3