From 51461f369f0b0ad1da96346afee5637302f1525b Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 18 八月 2026 16:38:47 +0800
Subject: [PATCH] 提交

---
 src/views/followvisit/discharge/index.vue.bak                             | 2769 +++++++++++++++++++
 src/views/sfstatistics/percentage/components/SecondFollowUp.vue           |  225 -
 src/views/sfstatistics/percentage/index copy.vue                          | 1460 ++++++++--
 vue.config.js                                                             |    4 
 src/api/AiCentre/Qtemplate.js                                             |   15 
 src/views/patient/patient/outpatient.vue                                  |    2 
 src/views/sfstatistics/percentage/satisfaction.vue                        |    5 
 src/views/sfstatistics/percentage/components/FirstFollowUp.vue            |  315 -
 src/views/Satisfaction/diseaseStatistics/components/FirstFollowUp.vue     |  225 -
 随访通用8.14.zip                                                              |    0 
 src/views/patient/propaganda/QuestionnaireTask.vue                        |  170 
 src/api/followvisit/advice.js                                             |   45 
 src/views/SatisfactionRelay.vue                                           |    4 
 /dev/null                                                                 |    0 
 src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue |    2 
 src/views/followvisit/record/detailpage/index.vue                         |   18 
 src/views/sfstatistics/percentage/index.vue                               |    7 
 src/views/Satisfaction/diseaseStatistics/index.vue                        |    2 
 src/views/followvisit/record/detailpage/components/AdviceList.vue         |  315 ++
 src/views/patient/propaganda/particty.vue                                 |  154 
 随访通用8.17.zip                                                              |    0 
 src/views/followvisit/discharge/index copy.vue                            | 2472 +++++++++++++++++
 src/views/outsideChainwtnew.vue                                           |  129 
 23 files changed, 7,406 insertions(+), 932 deletions(-)

diff --git a/src/api/AiCentre/Qtemplate.js b/src/api/AiCentre/Qtemplate.js
index e36895b..7323579 100644
--- a/src/api/AiCentre/Qtemplate.js
+++ b/src/api/AiCentre/Qtemplate.js
@@ -195,6 +195,13 @@
     data: data,
   });
 }
+export function taskmedicallist(data) {
+  return request({
+    url: "/smartor/taskmedical/list",
+    method: "post",
+    data: data,
+  });
+}
 
 //浠诲姟缁勭瀹ょ梾鍖烘ā鏉垮叧鑱旀煡璇�
 export function rwztaskdepthospgetsonlist(data) {
@@ -225,6 +232,14 @@
     method: "get",
   });
 }
+// 鍒犻櫎浠诲姟鑽搧鍏宠仈
+export function taskmedicaldel(data) {
+  return request({
+    url: `/smartor/taskmedical/remove`,
+    method: "post",
+    data: data,
+  });
+}
 // 鍒犻櫎浠诲姟鎵嬫湳鍏宠仈
 export function taskoperhospgetsondel(id) {
   return request({
diff --git a/src/api/followvisit/advice.js b/src/api/followvisit/advice.js
new file mode 100644
index 0000000..d1d8f21
--- /dev/null
+++ b/src/api/followvisit/advice.js
@@ -0,0 +1,45 @@
+import request from '@/utils/request'
+
+// 鏌ヨ闅忚寤鸿鍒楄〃锛堝垎椤靛弬鏁拌蛋 URL query锛岃繃婊ゆ潯浠惰蛋 body锛�
+export function listAdvice(data, query) {
+  return request({
+    url: '/system/serviceSubtaskAdvice/list',
+    method: 'post',
+    params: query,
+    data: data
+  })
+}
+
+// 鏌ヨ闅忚寤鸿璇︽儏
+export function getAdvice(id) {
+  return request({
+    url: '/system/serviceSubtaskAdvice/' + id,
+    method: 'get'
+  })
+}
+
+// 鏂板闅忚寤鸿
+export function addAdvice(data) {
+  return request({
+    url: '/system/serviceSubtaskAdvice/add',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼闅忚寤鸿
+export function updateAdvice(data) {
+  return request({
+    url: '/system/serviceSubtaskAdvice/edit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 鎵归噺鍒犻櫎闅忚寤鸿锛堥�昏緫鍒犻櫎锛�
+export function delAdvice(ids) {
+  return request({
+    url: '/system/serviceSubtaskAdvice/remove/' + ids,
+    method: 'get'
+  })
+}
diff --git a/src/views/Satisfaction/diseaseStatistics/components/FirstFollowUp.vue b/src/views/Satisfaction/diseaseStatistics/components/FirstFollowUp.vue
index 978e85d..fa5340b 100644
--- a/src/views/Satisfaction/diseaseStatistics/components/FirstFollowUp.vue
+++ b/src/views/Satisfaction/diseaseStatistics/components/FirstFollowUp.vue
@@ -432,163 +432,19 @@
     },
 
     customSort(data) {
-      const order = [
-        "涓�",
-        "浜�",
-        "涓�",
-        "鍥�",
-        "浜�",
-        "鍏�",
-        "涓�",
-        "鍏�",
-        "涔�",
-        "鍗�",
-        "鍗佷竴",
-        "鍗佷簩",
-        "鍗佷笁",
-        "鍗佸洓",
-        "鍗佷簲",
-        "鍗佸叚",
-        "鍗佷竷",
-        "鍗佸叓",
-        "鍗佷節",
-        "浜屽崄",
-        "浜屽崄涓�",
-        "浜屽崄浜�",
-        "浜屽崄涓�",
-        "浜屽崄鍥�",
-        "浜屽崄浜�",
-        "浜屽崄鍏�",
-        "浜屽崄涓�",
-        "浜屽崄鍏�",
-        "浜屽崄涔�",
-        "涓夊崄",
-        "涓夊崄涓�",
-        "涓夊崄浜�",
-        "涓夊崄涓�",
-        "涓夊崄鍥�",
-        "涓夊崄浜�",
-        "涓夊崄鍏�",
-        "涓夊崄涓�",
-        "涓夊崄鍏�",
-        "涓夊崄涔�",
-        "鍥涘崄",
-        "鍥涘崄涓�",
-        "鍥涘崄浜�",
-        "鍥涘崄涓�",
-        "鍥涘崄鍥�",
-        "鍥涘崄浜�",
-      ];
-
-      return data.sort((a, b) => {
-        const getIndex = (name) => {
-          if (!name || typeof name !== "string") return -1;
-          const chineseMatch = name.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
-          if (chineseMatch && chineseMatch[1]) {
-            return order.indexOf(chineseMatch[1]);
-          }
-          const arabicMatch = name.match(/^(\d+)/);
-          if (arabicMatch && arabicMatch[1]) {
-            const num = parseInt(arabicMatch[1], 10);
-            if (num >= 1 && num <= 45) {
-              return num - 1;
-            }
-          }
-          return -1;
-        };
-
-        const indexA = getIndex(a.leavehospitaldistrictname);
-        const indexB = getIndex(b.leavehospitaldistrictname);
-
-        if (indexA === -1 && indexB === -1) {
-          return (a.leavehospitaldistrictname || "").localeCompare(
-            b.leavehospitaldistrictname || ""
-          );
-        }
-        if (indexA === -1) return 1;
-        if (indexB === -1) return -1;
-        return indexA - indexB;
-      });
+      return data.sort((a, b) =>
+        this.compareWardName(
+          a.leavehospitaldistrictname,
+          b.leavehospitaldistrictname
+        )
+      );
     },
 
     sortChineseNumber(aRow, bRow) {
-      const a = aRow.leavehospitaldistrictname;
-      const b = bRow.leavehospitaldistrictname;
-
-      const chineseNumMap = {
-        涓�: 1,
-        浜�: 2,
-        涓�: 3,
-        鍥�: 4,
-        浜�: 5,
-        鍏�: 6,
-        涓�: 7,
-        鍏�: 8,
-        涔�: 9,
-        鍗�: 10,
-        鍗佷竴: 11,
-        鍗佷簩: 12,
-        鍗佷笁: 13,
-        鍗佸洓: 14,
-        鍗佷簲: 15,
-        鍗佸叚: 16,
-        鍗佷竷: 17,
-        鍗佸叓: 18,
-        鍗佷節: 19,
-        浜屽崄: 20,
-        浜屽崄涓�: 21,
-        浜屽崄浜�: 22,
-        浜屽崄涓�: 23,
-        浜屽崄鍥�: 24,
-        浜屽崄浜�: 25,
-        浜屽崄鍏�: 26,
-        浜屽崄涓�: 27,
-        浜屽崄鍏�: 28,
-        浜屽崄涔�: 29,
-        涓夊崄: 30,
-        涓夊崄涓�: 31,
-        涓夊崄浜�: 32,
-        涓夊崄涓�: 33,
-        涓夊崄鍥�: 34,
-        涓夊崄浜�: 35,
-        涓夊崄鍏�: 36,
-        涓夊崄涓�: 37,
-        涓夊崄鍏�: 38,
-        涓夊崄涔�: 39,
-        鍥涘崄: 40,
-        鍥涘崄涓�: 41,
-        鍥涘崄浜�: 42,
-        鍥涘崄涓�: 43,
-        鍥涘崄鍥�: 44,
-        鍥涘崄浜�: 45,
-      };
-
-      const getNumberFromText = (text) => {
-        if (!text || typeof text !== "string") return -1;
-        const match = text.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
-        if (match && match[1]) {
-          const chineseNum = match[1];
-          return chineseNumMap[chineseNum] !== undefined
-            ? chineseNumMap[chineseNum]
-            : -1;
-        }
-        const arabicMatch = text.match(/^(\d+)/);
-        if (arabicMatch && arabicMatch[1]) {
-          const num = parseInt(arabicMatch[1], 10);
-          return num >= 1 && num <= 45 ? num : -1;
-        }
-        return -1;
-      };
-
-      const numA = getNumberFromText(a);
-      const numB = getNumberFromText(b);
-
-      if (numA === -1 && numB === -1) {
-        return (a || "").localeCompare(b || "");
-      }
-      if (numA === -1) return 1;
-      if (numB === -1) return -1;
-      return numA - numB;
+      return this.compareWardName(
+        aRow.leavehospitaldistrictname,
+        bRow.leavehospitaldistrictname
+      );
     },
 
     getRowKey(row) {
@@ -812,6 +668,67 @@
       return Number.isInteger(num) ? num.toString() : num.toFixed(0);
     },
 
+    // ===== 鐥呭尯鍚嶆帓搴忥紙鏀寔 1-B10 / 2-A2 绛� 鏁板瓧-瀛楁瘝鏁板瓧 鏍煎紡锛� =====
+    // 瑙f瀽鐥呭尯鍚嶏紝杩斿洖鎺掑簭閿� { group, letter, number }
+    parseWardKey(name) {
+      if (!name || typeof name !== "string") return null;
+      const trimmed = name.trim();
+
+      // 鏍煎紡1锛氭暟瀛�-瀛楁瘝鏁板瓧锛屽 1-B10銆�2-A2銆�1-A11
+      const dashMatch = trimmed.match(/^(\d+)-([A-Za-z]+)(\d+)/);
+      if (dashMatch) {
+        return {
+          group: parseInt(dashMatch[1], 10),
+          letter: dashMatch[2].toUpperCase(),
+          number: parseInt(dashMatch[3], 10),
+        };
+      }
+
+      // 鏍煎紡2锛氫腑鏂囨暟瀛楀紑澶达紝濡� 涓�鐥呭尯銆佸崄涓�鐥呭尯銆佷簩鍗佷竴鐥呭尯
+      const cnMatch = trimmed.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
+      if (cnMatch && cnMatch[1]) {
+        const num = this.chineseToNumber(cnMatch[1]);
+        if (num > 0) return { group: num, letter: "", number: 0 };
+      }
+
+      // 鏍煎紡3锛氶樋鎷変集鏁板瓧寮�澶达紝濡� 1鐥呭尯銆�12鐥呭尯
+      const numMatch = trimmed.match(/^(\d+)/);
+      if (numMatch && numMatch[1]) {
+        return { group: parseInt(numMatch[1], 10), letter: "", number: 0 };
+      }
+
+      return null;
+    },
+
+    // 涓枃鏁板瓧杞樋鎷変集鏁板瓧锛堟敮鎸� 涓� ~ 涔濆崄涔濓級
+    chineseToNumber(str) {
+      const digits = { 涓�: 1, 浜�: 2, 涓�: 3, 鍥�: 4, 浜�: 5, 鍏�: 6, 涓�: 7, 鍏�: 8, 涔�: 9 };
+      if (!str) return -1;
+      if (str === "鍗�") return 10;
+      if (str.startsWith("鍗�")) return 10 + (digits[str[1]] || 0);
+      if (str.includes("鍗�")) {
+        const parts = str.split("鍗�");
+        const tens = digits[parts[0]] || 0;
+        const ones = digits[parts[1]] || 0;
+        return tens * 10 + ones;
+      }
+      return digits[str] !== undefined ? digits[str] : -1;
+    },
+
+    // 鐥呭尯鍚嶆瘮杈冨櫒锛氭暟瀛楁 鈫� 瀛楁瘝娈� 鈫� 鏁板瓧娈�
+    compareWardName(nameA, nameB) {
+      const ka = this.parseWardKey(nameA);
+      const kb = this.parseWardKey(nameB);
+
+      if (!ka && !kb) return (nameA || "").localeCompare(nameB || "", "zh-CN");
+      if (!ka) return 1;
+      if (!kb) return -1;
+
+      if (ka.group !== kb.group) return ka.group - kb.group;
+      if (ka.letter !== kb.letter) return ka.letter.localeCompare(kb.letter);
+      return ka.number - kb.number;
+    },
+
     handleSelectionChange(selection) {
       this.ids = selection.map((item) => item.tagid);
     },
diff --git a/src/views/Satisfaction/diseaseStatistics/index.vue b/src/views/Satisfaction/diseaseStatistics/index.vue
index a4a1fc3..349e413 100644
--- a/src/views/Satisfaction/diseaseStatistics/index.vue
+++ b/src/views/Satisfaction/diseaseStatistics/index.vue
@@ -14,6 +14,7 @@
           <el-select
             v-model="queryParams.statisticaltype"
             placeholder="璇烽�夋嫨缁熻绫诲瀷"
+            @change="handleQuery"
           >
             <el-option
               v-for="item in Statisticallist"
@@ -407,6 +408,7 @@
     },
 
     handleQuery() {
+      if (!this.queryParams.dateRange) this.queryParams.dateRange = [];
       this.queryParams.startTime = this.parseTime(
         this.queryParams.dateRange[0]
       );
diff --git a/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue b/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue
index 3ff1958..59623b3 100644
--- a/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue
+++ b/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue
@@ -16,6 +16,8 @@
               v-model="queryParams.type"
               placeholder="璇烽�夋嫨缁熻绫诲瀷"
               clearable
+            @change="handleSearch"
+
               style="width: 100%"
             >
               <el-option label="闂嵎绫诲瀷" :value="2" />
diff --git a/src/views/SatisfactionRelay.vue b/src/views/SatisfactionRelay.vue
index 63a591b..5608863 100644
--- a/src/views/SatisfactionRelay.vue
+++ b/src/views/SatisfactionRelay.vue
@@ -41,8 +41,10 @@
       };
       scanGenerateSubtask(params).then(res => {
         return
-        if (res.code === 200 ) {
+        if (res.code == 200 ) {
+          console.log(res.msg);
           window.location.href = res.msg;
+
         } else {
           this.$message.error('鑾峰彇闂嵎閾炬帴澶辫触锛�' + (res.msg || '鏈煡閿欒'));
         }
diff --git a/src/views/followvisit/discharge/index copy.vue b/src/views/followvisit/discharge/index copy.vue
new file mode 100644
index 0000000..4e30b82
--- /dev/null
+++ b/src/views/followvisit/discharge/index copy.vue
@@ -0,0 +1,2472 @@
+<template>
+  <div class="app-container">
+    <statistics-cards
+      :cardlist="cardlist"
+      :ycvalue="ycvalue"
+      :jgvalue="jgvalue"
+      :show-warning-condition="orgname == '鐪佺珛鍚屽痉缈犺嫅闄㈠尯'"
+    />
+    <el-row :gutter="20">
+      <!--鐢ㄦ埛鏁版嵁-->
+      <el-form
+        :model="topqueryParams"
+        ref="queryForm"
+        size="small"
+        :inline="true"
+        v-show="showSearch"
+        label-width="98px"
+      >
+        <el-form-item label="浠诲姟鍚嶇О">
+          <el-input
+            v-model="topqueryParams.taskName"
+            placeholder="璇烽�夋嫨浠诲姟鍚嶇О"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="鍑洪櫌鏃堕棿">
+          <el-date-picker
+            v-model="dateRange"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="搴旈殢璁挎椂闂�">
+          <el-date-picker
+            v-model="dateRangefs"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          ></el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="鎮h�呭鍚�" prop="sendname">
+          <el-input
+            v-model="topqueryParams.sendname"
+            placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="璇婃柇鍚嶇О" prop="leavediagname">
+          <el-input
+            v-model="topqueryParams.leavediagname"
+            placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="闅忚浜哄憳" prop="updateBy">
+          <el-input
+            v-model="topqueryParams.updateBy"
+            placeholder="璇疯緭鍏ラ殢璁夸汉鍛�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="涓绘不鍖荤敓" prop="drname">
+          <el-input
+            v-model="topqueryParams.drname"
+            placeholder="璇疯緭鍏ヤ富娌诲尰鐢�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="缁忕鍖荤敓" prop="managementDoctor">
+          <el-input
+            v-model="topqueryParams.managementDoctor"
+            placeholder="璇疯緭鍏ヤ富娌诲尰鐢�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鏃ユ湡闄愬埗" prop="status">
+          <el-select v-model="endOut" placeholder="璇烽�夋嫨">
+            <el-option
+              v-for="item in endOuts"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鎮h�呰寖鍥�" prop="status">
+          <el-cascader
+            v-model="topqueryParams.scopetype"
+            placeholder="榛樿鍏ㄩ儴"
+            :options="sourcetype"
+            :props="{ expandTrigger: 'hover' }"
+            @change="handleChange"
+            filterable
+            clearable
+          ></el-cascader>
+        </el-form-item>
+
+        <el-form-item label="闅忚鐘舵��" prop="status">
+          <el-cascader
+            v-model="serviceStatusValue"
+            placeholder="璇烽�夋嫨"
+            :options="serviceStatusOptions"
+            :props="cascaderProps"
+            @change="handleServiceStatusChange"
+            clearable
+          ></el-cascader>
+        </el-form-item>
+
+        <el-form-item label="鎺掑簭鏂瑰紡" prop="status">
+          <el-select v-model="topqueryParams.sort" placeholder="璇烽�夋嫨">
+            <el-option
+              v-for="item in topicoptionssort"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item>
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            size="medium"
+            @click="handleQuery(1)"
+            >鎼滅储</el-button
+          >
+          <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
+            >閲嶇疆</el-button
+          >
+        </el-form-item>
+      </el-form>
+      <el-divider></el-divider>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="warning"
+                plain
+                icon="el-icon-upload2"
+                size="medium"
+                @click="handleExport"
+                >瀵煎嚭</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <!-- <el-col :span="1.5">
+          <el-button
+            type="primary"
+            icon="el-icon-plus"
+            size="medium"
+            @click="handleAdd"
+            >鏂板</el-button
+          >
+        </el-col> -->
+
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="warning"
+                plain
+                icon="el-icon-warning-outline"
+                size="medium"
+                @click="toleadExport(1, 1)"
+                >鎵ц澶辫触</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="danger"
+                plain
+                icon="el-icon-warning"
+                size="medium"
+                @click="toleadExport(2, 1)"
+                >缁撴灉寮傚父</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="success"
+                plain
+                size="medium"
+                @click="buidegetTasklist()"
+                >寰呭姙鏈嶅姟</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button type="primary" size="medium" @click="affiliation()"
+                >鏈汉鎵�灞炴湇鍔�</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button type="success" size="medium" @click="onthatday()"
+                >浠婃棩鏈嶅姟</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5" v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'">
+          <div class="documentf">
+            <div class="document">
+              <el-tooltip
+                content="璇峰厛閫変腑鏈嶅姟"
+                placement="top"
+                :disabled="!multiple"
+              >
+                <div class="tooltip-wrapper">
+                  <el-button
+                    type="primary"
+                    :disabled="multiple"
+                    class="purple-button"
+                    @click="scoreDialogVisible = true"
+                  >
+                    婊℃剰搴﹁皟鏌�
+                  </el-button>
+                </div>
+              </el-tooltip>
+            </div>
+          </div>
+        </el-col>
+      </el-row>
+      <el-table
+        v-loading="loading"
+        ref="userform"
+        :data="userList"
+        :row-class-name="tableRowClassName"
+        @selection-change="handleSelectionChange"
+        @select-all="handleSelectAll"
+      >
+        <!-- 鍗$墖鍒楄〃妯″紡 -->
+      </el-table>
+      <div v-loading="loading" class="card-list">
+        <div style="margin-bottom:12px" v-if="userList.length > 0">
+          <el-checkbox v-model="checkAll" @change="handleCheckAllChange">鍏ㄩ��</el-checkbox>
+          <span v-if="getSelectedCount() > 0" style="color:#909399;font-size:13px;margin-left:8px">
+            宸查�� <b style="color:#409eff">{{ getSelectedCount() }}</b> 鏉�
+            <el-button type="text" size="mini" @click="clearAllSelection" style="margin-left:4px">娓呴櫎</el-button>
+          </span>
+        </div>
+
+        <div v-for="row in userList" :key="row.id" class="follow-card" :class="rowClassName(row)">
+          <el-checkbox class="card-check" :value="isRowSelected(row)" @change="toggleRowSelection(row)" />
+
+          <!-- 鏍囬琛岋細浠诲姟鍚嶇О + 鏃堕棿绾� + 闅忚鐘舵�� + 鎿嶄綔 -->
+          <div class="card-head">
+            <span class="card-task-name">{{ row.taskName || '-' }}</span>
+            <span class="time-inline">
+              <em>鍑洪櫌</em>{{ formatTime(row.endtime) }}
+              <i>鈫�</i>
+              <em>搴旇</em>{{ formatTime(row.visitTime) }}
+              <i>鈫�</i>
+              <em>瀹屾垚</em>{{ parseTime(row.finishtime) }}
+            </span>
+            <span class="visit-status">
+              <el-tag v-if="row.sendstateView==1" type="primary" size="small" effect="dark">寰呴殢璁�</el-tag>
+              <el-tag v-else-if="row.sendstateView==2" type="success" size="small" effect="dark">宸插畬鎴�</el-tag>
+              <el-tag v-else-if="row.sendstateView==3" type="warning" size="small" effect="dark">鏃犻渶闅忚</el-tag>
+            </span>
+            <span class="card-actions">
+              <el-button size="mini" type="text" icon="el-icon-s-order" @click="Seedetails(row)">璇︽儏</el-button>
+              <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(row)">杩囨护</el-button>
+              <el-button size="mini" type="text" icon="el-icon-sort" @click="handleTransferOpen(row)">鍙樻洿绉�/鍖�</el-button>
+            </span>
+          </div>
+
+          <!-- 涓讳綋锛氫笁鏍� -->
+          <div class="card-body">
+            <div class="card-columns">
+              <!-- 鈶犳偅鑰呬俊鎭� -->
+              <div class="card-col">
+                <div class="block block-blue">
+                  <div class="block-title"><i class="el-icon-user-solid"></i>鎮h�呬俊鎭�</div>
+                  <div class="block-row">
+                    <span class="name-link" @click="gettoken360(row.sfzh,row.drcode,row.drname,row.patid)">{{ row.sendname||'-' }}</span>
+                    <span class="sub">{{ row.sex==1?'鐢�':row.sex==2?'濂�':'-' }}</span>
+                    <span class="sub">{{ row.phone||'-' }}</span>
+                    <span class="sub">鍑洪櫌{{ row.endDay?row.endDay+'澶�':'-' }}</span>
+                  </div>
+                  <div class="block-row sub-text" v-if="row.sfzh">韬唤璇�: {{ row.sfzh }}</div>
+                  <div class="block-row" v-if="row.leavediagname"><span class="diag-tag">璇婃柇</span>{{ row.leavediagname }}</div>
+                </div>
+              </div>
+              <!-- 鈶$瀹ょ梾鍖� 路 鍖绘姢 -->
+              <div class="card-col">
+                <div class="block block-green">
+                  <div class="block-title"><i class="el-icon-office-building"></i>绉戝鐥呭尯 路 鍖绘姢</div>
+                  <div class="block-row">绉戝: {{ row.deptname||'-' }} / 鐥呭尯: {{ row.leavehospitaldistrictname||'-' }}</div>
+                  <div class="block-row">
+                    涓绘不: {{ row.drname||'-' }}
+                    <span class="sub">缁忕: {{ row.managementDoctor||'-' }}</span>
+                    <span class="sub">鎶ゅ+: {{ row.nurseName||'-' }}</span>
+                  </div>
+                  <div class="block-row sub-text" v-if="orgname!='涓芥按甯備腑鍖婚櫌'">闅忚浜哄憳: {{ row.updateBy||'-' }}</div>
+                </div>
+              </div>
+              <!-- 鈶㈡墽琛岃鎯� -->
+              <div class="card-col">
+                <div class="block block-gray">
+                  <div class="block-title"><i class="el-icon-s-management"></i>鎵ц璇︽儏</div>
+                  <div class="meta-grid">
+                    <span v-if="row.sendstate||row.sendstate===0">
+                      <em>鐘舵��</em>
+                      <el-tag v-if="row.sendstate==1" size="mini">宸查鍙�</el-tag>
+                      <el-tag v-else-if="row.sendstate==2" type="primary" size="mini">寰呴殢璁�</el-tag>
+                      <el-tag v-else-if="row.sendstate==3" size="mini">宸插彂閫�</el-tag>
+                      <el-tag v-else-if="row.sendstate==4" type="info" size="mini">涓嶆墽琛�</el-tag>
+                      <el-tag v-else-if="row.sendstate==5" type="danger" size="mini">澶辫触</el-tag>
+                      <el-tag v-else-if="row.sendstate==6" type="success" size="mini">宸插畬鎴�</el-tag>
+                      <el-tag v-else-if="row.sendstate==7" type="danger" size="mini">瓒呮椂</el-tag>
+                    </span>
+                    <span v-if="row.currentPreachform||(row.preachform&&row.preachform.length)"><em>鎵ц</em>{{ row.currentPreachform||row.preachform.join('銆�') }}</span>
+                    <span v-if="row.templatename"><em>妯℃澘</em>{{ row.templatename }}</span>
+                    <span v-if="row.suggest"><em>鎰忚</em><dict-tag :options="dict.type.sys_suggest" :value="row.suggest"/></span>
+                    <span v-if="row.remark"><em>璇存槑</em>{{ row.remark }}</span>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div v-if="userList.length===0&&!loading" style="text-align:center;padding:80px 0;color:#999">
+          <i class="el-icon-document" style="font-size:48px;display:block;margin-bottom:16px"></i>鏆傛棤鏁版嵁
+        </div>
+      </div>
+      <el-table v-if="false"></el-table>
+      <!-- end 鍗$墖鍒楄〃 -->
+
+      <pagination
+        v-show="total > 0"
+        :total="total"
+        :page.sync="topqueryParams.pageNum"
+        :limit.sync="topqueryParams.pageSize"
+        @pagination="getList"
+      />
+    </el-row>
+    <!-- 婊℃剰搴﹀脊妗� -->
+    <el-dialog
+      title="闅忚婊℃剰搴﹁瘎鍒�"
+      :visible.sync="scoreDialogVisible"
+      width="80%"
+      :close-on-click-modal="false"
+    >
+      <el-table :data="selectedRows" border style="width: 100%">
+        <el-table-column
+          label="濮撳悕"
+          width="100"
+          align="center"
+          prop="sendname"
+        />
+        <el-table-column
+          label="浠诲姟鍚嶇О"
+          width="180"
+          align="center"
+          prop="taskName"
+        />
+        <!-- 鏂板璇勫垎鍒� -->
+        <el-table-column
+          label="鐪熷疄鎬�(20)"
+          align="center"
+          key="authenticity"
+          prop="authenticity"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.authenticity"
+              :min="0"
+              :max="20"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="涓�鍛ㄥ唴瀹屾垚(20)"
+          align="center"
+          key="weekFinish"
+          prop="weekFinish"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.weekFinish"
+              :min="0"
+              :max="20"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="瑙勮寖鎬�(10)"
+          align="center"
+          key="standard"
+          prop="standard"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.standard"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鍙婃椂鎬�(10)"
+          align="center"
+          key="timeliness"
+          prop="timeliness"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.timeliness"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="瀹f暀鎯呭喌(10)"
+          align="center"
+          key="library"
+          prop="library"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.library"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鐜婊℃剰搴�(10)"
+          align="center"
+          key="environment"
+          prop="environment"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.environment"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鍖荤敓婊℃剰搴�(10)"
+          align="center"
+          key="doctorSatisfaction"
+          prop="doctorSatisfaction"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.doctorSatisfaction"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鎶ゅ+婊℃剰搴�(10)"
+          align="center"
+          key="nurseSatisfaction"
+          prop="nurseSatisfaction"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.nurseSatisfaction"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鎬诲垎"
+          align="center"
+          key="total"
+          prop="total"
+          fixed="right"
+        >
+          <template slot-scope="scope">
+            <span>{{ calculateTotal(scope.row) }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="scoreDialogVisible = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="saveScores">淇濆瓨</el-button>
+      </div>
+    </el-dialog>
+    <!-- 娣诲姞鎴栦慨鏀瑰奖鍍忛殢璁垮璇濇 -->
+    <el-dialog
+      :title="amendtag ? '淇敼鎮h�呬俊鎭�' : '鏂板鎮h��'"
+      :visible.sync="Labelchange"
+      width="900px"
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="濮撳悕" width="100" prop="name">
+              <el-input
+                v-model="form.name"
+                placeholder="璇疯緭鍏ュ鍚�"
+                maxlength="30"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鎬у埆" width="100" prop="sex">
+              <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+                <el-option
+                  v-for="dict in sextype"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="骞撮緞" prop="age">
+              <el-input
+                v-model="form.age"
+                placeholder="璇疯緭鍏ュ勾榫�"
+                maxlength="30"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="杩囨护鍖荤敓" width="100" prop="filterDrname">
+              <el-input
+                v-model="form.filterDrname"
+                placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
+                maxlength="30"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="杩囨护鍘熷洜">
+              <el-input
+                v-model="form.notrequiredreason"
+                type="textarea"
+                placeholder="璇疯緭鍏ヨ繃婊ゅ師鍥�"
+              ></el-input>
+              <!-- 鎻愰啋鏂囧瓧 -->
+              <div class="filter-warning">
+                <i class="el-icon-warning-outline"></i>
+                璇ュ姛鑳介�傜敤浜庢浜°�佸垪鍏ュ尰闄㈤粦鍚嶅崟銆佹槑纭嫆缁濋殢璁跨瓑鎮h�呯殑杩囨护鎺掗櫎锛岃繃婊ゅ悗璇ユ偅鑰呮墍鏈夎繘琛屼腑浠诲姟鍏ㄩ儴鍋滄涓旀棤娉曞尮閰嶆柊鐨勯殢璁夸换鍔★紝璇疯皑鎱庢搷浣滐紒
+              </div>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 鍐嶆闅忚 -->
+    <el-dialog title="鎮h�呭啀娆¢殢璁�" :visible.sync="dialogFormVisible">
+      <el-form ref="zcform" :rules="zcrules" :model="zcform" label-width="80px">
+        <el-form-item label="浠诲姟鍚嶇О">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.taskName"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鎮h�呭悕绉�">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.sendname"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="骞撮緞">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.age"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="绉戝">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.deptname"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鐥呭尯">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.leavehospitaldistrictname"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="闅忚鏂瑰紡" prop="resource">
+          <el-radio-group v-model="zcform.resource">
+            <el-radio label="1">鏈梾鍖洪殢璁�</el-radio>
+            <el-radio label="2">闅忚涓績闅忚</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <!-- <el-form-item label="鍗冲埢鍙戦��">
+          <el-switch v-model="zcform.delivery"></el-switch>
+        </el-form-item> -->
+        <el-form-item label="鍑洪櫌鏃堕棿">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.endtime"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="闅忚瀹屾垚鏃堕棿" prop="date1">
+          <el-date-picker
+            type="date"
+            placeholder="閫夋嫨鏃ユ湡"
+            v-model="zcform.date1"
+            style="width: 100%"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="闅忚璁板綍">
+          <el-input type="textarea" v-model="zcform.remark"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
+        <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>
+
+<script>
+import {
+  delUser,
+  addUser,
+  updateUser,
+  resetUserPwd,
+  changeUserStatus,
+  deptTreeSelect,
+} from "@/api/system/user";
+import {
+  getTaskservelist,
+  buidegetTasklist,
+  addserviceSubtask,
+  query360PatInfo,
+  addsatisfaction,
+  transferDept,
+  query360PatInfonh,
+} from "@/api/AiCentre/index";
+import { alterpatient, particularpatient } from "@/api/patient/homepage";
+import Treeselect from "@riophae/vue-treeselect";
+import StatisticsCards from "@/components/StatisticsCards";
+
+import store from "@/store";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "Discharge",
+  dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"],
+  components: { Treeselect, StatisticsCards },
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      dialogFormVisible: false,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+      userList: null,
+      // 寮瑰嚭灞傛爣棰�
+      title: "鏂板褰卞儚闅忚",
+      // 鏄惁鏄剧ず淇敼銆佹坊鍔犲脊鍑哄眰
+      addalteropen: false,
+
+      // 閮ㄩ棬鍚嶇О
+      deptName: undefined,
+      // 榛樿瀵嗙爜
+      initPassword: undefined,
+      // 鏃ユ湡鑼冨洿
+      dateRange: [],
+      dateRangefs: [],
+      // 宀椾綅閫夐」
+      postOptions: [],
+      ruleForm: {
+        type: [],
+      },
+      zcform: {},
+      dynamicTags: ["閫夐」涓�", "閫夐」浜�", "閫夐」涓�"], //閫夐」
+      inputVisible: false,
+      Labelchange: false,
+      ycvalue: 0,
+      jgvalue: "",
+      yfsvalue: "",
+      inputValue: "",
+      preachform: "",
+      previewVisible: false, //褰卞儚闅忚棰勮寮规
+      isRestoring: false,
+      radio: "",
+      radios: [],
+      previewtype: 2, //棰勮褰卞儚闅忚绫诲瀷
+      total: 0, // 鎬绘潯鏁�
+      // 婊℃剰搴﹁皟鏌ユ暟鎹�
+      scoreDialogVisible: false,
+      selectedRows: [],
+      selectedRowMap: new Map(), // key: row.id, value: row 鏁版嵁
+
+      // 绾ц仈閫夋嫨鍣ㄧ粦瀹氬��
+      serviceStatusValue: 10,
+      cascaderProps: {
+        expandTrigger: "hover", // 鎮仠灞曞紑
+        checkStrictly: true, // 鉁� 鍏抽敭锛氬厑璁搁�変腑浠绘剰涓�绾�
+        emitPath: false, // 鉁� 鍙繑鍥為�変腑鐨勫�硷紝涓嶈繑鍥炶矾寰勬暟缁�
+      },
+      // 鏈嶅姟鐘舵�侀�夐」锛堜竴绾у拰浜岀骇鍊间笉鍐茬獊锛�
+      serviceStatusOptions: [
+        {
+          value: null,
+          label: "鍏ㄩ儴",
+        },
+        {
+          value: 10, // 涓�绾э細寰呴殢璁�
+          label: "寰呴殢璁�",
+          children: [
+            { value: 1, label: "琚鍙�" },
+            { value: 2, label: "寰呭彂閫�" },
+            { value: 3, label: "宸插彂閫�" },
+            { value: 5, label: "鍙戦�佸け璐�" },
+            { value: 7, label: "瓒呮椂" },
+          ],
+        },
+        {
+          value: 20, // 涓�绾э細宸插畬鎴�
+          label: "宸插畬鎴�",
+          children: [{ value: 6, label: "宸插畬鎴�" }],
+        },
+        {
+          value: 30, // 涓�绾э細鏃犻渶闅忚
+          label: "鏃犻渶闅忚",
+          children: [{ value: 4, label: "涓嶆墽琛�" }],
+        },
+      ],
+      value: [],
+      list: [],
+
+      sourcetype: [
+        {
+          value: 1,
+          label: "绉戝",
+          children: [],
+        },
+        {
+          value: 2,
+          label: "鐥呭尯",
+          children: [],
+        },
+        {
+          value: 3,
+          label: "鍏ㄩ儴",
+        },
+      ],
+      loading: false,
+      cardlist: [
+        {
+          name: "鎮h�呮湇鍔℃�婚噺",
+          value: 0,
+        },
+
+        {
+          name: "鏃犻渶闅忚",
+          value: 0,
+        },
+        {
+          name: "闇�闅忚",
+          value: 0,
+        },
+        {
+          name: "寰呴殢璁�",
+          value: 0,
+        },
+        {
+          name: "宸插畬鎴�",
+          value: 0,
+        },
+      ],
+      zcrules: {
+        date1: [
+          { required: true, message: "璇烽�夋嫨闅忚鏂瑰紡", trigger: "change" },
+        ],
+        resource: [
+          { required: true, message: "璇烽�夋嫨闅忚鏃堕棿", trigger: "blur" },
+        ],
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {
+        phonenumber: "",
+        totagid: "",
+        types: "",
+        nickName: "",
+        qystatus: "",
+        btstatus: "",
+      },
+      // endOut: 1,
+      endOut:
+        localStorage.getItem("orgname") == "鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�" ? 0 : 1, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+      endOuts: [
+        {
+          value: 0,
+          label: "鎴鑷冲綋鏃ユ湇鍔�",
+        },
+        {
+          value: 1,
+          label: "鍏ㄩ儴鏈嶅姟",
+        },
+      ],
+      topicoptionssort: [
+        {
+          value: 0,
+          label: "鍑洪櫌鏃堕棿(姝e簭)",
+        },
+        {
+          value: 1,
+          label: "鍑洪櫌鏃堕棿(鍊掑簭)",
+        },
+        {
+          value: 2,
+          label: "鍙戦�佹椂闂�(姝e簭)",
+        },
+        {
+          value: 3,
+          label: "鍙戦�佹椂闂�(鍊掑簭)",
+        },
+        {
+          value: 7,
+          label: "搴旈殢璁挎棩鏈�(姝e簭)",
+        },
+        {
+          value: 8,
+          label: "搴旈殢璁挎棩鏈�(鍊掑簭)",
+        },
+        {
+          value: 9,
+          label: "鎸夌収鎮h�呮帓搴�",
+        },
+      ],
+      // 鏌ヨ鍙傛暟
+      topqueryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sendstateView: 1,
+        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") == "缂欎簯鍘夸汉姘戝尰闄�"
+            ? store.getters.nickName
+            : "",
+        leaveldeptcodes: [],
+        leavehospitaldistrictcodes: [],
+      },
+      orgname: "",
+      propss: { multiple: true },
+      options: [],
+
+      topicoptions: [
+        {
+          value: null,
+          label: "鍏ㄩ儴",
+        },
+        {
+          value: 1,
+          label: "寰呴殢璁�",
+        },
+        {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
+          value: 3,
+          label: "鏈畬鎴�",
+        },
+        {
+          value: 4,
+          label: "宸插畬鎴�",
+        },
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
+        },
+      ],
+
+      sextype: [
+        {
+          value: 1,
+          label: "鐢�",
+        },
+        {
+          value: 2,
+          label: "濂�",
+        },
+      ],
+      topicoptionsyj: [
+        {
+          value: 1,
+          label: "寮傚父",
+        },
+        {
+          value: 2,
+          label: "璀﹀憡",
+        },
+        {
+          value: 0,
+          label: "姝e父",
+        },
+      ],
+      url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo",
+      postData: {
+        XiaoXiTou: {
+          FaSongFCSJC: "ZJHES",
+          FaSongJGID: localStorage.getItem("orgid"),
+          FaSongJGMC: localStorage.getItem("orgname"),
+          FaSongSJ: "2025-01-09聽17:29:36",
+          FaSongXTJC: "SUIFANGXT",
+          FaSongXTMC: "闅忚绯荤粺",
+          XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171",
+          XiaoXiLX: "SC_LC_360STCX",
+          XiaoXiMC: "360聽瑙嗗浘鏌ヨ",
+          ZuHuID: localStorage.getItem("ZuHuID"),
+          ZuHuMC: localStorage.getItem("orgname"),
+        },
+        YeWuXX: {
+          BingRenXX: {
+            ZhengJianHM: "",
+            ZhengJianLXDM: "01",
+            ZhengJianLXMC: "灞呮皯韬唤璇�",
+            ZuZhiJGID: localStorage.getItem("orgid"),
+            ZuZhiJGMC: localStorage.getItem("orgname"),
+          },
+          YongHuXX: {
+            XiTongID: "SUIFANGXT",
+            XiTongMC: "闅忚绯荤粺",
+            YongHuID: localStorage.getItem("YongHuID"),
+            YongHuXM: localStorage.getItem("YongHuXM"),
+            ZuZhiJGID: localStorage.getItem("orgid"),
+            ZuZhiJGMC: localStorage.getItem("orgname"),
+            idp: "lyra",
+          },
+        },
+      },
+      amendtag: false,
+      errtype: "",
+      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: {},
+    };
+  },
+  watch: {
+    // 鐩戝惉璺敱鍙傛暟鍙樺寲
+    "$route.query": {
+      handler(newQuery, oldQuery) {
+        if (newQuery?.errtype !== oldQuery?.errtype) {
+          console.log(22);
+          this.loadData();
+        }
+      },
+      immediate: true,
+    },
+  },
+  computed: {
+    checkAll: {
+      get() {
+        return this.userList.length > 0 && this.selectedRows.length === this.userList.length;
+      },
+      set(val) {
+        if (val) {
+          this.selectedRows = [...this.userList];
+          this.userList.forEach(r => this.selectedRowMap.set(r.id, r));
+        } else {
+          this.selectedRows = [];
+          this.selectedRowMap.clear();
+        }
+      },
+    },
+    isRowSelected() {
+      return (row) => this.selectedRows.some((r) => r.id === row.id);
+    },
+    rowClassName() {
+      return (row) => this.tableRowClassName({ row });
+    },
+  },
+  created() {
+    this.serviceState = store.getters.serviceState;
+    this.checkboxlist = store.getters.checkboxlist;
+    this.orgname = localStorage.getItem("orgname");
+    this.errtype = this.$route.query.errtype;
+
+    this.leavehospitaldistrictcode =
+      this.$route.query.leavehospitaldistrictcode;
+    this.sourcetype[0].children = store.getters.belongDepts.map((dept) => {
+      return {
+        label: dept.deptName,
+        value: dept.deptCode,
+      };
+    });
+    this.sourcetype[1].children = store.getters.belongWards.map((dept) => {
+      return {
+        label: dept.districtName,
+        value: dept.districtCode,
+      };
+    });
+    if (this.errtype == 1) {
+      this.toleadExport(2);
+    } else if (this.errtype == 2) {
+      // 寰呴殢璁�
+      this.toleadExport(3);
+    } else if (this.errtype == 3) {
+      // 澶辫触
+      this.toleadExport(4);
+    } else if (this.errtype == 4) {
+      // 寮傚父
+      this.toleadExport(2);
+    } else if (this.errtype == 5) {
+      // 鍏ㄩ儴
+      this.toleadExport(5);
+    } else {
+      this.getList(1);
+    }
+    this.getConfigKey("sys.user.initPassword").then((response) => {
+      this.initPassword = response.msg;
+    });
+  },
+  activated() {
+    this.errtype = this.$route.query.errtype;
+    if (this.errtype == 1) {
+      this.toleadExport(2);
+    } else if (this.errtype == 2) {
+      // 寰呴殢璁�
+      this.toleadExport(3);
+    } else if (this.errtype == 3) {
+      // 澶辫触
+      this.toleadExport(4);
+    } else if (this.errtype == 4) {
+      // 寮傚父
+      this.toleadExport(2);
+    } else if (this.errtype == 5) {
+      // 鍏ㄩ儴
+      this.toleadExport(5);
+    } else {
+      this.getList(1);
+    }
+  },
+  methods: {
+    /** 鏌ヨ闅忚鏈嶅姟鍒楄〃 */
+    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);
+      }
+      if (this.endOut == 0) {
+        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
+          this.getEndOfDay()
+        );
+      }
+
+      // 鎺ュ彈寮傚父璺宠浆
+      if (this.errtype) {
+        this.topqueryParams.leavehospitaldistrictcodes.push(
+          this.leavehospitaldistrictcode
+        );
+      }
+
+      this.loading = true;
+
+      if (
+        this.topqueryParams.leavehospitaldistrictcodes[0] &&
+        this.topqueryParams.leaveldeptcodes[0]
+      ) {
+        this.topqueryParams.deptOrDistrict = 2;
+      } else {
+        this.topqueryParams.deptOrDistrict = 1;
+      }
+
+      if (!this.followupAuthority()) {
+        this.$message.warning("鏈厤缃瀹�/鐥呭尯鐩稿叧鏉冮檺涓嶅彲鏌ヨ");
+        this.loading = false;
+        return Promise.reject(new Error("鏃犳潈闄愭煡璇�"));
+      }
+
+      try {
+        const response = await getTaskservelist(this.topqueryParams);
+
+        // 鉁� 绗竴姝ワ細鍏堥攣瀹氭仮澶嶇姸鎬�
+        this.isRestoring = true;
+
+        // 鉁� 绗簩姝ワ細鍐嶆洿鏂版暟鎹紙杩欎細瑙﹀彂 selection-change锛屼絾琚攣浣忎簡锛�
+        this.userList = response.rows[0].serviceSubtaskList;
+        this.total = response.total;
+
+        // 鉁� 绗笁姝ワ細鎭㈠閫変腑鐘舵��
+        // this.restoreSelection();
+        this.$nextTick(() => {
+          this.restoreSelection();
+        });
+
+        // 鉁� 绗洓姝ワ細澶勭悊鍏朵粬鏁版嵁
+        if (refresh) {
+          this.cardlist[0].value =
+            Number(response.rows[0].wxsf) + Number(response.rows[0].xsf) || 0;
+          this.cardlist[1].value = response.rows[0].wxsf || 0;
+          this.ycvalue = Number(response.rows[0].yc) || 0;
+          this.jgvalue = response.rows[0].jg;
+          this.cardlist[2].value = response.rows[0].xsf || 0;
+          this.cardlist[3].value = response.rows[0].dsf || 0;
+          this.cardlist[4].value = response.rows[0].ywc || 0;
+          this.yfsvalue = response.rows[0].yfs;
+        }
+
+        // 鉁� 绗簲姝ワ細澶勭悊 preachform 绛夊叾浠栨暟鎹�
+        this.userList.forEach((item) => {
+          let idArray = null;
+          if (item.endtime) {
+            item.endDay = this.daysBetween(item.endtime);
+          }
+
+          if (item.preachform) {
+            item.preachformson = item.preachform;
+            idArray = item.preachform.split(",");
+
+            item.preachform = idArray.map((value) => {
+              const item = this.checkboxlist.find(
+                (item) => item.value == value
+              );
+              return item ? item.label : null;
+            });
+          }
+          if (item.currentPreachform) {
+            item.currentPreachform = this.checkboxlist.find(
+              (item) => item.value == item.currentPreachform
+            )?.value;
+            console.log(item.currentPreachform, "mi");
+          }
+        });
+
+        this.total = response.total;
+        this.loading = false;
+
+        // 鉁� 绗叚姝ワ細瑙i攣
+        this.$nextTick(() => {
+          this.isRestoring = false;
+        });
+      } catch (error) {
+        console.error("鑾峰彇鍒楄〃澶辫触:", error);
+        this.loading = false;
+        this.isRestoring = false;
+      }
+    },
+    loadData() {
+      this.errtype = this.$route.query.errtype;
+      if (this.errtype == 1) {
+        this.toleadExport(2);
+      } else if (this.errtype == 2) {
+        // 寰呴殢璁�
+        this.toleadExport(3);
+      } else if (this.errtype == 3) {
+        // 澶辫触
+        this.toleadExport(4);
+      } else if (this.errtype == 4) {
+        // 寮傚父
+        this.toleadExport(2);
+      } else if (this.errtype == 5) {
+        // 鍏ㄩ儴
+        this.toleadExport(5);
+      } else {
+        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瀵硅薄
+      date.setHours(23, 59, 59, 0); // 灏嗘椂闂磋缃负23:59:59.000
+      return date;
+    },
+    formatDateToYYYYMMDDHHMMSS(date) {
+      const year = date.getFullYear();
+      const month = String(date.getMonth() + 1).padStart(2, "0"); // 鏈堜唤琛ラ浂
+      const day = String(date.getDate()).padStart(2, "0"); // 鏃ユ湡琛ラ浂
+      const hours = String(date.getHours()).padStart(2, "0");
+      const minutes = String(date.getMinutes()).padStart(2, "0");
+      const seconds = String(date.getSeconds()).padStart(2, "0");
+
+      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);
+    },
+    getCurrentDate() {
+      const now = new Date();
+      return now.toISOString().slice(0, 10); // 鎴彇鍓�10涓瓧绗︼紝鍗� YYYY-MM-DD
+    },
+
+    buidegetTasklist(type) {
+      if (type) {
+        this.resetQuerykj();
+      }
+      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 (this.errtype) {
+        this.topqueryParams.leavehospitaldistrictcodes.push(
+          this.leavehospitaldistrictcode
+        );
+      }
+      let obj = {
+        pageNum: 1,
+        pageSize: 10,
+        leavehospitaldistrictcodes:
+          this.topqueryParams.leavehospitaldistrictcodes,
+        sendstates: [2, 3],
+        leaveldeptcodes: this.topqueryParams.leaveldeptcodes,
+      };
+      buidegetTasklist(obj).then((response) => {
+        this.userList = response.rows[0].serviceSubtaskList;
+        this.total = response.total;
+        this.cardlist[0].value =
+          Number(response.rows[0].wxsf) + Number(response.rows[0].xsf) || 0;
+        this.cardlist[1].value = response.rows[0].wzx;
+        this.cardlist[2].value = response.rows[0].ysf;
+        this.ycvalue = Number(response.rows[0].yc) || 0;
+        this.jgvalue = response.rows[0].jg;
+        this.cardlist[3].value = response.rows[0].fssb;
+        this.cardlist[4].value = response.rows[0].dsf;
+        // this.cardlist[5].value = response.rows[0].yfs2;
+        this.yfsvalue = response.rows[0].yfs;
+        this.loading = false;
+        this.userList.forEach((item) => {
+          let idArray = null;
+          if (item.endtime) {
+            item.endDay = this.daysBetween(item.endtime);
+          }
+
+          if (item.preachform) {
+            if (item.endtime) {
+              item.preachformson = item.preachform;
+              idArray = item.preachform.split(",");
+            }
+
+            item.preachform = idArray.map((value) => {
+              // 鏌ユ壘id瀵瑰簲鐨勫璞�
+              const item = this.checkboxlist.find(
+                (item) => item.value == value
+              );
+              // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖null
+              return item ? item.label : null;
+            });
+          }
+        });
+        this.total = response.total;
+      });
+    },
+    // 鏌ョ湅闂ㄨ瘖闅忚璇︽儏
+    Referencequestion(row) {
+      this.previewVisible = true;
+    },
+    // 娣诲姞寮规鎼滅储
+    remoteMethod(query) {
+      if (query !== "") {
+        this.loading = true;
+        setTimeout(() => {
+          this.loading = false;
+          this.options = this.list.filter((item) => {
+            return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1;
+          });
+        }, 200);
+      } else {
+        this.options = [];
+      }
+    },
+    // 褰卞儚闅忚鐘舵�佷慨鏀�
+    handleStatusChange(row) {
+      let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+      this.$modal
+        .confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵')
+        .then(function () {
+          return changeUserStatus(row.userId, row.status);
+        })
+        .then(() => {
+          this.$modal.msgSuccess(text + "鎴愬姛");
+        })
+        .catch(function () {
+          row.status = row.status === "0" ? "1" : "0";
+        });
+    },
+
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        userId: undefined,
+        deptId: undefined,
+        userName: undefined,
+        nickName: undefined,
+        password: undefined,
+        phonenumber: undefined,
+        email: undefined,
+        sex: undefined,
+        status: "0",
+        remark: undefined,
+        postIds: [],
+        roleIds: [],
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    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.topqueryParams.pageNum = 1;
+      // 鍒ゆ柇鏄笉鏄伐浣滃彴蹇嵎鏌ヨ
+      if (this.errtype != 2) {
+        this.topqueryParams.startOutHospTime = this.dateRange[0];
+        this.topqueryParams.endOutHospTime = this.dateRange[1];
+        this.topqueryParams.startSendDateTime = this.dateRangefs[0];
+        this.topqueryParams.endSendDateTime = this.dateRangefs[1];
+      }
+      this.getList(refresh);
+    },
+    // 鎮h�呰寖鍥村鐞�
+    handleChange(value) {
+      console.log("閫夋嫨鐨勬偅鑰呰寖鍥�:", value);
+
+      // 娓呯┖涔嬪墠鐨勬煡璇㈠弬鏁�
+      this.topqueryParams.leavehospitaldistrictcodes = [];
+      this.topqueryParams.leaveldeptcodes = [];
+      this.topqueryParams.searchscope = null;
+
+      if (!value || value.length === 0) {
+        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;
+      }
+    },
+    // 鏈嶅姟鐘舵�佸彉鏇村鐞�
+    handleServiceStatusChange(value) {
+      // 娓呯┖閫夋嫨
+      if (value === null || value === undefined || value === "") {
+        this.topqueryParams.sendstateView = null;
+        this.topqueryParams.sendstate = null;
+        return;
+      }
+      console.log(value, "value");
+
+      // 涓�绾ц妭鐐圭殑鍊硷紙澶т簬绛変簬10锛�
+      if (value >= 10) {
+        // 閫変腑浜嗕竴绾�
+        switch (value) {
+          case 10:
+            this.topqueryParams.sendstateView = 1; // 寰呴殢璁�
+            break;
+          case 20:
+            this.topqueryParams.sendstateView = 2; // 宸插畬鎴�
+            break;
+          case 30:
+            this.topqueryParams.sendstateView = 3; // 鏃犻渶闅忚
+            break;
+        }
+        this.topqueryParams.sendstate = null;
+      } else {
+        // 閫変腑浜嗕簩绾э紙鍏蜂綋鐘舵�侊級
+        this.topqueryParams.sendstateView = null;
+        this.topqueryParams.sendstate = value;
+      }
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.dateRange = [];
+      this.dateRangefs = [];
+      this.serviceStatusValue = 10;
+      this.topqueryParams = {
+        pageNum: 1,
+        pageSize: 10,
+        sendstateView: 1,
+        sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
+        serviceType: 2,
+        searchscope: 3,
+        visitCount: 1,
+        scopetype: [],
+        leaveldeptcodes: [],
+        leavehospitaldistrictcodes: [],
+      };
+      this.handleQuery(1);
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuerykj() {
+      this.dateRange = [];
+      this.dateRangefs = [];
+      this.serviceStatusValue = null;
+      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) {
+      // 鉁� 濡傛灉鏄仮澶嶉�変腑鐘舵�佽Е鍙戠殑锛岀洿鎺ヨ繑鍥�
+      if (this.isRestoring) {
+        console.log("姝e湪鎭㈠閫変腑鐘舵�侊紝璺宠繃 handleSelectionChange");
+        return;
+      }
+
+      console.log("handleSelectionChange 琚Е鍙戯紝閫変腑琛屾暟:", rows.length);
+
+      // 鍙仛娣诲姞鎿嶄綔
+      rows.forEach((row) => {
+        this.selectedRowMap.set(row.id, {
+          ...row,
+          authenticity: row.authenticity || 0,
+          weekFinish: row.weekFinish || 0,
+          standard: row.standard || 0,
+          timeliness: row.timeliness || 0,
+          library: row.library || 0,
+          environment: row.environment || 0,
+          doctorSatisfaction: row.doctorSatisfaction || 0,
+          nurseSatisfaction: row.nurseSatisfaction || 0,
+        });
+      });
+
+      this.selectedRows = Array.from(this.selectedRowMap.values());
+      this.multiple = this.selectedRows.length === 0;
+    },
+
+    // 璁$畻鎬诲垎
+    calculateTotal(row) {
+      return (
+        (row.authenticity || 0) +
+        (row.weekFinish || 0) +
+        (row.standard || 0) +
+        (row.timeliness || 0) +
+        (row.library || 0) +
+        (row.environment || 0) +
+        (row.doctorSatisfaction || 0) +
+        (row.nurseSatisfaction || 0)
+      );
+    },
+
+    // 淇濆瓨璇勫垎
+    saveScores() {
+      this.selectedRows.forEach((item) => {
+        item.createBy = null;
+        item.patName = item.sendname;
+        item.hospitaldistrictname = item.leavehospitaldistrictname;
+      });
+      addsatisfaction(this.selectedRows).then((res) => {
+        if (res.code == 200) {
+          this.$message.success("璇勫垎淇濆瓨鎴愬姛");
+          this.scoreDialogVisible = false;
+          this.selectedRows = [];
+          this.$refs.userform.clearSelection();
+        } else {
+          this.$modal.msgWarning("璇勫垎淇濆瓨澶辫触");
+          this.scoreDialogVisible = false;
+          this.selectedRows = [];
+          this.$refs.userform.clearSelection();
+        }
+      });
+      // 杩欓噷鍙互娣诲姞淇濆瓨閫昏緫锛屽璋冪敤API淇濆瓨璇勫垎
+    },
+    //鍒犻櫎閫夐」
+    handleClose(tag) {
+      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
+    },
+    //瑙﹀彂鏂板杈撳叆
+    showInput() {
+      this.inputVisible = true;
+      this.$nextTick((_) => {
+        this.$refs.saveTagInput.$refs.input.focus();
+      });
+    },
+    //鑾峰彇澶卞幓鐒︾偣瑙﹀彂
+    handleInputConfirm() {
+      let inputValue = this.inputValue;
+      if (inputValue) {
+        this.dynamicTags.push(inputValue);
+      }
+      this.inputVisible = false;
+      this.inputValue = "";
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.$router.push({
+        path: "/followvisit/QuestionnaireTask",
+        query: {
+          type: 2,
+          serviceType: 2,
+        },
+      });
+    },
+    //鎮h��360璺宠浆
+    gettoken360(sfzh, drcode, drname, id) {
+      const orgname = localStorage.getItem("orgname");
+      if (orgname == "鍗楀崕澶у闄勫睘绗竴鍖婚櫌") {
+        query360PatInfonh(id).then((res) => {
+          if (res.data) {
+            window.open(res.data, "_blank");
+          } else {
+            this.$modal.msgWarning("360鏌ヨ鏃犵粨鏋�");
+          }
+        });
+        return;
+      } else if (
+        orgname == "绗竴浜烘皯鍖婚櫌婀栨花闄㈠尯" ||
+        orgname == "绗竴浜烘皯鍖婚櫌鍚村北闄㈠尯"
+      ) {
+        let url = `http://192.200.81.189:9100/blj/view?BINGRENID=${id}&YONGHUID=DBA`;
+        window.open(url, "_blank");
+        return;
+      }
+
+      this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh;
+
+      query360PatInfo(this.postData).then((res) => {
+        if (res.data.url) {
+          window.open(res.data.url, "_blank");
+          // this.linkUrl = res.data.url;
+        } else {
+          this.$modal.msgWarning("360鏌ヨ鏃犵粨鏋�");
+        }
+      });
+    },
+
+    /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */
+    handleResetPwd(row) {
+      this.$prompt('璇疯緭鍏�"' + row.userName + '"鐨勬柊瀵嗙爜', "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        closeOnClickModal: false,
+        inputPattern: /^.{5,20}$/,
+        inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+      })
+        .then(({ value }) => {
+          resetUserPwd(row.userId, value).then((response) => {
+            this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value);
+          });
+        })
+        .catch(() => {});
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.Labelchange = false;
+      this.reset();
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm: function () {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.form.isoperation = 2;
+          this.form.notrequiredFlag = 1;
+          alterpatient(this.form)
+            .then((response) => {
+              console.log(response);
+            })
+            .then(() => {
+              this.getList(1);
+              this.$modal.msgSuccess("鎮h�呰繃婊ゆ垚鍔�");
+            });
+
+          this.reset();
+          this.Labelchange = false;
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+        .then(function () {
+          return delUser(userIds);
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
+    },
+    // 鍏ㄩ儴鍋滄
+    AllStop() {
+      this.$modal
+        .confirm("鏄惁鍋滄鍏ㄩ儴浠诲姟锛�")
+        .then(function () {
+          return console.log("鍋滄鎴愬姛");
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgWarning("鍋滄鎴愬姛");
+        })
+        .catch(() => {});
+    },
+    // 鍏ㄩ儴寮�濮�
+    AllStarted() {
+      this.$modal
+        .confirm("鏄惁寮�鍚叏閮ㄤ换鍔★紵")
+        .then(function () {
+          return console.log("寮�鍚垚鍔�");
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgSuccess("寮�鍚垚鍔�");
+        })
+        .catch(() => {});
+    },
+    // 浠诲姟閲嶇疆
+    TaskReset() {
+      this.$modal
+        .confirm("鏄惁閲嶇疆閫変腑鐨勪换鍔¢」锛�")
+        .then(function () {
+          return console.log("閫変腑鎴愬姛");
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgSuccess("閲嶇疆鎴愬姛");
+        })
+        .catch(() => {});
+    },
+
+    // 璺宠浆璇︽儏椤�
+    Seedetails(row) {
+      let type = "";
+      console.log(row, "rwo");
+      if (row.type == 1) {
+        type = 1;
+      }
+      this.$router.push({
+        path: "/followvisit/record/detailpage/",
+        query: {
+          taskid: row.taskid,
+          patid: row.patid,
+          id: row.id,
+          Voicetype: type,
+          visitCount: this.topqueryParams.visitCount,
+        },
+      });
+    },
+    // 鍐嶆闅忚
+    followupvisit(row) {
+      this.zcform = row;
+      this.zcform.endtime = this.formatTime(this.zcform.endtime);
+      this.dialogFormVisible = true;
+    },
+    onSubmit() {},
+    // 鏆傚仠鏈嶅姟
+    handlestop(row) {
+      let objson = row;
+      this.$modal
+        .confirm(
+          '鏄惁纭鏆傚仠浠诲姟鍚嶇О涓�"' +
+            row.taskName +
+            '鎮h�呭悕绉颁负"' +
+            row.sendname +
+            '"鐨勬暟鎹」锛�'
+        )
+        .then(() => {
+          getTaskservelist({
+            patid: row.patid,
+            taskid: row.taskid,
+          }).then((res) => {
+            if (res.code == 200) {
+              objson.sendstate = 4;
+              objson.remark = "鏈嶅姟鏆傚仠";
+              Editsingletaskson(objson).then((res) => {
+                if (res.code) {
+                  this.$modal.msgSuccess("璁板綍鎴愬姛");
+                  this.getList(1);
+                }
+              });
+            }
+          });
+        })
+        .catch(() => {});
+    },
+    // 鎮h�呰繃婊よЕ鍙�
+    handleUpdate(row) {
+      particularpatient(row.patid).then((response) => {
+        this.form = response.data;
+        this.form.filterDrname = store.getters.nickName;
+      });
+      this.amendtag = true;
+      this.Labelchange = true;
+    },
+    // 渚挎嵎鎸夐挳
+    toleadExport(too, type) {
+      if (type) {
+        this.resetQuerykj();
+      }
+
+      if (too == 1) {
+        this.topqueryParams.sendstate = 4;
+        this.topqueryParams.excep = null;
+      } else if (too == 2) {
+        this.topqueryParams.excep = 1;
+        this.topqueryParams.sendstate = null;
+      } else if (too == 3) {
+        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
+          this.getEndOfDay()
+        );
+
+        this.topqueryParams.excep = null;
+        this.topqueryParams.sendstate = 2;
+        this.topqueryParams.scopetype = null;
+      } else if (too == 4) {
+        this.topqueryParams.excep = null;
+        this.topqueryParams.sendstate = 5;
+        this.topqueryParams.scopetype = null;
+      } else if (too == 5) {
+        this.topqueryParams.excep = null;
+        this.topqueryParams.sendstate = null;
+        this.topqueryParams.scopetype = null;
+      }
+      this.handleQuery(1);
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      const originalPageNum = this.topqueryParams.pageNum;
+      const originalPageSize = this.topqueryParams.pageSize;
+      this.topqueryParams.pageNum = null;
+      this.topqueryParams.pageSize = null;
+      this.topqueryParams.subIdList = this.selectedRows.map((item) => item.id);
+      this.download(
+        "smartor/serviceSubtask/patItemExport",
+        {
+          ...this.topqueryParams,
+        },
+        `user_${new Date().getTime()}.xlsx`
+      ).finally(() => {
+        // 瀵煎嚭鍚庢仮澶嶅垎椤靛弬鏁�
+        this.topqueryParams.pageNum = originalPageNum;
+        this.topqueryParams.pageSize = originalPageSize;
+        this.getList();
+      });
+    },
+    // 寮傚父鍒楁覆鏌�
+    tableRowClassName({ row, rowIndex }) {
+      if (row.excep == 1) {
+        return "warning-row";
+      } else if (row.excep == 2) {
+        return "remind-row";
+      }
+      return "";
+    },
+    restoreSelection() {
+      if (!this.$refs.userform) {
+        console.log("琛ㄦ牸寮曠敤涓嶅瓨鍦�");
+        return;
+      }
+
+      console.log("鎵ц restoreSelection");
+
+      // 娓呴櫎褰撳墠椤电殑鎵�鏈夐�変腑鐘舵��
+      this.$refs.userform.clearSelection();
+
+      // 鎵惧嚭褰撳墠椤典腑鍝簺琛屾槸琚�変腑鐨�
+      const toBeSelected = this.userList.filter((row) =>
+        this.selectedRowMap.has(row.id)
+      );
+
+      console.log("闇�瑕佹仮澶嶇殑琛屾暟:", toBeSelected.length);
+
+      // 閲嶆柊閫変腑杩欎簺琛�
+      toBeSelected.forEach((row) => {
+        this.$refs.userform.toggleRowSelection(row, true);
+      });
+    },
+    // 鉁� 澶勭悊琛ㄥご鍏ㄩ�変簨浠�
+    // 鍗$墖妯″紡-鍒囨崲鍗曡閫変腑
+    toggleRowSelection(row) {
+      const idx = this.selectedRows.findIndex((r) => r.id === row.id);
+      if (idx > -1) {
+        this.selectedRows.splice(idx, 1);
+        this.selectedRowMap.delete(row.id);
+      } else {
+        this.selectedRows.push(row);
+        this.selectedRowMap.set(row.id, row);
+      }
+    },
+    // 鍗$墖妯″紡-鍏ㄩ�夊垏鎹�
+    handleCheckAllChange(val) {
+      if (val) {
+        this.selectedRows = [...this.userList];
+        this.userList.forEach(r => this.selectedRowMap.set(r.id, r));
+      } else {
+        this.selectedRows = [];
+        this.selectedRowMap.clear();
+      }
+    },
+
+    handleSelectAll(selection) {
+      console.log("鍏ㄩ�変簨浠惰Е鍙戯紝閫変腑琛屾暟:", selection.length);
+
+      // 濡傛灉 selection 闀垮害绛変簬褰撳墠椤佃鏁帮紝璇存槑鏄叏閫�
+      if (selection.length === this.userList.length) {
+        // 鍏ㄩ�夊綋鍓嶉〉
+        this.userList.forEach((row) => {
+          this.selectedRowMap.set(row.id, {
+            ...row,
+            authenticity: row.authenticity || 0,
+            weekFinish: row.weekFinish || 0,
+            standard: row.standard || 0,
+            timeliness: row.timeliness || 0,
+            library: row.library || 0,
+            environment: row.environment || 0,
+            doctorSatisfaction: row.doctorSatisfaction || 0,
+            nurseSatisfaction: row.nurseSatisfaction || 0,
+          });
+        });
+      } else {
+        // 鍙栨秷鍏ㄩ�夛細娓呴櫎褰撳墠椤电殑閫変腑鐘舵��
+        this.userList.forEach((row) => {
+          this.selectedRowMap.delete(row.id);
+        });
+      }
+
+      // 鏇存柊 selectedRows
+      this.selectedRows = Array.from(this.selectedRowMap.values());
+      this.multiple = this.selectedRows.length === 0;
+    },
+
+    // 娓呴櫎鎵�鏈夐�変腑
+    clearAllSelection() {
+      this.selectedRowMap.clear();
+      this.selectedRows = [];
+      this.multiple = true;
+
+      if (this.$refs.userform) {
+        this.$refs.userform.clearSelection();
+      }
+    },
+
+    // 鑾峰彇閫変腑鏁伴噺
+    getSelectedCount() {
+      return this.selectedRowMap.size;
+    },
+    // 鍒涘缓鍐嶆闅忚鏈嶅姟
+    setupsubtask() {
+      this.$refs["zcform"].validate((valid) => {
+        if (valid) {
+          this.zcform.remark =
+            this.zcform.remark + "銆�" + this.getCurrentTime() + "銆�";
+          let form = structuredClone(this.zcform);
+          form.visitTime = this.formatTime(form.date1);
+          form.finishtime = "";
+          if (form.resource) {
+            if (form.resource == 2) {
+              form.serviceType = 13;
+            }
+          } else {
+            this.$modal.msgError("鏈�夋嫨闅忚鏂瑰紡");
+          }
+          form.id = null;
+          form.sendstate = 2;
+          form.preachform = form.preachformson;
+          form.longTask = 0;
+          addserviceSubtask(form).then((res) => {
+            if (res.code == 200) {
+              this.$modal.msgSuccess("鍒涘缓鎴愬姛");
+            } else {
+              this.$modal.msgError("鍒涘缓澶辫触");
+            }
+            this.dialogFormVisible = false;
+          });
+        }
+      });
+    },
+    getCurrentTime() {
+      const now = new Date();
+      const year = now.getFullYear();
+      const month = String(now.getMonth() + 1).padStart(2, "0");
+      const day = String(now.getDate()).padStart(2, "0");
+      const hours = String(now.getHours()).padStart(2, "0");
+      const minutes = String(now.getMinutes()).padStart(2, "0");
+      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(() => {});
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-button--primary.is-plain {
+  color: #ffffff;
+  background: #409eff;
+  border-color: #4fabe9;
+}
+
+.document {
+  // width: 100px;
+  height: 50px;
+}
+::v-deep.el-table .warning-row {
+  background: #eec4c4;
+}
+::v-deep.el-table .remind-row {
+  background: #fcf5aa;
+}
+
+.documentf {
+  display: flex;
+  justify-content: flex-end;
+}
+
+.download {
+  text-align: center;
+
+  .el-upload__tip {
+    font-size: 23px;
+  }
+
+  .el-upload__text {
+    font-size: 23px;
+  }
+}
+
+.uploading {
+  margin-top: 20px;
+  margin: 20px;
+  padding: 30px;
+  background: #ffffff;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+}
+
+.el-tag + .el-tag {
+  margin-left: 10px;
+}
+
+.button-new-tag {
+  margin-left: 10px;
+  height: 32px;
+  line-height: 30px;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+
+.input-new-tag {
+  width: 90px;
+  margin-left: 10px;
+  vertical-align: bottom;
+}
+
+.drexamine {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 30px;
+  background: #daeaf5;
+
+  img {
+    width: 100px;
+    height: 100px;
+  }
+}
+
+.qrcode-dialo {
+  // text-align: center;
+  //   display: flex;
+  margin: 20px;
+  padding: 30px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+
+  .topic-dev {
+    margin-bottom: 25px;
+    font-size: 20px !important;
+
+    .dev-text {
+      margin-bottom: 10px;
+    }
+  }
+}
+::v-deep.leftvlue .el-card__body {
+  background: #f2f8ff;
+  color: #324a9b;
+}
+::v-deep.leftvlue .el-card__body:hover {
+  background: #3664d9;
+  color: #fff;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+::v-deep.errleftvlue .el-card__body {
+  background: #fdd0d7;
+}
+::v-deep.errleftvlue .el-card__body:hover {
+  background: #f88d96;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+::v-deep.jgleftvlue .el-card__body:hover {
+  background: #f7f075;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+
+::v-deep.ysfleftvlue .el-card__body {
+  background: #d0fdd8;
+}
+::v-deep.ysfleftvlue .el-card__body:hover {
+  background: #0abc54;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+.button-bb {
+  font-weight: 500;
+  background-color: #2ba05c;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+.button-xq {
+  font-weight: 500;
+  background-color: #409eff;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+.button-sc {
+  font-weight: 500;
+  background-color: #b3a21f;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+.button-zx {
+  background: #324a9b;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+
+::v-deep.el-radio-group {
+  span {
+    font-size: 24px;
+  }
+}
+.purple-button {
+  background-color: #7e22ce;
+  border-color: #7e22ce;
+  color: #fff;
+}
+
+.purple-button:hover,
+.purple-button:focus {
+  background-color: #9333ea;
+  border-color: #9333ea;
+}
+
+.purple-button:active {
+  background-color: #6b21a8;
+  border-color: #6b21a8;
+}
+.button-textxga {
+  color: #de7897;
+}
+.button-textxgc {
+  color: #9054e4;
+}
+.purple-button.is-disabled {
+  background-color: #d8b4fe;
+  border-color: #d8b4fe;
+  opacity: 1; /* 淇濇寔绂佺敤鐘舵�侀�忔槑搴� */
+}
+.statistics-tooltip {
+  background: #ffffff !important;
+  color: #1976d2 !important;
+  border: 1px solid #bbdefb !important;
+  border-radius: 8px !important;
+  padding: 10px 14px !important;
+  font-size: 13px !important;
+  line-height: 1.6 !important;
+  box-shadow: 0 4px 12px rgba(25, 118, 210, 0.15) !important;
+}
+.statistics-tooltip .popper__arrow {
+  border-bottom-color: #bbdefb !important;
+}
+
+.statistics-tooltip .popper__arrow::after {
+  border-bottom-color: #ffffff !important;
+}
+// 閫夐」瀛椾綋鏀惧ぇ
+// ::v-deep.el-checkbox-group {
+//   span {
+//     font-size: 24px;
+//   }
+// }
+.filter-warning {
+  margin-top: 8px;
+  padding: 10px 14px;
+  background: #fff7e6;
+  border: 1px solid #ffe58f;
+  border-radius: 6px;
+  color: #d46b08;
+  font-size: 18px;
+  line-height: 1.6;
+  display: flex;
+  align-items: flex-start;
+  gap: 6px;
+}
+
+.filter-warning .el-icon-warning-outline {
+  font-size: 16px;
+  color: #faad14;
+  flex-shrink: 0;
+  margin-top: 2px;
+}
+
+::v-deep .el-table__row.selected-row:hover > td {
+  background-color: #e6f7ff !important;
+}
+
+/* 閫変腑淇℃伅鏄剧ず */
+.selected-info {
+  padding: 10px 0;
+  font-size: 14px;
+  color: #666;
+}
+// ===== 鍗$墖鍒楄〃鏍峰紡 =====
+.card-list { padding: 0 4px; }
+.follow-card {
+  position: relative; background: #fff; border-radius: 8px; padding: 12px 16px 8px;
+  margin-bottom: 12px; border: 1px solid #ebeef5; transition: box-shadow .2s;
+  &:hover { box-shadow: 0 2px 10px rgba(0,0,0,.06); }
+  &.warning-row { border-left: 3px solid #e6a23c; }
+  &.remind-row { border-left: 3px solid #409eff; }
+}
+.card-check { position: absolute; top: 12px; left: 10px; z-index: 1; }
+.card-head {
+  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
+  padding: 0 0 6px 28px; margin-bottom: 6px; border-bottom: 1px dashed #ebeef5;
+  .card-task-name { font-size: 15px; font-weight: 700; color: #303133; white-space: nowrap; }
+  .visit-status { flex-shrink: 0; }
+  .card-actions { flex-shrink: 0; margin-left: auto; display: flex; gap: 2px;
+    .el-button { font-size: 11px; padding: 2px 6px; }
+  }
+}
+
+// 鍐呰仈鏃堕棿绾�
+.time-inline {
+  font-size: 11px; color: #606266; white-space: nowrap;
+  em { font-style: normal; color: #909399; margin-right: 2px; }
+  i { color: #c0c4cc; margin: 0 4px; font-style: normal; }
+}
+
+// 涓ゆ爮
+.card-columns { display: flex; gap: 10px; padding-left: 28px; }
+.card-col { flex: 1; min-width: 0; display: flex; }
+
+// 鑹插潡
+.block { border-radius: 6px; padding: 7px 10px; font-size: 13px; flex: 1; }
+.block-title { font-size: 11px; font-weight: 600; margin-bottom: 3px; i { margin-right: 4px; } }
+.block-row { color: #303133; line-height: 1.6; font-size: 13px; }
+.sub-text { color: #909399; font-size: 12px; }
+.block-blue { background: #ecf5ff; .block-title { color: #409eff; } }
+.block-green { background: #edf7f0; .block-title { color: #67c23a; } }
+.block-gray { background: #f5f7fa; .block-title { color: #909399; font-size: 11px; } }
+
+.sub { color: #909399; font-size: 12px; margin-left: 8px; }
+.diag-tag { display: inline-block; font-size: 11px; color: #e6a23c; background: #fdf6ec; padding: 1px 6px; border-radius: 3px; margin-right: 6px; }
+.name-link { color: #409eff; cursor: pointer; font-weight: 600; &:hover { text-decoration: underline; } }
+
+.meta-grid { display: flex; flex-wrap: wrap; gap: 3px 10px; font-size: 11px; color: #606266;
+  span { white-space: nowrap; }
+  em { font-style: normal; color: #909399; margin-right: 2px; }
+}
+
+.card-check-all { margin-bottom: 10px; }
+</style>
diff --git a/src/views/followvisit/discharge/index.vue.bak b/src/views/followvisit/discharge/index.vue.bak
new file mode 100644
index 0000000..dc7e7ec
--- /dev/null
+++ b/src/views/followvisit/discharge/index.vue.bak
@@ -0,0 +1,2769 @@
+<template>
+  <div class="app-container">
+    <statistics-cards
+      :cardlist="cardlist"
+      :ycvalue="ycvalue"
+      :jgvalue="jgvalue"
+      :show-warning-condition="orgname == '鐪佺珛鍚屽痉缈犺嫅闄㈠尯'"
+    />
+    <el-row :gutter="20">
+      <!--鐢ㄦ埛鏁版嵁-->
+      <el-form
+        :model="topqueryParams"
+        ref="queryForm"
+        size="small"
+        :inline="true"
+        v-show="showSearch"
+        label-width="98px"
+      >
+        <el-form-item label="浠诲姟鍚嶇О">
+          <el-input
+            v-model="topqueryParams.taskName"
+            placeholder="璇烽�夋嫨浠诲姟鍚嶇О"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="鍑洪櫌鏃堕棿">
+          <el-date-picker
+            v-model="dateRange"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="搴旈殢璁挎椂闂�">
+          <el-date-picker
+            v-model="dateRangefs"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          ></el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="鎮h�呭鍚�" prop="sendname">
+          <el-input
+            v-model="topqueryParams.sendname"
+            placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="璇婃柇鍚嶇О" prop="leavediagname">
+          <el-input
+            v-model="topqueryParams.leavediagname"
+            placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="闅忚浜哄憳" prop="updateBy">
+          <el-input
+            v-model="topqueryParams.updateBy"
+            placeholder="璇疯緭鍏ラ殢璁夸汉鍛�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="涓绘不鍖荤敓" prop="drname">
+          <el-input
+            v-model="topqueryParams.drname"
+            placeholder="璇疯緭鍏ヤ富娌诲尰鐢�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="缁忕鍖荤敓" prop="managementDoctor">
+          <el-input
+            v-model="topqueryParams.managementDoctor"
+            placeholder="璇疯緭鍏ヤ富娌诲尰鐢�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鏃ユ湡闄愬埗" prop="status">
+          <el-select v-model="endOut" placeholder="璇烽�夋嫨">
+            <el-option
+              v-for="item in endOuts"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鎮h�呰寖鍥�" prop="status">
+          <el-cascader
+            v-model="topqueryParams.scopetype"
+            placeholder="榛樿鍏ㄩ儴"
+            :options="sourcetype"
+            :props="{ expandTrigger: 'hover' }"
+            @change="handleChange"
+            filterable
+            clearable
+          ></el-cascader>
+        </el-form-item>
+
+        <el-form-item label="闅忚鐘舵��" prop="status">
+          <el-cascader
+            v-model="serviceStatusValue"
+            placeholder="璇烽�夋嫨"
+            :options="serviceStatusOptions"
+            :props="cascaderProps"
+            @change="handleServiceStatusChange"
+            clearable
+          ></el-cascader>
+        </el-form-item>
+
+        <el-form-item label="鎺掑簭鏂瑰紡" prop="status">
+          <el-select v-model="topqueryParams.sort" placeholder="璇烽�夋嫨">
+            <el-option
+              v-for="item in topicoptionssort"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item>
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            size="medium"
+            @click="handleQuery(1)"
+            >鎼滅储</el-button
+          >
+          <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
+            >閲嶇疆</el-button
+          >
+        </el-form-item>
+      </el-form>
+      <el-divider></el-divider>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="warning"
+                plain
+                icon="el-icon-upload2"
+                size="medium"
+                @click="handleExport"
+                >瀵煎嚭</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <!-- <el-col :span="1.5">
+          <el-button
+            type="primary"
+            icon="el-icon-plus"
+            size="medium"
+            @click="handleAdd"
+            >鏂板</el-button
+          >
+        </el-col> -->
+
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="warning"
+                plain
+                icon="el-icon-warning-outline"
+                size="medium"
+                @click="toleadExport(1, 1)"
+                >鎵ц澶辫触</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="danger"
+                plain
+                icon="el-icon-warning"
+                size="medium"
+                @click="toleadExport(2, 1)"
+                >缁撴灉寮傚父</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="success"
+                plain
+                size="medium"
+                @click="buidegetTasklist()"
+                >寰呭姙鏈嶅姟</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button type="primary" size="medium" @click="affiliation()"
+                >鏈汉鎵�灞炴湇鍔�</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button type="success" size="medium" @click="onthatday()"
+                >浠婃棩鏈嶅姟</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5" v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'">
+          <div class="documentf">
+            <div class="document">
+              <el-tooltip
+                content="璇峰厛閫変腑鏈嶅姟"
+                placement="top"
+                :disabled="!multiple"
+              >
+                <div class="tooltip-wrapper">
+                  <el-button
+                    type="primary"
+                    :disabled="multiple"
+                    class="purple-button"
+                    @click="scoreDialogVisible = true"
+                  >
+                    婊℃剰搴﹁皟鏌�
+                  </el-button>
+                </div>
+              </el-tooltip>
+            </div>
+          </div>
+        </el-col>
+      </el-row>
+      <div class="selected-info">
+        宸查�変腑
+        <span style="color: #409eff; font-weight: bold">{{
+          getSelectedCount()
+        }}</span>
+        鏉℃暟鎹�
+        <el-button
+          v-if="getSelectedCount() > 0"
+          type="text"
+          @click="clearAllSelection"
+        >
+          娓呴櫎閫変腑
+        </el-button>
+      </div>
+      <el-table
+        v-loading="loading"
+        ref="userform"
+        :data="userList"
+        :row-class-name="tableRowClassName"
+        @selection-change="handleSelectionChange"
+        @select-all="handleSelectAll"
+      >
+        <!-- 鍗$墖鍒楄〃妯″紡 -->
+      </el-table>
+      <div v-loading="loading" class="card-list">
+        <div style="margin-bottom:12px" v-if="userList.length > 0">
+          <el-checkbox v-model="checkAll" @change="handleCheckAllChange">鍏ㄩ��</el-checkbox>
+        </div>
+
+        <div v-for="row in userList" :key="row.id" class="follow-card" :class="rowClassName(row)">
+          <el-checkbox class="card-check" :value="isRowSelected(row)" @change="toggleRowSelection(row)" />
+
+          <div class="card-head">
+            <span class="card-task-name">{{ row.taskName || '-' }}</span>
+            <span>
+              <el-tag v-if="row.sendstateView==1" type="primary" size="small">寰呴殢璁�</el-tag>
+              <el-tag v-else-if="row.sendstateView==2" type="success" size="small">宸插畬鎴�</el-tag>
+              <el-tag v-else-if="row.sendstateView==3" type="warning" size="small">鏃犻渶闅忚</el-tag>
+              <el-tag v-if="row.sendstate==1" type="info" size="small" style="margin-left:6px">宸查鍙�</el-tag>
+              <el-tag v-else-if="row.sendstate==6" type="success" size="small" style="margin-left:6px">宸插畬鎴�</el-tag>
+              <el-tag v-else-if="row.sendstate==5" type="danger" size="small" style="margin-left:6px">澶辫触</el-tag>
+            </span>
+          </div>
+
+          <div class="card-body">
+            <div class="card-row">
+              <span class="card-cell"><b class="c-label">鎮h��</b><span class="name-link" @click="gettoken360(row.sfzh,row.drcode,row.drname,row.patid)">{{ row.sendname||'-' }}</span></span>
+              <span class="card-cell"><b class="c-label">鎬у埆</b>{{ row.sex==1?'鐢�':row.sex==2?'濂�':'-' }}</span>
+              <span class="card-cell"><b class="c-label">鐢佃瘽</b>{{ row.phone||'-' }}</span>
+              <span class="card-cell"><b class="c-label">鍑洪櫌</b>{{ row.endDay?row.endDay+'澶�':'-' }}</span>
+            </div>
+            <div class="card-row">
+              <span class="card-cell"><b class="c-label">绉戝</b>{{ row.deptname||'-' }}</span>
+              <span class="card-cell"><b class="c-label">鐥呭尯</b>{{ row.leavehospitaldistrictname||'-' }}</span>
+              <span class="card-cell"><b class="c-label">涓绘不鍖荤敓</b>{{ row.drname||'-' }}</span>
+              <span class="card-cell" v-if="orgname!='涓芥按甯備腑鍖婚櫌'"><b class="c-label">闅忚浜哄憳</b>{{ row.updateBy||'-' }}</span>
+            </div>
+            <div class="card-row" v-if="row.leavediagname">
+              <span class="card-cell full"><b class="c-label">璇婃柇</b>{{ row.leavediagname }}</span>
+            </div>
+            <div class="card-row time-row">
+              <span class="card-cell"><b class="c-label">鍑洪櫌</b>{{ formatTime(row.endtime) }}</span>
+              <span class="time-arrow">鈫�</span>
+              <span class="card-cell"><b class="c-label">搴旈殢璁�</b>{{ formatTime(row.visitTime) }}</span>
+              <span class="time-arrow">鈫�</span>
+              <span class="card-cell"><b class="c-label">瀹屾垚</b>{{ parseTime(row.finishtime) }}</span>
+            </div>
+            <div class="card-row" v-if="row.currentPreachform||row.templatename">
+              <span class="card-cell"><b class="c-label">鎵ц鏂瑰紡</b>{{ row.currentPreachform||(row.preachform&&row.preachform.join('銆�'))||'-' }}</span>
+              <span class="card-cell full" v-if="row.templatename"><b class="c-label">妯℃澘</b>{{ row.templatename }}</span>
+            </div>
+            <div class="card-row" v-if="row.suggest||row.remark">
+              <span class="card-cell" v-if="row.suggest"><b class="c-label">澶勭悊鎰忚</b><dict-tag :options="dict.type.sys_suggest" :value="row.suggest"/></span>
+              <span class="card-cell full" v-if="row.remark"><b class="c-label">缁撴灉璇存槑</b>{{ row.remark }}</span>
+            </div>
+          </div>
+
+          <div class="card-footer">
+            <el-button size="small" type="text" icon="el-icon-s-order" @click="Seedetails(row)">鏌ョ湅璇︽儏</el-button>
+            <el-button size="small" type="text" icon="el-icon-edit" @click="handleUpdate(row)">鎮h�呰繃婊�</el-button>
+            <el-button size="small" type="text" icon="el-icon-sort" @click="handleTransferOpen(row)">鍙樻洿绉�/鍖�</el-button>
+          </div>
+        </div>
+        <div v-if="userList.length===0&&!loading" style="text-align:center;padding:80px 0;color:#999">
+          <i class="el-icon-document" style="font-size:48px;display:block;margin-bottom:16px"></i>鏆傛棤鏁版嵁
+        </div>
+      </div>
+      <el-table v-if="false"></el-table>
+      <!-- end 鍗$墖鍒楄〃 -->
+      <el-table-column type="selection" width="50" align="center" v-if="false" />
+        <el-table-column
+          label="浠诲姟鍚嶇О"
+          fixed
+          width="150"
+          show-overflow-tooltip
+          align="center"
+          key="taskName"
+          prop="taskName"
+        />
+        <!-- <el-table-column label="搴忓彿" fixed align="center" key="id" prop="id" /> -->
+        <el-table-column
+          label="濮撳悕"
+          width="100"
+          align="center"
+          key="sendname"
+          prop="sendname"
+        >
+          <template slot-scope="scope">
+            <el-button
+              size="medium"
+              type="text"
+              @click="
+                gettoken360(
+                  scope.row.sfzh,
+                  scope.row.drcode,
+                  scope.row.drname,
+                  scope.row.patid
+                )
+              "
+              ><span class="button-textsc">{{
+                scope.row.sendname
+              }}</span></el-button
+            >
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="璇婃柇鍚嶇О"
+          align="center"
+          key="leavediagname"
+          prop="leavediagname"
+          width="120"
+          :show-overflow-tooltip="true"
+        >
+        </el-table-column>
+
+        <el-table-column
+          label="闅忚鐘舵��"
+          align="center"
+          key="sendstateView"
+          prop="sendstateView"
+          width="120"
+        >
+          <template slot-scope="scope">
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.remark"
+              placement="top-start"
+              popper-class="statistics-tooltip"
+            >
+              <div v-if="scope.row.sendstateView == 1">
+                <el-tag type="primary" :disable-transitions="false"
+                  >寰呴殢璁�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="success" :disable-transitions="false"
+                  >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
+                >
+              </div>
+            </el-tooltip>
+          </template>
+        </el-table-column>
+
+        <el-table-column
+          label="澶勭悊鎰忚"
+          align="center"
+          key="suggest"
+          prop="suggest"
+          width="120"
+        >
+          <template slot-scope="scope">
+            <dict-tag
+              :options="dict.type.sys_suggest"
+              :value="scope.row.suggest"
+            />
+          </template>
+        </el-table-column>
+
+        <el-table-column
+          label="浠诲姟鎵ц鏂瑰紡"
+          align="center"
+          key="preachform"
+          prop="preachform"
+          width="160"
+          :show-overflow-tooltip="true"
+        >
+          <template slot-scope="scope">
+            <span v-for="item in scope.row.preachform">{{ item }}銆� </span>
+          </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"
+          prop="finishtime"
+          width="160"
+        >
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.finishtime) }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鍑洪櫌鏃ユ湡"
+          width="146"
+          align="center"
+          key="endtime"
+          prop="endtime"
+        >
+          <template slot-scope="scope">
+            <span>{{ formatTime(scope.row.endtime) }}</span>
+          </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="涓绘不鍖荤敓"
+          width="120"
+          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 != '涓芥按甯備腑鍖婚櫌'"
+          label="闅忚浜哄憳"
+          align="center"
+          key="updateBy"
+          prop="updateBy"
+          width="120"
+        />
+        <el-table-column
+          label="浠诲姟鐘舵��"
+          align="center"
+          key="sendstate"
+          prop="sendstate"
+          width="120"
+        >
+          <template slot-scope="scope">
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.remark"
+              placement="top-start"
+            >
+              <div v-if="scope.row.sendstate == 1">
+                <el-tag type="primary" :disable-transitions="false"
+                  >琛ㄥ崟宸查鍙�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstate == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >寰呴殢璁�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstate == 3">
+                <el-tag type="success" :disable-transitions="false"
+                  >琛ㄥ崟宸插彂閫�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstate == 4">
+                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
+              </div>
+              <div v-if="scope.row.sendstate == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鍙戦�佸け璐�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstate == 6">
+                <el-tag type="success" :disable-transitions="false"
+                  >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstate == 7">
+                <el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
+              </div>
+            </el-tooltip>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鍑洪櫌澶╂暟"
+          width="120"
+          align="center"
+          key="endDay"
+          prop="endDay"
+        >
+          <template slot-scope="scope">
+            <span>{{ scope.row.endDay ? scope.row.endDay + "澶�" : "" }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鑱旂郴鐢佃瘽"
+          width="200"
+          align="center"
+          key="phone"
+          prop="phone"
+        />
+        <el-table-column
+          label="韬唤璇佸彿鐮�"
+          width="200"
+          align="center"
+          key="sfzh"
+          prop="sfzh"
+        />
+
+        <!-- <el-table-column
+          label="鐥呭巻鍙�"
+          align="center"
+          sortable
+          key="medicalRecordNo"
+          prop="medicalRecordNo"
+          width="120"
+        /> -->
+
+        <!-- <el-table-column label="骞撮緞" align="center" key="age" prop="age" /> -->
+        <!-- <el-table-column label="鎬у埆"width="100" align="center" key="sex" prop="sex" /> -->
+        <!-- <el-table-column label="搴婂彿" align="center" key="badNo" prop="badNo" /> -->
+        <el-table-column
+          label="绉戝"
+          align="center"
+          key="deptname"
+          prop="deptname"
+          width="120"
+        >
+        </el-table-column>
+        <el-table-column
+          label="鐥呭尯"
+          align="center"
+          key="leavehospitaldistrictname"
+          prop="leavehospitaldistrictname"
+          width="120"
+        >
+        </el-table-column>
+
+        <el-table-column
+          label="鍑洪櫌闅忚妯℃澘鍚嶇О"
+          align="center"
+          key="templatename"
+          prop="templatename"
+          width="200"
+        />
+
+        <!-- <el-table-column
+          label="浠诲姟鍙戦�佹祦绋�"
+          align="center"
+          key="serviceSubtaskRecordList"
+          prop="serviceSubtaskRecordList"
+          width="160"
+          :show-overflow-tooltip="true"
+        >
+          <template slot-scope="scope">
+            <span v-for="item in scope.row.serviceSubtaskRecordList"
+              >{{ item.remark }}銆�
+            </span>
+          </template>
+        </el-table-column> -->
+
+        <el-table-column
+          label="浠诲姟缁撴灉璇存槑"
+          width="220"
+          align="center"
+          key="remark"
+          prop="remark"
+        >
+          <template slot-scope="scope" v-if="scope.row.remark">
+            <el-tooltip
+              :content="scope.row.remark"
+              placement="top"
+              effect="dark"
+            >
+              <el-tag
+                type="warning"
+                v-if="scope.row.sendstate != 5 && scope.row.sendstate != 4"
+                >{{ scope.row.remark }}</el-tag
+              >
+              <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag>
+            </el-tooltip>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鎿嶄綔"
+          align="center"
+          fixed="right"
+          width="300"
+          class-name="small-padding fixed-width"
+        >
+          <template slot-scope="scope">
+            <!-- <el-tooltip
+              class="item"
+              effect="dark"
+              content="鍐嶆闅忚"
+              placement="top"
+            >
+              <el-button
+                size="medium"
+                type="text"
+                v-if="scope.row.isVisitAgain!=2"
+                @click="followupvisit(scope.row)"
+                ><span class="button-bb"
+                  ><i class="el-icon-s-promotion"></i>鍐嶆闅忚</span
+                ></el-button
+              >
+            </el-tooltip>
+            <el-tooltip
+              v-if="scope.row.sendstate == 1 || scope.row.sendstate == 2"
+              class="item"
+              effect="dark"
+              content="鏆傚仠鏈嶅姟"
+              placement="top"
+            >
+              <el-button
+                size="medium"
+                type="text"
+                @click="handlestop(scope.row)"
+                v-hasPermi="['system:user:edit']"
+                ><span class="button-sc"
+                  ><i class="el-icon-remove-outline"></i>鏆傚仠鏈嶅姟</span
+                ></el-button
+              >
+            </el-tooltip> -->
+            <el-button size="medium" type="text" @click="Seedetails(scope.row)"
+              ><span class="button-zx"
+                ><i class="el-icon-s-order"></i>鏌ョ湅璇︽儏</span
+              ></el-button
+            >
+            <el-button
+              size="medium"
+              type="text"
+              @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>
+        </el-table-column>
+      </el-table>
+
+      <pagination
+        v-show="total > 0"
+        :total="total"
+        :page.sync="topqueryParams.pageNum"
+        :limit.sync="topqueryParams.pageSize"
+        @pagination="getList"
+      />
+    </el-row>
+    <!-- 婊℃剰搴﹀脊妗� -->
+    <el-dialog
+      title="闅忚婊℃剰搴﹁瘎鍒�"
+      :visible.sync="scoreDialogVisible"
+      width="80%"
+      :close-on-click-modal="false"
+    >
+      <el-table :data="selectedRows" border style="width: 100%">
+        <el-table-column
+          label="濮撳悕"
+          width="100"
+          align="center"
+          prop="sendname"
+        />
+        <el-table-column
+          label="浠诲姟鍚嶇О"
+          width="180"
+          align="center"
+          prop="taskName"
+        />
+        <!-- 鏂板璇勫垎鍒� -->
+        <el-table-column
+          label="鐪熷疄鎬�(20)"
+          align="center"
+          key="authenticity"
+          prop="authenticity"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.authenticity"
+              :min="0"
+              :max="20"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="涓�鍛ㄥ唴瀹屾垚(20)"
+          align="center"
+          key="weekFinish"
+          prop="weekFinish"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.weekFinish"
+              :min="0"
+              :max="20"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="瑙勮寖鎬�(10)"
+          align="center"
+          key="standard"
+          prop="standard"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.standard"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鍙婃椂鎬�(10)"
+          align="center"
+          key="timeliness"
+          prop="timeliness"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.timeliness"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="瀹f暀鎯呭喌(10)"
+          align="center"
+          key="library"
+          prop="library"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.library"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鐜婊℃剰搴�(10)"
+          align="center"
+          key="environment"
+          prop="environment"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.environment"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鍖荤敓婊℃剰搴�(10)"
+          align="center"
+          key="doctorSatisfaction"
+          prop="doctorSatisfaction"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.doctorSatisfaction"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鎶ゅ+婊℃剰搴�(10)"
+          align="center"
+          key="nurseSatisfaction"
+          prop="nurseSatisfaction"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.nurseSatisfaction"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鎬诲垎"
+          align="center"
+          key="total"
+          prop="total"
+          fixed="right"
+        >
+          <template slot-scope="scope">
+            <span>{{ calculateTotal(scope.row) }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="scoreDialogVisible = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="saveScores">淇濆瓨</el-button>
+      </div>
+    </el-dialog>
+    <!-- 娣诲姞鎴栦慨鏀瑰奖鍍忛殢璁垮璇濇 -->
+    <el-dialog
+      :title="amendtag ? '淇敼鎮h�呬俊鎭�' : '鏂板鎮h��'"
+      :visible.sync="Labelchange"
+      width="900px"
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="濮撳悕" width="100" prop="name">
+              <el-input
+                v-model="form.name"
+                placeholder="璇疯緭鍏ュ鍚�"
+                maxlength="30"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鎬у埆" width="100" prop="sex">
+              <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+                <el-option
+                  v-for="dict in sextype"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="骞撮緞" prop="age">
+              <el-input
+                v-model="form.age"
+                placeholder="璇疯緭鍏ュ勾榫�"
+                maxlength="30"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="杩囨护鍖荤敓" width="100" prop="filterDrname">
+              <el-input
+                v-model="form.filterDrname"
+                placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
+                maxlength="30"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="杩囨护鍘熷洜">
+              <el-input
+                v-model="form.notrequiredreason"
+                type="textarea"
+                placeholder="璇疯緭鍏ヨ繃婊ゅ師鍥�"
+              ></el-input>
+              <!-- 鎻愰啋鏂囧瓧 -->
+              <div class="filter-warning">
+                <i class="el-icon-warning-outline"></i>
+                璇ュ姛鑳介�傜敤浜庢浜°�佸垪鍏ュ尰闄㈤粦鍚嶅崟銆佹槑纭嫆缁濋殢璁跨瓑鎮h�呯殑杩囨护鎺掗櫎锛岃繃婊ゅ悗璇ユ偅鑰呮墍鏈夎繘琛屼腑浠诲姟鍏ㄩ儴鍋滄涓旀棤娉曞尮閰嶆柊鐨勯殢璁夸换鍔★紝璇疯皑鎱庢搷浣滐紒
+              </div>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 鍐嶆闅忚 -->
+    <el-dialog title="鎮h�呭啀娆¢殢璁�" :visible.sync="dialogFormVisible">
+      <el-form ref="zcform" :rules="zcrules" :model="zcform" label-width="80px">
+        <el-form-item label="浠诲姟鍚嶇О">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.taskName"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鎮h�呭悕绉�">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.sendname"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="骞撮緞">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.age"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="绉戝">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.deptname"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鐥呭尯">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.leavehospitaldistrictname"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="闅忚鏂瑰紡" prop="resource">
+          <el-radio-group v-model="zcform.resource">
+            <el-radio label="1">鏈梾鍖洪殢璁�</el-radio>
+            <el-radio label="2">闅忚涓績闅忚</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <!-- <el-form-item label="鍗冲埢鍙戦��">
+          <el-switch v-model="zcform.delivery"></el-switch>
+        </el-form-item> -->
+        <el-form-item label="鍑洪櫌鏃堕棿">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.endtime"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="闅忚瀹屾垚鏃堕棿" prop="date1">
+          <el-date-picker
+            type="date"
+            placeholder="閫夋嫨鏃ユ湡"
+            v-model="zcform.date1"
+            style="width: 100%"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="闅忚璁板綍">
+          <el-input type="textarea" v-model="zcform.remark"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
+        <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>
+
+<script>
+import {
+  delUser,
+  addUser,
+  updateUser,
+  resetUserPwd,
+  changeUserStatus,
+  deptTreeSelect,
+} from "@/api/system/user";
+import {
+  getTaskservelist,
+  buidegetTasklist,
+  addserviceSubtask,
+  query360PatInfo,
+  addsatisfaction,
+  transferDept,
+  query360PatInfonh,
+} from "@/api/AiCentre/index";
+import { alterpatient, particularpatient } from "@/api/patient/homepage";
+import Treeselect from "@riophae/vue-treeselect";
+import StatisticsCards from "@/components/StatisticsCards";
+
+import store from "@/store";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "Discharge",
+  dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"],
+  components: { Treeselect, StatisticsCards },
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      dialogFormVisible: false,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+      userList: null,
+      // 寮瑰嚭灞傛爣棰�
+      title: "鏂板褰卞儚闅忚",
+      // 鏄惁鏄剧ず淇敼銆佹坊鍔犲脊鍑哄眰
+      addalteropen: false,
+
+      // 閮ㄩ棬鍚嶇О
+      deptName: undefined,
+      // 榛樿瀵嗙爜
+      initPassword: undefined,
+      // 鏃ユ湡鑼冨洿
+      dateRange: [],
+      dateRangefs: [],
+      // 宀椾綅閫夐」
+      postOptions: [],
+      ruleForm: {
+        type: [],
+      },
+      zcform: {},
+      dynamicTags: ["閫夐」涓�", "閫夐」浜�", "閫夐」涓�"], //閫夐」
+      inputVisible: false,
+      Labelchange: false,
+      ycvalue: 0,
+      jgvalue: "",
+      yfsvalue: "",
+      inputValue: "",
+      preachform: "",
+      previewVisible: false, //褰卞儚闅忚棰勮寮规
+      isRestoring: false,
+      radio: "",
+      radios: [],
+      previewtype: 2, //棰勮褰卞儚闅忚绫诲瀷
+      total: 0, // 鎬绘潯鏁�
+      // 婊℃剰搴﹁皟鏌ユ暟鎹�
+      scoreDialogVisible: false,
+      selectedRows: [],
+      selectedRowMap: new Map(), // key: row.id, value: row 鏁版嵁
+
+      // 绾ц仈閫夋嫨鍣ㄧ粦瀹氬��
+      serviceStatusValue: 10,
+      cascaderProps: {
+        expandTrigger: "hover", // 鎮仠灞曞紑
+        checkStrictly: true, // 鉁� 鍏抽敭锛氬厑璁搁�変腑浠绘剰涓�绾�
+        emitPath: false, // 鉁� 鍙繑鍥為�変腑鐨勫�硷紝涓嶈繑鍥炶矾寰勬暟缁�
+      },
+      // 鏈嶅姟鐘舵�侀�夐」锛堜竴绾у拰浜岀骇鍊间笉鍐茬獊锛�
+      serviceStatusOptions: [
+        {
+          value: null,
+          label: "鍏ㄩ儴",
+        },
+        {
+          value: 10, // 涓�绾э細寰呴殢璁�
+          label: "寰呴殢璁�",
+          children: [
+            { value: 1, label: "琚鍙�" },
+            { value: 2, label: "寰呭彂閫�" },
+            { value: 3, label: "宸插彂閫�" },
+            { value: 5, label: "鍙戦�佸け璐�" },
+            { value: 7, label: "瓒呮椂" },
+          ],
+        },
+        {
+          value: 20, // 涓�绾э細宸插畬鎴�
+          label: "宸插畬鎴�",
+          children: [{ value: 6, label: "宸插畬鎴�" }],
+        },
+        {
+          value: 30, // 涓�绾э細鏃犻渶闅忚
+          label: "鏃犻渶闅忚",
+          children: [{ value: 4, label: "涓嶆墽琛�" }],
+        },
+      ],
+      value: [],
+      list: [],
+
+      sourcetype: [
+        {
+          value: 1,
+          label: "绉戝",
+          children: [],
+        },
+        {
+          value: 2,
+          label: "鐥呭尯",
+          children: [],
+        },
+        {
+          value: 3,
+          label: "鍏ㄩ儴",
+        },
+      ],
+      loading: false,
+      cardlist: [
+        {
+          name: "鎮h�呮湇鍔℃�婚噺",
+          value: 0,
+        },
+
+        {
+          name: "鏃犻渶闅忚",
+          value: 0,
+        },
+        {
+          name: "闇�闅忚",
+          value: 0,
+        },
+        {
+          name: "寰呴殢璁�",
+          value: 0,
+        },
+        {
+          name: "宸插畬鎴�",
+          value: 0,
+        },
+      ],
+      zcrules: {
+        date1: [
+          { required: true, message: "璇烽�夋嫨闅忚鏂瑰紡", trigger: "change" },
+        ],
+        resource: [
+          { required: true, message: "璇烽�夋嫨闅忚鏃堕棿", trigger: "blur" },
+        ],
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {
+        phonenumber: "",
+        totagid: "",
+        types: "",
+        nickName: "",
+        qystatus: "",
+        btstatus: "",
+      },
+      // endOut: 1,
+      endOut:
+        localStorage.getItem("orgname") == "鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�" ? 0 : 1, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+      endOuts: [
+        {
+          value: 0,
+          label: "鎴鑷冲綋鏃ユ湇鍔�",
+        },
+        {
+          value: 1,
+          label: "鍏ㄩ儴鏈嶅姟",
+        },
+      ],
+      topicoptionssort: [
+        {
+          value: 0,
+          label: "鍑洪櫌鏃堕棿(姝e簭)",
+        },
+        {
+          value: 1,
+          label: "鍑洪櫌鏃堕棿(鍊掑簭)",
+        },
+        {
+          value: 2,
+          label: "鍙戦�佹椂闂�(姝e簭)",
+        },
+        {
+          value: 3,
+          label: "鍙戦�佹椂闂�(鍊掑簭)",
+        },
+        {
+          value: 7,
+          label: "搴旈殢璁挎棩鏈�(姝e簭)",
+        },
+        {
+          value: 8,
+          label: "搴旈殢璁挎棩鏈�(鍊掑簭)",
+        },
+        {
+          value: 9,
+          label: "鎸夌収鎮h�呮帓搴�",
+        },
+      ],
+      // 鏌ヨ鍙傛暟
+      topqueryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sendstateView: 1,
+        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") == "缂欎簯鍘夸汉姘戝尰闄�"
+            ? store.getters.nickName
+            : "",
+        leaveldeptcodes: [],
+        leavehospitaldistrictcodes: [],
+      },
+      orgname: "",
+      propss: { multiple: true },
+      options: [],
+
+      topicoptions: [
+        {
+          value: null,
+          label: "鍏ㄩ儴",
+        },
+        {
+          value: 1,
+          label: "寰呴殢璁�",
+        },
+        {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
+          value: 3,
+          label: "鏈畬鎴�",
+        },
+        {
+          value: 4,
+          label: "宸插畬鎴�",
+        },
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
+        },
+      ],
+
+      sextype: [
+        {
+          value: 1,
+          label: "鐢�",
+        },
+        {
+          value: 2,
+          label: "濂�",
+        },
+      ],
+      topicoptionsyj: [
+        {
+          value: 1,
+          label: "寮傚父",
+        },
+        {
+          value: 2,
+          label: "璀﹀憡",
+        },
+        {
+          value: 0,
+          label: "姝e父",
+        },
+      ],
+      url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo",
+      postData: {
+        XiaoXiTou: {
+          FaSongFCSJC: "ZJHES",
+          FaSongJGID: localStorage.getItem("orgid"),
+          FaSongJGMC: localStorage.getItem("orgname"),
+          FaSongSJ: "2025-01-09聽17:29:36",
+          FaSongXTJC: "SUIFANGXT",
+          FaSongXTMC: "闅忚绯荤粺",
+          XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171",
+          XiaoXiLX: "SC_LC_360STCX",
+          XiaoXiMC: "360聽瑙嗗浘鏌ヨ",
+          ZuHuID: localStorage.getItem("ZuHuID"),
+          ZuHuMC: localStorage.getItem("orgname"),
+        },
+        YeWuXX: {
+          BingRenXX: {
+            ZhengJianHM: "",
+            ZhengJianLXDM: "01",
+            ZhengJianLXMC: "灞呮皯韬唤璇�",
+            ZuZhiJGID: localStorage.getItem("orgid"),
+            ZuZhiJGMC: localStorage.getItem("orgname"),
+          },
+          YongHuXX: {
+            XiTongID: "SUIFANGXT",
+            XiTongMC: "闅忚绯荤粺",
+            YongHuID: localStorage.getItem("YongHuID"),
+            YongHuXM: localStorage.getItem("YongHuXM"),
+            ZuZhiJGID: localStorage.getItem("orgid"),
+            ZuZhiJGMC: localStorage.getItem("orgname"),
+            idp: "lyra",
+          },
+        },
+      },
+      amendtag: false,
+      errtype: "",
+      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: {},
+    };
+  },
+  watch: {
+    // 鐩戝惉璺敱鍙傛暟鍙樺寲
+    "$route.query": {
+      handler(newQuery, oldQuery) {
+        if (newQuery?.errtype !== oldQuery?.errtype) {
+          console.log(22);
+          this.loadData();
+        }
+      },
+      immediate: true,
+    },
+  },
+  created() {
+    this.serviceState = store.getters.serviceState;
+    this.checkboxlist = store.getters.checkboxlist;
+    this.orgname = localStorage.getItem("orgname");
+    this.errtype = this.$route.query.errtype;
+
+    this.leavehospitaldistrictcode =
+      this.$route.query.leavehospitaldistrictcode;
+    this.sourcetype[0].children = store.getters.belongDepts.map((dept) => {
+      return {
+        label: dept.deptName,
+        value: dept.deptCode,
+      };
+    });
+    this.sourcetype[1].children = store.getters.belongWards.map((dept) => {
+      return {
+        label: dept.districtName,
+        value: dept.districtCode,
+      };
+    });
+    if (this.errtype == 1) {
+      this.toleadExport(2);
+    } else if (this.errtype == 2) {
+      // 寰呴殢璁�
+      this.toleadExport(3);
+    } else if (this.errtype == 3) {
+      // 澶辫触
+      this.toleadExport(4);
+    } else if (this.errtype == 4) {
+      // 寮傚父
+      this.toleadExport(2);
+    } else if (this.errtype == 5) {
+      // 鍏ㄩ儴
+      this.toleadExport(5);
+    } else {
+      this.getList(1);
+    }
+    this.getConfigKey("sys.user.initPassword").then((response) => {
+      this.initPassword = response.msg;
+    });
+  },
+  activated() {
+    this.errtype = this.$route.query.errtype;
+    if (this.errtype == 1) {
+      this.toleadExport(2);
+    } else if (this.errtype == 2) {
+      // 寰呴殢璁�
+      this.toleadExport(3);
+    } else if (this.errtype == 3) {
+      // 澶辫触
+      this.toleadExport(4);
+    } else if (this.errtype == 4) {
+      // 寮傚父
+      this.toleadExport(2);
+    } else if (this.errtype == 5) {
+      // 鍏ㄩ儴
+      this.toleadExport(5);
+    } else {
+      this.getList(1);
+    }
+  },
+  methods: {
+    /** 鏌ヨ闅忚鏈嶅姟鍒楄〃 */
+    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);
+      }
+      if (this.endOut == 0) {
+        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
+          this.getEndOfDay()
+        );
+      }
+
+      // 鎺ュ彈寮傚父璺宠浆
+      if (this.errtype) {
+        this.topqueryParams.leavehospitaldistrictcodes.push(
+          this.leavehospitaldistrictcode
+        );
+      }
+
+      this.loading = true;
+
+      if (
+        this.topqueryParams.leavehospitaldistrictcodes[0] &&
+        this.topqueryParams.leaveldeptcodes[0]
+      ) {
+        this.topqueryParams.deptOrDistrict = 2;
+      } else {
+        this.topqueryParams.deptOrDistrict = 1;
+      }
+
+      if (!this.followupAuthority()) {
+        this.$message.warning("鏈厤缃瀹�/鐥呭尯鐩稿叧鏉冮檺涓嶅彲鏌ヨ");
+        this.loading = false;
+        return Promise.reject(new Error("鏃犳潈闄愭煡璇�"));
+      }
+
+      try {
+        const response = await getTaskservelist(this.topqueryParams);
+
+        // 鉁� 绗竴姝ワ細鍏堥攣瀹氭仮澶嶇姸鎬�
+        this.isRestoring = true;
+
+        // 鉁� 绗簩姝ワ細鍐嶆洿鏂版暟鎹紙杩欎細瑙﹀彂 selection-change锛屼絾琚攣浣忎簡锛�
+        this.userList = response.rows[0].serviceSubtaskList;
+        this.total = response.total;
+
+        // 鉁� 绗笁姝ワ細鎭㈠閫変腑鐘舵��
+        // this.restoreSelection();
+        this.$nextTick(() => {
+          this.restoreSelection();
+        });
+
+        // 鉁� 绗洓姝ワ細澶勭悊鍏朵粬鏁版嵁
+        if (refresh) {
+          this.cardlist[0].value =
+            Number(response.rows[0].wxsf) + Number(response.rows[0].xsf) || 0;
+          this.cardlist[1].value = response.rows[0].wxsf || 0;
+          this.ycvalue = Number(response.rows[0].yc) || 0;
+          this.jgvalue = response.rows[0].jg;
+          this.cardlist[2].value = response.rows[0].xsf || 0;
+          this.cardlist[3].value = response.rows[0].dsf || 0;
+          this.cardlist[4].value = response.rows[0].ywc || 0;
+          this.yfsvalue = response.rows[0].yfs;
+        }
+
+        // 鉁� 绗簲姝ワ細澶勭悊 preachform 绛夊叾浠栨暟鎹�
+        this.userList.forEach((item) => {
+          let idArray = null;
+          if (item.endtime) {
+            item.endDay = this.daysBetween(item.endtime);
+          }
+
+          if (item.preachform) {
+            item.preachformson = item.preachform;
+            idArray = item.preachform.split(",");
+
+            item.preachform = idArray.map((value) => {
+              const item = this.checkboxlist.find(
+                (item) => item.value == value
+              );
+              return item ? item.label : null;
+            });
+          }
+          if (item.currentPreachform) {
+            item.currentPreachform = this.checkboxlist.find(
+              (item) => item.value == item.currentPreachform
+            )?.value;
+            console.log(item.currentPreachform, "mi");
+          }
+        });
+
+        this.total = response.total;
+        this.loading = false;
+
+        // 鉁� 绗叚姝ワ細瑙i攣
+        this.$nextTick(() => {
+          this.isRestoring = false;
+        });
+      } catch (error) {
+        console.error("鑾峰彇鍒楄〃澶辫触:", error);
+        this.loading = false;
+        this.isRestoring = false;
+      }
+    },
+    loadData() {
+      this.errtype = this.$route.query.errtype;
+      if (this.errtype == 1) {
+        this.toleadExport(2);
+      } else if (this.errtype == 2) {
+        // 寰呴殢璁�
+        this.toleadExport(3);
+      } else if (this.errtype == 3) {
+        // 澶辫触
+        this.toleadExport(4);
+      } else if (this.errtype == 4) {
+        // 寮傚父
+        this.toleadExport(2);
+      } else if (this.errtype == 5) {
+        // 鍏ㄩ儴
+        this.toleadExport(5);
+      } else {
+        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瀵硅薄
+      date.setHours(23, 59, 59, 0); // 灏嗘椂闂磋缃负23:59:59.000
+      return date;
+    },
+    formatDateToYYYYMMDDHHMMSS(date) {
+      const year = date.getFullYear();
+      const month = String(date.getMonth() + 1).padStart(2, "0"); // 鏈堜唤琛ラ浂
+      const day = String(date.getDate()).padStart(2, "0"); // 鏃ユ湡琛ラ浂
+      const hours = String(date.getHours()).padStart(2, "0");
+      const minutes = String(date.getMinutes()).padStart(2, "0");
+      const seconds = String(date.getSeconds()).padStart(2, "0");
+
+      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);
+    },
+    getCurrentDate() {
+      const now = new Date();
+      return now.toISOString().slice(0, 10); // 鎴彇鍓�10涓瓧绗︼紝鍗� YYYY-MM-DD
+    },
+
+    buidegetTasklist(type) {
+      if (type) {
+        this.resetQuerykj();
+      }
+      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 (this.errtype) {
+        this.topqueryParams.leavehospitaldistrictcodes.push(
+          this.leavehospitaldistrictcode
+        );
+      }
+      let obj = {
+        pageNum: 1,
+        pageSize: 10,
+        leavehospitaldistrictcodes:
+          this.topqueryParams.leavehospitaldistrictcodes,
+        sendstates: [2, 3],
+        leaveldeptcodes: this.topqueryParams.leaveldeptcodes,
+      };
+      buidegetTasklist(obj).then((response) => {
+        this.userList = response.rows[0].serviceSubtaskList;
+        this.total = response.total;
+        this.cardlist[0].value =
+          Number(response.rows[0].wxsf) + Number(response.rows[0].xsf) || 0;
+        this.cardlist[1].value = response.rows[0].wzx;
+        this.cardlist[2].value = response.rows[0].ysf;
+        this.ycvalue = Number(response.rows[0].yc) || 0;
+        this.jgvalue = response.rows[0].jg;
+        this.cardlist[3].value = response.rows[0].fssb;
+        this.cardlist[4].value = response.rows[0].dsf;
+        // this.cardlist[5].value = response.rows[0].yfs2;
+        this.yfsvalue = response.rows[0].yfs;
+        this.loading = false;
+        this.userList.forEach((item) => {
+          let idArray = null;
+          if (item.endtime) {
+            item.endDay = this.daysBetween(item.endtime);
+          }
+
+          if (item.preachform) {
+            if (item.endtime) {
+              item.preachformson = item.preachform;
+              idArray = item.preachform.split(",");
+            }
+
+            item.preachform = idArray.map((value) => {
+              // 鏌ユ壘id瀵瑰簲鐨勫璞�
+              const item = this.checkboxlist.find(
+                (item) => item.value == value
+              );
+              // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖null
+              return item ? item.label : null;
+            });
+          }
+        });
+        this.total = response.total;
+      });
+    },
+    // 鏌ョ湅闂ㄨ瘖闅忚璇︽儏
+    Referencequestion(row) {
+      this.previewVisible = true;
+    },
+    // 娣诲姞寮规鎼滅储
+    remoteMethod(query) {
+      if (query !== "") {
+        this.loading = true;
+        setTimeout(() => {
+          this.loading = false;
+          this.options = this.list.filter((item) => {
+            return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1;
+          });
+        }, 200);
+      } else {
+        this.options = [];
+      }
+    },
+    // 褰卞儚闅忚鐘舵�佷慨鏀�
+    handleStatusChange(row) {
+      let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+      this.$modal
+        .confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵')
+        .then(function () {
+          return changeUserStatus(row.userId, row.status);
+        })
+        .then(() => {
+          this.$modal.msgSuccess(text + "鎴愬姛");
+        })
+        .catch(function () {
+          row.status = row.status === "0" ? "1" : "0";
+        });
+    },
+
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        userId: undefined,
+        deptId: undefined,
+        userName: undefined,
+        nickName: undefined,
+        password: undefined,
+        phonenumber: undefined,
+        email: undefined,
+        sex: undefined,
+        status: "0",
+        remark: undefined,
+        postIds: [],
+        roleIds: [],
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    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.topqueryParams.pageNum = 1;
+      // 鍒ゆ柇鏄笉鏄伐浣滃彴蹇嵎鏌ヨ
+      if (this.errtype != 2) {
+        this.topqueryParams.startOutHospTime = this.dateRange[0];
+        this.topqueryParams.endOutHospTime = this.dateRange[1];
+        this.topqueryParams.startSendDateTime = this.dateRangefs[0];
+        this.topqueryParams.endSendDateTime = this.dateRangefs[1];
+      }
+      this.getList(refresh);
+    },
+    // 鎮h�呰寖鍥村鐞�
+    handleChange(value) {
+      console.log("閫夋嫨鐨勬偅鑰呰寖鍥�:", value);
+
+      // 娓呯┖涔嬪墠鐨勬煡璇㈠弬鏁�
+      this.topqueryParams.leavehospitaldistrictcodes = [];
+      this.topqueryParams.leaveldeptcodes = [];
+      this.topqueryParams.searchscope = null;
+
+      if (!value || value.length === 0) {
+        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;
+      }
+    },
+    // 鏈嶅姟鐘舵�佸彉鏇村鐞�
+    handleServiceStatusChange(value) {
+      // 娓呯┖閫夋嫨
+      if (value === null || value === undefined || value === "") {
+        this.topqueryParams.sendstateView = null;
+        this.topqueryParams.sendstate = null;
+        return;
+      }
+      console.log(value, "value");
+
+      // 涓�绾ц妭鐐圭殑鍊硷紙澶т簬绛変簬10锛�
+      if (value >= 10) {
+        // 閫変腑浜嗕竴绾�
+        switch (value) {
+          case 10:
+            this.topqueryParams.sendstateView = 1; // 寰呴殢璁�
+            break;
+          case 20:
+            this.topqueryParams.sendstateView = 2; // 宸插畬鎴�
+            break;
+          case 30:
+            this.topqueryParams.sendstateView = 3; // 鏃犻渶闅忚
+            break;
+        }
+        this.topqueryParams.sendstate = null;
+      } else {
+        // 閫変腑浜嗕簩绾э紙鍏蜂綋鐘舵�侊級
+        this.topqueryParams.sendstateView = null;
+        this.topqueryParams.sendstate = value;
+      }
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.dateRange = [];
+      this.dateRangefs = [];
+      this.serviceStatusValue = 10;
+      this.topqueryParams = {
+        pageNum: 1,
+        pageSize: 10,
+        sendstateView: 1,
+        sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
+        serviceType: 2,
+        searchscope: 3,
+        visitCount: 1,
+        scopetype: [],
+        leaveldeptcodes: [],
+        leavehospitaldistrictcodes: [],
+      };
+      this.handleQuery(1);
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuerykj() {
+      this.dateRange = [];
+      this.dateRangefs = [];
+      this.serviceStatusValue = null;
+      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) {
+      // 鉁� 濡傛灉鏄仮澶嶉�変腑鐘舵�佽Е鍙戠殑锛岀洿鎺ヨ繑鍥�
+      if (this.isRestoring) {
+        console.log("姝e湪鎭㈠閫変腑鐘舵�侊紝璺宠繃 handleSelectionChange");
+        return;
+      }
+
+      console.log("handleSelectionChange 琚Е鍙戯紝閫変腑琛屾暟:", rows.length);
+
+      // 鍙仛娣诲姞鎿嶄綔
+      rows.forEach((row) => {
+        this.selectedRowMap.set(row.id, {
+          ...row,
+          authenticity: row.authenticity || 0,
+          weekFinish: row.weekFinish || 0,
+          standard: row.standard || 0,
+          timeliness: row.timeliness || 0,
+          library: row.library || 0,
+          environment: row.environment || 0,
+          doctorSatisfaction: row.doctorSatisfaction || 0,
+          nurseSatisfaction: row.nurseSatisfaction || 0,
+        });
+      });
+
+      this.selectedRows = Array.from(this.selectedRowMap.values());
+      this.multiple = this.selectedRows.length === 0;
+    },
+
+    // 璁$畻鎬诲垎
+    calculateTotal(row) {
+      return (
+        (row.authenticity || 0) +
+        (row.weekFinish || 0) +
+        (row.standard || 0) +
+        (row.timeliness || 0) +
+        (row.library || 0) +
+        (row.environment || 0) +
+        (row.doctorSatisfaction || 0) +
+        (row.nurseSatisfaction || 0)
+      );
+    },
+
+    // 淇濆瓨璇勫垎
+    saveScores() {
+      this.selectedRows.forEach((item) => {
+        item.createBy = null;
+        item.patName = item.sendname;
+        item.hospitaldistrictname = item.leavehospitaldistrictname;
+      });
+      addsatisfaction(this.selectedRows).then((res) => {
+        if (res.code == 200) {
+          this.$message.success("璇勫垎淇濆瓨鎴愬姛");
+          this.scoreDialogVisible = false;
+          this.selectedRows = [];
+          this.$refs.userform.clearSelection();
+        } else {
+          this.$modal.msgWarning("璇勫垎淇濆瓨澶辫触");
+          this.scoreDialogVisible = false;
+          this.selectedRows = [];
+          this.$refs.userform.clearSelection();
+        }
+      });
+      // 杩欓噷鍙互娣诲姞淇濆瓨閫昏緫锛屽璋冪敤API淇濆瓨璇勫垎
+    },
+    //鍒犻櫎閫夐」
+    handleClose(tag) {
+      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
+    },
+    //瑙﹀彂鏂板杈撳叆
+    showInput() {
+      this.inputVisible = true;
+      this.$nextTick((_) => {
+        this.$refs.saveTagInput.$refs.input.focus();
+      });
+    },
+    //鑾峰彇澶卞幓鐒︾偣瑙﹀彂
+    handleInputConfirm() {
+      let inputValue = this.inputValue;
+      if (inputValue) {
+        this.dynamicTags.push(inputValue);
+      }
+      this.inputVisible = false;
+      this.inputValue = "";
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.$router.push({
+        path: "/followvisit/QuestionnaireTask",
+        query: {
+          type: 2,
+          serviceType: 2,
+        },
+      });
+    },
+    //鎮h��360璺宠浆
+    gettoken360(sfzh, drcode, drname, id) {
+      const orgname = localStorage.getItem("orgname");
+      if (orgname == "鍗楀崕澶у闄勫睘绗竴鍖婚櫌") {
+        query360PatInfonh(id).then((res) => {
+          if (res.data) {
+            window.open(res.data, "_blank");
+          } else {
+            this.$modal.msgWarning("360鏌ヨ鏃犵粨鏋�");
+          }
+        });
+        return;
+      } else if (
+        orgname == "绗竴浜烘皯鍖婚櫌婀栨花闄㈠尯" ||
+        orgname == "绗竴浜烘皯鍖婚櫌鍚村北闄㈠尯"
+      ) {
+        let url = `http://192.200.81.189:9100/blj/view?BINGRENID=${id}&YONGHUID=DBA`;
+        window.open(url, "_blank");
+        return;
+      }
+
+      this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh;
+
+      query360PatInfo(this.postData).then((res) => {
+        if (res.data.url) {
+          window.open(res.data.url, "_blank");
+          // this.linkUrl = res.data.url;
+        } else {
+          this.$modal.msgWarning("360鏌ヨ鏃犵粨鏋�");
+        }
+      });
+    },
+
+    /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */
+    handleResetPwd(row) {
+      this.$prompt('璇疯緭鍏�"' + row.userName + '"鐨勬柊瀵嗙爜', "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        closeOnClickModal: false,
+        inputPattern: /^.{5,20}$/,
+        inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+      })
+        .then(({ value }) => {
+          resetUserPwd(row.userId, value).then((response) => {
+            this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value);
+          });
+        })
+        .catch(() => {});
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.Labelchange = false;
+      this.reset();
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm: function () {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.form.isoperation = 2;
+          this.form.notrequiredFlag = 1;
+          alterpatient(this.form)
+            .then((response) => {
+              console.log(response);
+            })
+            .then(() => {
+              this.getList(1);
+              this.$modal.msgSuccess("鎮h�呰繃婊ゆ垚鍔�");
+            });
+
+          this.reset();
+          this.Labelchange = false;
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+        .then(function () {
+          return delUser(userIds);
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
+    },
+    // 鍏ㄩ儴鍋滄
+    AllStop() {
+      this.$modal
+        .confirm("鏄惁鍋滄鍏ㄩ儴浠诲姟锛�")
+        .then(function () {
+          return console.log("鍋滄鎴愬姛");
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgWarning("鍋滄鎴愬姛");
+        })
+        .catch(() => {});
+    },
+    // 鍏ㄩ儴寮�濮�
+    AllStarted() {
+      this.$modal
+        .confirm("鏄惁寮�鍚叏閮ㄤ换鍔★紵")
+        .then(function () {
+          return console.log("寮�鍚垚鍔�");
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgSuccess("寮�鍚垚鍔�");
+        })
+        .catch(() => {});
+    },
+    // 浠诲姟閲嶇疆
+    TaskReset() {
+      this.$modal
+        .confirm("鏄惁閲嶇疆閫変腑鐨勪换鍔¢」锛�")
+        .then(function () {
+          return console.log("閫変腑鎴愬姛");
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgSuccess("閲嶇疆鎴愬姛");
+        })
+        .catch(() => {});
+    },
+
+    // 璺宠浆璇︽儏椤�
+    Seedetails(row) {
+      let type = "";
+      console.log(row, "rwo");
+      if (row.type == 1) {
+        type = 1;
+      }
+      this.$router.push({
+        path: "/followvisit/record/detailpage/",
+        query: {
+          taskid: row.taskid,
+          patid: row.patid,
+          id: row.id,
+          Voicetype: type,
+          visitCount: this.topqueryParams.visitCount,
+        },
+      });
+    },
+    // 鍐嶆闅忚
+    followupvisit(row) {
+      this.zcform = row;
+      this.zcform.endtime = this.formatTime(this.zcform.endtime);
+      this.dialogFormVisible = true;
+    },
+    onSubmit() {},
+    // 鏆傚仠鏈嶅姟
+    handlestop(row) {
+      let objson = row;
+      this.$modal
+        .confirm(
+          '鏄惁纭鏆傚仠浠诲姟鍚嶇О涓�"' +
+            row.taskName +
+            '鎮h�呭悕绉颁负"' +
+            row.sendname +
+            '"鐨勬暟鎹」锛�'
+        )
+        .then(() => {
+          getTaskservelist({
+            patid: row.patid,
+            taskid: row.taskid,
+          }).then((res) => {
+            if (res.code == 200) {
+              objson.sendstate = 4;
+              objson.remark = "鏈嶅姟鏆傚仠";
+              Editsingletaskson(objson).then((res) => {
+                if (res.code) {
+                  this.$modal.msgSuccess("璁板綍鎴愬姛");
+                  this.getList(1);
+                }
+              });
+            }
+          });
+        })
+        .catch(() => {});
+    },
+    // 鎮h�呰繃婊よЕ鍙�
+    handleUpdate(row) {
+      particularpatient(row.patid).then((response) => {
+        this.form = response.data;
+        this.form.filterDrname = store.getters.nickName;
+      });
+      this.amendtag = true;
+      this.Labelchange = true;
+    },
+    // 渚挎嵎鎸夐挳
+    toleadExport(too, type) {
+      if (type) {
+        this.resetQuerykj();
+      }
+
+      if (too == 1) {
+        this.topqueryParams.sendstate = 4;
+        this.topqueryParams.excep = null;
+      } else if (too == 2) {
+        this.topqueryParams.excep = 1;
+        this.topqueryParams.sendstate = null;
+      } else if (too == 3) {
+        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
+          this.getEndOfDay()
+        );
+
+        this.topqueryParams.excep = null;
+        this.topqueryParams.sendstate = 2;
+        this.topqueryParams.scopetype = null;
+      } else if (too == 4) {
+        this.topqueryParams.excep = null;
+        this.topqueryParams.sendstate = 5;
+        this.topqueryParams.scopetype = null;
+      } else if (too == 5) {
+        this.topqueryParams.excep = null;
+        this.topqueryParams.sendstate = null;
+        this.topqueryParams.scopetype = null;
+      }
+      this.handleQuery(1);
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      const originalPageNum = this.topqueryParams.pageNum;
+      const originalPageSize = this.topqueryParams.pageSize;
+      this.topqueryParams.pageNum = null;
+      this.topqueryParams.pageSize = null;
+      this.topqueryParams.subIdList = this.selectedRows.map((item) => item.id);
+      this.download(
+        "smartor/serviceSubtask/patItemExport",
+        {
+          ...this.topqueryParams,
+        },
+        `user_${new Date().getTime()}.xlsx`
+      ).finally(() => {
+        // 瀵煎嚭鍚庢仮澶嶅垎椤靛弬鏁�
+        this.topqueryParams.pageNum = originalPageNum;
+        this.topqueryParams.pageSize = originalPageSize;
+        this.getList();
+      });
+    },
+    // 寮傚父鍒楁覆鏌�
+    tableRowClassName({ row, rowIndex }) {
+      if (row.excep == 1) {
+        return "warning-row";
+      } else if (row.excep == 2) {
+        return "remind-row";
+      }
+      return "";
+    },
+    restoreSelection() {
+      if (!this.$refs.userform) {
+        console.log("琛ㄦ牸寮曠敤涓嶅瓨鍦�");
+        return;
+      }
+
+      console.log("鎵ц restoreSelection");
+
+      // 娓呴櫎褰撳墠椤电殑鎵�鏈夐�変腑鐘舵��
+      this.$refs.userform.clearSelection();
+
+      // 鎵惧嚭褰撳墠椤典腑鍝簺琛屾槸琚�変腑鐨�
+      const toBeSelected = this.userList.filter((row) =>
+        this.selectedRowMap.has(row.id)
+      );
+
+      console.log("闇�瑕佹仮澶嶇殑琛屾暟:", toBeSelected.length);
+
+      // 閲嶆柊閫変腑杩欎簺琛�
+      toBeSelected.forEach((row) => {
+        this.$refs.userform.toggleRowSelection(row, true);
+      });
+    },
+    // 鉁� 澶勭悊琛ㄥご鍏ㄩ�変簨浠�
+    handleSelectAll(selection) {
+      console.log("鍏ㄩ�変簨浠惰Е鍙戯紝閫変腑琛屾暟:", selection.length);
+
+      // 濡傛灉 selection 闀垮害绛変簬褰撳墠椤佃鏁帮紝璇存槑鏄叏閫�
+      if (selection.length === this.userList.length) {
+        // 鍏ㄩ�夊綋鍓嶉〉
+        this.userList.forEach((row) => {
+          this.selectedRowMap.set(row.id, {
+            ...row,
+            authenticity: row.authenticity || 0,
+            weekFinish: row.weekFinish || 0,
+            standard: row.standard || 0,
+            timeliness: row.timeliness || 0,
+            library: row.library || 0,
+            environment: row.environment || 0,
+            doctorSatisfaction: row.doctorSatisfaction || 0,
+            nurseSatisfaction: row.nurseSatisfaction || 0,
+          });
+        });
+      } else {
+        // 鍙栨秷鍏ㄩ�夛細娓呴櫎褰撳墠椤电殑閫変腑鐘舵��
+        this.userList.forEach((row) => {
+          this.selectedRowMap.delete(row.id);
+        });
+      }
+
+      // 鏇存柊 selectedRows
+      this.selectedRows = Array.from(this.selectedRowMap.values());
+      this.multiple = this.selectedRows.length === 0;
+    },
+
+    // 娓呴櫎鎵�鏈夐�変腑
+    clearAllSelection() {
+      this.selectedRowMap.clear();
+      this.selectedRows = [];
+      this.multiple = true;
+
+      if (this.$refs.userform) {
+        this.$refs.userform.clearSelection();
+      }
+    },
+
+    // 鑾峰彇閫変腑鏁伴噺
+    getSelectedCount() {
+      return this.selectedRowMap.size;
+    },
+    // 鍒涘缓鍐嶆闅忚鏈嶅姟
+    setupsubtask() {
+      this.$refs["zcform"].validate((valid) => {
+        if (valid) {
+          this.zcform.remark =
+            this.zcform.remark + "銆�" + this.getCurrentTime() + "銆�";
+          let form = structuredClone(this.zcform);
+          form.visitTime = this.formatTime(form.date1);
+          form.finishtime = "";
+          if (form.resource) {
+            if (form.resource == 2) {
+              form.serviceType = 13;
+            }
+          } else {
+            this.$modal.msgError("鏈�夋嫨闅忚鏂瑰紡");
+          }
+          form.id = null;
+          form.sendstate = 2;
+          form.preachform = form.preachformson;
+          form.longTask = 0;
+          addserviceSubtask(form).then((res) => {
+            if (res.code == 200) {
+              this.$modal.msgSuccess("鍒涘缓鎴愬姛");
+            } else {
+              this.$modal.msgError("鍒涘缓澶辫触");
+            }
+            this.dialogFormVisible = false;
+          });
+        }
+      });
+    },
+    getCurrentTime() {
+      const now = new Date();
+      const year = now.getFullYear();
+      const month = String(now.getMonth() + 1).padStart(2, "0");
+      const day = String(now.getDate()).padStart(2, "0");
+      const hours = String(now.getHours()).padStart(2, "0");
+      const minutes = String(now.getMinutes()).padStart(2, "0");
+      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(() => {});
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-button--primary.is-plain {
+  color: #ffffff;
+  background: #409eff;
+  border-color: #4fabe9;
+}
+
+.document {
+  // width: 100px;
+  height: 50px;
+}
+::v-deep.el-table .warning-row {
+  background: #eec4c4;
+}
+::v-deep.el-table .remind-row {
+  background: #fcf5aa;
+}
+
+.documentf {
+  display: flex;
+  justify-content: flex-end;
+}
+
+.download {
+  text-align: center;
+
+  .el-upload__tip {
+    font-size: 23px;
+  }
+
+  .el-upload__text {
+    font-size: 23px;
+  }
+}
+
+.uploading {
+  margin-top: 20px;
+  margin: 20px;
+  padding: 30px;
+  background: #ffffff;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+}
+
+.el-tag + .el-tag {
+  margin-left: 10px;
+}
+
+.button-new-tag {
+  margin-left: 10px;
+  height: 32px;
+  line-height: 30px;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+
+.input-new-tag {
+  width: 90px;
+  margin-left: 10px;
+  vertical-align: bottom;
+}
+
+.drexamine {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 30px;
+  background: #daeaf5;
+
+  img {
+    width: 100px;
+    height: 100px;
+  }
+}
+
+.qrcode-dialo {
+  // text-align: center;
+  //   display: flex;
+  margin: 20px;
+  padding: 30px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+
+  .topic-dev {
+    margin-bottom: 25px;
+    font-size: 20px !important;
+
+    .dev-text {
+      margin-bottom: 10px;
+    }
+  }
+}
+::v-deep.leftvlue .el-card__body {
+  background: #f2f8ff;
+  color: #324a9b;
+}
+::v-deep.leftvlue .el-card__body:hover {
+  background: #3664d9;
+  color: #fff;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+::v-deep.errleftvlue .el-card__body {
+  background: #fdd0d7;
+}
+::v-deep.errleftvlue .el-card__body:hover {
+  background: #f88d96;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+::v-deep.jgleftvlue .el-card__body:hover {
+  background: #f7f075;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+
+::v-deep.ysfleftvlue .el-card__body {
+  background: #d0fdd8;
+}
+::v-deep.ysfleftvlue .el-card__body:hover {
+  background: #0abc54;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+.button-bb {
+  font-weight: 500;
+  background-color: #2ba05c;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+.button-xq {
+  font-weight: 500;
+  background-color: #409eff;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+.button-sc {
+  font-weight: 500;
+  background-color: #b3a21f;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+.button-zx {
+  background: #324a9b;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+
+::v-deep.el-radio-group {
+  span {
+    font-size: 24px;
+  }
+}
+.purple-button {
+  background-color: #7e22ce;
+  border-color: #7e22ce;
+  color: #fff;
+}
+
+.purple-button:hover,
+.purple-button:focus {
+  background-color: #9333ea;
+  border-color: #9333ea;
+}
+
+.purple-button:active {
+  background-color: #6b21a8;
+  border-color: #6b21a8;
+}
+.button-textxga {
+  color: #de7897;
+}
+.button-textxgc {
+  color: #9054e4;
+}
+.purple-button.is-disabled {
+  background-color: #d8b4fe;
+  border-color: #d8b4fe;
+  opacity: 1; /* 淇濇寔绂佺敤鐘舵�侀�忔槑搴� */
+}
+.statistics-tooltip {
+  background: #ffffff !important;
+  color: #1976d2 !important;
+  border: 1px solid #bbdefb !important;
+  border-radius: 8px !important;
+  padding: 10px 14px !important;
+  font-size: 13px !important;
+  line-height: 1.6 !important;
+  box-shadow: 0 4px 12px rgba(25, 118, 210, 0.15) !important;
+}
+.statistics-tooltip .popper__arrow {
+  border-bottom-color: #bbdefb !important;
+}
+
+.statistics-tooltip .popper__arrow::after {
+  border-bottom-color: #ffffff !important;
+}
+// 閫夐」瀛椾綋鏀惧ぇ
+// ::v-deep.el-checkbox-group {
+//   span {
+//     font-size: 24px;
+//   }
+// }
+.filter-warning {
+  margin-top: 8px;
+  padding: 10px 14px;
+  background: #fff7e6;
+  border: 1px solid #ffe58f;
+  border-radius: 6px;
+  color: #d46b08;
+  font-size: 18px;
+  line-height: 1.6;
+  display: flex;
+  align-items: flex-start;
+  gap: 6px;
+}
+
+.filter-warning .el-icon-warning-outline {
+  font-size: 16px;
+  color: #faad14;
+  flex-shrink: 0;
+  margin-top: 2px;
+}
+
+::v-deep .el-table__row.selected-row:hover > td {
+  background-color: #e6f7ff !important;
+}
+
+/* 閫変腑淇℃伅鏄剧ず */
+.selected-info {
+  padding: 10px 0;
+  font-size: 14px;
+  color: #666;
+}
+</style>
diff --git a/src/views/followvisit/record/detailpage/components/AdviceList.vue b/src/views/followvisit/record/detailpage/components/AdviceList.vue
new file mode 100644
index 0000000..5139560
--- /dev/null
+++ b/src/views/followvisit/record/detailpage/components/AdviceList.vue
@@ -0,0 +1,315 @@
+<template>
+  <div class="advice-list">
+    <!-- 鎼滅储鏍� -->
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="70px">
+      <el-form-item label="寤鸿绫诲瀷" prop="adviceType">
+        <el-select v-model="queryParams.adviceType" placeholder="鍏ㄩ儴绫诲瀷" clearable style="width: 140px">
+          <el-option label="鎶曡瘔" value="1" />
+          <el-option label="寤鸿" value="2" />
+          <el-option label="琛ㄦ壃" value="3" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鍐呭" prop="content">
+        <el-input v-model="queryParams.content" placeholder="璇疯緭鍏ュ唴瀹瑰叧閿瓧" clearable style="width: 180px" />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+      </el-form-item>
+    </el-form>
+
+    <!-- 鎿嶄綔鏍� -->
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">鏂板</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete">鍒犻櫎</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">瀵煎嚭</el-button>
+      </el-col>
+    </el-row>
+
+    <!-- 琛ㄦ牸 -->
+    <el-table v-loading="loading" :data="adviceList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="50" align="center" />
+      <el-table-column label="寤鸿绫诲瀷" align="center" prop="adviceType" width="100">
+        <template slot-scope="scope">
+          <el-tag :type="adviceTypeTag(scope.row.adviceType)" size="small">
+            {{ adviceTypeText(scope.row.adviceType) }}
+          </el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="鍐呭" align="center" prop="content" min-width="200" :show-overflow-tooltip="true" />
+      <el-table-column label="娑夊強绉戝" align="center" prop="deptCodes" width="140" :show-overflow-tooltip="true">
+        <template slot-scope="scope">{{ getDeptNames(scope.row.deptCodes) }}</template>
+      </el-table-column>
+      <el-table-column label="娑夊強鐥呭尯" align="center" prop="wardCodes" width="140" :show-overflow-tooltip="true">
+        <template slot-scope="scope">{{ getWardNames(scope.row.wardCodes) }}</template>
+      </el-table-column>
+      <el-table-column label="澶囨敞" align="center" prop="remark" min-width="150" :show-overflow-tooltip="true" />
+      <el-table-column label="鍒涘缓鑰�" align="center" prop="createBy" width="100" />
+      <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="160" />
+      <el-table-column label="鎿嶄綔" align="center" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">淇敼</el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" style="color: #f56c6c" @click="handleDelete(scope.row)">鍒犻櫎</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 鏂板/缂栬緫寮圭獥 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body :close-on-click-modal="false">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="寤鸿绫诲瀷" prop="adviceType">
+          <el-radio-group v-model="form.adviceType">
+            <el-radio label="1">鎶曡瘔</el-radio>
+            <el-radio label="2">寤鸿</el-radio>
+            <el-radio label="3">琛ㄦ壃</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="娑夊強绉戝" prop="deptCodes">
+          <el-select v-model="form.deptCodes" multiple filterable clearable placeholder="璇烽�夋嫨娑夊強绉戝" style="width: 100%">
+            <el-option v-for="d in deptOptions" :key="d.value" :label="d.label" :value="d.value" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="娑夊強鐥呭尯" prop="wardCodes">
+          <el-select v-model="form.wardCodes" multiple filterable clearable placeholder="璇烽�夋嫨娑夊強鐥呭尯" style="width: 100%">
+            <el-option v-for="w in wardOptions" :key="w.value" :label="w.label" :value="w.value" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="娑夊強浜哄憳" prop="involvedUsers">
+          <el-input v-model="form.involvedUsers" placeholder="娑夊強浜哄憳浠g爜锛屽涓敤閫楀彿鍒嗛殧" />
+        </el-form-item>
+        <el-form-item label="鍐呭" prop="content">
+          <el-input type="textarea" :rows="3" v-model="form.content" placeholder="璇疯緭鍏ユ姇璇�/寤鸿/琛ㄦ壃鍐呭" />
+        </el-form-item>
+        <el-form-item label="澶囨敞" prop="remark">
+          <el-input type="textarea" :rows="2" v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="open = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listAdvice, getAdvice, addAdvice, updateAdvice, delAdvice } from "@/api/followvisit/advice";
+import store from "@/store";
+
+export default {
+  name: "AdviceList",
+  props: {
+    // 浠诲姟ID锛堝疄浣� subid锛�
+    subid: { type: [Number, String], default: null },
+    // 鏈嶅姟ID锛堝疄浣� taskid锛�
+    taskid: { type: [Number, String], default: null },
+    // 鐥呬汉ID
+    patid: { type: [Number, String], default: null }
+  },
+  data() {
+    return {
+      loading: false,
+      adviceList: [],
+      total: 0,
+      ids: [],
+      single: true,
+      multiple: true,
+      title: "",
+      open: false,
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        adviceType: undefined,
+        content: undefined
+      },
+      form: {},
+      rules: {
+        adviceType: [{ required: true, message: "璇烽�夋嫨寤鸿绫诲瀷", trigger: "change" }],
+        content: [{ required: true, message: "璇疯緭鍏ュ唴瀹�", trigger: "blur" }]
+      }
+    };
+  },
+  computed: {
+    deptOptions() {
+      return (store.getters.belongDepts || []).map(d => ({ label: d.deptName, value: d.deptCode }));
+    },
+    wardOptions() {
+      return (store.getters.belongWards || []).map(w => ({ label: w.districtName, value: w.districtCode }));
+    }
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    adviceTypeText(t) {
+      const map = { "1": "鎶曡瘔", "2": "寤鸿", "3": "琛ㄦ壃" };
+      return map[t] || "鏈煡";
+    },
+    adviceTypeTag(t) {
+      const map = { "1": "danger", "2": "primary", "3": "success" };
+      return map[t] || "info";
+    },
+    getDeptNames(codes) {
+      if (!codes) return "-";
+      const arr = codes.split(",").filter(Boolean);
+      const names = arr.map(c => {
+        const found = this.deptOptions.find(d => d.value == c);
+        return found ? found.label : c;
+      });
+      return names.join("銆�") || "-";
+    },
+    getWardNames(codes) {
+      if (!codes) return "-";
+      const arr = codes.split(",").filter(Boolean);
+      const names = arr.map(c => {
+        const found = this.wardOptions.find(w => w.value == c);
+        return found ? found.label : c;
+      });
+      return names.join("銆�") || "-";
+    },
+
+    getList() {
+      this.loading = true;
+      // 鍒嗛〉鍙傛暟璧� query锛岃繃婊ゆ潯浠惰蛋 body
+      const body = {
+        subid: this.subid || undefined,
+        taskid: this.taskid || undefined,
+        patid: this.patid || undefined,
+        adviceType: this.queryParams.adviceType || undefined,
+        content: this.queryParams.content || undefined
+      };
+      const query = {
+        pageNum: this.queryParams.pageNum,
+        pageSize: this.queryParams.pageSize
+      };
+      listAdvice(body, query).then(res => {
+        this.adviceList = res.rows || [];
+        this.total = res.total || 0;
+        this.loading = false;
+      }).catch(() => { this.loading = false; });
+    },
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    resetQuery() {
+      this.queryParams.adviceType = undefined;
+      this.queryParams.content = undefined;
+      this.handleQuery();
+    },
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    reset() {
+      this.form = {
+        id: undefined,
+        adviceType: "1",
+        deptCodes: [],
+        wardCodes: [],
+        involvedUsers: "",
+        content: "",
+        remark: ""
+      };
+    },
+    handleAdd() {
+      this.reset();
+      this.title = "鏂板鎶曡瘔寤鸿";
+      this.open = true;
+    },
+    handleUpdate(row) {
+      this.reset();
+      this.title = "淇敼鎶曡瘔寤鸿";
+      getAdvice(row.id).then(res => {
+        const data = res.data || {};
+        this.form = {
+          id: data.id,
+          adviceType: data.adviceType || "1",
+          deptCodes: data.deptCodes ? data.deptCodes.split(",").filter(Boolean) : [],
+          wardCodes: data.wardCodes ? data.wardCodes.split(",").filter(Boolean) : [],
+          involvedUsers: data.involvedUsers || "",
+          content: data.content || "",
+          remark: data.remark || ""
+        };
+        this.open = true;
+      });
+    },
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (!valid) return;
+        const data = {
+          id: this.form.id,
+          subid: this.subid,
+          taskid: this.taskid,
+          patid: this.patid,
+          adviceType: this.form.adviceType,
+          deptCodes: this.form.deptCodes.join(","),
+          wardCodes: this.form.wardCodes.join(","),
+          involvedUsers: this.form.involvedUsers,
+          content: this.form.content,
+          remark: this.form.remark,
+          delFlag: "0"
+        };
+        const api = this.form.id ? updateAdvice(data) : addAdvice(data);
+        api.then(res => {
+          if (res.code === 200) {
+            this.$modal.msgSuccess(this.form.id ? "淇敼鎴愬姛" : "鏂板鎴愬姛");
+            this.open = false;
+            this.getList();
+          } else {
+            this.$modal.msgError(res.msg || "鎿嶄綔澶辫触");
+          }
+        });
+      });
+    },
+    handleDelete(row) {
+      const ids = row.id ? [row.id] : this.ids;
+      if (!ids.length) {
+        this.$modal.msgWarning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
+        return;
+      }
+      this.$modal.confirm("鏄惁纭鍒犻櫎鎵�閫夋姇璇夊缓璁紵").then(() => {
+        return delAdvice(ids.join(","));
+      }).then(res => {
+        if (res.code === 200) {
+          this.getList();
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        }
+      }).catch(() => {});
+    },
+    handleExport() {
+      this.download(
+        "/system/serviceSubtaskAdvice/export",
+        {
+          subid: this.subid,
+          taskid: this.taskid,
+          patid: this.patid,
+          adviceType: this.queryParams.adviceType,
+          content: this.queryParams.content
+        },
+        `闅忚寤鸿鏁版嵁_${new Date().getTime()}.xlsx`
+      );
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.advice-list {
+  padding: 10px 0;
+}
+</style>
diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index e776ec9..3932f7e 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/src/views/followvisit/record/detailpage/index.vue
@@ -1077,6 +1077,13 @@
         </div>
       </div>
     </div>
+    <!-- 鎶曡瘔寤鸿 -->
+    <el-card class="advice-card">
+      <div slot="header" class="clearfix">
+        <span class="detail-title">鎶曡瘔寤鸿</span>
+      </div>
+      <AdviceList :subid="taskid" :taskid="id" :patid="patid" />
+    </el-card>
     <!-- 鐭俊鍙戦�佸璇濇 -->
     <el-dialog title="鐭俊鍙戦��" :visible.sync="smsDialogVisible">
       <!-- 娉ㄦ剰杩欓噷浣跨敤浜� smsDialogVisible 浠ュ尯鍒嗗凡鏈夌殑 dialogFormVisible -->
@@ -1317,12 +1324,14 @@
 import CallButton from "@/components/CallButton";
 import TemplateSelector from "@/components/optionalModule";
 import MergeAndModify from "./MergeAndModify.vue";
+import AdviceList from "./components/AdviceList.vue";
 import CallCenterLs from "@/components/CallCenterLs";
 import store from "@/store";
 export default {
   components: {
     CallButton,
     MergeAndModify,
+    AdviceList,
     CallCenterLs,
     TemplateSelector,
   },
@@ -4145,4 +4154,13 @@
   padding: 20px 15px;
   background-color: #fff;
 }
+
+.advice-card {
+  margin: 0 10px 20px 10px;
+  .detail-title {
+    font-size: 16px;
+    font-weight: 600;
+    color: #303133;
+  }
+}
 </style>
diff --git a/src/views/outsideChainwtnew.vue b/src/views/outsideChainwtnew.vue
index 4d5e662..5dd3cb3 100644
--- a/src/views/outsideChainwtnew.vue
+++ b/src/views/outsideChainwtnew.vue
@@ -1,5 +1,15 @@
 <template>
   <div class="questionnaire-optimized">
+    <!-- 鎻愪氦涓殑鍏ㄥ睆鍔犺浇閬僵锛堝ぇ瀛椾綋锛岄�傝�佸寲锛� -->
+    <div v-if="submitting" class="submit-loading-mask">
+      <div class="submit-loading-box">
+        <div class="submit-loading-spinner"></div>
+        <div class="submit-loading-title">闂嵎鎻愪氦涓�</div>
+        <div class="submit-loading-tip">璇风◢鍊欙紝姝e湪涓婁紶鎮ㄧ殑绛旀...</div>
+        <div class="submit-loading-warn">璇蜂笉瑕佸叧闂垨鍒锋柊椤甸潰</div>
+      </div>
+    </div>
+
     <div v-if="loading && !accomplish" class="loading-container">
       <div class="loading-content">
         <i class="el-icon-loading loading-icon"></i>
@@ -317,8 +327,9 @@
               type="primary"
               @click="cache(true)"
               class="submit-button"
+              :loading="submitting"
             >
-              鎻愪氦闂嵎
+              {{ submitting ? "鎻愪氦涓�..." : "鎻愪氦闂嵎" }}
             </el-button>
           </div>
         </div>
@@ -372,6 +383,7 @@
       dialogVisible: false,
       Endornot: true,
       accomplish: false,
+      submitting: false, // 鎻愪氦涓殑鍔犺浇鐘舵��
       dimensionTypes: [
         {
           value: 1,
@@ -662,19 +674,31 @@
       //   }
       // });
       form.serviceSubtaskDetailList = arr;
-      Submitaquestionnaire(form).then((res) => {
-        if (res.code == 200) {
-          if (this.jsy) {
-            this.dialogVisible = true;
+      Submitaquestionnaire(form)
+        .then((res) => {
+          this.submitting = false;
+          if (res.code == 200) {
+            if (this.jsy) {
+              this.dialogVisible = true;
+            }
+            this.accomplish = true;
+            this.$modal.msgSuccess("鎻愪氦鎴愬姛");
+          } else {
+            this.$modal.msgError(res.msg || "鎻愪氦澶辫触锛岃閲嶈瘯");
           }
-          this.accomplish = true;
-          this.$modal.msgSuccess("鎻愪氦鎴愬姛");
-        }
-      });
+        })
+        .catch(() => {
+          this.submitting = false;
+          this.$modal.msgError("鎻愪氦澶辫触锛岃閲嶈瘯");
+        });
     },
     // 缂撳瓨
     cache(subm) {
       console.log("杩涘叆缂撳瓨");
+      // 鎻愪氦鍦烘櫙锛氬紑鍚姞杞界姸鎬侊紝闃叉閲嶅鐐瑰嚮
+      if (subm === true) {
+        this.submitting = true;
+      }
       let form = {
         param1: this.taskid,
         param2: this.patid,
@@ -720,13 +744,26 @@
       });
       form.svyTaskTemplateScriptVOS = arr;
       form.type = 2;
-      Cachequestionnaire(form).then((res) => {
-        if (res.code == 200) {
-          if (subm) {
-            this.submitForm();
+      Cachequestionnaire(form)
+        .then((res) => {
+          if (res.code == 200) {
+            if (subm) {
+              this.submitForm();
+            }
+          } else {
+            // 缂撳瓨澶辫触锛氭仮澶嶆彁浜ょ姸鎬�
+            if (subm) {
+              this.submitting = false;
+              this.$modal.msgError("鎻愪氦澶辫触锛岃閲嶈瘯");
+            }
           }
-        }
-      });
+        })
+        .catch(() => {
+          if (subm) {
+            this.submitting = false;
+            this.$modal.msgError("鎻愪氦澶辫触锛岃閲嶈瘯");
+          }
+        });
     },
     // 鑾峰彇鍙棰樼洰鐨勬纭簭鍙凤紙瑙e喅璺抽鍚庡簭鍙蜂笉杩炵画鐨勯棶棰橈級
     getVisibleQuestionIndex(index) {
@@ -1316,6 +1353,68 @@
   min-height: 70vh;
 }
 
+/* ===== 鎻愪氦涓細閫傝�佸寲鍏ㄥ睆鍔犺浇閬僵 ===== */
+.submit-loading-mask {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, 0.55);
+  z-index: 3000;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 20px;
+}
+
+.submit-loading-box {
+  background: #ffffff;
+  border-radius: 20px;
+  padding: 48px 56px;
+  text-align: center;
+  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
+  max-width: 85vw;
+  box-sizing: border-box;
+}
+
+.submit-loading-spinner {
+  width: 72px;
+  height: 72px;
+  margin: 0 auto 24px;
+  border: 8px solid #e8eef5;
+  border-top-color: #175997;
+  border-right-color: #2a77c9;
+  border-radius: 50%;
+  animation: submit-spin 1s linear infinite;
+}
+
+@keyframes submit-spin {
+  to {
+    transform: rotate(360deg);
+  }
+}
+
+.submit-loading-title {
+  font-size: 28px;
+  font-weight: 700;
+  color: #175997;
+  margin-bottom: 14px;
+}
+
+.submit-loading-tip {
+  font-size: 20px;
+  color: #303a47;
+  line-height: 1.6;
+}
+
+.submit-loading-warn {
+  margin-top: 18px;
+  font-size: 17px;
+  color: #e6a23c;
+  font-weight: 500;
+}
+
 .loading-content {
   text-align: center;
   padding: 40px;
diff --git a/src/views/patient/patient/outpatient.vue b/src/views/patient/patient/outpatient.vue
index 5e18d72..c277633 100644
--- a/src/views/patient/patient/outpatient.vue
+++ b/src/views/patient/patient/outpatient.vue
@@ -986,7 +986,7 @@
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.patid);
+      this.ids = selection.map((item) => item.id);
       this.single = selection.length != 1;
       this.multiple = !selection.length;
     },
diff --git a/src/views/patient/propaganda/QuestionnaireTask.vue b/src/views/patient/propaganda/QuestionnaireTask.vue
index 763a462..43ed363 100644
--- a/src/views/patient/propaganda/QuestionnaireTask.vue
+++ b/src/views/patient/propaganda/QuestionnaireTask.vue
@@ -214,32 +214,98 @@
 
                 <!-- 鑽搧鍏宠仈 -->
                 <el-row v-if="form.appltype == 6">
-                  <el-col :span="20">
-                    <el-form-item label="鍏宠仈鑽搧" prop="region">
-                      <el-select
-                        v-model="medicalCodes"
-                        @remove-tag="removeMedical"
-                        style="width: 400px"
-                        size="medium"
-                        multiple
-                        filterable
-                        remote
-                        reserve-keyword
-                        :remote-method="remoteSearchMedical"
-                        placeholder="璇疯緭鍏ヨ嵂鍝佸悕绉版悳绱�"
-                        loading-text="鎼滅储涓�..."
-                      >
-                        <el-option
-                          v-for="item in medicalOptions"
-                          :key="item.id"
-                          :label="
-                            item.itemName + ' (' + item.manufacturerName + ')'
-                          "
-                          :value="item.itemCode"
-                        />
-                      </el-select>
-                    </el-form-item>
-                  </el-col>
+                  <el-form-item label="鍏宠仈鑽搧" prop="region">
+                    <el-select
+                      v-model="medicalCodes"
+                      @remove-tag="removeMedical"
+                      style="width: 400px"
+                      size="medium"
+                      multiple
+                      filterable
+                      remote
+                      reserve-keyword
+                      :remote-method="remoteSearchMedical"
+                      placeholder="璇疯緭鍏ヨ嵂鍝佸悕绉版悳绱�"
+                      loading-text="鎼滅储涓�..."
+                    >
+                      <el-option
+                        v-for="item in medicalOptions"
+                        :key="item.itemCode"
+                        :label="
+                          item.itemName + ' (' + item.manufacturerName + ')'
+                        "
+                        :value="item.itemCode"
+                      />
+                    </el-select>
+                  </el-form-item>
+                  <div
+                    style="
+                      margin-bottom: 20px;
+                      padding: 8px 12px;
+                      background-color: #f0f9ff;
+                      border-left: 4px solid #409eff;
+                    "
+                  >
+                    <p style="margin: 0; color: #606266; font-size: 13px">
+                      <i
+                        class="el-icon-info"
+                        style="color: #409eff; margin-right: 6px"
+                      ></i>
+                      閽堝鍚屼竴鑽搧鍦ㄥ绉戝/鐥呭尯涓嬪瓨鍦ㄧ殑鎯呭喌锛屽彲閫夋嫨鎬ч厤缃浐瀹氱瀹�/鐥呭尯
+                    </p>
+                  </div>
+                  <el-row :gutter="20" style="margin-top: 20px">
+                    <el-col :span="12">
+                      <el-form-item label="鍏宠仈绉戝" prop="diseaseDept">
+                        <el-select
+                          v-model="diseaseDept"
+                          style="width: 100%"
+                          clearable
+                          filterable
+                          placeholder="璇烽�夋嫨绉戝锛堝彲閫夛級"
+                          value-key="deptCode"
+                          @change="handleDiseaseDeptChange"
+                        >
+                          <el-option
+                            v-for="item in belongDepts"
+                            :key="item.deptCode"
+                            :label="item.deptName"
+                            :value="item"
+                          ></el-option>
+                        </el-select>
+                        <div v-if="diseaseDept" class="selected-info">
+                          宸查�夋嫨: {{ diseaseDept.deptName }} ({{
+                            diseaseDept.deptCode
+                          }})
+                        </div>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                      <el-form-item label="鍏宠仈鐥呭尯" prop="diseaseWard">
+                        <el-select
+                          v-model="diseaseWard"
+                          style="width: 100%"
+                          clearable
+                          filterable
+                          placeholder="璇烽�夋嫨鐥呭尯锛堝彲閫夛級"
+                          value-key="districtCode"
+                          @change="handleDiseaseWardChange"
+                        >
+                          <el-option
+                            v-for="item in belongWards"
+                            :key="item.districtCode"
+                            :label="item.districtName"
+                            :value="item"
+                          ></el-option>
+                        </el-select>
+                        <div v-if="diseaseWard" class="selected-info">
+                          宸查�夋嫨: {{ diseaseWard.districtName }} ({{
+                            diseaseWard.districtCode
+                          }})
+                        </div>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
                 </el-row>
 
                 <!-- 绉戝鍏宠仈 -->
@@ -1280,6 +1346,7 @@
   getTaskpatientQC,
   taskoperhospgetsondel,
   taskdiaghospgetsondel,
+  taskmedicaldel,
   getillnesslist,
   getbaseopera,
   Externallist,
@@ -1296,6 +1363,7 @@
   getQtemplateclassify,
   taskdepthospgetsondel,
   taskdepthospgetsonlist,
+  taskmedicallist,
   taskdiaggetlist,
   rwztaskdepthospgetsonlist,
   rwztaskdiaggetlist,
@@ -1813,21 +1881,6 @@
               districtCode: this.form.leavehospitaldistrictcode,
               districtName: this.form.leavehospitaldistrictname,
             };
-            // 鑽搧鍏宠仈鍥炴樉
-            if (this.form.medicalCode) {
-              this.medicalCodes = this.form.medicalCode
-                .split(",")
-                .filter(Boolean);
-              // 鍔犺浇宸查�夎嵂鍝佺殑閫夐」鍒楄〃锛堢敤浜庡睍绀� label锛�
-              const codes = this.form.medicalCode;
-              listMedication({
-                itemCode: codes,
-                pageNum: 1,
-                pageSize: 200,
-              }).then((res) => {
-                this.medicalOptions = res.rows || [];
-              });
-            }
             this.overallCase = this.form.patTaskRelevances.concat();
             this.checkList = this.form.preachform
               ? this.form.preachform.split(",")
@@ -2057,6 +2110,8 @@
     listDept() {
       this.leavehospitaldistrictcodes = [];
       this.deptcodesWards = [];
+      this.medicalCodes = [];
+      this.medicalOptions = [];
       // this.queryParamsdept.taskId = this.form.taskid;
       this.queryParamsdept.taskId = this.form.taskid;
 
@@ -2101,6 +2156,22 @@
                 this.hosplist.push(item);
                 this.leavehospitaldistrictcodes.push(item.deptCode);
               }
+            });
+          }
+        });
+        // 鑾峰彇鍏宠仈鑽搧
+        taskmedicallist(this.queryParamsdept).then((res) => {
+          if (res.code == 200) {
+            let arr = res.rows || [];
+            arr.forEach((item) => {
+              const code = item.itemCode || item.medicalCode;
+              this.medicalCodes.push(code);
+              this.medicalOptions.push({
+                ...item,
+                itemCode: code,
+                itemName: item.itemName || item.medicalName,
+                manufacturerName: item.manufacturerName || item.medicalCompany
+              });
             });
           }
         });
@@ -2199,9 +2270,14 @@
         }
       );
     },
-    // 鍒犻櫎宸查�夎嵂鍝�
+    // 鍒犻櫎宸查�夎嵂鍝侊紙鍗曠嫭鎺ュ彛锛�
     removeMedical(code) {
-      this.medicalCodes = this.medicalCodes.filter((c) => c !== code);
+      taskmedicaldel({ medicalCode: code, taskId: this.form.taskid }).then((res) => {
+        if (res.code == 200) {
+          this.medicalCodes = this.medicalCodes.filter((c) => c !== code);
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        }
+      });
     },
 
     // ---------- 鎮h�呴�夋嫨 ----------
@@ -2761,8 +2837,12 @@
         this.form.icd10name = this.diagglist
           .map((item) => item.icdname)
           .join(",");
-        // 鐤剧梾/鎵嬫湳鍏宠仈鐨勭瀹�/鐥呭尯鏍¢獙
-        if (this.form.appltype == 3 || this.form.appltype == 4) {
+        // 鐤剧梾/鎵嬫湳/鑽搧鍏宠仈鐨勭瀹�/鐥呭尯鏍¢獙
+        if (
+          this.form.appltype == 3 ||
+          this.form.appltype == 4 ||
+          this.form.appltype == 6
+        ) {
           const hasDept = this.diseaseDept?.deptCode;
           const hasWard = this.diseaseWard?.districtCode;
           if (!hasDept && !hasWard) {
diff --git a/src/views/patient/propaganda/particty.vue b/src/views/patient/propaganda/particty.vue
index e169997..46d0f82 100644
--- a/src/views/patient/propaganda/particty.vue
+++ b/src/views/patient/propaganda/particty.vue
@@ -211,30 +211,96 @@
 
                 <!-- 鑽搧鍏宠仈 -->
                 <el-row v-if="form.appltype == 6">
-                  <el-col :span="20">
-                    <el-form-item label="鍏宠仈鑽搧" prop="region">
-                      <el-select
-                        v-model="medicalCodes"
-                        @remove-tag="removeMedical"
-                        style="width: 400px"
-                        size="medium"
-                        multiple
-                        filterable
-                        remote
-                        reserve-keyword
-                        :remote-method="remoteSearchMedical"
-                        placeholder="璇疯緭鍏ヨ嵂鍝佸悕绉版悳绱�"
-                        loading-text="鎼滅储涓�..."
-                      >
-                        <el-option
-                          v-for="item in medicalOptions"
-                          :key="item.id"
-                          :label="item.itemName + ' (' + item.manufacturerName + ')'"
-                          :value="item.itemCode"
-                        />
-                      </el-select>
-                    </el-form-item>
-                  </el-col>
+                  <el-form-item label="鍏宠仈鑽搧" prop="region">
+                    <el-select
+                      v-model="medicalCodes"
+                      @remove-tag="removeMedical"
+                      style="width: 400px"
+                      size="medium"
+                      multiple
+                      filterable
+                      remote
+                      reserve-keyword
+                      :remote-method="remoteSearchMedical"
+                      placeholder="璇疯緭鍏ヨ嵂鍝佸悕绉版悳绱�"
+                      loading-text="鎼滅储涓�..."
+                    >
+                      <el-option
+                        v-for="item in medicalOptions"
+                        :key="item.id"
+                        :label="item.itemName + ' (' + item.manufacturerName + ')'"
+                        :value="item.itemCode"
+                      />
+                    </el-select>
+                  </el-form-item>
+                  <div
+                    style="
+                      margin-bottom: 20px;
+                      padding: 8px 12px;
+                      background-color: #f0f9ff;
+                      border-left: 4px solid #409eff;
+                    "
+                  >
+                    <p style="margin: 0; color: #606266; font-size: 13px">
+                      <i
+                        class="el-icon-info"
+                        style="color: #409eff; margin-right: 6px"
+                      ></i>
+                      閽堝鍚屼竴鑽搧鍦ㄥ绉戝/鐥呭尯涓嬪瓨鍦ㄧ殑鎯呭喌锛屽彲閫夋嫨鎬ч厤缃浐瀹氱瀹�/鐥呭尯
+                    </p>
+                  </div>
+                  <el-row :gutter="20" style="margin-top: 20px">
+                    <el-col :span="12">
+                      <el-form-item label="鍏宠仈绉戝" prop="diseaseDept">
+                        <el-select
+                          v-model="diseaseDept"
+                          style="width: 100%"
+                          clearable
+                          filterable
+                          placeholder="璇烽�夋嫨绉戝锛堝彲閫夛級"
+                          value-key="deptCode"
+                          @change="handleDiseaseDeptChange"
+                        >
+                          <el-option
+                            v-for="item in belongDepts"
+                            :key="item.deptCode"
+                            :label="item.deptName"
+                            :value="item"
+                          ></el-option>
+                        </el-select>
+                        <div v-if="diseaseDept" class="selected-info">
+                          宸查�夋嫨: {{ diseaseDept.deptName }} ({{
+                            diseaseDept.deptCode
+                          }})
+                        </div>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                      <el-form-item label="鍏宠仈鐥呭尯" prop="diseaseWard">
+                        <el-select
+                          v-model="diseaseWard"
+                          style="width: 100%"
+                          clearable
+                          filterable
+                          placeholder="璇烽�夋嫨鐥呭尯锛堝彲閫夛級"
+                          value-key="districtCode"
+                          @change="handleDiseaseWardChange"
+                        >
+                          <el-option
+                            v-for="item in belongWards"
+                            :key="item.districtCode"
+                            :label="item.districtName"
+                            :value="item"
+                          ></el-option>
+                        </el-select>
+                        <div v-if="diseaseWard" class="selected-info">
+                          宸查�夋嫨: {{ diseaseWard.districtName }} ({{
+                            diseaseWard.districtCode
+                          }})
+                        </div>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
                 </el-row>
 
                 <!-- 绉戝鍏宠仈 -->
@@ -1300,10 +1366,12 @@
   taskdepthospgetsondel,
   taskoperhospgetsondel,
   taskdiaghospgetsondel,
+  taskmedicaldel,
   taskdiaggetlist,
   taskopergetlist,
   rwztaskdepthospgetsonlist,
   rwztaskdiaggetlist,
+  taskmedicallist,
   getQtemplatelist,
 } from "@/api/AiCentre/index";
 import { listMedication } from "@/api/knowledge/drug";
@@ -1835,13 +1903,6 @@
             this.form.patTaskRelevances = this.form.patTaskRelevances
               ? this.form.patTaskRelevances
               : [];
-            // 鑽搧鍏宠仈鍥炴樉
-            if (this.form.medicalCode) {
-              this.medicalCodes = this.form.medicalCode.split(",").filter(Boolean);
-              listMedication({ itemCode: this.form.medicalCode, pageNum: 1, pageSize: 200 }).then((res) => {
-                this.medicalOptions = res.rows || [];
-              });
-            }
             this.overallCase = this.form.patTaskRelevances.concat();
             this.checkList = this.form.preachform
               ? this.form.preachform.split(",")
@@ -2070,6 +2131,8 @@
     listDept() {
       this.leavehospitaldistrictcodes = [];
       this.deptcodesWards = [];
+      this.medicalCodes = [];
+      this.medicalOptions = [];
       this.queryParamsdept.taskId = this.form.taskid;
 
       if (this.form.appltype == 5) {
@@ -2132,6 +2195,22 @@
                 });
               }
               this.illnesscodes.push(item.icd10code);
+            });
+          }
+        });
+        // 鑾峰彇鍏宠仈鑽搧
+        taskmedicallist(this.queryParamsdept).then((res) => {
+          if (res.code == 200) {
+            let arr = res.rows || [];
+            arr.forEach((item) => {
+              const code = item.itemCode || item.medicalCode;
+              this.medicalCodes.push(code);
+              this.medicalOptions.push({
+                ...item,
+                itemCode: code,
+                itemName: item.itemName || item.medicalName,
+                manufacturerName: item.manufacturerName || item.medicalCompany
+              });
             });
           }
         });
@@ -2207,7 +2286,12 @@
       });
     },
     removeMedical(code) {
-      this.medicalCodes = this.medicalCodes.filter((c) => c !== code);
+      taskmedicaldel({ itemCode: code, taskid: this.form.taskid }).then((res) => {
+        if (res.code == 200) {
+          this.medicalCodes = this.medicalCodes.filter((c) => c !== code);
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        }
+      });
     },
 
     // ---------- 鎮h�呴�夋嫨 ----------
@@ -2786,12 +2870,12 @@
         this.form.icd10name = this.diagglist
           .map((item) => item.icdname)
           .join(",");
-        // 鐤剧梾/鎵嬫湳鍏宠仈鐨勭瀹�/鐥呭尯鏍¢獙
-        if (this.form.appltype == 3 || this.form.appltype == 4) {
+        // 鐤剧梾/鎵嬫湳/鑽搧鍏宠仈鐨勭瀹�/鐥呭尯鏍¢獙
+        if (this.form.appltype == 3 || this.form.appltype == 4 || this.form.appltype == 6) {
           const hasDept = this.diseaseDept?.deptCode;
           const hasWard = this.diseaseWard?.districtCode;
           if (!hasDept && !hasWard) {
-            this.$modal.msgError("褰撳墠鐤剧梾闇�鍏宠仈绉戝鎴栫梾鍖�");
+            this.$modal.msgError("闇�鍏宠仈绉戝鎴栫梾鍖�");
             this.submitLoading = false;
             return;
           }
diff --git a/src/views/sfstatistics/percentage/components/FirstFollowUp.vue b/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
index d766ae3..67d329f 100644
--- a/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
+++ b/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
@@ -793,202 +793,19 @@
     },
 
     customSort(data) {
-      const order = [
-        "涓�",
-        "浜�",
-        "涓�",
-        "鍥�",
-        "浜�",
-        "鍏�",
-        "涓�",
-        "鍏�",
-        "涔�",
-        "鍗�",
-        "鍗佷竴",
-        "鍗佷簩",
-        "鍗佷笁",
-        "鍗佸洓",
-        "鍗佷簲",
-        "鍗佸叚",
-        "鍗佷竷",
-        "鍗佸叓",
-        "鍗佷節",
-        "浜屽崄",
-        "浜屽崄涓�",
-        "浜屽崄浜�",
-        "浜屽崄涓�",
-        "浜屽崄鍥�",
-        "浜屽崄浜�",
-        "浜屽崄鍏�",
-        "浜屽崄涓�",
-        "浜屽崄鍏�",
-        "浜屽崄涔�",
-        "涓夊崄",
-        "涓夊崄涓�",
-        "涓夊崄浜�",
-        "涓夊崄涓�",
-        "涓夊崄鍥�",
-        "涓夊崄浜�",
-        "涓夊崄鍏�",
-        "涓夊崄涓�",
-        "涓夊崄鍏�",
-        "涓夊崄涔�",
-        "鍥涘崄",
-        "鍥涘崄涓�",
-        "鍥涘崄浜�",
-        "鍥涘崄涓�",
-        "鍥涘崄鍥�",
-        "鍥涘崄浜�",
-      ];
-
-      return data.sort((a, b) => {
-        const getIndex = (name) => {
-          if (!name || typeof name !== "string") return -1;
-          const chineseMatch = name.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
-          if (chineseMatch && chineseMatch[1]) {
-            return order.indexOf(chineseMatch[1]);
-          }
-          const arabicMatch = name.match(/^(\d+)/);
-          if (arabicMatch && arabicMatch[1]) {
-            const num = parseInt(arabicMatch[1], 10);
-            if (num >= 1 && num <= 45) {
-              return num - 1;
-            }
-          }
-          return -1;
-        };
-
-        const indexA = getIndex(a.leavehospitaldistrictname);
-        const indexB = getIndex(b.leavehospitaldistrictname);
-
-        if (indexA === -1 && indexB === -1) {
-          return (a.leavehospitaldistrictname || "").localeCompare(
-            b.leavehospitaldistrictname || ""
-          );
-        }
-        if (indexA === -1) return 1;
-        if (indexB === -1) return -1;
-        return indexA - indexB;
-      });
-    },
-    Tooltipcgl(h, { column }) {
-      return h(
-        "el-tooltip",
-        {
-          props: {
-            content: "闅忚鎴愬姛/(闇�闅忚-寰呴殢璁�)",
-            placement: "top",
-            effect: "dark",
-          },
-        },
-        [h("span", column.label)]
+      return data.sort((a, b) =>
+        this.compareWardName(
+          a.leavehospitaldistrictname,
+          b.leavehospitaldistrictname
+        )
       );
     },
-    Tooltipjsl(h, { column }) {
-      return h(
-        "el-tooltip",
-        {
-          props: {
-            content:
-              "(鍑洪櫌鏃堕棿+浠诲姟鍛ㄦ湡)灏忎簬瀹屾垚鏃堕棿鍗充负瓒呮椂;(闇�闅忚-瓒呮椂)/闇�闅忚",
-            placement: "top",
-            effect: "dark",
-          },
-        },
-        [h("span", column.label)]
-      );
-    },
-    Tooltipsfl(h, { column }) {
-      return h(
-        "el-tooltip",
-        {
-          props: {
-            content: "(闅忚鎴愬姛+棣栨闅忚澶辫触)/棣栨搴旈殢璁�",
-            placement: "top",
-            effect: "dark",
-          },
-        },
-        [h("span", column.label)]
-      );
-    },
+
     sortChineseNumber(aRow, bRow) {
-      const a = aRow.leavehospitaldistrictname;
-      const b = bRow.leavehospitaldistrictname;
-
-      const chineseNumMap = {
-        涓�: 1,
-        浜�: 2,
-        涓�: 3,
-        鍥�: 4,
-        浜�: 5,
-        鍏�: 6,
-        涓�: 7,
-        鍏�: 8,
-        涔�: 9,
-        鍗�: 10,
-        鍗佷竴: 11,
-        鍗佷簩: 12,
-        鍗佷笁: 13,
-        鍗佸洓: 14,
-        鍗佷簲: 15,
-        鍗佸叚: 16,
-        鍗佷竷: 17,
-        鍗佸叓: 18,
-        鍗佷節: 19,
-        浜屽崄: 20,
-        浜屽崄涓�: 21,
-        浜屽崄浜�: 22,
-        浜屽崄涓�: 23,
-        浜屽崄鍥�: 24,
-        浜屽崄浜�: 25,
-        浜屽崄鍏�: 26,
-        浜屽崄涓�: 27,
-        浜屽崄鍏�: 28,
-        浜屽崄涔�: 29,
-        涓夊崄: 30,
-        涓夊崄涓�: 31,
-        涓夊崄浜�: 32,
-        涓夊崄涓�: 33,
-        涓夊崄鍥�: 34,
-        涓夊崄浜�: 35,
-        涓夊崄鍏�: 36,
-        涓夊崄涓�: 37,
-        涓夊崄鍏�: 38,
-        涓夊崄涔�: 39,
-        鍥涘崄: 40,
-        鍥涘崄涓�: 41,
-        鍥涘崄浜�: 42,
-        鍥涘崄涓�: 43,
-        鍥涘崄鍥�: 44,
-        鍥涘崄浜�: 45,
-      };
-
-      const getNumberFromText = (text) => {
-        if (!text || typeof text !== "string") return -1;
-        const match = text.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
-        if (match && match[1]) {
-          const chineseNum = match[1];
-          return chineseNumMap[chineseNum] !== undefined
-            ? chineseNumMap[chineseNum]
-            : -1;
-        }
-        const arabicMatch = text.match(/^(\d+)/);
-        if (arabicMatch && arabicMatch[1]) {
-          const num = parseInt(arabicMatch[1], 10);
-          return num >= 1 && num <= 45 ? num : -1;
-        }
-        return -1;
-      };
-
-      const numA = getNumberFromText(a);
-      const numB = getNumberFromText(b);
-
-      if (numA === -1 && numB === -1) {
-        return (a || "").localeCompare(b || "");
-      }
-      if (numA === -1) return 1;
-      if (numB === -1) return -1;
-      return numA - numB;
+      return this.compareWardName(
+        aRow.leavehospitaldistrictname,
+        bRow.leavehospitaldistrictname
+      );
     },
 
     getRowKey(row) {
@@ -1125,7 +942,46 @@
 
       return sums;
     },
-
+    Tooltipcgl(h, { column }) {
+      return h(
+        "el-tooltip",
+        {
+          props: {
+            content: "闅忚鎴愬姛/(闇�闅忚-寰呴殢璁�)",
+            placement: "top",
+            effect: "dark",
+          },
+        },
+        [h("span", column.label)]
+      );
+    },
+    Tooltipjsl(h, { column }) {
+      return h(
+        "el-tooltip",
+        {
+          props: {
+            content:
+              "(鍑洪櫌鏃堕棿+浠诲姟鍛ㄦ湡)灏忎簬瀹屾垚鏃堕棿鍗充负瓒呮椂;(闇�闅忚-瓒呮椂)/闇�闅忚",
+            placement: "top",
+            effect: "dark",
+          },
+        },
+        [h("span", column.label)]
+      );
+    },
+    Tooltipsfl(h, { column }) {
+      return h(
+        "el-tooltip",
+        {
+          props: {
+            content: "(闅忚鎴愬姛+棣栨闅忚澶辫触)/棣栨搴旈殢璁�",
+            placement: "top",
+            effect: "dark",
+          },
+        },
+        [h("span", column.label)]
+      );
+    },
     getInnerSummaries(param) {
       const { columns, data } = param;
       const sums = [];
@@ -1212,6 +1068,77 @@
       return Number.isInteger(num) ? num.toString() : num.toFixed(0);
     },
 
+    // ===== 鐥呭尯鍚嶆帓搴忥紙鏀寔 1-B10 / 2-A2 绛� 鏁板瓧-瀛楁瘝鏁板瓧 鏍煎紡锛� =====
+    // 瑙f瀽鐥呭尯鍚嶏紝杩斿洖鎺掑簭閿� { group, letter, number }
+    parseWardKey(name) {
+      if (!name || typeof name !== "string") return null;
+      const trimmed = name.trim();
+
+      // 鏍煎紡1锛氭暟瀛�-瀛楁瘝鏁板瓧锛屽 1-B10銆�2-A2銆�1-A11
+      const dashMatch = trimmed.match(/^(\d+)-([A-Za-z]+)(\d+)/);
+      if (dashMatch) {
+        return {
+          group: parseInt(dashMatch[1], 10),
+          letter: dashMatch[2].toUpperCase(),
+          number: parseInt(dashMatch[3], 10),
+        };
+      }
+
+      // 鏍煎紡2锛氫腑鏂囨暟瀛楀紑澶达紝濡� 涓�鐥呭尯銆佸崄涓�鐥呭尯銆佷簩鍗佷竴鐥呭尯
+      const cnMatch = trimmed.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
+      if (cnMatch && cnMatch[1]) {
+        const num = this.chineseToNumber(cnMatch[1]);
+        if (num > 0) return { group: num, letter: "", number: 0 };
+      }
+
+      // 鏍煎紡3锛氶樋鎷変集鏁板瓧寮�澶达紝濡� 1鐥呭尯銆�12鐥呭尯
+      const numMatch = trimmed.match(/^(\d+)/);
+      if (numMatch && numMatch[1]) {
+        return { group: parseInt(numMatch[1], 10), letter: "", number: 0 };
+      }
+
+      return null;
+    },
+
+    // 涓枃鏁板瓧杞樋鎷変集鏁板瓧锛堟敮鎸� 涓� ~ 涔濆崄涔濓級
+    chineseToNumber(str) {
+      const digits = {
+        涓�: 1,
+        浜�: 2,
+        涓�: 3,
+        鍥�: 4,
+        浜�: 5,
+        鍏�: 6,
+        涓�: 7,
+        鍏�: 8,
+        涔�: 9,
+      };
+      if (!str) return -1;
+      if (str === "鍗�") return 10;
+      if (str.startsWith("鍗�")) return 10 + (digits[str[1]] || 0);
+      if (str.includes("鍗�")) {
+        const parts = str.split("鍗�");
+        const tens = digits[parts[0]] || 0;
+        const ones = digits[parts[1]] || 0;
+        return tens * 10 + ones;
+      }
+      return digits[str] !== undefined ? digits[str] : -1;
+    },
+
+    // 鐥呭尯鍚嶆瘮杈冨櫒锛氭暟瀛楁 鈫� 瀛楁瘝娈� 鈫� 鏁板瓧娈�
+    compareWardName(nameA, nameB) {
+      const ka = this.parseWardKey(nameA);
+      const kb = this.parseWardKey(nameB);
+
+      if (!ka && !kb) return (nameA || "").localeCompare(nameB || "", "zh-CN");
+      if (!ka) return 1;
+      if (!kb) return -1;
+
+      if (ka.group !== kb.group) return ka.group - kb.group;
+      if (ka.letter !== kb.letter) return ka.letter.localeCompare(kb.letter);
+      return ka.number - kb.number;
+    },
+
     handleSelectionChange(selection) {
       this.ids = selection.map((item) => item.tagid);
     },
diff --git a/src/views/sfstatistics/percentage/components/SecondFollowUp.vue b/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
index ed11442..88fe70e 100644
--- a/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
+++ b/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
@@ -766,163 +766,19 @@
     },
 
     customSort(data) {
-      const order = [
-        "涓�",
-        "浜�",
-        "涓�",
-        "鍥�",
-        "浜�",
-        "鍏�",
-        "涓�",
-        "鍏�",
-        "涔�",
-        "鍗�",
-        "鍗佷竴",
-        "鍗佷簩",
-        "鍗佷笁",
-        "鍗佸洓",
-        "鍗佷簲",
-        "鍗佸叚",
-        "鍗佷竷",
-        "鍗佸叓",
-        "鍗佷節",
-        "浜屽崄",
-        "浜屽崄涓�",
-        "浜屽崄浜�",
-        "浜屽崄涓�",
-        "浜屽崄鍥�",
-        "浜屽崄浜�",
-        "浜屽崄鍏�",
-        "浜屽崄涓�",
-        "浜屽崄鍏�",
-        "浜屽崄涔�",
-        "涓夊崄",
-        "涓夊崄涓�",
-        "涓夊崄浜�",
-        "涓夊崄涓�",
-        "涓夊崄鍥�",
-        "涓夊崄浜�",
-        "涓夊崄鍏�",
-        "涓夊崄涓�",
-        "涓夊崄鍏�",
-        "涓夊崄涔�",
-        "鍥涘崄",
-        "鍥涘崄涓�",
-        "鍥涘崄浜�",
-        "鍥涘崄涓�",
-        "鍥涘崄鍥�",
-        "鍥涘崄浜�",
-      ];
-
-      return data.sort((a, b) => {
-        const getIndex = (name) => {
-          if (!name || typeof name !== "string") return -1;
-          const chineseMatch = name.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
-          if (chineseMatch && chineseMatch[1]) {
-            return order.indexOf(chineseMatch[1]);
-          }
-          const arabicMatch = name.match(/^(\d+)/);
-          if (arabicMatch && arabicMatch[1]) {
-            const num = parseInt(arabicMatch[1], 10);
-            if (num >= 1 && num <= 45) {
-              return num - 1;
-            }
-          }
-          return -1;
-        };
-
-        const indexA = getIndex(a.leavehospitaldistrictname);
-        const indexB = getIndex(b.leavehospitaldistrictname);
-
-        if (indexA === -1 && indexB === -1) {
-          return (a.leavehospitaldistrictname || "").localeCompare(
-            b.leavehospitaldistrictname || ""
-          );
-        }
-        if (indexA === -1) return 1;
-        if (indexB === -1) return -1;
-        return indexA - indexB;
-      });
+      return data.sort((a, b) =>
+        this.compareWardName(
+          a.leavehospitaldistrictname,
+          b.leavehospitaldistrictname
+        )
+      );
     },
 
     sortChineseNumber(aRow, bRow) {
-      const a = aRow.leavehospitaldistrictname;
-      const b = bRow.leavehospitaldistrictname;
-
-      const chineseNumMap = {
-        涓�: 1,
-        浜�: 2,
-        涓�: 3,
-        鍥�: 4,
-        浜�: 5,
-        鍏�: 6,
-        涓�: 7,
-        鍏�: 8,
-        涔�: 9,
-        鍗�: 10,
-        鍗佷竴: 11,
-        鍗佷簩: 12,
-        鍗佷笁: 13,
-        鍗佸洓: 14,
-        鍗佷簲: 15,
-        鍗佸叚: 16,
-        鍗佷竷: 17,
-        鍗佸叓: 18,
-        鍗佷節: 19,
-        浜屽崄: 20,
-        浜屽崄涓�: 21,
-        浜屽崄浜�: 22,
-        浜屽崄涓�: 23,
-        浜屽崄鍥�: 24,
-        浜屽崄浜�: 25,
-        浜屽崄鍏�: 26,
-        浜屽崄涓�: 27,
-        浜屽崄鍏�: 28,
-        浜屽崄涔�: 29,
-        涓夊崄: 30,
-        涓夊崄涓�: 31,
-        涓夊崄浜�: 32,
-        涓夊崄涓�: 33,
-        涓夊崄鍥�: 34,
-        涓夊崄浜�: 35,
-        涓夊崄鍏�: 36,
-        涓夊崄涓�: 37,
-        涓夊崄鍏�: 38,
-        涓夊崄涔�: 39,
-        鍥涘崄: 40,
-        鍥涘崄涓�: 41,
-        鍥涘崄浜�: 42,
-        鍥涘崄涓�: 43,
-        鍥涘崄鍥�: 44,
-        鍥涘崄浜�: 45,
-      };
-
-      const getNumberFromText = (text) => {
-        if (!text || typeof text !== "string") return -1;
-        const match = text.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
-        if (match && match[1]) {
-          const chineseNum = match[1];
-          return chineseNumMap[chineseNum] !== undefined
-            ? chineseNumMap[chineseNum]
-            : -1;
-        }
-        const arabicMatch = text.match(/^(\d+)/);
-        if (arabicMatch && arabicMatch[1]) {
-          const num = parseInt(arabicMatch[1], 10);
-          return num >= 1 && num <= 45 ? num : -1;
-        }
-        return -1;
-      };
-
-      const numA = getNumberFromText(a);
-      const numB = getNumberFromText(b);
-
-      if (numA === -1 && numB === -1) {
-        return (a || "").localeCompare(b || "");
-      }
-      if (numA === -1) return 1;
-      if (numB === -1) return -1;
-      return numA - numB;
+      return this.compareWardName(
+        aRow.leavehospitaldistrictname,
+        bRow.leavehospitaldistrictname
+      );
     },
 
     getRowKey(row) {
@@ -1125,6 +981,67 @@
       return Number.isInteger(num) ? num.toString() : num.toFixed(0);
     },
 
+    // ===== 鐥呭尯鍚嶆帓搴忥紙鏀寔 1-B10 / 2-A2 绛� 鏁板瓧-瀛楁瘝鏁板瓧 鏍煎紡锛� =====
+    // 瑙f瀽鐥呭尯鍚嶏紝杩斿洖鎺掑簭閿� { group, letter, number }
+    parseWardKey(name) {
+      if (!name || typeof name !== "string") return null;
+      const trimmed = name.trim();
+
+      // 鏍煎紡1锛氭暟瀛�-瀛楁瘝鏁板瓧锛屽 1-B10銆�2-A2銆�1-A11
+      const dashMatch = trimmed.match(/^(\d+)-([A-Za-z]+)(\d+)/);
+      if (dashMatch) {
+        return {
+          group: parseInt(dashMatch[1], 10),
+          letter: dashMatch[2].toUpperCase(),
+          number: parseInt(dashMatch[3], 10),
+        };
+      }
+
+      // 鏍煎紡2锛氫腑鏂囨暟瀛楀紑澶达紝濡� 涓�鐥呭尯銆佸崄涓�鐥呭尯銆佷簩鍗佷竴鐥呭尯
+      const cnMatch = trimmed.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
+      if (cnMatch && cnMatch[1]) {
+        const num = this.chineseToNumber(cnMatch[1]);
+        if (num > 0) return { group: num, letter: "", number: 0 };
+      }
+
+      // 鏍煎紡3锛氶樋鎷変集鏁板瓧寮�澶达紝濡� 1鐥呭尯銆�12鐥呭尯
+      const numMatch = trimmed.match(/^(\d+)/);
+      if (numMatch && numMatch[1]) {
+        return { group: parseInt(numMatch[1], 10), letter: "", number: 0 };
+      }
+
+      return null;
+    },
+
+    // 涓枃鏁板瓧杞樋鎷変集鏁板瓧锛堟敮鎸� 涓� ~ 涔濆崄涔濓級
+    chineseToNumber(str) {
+      const digits = { 涓�: 1, 浜�: 2, 涓�: 3, 鍥�: 4, 浜�: 5, 鍏�: 6, 涓�: 7, 鍏�: 8, 涔�: 9 };
+      if (!str) return -1;
+      if (str === "鍗�") return 10;
+      if (str.startsWith("鍗�")) return 10 + (digits[str[1]] || 0);
+      if (str.includes("鍗�")) {
+        const parts = str.split("鍗�");
+        const tens = digits[parts[0]] || 0;
+        const ones = digits[parts[1]] || 0;
+        return tens * 10 + ones;
+      }
+      return digits[str] !== undefined ? digits[str] : -1;
+    },
+
+    // 鐥呭尯鍚嶆瘮杈冨櫒锛氭暟瀛楁 鈫� 瀛楁瘝娈� 鈫� 鏁板瓧娈�
+    compareWardName(nameA, nameB) {
+      const ka = this.parseWardKey(nameA);
+      const kb = this.parseWardKey(nameB);
+
+      if (!ka && !kb) return (nameA || "").localeCompare(nameB || "", "zh-CN");
+      if (!ka) return 1;
+      if (!kb) return -1;
+
+      if (ka.group !== kb.group) return ka.group - kb.group;
+      if (ka.letter !== kb.letter) return ka.letter.localeCompare(kb.letter);
+      return ka.number - kb.number;
+    },
+
     handleSelectionChange(selection) {
       this.ids = selection.map((item) => item.tagid);
     },
diff --git a/src/views/sfstatistics/percentage/index copy.vue b/src/views/sfstatistics/percentage/index copy.vue
index 15f46c8..dc2d0ad 100644
--- a/src/views/sfstatistics/percentage/index copy.vue
+++ b/src/views/sfstatistics/percentage/index copy.vue
@@ -5,234 +5,568 @@
         <el-row :gutter="20">
           <!--鏍囩鏁版嵁-->
           <el-col :span="24" :xs="24">
-            <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
-              label-width="98px">
+            <el-form
+              :model="queryParams"
+              ref="queryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+              label-width="98px"
+            >
               <el-form-item label="缁熻绫诲瀷" prop="userName">
-                <el-select v-model="queryParams.statisticaltype" placeholder="璇烽�夋嫨缁熻绫诲瀷">
-                  <el-option v-for="item in Statisticallist" :key="item.value" :label="item.label" :value="item.value">
+                <el-select
+                  v-model="queryParams.statisticaltype"
+                  placeholder="璇烽�夋嫨缁熻绫诲瀷"
+                >
+                  <el-option
+                    v-for="item in Statisticallist"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
                   </el-option>
                 </el-select>
-                <el-select style="margin-left: 10px" v-if="queryParams.statisticaltype == 1"
-                  v-model="queryParams.leavehospitaldistrictcodes" size="medium" multiple filterable
-                  placeholder="璇烽�夋嫨鐥呭尯">
-                  <el-option v-for="item in flatArrayhospit" :key="item.value" :label="item.label" :value="item.value">
+                <el-select
+                  style="margin-left: 10px"
+                  v-if="queryParams.statisticaltype == 1"
+                  v-model="queryParams.leavehospitaldistrictcodes"
+                  size="medium"
+                  multiple
+                  filterable
+                  placeholder="璇烽�夋嫨鐥呭尯"
+                >
+                  <el-option
+                    v-for="item in flatArrayhospit"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
                   </el-option>
                 </el-select>
-                <el-select v-else-if="queryParams.statisticaltype == 2" v-model="queryParams.deptcodes" size="medium"
-                  multiple filterable placeholder="璇烽�夋嫨绉戝">
-                  <el-option v-for="item in flatArraydept" :key="item.value" :label="item.label" :value="item.value">
+                <el-select
+                  v-else-if="queryParams.statisticaltype == 2"
+                  v-model="queryParams.deptcodes"
+                  size="medium"
+                  multiple
+                  filterable
+                  placeholder="璇烽�夋嫨绉戝"
+                >
+                  <el-option
+                    v-for="item in flatArraydept"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
                   </el-option>
                 </el-select>
               </el-form-item>
 
               <el-form-item label="鏈嶅姟绫诲瀷" prop="userName">
-                <el-select v-model="queryParams.serviceType" multiple placeholder="璇烽�夋嫨">
-                  <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+                <el-select
+                  v-model="queryParams.serviceType"
+                  multiple
+                  placeholder="璇烽�夋嫨"
+                >
+                  <el-option
+                    v-for="item in options"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
                   </el-option>
                 </el-select>
               </el-form-item>
-              <el-form-item label-width="200" label="搴旈殢璁挎椂闂磋寖鍥�" prop="userName">
-                <el-date-picker v-model="queryParams.dateRange" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
-                  range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡"
-                  :default-time="['00:00:00', '23:59:59']">
+              <el-form-item
+                label-width="200"
+                label="搴旈殢璁挎椂闂磋寖鍥�"
+                prop="userName"
+              >
+                <el-date-picker
+                  v-model="queryParams.dateRange"
+                  value-format="yyyy-MM-dd HH:mm:ss"
+                  type="daterange"
+                  range-separator="鑷�"
+                  start-placeholder="寮�濮嬫棩鏈�"
+                  end-placeholder="缁撴潫鏃ユ湡"
+                  :default-time="['00:00:00', '23:59:59']"
+                >
                 </el-date-picker>
               </el-form-item>
 
               <el-form-item>
-                <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">鎼滅储</el-button>
-                <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">閲嶇疆</el-button>
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="medium"
+                  @click="handleQuery"
+                  >鎼滅储</el-button
+                >
+                <el-button
+                  icon="el-icon-refresh"
+                  size="medium"
+                  @click="resetQuery"
+                  >閲嶇疆</el-button
+                >
               </el-form-item>
-              <el-button type="warning" plain icon="el-icon-download" size="medium" @click="exportTable">瀵煎嚭</el-button>
-              <el-button type="primary" plain icon="el-icon-data-line" size="medium"
-                @click="showChartDialog">缁熻瓒嬪娍鍥�</el-button>
+              <el-button
+                type="warning"
+                plain
+                icon="el-icon-download"
+                size="medium"
+                @click="exportTable"
+                >瀵煎嚭</el-button
+              >
+              <el-button
+                type="primary"
+                plain
+                icon="el-icon-data-line"
+                size="medium"
+                @click="showChartDialog"
+                >缁熻瓒嬪娍鍥�</el-button
+              >
             </el-form>
 
             <!-- 鏂板锛歍ab鏍囩椤� -->
             <el-tabs v-model="activeTab" @tab-click="handleTabClick">
               <el-tab-pane label="棣栨闅忚" name="first">
                 <div class="your-table-container">
-                  <el-table ref="exportTable" id="exportTableid" v-loading="loading" :data="firstFollowUpList"
-                    :border="true" @selection-change="handleSelectionChange" @expand-change="handleRowClick"
-                    :row-key="getRowKey" show-summary :summary-method="getSummaries" :expand-row-keys="expands">
+                  <el-table
+                    ref="exportTable"
+                    id="exportTableid"
+                    v-loading="loading"
+                    :data="firstFollowUpList"
+                    :border="true"
+                    @selection-change="handleSelectionChange"
+                    @expand-change="handleRowClick"
+                    :row-key="getRowKey"
+                    show-summary
+                    :summary-method="getSummaries"
+                    :expand-row-keys="expands"
+                  >
                     <!-- 灞曞紑琛岀澶村垪 -->
                     <el-table-column type="expand">
                       <template slot-scope="props">
-                        <el-table :data="props.row.doctorStats" border style="width: 95%; margin: 0 auto"
-                          class="inner-table" show-summary :summary-method="getInnerSummaries">
-                          <el-table-column label="鍖荤敓濮撳悕" prop="drname" align="center" />
-                          <el-table-column label="绉戝" width="120" prop="deptname" align="center" />
-                          <el-table-column label="鍑洪櫌浜烘" prop="dischargeCount" align="center" />
-                          <el-table-column label="鍑洪櫌浜烘" align="center" key="dischargeCount" prop="dischargeCount">
+                        <el-table
+                          :data="props.row.doctorStats"
+                          border
+                          style="width: 95%; margin: 0 auto"
+                          class="inner-table"
+                          show-summary
+                          :summary-method="getInnerSummaries"
+                        >
+                          <el-table-column
+                            label="鍖荤敓濮撳悕"
+                            prop="drname"
+                            align="center"
+                          />
+                          <el-table-column
+                            label="绉戝"
+                            width="120"
+                            prop="deptname"
+                            align="center"
+                          />
+                          <el-table-column
+                            label="鍑洪櫌浜烘"
+                            prop="dischargeCount"
+                            align="center"
+                          />
+                          <el-table-column
+                            label="鍑洪櫌浜烘"
+                            align="center"
+                            key="dischargeCount"
+                            prop="dischargeCount"
+                          >
                           </el-table-column>
 
-                          <el-table-column label="鏃犻渶闅忚浜烘" align="center" width="100" key="nonFollowUp"
-                            prop="nonFollowUp">
+                          <el-table-column
+                            label="鏃犻渶闅忚浜烘"
+                            align="center"
+                            width="100"
+                            key="nonFollowUp"
+                            prop="nonFollowUp"
+                          >
                           </el-table-column>
-                          <el-table-column label="搴旈殢璁夸汉娆�" align="center" width="100" key="followUpNeeded"
-                            prop="followUpNeeded">
+                          <el-table-column
+                            label="搴旈殢璁夸汉娆�"
+                            align="center"
+                            width="100"
+                            key="followUpNeeded"
+                            prop="followUpNeeded"
+                          >
                           </el-table-column>
                           <el-table-column align="center" label="棣栨鍑洪櫌闅忚">
-                            <el-table-column label="闇�闅忚" align="center" key="needFollowUp" prop="needFollowUp">
+                            <el-table-column
+                              label="闇�闅忚"
+                              align="center"
+                              key="needFollowUp"
+                              prop="needFollowUp"
+                            >
                             </el-table-column>
-                            <el-table-column label="寰呴殢璁�" align="center" key="pendingFollowUp" prop="pendingFollowUp">
+                            <el-table-column
+                              label="寰呴殢璁�"
+                              align="center"
+                              key="pendingFollowUp"
+                              prop="pendingFollowUp"
+                            >
                             </el-table-column>
-                            <el-table-column label="闅忚鎴愬姛" align="center" key="followUpSuccess" prop="followUpSuccess">
+                            <el-table-column
+                              label="闅忚鎴愬姛"
+                              align="center"
+                              key="followUpSuccess"
+                              prop="followUpSuccess"
+                            >
                             </el-table-column>
-                            <el-table-column label="闅忚澶辫触" align="center" key="followUpFail" prop="followUpFail">
+                            <el-table-column
+                              label="闅忚澶辫触"
+                              align="center"
+                              key="followUpFail"
+                              prop="followUpFail"
+                            >
                             </el-table-column>
-                            <el-table-column label="闅忚鐜�" align="center" width="120" key="followUpRate"
-                              prop="followUpRate">
+                            <el-table-column
+                              label="闅忚鐜�"
+                              align="center"
+                              width="120"
+                              key="followUpRate"
+                              prop="followUpRate"
+                            >
                             </el-table-column>
-                            <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="鍙婃椂鐜�" align="center" width="120"
-                              key="rate" prop="rate">
+                            <el-table-column
+                              v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+                              label="鍙婃椂鐜�"
+                              align="center"
+                              width="120"
+                              key="rate"
+                              prop="rate"
+                            >
                               <template slot-scope="scope">
-                                <el-button size="medium" type="text" @click="Seedetails(scope.row)"><span
-                                    class="button-zx">{{
+                                <el-button
+                                  size="medium"
+                                  type="text"
+                                  @click="Seedetails(scope.row)"
+                                  ><span class="button-zx"
+                                    >{{
                                       (Number(scope.row.rate) * 100).toFixed(2)
-                                    }}%</span></el-button>
+                                    }}%</span
+                                  ></el-button
+                                >
                               </template>
                             </el-table-column>
-                            <el-table-column label="浜哄伐" align="center" key="manual" prop="manual">
+                            <el-table-column
+                              label="浜哄伐"
+                              align="center"
+                              key="manual"
+                              prop="manual"
+                            >
                             </el-table-column>
-                            <el-table-column label="鐭俊" align="center" key="sms" prop="sms">
+                            <el-table-column
+                              label="鐭俊"
+                              align="center"
+                              key="sms"
+                              prop="sms"
+                            >
                             </el-table-column>
-                            <el-table-column label="寰俊" align="center" key="weChat" prop="weChat">
+                            <el-table-column
+                              label="寰俊"
+                              align="center"
+                              key="weChat"
+                              prop="weChat"
+                            >
                             </el-table-column>
                           </el-table-column>
                         </el-table>
                       </template>
                     </el-table-column>
-                    <el-table-column label="鍑洪櫌鐥呭尯" align="center" sortable key="leavehospitaldistrictname"
-                      prop="leavehospitaldistrictname" width="150" :show-overflow-tooltip="true"
-                      :sort-method="sortChineseNumber" />
-                    <el-table-column label="绉戝" align="center" key="deptname" prop="deptname"
-                      :show-overflow-tooltip="true" />
-                    <el-table-column label="鍑洪櫌浜烘" align="center" key="dischargeCount" prop="dischargeCount">
+                    <el-table-column
+                      label="鍑洪櫌鐥呭尯"
+                      align="center"
+                      sortable
+                      key="leavehospitaldistrictname"
+                      prop="leavehospitaldistrictname"
+                      width="150"
+                      :show-overflow-tooltip="true"
+                      :sort-method="sortChineseNumber"
+                    />
+                    <el-table-column
+                      label="绉戝"
+                      align="center"
+                      key="deptname"
+                      prop="deptname"
+                      :show-overflow-tooltip="true"
+                    />
+                    <el-table-column
+                      label="鍑洪櫌浜烘"
+                      align="center"
+                      key="dischargeCount"
+                      prop="dischargeCount"
+                    >
                     </el-table-column>
 
-                    <el-table-column label="鏃犻渶闅忚浜烘" align="center" width="100" key="nonFollowUp" prop="nonFollowUp">
+                    <el-table-column
+                      label="鏃犻渶闅忚浜烘"
+                      align="center"
+                      width="100"
+                      key="nonFollowUp"
+                      prop="nonFollowUp"
+                    >
                     </el-table-column>
-                    <el-table-column label="搴旈殢璁夸汉娆�" align="center" width="100" key="followUpNeeded"
-                      prop="followUpNeeded">
+                    <el-table-column
+                      label="搴旈殢璁夸汉娆�"
+                      align="center"
+                      width="100"
+                      key="followUpNeeded"
+                      prop="followUpNeeded"
+                    >
                     </el-table-column>
                     <el-table-column align="center" label="棣栨鍑洪櫌闅忚">
-                      <el-table-column label="闇�闅忚" align="center" key="needFollowUp" prop="needFollowUp">
+                      <el-table-column
+                        label="闇�闅忚"
+                        align="center"
+                        key="needFollowUp"
+                        prop="needFollowUp"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.needFollowUpInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '闇�闅忚鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.needFollowUpInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '闇�闅忚鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.needFollowUp
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="寰呴殢璁�" align="center" key="pendingFollowUp" prop="pendingFollowUp">
+                      <el-table-column
+                        label="寰呴殢璁�"
+                        align="center"
+                        key="pendingFollowUp"
+                        prop="pendingFollowUp"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.pendingFollowUpInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '寰呴殢璁垮垪琛�'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.pendingFollowUpInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '寰呴殢璁垮垪琛�'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.pendingFollowUp
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="闅忚鎴愬姛" align="center" key="followUpSuccess" prop="followUpSuccess">
+                      <el-table-column
+                        label="闅忚鎴愬姛"
+                        align="center"
+                        key="followUpSuccess"
+                        prop="followUpSuccess"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.followUpSuccessInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '闅忚鎴愬姛鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.followUpSuccessInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '闅忚鎴愬姛鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.followUpSuccess
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="闅忚澶辫触" align="center" key="followUpFail" prop="followUpFail">
+                      <el-table-column
+                        label="闅忚澶辫触"
+                        align="center"
+                        key="followUpFail"
+                        prop="followUpFail"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.followUpFailInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '闅忚澶辫触鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.followUpFailInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '闅忚澶辫触鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.followUpFail
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="闅忚鐜�" align="center" width="120" key="followUpRate" prop="followUpRate">
+                      <el-table-column
+                        label="闅忚鐜�"
+                        align="center"
+                        width="120"
+                        key="followUpRate"
+                        prop="followUpRate"
+                      >
                       </el-table-column>
-                      <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="鍙婃椂鐜�" align="center" width="120" key="rate"
-                        prop="rate">
+                      <el-table-column
+                        v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+                        label="鍙婃椂鐜�"
+                        align="center"
+                        width="120"
+                        key="rate"
+                        prop="rate"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="Seedetails(scope.row)"><span class="button-zx">{{
-                            (Number(scope.row.rate) * 100).toFixed(2)
-                          }}%</span></el-button>
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="Seedetails(scope.row)"
+                            ><span class="button-zx"
+                              >{{
+                                (Number(scope.row.rate) * 100).toFixed(2)
+                              }}%</span
+                            ></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="浜哄伐" align="center" key="manual" prop="manual">
+                      <el-table-column
+                        label="浜哄伐"
+                        align="center"
+                        key="manual"
+                        prop="manual"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.manualInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '浜哄伐闅忚鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.manualInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '浜哄伐闅忚鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.manual
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="鐭俊" align="center" key="sms" prop="sms">
+                      <el-table-column
+                        label="鐭俊"
+                        align="center"
+                        key="sms"
+                        prop="sms"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.smsInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '鐭俊闅忚鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.smsInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '鐭俊闅忚鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.sms
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="寰俊" align="center" key="weChat" prop="weChat">
+                      <el-table-column
+                        label="寰俊"
+                        align="center"
+                        key="weChat"
+                        prop="weChat"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.weChatInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '寰俊闅忚鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.weChatInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '寰俊闅忚鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.weChat
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
                     </el-table-column>
 
                     <!-- 闅忚鎯呭喌鍒楋紙浠呬附姘村競涓尰闄㈡樉绀猴級 -->
-                    <el-table-column v-if="orgname == '涓芥按甯備腑鍖婚櫌'||orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'" align="center" label="闅忚鎯呭喌">
-                      <el-table-column label="姝e父璇煶" align="center" width="100" key="taskSituation1"
-                        prop="taskSituation1">
-                      </el-table-column><el-table-column label="鎮h�呮嫆鎺ユ垨鎷掕" align="center" width="100" key="taskSituation2"
-                        prop="taskSituation2">
-                      </el-table-column><el-table-column label="闈㈣鎴栬�呮帴璇�" align="center" width="100" key="taskSituation3"
-                        prop="taskSituation3">
-                      </el-table-column><el-table-column label="寰俊闅忚" align="center" width="100" key="taskSituation4"
-                        prop="taskSituation4">
-                      </el-table-column><el-table-column label="闅忚鐢佃瘽涓嶆纭�" align="center" width="100" key="taskSituation5"
-                        prop="taskSituation5">
-                      </el-table-column><el-table-column label="鍏朵粬鎯呭喌涓嶅疁闅忚" align="center" width="100"
-                        key="taskSituation6" prop="taskSituation6">
+                    <el-table-column
+                      v-if="
+                        orgname == '涓芥按甯備腑鍖婚櫌' ||
+                        orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'
+                      "
+                      align="center"
+                      label="闅忚鎯呭喌"
+                    >
+                      <el-table-column
+                        label="姝e父璇煶"
+                        align="center"
+                        width="100"
+                        key="taskSituation1"
+                        prop="taskSituation1"
+                      >
+                      </el-table-column
+                      ><el-table-column
+                        label="鎮h�呮嫆鎺ユ垨鎷掕"
+                        align="center"
+                        width="100"
+                        key="taskSituation2"
+                        prop="taskSituation2"
+                      >
+                      </el-table-column
+                      ><el-table-column
+                        label="闈㈣鎴栬�呮帴璇�"
+                        align="center"
+                        width="100"
+                        key="taskSituation3"
+                        prop="taskSituation3"
+                      >
+                      </el-table-column
+                      ><el-table-column
+                        label="寰俊闅忚"
+                        align="center"
+                        width="100"
+                        key="taskSituation4"
+                        prop="taskSituation4"
+                      >
+                      </el-table-column
+                      ><el-table-column
+                        label="闅忚鐢佃瘽涓嶆纭�"
+                        align="center"
+                        width="100"
+                        key="taskSituation5"
+                        prop="taskSituation5"
+                      >
+                      </el-table-column
+                      ><el-table-column
+                        label="鍏朵粬鎯呭喌涓嶅疁闅忚"
+                        align="center"
+                        width="100"
+                        key="taskSituation6"
+                        prop="taskSituation6"
+                      >
                       </el-table-column>
                     </el-table-column>
                   </el-table>
@@ -241,161 +575,341 @@
 
               <el-tab-pane label="鍐嶆闅忚" name="second">
                 <div class="your-table-container">
-                  <el-table ref="exportTableSecond" id="exportTableidSecond" v-loading="loadingSecond"
-                    :data="secondFollowUpList" :border="true" @selection-change="handleSelectionChangeSecond"
-                    @expand-change="handleRowClickSecond" :row-key="getRowKey" show-summary
-                    :summary-method="getSummariesSecond" :expand-row-keys="expandsSecond">
+                  <el-table
+                    ref="exportTableSecond"
+                    id="exportTableidSecond"
+                    v-loading="loadingSecond"
+                    :data="secondFollowUpList"
+                    :border="true"
+                    @selection-change="handleSelectionChangeSecond"
+                    @expand-change="handleRowClickSecond"
+                    :row-key="getRowKey"
+                    show-summary
+                    :summary-method="getSummariesSecond"
+                    :expand-row-keys="expandsSecond"
+                  >
                     <!-- 灞曞紑琛岀澶村垪 -->
                     <el-table-column type="expand">
                       <template slot-scope="props">
-                        <el-table :data="props.row.doctorStats" border style="width: 95%; margin: 0 auto"
-                          class="inner-table" show-summary :summary-method="getInnerSummariesSecond">
-                          <el-table-column label="鍖荤敓濮撳悕" prop="drname" align="center" />
-                          <el-table-column label="绉戝" width="120" prop="deptname" align="center" />
-                          <el-table-column label="鍑洪櫌浜烘" prop="dischargeCount" align="center" />
-                          <el-table-column label="鍑洪櫌浜烘" align="center" key="dischargeCount" prop="dischargeCount">
+                        <el-table
+                          :data="props.row.doctorStats"
+                          border
+                          style="width: 95%; margin: 0 auto"
+                          class="inner-table"
+                          show-summary
+                          :summary-method="getInnerSummariesSecond"
+                        >
+                          <el-table-column
+                            label="鍖荤敓濮撳悕"
+                            prop="drname"
+                            align="center"
+                          />
+                          <el-table-column
+                            label="绉戝"
+                            width="120"
+                            prop="deptname"
+                            align="center"
+                          />
+                          <el-table-column
+                            label="鍑洪櫌浜烘"
+                            prop="dischargeCount"
+                            align="center"
+                          />
+                          <el-table-column
+                            label="鍑洪櫌浜烘"
+                            align="center"
+                            key="dischargeCount"
+                            prop="dischargeCount"
+                          >
                           </el-table-column>
 
-                          <el-table-column label="鏃犻渶闅忚浜烘" align="center" width="100" key="nonFollowUp"
-                            prop="nonFollowUp">
+                          <el-table-column
+                            label="鏃犻渶闅忚浜烘"
+                            align="center"
+                            width="100"
+                            key="nonFollowUp"
+                            prop="nonFollowUp"
+                          >
                           </el-table-column>
-                          <el-table-column label="搴旈殢璁夸汉娆�" align="center" width="100" key="followUpNeeded"
-                            prop="followUpNeeded">
+                          <el-table-column
+                            label="搴旈殢璁夸汉娆�"
+                            align="center"
+                            width="100"
+                            key="followUpNeeded"
+                            prop="followUpNeeded"
+                          >
                           </el-table-column>
                           <el-table-column align="center" label="鍐嶆鍑洪櫌闅忚">
-                            <el-table-column label="闇�闅忚" align="center" key="needFollowUpAgain"
-                              prop="needFollowUpAgain">
+                            <el-table-column
+                              label="闇�闅忚"
+                              align="center"
+                              key="needFollowUpAgain"
+                              prop="needFollowUpAgain"
+                            >
                             </el-table-column>
-                            <el-table-column label="寰呴殢璁�" align="center" key="pendingFollowUpAgain"
-                              prop="pendingFollowUpAgain">
+                            <el-table-column
+                              label="寰呴殢璁�"
+                              align="center"
+                              key="pendingFollowUpAgain"
+                              prop="pendingFollowUpAgain"
+                            >
                             </el-table-column>
-                            <el-table-column label="闅忚鎴愬姛" align="center" key="followUpSuccessAgain"
-                              prop="followUpSuccessAgain">
+                            <el-table-column
+                              label="闅忚鎴愬姛"
+                              align="center"
+                              key="followUpSuccessAgain"
+                              prop="followUpSuccessAgain"
+                            >
                             </el-table-column>
-                            <el-table-column label="闅忚澶辫触" align="center" key="followUpFailAgain"
-                              prop="followUpFailAgain">
+                            <el-table-column
+                              label="闅忚澶辫触"
+                              align="center"
+                              key="followUpFailAgain"
+                              prop="followUpFailAgain"
+                            >
                             </el-table-column>
-                            <el-table-column label="闅忚鐜�" align="center" width="120" key="followUpRateAgain"
-                              prop="followUpRateAgain">
+                            <el-table-column
+                              label="闅忚鐜�"
+                              align="center"
+                              width="120"
+                              key="followUpRateAgain"
+                              prop="followUpRateAgain"
+                            >
                             </el-table-column>
-                            <el-table-column label="浜哄伐" align="center" key="manualAgain" prop="manualAgain">
+                            <el-table-column
+                              label="浜哄伐"
+                              align="center"
+                              key="manualAgain"
+                              prop="manualAgain"
+                            >
                             </el-table-column>
-                            <el-table-column label="鐭俊" align="center" key="smsAgain" prop="smsAgain">
+                            <el-table-column
+                              label="鐭俊"
+                              align="center"
+                              key="smsAgain"
+                              prop="smsAgain"
+                            >
                             </el-table-column>
-                            <el-table-column label="寰俊" align="center" key="weChatAgain" prop="weChatAgain">
+                            <el-table-column
+                              label="寰俊"
+                              align="center"
+                              key="weChatAgain"
+                              prop="weChatAgain"
+                            >
                             </el-table-column>
                           </el-table-column>
                         </el-table>
                       </template>
                     </el-table-column>
-                    <el-table-column label="鍑洪櫌鐥呭尯" align="center" sortable key="leavehospitaldistrictname"
-                      prop="leavehospitaldistrictname" width="150" :show-overflow-tooltip="true"
-                      :sort-method="sortChineseNumber" />
-                    <el-table-column label="绉戝" align="center" key="deptname" prop="deptname"
-                      :show-overflow-tooltip="true" />
-                    <el-table-column label="鍑洪櫌浜烘" align="center" key="dischargeCount" prop="dischargeCount">
+                    <el-table-column
+                      label="鍑洪櫌鐥呭尯"
+                      align="center"
+                      sortable
+                      key="leavehospitaldistrictname"
+                      prop="leavehospitaldistrictname"
+                      width="150"
+                      :show-overflow-tooltip="true"
+                      :sort-method="sortChineseNumber"
+                    />
+                    <el-table-column
+                      label="绉戝"
+                      align="center"
+                      key="deptname"
+                      prop="deptname"
+                      :show-overflow-tooltip="true"
+                    />
+                    <el-table-column
+                      label="鍑洪櫌浜烘"
+                      align="center"
+                      key="dischargeCount"
+                      prop="dischargeCount"
+                    >
                     </el-table-column>
 
-                    <el-table-column label="鏃犻渶闅忚浜烘" align="center" width="100" key="nonFollowUp" prop="nonFollowUp">
+                    <el-table-column
+                      label="鏃犻渶闅忚浜烘"
+                      align="center"
+                      width="100"
+                      key="nonFollowUp"
+                      prop="nonFollowUp"
+                    >
                     </el-table-column>
-                    <el-table-column label="搴旈殢璁夸汉娆�" align="center" width="100" key="followUpNeeded"
-                      prop="followUpNeeded">
+                    <el-table-column
+                      label="搴旈殢璁夸汉娆�"
+                      align="center"
+                      width="100"
+                      key="followUpNeeded"
+                      prop="followUpNeeded"
+                    >
                     </el-table-column>
                     <el-table-column align="center" label="鍐嶆鍑洪櫌闅忚">
-                      <el-table-column label="闇�闅忚" align="center" key="needFollowUpAgain" prop="needFollowUpAgain">
+                      <el-table-column
+                        label="闇�闅忚"
+                        align="center"
+                        key="needFollowUpAgain"
+                        prop="needFollowUpAgain"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.needFollowUpAgainInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '鍐嶆闅忚闇�闅忚鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.needFollowUpAgainInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '鍐嶆闅忚闇�闅忚鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.needFollowUpAgain
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="寰呴殢璁�" align="center" key="pendingFollowUpAgain"
-                        prop="pendingFollowUpAgain">
+                      <el-table-column
+                        label="寰呴殢璁�"
+                        align="center"
+                        key="pendingFollowUpAgain"
+                        prop="pendingFollowUpAgain"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.pendingFollowUpAgainInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '鍐嶆闅忚寰呴殢璁垮垪琛�'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.pendingFollowUpAgainInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '鍐嶆闅忚寰呴殢璁垮垪琛�'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.pendingFollowUpAgain
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="闅忚鎴愬姛" align="center" key="followUpSuccessAgain"
-                        prop="followUpSuccessAgain">
+                      <el-table-column
+                        label="闅忚鎴愬姛"
+                        align="center"
+                        key="followUpSuccessAgain"
+                        prop="followUpSuccessAgain"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.followUpSuccessAgainInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '鍐嶆闅忚闅忚鎴愬姛鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.followUpSuccessAgainInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '鍐嶆闅忚闅忚鎴愬姛鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.followUpSuccessAgain
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="闅忚澶辫触" align="center" key="followUpFailAgain" prop="followUpFailAgain">
+                      <el-table-column
+                        label="闅忚澶辫触"
+                        align="center"
+                        key="followUpFailAgain"
+                        prop="followUpFailAgain"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.followUpFailAgainInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '鍐嶆闅忚闅忚澶辫触鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.followUpFailAgainInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '鍐嶆闅忚闅忚澶辫触鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.followUpFailAgain
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="闅忚鐜�" align="center" width="120" key="followUpRateAgain"
-                        prop="followUpRateAgain">
+                      <el-table-column
+                        label="闅忚鐜�"
+                        align="center"
+                        width="120"
+                        key="followUpRateAgain"
+                        prop="followUpRateAgain"
+                      >
                       </el-table-column>
-                      <el-table-column label="浜哄伐" align="center" key="manualAgain" prop="manualAgain">
+                      <el-table-column
+                        label="浜哄伐"
+                        align="center"
+                        key="manualAgain"
+                        prop="manualAgain"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.manualAgainInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '鍐嶆闅忚浜哄伐闅忚鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.manualAgainInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '鍐嶆闅忚浜哄伐闅忚鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.manualAgain
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="鐭俊" align="center" key="smsAgain" prop="smsAgain">
+                      <el-table-column
+                        label="鐭俊"
+                        align="center"
+                        key="smsAgain"
+                        prop="smsAgain"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.smsAgainInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '鍐嶆闅忚鐭俊闅忚鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.smsAgainInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '鍐嶆闅忚鐭俊闅忚鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.smsAgain
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
-                      <el-table-column label="寰俊" align="center" key="weChatAgain" prop="weChatAgain">
+                      <el-table-column
+                        label="寰俊"
+                        align="center"
+                        key="weChatAgain"
+                        prop="weChatAgain"
+                      >
                         <template slot-scope="scope">
-                          <el-button size="medium" type="text" @click="
-                            viewDetails(
-                              scope.row.weChatAgainInfo,
-                              scope.row.leavehospitaldistrictname +
-                              '鍐嶆闅忚寰俊闅忚鍒楄〃'
-                            )
-                            "><span class="button-zx">{{
+                          <el-button
+                            size="medium"
+                            type="text"
+                            @click="
+                              viewDetails(
+                                scope.row.weChatAgainInfo,
+                                scope.row.leavehospitaldistrictname +
+                                  '鍐嶆闅忚寰俊闅忚鍒楄〃'
+                              )
+                            "
+                            ><span class="button-zx">{{
                               scope.row.weChatAgain
-                            }}</span></el-button>
+                            }}</span></el-button
+                          >
                         </template>
                       </el-table-column>
                     </el-table-column>
@@ -408,7 +922,12 @@
       </div>
     </div>
     <!-- 缁熻瓒嬪娍鍥惧脊绐� -->
-    <el-dialog title="闅忚缁熻瓒嬪娍鍥�" :visible.sync="chartDialogVisible" width="80%" :close-on-click-modal="false">
+    <el-dialog
+      title="闅忚缁熻瓒嬪娍鍥�"
+      :visible.sync="chartDialogVisible"
+      width="80%"
+      :close-on-click-modal="false"
+    >
       <div class="chart-container">
         <el-row :gutter="20">
           <el-col :span="12">
@@ -422,105 +941,256 @@
         </el-row>
       </div>
     </el-dialog>
-    <el-dialog title="鏈強鏃堕殢璁挎偅鑰呮湇鍔�" :visible.sync="SeedetailsVisible" v-loading="Seedloading" width="70%"
-      :close-on-click-modal="false">
+    <el-dialog
+      title="鏈強鏃堕殢璁挎偅鑰呮湇鍔�"
+      :visible.sync="SeedetailsVisible"
+      v-loading="Seedloading"
+      width="70%"
+      :close-on-click-modal="false"
+    >
       <div class="examine-jic">
         <div class="jic-value">
           <el-row :gutter="20">
             <!--鐢ㄦ埛鏁版嵁-->
-            <el-form :model="patientqueryParams" ref="queryForm" size="small" :inline="true" label-width="98px">
+            <el-form
+              :model="patientqueryParams"
+              ref="queryForm"
+              size="small"
+              :inline="true"
+              label-width="98px"
+            >
               <el-form-item label="鎮h�咃細">
-                <el-input v-model="patientqueryParams.name" @keyup.enter.native="handleQuery"></el-input>
+                <el-input
+                  v-model="patientqueryParams.name"
+                  @keyup.enter.native="handleQuery"
+                ></el-input>
               </el-form-item>
               <el-form-item label="鎮h�呰瘖鏂細">
-                <el-input v-model="patientqueryParams.leavediagname" @keyup.enter.native="handleQuery"></el-input>
+                <el-input
+                  v-model="patientqueryParams.leavediagname"
+                  @keyup.enter.native="handleQuery"
+                ></el-input>
               </el-form-item>
 
               <el-form-item>
-                <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">鎼滅储</el-button>
-                <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">鍙栨秷鍒涘缓</el-button>
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="medium"
+                  @click="handleQuery"
+                  >鎼滅储</el-button
+                >
+                <el-button
+                  icon="el-icon-refresh"
+                  size="medium"
+                  @click="resetQuery"
+                  >鍙栨秷鍒涘缓</el-button
+                >
               </el-form-item>
             </el-form>
             <!-- 閫夋嫨鎮h�呭垪琛� -->
             <el-table :data="logsheetlist" style="width: 100%">
-              <el-table-column prop="sendname" align="center" label="濮撳悕" width="100">
+              <el-table-column
+                prop="sendname"
+                align="center"
+                label="濮撳悕"
+                width="100"
+              >
               </el-table-column>
-              <el-table-column prop="taskName" align="center" width="200" show-overflow-tooltip label="浠诲姟鍚嶇О">
+              <el-table-column
+                prop="taskName"
+                align="center"
+                width="200"
+                show-overflow-tooltip
+                label="浠诲姟鍚嶇О"
+              >
               </el-table-column>
-              <el-table-column prop="sendstate" align="center" width="200" label="浠诲姟鐘舵��">
+              <el-table-column
+                prop="sendstate"
+                align="center"
+                width="200"
+                label="浠诲姟鐘舵��"
+              >
                 <template slot-scope="scope">
                   <div v-if="scope.row.sendstate == 1">
-                    <el-tag type="primary" :disable-transitions="false">琛ㄥ崟宸查鍙�</el-tag>
+                    <el-tag type="primary" :disable-transitions="false"
+                      >琛ㄥ崟宸查鍙�</el-tag
+                    >
                   </div>
                   <div v-if="scope.row.sendstate == 2">
-                    <el-tag type="primary" :disable-transitions="false">寰呴殢璁�</el-tag>
+                    <el-tag type="primary" :disable-transitions="false"
+                      >寰呴殢璁�</el-tag
+                    >
                   </div>
                   <div v-if="scope.row.sendstate == 3">
-                    <el-tag type="success" :disable-transitions="false">琛ㄥ崟宸插彂閫�</el-tag>
+                    <el-tag type="success" :disable-transitions="false"
+                      >琛ㄥ崟宸插彂閫�</el-tag
+                    >
                   </div>
                   <div v-if="scope.row.sendstate == 4">
-                    <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
+                    <el-tag type="info" :disable-transitions="false"
+                      >涓嶆墽琛�</el-tag
+                    >
                   </div>
                   <div v-if="scope.row.sendstate == 5">
-                    <el-tag type="danger" :disable-transitions="false">鍙戦�佸け璐�</el-tag>
+                    <el-tag type="danger" :disable-transitions="false"
+                      >鍙戦�佸け璐�</el-tag
+                    >
                   </div>
                   <div v-if="scope.row.sendstate == 6">
-                    <el-tag type="success" :disable-transitions="false">宸插畬鎴�</el-tag>
+                    <el-tag type="success" :disable-transitions="false"
+                      >宸插畬鎴�</el-tag
+                    >
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column prop="visitTime" align="center" label="搴旈殢璁挎椂闂�" width="200" show-overflow-tooltip>
+              <el-table-column
+                prop="visitTime"
+                align="center"
+                label="搴旈殢璁挎椂闂�"
+                width="200"
+                show-overflow-tooltip
+              >
               </el-table-column>
-              <el-table-column prop="finishtime" align="center" label="闅忚瀹屾垚鏃堕棿" width="200" show-overflow-tooltip>
+              <el-table-column
+                prop="finishtime"
+                align="center"
+                label="闅忚瀹屾垚鏃堕棿"
+                width="200"
+                show-overflow-tooltip
+              >
               </el-table-column>
-              <el-table-column label="鍑洪櫌鏃ユ湡" width="200" align="center" key="endtime" prop="endtime">
+              <el-table-column
+                label="鍑洪櫌鏃ユ湡"
+                width="200"
+                align="center"
+                key="endtime"
+                prop="endtime"
+              >
                 <template slot-scope="scope">
                   <span>{{ formatTime(scope.row.endtime) }}</span>
-                </template></el-table-column>
-              <el-table-column label="璐d换鎶ゅ+" width="120" align="center" key="nurseName" prop="nurseName" />
-              <el-table-column label="涓绘不鍖荤敓" width="120" align="center" key="drname" prop="drname" />
+                </template></el-table-column
+              >
+              <el-table-column
+                label="璐d换鎶ゅ+"
+                width="120"
+                align="center"
+                key="nurseName"
+                prop="nurseName"
+              />
+              <el-table-column
+                label="涓绘不鍖荤敓"
+                width="120"
+                align="center"
+                key="drname"
+                prop="drname"
+              />
 
-              <el-table-column label="缁撴灉鐘舵��" align="center" key="excep" prop="excep" width="120">
+              <el-table-column
+                label="缁撴灉鐘舵��"
+                align="center"
+                key="excep"
+                prop="excep"
+                width="120"
+              >
                 <template slot-scope="scope">
-                  <dict-tag :options="dict.type.sys_yujing" :value="scope.row.excep" />
+                  <dict-tag
+                    :options="dict.type.sys_yujing"
+                    :value="scope.row.excep"
+                  />
                 </template>
               </el-table-column>
-              <el-table-column label="澶勭悊鎰忚" align="center" key="suggest" prop="suggest" width="120">
+              <el-table-column
+                label="澶勭悊鎰忚"
+                align="center"
+                key="suggest"
+                prop="suggest"
+                width="120"
+              >
                 <template slot-scope="scope">
-                  <dict-tag :options="dict.type.sys_suggest" :value="scope.row.suggest" />
+                  <dict-tag
+                    :options="dict.type.sys_suggest"
+                    :value="scope.row.suggest"
+                  />
                 </template>
               </el-table-column>
 
-              <el-table-column prop="templatename" align="center" label="鏈嶅姟妯℃澘" width="200" show-overflow-tooltip>
+              <el-table-column
+                prop="templatename"
+                align="center"
+                label="鏈嶅姟妯℃澘"
+                width="200"
+                show-overflow-tooltip
+              >
               </el-table-column>
-              <el-table-column prop="remark" align="center" label="鏈嶅姟璁板綍" width="200" show-overflow-tooltip>
+              <el-table-column
+                prop="remark"
+                align="center"
+                label="鏈嶅姟璁板綍"
+                width="200"
+                show-overflow-tooltip
+              >
               </el-table-column>
 
-              <el-table-column prop="bankcardno" align="center" label="鍛煎彨鐘舵��" width="210">
+              <el-table-column
+                prop="bankcardno"
+                align="center"
+                label="鍛煎彨鐘舵��"
+                width="210"
+              >
               </el-table-column>
-              <el-table-column label="鎿嶄綔" fixed="right" align="center" width="200"
-                class-name="small-padding fixed-width">
+              <el-table-column
+                label="鎿嶄綔"
+                fixed="right"
+                align="center"
+                width="200"
+                class-name="small-padding fixed-width"
+              >
                 <template slot-scope="scope">
-                  <el-button size="medium" type="text" @click="SeedetailsgGo(scope.row)"><span class="button-zx"><i
-                        class="el-icon-s-order"></i>鏌ョ湅</span></el-button>
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="SeedetailsgGo(scope.row)"
+                    ><span class="button-zx"
+                      ><i class="el-icon-s-order"></i>鏌ョ湅</span
+                    ></el-button
+                  >
                 </template>
               </el-table-column>
             </el-table>
           </el-row>
-          <pagination v-show="patienttotal > 0 && this.patientqueryParams.allhosp != 6" :total="patienttotal"
-            :page.sync="patientqueryParams.pn" :limit.sync="patientqueryParams.ps" @pagination="Seedetailstion" />
+          <pagination
+            v-show="patienttotal > 0 && this.patientqueryParams.allhosp != 6"
+            :total="patienttotal"
+            :page.sync="patientqueryParams.pn"
+            :limit.sync="patientqueryParams.ps"
+            @pagination="Seedetailstion"
+          />
         </div>
       </div>
     </el-dialog>
     <!-- 鍚勭被璇︽儏 -->
-    <el-dialog :title="infotitle" :visible.sync="infotitleVisible" v-loading="infotitloading" width="70%"
-      :close-on-click-modal="false">
+    <el-dialog
+      :title="infotitle"
+      :visible.sync="infotitleVisible"
+      v-loading="infotitloading"
+      width="70%"
+      :close-on-click-modal="false"
+    >
       <div style="margin-bottom: 16px; display: flex; align-items: center">
         <span style="margin-right: 10px; font-weight: bold">鎮h�呭鍚嶆煡璇�:</span>
-        <el-input v-model="searchName" placeholder="璇疯緭鍏ユ偅鑰呭鍚嶈繘琛岀瓫閫�" clearable style="width: 300px" @input="handleSearch"
-          @clear="handleSearch">
+        <el-input
+          v-model="searchName"
+          placeholder="璇疯緭鍏ユ偅鑰呭鍚嶈繘琛岀瓫閫�"
+          clearable
+          style="width: 300px"
+          @input="handleSearch"
+          @clear="handleSearch"
+        >
         </el-input>
-        <span style="margin-left: 10px; color: rgb(35, 81, 233); font-size: 16px">
+        <span
+          style="margin-left: 10px; color: rgb(35, 81, 233); font-size: 16px"
+        >
           鍏� {{ infotitlelist.length }} 鏉¤褰�
         </span>
       </div>
@@ -528,75 +1198,196 @@
         <div class="jic-value">
           <el-row :gutter="20">
             <!-- 閫夋嫨鎮h�呭垪琛� -->
-            <div class="data-list" ref="dataList" @scroll="handleScroll" v-loading="infotitloading">
-              <el-table :data="currentDisplayList" height="660" style="width: 100%">
-                <el-table-column prop="sendname" align="center" label="濮撳悕" width="100">
+            <div
+              class="data-list"
+              ref="dataList"
+              @scroll="handleScroll"
+              v-loading="infotitloading"
+            >
+              <el-table
+                :data="currentDisplayList"
+                height="660"
+                style="width: 100%"
+              >
+                <el-table-column
+                  prop="sendname"
+                  align="center"
+                  label="濮撳悕"
+                  width="100"
+                >
                 </el-table-column>
-                <el-table-column prop="taskName" align="center" width="200" show-overflow-tooltip label="浠诲姟鍚嶇О">
+                <el-table-column
+                  prop="taskName"
+                  align="center"
+                  width="200"
+                  show-overflow-tooltip
+                  label="浠诲姟鍚嶇О"
+                >
                 </el-table-column>
-                <el-table-column prop="sendstate" align="center" width="200" label="浠诲姟鐘舵��">
+                <el-table-column
+                  prop="sendstate"
+                  align="center"
+                  width="200"
+                  label="浠诲姟鐘舵��"
+                >
                   <template slot-scope="scope">
                     <div v-if="scope.row.sendstate == 1">
-                      <el-tag type="primary" :disable-transitions="false">琛ㄥ崟宸查鍙�</el-tag>
+                      <el-tag type="primary" :disable-transitions="false"
+                        >琛ㄥ崟宸查鍙�</el-tag
+                      >
                     </div>
                     <div v-if="scope.row.sendstate == 2">
-                      <el-tag type="primary" :disable-transitions="false">寰呴殢璁�</el-tag>
+                      <el-tag type="primary" :disable-transitions="false"
+                        >寰呴殢璁�</el-tag
+                      >
                     </div>
                     <div v-if="scope.row.sendstate == 3">
-                      <el-tag type="success" :disable-transitions="false">琛ㄥ崟宸插彂閫�</el-tag>
+                      <el-tag type="success" :disable-transitions="false"
+                        >琛ㄥ崟宸插彂閫�</el-tag
+                      >
                     </div>
                     <div v-if="scope.row.sendstate == 4">
-                      <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
+                      <el-tag type="info" :disable-transitions="false"
+                        >涓嶆墽琛�</el-tag
+                      >
                     </div>
                     <div v-if="scope.row.sendstate == 5">
-                      <el-tag type="danger" :disable-transitions="false">鍙戦�佸け璐�</el-tag>
+                      <el-tag type="danger" :disable-transitions="false"
+                        >鍙戦�佸け璐�</el-tag
+                      >
                     </div>
                     <div v-if="scope.row.sendstate == 6">
-                      <el-tag type="success" :disable-transitions="false">宸插畬鎴�</el-tag>
+                      <el-tag type="success" :disable-transitions="false"
+                        >宸插畬鎴�</el-tag
+                      >
                     </div>
                   </template>
                 </el-table-column>
-                <el-table-column label="浠诲姟鎵ц鏂瑰紡" align="center" key="preachform" prop="preachform" width="160"
-                  :show-overflow-tooltip="true">
+                <el-table-column
+                  label="浠诲姟鎵ц鏂瑰紡"
+                  align="center"
+                  key="preachform"
+                  prop="preachform"
+                  width="160"
+                  :show-overflow-tooltip="true"
+                >
                   <template slot-scope="scope">
-                    <span v-for="item in scope.row.preachform">{{ item }}銆�
+                    <span v-for="item in scope.row.preachform"
+                      >{{ item }}銆�
                     </span>
                   </template>
                 </el-table-column>
-                <el-table-column prop="visitTime" align="center" label="搴旈殢璁挎椂闂�" width="200" show-overflow-tooltip>
+                <el-table-column
+                  prop="visitTime"
+                  align="center"
+                  label="搴旈殢璁挎椂闂�"
+                  width="200"
+                  show-overflow-tooltip
+                >
                 </el-table-column>
-                <el-table-column prop="finishtime" align="center" label="闅忚瀹屾垚鏃堕棿" width="200" show-overflow-tooltip>
+                <el-table-column
+                  prop="finishtime"
+                  align="center"
+                  label="闅忚瀹屾垚鏃堕棿"
+                  width="200"
+                  show-overflow-tooltip
+                >
                 </el-table-column>
-                <el-table-column label="鍑洪櫌鏃ユ湡" width="200" align="center" key="endtime" prop="endtime">
+                <el-table-column
+                  label="鍑洪櫌鏃ユ湡"
+                  width="200"
+                  align="center"
+                  key="endtime"
+                  prop="endtime"
+                >
                   <template slot-scope="scope">
                     <span>{{ formatTime(scope.row.endtime) }}</span>
-                  </template></el-table-column>
-                <el-table-column label="璐d换鎶ゅ+" width="120" align="center" key="nurseName" prop="nurseName" />
-                <el-table-column label="涓绘不鍖荤敓" width="120" align="center" key="drname" prop="drname" />
+                  </template></el-table-column
+                >
+                <el-table-column
+                  label="璐d换鎶ゅ+"
+                  width="120"
+                  align="center"
+                  key="nurseName"
+                  prop="nurseName"
+                />
+                <el-table-column
+                  label="涓绘不鍖荤敓"
+                  width="120"
+                  align="center"
+                  key="drname"
+                  prop="drname"
+                />
 
-                <el-table-column label="缁撴灉鐘舵��" align="center" key="excep" prop="excep" width="120">
+                <el-table-column
+                  label="缁撴灉鐘舵��"
+                  align="center"
+                  key="excep"
+                  prop="excep"
+                  width="120"
+                >
                   <template slot-scope="scope">
-                    <dict-tag :options="dict.type.sys_yujing" :value="scope.row.excep" />
+                    <dict-tag
+                      :options="dict.type.sys_yujing"
+                      :value="scope.row.excep"
+                    />
                   </template>
                 </el-table-column>
-                <el-table-column label="澶勭悊鎰忚" align="center" key="suggest" prop="suggest" width="120">
+                <el-table-column
+                  label="澶勭悊鎰忚"
+                  align="center"
+                  key="suggest"
+                  prop="suggest"
+                  width="120"
+                >
                   <template slot-scope="scope">
-                    <dict-tag :options="dict.type.sys_suggest" :value="scope.row.suggest" />
+                    <dict-tag
+                      :options="dict.type.sys_suggest"
+                      :value="scope.row.suggest"
+                    />
                   </template>
                 </el-table-column>
 
-                <el-table-column prop="templatename" align="center" label="鏈嶅姟妯℃澘" width="200" show-overflow-tooltip>
+                <el-table-column
+                  prop="templatename"
+                  align="center"
+                  label="鏈嶅姟妯℃澘"
+                  width="200"
+                  show-overflow-tooltip
+                >
                 </el-table-column>
-                <el-table-column prop="remark" align="center" label="鏈嶅姟璁板綍" width="200" show-overflow-tooltip>
+                <el-table-column
+                  prop="remark"
+                  align="center"
+                  label="鏈嶅姟璁板綍"
+                  width="200"
+                  show-overflow-tooltip
+                >
                 </el-table-column>
 
-                <el-table-column prop="bankcardno" align="center" label="鍛煎彨鐘舵��" width="210">
+                <el-table-column
+                  prop="bankcardno"
+                  align="center"
+                  label="鍛煎彨鐘舵��"
+                  width="210"
+                >
                 </el-table-column>
-                <el-table-column label="鎿嶄綔" fixed="right" align="center" width="200"
-                  class-name="small-padding fixed-width">
+                <el-table-column
+                  label="鎿嶄綔"
+                  fixed="right"
+                  align="center"
+                  width="200"
+                  class-name="small-padding fixed-width"
+                >
                   <template slot-scope="scope">
-                    <el-button size="medium" type="text" @click="SeedetailsgGo(scope.row)"><span class="button-zx"><i
-                          class="el-icon-s-order"></i>鏌ョ湅</span></el-button>
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="SeedetailsgGo(scope.row)"
+                      ><span class="button-zx"
+                        ><i class="el-icon-s-order"></i>鏌ョ湅</span
+                      ></el-button
+                    >
                   </template>
                 </el-table-column>
               </el-table>
@@ -1323,12 +2114,18 @@
     Seedetails(row) {
       this.SeedetailsVisible = true;
       this.Seedloading = true;
-      this.patientqueryParams.starttime = this.parseTime(
-        this.queryParams.dateRange[0]
-      );
-      this.patientqueryParams.endtime = this.parseTime(
-        this.queryParams.dateRange[1]
-      );
+      if (queryParams.dateRange) {
+        this.patientqueryParams.starttime = this.parseTime(
+          this.queryParams.dateRange[0]
+        );
+        this.patientqueryParams.endtime = this.parseTime(
+          this.queryParams.dateRange[1]
+        );
+      } else {
+        this.patientqueryParams.endtime = null;
+        this.patientqueryParams.starttime = null;
+      }
+
       this.patientqueryParams.deptcode = row.deptcode;
       selectTimelyRate(this.patientqueryParams).then((response) => {
         this.logsheetlist = response.data.detail;
@@ -1545,7 +2342,7 @@
           this.getList();
           this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
         })
-        .catch(() => { });
+        .catch(() => {});
     },
     // 瀵煎嚭鏂规硶
 
@@ -2791,9 +3588,21 @@
 }
 
 // 鐧惧垎姣斿瓧娈电壒娈婃牱寮�
-.your-table-container ::v-deep .el-table__footer .el-table__cell[data-field="followUpRate"] .cell,
-.your-table-container ::v-deep .el-table__footer .el-table__cell[data-field="rate"] .cell,
-.your-table-container ::v-deep .el-table__footer .el-table__cell[data-field="followUpRateAgain"] .cell {
+.your-table-container
+  ::v-deep
+  .el-table__footer
+  .el-table__cell[data-field="followUpRate"]
+  .cell,
+.your-table-container
+  ::v-deep
+  .el-table__footer
+  .el-table__cell[data-field="rate"]
+  .cell,
+.your-table-container
+  ::v-deep
+  .el-table__footer
+  .el-table__cell[data-field="followUpRateAgain"]
+  .cell {
   color: #e6a23c !important;
   font-weight: 700 !important;
 }
@@ -2822,7 +3631,6 @@
 
 /* 鍐呭眰鍖荤敓琛ㄦ牸鏍峰紡 */
 .inner-table {
-
   // 琛ㄥご鑳屾櫙鑹�
   ::v-deep .el-table__header-wrapper {
     background-color: #f0f7ff !important;
diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue
index 9a068e7..d6254f3 100644
--- a/src/views/sfstatistics/percentage/index.vue
+++ b/src/views/sfstatistics/percentage/index.vue
@@ -14,6 +14,7 @@
           <el-select
             v-model="queryParams.statisticaltype"
             placeholder="璇烽�夋嫨缁熻绫诲瀷"
+            @change="handleQuery"
           >
             <el-option
               v-for="item in Statisticallist"
@@ -254,8 +255,8 @@
       options: this.$store.getters.tasktypes,
       queryParams: {
         serviceType: [2],
-        dateRange: this.getLastMonthRange(),
-        dateRangecy: [],
+        dateRange: [],
+        dateRangecy: this.getLastMonthRange(),
         statisticaltype:
           localStorage.getItem("orgname") == "缂欎簯鍘夸汉姘戝尰闄�" ||
           localStorage.getItem("orgname") == "鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�"
@@ -395,6 +396,8 @@
     },
 
     handleQuery() {
+      if (!this.queryParams.dateRange) this.queryParams.dateRange = [];
+      if (!this.queryParams.dateRangecy) this.queryParams.dateRange = [];
       this.queryParams.startTime = this.parseTime(
         this.queryParams.dateRange[0]
       );
diff --git a/src/views/sfstatistics/percentage/satisfaction.vue b/src/views/sfstatistics/percentage/satisfaction.vue
index 3858b3b..c409b36 100644
--- a/src/views/sfstatistics/percentage/satisfaction.vue
+++ b/src/views/sfstatistics/percentage/satisfaction.vue
@@ -17,6 +17,7 @@
                 <el-select
                   v-model="queryParams.statisticaltype"
                   placeholder="璇烽�夋嫨缁熻绫诲瀷"
+                  @change="handleQuery"
                 >
                   <el-option
                     v-for="item in Statisticallist"
@@ -186,7 +187,7 @@
                   </template> -->
               </el-table-column>
               <el-table-column
-              v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'"
+                v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'"
                 label="鍙婃椂鐜�"
                 align="center"
                 key="rate"
@@ -553,7 +554,6 @@
 </template>
 
 <script>
-
 import store from "@/store";
 import {
   getSfStatisticsJoy,
@@ -982,7 +982,6 @@
       this.single = selection.length != 1;
       this.multiple = !selection.length;
     },
-
 
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
diff --git a/vue.config.js b/vue.config.js
index fd08b34..7f985b0 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -36,8 +36,8 @@
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
         // target: `https://www.health-y.cn/lssf`,
-        target: `http://192.168.100.10:8096`,
-        // target: `http://192.168.100.10:8094`,//鐪佺珛鍚屽痉
+        // target: `http://192.168.100.10:8096`,
+        target: `http://192.168.100.10:8094`,//鐪佺珛鍚屽痉
         // target: `http://192.168.100.10:8095`,//鏂板崕
         // target: `http://192.168.100.10:8098`,//甯備竴
         // target:`http://localhost:8095`,
diff --git "a/\351\232\217\350\256\277\351\200\232\347\224\250.zip" "b/\351\232\217\350\256\277\351\200\232\347\224\250.zip"
deleted file mode 100644
index e119a81..0000000
--- "a/\351\232\217\350\256\277\351\200\232\347\224\250.zip"
+++ /dev/null
Binary files differ
diff --git "a/\351\232\217\350\256\277\351\200\232\347\224\2508.10.zip" "b/\351\232\217\350\256\277\351\200\232\347\224\2508.10.zip"
deleted file mode 100644
index 719643c..0000000
--- "a/\351\232\217\350\256\277\351\200\232\347\224\2508.10.zip"
+++ /dev/null
Binary files differ
diff --git "a/\351\232\217\350\256\277\351\200\232\347\224\2508.11.zip" "b/\351\232\217\350\256\277\351\200\232\347\224\2508.14.zip"
similarity index 81%
rename from "\351\232\217\350\256\277\351\200\232\347\224\2508.11.zip"
rename to "\351\232\217\350\256\277\351\200\232\347\224\2508.14.zip"
index a119b53..ea19429 100644
--- "a/\351\232\217\350\256\277\351\200\232\347\224\2508.11.zip"
+++ "b/\351\232\217\350\256\277\351\200\232\347\224\2508.14.zip"
Binary files differ
diff --git "a/\351\232\217\350\256\277\351\200\232\347\224\250 \0502\051.zip" "b/\351\232\217\350\256\277\351\200\232\347\224\2508.17.zip"
similarity index 80%
rename from "\351\232\217\350\256\277\351\200\232\347\224\250 \0502\051.zip"
rename to "\351\232\217\350\256\277\351\200\232\347\224\2508.17.zip"
index 1614893..c240972 100644
--- "a/\351\232\217\350\256\277\351\200\232\347\224\250 \0502\051.zip"
+++ "b/\351\232\217\350\256\277\351\200\232\347\224\2508.17.zip"
Binary files differ
diff --git "a/\351\232\217\350\256\277\351\200\232\347\224\2508.7.zip" "b/\351\232\217\350\256\277\351\200\232\347\224\2508.7.zip"
deleted file mode 100644
index b73b3be..0000000
--- "a/\351\232\217\350\256\277\351\200\232\347\224\2508.7.zip"
+++ /dev/null
Binary files differ

--
Gitblit v1.9.3