From b57c6c97c7de4cb5aeeb6c766a4642fac5b9b500 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期五, 21 八月 2026 15:07:10 +0800
Subject: [PATCH] 测试完成

---
 src/views/followvisit/discharge/index.vue |  498 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 351 insertions(+), 147 deletions(-)

diff --git a/src/views/followvisit/discharge/index.vue b/src/views/followvisit/discharge/index.vue
index 0ed1b45..2412250 100644
--- a/src/views/followvisit/discharge/index.vue
+++ b/src/views/followvisit/discharge/index.vue
@@ -92,10 +92,11 @@
             v-model="topqueryParams.scopetype"
             placeholder="榛樿鍏ㄩ儴"
             :options="sourcetype"
-            :props="{ expandTrigger: 'hover' }"
+            :props="{ expandTrigger: 'hover', multiple: true }"
             @change="handleChange"
             filterable
             clearable
+            collapse-tags
           ></el-cascader>
         </el-form-item>
 
@@ -169,7 +170,7 @@
                 plain
                 icon="el-icon-warning-outline"
                 size="medium"
-                @click="toleadExport(1)"
+                @click="toleadExport(1, 1)"
                 >鎵ц澶辫触</el-button
               >
             </div>
@@ -183,7 +184,7 @@
                 plain
                 icon="el-icon-warning"
                 size="medium"
-                @click="toleadExport(2)"
+                @click="toleadExport(2, 1)"
                 >缁撴灉寮傚父</el-button
               >
             </div>
@@ -373,6 +374,15 @@
           </template>
         </el-table-column>
         <el-table-column
+          label="褰撳墠鎵ц鏂瑰紡"
+          align="center"
+          key="currentPreachform"
+          prop="currentPreachform"
+          width="160"
+          :show-overflow-tooltip="true"
+        >
+        </el-table-column>
+        <el-table-column
           label="闅忚瀹屾垚鏃堕棿"
           sortable
           align="center"
@@ -395,16 +405,30 @@
           </template></el-table-column
         >
         <el-table-column
+          label="寮�濮嬮殢璁挎椂闂�"
+          width="146"
+          align="center"
+          key="longSendTime"
+          prop="longSendTime"
+          :render-header="Tooltipks"
+        >
+          <template slot-scope="scope">
+            <span>{{ formatTime(scope.row.longSendTime) }}</span>
+          </template></el-table-column
+        >
+        <el-table-column
           label="搴旈殢璁挎棩鏈�"
           width="146"
           align="center"
           key="visitTime"
           prop="visitTime"
+          :render-header="Tooltipy"
         >
           <template slot-scope="scope">
             <span>{{ formatTime(scope.row.visitTime) }}</span>
           </template></el-table-column
         >
+
         <!-- 鍘� -->
         <el-table-column
           label="涓绘不鍖荤敓"
@@ -412,6 +436,20 @@
           align="center"
           key="drname"
           prop="drname"
+        />
+        <el-table-column
+          label="璐d换鎶ゅ+"
+          width="120"
+          align="center"
+          key="nurseName"
+          prop="nurseName"
+        />
+        <el-table-column
+          label="缁忕鍖荤敓"
+          align="center"
+          key="managementDoctor"
+          prop="managementDoctor"
+          width="120"
         />
         <el-table-column
           v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
@@ -495,20 +533,6 @@
           prop="sfzh"
         />
 
-        <el-table-column
-          label="璐d换鎶ゅ+"
-          width="120"
-          align="center"
-          key="nurseName"
-          prop="nurseName"
-        />
-        <el-table-column
-          label="缁忕鍖荤敓"
-          align="center"
-          key="managementDoctor"
-          prop="managementDoctor"
-          width="120"
-        />
         <!-- <el-table-column
           label="鐥呭巻鍙�"
           align="center"
@@ -635,6 +659,15 @@
               @click="handleUpdate(scope.row)"
               ><span class="button-textxga"
                 ><i class="el-icon-edit"></i>鎮h�呰繃婊�</span
+              ></el-button
+            >
+            <el-button
+              size="medium"
+              type="text"
+              v-if="orgname == '鍗楀崕澶у闄勫睘绗竴鍖婚櫌'"
+              @click="handleTransferOpen(scope.row)"
+              ><span class="button-textxgc"
+                ><i class="el-icon-sort"></i>鍙樻洿绉�/鍖�</span
               ></el-button
             >
           </template>
@@ -896,81 +929,7 @@
         <el-button @click="cancel">鍙� 娑�</el-button>
       </div>
     </el-dialog>
-    <!-- 淇敼鍙戦�佹椂闂村璇濇 -->
-    <el-dialog
-      title="鍙戦�佹椂闂磋缃�"
-      :visible.sync="modificationVisible"
-      width="45%"
-    >
-      <div style="margin-bottom: 20px; color: red">
-        缁熶竴淇敼褰撳ぉ鏈彂閫佺殑浠诲姟鏃堕棿
-      </div>
 
-      <el-form
-        :model="ruleForm"
-        :rules="rules"
-        ref="ruleForm"
-        label-width="120px"
-        class="demo-ruleForm"
-      >
-        <el-form-item label="鍙戦�佹棩鏈�">
-          <el-date-picker
-            v-model="ruleForm.value1"
-            type="date"
-            placeholder="閫夋嫨鏃ユ湡"
-          >
-          </el-date-picker>
-        </el-form-item>
-
-        <el-form-item label="鏃堕棿娈�" prop="type">
-          <el-checkbox-group v-model="ruleForm.type">
-            <el-checkbox label="涓婂崍" name="type"></el-checkbox>
-            <el-checkbox label="涓嬪崍" name="type"></el-checkbox>
-            <el-checkbox label="鏅氫笂" name="type"></el-checkbox>
-          </el-checkbox-group>
-        </el-form-item>
-        <el-form-item label="涓婂崍鏃堕棿鍖洪棿" required>
-          <el-time-picker
-            is-range
-            v-model="ruleForm.value2"
-            range-separator="鑷�"
-            start-placeholder="寮�濮嬫椂闂�"
-            end-placeholder="缁撴潫鏃堕棿"
-            placeholder="閫夋嫨鏃堕棿鑼冨洿"
-          >
-          </el-time-picker>
-        </el-form-item>
-        <el-form-item label="涓嬪崍鏃堕棿鍖洪棿" required>
-          <el-time-picker
-            is-range
-            v-model="ruleForm.value3"
-            range-separator="鑷�"
-            start-placeholder="寮�濮嬫椂闂�"
-            end-placeholder="缁撴潫鏃堕棿"
-            placeholder="閫夋嫨鏃堕棿鑼冨洿"
-          >
-          </el-time-picker>
-        </el-form-item>
-        <el-form-item label="鏅氫笂鏃堕棿鍖洪棿" required>
-          <el-time-picker
-            is-range
-            v-model="ruleForm.value4"
-            range-separator="鑷�"
-            start-placeholder="寮�濮嬫椂闂�"
-            end-placeholder="缁撴潫鏃堕棿"
-            placeholder="閫夋嫨鏃堕棿鑼冨洿"
-          >
-          </el-time-picker>
-        </el-form-item>
-      </el-form>
-
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="modificationVisible = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="modificationVisible = false"
-          >纭� 瀹�</el-button
-        >
-      </span>
-    </el-dialog>
     <!-- 鍐嶆闅忚 -->
     <el-dialog title="鎮h�呭啀娆¢殢璁�" :visible.sync="dialogFormVisible">
       <el-form ref="zcform" :rules="zcrules" :model="zcform" label-width="80px">
@@ -1043,6 +1002,57 @@
         <el-button type="primary" @click="setupsubtask">纭鍒涘缓鏈嶅姟</el-button>
       </div>
     </el-dialog>
+
+    <!-- 鍙樻洿绉戝/鐥呭尯寮圭獥 -->
+    <el-dialog
+      title="鍙樻洿绉戝/鐥呭尯"
+      :visible.sync="transferDialogVisible"
+      width="480px"
+      :close-on-click-modal="false"
+    >
+      <el-form :model="transferForm" label-width="100px">
+        <el-form-item label="褰撳墠绉戝">
+          <span>{{ transferForm.currentDeptName || "-" }}</span>
+        </el-form-item>
+        <el-form-item label="褰撳墠鐥呭尯">
+          <span>{{ transferForm.currentWardName || "-" }}</span>
+        </el-form-item>
+        <el-form-item label="鐩爣绉戝">
+          <el-cascader
+            v-model="transferDeptValue"
+            :options="deptOptionsks"
+            :props="cascaderPropsa"
+            placeholder="璇烽�夋嫨鐩爣绉戝"
+            filterable
+            clearable
+            style="width: 100%"
+            @change="handleDeptCascaderChange"
+          />
+        </el-form-item>
+        <el-form-item label="鐩爣鐥呭尯">
+          <el-cascader
+            v-model="transferWardValue"
+            :options="deptOptionsbq"
+            :props="cascaderPropsa"
+            placeholder="璇烽�夋嫨鐩爣鐥呭尯"
+            filterable
+            clearable
+            style="width: 100%"
+            @change="handleWardCascaderChange"
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="transferDialogVisible = false">鍙� 娑�</el-button>
+        <el-button
+          type="primary"
+          :loading="transferLoading"
+          @click="handleTransferSubmit"
+        >
+          纭鍙樻洿
+        </el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -1053,6 +1063,7 @@
   updateUser,
   resetUserPwd,
   changeUserStatus,
+  deptTreeSelect,
 } from "@/api/system/user";
 import {
   getTaskservelist,
@@ -1060,6 +1071,7 @@
   addserviceSubtask,
   query360PatInfo,
   addsatisfaction,
+  transferDept,
   query360PatInfonh,
 } from "@/api/AiCentre/index";
 import { alterpatient, particularpatient } from "@/api/patient/homepage";
@@ -1094,8 +1106,7 @@
       title: "鏂板褰卞儚闅忚",
       // 鏄惁鏄剧ず淇敼銆佹坊鍔犲脊鍑哄眰
       addalteropen: false,
-      // 淇敼鍙戦�佹椂闂村璇濇
-      modificationVisible: false,
+
       // 閮ㄩ棬鍚嶇О
       deptName: undefined,
       // 榛樿瀵嗙爜
@@ -1182,6 +1193,7 @@
           label: "鍏ㄩ儴",
         },
       ],
+      lastScopeType: 3, // 鎮h�呰寖鍥翠笂娆¢�夋嫨鐨勪竴绾х被鍨嬶紙1=绉戝锛�2=鐥呭尯锛�3=鍏ㄩ儴锛�
       loading: false,
       cardlist: [
         {
@@ -1271,12 +1283,21 @@
         pageNum: 1,
         pageSize: 10,
         sendstateView: 1,
-        sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 1, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+        sort:
+          localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌"
+            ? 8
+            : localStorage.getItem("orgname") == "鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�"
+            ? 2
+            : 1, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
         serviceType: 2,
         sendstate: null,
         searchscope: 3,
         visitCount: 1,
         scopetype: [],
+        managementDoctor:
+          localStorage.getItem("orgname") == "缂欎簯鍘夸汉姘戝尰闄�"||localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌"
+            ? store.getters.nickName
+            : "",
         leaveldeptcodes: [],
         leavehospitaldistrictcodes: [],
       },
@@ -1374,6 +1395,25 @@
       leavehospitaldistrictcode: "",
       serviceState: [],
       checkboxlist: [],
+      // 鍙樻洿绉戝/鐥呭尯
+      transferDialogVisible: false,
+      transferForm: {
+        subId: null,
+        leavelDeptCode: "",
+        leavelDeptName: "",
+        leavehospitaldistrictcode: "",
+        leavehospitaldistrictname: "",
+      },
+      deptOptionsks: [],
+      deptOptionsbq: [],
+      transferDeptValue: [],
+      transferWardValue: [],
+      cascaderPropsa: {
+        value: "deptCode",
+        label: "label",
+        checkStrictly: true,
+      },
+      transferLoading: false,
       // 琛ㄥ崟鏍¢獙
       rules: {},
     };
@@ -1455,13 +1495,7 @@
     /** 鏌ヨ闅忚鏈嶅姟鍒楄〃 */
     async getList(refresh) {
       // 榛樿鍏ㄩ儴
-      if (this.topqueryParams.searchscope == 3) {
-        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
-          (obj) => obj.deptCode
-        );
-        this.topqueryParams.leavehospitaldistrictcodes =
-          store.getters.belongWards.map((obj) => obj.districtCode);
-      }
+      this.applyDeptWardScope();
       if (this.endOut == 0) {
         this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
           this.getEndOfDay()
@@ -1529,10 +1563,8 @@
           }
 
           if (item.preachform) {
-            if (item.endtime) {
-              item.preachformson = item.preachform;
-              idArray = item.preachform.split(",");
-            }
+            item.preachformson = item.preachform;
+            idArray = item.preachform.split(",");
 
             item.preachform = idArray.map((value) => {
               const item = this.checkboxlist.find(
@@ -1540,6 +1572,12 @@
               );
               return item ? item.label : null;
             });
+          }
+          if (item.currentPreachform) {
+            item.currentPreachform = this.checkboxlist.find(
+              (item) => item.value == item.currentPreachform
+            )?.value;
+            console.log(item.currentPreachform, "mi");
           }
         });
 
@@ -1576,6 +1614,32 @@
         this.getList(1);
       }
     },
+    Tooltipy(h, { column }) {
+      return h(
+        "el-tooltip",
+        {
+          props: {
+            content: "浠诲姟閰嶇疆澶氱琛ュ伩绫诲瀷鏃讹紝鏈�鏂版墽琛岀被鍨嬬殑搴旈殢璁挎椂闂�",
+            placement: "top",
+            effect: "dark",
+          },
+        },
+        [h("span", column.label)]
+      );
+    },
+    Tooltipks(h, { column }) {
+      return h(
+        "el-tooltip",
+        {
+          props: {
+            content: "浠诲姟瀛樺湪澶氱琛ュ伩绫诲瀷鏃剁殑棣栨搴旈殢璁挎椂闂�",
+            placement: "top",
+            effect: "dark",
+          },
+        },
+        [h("span", column.label)]
+      );
+    },
     // 鏃堕棿
     getEndOfDay() {
       const date = new Date(); // 鍒涘缓涓�涓〃绀哄綋鍓嶆椂闂寸殑Date瀵硅薄
@@ -1593,10 +1657,13 @@
       return `${year}-${month}-${day}`;
     },
     affiliation() {
+      this.resetQuerykj();
       this.topqueryParams.managementDoctorCode = store.getters.hisUserId;
       this.getList(1);
     },
     onthatday() {
+      this.resetQuerykj();
+
       this.topqueryParams.startSendDateTime = this.getCurrentDate();
       this.topqueryParams.endSendDateTime = this.getCurrentDate();
       this.getList(1);
@@ -1605,14 +1672,12 @@
       const now = new Date();
       return now.toISOString().slice(0, 10); // 鎴彇鍓�10涓瓧绗︼紝鍗� YYYY-MM-DD
     },
+
     buidegetTasklist(type) {
-      if (this.topqueryParams.searchscope == 3) {
-        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
-          (obj) => obj.deptCode
-        );
-        this.topqueryParams.leavehospitaldistrictcodes =
-          store.getters.belongWards.map((obj) => obj.districtCode);
+      if (type) {
+        this.resetQuerykj();
       }
+      this.applyDeptWardScope();
       // 鎺ュ彈寮傚父璺宠浆
       if (this.errtype) {
         this.topqueryParams.leavehospitaldistrictcodes.push(
@@ -1720,13 +1785,7 @@
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
     handleQuery(refresh) {
-      if (this.topqueryParams.searchscope == 3) {
-        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
-          (obj) => obj.deptCode
-        );
-        this.topqueryParams.leavehospitaldistrictcodes =
-          store.getters.belongWards.map((obj) => obj.districtCode);
-      }
+      this.applyDeptWardScope();
       this.topqueryParams.pageNum = 1;
       // 鍒ゆ柇鏄笉鏄伐浣滃彴蹇嵎鏌ヨ
       if (this.errtype != 2) {
@@ -1737,33 +1796,65 @@
       }
       this.getList(refresh);
     },
-    // 鎮h�呰寖鍥村鐞�
+    // 鎮h�呰寖鍥村鐞嗭細浠庡閫夌骇鑱� scopetype 瑙f瀽绉戝/鐥呭尯
+    applyDeptWardScope() {
+      const value = this.topqueryParams.scopetype || [];
+      const deptCodes = [];
+      const wardCodes = [];
+      let isAll = false;
+
+      value.forEach((item) => {
+        const type = item[0];
+        if (type == 3) {
+          isAll = true;
+        } else if (type == 1) {
+          deptCodes.push(item[item.length - 1]);
+        } else if (type == 2) {
+          wardCodes.push(item[item.length - 1]);
+        }
+      });
+
+      // 閫変簡鍏ㄩ儴 鎴� 鏈�夋嫨 鈫� 鐢ㄦ埛鍏ㄩ儴绉戝/鐥呭尯
+      if (isAll || (!deptCodes.length && !wardCodes.length)) {
+        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
+          (obj) => obj.deptCode
+        );
+        this.topqueryParams.leavehospitaldistrictcodes =
+          store.getters.belongWards.map((obj) => obj.districtCode);
+      } else {
+        this.topqueryParams.leaveldeptcodes = deptCodes;
+        this.topqueryParams.leavehospitaldistrictcodes = wardCodes;
+      }
+    },
+    // 鎮h�呰寖鍥村閫夊彉鏇达紙绉戝/鐥呭尯浜掓枼锛�
     handleChange(value) {
-      console.log("閫夋嫨鐨勬偅鑰呰寖鍥�:", value);
+      const types = (value || []).map((item) => item[0]);
+      const hasDept = types.includes(1);
+      const hasWard = types.includes(2);
 
-      // 娓呯┖涔嬪墠鐨勬煡璇㈠弬鏁�
-      this.topqueryParams.leavehospitaldistrictcodes = [];
-      this.topqueryParams.leaveldeptcodes = [];
-      this.topqueryParams.searchscope = null;
-
-      if (!value || value.length === 0) {
+      // 浜掓枼锛氱瀹ゅ拰鐥呭尯涓嶈兘鍚屾椂閫�
+      if (hasDept && hasWard) {
+        if (this.lastScopeType == 1) {
+          // 涓婃閫変簡绉戝锛岃繖娆℃柊澧炵梾鍖� 鈫� 淇濈暀鐥呭尯
+          this.topqueryParams.scopetype = value.filter(
+            (item) => item[0] === 2
+          );
+          this.lastScopeType = 2;
+          this.$message.warning("绉戝鍜岀梾鍖轰笉鑳藉悓鏃堕�夋嫨锛屽凡鍒囨崲涓虹梾鍖�");
+        } else {
+          // 涓婃閫変簡鐥呭尯锛岃繖娆℃柊澧炵瀹� 鈫� 淇濈暀绉戝
+          this.topqueryParams.scopetype = value.filter(
+            (item) => item[0] === 1
+          );
+          this.lastScopeType = 1;
+          this.$message.warning("绉戝鍜岀梾鍖轰笉鑳藉悓鏃堕�夋嫨锛屽凡鍒囨崲涓虹瀹�");
+        }
+        this.applyDeptWardScope();
         return;
       }
 
-      let type = value[0];
-      let code = value.slice(-1)[0];
-
-      if (type == 1) {
-        this.topqueryParams.leaveldeptcodes.push(code);
-        this.topqueryParams.leavehospitaldistrictcodes = [];
-        this.topqueryParams.searchscope = 1;
-      } else if (type == 2) {
-        this.topqueryParams.leavehospitaldistrictcodes.push(code);
-        this.topqueryParams.leaveldeptcodes = [];
-        this.topqueryParams.searchscope = 2;
-      } else {
-        this.topqueryParams.searchscope = 3;
-      }
+      this.lastScopeType = hasDept ? 1 : hasWard ? 2 : 3;
+      this.applyDeptWardScope();
     },
     // 鏈嶅姟鐘舵�佸彉鏇村鐞�
     handleServiceStatusChange(value) {
@@ -1801,6 +1892,7 @@
       this.dateRange = [];
       this.dateRangefs = [];
       this.serviceStatusValue = 10;
+      this.lastScopeType = 3;
       this.topqueryParams = {
         pageNum: 1,
         pageSize: 10,
@@ -1814,6 +1906,25 @@
         leavehospitaldistrictcodes: [],
       };
       this.handleQuery(1);
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuerykj() {
+      this.dateRange = [];
+      this.dateRangefs = [];
+      this.serviceStatusValue = null;
+      this.lastScopeType = 3;
+      this.topqueryParams = {
+        pageNum: 1,
+        pageSize: 10,
+        sendstateView: null,
+        sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
+        serviceType: 2,
+        searchscope: 3,
+        visitCount: 1,
+        scopetype: [],
+        leaveldeptcodes: [],
+        leavehospitaldistrictcodes: [],
+      };
     },
     handleSelectionChange(rows) {
       // 鉁� 濡傛灉鏄仮澶嶉�変腑鐘舵�佽Е鍙戠殑锛岀洿鎺ヨ繑鍥�
@@ -2036,10 +2147,7 @@
         })
         .catch(() => {});
     },
-    // 璁剧疆鍙戦�佹椂闂�
-    Sendtimesetting() {
-      this.modificationVisible = true;
-    },
+
     // 璺宠浆璇︽儏椤�
     Seedetails(row) {
       let type = "";
@@ -2105,8 +2213,10 @@
       this.Labelchange = true;
     },
     // 渚挎嵎鎸夐挳
-    toleadExport(too) {
-      console.log(too, "too");
+    toleadExport(too, type) {
+      if (type) {
+        this.resetQuerykj();
+      }
 
       if (too == 1) {
         this.topqueryParams.sendstate = 4;
@@ -2118,7 +2228,6 @@
         this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
           this.getEndOfDay()
         );
-        console.log(1111, this.topqueryParams.endSendDateTime);
 
         this.topqueryParams.excep = null;
         this.topqueryParams.sendstate = 2;
@@ -2274,6 +2383,98 @@
       const seconds = String(now.getSeconds()).padStart(2, "0");
 
       return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+    },
+
+    // ---------- 鍙樻洿绉戝/鐥呭尯 ----------
+    handleTransferOpen(row) {
+      if (!this.deptOptionsks.length) {
+        deptTreeSelect(1).then((res) => {
+          this.deptOptionsks = res.data || [];
+        });
+        deptTreeSelect(2).then((res) => {
+          this.deptOptionsbq = res.data || [];
+        });
+      }
+      this.transferForm = {
+        subId: row.id || row.subtaskid,
+        leavelDeptCode: "",
+        leavelDeptName: "",
+        leavehospitaldistrictcode: "",
+        leavehospitaldistrictname: "",
+        currentDeptName: row.deptname || row.deptName || "",
+        currentWardName:
+          row.leavehospitaldistrictname || row.leavehospitaldistrictName || "",
+      };
+      this.transferDeptValue = [];
+      this.transferWardValue = [];
+      this.transferDialogVisible = true;
+    },
+    handleDeptCascaderChange(val) {
+      if (val && val.length) {
+        this.transferForm.leavelDeptCode = val[val.length - 1];
+        // 浠庨�夐」鏍戜腑鏌ユ壘瀵瑰簲鍚嶇О
+        const node = this.findCascaderNode(this.deptOptionsks, this.transferForm.leavelDeptCode);
+        this.transferForm.leavelDeptName = node ? node.label : '';
+      } else {
+        this.transferForm.leavelDeptCode = '';
+        this.transferForm.leavelDeptName = '';
+      }
+    },
+    handleWardCascaderChange(val) {
+      if (val && val.length) {
+        this.transferForm.leavehospitaldistrictcode = val[val.length - 1];
+        const node = this.findCascaderNode(this.deptOptionsbq, this.transferForm.leavehospitaldistrictcode);
+        this.transferForm.leavehospitaldistrictname = node ? node.label : '';
+      } else {
+        this.transferForm.leavehospitaldistrictcode = '';
+        this.transferForm.leavehospitaldistrictname = '';
+      }
+    },
+    findCascaderNode(options, code) {
+      for (const item of options) {
+        if (item.deptCode === code || item.value === code) return item;
+        if (item.children) {
+          const found = this.findCascaderNode(item.children, code);
+          if (found) return found;
+        }
+      }
+      return null;
+    },
+    handleTransferSubmit() {
+      const hasDept = !!this.transferForm.leavelDeptCode;
+      const hasWard = !!this.transferForm.leavehospitaldistrictcode;
+      if (!hasDept && !hasWard) {
+        this.$modal.msgError("璇疯嚦灏戦�夋嫨鐩爣绉戝鎴栫洰鏍囩梾鍖�");
+        return;
+      }
+      console.log(this.transferForm);
+
+      // 缁勮鍙樻洿鎻愮ず鏂囨湰
+      const deptName = this.transferForm.leavelDeptName || "涓嶅彉";
+      const wardName = this.transferForm.leavehospitaldistrictname || "涓嶅彉";
+      const tip = `纭灏嗙瀹ゅ彉鏇翠负"${deptName}"銆佺梾鍖哄彉鏇翠负"${wardName}"锛焋;
+      this.$modal
+        .confirm(tip, "鍙樻洿纭")
+        .then(() => {
+          this.transferLoading = true;
+          transferDept(this.transferForm)
+            .then((res) => {
+              if (res.code === 200) {
+                this.$modal.msgSuccess("绉戝/鐥呭尯鍙樻洿鎴愬姛");
+                this.transferDialogVisible = false;
+                this.getList();
+              } else {
+                this.$modal.msgError(res.msg || "鍙樻洿澶辫触");
+              }
+            })
+            .catch(() => {
+              this.$modal.msgError("鍙樻洿澶辫触锛岃閲嶈瘯");
+            })
+            .finally(() => {
+              this.transferLoading = false;
+            });
+        })
+        .catch(() => {});
     },
   },
 };
@@ -2454,6 +2655,9 @@
 .button-textxga {
   color: #de7897;
 }
+.button-textxgc {
+  color: #9054e4;
+}
 .purple-button.is-disabled {
   background-color: #d8b4fe;
   border-color: #d8b4fe;

--
Gitblit v1.9.3