From d93ed5c5aadcf3d49f824339c26ebfac911be06d Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期五, 07 十一月 2025 14:39:38 +0800
Subject: [PATCH] 测试完成

---
 dist.zip                                                 |    0 
 vue.config.js                                            |    4 
 src/views/knowledge/education/index copy.vue             |    1 
 src/views/knowledge/education/compilequer/index copy.vue |    7 
 src/views/patient/patient/outpatient.vue                 |    1 
 src/views/knowledge/questionnaire/compilequer/index.vue  |  443 ++++
 src/views/knowledge/education/index.vue                  |   20 
 src/views/followvisit/OutpatientAgain/index.vue          | 1845 +++++++++++++++++++
 /dev/null                                                |    0 
 src/views/followvisit/record/detailpage/index.vue        |   16 
 src/views/sfstatistics/percentage/index.vue              | 1620 +++++++++-------
 LiShui.zip                                               |    0 
 src/views/knowledge/questionnaire/index.vue              |   31 
 src/views/outsideChainxjnew.vue                          |  108 
 src/views/patient/patient/AwaitingAdmission.vue          | 1274 +++++++++++++
 src/views/knowledge/education/compilequer/index.vue      |   38 
 src/views/patient/propaganda/Missioncreation.vue         |  158 +
 src/views/patient/propaganda/particty.vue                |    1 
 src/components/CallCenterLs/index.vue                    |  137 +
 src/views/followvisit/discharge/index.vue                |   22 
 src/views/outsideChainwtnew.vue                          |   29 
 21 files changed, 4,871 insertions(+), 884 deletions(-)

diff --git "a/dist \0503\051.zip" b/LiShui.zip
similarity index 89%
rename from "dist \0503\051.zip"
rename to LiShui.zip
index ab6e4c0..61591dc 100644
--- "a/dist \0503\051.zip"
+++ b/LiShui.zip
Binary files differ
diff --git "a/dist \0502\051.zip" "b/dist \0502\051.zip"
deleted file mode 100644
index 56675ea..0000000
--- "a/dist \0502\051.zip"
+++ /dev/null
Binary files differ
diff --git "a/dist \0504\051.zip" "b/dist \0504\051.zip"
deleted file mode 100644
index dc70ef9..0000000
--- "a/dist \0504\051.zip"
+++ /dev/null
Binary files differ
diff --git a/dist.zip b/dist.zip
index 6755c80..f7a4b68 100644
--- a/dist.zip
+++ b/dist.zip
Binary files differ
diff --git a/src/components/CallCenterLs/index.vue b/src/components/CallCenterLs/index.vue
index 2114df6..1ffc805 100644
--- a/src/components/CallCenterLs/index.vue
+++ b/src/components/CallCenterLs/index.vue
@@ -25,7 +25,18 @@
               <span class="btn-icon">馃摓</span>
               {{ callButtonText }}
             </button>
-
+            <button
+              @click="handleSeatLogout"
+              :class="[
+                'seat-btn',
+                'logout',
+                { 'in-call': isInCall || isCalling },
+              ]"
+              :disabled="!canLogout"
+            >
+              <span class="btn-icon">馃毆</span>
+              {{ isInCall || isCalling ? "寮哄埗绛惧嚭" : "绛惧嚭" }}
+            </button>
             <button
               @click="handleHangup"
               class="hangup-btn"
@@ -60,9 +71,7 @@
 
           <div class="status-item" v-if="callDuration">
             <span class="status-label">閫氳瘽鏃堕暱:</span>
-            <span class="duration-display">
-              鈴憋笍 {{ callDuration }}
-            </span>
+            <span class="duration-display"> 鈴憋笍 {{ callDuration }} </span>
           </div>
         </div>
       </div>
@@ -131,7 +140,10 @@
     isInCall() {
       return this.callStatus === "connected";
     },
-
+    canLogout() {
+      // 鍙湁鍦ㄥ凡绛惧叆鐘舵�佹墠鍏佽绛惧嚭锛堟棤璁烘槸鍚﹀湪閫氳瘽涓級
+      return this.isSeatLoggedIn && !this.isSeatLoggingOut;
+    },
     canMakeCall() {
       return (
         this.isSeatLoggedIn &&
@@ -204,7 +216,40 @@
       this.$refs.callComponent.callout(this.customerPhone);
       this.startCallTimer();
     },
+    async handleSeatLogout() {
+      if (!this.canLogout) return;
 
+      try {
+        // 濡傛灉姝e湪閫氳瘽涓紝鍏堟寕鏂�
+        if (this.isInCall || this.isCalling) {
+          // 鏄剧ず纭瀵硅瘽妗�
+          const confirm = await this.$confirm(
+            "纭畾瑕佺鍑哄悧锛熺鍑哄皢缁撴潫褰撳墠閫氳瘽",
+            "鎻愮ず",
+            {
+              confirmButtonText: "纭畾",
+              cancelButtonText: "鍙栨秷",
+              type: "warning",
+            }
+          );
+          await this.handleHangup();
+        }
+        console.log(2);
+
+        // 鎵ц绛惧嚭
+        await this.$refs.callComponent.handleSeatLogout();
+        console.log(3);
+        this.isSeatLoggedIn = false;
+
+        this.$message.success("搴у腑绛惧嚭鎴愬姛");
+      } catch (error) {
+        if (error !== "cancel") {
+          // 蹇界暐鐢ㄦ埛鍙栨秷鐨勬儏鍐�
+          console.error("绛惧嚭澶辫触:", error);
+          this.$message.error("搴у腑绛惧嚭澶辫触");
+        }
+      }
+    },
     handleHangup() {
       this.$refs.callComponent.hangup();
       this.stopCallTimer();
@@ -213,13 +258,19 @@
 
     onSeatStatusChange(status) {
       this.isSeatLoggedIn = status.isLoggedIn;
+
+      // 濡傛灉搴у腑绛惧嚭锛岄噸缃�氳瘽鐘舵��
+      if (!status.isLoggedIn) {
+        this.callStatus = "idle";
+        this.stopCallTimer();
+      }
     },
 
     onCallStatusChange(status) {
       this.callStatus = status.status;
-      if (status.status === "connected") {
+      if (status.status == "connected") {
         this.startCallTimer();
-      } else if (status.status === "idle") {
+      } else if (status.status == "idle") {
         this.stopCallTimer();
       }
     },
@@ -283,6 +334,11 @@
 
   beforeUnmount() {
     this.stopCallTimer();
+
+    // 缁勪欢閿�姣佸墠灏濊瘯绛惧嚭
+    if (this.isSeatLoggedIn) {
+      this.handleSeatLogout().catch(console.error);
+    }
   },
 };
 </script>
@@ -303,13 +359,44 @@
   grid-template-columns: 1fr 1fr;
   gap: 16px;
   padding: 20px;
-    padding-bottom: 0;
+  padding-bottom: 0;
 
   @media (max-width: 1024px) {
     grid-template-columns: 1fr;
   }
 }
 
+.seat-btn.logout {
+  background: linear-gradient(135deg, #f97316, #ea580c);
+  color: white;
+
+  &:hover:not(:disabled) {
+    box-shadow: 0 6px 16px rgba(249, 115, 22, 0.4);
+  }
+
+  // 閫氳瘽涓殑鐗规畩鏍峰紡
+  &.in-call {
+    background: linear-gradient(135deg, #ef4444, #dc2626);
+    animation: pulse 1.5s infinite;
+
+    &:hover:not(:disabled) {
+      box-shadow: 0 6px 16px rgba(239, 68, 68, 0.4);
+    }
+  }
+}
+
+// 閫氳瘽涓鍑烘寜閽殑鐗规畩鍔ㄧ敾
+@keyframes pulse-red {
+  0% {
+    box-shadow: 0 4px 12px rgba(239, 68, 68, 0.5);
+  }
+  50% {
+    box-shadow: 0 4px 20px rgba(239, 68, 68, 0.8);
+  }
+  100% {
+    box-shadow: 0 4px 12px rgba(239, 68, 68, 0.5);
+  }
+}
 .section-title {
   font-size: 16px;
   font-weight: 600;
@@ -407,7 +494,11 @@
 }
 
 .call-btn.calling {
-  background: linear-gradient(135deg, #f59e0b, #d97706); /* 鍛煎彨涓姸鎬佹敼涓烘鑹叉笎鍙� */
+  background: linear-gradient(
+    135deg,
+    #f59e0b,
+    #d97706
+  ); /* 鍛煎彨涓姸鎬佹敼涓烘鑹叉笎鍙� */
   animation: pulse 1.5s infinite; /* 鍛煎彨涓坊鍔犲懠鍚歌剦鍐插姩鐢� */
 }
 
@@ -432,9 +523,15 @@
 
 /* 鑴夊啿鍔ㄧ敾瀹氫箟 */
 @keyframes pulse {
-  0% { box-shadow: 0 4px 12px rgba(245, 158, 11, 0.5); }
-  50% { box-shadow: 0 4px 20px rgba(245, 158, 11, 0.8); }
-  100% { box-shadow: 0 4px 12px rgba(245, 158, 11, 0.5); }
+  0% {
+    box-shadow: 0 4px 12px rgba(245, 158, 11, 0.5);
+  }
+  50% {
+    box-shadow: 0 4px 20px rgba(245, 158, 11, 0.8);
+  }
+  100% {
+    box-shadow: 0 4px 12px rgba(245, 158, 11, 0.5);
+  }
 }
 
 // 鐘舵�佹樉绀烘牱寮�
@@ -513,7 +610,7 @@
 }
 
 .duration-display {
-  font-family: 'Courier New', monospace;
+  font-family: "Courier New", monospace;
   font-weight: 600;
   color: #059669;
   font-size: 14px;
@@ -537,7 +634,7 @@
 }
 
 .debug-title {
- font-size: 16px;
+  font-size: 16px;
   font-weight: 600;
   color: #1e293b;
   margin-bottom: 16px;
@@ -570,9 +667,15 @@
 
 // 鍔ㄧ敾瀹氫箟
 @keyframes pulse {
-  0% { opacity: 1; }
-  50% { opacity: 0.5; }
-  100% { opacity: 1; }
+  0% {
+    opacity: 1;
+  }
+  50% {
+    opacity: 0.5;
+  }
+  100% {
+    opacity: 1;
+  }
 }
 
 // 鍝嶅簲寮忚璁�
diff --git a/src/views/followvisit/OutpatientAgain/index.vue b/src/views/followvisit/OutpatientAgain/index.vue
new file mode 100644
index 0000000..fc7ef5f
--- /dev/null
+++ b/src/views/followvisit/OutpatientAgain/index.vue
@@ -0,0 +1,1845 @@
+<template>
+  <div class="app-container">
+    <div class="leftvlue" style="margin-bottom: 20px">
+      <el-row :gutter="10">
+        <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index">
+          <el-card
+            shadow="hover"
+            :body-style="item.router ? ' cursor: pointer' : 'cursor: default'"
+          >
+            <div style="padding: 8px" @click="$router.push(item.router)">
+              <span>{{ item.name }}</span>
+              <div
+                style="
+                  text-align: center;
+                  font-size: 18px;
+                  margin-top: 10px;
+                  font-weight: 600;
+                "
+              >
+                {{ item.value ? item.value : 0 }}
+              </div>
+            </div>
+          </el-card>
+        </el-col>
+        <el-col :span="2.5">
+          <div class="ysfleftvlue">
+            <el-card shadow="hover">
+              <div style="padding: 8px">
+                <span>琛ㄥ崟宸插彂閫�</span>
+                <div
+                  style="
+                    text-align: center;
+                    font-size: 18px;
+                    margin-top: 10px;
+                    font-weight: 600;
+                  "
+                >
+                  {{ yfsvalue }}
+                </div>
+              </div>
+            </el-card>
+          </div>
+        </el-col>
+        <el-col :span="2.5">
+          <div class="errleftvlue">
+            <el-card shadow="hover">
+              <div style="padding: 8px">
+                <span>寮傚父</span>
+                <div
+                  style="
+                    text-align: center;
+                    font-size: 18px;
+                    margin-top: 10px;
+                    font-weight: 600;
+                  "
+                >
+                  {{ ycvalue }}
+                </div>
+              </div>
+            </el-card>
+          </div>
+        </el-col>
+      </el-row>
+    </div>
+    <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="鎮h�呰寖鍥�" prop="status">
+          <el-cascader
+            v-model="topqueryParams.scopetype"
+            placeholder="榛樿鍏ㄩ儴"
+            :options="sourcetype"
+            :props="{ expandTrigger: 'hover' }"
+            @change="handleChange"
+          ></el-cascader>
+        </el-form-item>
+
+        <el-form-item label="浠诲姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+            <el-option
+              v-for="item in topicoptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </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)"
+                >鎵ц澶辫触</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)"
+                >缁撴灉寮傚父</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"
+                plain
+                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-row>
+      <el-table
+        v-loading="loading"
+        :data="userList"
+        :row-class-name="tableRowClassName"
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="50" align="center" />
+        <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)
+              "
+              ><span class="button-textsc">{{
+                scope.row.sendname
+              }}</span></el-button
+            >
+          </template>
+        </el-table-column>
+        <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>
+            </el-tooltip>
+          </template>
+        </el-table-column>
+        <!-- <el-table-column
+          label="浠诲姟寮傚父璇存槑"
+          width="120"
+          align="center"
+          key="remark"
+          prop="remark" -->
+        />
+
+        <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="闅忚瀹屾垚鏃堕棿"
+          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="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="搴旈殢璁挎棩鏈�"
+          width="200"
+          align="center"
+          key="longSendTime"
+          prop="longSendTime"
+        >
+          <template slot-scope="scope">
+            <span>{{ formatTime(scope.row.longSendTime) }}</span>
+          </template></el-table-column
+        >
+        <el-table-column
+          label="涓绘不鍖荤敓"
+          width="120"
+          align="center"
+          key="drname"
+          prop="drname"
+        />
+
+        <!-- <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="sfzh"
+          prop="sfzh"
+        />
+        <el-table-column
+          label="鑱旂郴鐢佃瘽"
+          width="200"
+          align="center"
+          key="phone"
+          prop="phone"
+        />
+        <el-table-column
+          label="璐d换鎶ゅ+"
+          width="120"
+          align="center"
+          key="nurseName"
+          prop="nurseName"
+        />
+
+        <!-- <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="visitDeptName"
+          prop="visitDeptName"
+          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="leavediagname"
+          prop="leavediagname"
+          width="120"
+          :show-overflow-tooltip="true"
+        >
+        </el-table-column>
+        <el-table-column
+          label="闅忚浜哄憳"
+          align="center"
+          key="updateBy"
+          prop="updateBy"
+          width="120"
+        />
+
+        <el-table-column
+          label="闂ㄨ瘖闅忚妯℃澘鍚嶇О"
+          align="center"
+          key="templatename"
+          prop="templatename"
+          width="200"
+        />
+        <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="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
+            >
+          </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="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>
+            </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="鍙戦�佹椂闂磋缃�"
+      :visible.sync="modificationVisible"
+      width="45%"
+    >
+      <div style="margin-bottom: 20px; color: red">
+        缁熶竴淇敼褰撳ぉ鏈彂閫佺殑浠诲姟鏃堕棿
+      </div>
+
+      <el-form
+        :model="ruleForm"
+        :rules="rules"
+        ref="ruleForm"
+        label-width="120px"
+        class="demo-ruleForm"
+      >
+        <el-form-item label="鍙戦�佹棩鏈�">
+          <el-date-picker
+            v-model="ruleForm.value1"
+            type="date"
+            placeholder="閫夋嫨鏃ユ湡"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="鏃堕棿娈�" prop="type">
+          <el-checkbox-group v-model="ruleForm.type">
+            <el-checkbox label="涓婂崍" name="type"></el-checkbox>
+            <el-checkbox label="涓嬪崍" name="type"></el-checkbox>
+            <el-checkbox label="鏅氫笂" name="type"></el-checkbox>
+          </el-checkbox-group>
+        </el-form-item>
+        <el-form-item label="涓婂崍鏃堕棿鍖洪棿" required>
+          <el-time-picker
+            is-range
+            v-model="ruleForm.value2"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            placeholder="閫夋嫨鏃堕棿鑼冨洿"
+          >
+          </el-time-picker>
+        </el-form-item>
+        <el-form-item label="涓嬪崍鏃堕棿鍖洪棿" required>
+          <el-time-picker
+            is-range
+            v-model="ruleForm.value3"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            placeholder="閫夋嫨鏃堕棿鑼冨洿"
+          >
+          </el-time-picker>
+        </el-form-item>
+        <el-form-item label="鏅氫笂鏃堕棿鍖洪棿" required>
+          <el-time-picker
+            is-range
+            v-model="ruleForm.value4"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            placeholder="閫夋嫨鏃堕棿鑼冨洿"
+          >
+          </el-time-picker>
+        </el-form-item>
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="modificationVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="modificationVisible = false"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+    <!-- 鍐嶆闅忚 -->
+    <el-dialog title="鎮h�呭啀娆¢殢璁�" :visible.sync="dialogFormVisible">
+      <el-form ref="zcform" :rules="zcrules" :model="zcform" label-width="80px">
+        <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>
+  </div>
+</template>
+
+<script>
+import {
+  delUser,
+  addUser,
+  updateUser,
+  resetUserPwd,
+  changeUserStatus,
+} from "@/api/system/user";
+import {
+  getTaskservelist,
+  buidegetTasklist,
+  addserviceSubtask,
+  query360PatInfo,
+} from "@/api/AiCentre/index";
+import { alterpatient, particularpatient } from "@/api/patient/homepage";
+import Treeselect from "@riophae/vue-treeselect";
+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 },
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      dialogFormVisible: false,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+      userList: null,
+      // 寮瑰嚭灞傛爣棰�
+      title: "鏂板褰卞儚闅忚",
+      // 鏄惁鏄剧ず淇敼銆佹坊鍔犲脊鍑哄眰
+      addalteropen: false,
+      // 淇敼鍙戦�佹椂闂村璇濇
+      modificationVisible: false,
+      // 閮ㄩ棬鍚嶇О
+      deptName: undefined,
+      // 榛樿瀵嗙爜
+      initPassword: undefined,
+      // 鏃ユ湡鑼冨洿
+      dateRange: [],
+      dateRangefs: [],
+      // 宀椾綅閫夐」
+      postOptions: [],
+      ruleForm: {
+        type: [],
+      },
+      zcform: {},
+      dynamicTags: ["閫夐」涓�", "閫夐」浜�", "閫夐」涓�"], //閫夐」
+      inputVisible: false,
+      Labelchange: false,
+      ycvalue: "",
+      yfsvalue: "",
+      inputValue: "",
+      preachform: "",
+      previewVisible: false, //褰卞儚闅忚棰勮寮规
+      radio: "",
+      radios: [],
+      total: 0, // 鎬绘潯鏁�
+      ImportQuantity: 999, //瀵煎奖鍍忛殢璁挎暟閲�
+      //棰勮褰卞儚闅忚淇℃伅
+      previewvalue: {
+        username: "杩欎釜鍖荤敓瀵逛綘鎬庝箞鏍�",
+      },
+      value: [],
+      list: [],
+
+      sourcetype: [
+        {
+          value: 1,
+          label: "绉戝",
+          children: [],
+        },
+        {
+          value: 2,
+          label: "鐥呭尯",
+          children: [],
+        },
+        {
+          value: 3,
+          label: "鍏ㄩ儴",
+        },
+      ],
+      loading: false,
+      cardlist: [
+        {
+          name: "闂ㄨ瘖鏈嶅姟鎬婚噺",
+          value: 0,
+        },
+        // {
+        //   name: "鎮h�呰繃婊�",
+        //   value: 0,
+        // },
+        {
+          name: "闇�闅忚",
+          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: "",
+      },
+      topicoptionssort: [
+        {
+          value: 0,
+          label: "闂ㄨ瘖鏃堕棿(姝e簭)",
+        },
+        {
+          value: 1,
+          label: "闂ㄨ瘖鏃堕棿(鍊掑簭)",
+        },
+        {
+          value: 2,
+          label: "鍙戦�佹椂闂�(姝e簭)",
+        },
+        {
+          value: 3,
+          label: "鍙戦�佹椂闂�(鍊掑簭)",
+        },
+        {
+          value: 7,
+          label: "搴旈殢璁挎棩鏈�(姝e簭)",
+        },
+        {
+          value: 8,
+          label: "搴旈殢璁挎棩鏈�(鍊掑簭)",
+        },
+      ],
+      // 鏌ヨ鍙傛暟
+      topqueryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sendstate: 2,
+        sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 闂ㄨ瘖鏃堕棿(姝e簭)    1 闂ㄨ瘖鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+        serviceType: 3,
+        searchscope: 3,
+        visitCount: 2,
+        scopetype: [],
+        visitDeptCodes: [],
+        leaveldeptcodes:[],
+        leavehospitaldistrictcodes: [],
+      },
+      propss: { multiple: true },
+      options: [],
+
+      topicoptions: [
+        {
+          value: null,
+          label: "鍏ㄩ儴",
+        },
+        {
+          value: 1,
+          label: "琛ㄥ崟宸查鍙�",
+        },
+        {
+          value: 2,
+          label: "寰呴殢璁�",
+        },
+        {
+          value: 3,
+          label: "琛ㄥ崟宸插彂閫�",
+        },
+        {
+          value: 4,
+          label: "涓嶆墽琛�",
+        },
+        {
+          value: 5,
+          label: "鍙戦�佸け璐�",
+        },
+        {
+          value: 6,
+          label: "宸插畬鎴�",
+        },
+      ],
+      sextype: [
+        {
+          value: 1,
+          label: "鐢�",
+        },
+        {
+          value: 2,
+          label: "濂�",
+        },
+      ],
+      topicoptionsyj: [
+        {
+          value: 1,
+          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: [],
+      // 琛ㄥ崟鏍¢獙
+      rules: {},
+    };
+  },
+  watch: {},
+  created() {
+    this.serviceState = store.getters.serviceState;
+    this.checkboxlist = store.getters.checkboxlist;
+    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) {
+      this.toleadExport(2);
+    } else {
+      this.getList(1);
+    }
+    this.getConfigKey("sys.user.initPassword").then((response) => {
+      this.initPassword = response.msg;
+    });
+  },
+  activated() {
+    this.getList(1);
+  },
+  methods: {
+    /** 鏌ヨ闅忚鏈嶅姟鍒楄〃 */
+    getList(refresh) {
+      // 榛樿鍏ㄩ儴
+
+      if (this.topqueryParams.searchscope == 3) {
+        this.topqueryParams.visitDeptCodes = store.getters.belongDepts.map(
+          (obj) => obj.deptCode
+        );
+        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
+        );
+        console.log(this.topqueryParams.leavehospitaldistrictcodes, "11");
+      }
+      this.loading = true;
+      if (
+        this.topqueryParams.leavehospitaldistrictcodes[0] &&
+        this.topqueryParams.visitDeptCodes[0]&&this.topqueryParams.leaveldeptcodes[0]
+      ) {
+        this.topqueryParams.deptOrDistrict = 2;
+      } else {
+        this.topqueryParams.deptOrDistrict = 1;
+      }
+      getTaskservelist(this.topqueryParams).then((response) => {
+        this.userList = response.rows[0].serviceSubtaskList;
+        this.total = response.total;
+        if (refresh) {
+          this.cardlist[0].value =
+            Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
+          // this.cardlist[1].value = response.rows[0].wzx;
+          this.cardlist[1].value = response.rows[0].ysf;
+          this.ycvalue = response.rows[0].yc;
+          this.cardlist[2].value = response.rows[0].fssb;
+          this.cardlist[3].value = response.rows[0].dsf;
+          // this.cardlist[4].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;
+      });
+    },
+    affiliation() {
+      this.topqueryParams.managementDoctorCode= store.getters.hisUserId;
+
+      this.getList(1);
+    },
+    onthatday() {
+      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 (this.topqueryParams.searchscope == 3) {
+        this.topqueryParams.visitDeptCodes = store.getters.belongDepts.map(
+          (obj) => obj.deptCode
+        );
+          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],
+        visitDeptCodes: this.topqueryParams.visitDeptCodes,
+        leaveldeptcodes: this.topqueryParams.leaveldeptcodes,
+      };
+      buidegetTasklist(obj).then((response) => {
+        this.userList = response.rows[0].serviceSubtaskList;
+        this.total = response.total;
+        if (refresh) {
+          this.cardlist[0].value =
+            Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
+          this.cardlist[1].value = response.rows[0].wzx;
+          this.cardlist[2].value = response.rows[0].ysf;
+          this.ycvalue = response.rows[0].yc;
+          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.visitDeptCodes = store.getters.belongDepts.map(
+          (obj) => obj.deptCode
+        );
+        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
+          (obj) => obj.deptCode
+        );
+        this.topqueryParams.leavehospitaldistrictcodes =
+          store.getters.belongWards.map((obj) => obj.districtCode);
+      }
+      this.topqueryParams.pageNum = 1;
+      this.topqueryParams.startOutHospTime = this.dateRange[0];
+      this.topqueryParams.endOutHospTime = this.dateRange[1];
+      this.topqueryParams.startSendDateTime = this.dateRangefs[0];
+      this.topqueryParams.endSendDateTime = this.dateRangefs[1];
+      console.log("2");
+      this.getList(refresh);
+    },
+    // 鎮h�呰寖鍥村鐞�
+    handleChange(value) {
+      let type = value[0];
+      let code = value.slice(-1)[0];
+      this.topqueryParams.leavehospitaldistrictcodes = [];
+      this.topqueryParams.visitDeptCodes = [];
+      this.topqueryParams.leaveldeptcodes = [];
+      if (type == 1) {
+        this.topqueryParams.visitDeptCodes.push(code);
+        this.topqueryParams.leaveldeptcodes.push(code);
+        this.topqueryParams.leavehospitaldistrictcodes = [];
+        this.topqueryParams.searchscope = 1;
+      } else if (type == 2) {
+        this.topqueryParams.leavehospitaldistrictcodes.push(code);
+        this.topqueryParams.visitDeptCodes = [];
+        this.topqueryParams.leaveldeptcodes = [];
+        this.topqueryParams.searchscope = 2;
+      } else {
+        this.topqueryParams.searchscope = 3;
+      }
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.dateRange = [];
+      this.dateRangefs = [];
+      this.topqueryParams = {
+        pageNum: 1,
+        pageSize: 10,
+        sendstate: 2,
+        sort: 2, //0 闂ㄨ瘖鏃堕棿(姝e簭)    1 闂ㄨ瘖鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
+        serviceType: 3,
+        searchscope: 3,
+        visitCount: 2,
+        scopetype: [],
+        visitDeptCodes: [],
+        leaveldeptcodes:[],
+        leavehospitaldistrictcodes: [],
+      };
+      this.handleQuery(1);
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.userId);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    //鍒犻櫎閫夐」
+    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: 3,
+        },
+      });
+    },
+    //鎮h��360璺宠浆
+    gettoken360(sfzh, drcode, drname) {
+      // // this.$modal.msgWarning('360鍔熻兘鏆傛湭寮�閫�');
+
+      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(() => {});
+    },
+    // 璁剧疆鍙戦�佹椂闂�
+    Sendtimesetting() {
+      this.modificationVisible = true;
+    },
+    // 璺宠浆璇︽儏椤�
+    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) {
+      if (too == 1) {
+        this.topqueryParams.sendstate = 4;
+        this.topqueryParams.excep = null;
+      } else if (too == 2) {
+        this.topqueryParams.excep = 1;
+      }
+      this.handleQuery();
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.topqueryParams.pageNum = null;
+      this.topqueryParams.pageSize = null;
+      this.download(
+        "smartor/serviceSubtask/patItemExport",
+        {
+          ...this.topqueryParams,
+        },
+        `user_${new Date().getTime()}.xlsx`
+      );
+    },
+    // 寮傚父鍒楁覆鏌�
+    tableRowClassName({ row, rowIndex }) {
+      if (row.excep == 1) {
+        return "warning-row";
+      }
+      return "";
+    },
+    // 鍒涘缓鍐嶆闅忚鏈嶅姟
+    setupsubtask() {
+      this.$refs["zcform"].validate((valid) => {
+        if (valid) {
+          this.zcform.remark =
+            this.zcform.remark + "銆�" + this.getCurrentTime() + "銆�";
+          let form = structuredClone(this.zcform);
+          form.longSendTime = 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}`;
+    },
+  },
+};
+</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;
+}
+
+.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.ysfleftvlue .el-card__body {
+  background: #d0fdd8;
+}
+::v-deep.ysfleftvlue .el-card__body:hover {
+  background: #8df8a4;
+  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: #4fabe9;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+.button-textxga {
+  color: #de7897;
+}
+::v-deep.el-radio-group {
+  span {
+    font-size: 24px;
+  }
+}
+
+// 閫夐」瀛椾綋鏀惧ぇ
+// ::v-deep.el-checkbox-group {
+//   span {
+//     font-size: 24px;
+//   }
+// }
+</style>
diff --git a/src/views/followvisit/discharge/index.vue b/src/views/followvisit/discharge/index.vue
index 9910019..700d638 100644
--- a/src/views/followvisit/discharge/index.vue
+++ b/src/views/followvisit/discharge/index.vue
@@ -274,7 +274,7 @@
             </div>
           </div>
         </el-col>
-        <!-- <el-col :span="1.5">
+        <el-col :span="1.5">
           <div class="documentf">
             <div class="document">
               <el-tooltip
@@ -295,7 +295,7 @@
               </el-tooltip>
             </div>
           </div>
-        </el-col> -->
+        </el-col>
       </el-row>
       <el-table
         v-loading="loading"
@@ -1287,6 +1287,10 @@
           value: 1,
           label: "寮傚父",
         },
+         {
+          value: 2,
+          label: "璀﹀憡",
+        },
         {
           value: 0,
           label: "姝e父",
@@ -1378,13 +1382,13 @@
         this.topqueryParams.leavehospitaldistrictcodes =
           store.getters.belongWards.map((obj) => obj.districtCode);
       }
-      if (this.endOut == 0) {
-        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
-          this.getEndOfDay()
-        );
-      } else {
-        this.topqueryParams.endSendDateTime = null;
-      }
+      // if (this.endOut == 0) {
+        // this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
+        //   this.getEndOfDay()
+        // );
+      // } else {
+      //   this.topqueryParams.endSendDateTime = null;
+      // }
       // 鎺ュ彈寮傚父璺宠浆
       if (this.errtype) {
         this.topqueryParams.leavehospitaldistrictcodes.push(
diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index e6ba598..26a60fe 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/src/views/followvisit/record/detailpage/index.vue
@@ -1032,7 +1032,7 @@
         width="60%"
       >
         <CallCenterLs
-          ref="callCenterModal"
+          ref="CallCenterLs"
           :initial-phone="currentPhoneNumber"
         />
       </el-dialog>
@@ -1153,6 +1153,9 @@
       isEndingCall: false,
       CaldialogVisible: false,
       currentCall: null, // 褰撳墠閫氳瘽瀵硅薄
+      // 璺敱鐩戝惉鐩稿叧
+      routeWatcher: null,
+      lastRoutePath: this.$route.path,
       input: "浠婂ぉ韬綋杩樹笉閿�",
       radio: "2",
       taskname: "",
@@ -1377,6 +1380,8 @@
       patid: null,
     };
   },
+
+
   computed: {
     callStatusText() {
       const statusMap = {
@@ -2356,6 +2361,11 @@
   // },
   beforeRouteLeave(to, from, next) {
     this.$refs.callButton.cleanupResources();
+    if (this.$refs.CallCenterLs) {
+      console.log(1);
+
+      this.$refs.CallCenterLs.handleSeatLogout();
+    }
     next(); // 纭繚璋冪敤 nex
   },
   // beforeRouteUpdate() {
@@ -2550,7 +2560,7 @@
 .CONTENT {
   padding: 10px;
   height: 100%;
-  min-height: 660px; /* 璁剧疆鏈�灏忛珮搴� */
+  min-height: 738px; /* 璁剧疆鏈�灏忛珮搴� */
 
   .title {
     font-size: 22px;
@@ -2565,7 +2575,7 @@
   padding: 30px;
   border: 1px solid #dcdfe6;
   box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04);
-  max-height: 580px; /* 璁剧疆鏈�澶ч珮搴� */
+  max-height: 618px; /* 璁剧疆鏈�澶ч珮搴� */
   overflow-y: auto; /* 鍐呭瓒呰繃楂樺害鏃舵樉绀烘粴鍔ㄦ潯 */
 
   .topic-dev {
diff --git a/src/views/knowledge/education/compilequer/index copy.vue b/src/views/knowledge/education/compilequer/index copy.vue
index 59ebeef..18f6baf 100644
--- a/src/views/knowledge/education/compilequer/index copy.vue
+++ b/src/views/knowledge/education/compilequer/index copy.vue
@@ -599,7 +599,8 @@
       // 鍐呯綉鐨勯儴鍒嗭紙鏂囦欢锛�
       oldPatternhtml: "/http:\/\/192\.168\.191\.181:8095\/profile\/upload\//g",
       // 澶栫綉閮ㄥ垎锛堟枃浠讹級
-      newPattern: "http://218.108.11.22:8093/profile-api/upload",
+      // newPattern: "http://218.108.11.22:8093/profile-api/upload",
+      newPattern: "http://m.zjtongde.com:13871/prod-api/profile/upload",
 
       xjxsoptions: [
         {
@@ -730,8 +731,8 @@
       var doc = parser.parseFromString(html, "text/html");
 
       // 瀹氫箟瑕佹浛鎹㈢殑鏂版棫URL
-      var oldUrlBase = "http://192.168.191.181:8095/profile/upload";
-      var newUrlBase = "http://218.108.11.22:8093/profile-api/upload";
+      var oldUrlBase = this.oldPattern;
+      var newUrlBase =this.newPattern;
 
       // 鑾峰彇鎵�鏈夌殑video鍏冪礌
       var videos = doc.querySelectorAll("video");
diff --git a/src/views/knowledge/education/compilequer/index.vue b/src/views/knowledge/education/compilequer/index.vue
index 7a7e4c9..f5c3f3f 100644
--- a/src/views/knowledge/education/compilequer/index.vue
+++ b/src/views/knowledge/education/compilequer/index.vue
@@ -357,7 +357,7 @@
 
       // 缂栬緫鍣ㄦā寮�
       mode: "default",
-fileList:[],
+      fileList: [],
       // 宸ュ叿鏍忛厤缃�
       toolbarConfig: {
         excludeKeys: [
@@ -400,9 +400,13 @@
 
                 if (response.data && response.data.url) {
                   let imgUrl = response.data.url;
+                  // imgUrl = imgUrl.replace(
+                  //   "http://218.108.11.22:8093/profile-api/upload",
+                  //   "http://192.88.117.236:8090/prod-api/profile/upload"
+                  // );
                   imgUrl = imgUrl.replace(
-                    "http://218.108.11.22:8093/profile-api/upload",
-                    "http://192.168.191.181:8095/profile/upload"
+                    "http://m.zjtongde.com:13871/prod-api/profile/upload",
+                    "http://192.88.117.236:8090/prod-api/profile/upload"
                   );
                   insertFn(imgUrl);
                 }
@@ -480,11 +484,13 @@
       options: [],
       optionstag: [],
       // 鍐呯綉鐨勯儴鍒嗭紙鏂囦欢锛�
-      oldPattern: "http://192.168.191.181:8095/profile/upload",
+      // oldPattern: "http://192.168.191.181:8095/profile/upload",
+      oldPattern: "http://192.88.117.236:8090/prod-api/profile/upload",
       // 鍐呯綉鐨勯儴鍒嗭紙鏂囦欢锛�
-      oldPatternhtml: "/http:\/\/192\.168\.191\.181:8095\/profile\/upload\//g",
+      oldPatternhtml: "/http:\/\/192\.88\.117\.236:8095\/profile\/upload\//g",
       // 澶栫綉閮ㄥ垎锛堟枃浠讹級
-      newPattern: "http://218.108.11.22:8093/profile-api/upload",
+      // newPattern: "http://218.108.11.22:8093/profile-api/upload",銆併�佹柊鍗�
+      newPattern: "http://m.zjtongde.com:13871/prod-api/profile/upload",
 
       xjxsoptions: [
         {
@@ -630,7 +636,7 @@
       // ------------------
 
       // let html =
-      //   '<p>娴嬭瘯</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.168.191.181:8095/profile/upload/vadio/钀ュ吇娉典粙缁�.mp4"></video><p>娴嬭瘯111</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.168.191.181:8095/profile/upload/vadio/娉ㄥ皠鍣ㄦ帹娉�.mp4"></video><p><br></p>';
+      //   '<p>娴嬭瘯</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.88.117.236:8090/prod-api/profile/upload/vadio/钀ュ吇娉典粙缁�.mp4"></video><p>娴嬭瘯111</p><video class="ql-video" controls="controls" controlslist="nofullscreen" type="video/mp4" style="object-fit:fill;width: 100%;" preload="auto" playsinline="true" x-webkit-airplay="allow" x5-video-orientation="portraint" x5-playsinline="true" x5-video-player-fullscreen="true" src="http://192.88.117.236:8090/prod-api/profile/upload/vadio/娉ㄥ皠鍣ㄦ帹娉�.mp4"></video><p><br></p>';
       // // html = html.parserdom(this.oldPattern, this.newPattern);
       // html = this.parserdom(html);
       // console.log(html, "html");
@@ -645,17 +651,27 @@
       var doc = parser.parseFromString(html, "text/html");
 
       // 瀹氫箟瑕佹浛鎹㈢殑鏂版棫URL
-      var oldUrlBase = "http://192.168.191.181:8095/profile/upload";
-      var newUrlBase = "http://218.108.11.22:8093/profile-api/upload";
+      var oldUrlBase = this.oldPattern;
+      // var newUrlBase = "http://218.108.11.22:8093/profile-api/upload";
+      var newUrlBase = this.newPattern;
 
       // 鑾峰彇鎵�鏈夌殑video鍏冪礌
       var videos = doc.querySelectorAll("video");
+      var images = doc.querySelectorAll("img");
 
       // 閬嶅巻鎵�鏈夌殑video鍏冪礌骞舵浛鎹rc灞炴��
       videos.forEach(function (video) {
         var src = video.getAttribute("src");
         if (src.startsWith(oldUrlBase)) {
           video.setAttribute("src", src.replace(oldUrlBase, newUrlBase));
+        }
+      });
+      console.log(images,'images');
+
+       images.forEach(function (img) {
+        var src = img.getAttribute("src");
+        if (src.startsWith(oldUrlBase)) {
+          img.setAttribute("src", src.replace(oldUrlBase, newUrlBase));
         }
       });
 
@@ -685,6 +701,10 @@
         fileName: this.generateRandomHtmlFilename(),
       }).then((res) => {
         this.ruleForm.richText = res.msg;
+        this.ruleForm.richText = res.msg.replace(
+            this.oldPattern,
+            this.newPattern
+          );
         console.log(this.ruleForm.richText, "this.ruleForm.richText");
         // 澶勭悊鍐呯綉html
         addrichText({
diff --git a/src/views/knowledge/education/index copy.vue b/src/views/knowledge/education/index copy.vue
index e0e6508..cdd78a6 100644
--- a/src/views/knowledge/education/index copy.vue
+++ b/src/views/knowledge/education/index copy.vue
@@ -595,6 +595,7 @@
       queryParams: {
         pageNum: 1,
         pageSize: 20,
+        hetype:1,
         isavailable: "",
       },
     };
diff --git a/src/views/knowledge/education/index.vue b/src/views/knowledge/education/index.vue
index 32789dc..5a090ab 100644
--- a/src/views/knowledge/education/index.vue
+++ b/src/views/knowledge/education/index.vue
@@ -5,7 +5,7 @@
     <div class="sidecolumn">
       <div class="sidecolumn-top">
         <div class="top-wj">瀹f暀绫诲瀷</div>
-        <div class="top-tj" @click="dialogFormVisible = true">+娣诲姞绫诲埆</div>
+        <div class="top-tj" @click="Newcategory">+娣诲姞绫诲埆</div>
       </div>
       <div class="center-ss">
         <el-input
@@ -596,6 +596,7 @@
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        hetype:1,
         isavailable: "",
       },
     };
@@ -783,6 +784,13 @@
         query: { id: row.id },
       });
     },
+         Newcategory(){
+      this.classifyform= {}, //绫诲埆琛ㄥ崟
+      this.radio = "涓诲垎绫�";
+     this.dialogFormVisible = true
+     this.zifon = true;
+      this.zufon = true;
+    },
     // 鏌ョ湅瀹f暀
     Vieweducation(row) {
       this.htmlRichText = null;
@@ -792,7 +800,9 @@
         .then((response) => {
           console.log(response.data, "鏁版嵁"); // 杈撳嚭鑾峰彇鍒扮殑鏂囦欢鍐呭
           this.htmlRichText = response.data;
-          this.htmlRichText = this.addStyleToImages(this.htmlRichText);
+          // this.htmlRichText = this.addStyleToImages(this.htmlRichText);
+          console.log(this.htmlRichText);
+
         })
         .catch((error) => {
           this.$modal.msgError("鑾峰彇瀵屾枃鏈け璐�");
@@ -855,7 +865,7 @@
     },
     // 鏌ヨ鏍�
     getDeptTree() {
-      getheLibraryAssort({}).then((res) => {
+      getheLibraryAssort({ hetype: 2 }).then((res) => {
         this.deptOptions = res.rows;
         this.dialogFormVisible = false;
       });
@@ -930,8 +940,12 @@
       this.dialogFormVisible = true;
       if (!b.pid) {
         this.radio = "涓诲垎绫�";
+        this.title = "淇敼涓诲垎绫�";
+        this.zufon = false;
       } else {
         this.radio = "瀛愬垎绫�";
+        this.title = "淇敼瀛愬垎绫�";
+        this.zifon = false;
       }
       this.classifyform = b;
       this.dialogFormVisible = true;
diff --git a/src/views/knowledge/questionnaire/compilequer/index.vue b/src/views/knowledge/questionnaire/compilequer/index.vue
index 6717af7..8ee26c1 100644
--- a/src/views/knowledge/questionnaire/compilequer/index.vue
+++ b/src/views/knowledge/questionnaire/compilequer/index.vue
@@ -671,19 +671,75 @@
                         </el-form-item>
                       </el-col>
                     </el-row>
+                    <el-row>
+                      <el-form-item label="鍏宠仈鏈嶅姟">
+                        <div
+                          v-if="item.sendTaskname"
+                          class="service-tag-container"
+                        >
+                          <el-tag
+                            type="success"
+                            closable
+                            @close="removeService(item)"
+                            class="service-tag"
+                          >
+                            <i class="el-icon-connection service-icon"></i>
+                            {{ item.sendTaskname }}
+                          </el-tag>
+                        </div>
+                        <div v-else class="service-add-btn">
+                          <el-button
+                            type="success"
+                            size="small"
+                            icon="el-icon-plus"
+                            @click="openServiceDialog(item)"
+                            class="add-service-btn"
+                          >
+                            閫夋嫨浠诲姟
+                          </el-button>
+                        </div>
+                      </el-form-item>
+                    </el-row>
                     <el-row :gutter="10">
-                      <el-form-item label="寮傚父鎻愰啋">
-                        <el-radio-group v-model="item.isabnormal">
-                          <el-radio :label="1">鏄�</el-radio>
-                          <el-radio :label="0">鍚�</el-radio>
-                        </el-radio-group>
-                      </el-form-item>
-                      <el-form-item label="鏄惁閫変腑鏀堕泦闄勫姞淇℃伅">
-                        <el-radio-group v-model="item.appendflag">
-                          <el-radio label="1">鏄�</el-radio>
-                          <el-radio label="0">鍚�</el-radio>
-                        </el-radio-group>
-                      </el-form-item>
+                      <el-col :span="11">
+                        <!-- 淇敼锛氬紓甯告彁閱掗儴鍒� -->
+                        <el-form-item label="寮傚父鎻愰啋">
+                          <el-select
+                            v-model="item.isabnormal"
+                            placeholder="璇烽�夋嫨鐘舵��"
+                          >
+                            <el-option
+                              :value="0"
+                              label="姝e父"
+                              :style="{ color: '#67C23A' }"
+                            >
+                              <span style="color: #67c23a">鈼� 姝e父</span>
+                            </el-option>
+                            <el-option
+                              :value="1"
+                              label="寮傚父"
+                              :style="{ color: '#E6A23C' }"
+                            >
+                              <span style="color: #e6a23c">鈼� 寮傚父</span>
+                            </el-option>
+                            <el-option
+                              :value="2"
+                              label="璀﹀憡"
+                              :style="{ color: '#F56C6C' }"
+                            >
+                              <span style="color: #f56c6c">鈼� 璀﹀憡</span>
+                            </el-option>
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :span="11">
+                        <el-form-item label="鏄惁閫変腑鏀堕泦闄勫姞淇℃伅">
+                          <el-radio-group v-model="item.appendflag">
+                            <el-radio label="1">鏄�</el-radio>
+                            <el-radio label="0">鍚�</el-radio>
+                          </el-radio-group>
+                        </el-form-item>
+                      </el-col>
                     </el-row>
                     <el-row :gutter="10" v-if="topicobj.branchFlag == 1">
                       <el-col :span="20"
@@ -1254,6 +1310,144 @@
         </el-tabs>
       </div>
     </el-drawer>
+    <!-- 閫夋嫨浠诲姟寮圭獥 -->
+    <el-dialog
+      title="閫夋嫨浠诲姟"
+      :visible.sync="serviceDialogVisible"
+      width="50%"
+    >
+      <div>
+        <el-form
+          :model="topqueryParams"
+          ref="queryForm"
+          size="small"
+          :inline="true"
+          label-width="98px"
+        >
+          <el-form-item label="浠诲姟鍚嶇О">
+            <el-input
+              v-model="topqueryParams.taskName"
+              @keyup.enter.native="handleQuery"
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="浠诲姟绫诲瀷" prop="status">
+            <el-select
+              v-model="topqueryParams.serviceType"
+              placeholder="璇烽�夋嫨鏈嶅姟绫诲瀷"
+            >
+              <el-option
+                v-for="item in taskoptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+        <el-table
+          :data="filteredServiceList"
+          v-loading="taskloading"
+          @selection-change="handleServiceSelectionChange"
+        >
+          <el-table-column type="selection" width="55"></el-table-column>
+          <el-table-column
+            label="浠诲姟鍚嶇О"
+            fixed
+            align="center"
+            key="taskName"
+            prop="taskName"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="浠诲姟鎻忚堪"
+            align="center"
+            key="taskDesc"
+            prop="taskDesc"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="鏈嶅姟椤圭洰"
+            align="center"
+            key="templatename"
+            prop="templatename"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="鎬讳换鍔�/宸查殢璁�"
+            align="center"
+            key="nickName"
+            width="120"
+            prop="nickName"
+          >
+            <template slot-scope="scope">
+              <span
+                >{{
+                  scope.row.wfs || scope.row.wfs == 0
+                    ? scope.row.wfs + scope.row.yfs
+                    : ""
+                }}/{{ scope.row.yfs }}</span
+              >
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="鏄惁闀挎湡浠诲姟"
+            align="center"
+            key="longTask"
+            prop="longTask"
+          >
+            <template slot-scope="scope">
+              <span>{{ scope.row.longTask ? "闀挎湡浠诲姟" : "闈為暱鏈�" }}</span>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鐘舵��"
+            align="center"
+            key="sendState"
+            prop="sendState"
+          >
+            <template slot-scope="scope">
+              <dict-tag
+                :options="dict.type.task_status"
+                :value="scope.row.sendState"
+              />
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鍒涘缓浜�"
+            align="center"
+            key="createBy"
+            prop="createBy"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="鍒涘缓鏃堕棿"
+            sortable
+            align="center"
+            prop="createTime"
+          >
+            <template slot-scope="scope">
+              <span>{{ formatTime(scope.row.createTime) }}</span>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination
+          v-show="tasktotal > 0"
+          :total="tasktotal"
+          :page.sync="topqueryParams.pageNum"
+          :limit.sync="topqueryParams.pageSize"
+          @pagination="gettaskList"
+        />
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="serviceDialogVisible = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="confirmServiceSelection"
+          >纭畾</el-button
+        >
+      </span>
+    </el-dialog>
     <!-- 娣诲姞閫傜敤鐤剧梾绐楀彛 -->
     <Optional-Form
       ref="child"
@@ -1275,17 +1469,12 @@
   depthospgetsonlist,
   getQtemplateobj,
   compileQtemplate,
-  Qtemplateinfo,
-  compileissue,
-  delQtemplateinfo,
-  Followupinfo,
-  issueinfo,
   getissuelist,
   depthospgetsondel,
   deltargetillness,
   addtargetillness,
   getillnesslist,
-  illnesslistget,
+  getTasklist,
   getillness,
 } from "@/api/AiCentre/index";
 import OptionalForm from "@/components/OptionalForm"; //姝e垯缁勪欢
@@ -1294,7 +1483,7 @@
 
 export default {
   name: "Questionnaireinfo",
-
+  dicts: ["sys_normal_disable", "sys_user_sex", "task_status"],
   components: { OptionalForm },
 
   data() {
@@ -1317,8 +1506,39 @@
       dialogVisiblepatient: false, //閫傜敤鐤剧梾绐楀彛
       inputValue: "",
       topicobj: {},
+      topqueryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        type: 3,
+      },
+      tasktotal: 0,
+      taskloading: false,
+      taskoptions: [
+        {
+          value: 4,
+          label: "瀹f暀鍏虫��",
+          raw: {
+            cssClass: "",
+            listClass: "",
+          },
+        },
+        {
+          value: 5,
+          label: "澶嶈瘖閫氱煡",
+          raw: {
+            cssClass: "",
+            listClass: "",
+          },
+        },
+      ],
       // 鎬绘潯鏁�
       total: 1,
+      serviceDialogVisible: false, // 閫夋嫨浠诲姟寮圭獥鏄剧ず鎺у埗
+      serviceSearch: "", // 浠诲姟鎼滅储鍏抽敭璇�
+      serviceList: [], // 浠诲姟鍒楄〃
+      filteredServiceList: [],
+      selectedService: null, // 閫変腑鐨勪换鍔�
+      currentOptionItem: null, // 褰撳墠姝e湪璁剧疆鐨勪换鍔¢�夐」椤�
       ruleForm: {
         svyTemplateLibScripts: [],
         tempDetpRelevances: [],
@@ -1767,6 +1987,62 @@
         });
       }
     },
+    // ---------------閫夐」浠诲姟缁戝畾
+    openServiceDialog(item) {
+      this.gettaskList();
+      this.currentOptionItem = item;
+    },
+    gettaskList() {
+      getTasklist(this.topqueryParams).then((response) => {
+        this.filteredServiceList = response.rows;
+        this.tasktotal = response.total;
+        this.serviceDialogVisible = true;
+        this.$forceUpdate();
+        this.taskloading = false;
+      });
+    },
+    handleQuery() {
+      this.topqueryParams.pageNum = 1;
+      this.gettaskList();
+    },
+    // 鏂板鏂规硶锛氬姞杞戒换鍔″垪琛�
+    loadServiceList() {
+      // 杩欓噷璋冪敤API鑾峰彇浠诲姟鍒楄〃
+      // 绀轰緥鏁版嵁锛屽疄闄呬娇鐢ㄦ椂闇�瑕佽皟鐢ㄧ浉搴旂殑API
+      this.serviceList = [
+        { id: 1, taskName: "闅忚浠诲姟1", taskType: "甯歌闅忚" },
+        { id: 2, taskName: "鍋ュ悍璇勪及浠诲姟", taskType: "鍋ュ悍璇勪及" },
+        { id: 3, taskName: "鐢ㄨ嵂鎻愰啋浠诲姟", taskType: "鐢ㄨ嵂绠$悊" },
+      ];
+    },
+
+    // 鏂板鏂规硶锛氬鐞嗕换鍔¢�夋嫨鍙樺寲
+    handleServiceSelectionChange(selection) {
+      this.selectedService = selection.length > 0 ? selection[0] : null;
+    },
+
+    // 鏂板鏂规硶锛氱‘璁ら�夋嫨浠诲姟
+    confirmServiceSelection() {
+      console.log(this.selectedService);
+      console.log(this.currentOptionItem);
+
+      if (this.selectedService && this.currentOptionItem) {
+        this.currentOptionItem.sendTaskname = this.selectedService.taskName;
+        this.currentOptionItem.sendTaskid = this.selectedService.taskid;
+        this.serviceDialogVisible = false;
+        this.serviceSearch = "";
+        this.selectedService = null;
+      } else {
+        this.$message.warning("璇烽�夋嫨涓�涓换鍔�");
+      }
+    },
+
+    // 鏂板鏂规硶锛氱Щ闄ゅ叧鑱旀湇鍔�
+    removeService(item) {
+      item.sendTaskname = "";
+      item.sendTaskid = "";
+    },
+    // ------------------------
     // 涓嬩竴姝�
     nextstep() {
       if (this.Editprogress <= 2) {
@@ -2472,6 +2748,135 @@
   -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
     0 0 6px 0 rgba(0, 0, 0, 0.04);
 }
+.service-tag-container {
+  display: inline-block;
+
+  .service-tag {
+    margin-right: 10px;
+    max-width: 220px;
+    height: 32px;
+    line-height: 30px;
+    padding: 0 12px;
+    border-radius: 16px;
+    font-size: 14px;
+    font-weight: 500;
+    border: 1px solid #e1f3d8;
+    background: linear-gradient(135deg, #f0f9eb, #e1f3d8);
+    box-shadow: 0 2px 4px rgba(103, 194, 58, 0.1);
+    transition: all 0.3s ease;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    position: relative;
+
+    &:hover {
+      transform: translateY(-1px);
+      box-shadow: 0 4px 8px rgba(103, 194, 58, 0.15);
+      border-color: #b3e19d;
+    }
+
+    .service-icon {
+      margin-right: 4px;
+      font-size: 12px;
+    }
+
+    ::v-deep .el-icon-close {
+      margin-left: 6px;
+      font-size: 12px;
+      color: #67c23a;
+      background-color: #f0f9eb;
+      border-radius: 50%;
+      width: 16px;
+      height: 16px;
+      line-height: 16px;
+
+      &:hover {
+        background-color: #67c23a;
+        color: white;
+      }
+    }
+  }
+}
+
+.service-add-btn {
+  display: inline-block;
+
+  .add-service-btn {
+    height: 32px;
+    padding: 0 16px;
+    border-radius: 16px;
+    font-size: 14px;
+    font-weight: 500;
+    background: linear-gradient(135deg, #67c23a, #85ce61);
+    border: none;
+    box-shadow: 0 2px 4px rgba(103, 194, 58, 0.2);
+    transition: all 0.3s ease;
+
+    &:hover {
+      transform: translateY(-1px);
+      box-shadow: 0 4px 8px rgba(103, 194, 58, 0.3);
+      background: linear-gradient(135deg, #5daf34, #7ac252);
+    }
+
+    &:active {
+      transform: translateY(0);
+      box-shadow: 0 2px 4px rgba(103, 194, 58, 0.2);
+    }
+
+    i {
+      margin-right: 4px;
+      font-size: 12px;
+    }
+  }
+}
+
+// 鍝嶅簲寮忚璁�
+@media (max-width: 768px) {
+  .service-tag-container .service-tag {
+    max-width: 180px;
+    font-size: 13px;
+    padding: 0 10px;
+  }
+
+  .service-add-btn .add-service-btn {
+    padding: 0 12px;
+    font-size: 13px;
+  }
+}
+
+// 娣诲姞鍔ㄧ敾鏁堟灉
+@keyframes tagFadeIn {
+  from {
+    opacity: 0;
+    transform: scale(0.8) translateY(-5px);
+  }
+  to {
+    opacity: 1;
+    transform: scale(1) translateY(0);
+  }
+}
+
+.service-tag {
+  animation: tagFadeIn 0.3s ease-out;
+}
+
+// 涓烘暣涓�夐」鍖哄煙娣诲姞缁熶竴鏍峰紡
+.topicxq {
+  .service-tag-container,
+  .service-add-btn {
+    margin: 8px 0;
+  }
+}
+
+// 纭繚鍦ㄨ〃鍗曚腑鐨勬纭竷灞�
+.el-form-item {
+  .el-form-item__content {
+    .service-tag-container,
+    .service-add-btn {
+      vertical-align: middle;
+    }
+  }
+}
 .custom-width {
   width: 100px; /* 璁剧疆瀹藉害鏍峰紡 */
 }
diff --git a/src/views/knowledge/questionnaire/index.vue b/src/views/knowledge/questionnaire/index.vue
index 45a95e3..c9e9167 100644
--- a/src/views/knowledge/questionnaire/index.vue
+++ b/src/views/knowledge/questionnaire/index.vue
@@ -28,7 +28,7 @@
           @node-click="handleNodeClick"
         >
           <span class="custom-tree-node" slot-scope="{ node, data }">
-            <span>{{ node.label }}</span>
+            <span class="tree-node-label">{{ node.label }}</span>
             <span v-if="data.id > 0">
               <el-button
                 type="text"
@@ -141,7 +141,6 @@
                   icon="el-icon-plus"
                   size="medium"
                   @click="handleAdd"
-
                   >鏂板</el-button
                 >
               </el-col>
@@ -816,11 +815,11 @@
       this.classifyform = b;
       this.dialogFormVisible = true;
     },
-    Newcategory(){
-      this.classifyform= {}, //绫诲埆琛ㄥ崟
-      this.radio = "涓诲垎绫�";
-     this.dialogFormVisible = true
-     this.zifon = true;
+    Newcategory() {
+      (this.classifyform = {}), //绫诲埆琛ㄥ崟
+        (this.radio = "涓诲垎绫�");
+      this.dialogFormVisible = true;
+      this.zifon = true;
       this.zufon = true;
     },
 
@@ -896,7 +895,7 @@
   display: flex;
 }
 .sidecolumn {
-  width: 400px;
+  width: 380px;
   min-height: 100vh;
   text-align: center;
   //   display: flex;
@@ -920,6 +919,22 @@
       cursor: pointer;
     }
   }
+  /* 鏍稿績锛氳缃浐瀹氬搴︼紝瓒呭嚭閮ㄥ垎鏄剧ず鐪佺暐鍙� */
+  .tree-node-label {
+    display: inline-block; /* 闇�瑕佽缃负琛屽唴鍧楃骇鍏冪礌鎵嶈兘璁剧疆瀹藉害 */
+    max-width: 160px; /* 鏈�澶у搴� */
+    overflow: hidden;
+    white-space: nowrap; /* 涓嶆崲琛� */
+    text-overflow: ellipsis; /* 鏄剧ず鐪佺暐鍙� */
+    vertical-align: bottom; /* 鍙�夌殑锛岀敤浜庡榻� */
+  }
+
+  /* 鍙�夛細榧犳爣鎮仠鏃跺彇娑堥檺鍒讹紝鏄剧ず鍏ㄦ枃锛堝彲鑳戒細鎾戝紑甯冨眬锛� */
+  .custom-tree-node:hover .tree-node-label {
+    max-width: none;
+    white-space: normal;
+    overflow: visible;
+  }
   .center-ss {
     margin-top: 30px;
     .input-with-select {
diff --git a/src/views/outsideChainwtnew.vue b/src/views/outsideChainwtnew.vue
index a7d75c6..b4aeab6 100644
--- a/src/views/outsideChainwtnew.vue
+++ b/src/views/outsideChainwtnew.vue
@@ -382,6 +382,7 @@
         param1: this.taskid,
         param2: this.patid,
         excep: this.excep,
+        isabnormal: this.excep,
         serviceSubtaskDetailList: [],
       };
       const arr = structuredClone(this.questionList);
@@ -413,16 +414,26 @@
       const arr = structuredClone(this.questionList);
       console.log(arr, "srr");
       arr.forEach((item, index) => {
-        var obj = item.svyTaskTemplateTargetoptions.find(
-          (items) => items.optioncontent == item.scriptResult
-        );
-        console.log(obj, "obj");
+        if (item.scriptType == 1 && item.scriptResult) {
+          var obj = item.svyTaskTemplateTargetoptions.find(
+            (items) => items.optioncontent == item.scriptResult
+          );
+          console.log(item);
 
-        if (obj) {
-          if (obj.isabnormal) {
-            console.log(obj.isabnormal);
-            form.excep = 1;
-            this.excep = 1;
+          console.log(obj, "obj");
+          if (obj.sendTaskid) {
+            item.sendTaskname = obj.sendTaskname;
+            item.sendTaskid = obj.sendTaskid;
+            console.log(String(obj.sendTaskid).split(","));
+            item.sendTaskids = String(obj.sendTaskid).split(",");
+
+          }
+          if (obj) {
+            if (obj.isabnormal) {
+              console.log(obj.isabnormal);
+              form.excep = obj.isabnormal;
+              this.excep = obj.isabnormal;
+            }
           }
         }
       });
diff --git a/src/views/outsideChainxjnew.vue b/src/views/outsideChainxjnew.vue
index d61c135..3d40426 100644
--- a/src/views/outsideChainxjnew.vue
+++ b/src/views/outsideChainxjnew.vue
@@ -7,15 +7,21 @@
       </div>
 
     </div> -->
-    <div class="CONTENT" >
+    <div class="CONTENT">
       <div class="preview-left">
         <div class="toptitle">
-          <div class="title">{{ taskname ? taskname : ""+localStorage.getItem("orgname")+"鍖绘姢鐭ヨ瘑瀹f暀" }}</div>
+          <div class="title">
+            {{
+              taskname
+                ? taskname
+                : "鍖绘姢鐭ヨ瘑瀹f暀"
+            }}
+          </div>
           <div style="font-size: 22px; margin-bottom: 20px; line-height: 1.5">
             {{
               kcb
                 ? kcb
-                : "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸"+localStorage.getItem("orgname")+"鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瑙傜湅杩欎唤瀹f暀璧勮銆�"
+                : "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸鍖绘姢浜哄憳锛屼负浜嗘洿濂藉湴浜嗚В鎮ㄧ殑搴峰鎯呭喌锛岃鎮ㄦ娊涓�鐐瑰疂璐垫椂闂达紝瑙傜湅杩欎唤瀹f暀璧勮銆�"
             }}
             <!-- 浜茬埍鐨勬偅鑰�/瀹跺睘鎮ㄥソ锛屼负浜嗘洿濂界殑浜嗚В鎮ㄥ嚭闄㈠悗鐨勫悍澶嶆儏鍐碉紝缁欐偍閫傚綋鍙婃椂鐨勫仴搴锋寚瀵硷紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瀹屾垚杩欎唤鍑洪櫌闅忚闂嵎璋冩煡銆� -->
           </div>
@@ -32,11 +38,12 @@
             margin-bottom: 10px;
           "
         >
-        {{
+          {{
             jsy
               ? jsy
               : "鐢熸椿涓婅鍔抽�哥粨鍚堬紝娉ㄦ剰浼戞伅鍜岃惀鍏伙紝閫傚綋閿荤偧锛屾垝鐑熼檺閰掞紝淇濇寔蹇冩儏鑸掔晠锛屽畾鏈熷璇娿�傞偅鏈瀹f暀鍐呭灏卞埌杩欓噷锛岀鎮ㄨ韩浣撳仴搴凤紒"
-          }}        </div>
+          }}
+        </div>
         <!-- <div style="font-size: 20px">
           {{
             jsy
@@ -53,7 +60,7 @@
 import {
   getExternalfollowup,
   Submitaquestionnaire,
-  geturlinfo
+  geturlinfo,
 } from "@/api/AiCentre/index";
 import { getToken } from "@/utils/auth";
 import axios from "axios";
@@ -76,15 +83,15 @@
         question3: "",
       },
       richText: "<p>Hello, <strong>world</strong>!</p>",
-      url:'',
-      taskname:'',
-      kcb:'',
-      jsy:'',
+      url: "",
+      taskname: "",
+      kcb: "",
+      jsy: "",
     };
   },
 
   created() {
-    this.getQuestionnaire();
+    this.geturlinfo();
   },
   methods: {
     // 瑙f瀽urlid
@@ -94,27 +101,32 @@
       // let url = 'http://218.108.11.22:8093/sf/003';
       // let urlid = this.extractLastSegmentFromUrl(url);
 
-      geturlinfo( url ).then((res) => {
-       if (res.code==200) {
-         this.getQuestionnaire(res.data.param1,res.data.param2,res.data.param3,res.data.param5,)
-       }
+      geturlinfo(url).then((res) => {
+        if (res.code == 200) {
+          this.getQuestionnaire(
+            res.data.param1,
+            res.data.param2,
+            res.data.param3,
+            res.data.param5
+          );
+        }
       });
     },
-    extractLastSegmentFromUrl(url) {
-    // 鎵惧埌鏈�鍚庝竴涓�'/'鐨勪綅缃�
-    const lastSlashIndex = url.lastIndexOf('/');
-    // 濡傛灉鎵惧埌浜�'/'锛屾埅鍙栧叾鍚庣殑鎵�鏈夊瓧绗�
-    if (lastSlashIndex !== -1) {
-        return url.substring(lastSlashIndex + 1);
-    }
-    // 濡傛灉娌℃湁鎵惧埌'/'锛岃繑鍥炵┖瀛楃涓�
-    return '';
-},
+    //     extractLastSegmentFromUrl(url) {
+    //     // 鎵惧埌鏈�鍚庝竴涓�'/'鐨勪綅缃�
+    //     const lastSlashIndex = url.lastIndexOf('/');
+    //     // 濡傛灉鎵惧埌浜�'/'锛屾埅鍙栧叾鍚庣殑鎵�鏈夊瓧绗�
+    //     if (lastSlashIndex !== -1) {
+    //         return url.substring(lastSlashIndex + 1);
+    //     }
+    //     // 濡傛灉娌℃湁鎵惧埌'/'锛岃繑鍥炵┖瀛楃涓�
+    //     return '';
+    // },
     // 鑾峰彇鏁版嵁
-    getQuestionnaire(param1,param2,param3) {
-      this.taskid = param1;
-      this.patid = param2;
-      this.taskname = param3;
+    getQuestionnaire(param1, param2, param3) {
+      this.taskid = decodeURIComponent(param1);
+      this.patid = decodeURIComponent(param2);
+      this.taskname = decodeURIComponent(param3);
       // // let taskid =
       // //   "OFp7tn/B6x7IzKJetvGWHdSWBj7msRlnlj6am9dyuHTH6sEt4uBbVCUXs5kcF/e4O2W6vqHf2Bz9K3/evbYDmw==";
       // // let patid =
@@ -126,25 +138,26 @@
       // // this.$modal.msgSuccess("浠诲姟id涓�" + this.taskid);
       // let taskids = this.encrypt(this.taskid);
       // let patids = this.encrypt(this.patid);
-      getExternalfollowup({ param1: this.taskid, param2: this.patid }).then((res) => {
-        if (res.code == 200) {
-          this.url = res.data.script[0].richText;
-          this.jsy = res.data.jsy;
-          this.kcb = res.data.kcb;
-          // 涓存椂鑾峰彇鏁版嵁
-      axios
-        .get(this.url)
-        .then((response) => {
-          console.log(response.data, "鏁版嵁"); // 杈撳嚭鑾峰彇鍒扮殑鏂囦欢鍐呭
-          this.richText = response.data;
-          this.richText = this.addStyleToImages(this.richText);
-        })
-        .catch((error) => {
-          console.error("Failed to fetch file:", error);
-        });
+      getExternalfollowup({ param1: this.taskid, param2: this.patid }).then(
+        (res) => {
+          if (res.code == 200) {
+            this.url = res.data.script[0].richText;
+            this.jsy = res.data.jsy;
+            this.kcb = res.data.kcb;
+            // 涓存椂鑾峰彇鏁版嵁
+            axios
+              .get(this.url)
+              .then((response) => {
+                console.log(response.data, "鏁版嵁"); // 杈撳嚭鑾峰彇鍒扮殑鏂囦欢鍐呭
+                this.richText = response.data;
+                this.richText = this.addStyleToImages(this.richText);
+              })
+              .catch((error) => {
+                console.error("Failed to fetch file:", error);
+              });
+          }
         }
-      });
-
+      );
     },
     addStyleToImages(html) {
       return html.replace(
@@ -201,7 +214,6 @@
 </script>
 
 <style lang="scss" scoped>
-
 .questionnaire {
   background-image: url("../assets/images/chainbackground1.jpg");
   background-color: #f9f9fb;
diff --git a/src/views/patient/patient/AwaitingAdmission.vue b/src/views/patient/patient/AwaitingAdmission.vue
new file mode 100644
index 0000000..a4f82aa
--- /dev/null
+++ b/src/views/patient/patient/AwaitingAdmission.vue
@@ -0,0 +1,1274 @@
+<template>
+  <div class="app-container">
+    <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-item label="濮撳悕" width="100" prop="name">
+            <el-input
+              v-model="queryParams.patname"
+              placeholder="璇疯緭鍏ュ鍚�"
+              clearable
+              style="width: 200px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="璇婃柇" width="100" prop="name">
+            <el-input
+              v-model="queryParams.diagname"
+              placeholder="璇疯緭鍏ヨ瘖鏂�"
+              clearable
+              style="width: 200px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="绉戝" width="100" prop="name">
+            <el-input
+              v-model="queryParams.deptname"
+              placeholder="璇疯緭鍏ョ瀹ゅ悕绉�"
+              clearable
+              style="width: 200px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="鍖荤敓" width="100" prop="name">
+            <el-input
+              v-model="queryParams.drname"
+              placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
+              clearable
+              style="width: 200px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="鐥呮鍙�" prop="outhospno">
+            <el-input
+              v-model="queryParams.outhospno"
+              placeholder="璇疯緭鍏ョ梾妗堝彿"
+              clearable
+              style="width: 250px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+
+          <el-form-item label="鎮h�呰寖鍥�" prop="status">
+            <el-cascader
+              v-model="queryParams.scopetype"
+              placeholder="榛樿鍏ㄩ儴"
+              :options="sourcetype"
+              :props="{ expandTrigger: 'hover' }"
+              @change="handleChange"
+            ></el-cascader>
+          </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-date-picker
+                v-model="dateRange"
+                type="datetimerange"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+                :default-time="['12:00:00']"
+              >
+              </el-date-picker> -->
+          </el-form-item>
+          <el-row>
+            <!-- <el-form-item label=" 灏辫瘖鏃ユ湡 " prop="admitdate">
+              <el-date-picker
+                clearable
+                v-model="queryParams.admitdate"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="璇烽�夋嫨 灏辫瘖鏃ユ湡 "
+              >
+              </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-form-item>
+          </el-row>
+        </el-form>
+
+        <el-row :gutter="10" class="mb8">
+          <!-- <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="medium"
+              @click="handleAdd"
+              v-hasPermi="['system:user:add']"
+              >鏂板</el-button
+            >
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              size="medium"
+              :disabled="single"
+              @click="handleUpdate"
+              v-hasPermi="['system:user:edit']"
+              >淇敼</el-button
+            >
+          </el-col> -->
+          <el-col :span="1.5">
+            <el-button
+              type="danger"
+              plain
+              icon="el-icon-delete"
+              size="medium"
+              :disabled="multiple"
+              @click="handleDelete"
+              v-hasPermi="['system:user:remove']"
+              >鍒犻櫎</el-button
+            >
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-plus"
+              size="medium"
+              :disabled="multiple"
+              @click="handleBatchAddTask"
+            >
+              鎵归噺鍙戦�佸叆闄㈤�氱煡</el-button
+            >
+          </el-col>
+          <el-col :span="19">
+            <div class="documentf">
+              <div class="document">
+                <el-button
+                  type="info"
+                  plain
+                  icon="el-icon-upload2"
+                  size="medium"
+                  @click="handleImport"
+                  v-hasPermi="['system:user:import']"
+                  >瀵煎叆</el-button
+                >
+              </div>
+              <div class="document">
+                <el-button
+                  type="warning"
+                  plain
+                  icon="el-icon-download"
+                  size="medium"
+                  @click="handleExport"
+                  v-hasPermi="['system:user:export']"
+                  >瀵煎嚭</el-button
+                >
+              </div>
+            </div>
+          </el-col>
+          <!-- <el-col :span="1.5"> </el-col> -->
+        </el-row>
+
+        <el-table
+          v-loading="loading"
+          :data="userList"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column type="selection" width="50" align="center" />
+          <!-- <el-table-column
+            label="搴忓彿"
+            fixed
+            align="center"
+            key="id"
+            prop="id"
+          /> -->
+          <el-table-column
+            label="灏辫瘖鏃堕棿"
+            align="center"
+            key="admitdate"
+            prop="admitdate"
+            width="160"
+          >
+            <template slot-scope="scope">
+              <span>{{ formatTime(scope.row.admitdate) }}</span>
+            </template>
+          </el-table-column>
+          <!-- <el-table-column
+            label="鐥呮鍙�"
+            align="center"
+            key="patno"
+            prop="patno"
+          /> -->
+          <el-table-column
+            label="鐥呮鍙�"
+            align="center"
+            key="outhospno"
+            prop="outhospno"
+          />
+          <el-table-column
+            label="濮撳悕"
+            width="100"
+            align="center"
+            key="patname"
+            prop="patname"
+          >
+            <template slot-scope="scope">
+              <el-button
+                size="medium"
+                type="text"
+                @click="
+                  gettoken360(
+                    scope.row.idcardno,
+                    scope.row.drcode,
+                    scope.row.drname
+                  )
+                "
+                ><span class="button-textsc">{{
+                  scope.row.patname
+                }}</span></el-button
+              >
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="鎬у埆"
+            width="100"
+            align="center"
+            key="sex"
+            prop="sex"
+          >
+            <template slot-scope="scope">
+              <span>{{ scope.row.sex == 1 ? "鐢�" : "濂�" }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="骞撮緞"
+            align="center"
+            key="age"
+            prop="age"
+            width="120"
+          />
+          <el-table-column
+            label="鑱旂郴鐢佃瘽"
+            align="center"
+            key="telcode"
+            prop="telcode"
+            width="120"
+          />
+          <!-- <el-table-column
+            label="鎮h�呮爣绛撅紙缂猴級"
+            align="center"
+            key="tagList"
+            prop="tagList"
+            width="160"
+            :show-overflow-tooltip="true"
+          >
+            <template slot-scope="scope">
+              <span v-for="item in scope.row.tagList">{{ item }} </span>
+            </template>
+          </el-table-column> -->
+
+          <el-table-column
+            label="璇婃柇"
+            align="center"
+            key="diagname"
+            prop="diagname"
+            width="190"
+          />
+          <!-- <el-table-column
+            label="涓昏堪"
+            align="center"
+            key="mainsuit"
+            prop="mainsuit"
+            width="120"
+          /> -->
+          <el-table-column
+            label="灏辫瘖绉戝"
+            align="center"
+            key="deptname"
+            prop="deptname"
+            width="120"
+          />
+          <el-table-column
+            label="鎺ヨ瘖鍖荤敓"
+            align="center"
+            key="drname"
+            prop="drname"
+            width="120"
+          />
+          <el-table-column
+            label="鏄惁瀛樺湪浠诲姟"
+            align="center"
+            key="serverState"
+            prop="serverState"
+            width="100"
+          >
+            <template slot-scope="scope">
+              <span
+                :style="{
+                  color: scope.row.serverState == 1 ? 'green' : 'gray',
+                }"
+              >
+                {{ scope.row.serverState == 1 ? "鏄�" : "鏃�" }}
+              </span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="鎿嶄綔"
+            fixed="right"
+            align="center"
+            width="160"
+            class-name="small-padding fixed-width"
+          >
+            <template slot-scope="scope">
+              <el-button
+                size="medium"
+                type="text"
+                @click="
+                  $router.push({
+                    path: '/patient/patient/profile/',
+                    query: { id: scope.row.patid },
+                  })
+                "
+                v-hasPermi="['system:user:edit']"
+                ><span class="button-textsc"
+                  ><i class="el-icon-zoom-in"></i>鏌ョ湅</span
+                ></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-col>
+    </el-row>
+    <el-dialog
+      title="鎵归噺娣诲姞浠诲姟"
+      :visible.sync="batchTaskVisible"
+      width="90%"
+      append-to-body
+    >
+      <el-row :gutter="20">
+        <!-- 宸︿晶锛氶�変腑鎮h�呭垪琛� -->
+        <el-col :span="12">
+          <div class="batch-patient-section">
+            <h4>閫変腑鎮h�咃紙{{ selectedPatients.length }}浜猴級</h4>
+            <el-table
+              :data="selectedPatients"
+              border
+              style="width: 100%"
+              size="small"
+            >
+              <el-table-column prop="patname" label="濮撳悕" width="100" />
+              <el-table-column prop="sex" label="鎬у埆" width="80">
+                <template slot-scope="scope">
+                  {{ scope.row.sex === 1 ? "鐢�" : "濂�" }}
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="灏辫瘖鏃堕棿"
+                align="center"
+                key="admitdate"
+                prop="admitdate"
+              >
+                <template slot-scope="scope">
+                  <span>{{ formatTime(scope.row.admitdate) }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column prop="outhospno" label="鐥呮鍙�" />
+              <el-table-column prop="deptname" label="绉戝" />
+            </el-table>
+          </div>
+        </el-col>
+
+        <!-- 鍙充晶锛氫换鍔″垪琛� -->
+        <el-col :span="12">
+          <div class="batch-task-section">
+            <h4>浠诲姟鍒楄〃锛堣閫夋嫨1涓换鍔★級</h4>
+            <el-table
+              :data="taskList"
+              border
+              style="width: 100%"
+              size="small"
+              @current-change="handleTaskSelectionChange"
+              highlight-current-row
+            >
+              <el-table-column
+                label="浠诲姟鍚嶇О"
+                fixed
+                align="center"
+                key="taskName"
+                prop="taskName"
+                :show-overflow-tooltip="true"
+              />
+
+              <el-table-column
+                label="鏈嶅姟椤圭洰"
+                align="center"
+                key="templatename"
+                prop="templatename"
+                :show-overflow-tooltip="true"
+              />
+
+              <el-table-column
+                label="鍒涘缓浜�"
+                align="center"
+                key="createBy"
+                prop="createBy"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column
+                label="鍒涘缓鏃堕棿"
+                sortable
+                align="center"
+                prop="createTime"
+              >
+                <template slot-scope="scope">
+                  <span>{{ formatTime(scope.row.createTime) }}</span>
+                </template>
+              </el-table-column>
+              <template #empty>
+                <div class="empty-message">
+                  <i class="el-icon-warning"></i>
+                  <span>鎮h�呯瀹ゆ棤鍖归厤鏈嶅姟</span>
+                </div>
+              </template>
+            </el-table>
+          </div>
+        </el-col>
+      </el-row>
+
+      <!-- 搴曢儴鎸夐挳 -->
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="batchTaskVisible = false">鍙� 娑�</el-button>
+        <el-button
+          type="primary"
+          :loading="batchLoading"
+          @click="submitBatchTask"
+          >鍒涘缓浠诲姟</el-button
+        >
+      </div>
+    </el-dialog>
+    <!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� -->
+    <el-dialog
+      :title="upload.title"
+      :visible.sync="upload.open"
+      width="70%"
+      append-to-body
+    >
+      <el-steps :active="dractive" simple>
+        <el-step title="涓婁紶瀵煎叆鏂囦欢" icon="el-icon-upload"></el-step>
+        <el-step title="瀵煎叆妫�鏌�" icon="el-icon-picture"></el-step>
+        <el-step title="瀵煎叆缁撴灉" icon="el-icon-picture"></el-step>
+      </el-steps>
+      <!-- 涓婁紶瀵煎叆鏂囦欢 -->
+      <div class="download" v-if="dractive == 1">
+        <el-upload
+          class="upload-demo"
+          ref="upload"
+          :limit="1"
+          accept=".xlsx, .xls"
+          :headers="upload.headers"
+          :action="upload.url + '?updateSupport=' + upload.updateSupport"
+          :disabled="upload.isUploading"
+          :on-progress="handleFileUploadProgress"
+          :on-success="handleFileSuccess"
+          :auto-upload="false"
+          drag
+        >
+          <i class="el-icon-upload"></i>
+          <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+          <div class="el-upload__tip text-center" slot="tip">
+            <div class="el-upload__tip" slot="tip">
+              <el-checkbox v-model="upload.updateSupport" />
+              鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+            </div>
+            <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
+            <el-link
+              type="primary"
+              :underline="false"
+              style="font-size: 24px; vertical-align: baseline"
+              @click="importTemplate"
+              >涓嬭浇妯℃澘</el-link
+            >
+          </div>
+        </el-upload>
+      </div>
+
+      <!-- 瀵煎叆妫�鏌� -->
+      <div class="uploading" v-else-if="dractive == 2">
+        <el-table :data="uploadingData" style="width: 100%">
+          <el-table-column prop="serial" label="搴忓彿"> </el-table-column>
+          <el-table-column prop="name" label="濮撳悕" width="100">
+          </el-table-column>
+          <el-table-column prop="sex" label="鎬у埆" width="100">
+          </el-table-column>
+          <el-table-column prop="certificate" label="璇佷欢绫诲瀷">
+          </el-table-column>
+          <el-table-column prop="certificatenum" label="璇佷欢鍙风爜">
+          </el-table-column>
+          <el-table-column prop="goday" label="鍑虹敓鏃ユ湡"> </el-table-column>
+          <el-table-column prop="menum" label="鏈汉鑱旂郴鏂瑰紡"> </el-table-column>
+          <el-table-column prop="younum" label="浜插睘鑱旂郴鏂瑰紡">
+          </el-table-column>
+          <el-table-column prop="tag" label="鎮h�呮爣绛�"> </el-table-column>
+          <el-table-column prop="erry" label="閿欒鍘熷洜"> </el-table-column>
+        </el-table>
+        <pagination
+          v-show="total > 0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="geterryList"
+        />
+      </div>
+      <!-- 瀹屾垚 -->
+      <div class="drexamine" v-else-if="dractive == 3">
+        <img
+          src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
+        />
+        <p>瀵煎叆鎮h�呮垚鍔燂紒</p>
+        <p>鏈鍏辫瀵煎叆{{ ImportQuantity }}浣嶆偅鑰�</p>
+      </div>
+
+      <div slot="footer" class="dialog-footer" v-if="dractive == 3">
+        <!-- <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button> -->
+        <el-button @click="submitclose">瀹屾垚</el-button>
+      </div>
+      <div slot="footer" v-else>
+        <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button>
+        <el-button @click="submitclose">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { delUser } from "@/api/system/user";
+
+import {
+  listPatouthosp,
+  getPatouthosp,
+  addPatouthosp,
+  updatePatouthosp,
+  delPatouthosp,
+} from "@/api/smartor/patouthosp";
+import { particularpatient } from "@/api/patient/homepage";
+import { listtag } from "@/api/system/label";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import { query360PatInfo, getTasklist, addSubtask } from "@/api/AiCentre/index";
+
+import store from "@/store";
+import { type } from "jquery";
+
+export default {
+  name: "Userhuanze",
+  dicts: ["sys_normal_disable", "sys_user_sex"],
+  components: { Treeselect },
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+      userList: null,
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 閮ㄩ棬鏍戦�夐」
+      deptOptions: undefined,
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 閮ㄩ棬鍚嶇О
+      deptName: undefined,
+      // 榛樿瀵嗙爜
+      initPassword: undefined,
+      amendtag: false, //鏄惁淇敼
+      // 鏃ユ湡鑼冨洿
+      dateRange: [],
+      paperstypes: [
+        { papersname: "韬唤璇�" },
+        { papersname: "鎶ょ収" },
+        { papersname: "涓浗娓境灞呮皯韬唤璇�" },
+        { papersname: "涓浗鍙版咕灞呮皯韬唤璇�" },
+      ],
+      // 琛ㄥ崟鍙傛暟
+      form: {
+        name: "",
+        age: "",
+        sex: "",
+        tagList: [],
+        idcardno: "",
+        telcode: "",
+        idcardtype: "",
+        relativetelcode: "",
+      },
+      //瀵煎叆杩涘害
+      dractive: 1,
+      // 瀵煎叆灞曠ず琛ㄥ崟
+      uploadingData: {},
+      total: 0, // 鎬绘潯鏁�
+      ImportQuantity: 999, //瀵煎叆鎮h�呮暟閲�
+      Labelchange: false, //淇敼鏂板寮圭獥
+      propss: { multiple: true },
+      optionstag: [], //鏍囩鍒楄〃
+      batchTaskVisible: false, // 寮圭獥鍙鎬�
+      selectedPatients: [], // 閫変腑鐨勬偅鑰呭垪琛�
+      taskList: [], // 浠诲姟鍒楄〃
+      selectedTask: null, // 閫変腑鐨勪换鍔″垪琛�
+      batchLoading: false, // 鎵归噺鎻愪氦鍔犺浇鐘舵��
+      deptcode: "",
+      Patientrange: [
+        {
+          name: "鍏ㄩ儴",
+          id: 999,
+        },
+        {
+          name: "褰撳墠绉戝",
+          id: 1,
+        },
+      ],
+      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",
+          },
+        },
+      },
+      defaultProps: {
+        children: "children",
+        label: "label",
+      },
+      sourcetype: [
+        {
+          value: 1,
+          label: "绉戝",
+          children: [],
+        },
+        {
+          value: 2,
+          label: "鐥呭尯",
+          children: [],
+        },
+        {
+          value: 3,
+          label: "鍏ㄩ儴",
+        },
+      ],
+      // 鐢ㄦ埛瀵煎叆鍙傛暟
+      upload: {
+        // 鏄惁鏄剧ず寮瑰嚭灞傦紙鐢ㄦ埛瀵煎叆锛�
+        open: false,
+        // 寮瑰嚭灞傛爣棰橈紙鐢ㄦ埛瀵煎叆锛�
+        title: "",
+        // 鏄惁绂佺敤涓婁紶
+        isUploading: false,
+        // 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+        updateSupport: 0,
+        // 璁剧疆涓婁紶鐨勮姹傚ご閮�
+        headers: { Authorization: "Bearer " + getToken() },
+        // 涓婁紶鐨勫湴鍧�
+        url: process.env.VUE_APP_BASE_API + "/system/user/importData",
+      },
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        searchscope: 3,
+        scopetype: [],
+        deptcodes: [],
+      },
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        // userName: [
+        //   { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+        //   {
+        //     min: 2,
+        //     max: 20,
+        //     message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+        //     trigger: "blur",
+        //   },
+        // ],
+        // nickName: [
+        //   { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
+        // ],
+        // password: [
+        //   { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+        //   {
+        //     min: 5,
+        //     max: 20,
+        //     message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+        //     trigger: "blur",
+        //   },
+        // ],
+        // email: [
+        //   {
+        //     type: "email",
+        //     message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+        //     trigger: ["blur", "change"],
+        //   },
+        // ],
+        // phonenumber: [
+        //   {
+        //     pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+        //     message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+        //     trigger: "blur",
+        //   },
+        // ],
+        // IDnumber: [
+        //   {
+        //     pattern:
+        //       /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
+        //     message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
+        //     trigger: "blur",
+        //   },
+        // ],
+      },
+    };
+  },
+  watch: {
+    // 鏍规嵁鍚嶇О绛涢�夐儴闂ㄦ爲
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    },
+  },
+  created() {
+    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,
+      };
+    });
+    this.getList();
+    this.gettabList();
+  },
+  methods: {
+    /** 鏌ヨ鎮h�呭垪琛� */
+    getList() {
+      this.loading = true;
+      if (this.queryParams.searchscope == 3) {
+        this.queryParams.deptcodes = store.getters.belongDepts.map(
+          (obj) => obj.deptCode
+        );
+        // this.queryParams.leavehospitaldistrictcodes =
+        //   store.getters.belongWards.map((obj) => obj.districtCode);
+      }
+      if (this.dateRange) {
+        this.queryParams.beginTime = this.dateRange[0];
+        this.queryParams.endTime = this.dateRange[1];
+      } else {
+        this.queryParams.beginTime = "";
+        this.queryParams.endTime = "";
+      }
+      listPatouthosp(this.queryParams).then((response) => {
+        this.userList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    /** 鏌ヨ鏍囩鍒楄〃 */
+    gettabList() {
+      const tagqueryParams = {
+        pageNum: 1,
+        pageSize: 1000,
+        tagname: undefined,
+        tagdescription: undefined,
+        tagcategoryid: "0",
+      };
+      listtag(tagqueryParams).then((response) => {
+        console.log(response);
+        this.optionstag = response.rows;
+      });
+    },
+    // 鎮h�呰寖鍥村鐞�
+    handleChange(value) {
+      let type = value[0];
+      let code = value.slice(-1)[0];
+      // this.queryParams.leavehospitaldistrictcodes = [];
+      this.queryParams.deptcodes = [];
+
+      if (type == 1) {
+        this.queryParams.deptcodes.push(code);
+        // this.queryParams.leavehospitaldistrictcodes = [];
+        this.queryParams.searchscope = 1;
+      } else if (type == 2) {
+        // this.queryParams.leavehospitaldistrictcodes.push(code);
+        this.queryParams.deptcodes = [];
+        this.queryParams.searchscope = 2;
+      } else {
+        this.queryParams.searchscope = 3;
+      }
+    },
+    // 鏌ヨ瀵煎叆灞曠ず鍒楄〃
+    geterryList() {
+      this.loading = true;
+      listJob(this.queryParams).then((response) => {
+        this.jobList = 1;
+        this.total = 1;
+        this.loading = false;
+      });
+    },
+    //鎮h��360璺宠浆
+    gettoken360(sfzh, drcode, drname) {
+      // this.$modal.msgWarning('360鍔熻兘鏆傛湭寮�閫�');
+
+      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鏌ヨ鏃犵粨鏋�");
+        }
+      });
+    },
+    // 绛涢�夎妭鐐�
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    // 鑺傜偣鍗曞嚮浜嬩欢
+    handleNodeClick(data) {
+      this.queryParams.deptId = data.id;
+      this.handleQuery();
+    },
+
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.Labelchange = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        name: "",
+        age: "",
+        sex: "",
+        tagList: [],
+        idcardno: "",
+        telcode: "",
+        idcardtype: "",
+        relativetelcode: "",
+      };
+      // this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.queryParams = {
+        pageNum: 1,
+        pageSize: 10,
+        searchscope: 3,
+        scopetype: [],
+        deptcodes: [],
+        // leavehospitaldistrictcodes: [],
+      };
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.patid);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.Labelchange = true;
+      this.amendtag = false;
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      console.log(row);
+      const userIds = row.patid || this.ids;
+      particularpatient(userIds).then((response) => {
+        console.log(response);
+        this.form = response.data;
+      });
+      this.amendtag = true;
+      this.Labelchange = true;
+    },
+
+    //淇敼/鏂板鎮h��
+    submitForm() {
+      if (this.amendtag) {
+        console.log(22);
+        this.form.isoperation = 2;
+      } else {
+        this.form.isoperation = 1;
+      }
+      alterpatient(this.form)
+        .then((response) => {
+          console.log(response);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("淇濆瓨鎴愬姛");
+        });
+      this.reset();
+      // this.idds = "";
+      this.Labelchange = false;
+    },
+
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+        .then(function () {
+          return deletepatient(userIds);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download(
+        "smartor/patarchive/export",
+        {
+          ...this.queryParams,
+        },
+        `user_${new Date().getTime()}.xlsx`
+      );
+    },
+    /** 瀵煎叆鎸夐挳鎿嶄綔 */
+    handleImport() {
+      this.upload.title = "鐢ㄦ埛瀵煎叆";
+      this.upload.open = true;
+    },
+    /** 涓嬭浇妯℃澘鎿嶄綔 */
+    importTemplate() {
+      this.download(
+        "smartor/import/getImportPatTemplate",
+        {},
+        `user_template_${new Date().getTime()}.xlsx`
+      );
+    },
+    // 鏂囦欢涓婁紶涓鐞�
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 鏂囦欢涓婁紶鎴愬姛澶勭悊
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+          response.msg +
+          "</div>",
+        "瀵煎叆缁撴灉",
+        { dangerouslyUseHTMLString: true }
+      );
+      this.getList();
+    },
+    // 鎻愪氦涓婁紶鏂囦欢
+    submitFileForm() {
+      // 涓婁紶
+      if (this.dractive == 1) {
+        this.$refs.upload.submit();
+        this.dractive++;
+      } else {
+        this.dractive++;
+      }
+    },
+    submitclose() {
+      this.upload.open = false;
+      this.dractive = 1;
+    },
+    /** 鎵归噺娣诲姞浠诲姟鎸夐挳鐐瑰嚮 */
+    handleBatchAddTask() {
+      // 鏍¢獙鏄惁閫変腑鎮h��
+      if (this.ids.length === 0) {
+        this.$modal.msgWarning("璇疯嚦灏戦�変腑1鍚嶆偅鑰�");
+        return;
+      }
+      // 妫�鏌ラ�変腑鐨勬偅鑰呬腑鏄惁鏈夊凡鏈変换鍔$殑
+      const hasTaskPatients = this.userList.filter(
+        (item) => this.ids.includes(item.patid) && item.serverState == 1
+      );
+
+      if (hasTaskPatients.length > 0) {
+        const patientNames = hasTaskPatients.map((p) => p.patname).join("銆�");
+        this.$modal.msgError(
+          `閫変腑鐨勬偅鑰� ${patientNames} 宸叉湁浠诲姟锛屾棤娉曢噸澶嶆坊鍔燻
+        );
+        return;
+      }
+      // 鑾峰彇閫変腑鎮h�呯殑绉戝淇℃伅锛堢敤浜庢牎楠屽悓涓�绉戝锛�
+      const patientDepts = new Set();
+      let deptcode = "";
+      this.ids.forEach((patId) => {
+        const patient = this.userList.find((item) => item.patid === patId);
+        if (patient) {
+          patientDepts.add(patient.deptname);
+          deptcode = patient.deptcode;
+        }
+      });
+
+      // 鏍¢獙鏄惁鍚屼竴绉戝
+      // if (patientDepts.size > 1) {
+      //   this.$modal.msgError("閫変腑鐨勬偅鑰呬笉灞炰簬鍚屼竴绉戝锛屾棤娉曟壒閲忔坊鍔犱换鍔�");
+      //   return;
+      // }
+
+      // 鑾峰彇閫変腑鎮h�呭垪琛�
+      this.selectedPatients = this.userList.filter((item) =>
+        this.ids.includes(item.patid)
+      );
+
+      // 鏄剧ず寮圭獥
+      this.batchTaskVisible = true;
+
+      // 鑾峰彇浠诲姟鍒楄〃
+      this.loadTaskList(deptcode);
+    },
+
+    /** 鍔犺浇浠诲姟鍒楄〃 */
+    loadTaskList(deptcode) {
+      this.batchLoading = true;
+      let topqueryParams = {
+        pageNum: 1,
+        pageSize: 10,
+        serviceType: 3,
+        type: 2,
+      };
+      //         deptcode: deptcode,鍙栨秷绉戝闄愬埗
+      getTasklist(topqueryParams).then((response) => {
+        this.taskList = response.rows;
+        this.batchLoading = false;
+      });
+    },
+
+    /** 澶勭悊浠诲姟閫夋嫨鍙樺寲 */
+    handleTaskSelectionChange(currentRow) {
+      this.selectedTask = currentRow;
+    },
+
+    // 閲嶅啓鎵归噺鎻愪氦鏂规硶
+    async submitBatchTask() {
+      // 鏍¢獙鏄惁閫変腑浠诲姟
+      if (!this.selectedTask) {
+        this.$modal.msgWarning("璇烽�夋嫨1涓换鍔�");
+        return;
+      }
+
+      this.batchLoading = true;
+      const successPatients = [];
+      const failedPatients = [];
+
+      try {
+        // 閬嶅巻閫変腑鐨勬偅鑰咃紝閫愪釜璋冪敤鎺ュ彛
+        for (const patient of this.selectedPatients) {
+          const params = {
+            taskid: this.selectedTask.taskid,
+            type: this.selectedTask.type,
+            taskName: this.selectedTask.taskName,
+            serviceType: this.selectedTask.serviceType,
+            preachform: this.selectedTask.preachform,
+            templateid: this.selectedTask.templateid,
+            libtemplateid: this.selectedTask.libtemplateid,
+            sendstate: 2,
+            ...patient,
+            sendname: patient.patname,
+            endtime: patient.admitdate + " 00:00:00",
+            leavediagname: patient.diagname,
+            age: "",
+          };
+
+          try {
+            await addSubtask(params);
+            successPatients.push(patient.patname);
+          } catch (error) {
+            failedPatients.push(patient.patname);
+          }
+        }
+
+        // 鏄剧ず澶勭悊缁撴灉
+        let message = `鎴愬姛涓� ${successPatients.length} 鍚嶆偅鑰呮坊鍔犱换鍔;
+        if (failedPatients.length > 0) {
+          message += `锛�${failedPatients.length} 鍚嶆偅鑰呮坊鍔犲け璐;
+        }
+        this.$modal.msgSuccess(message);
+
+        this.batchTaskVisible = false;
+        this.getList(); // 鍒锋柊鎮h�呭垪琛�
+      } catch (error) {
+        this.$modal.msgError("鎵归噺娣诲姞浠诲姟杩囩▼涓嚭閿�");
+      } finally {
+        this.batchLoading = false;
+      }
+    },
+
+    /** 鎵归噺娣诲姞鎮h�呬换鍔℃帴鍙� */
+    batchAddPatientTask(params) {},
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-button--primary.is-plain {
+  color: #ffffff;
+  background: #409eff;
+  border-color: #4fabe9;
+}
+.document {
+  width: 100px;
+  height: 50px;
+}
+.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);
+}
+.drexamine {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 30px;
+  background: #daeaf5;
+  img {
+    width: 100px;
+    height: 100px;
+  }
+}
+.button-textsc {
+  color: #3664d9;
+}
+.batch-patient-section,
+.batch-task-section {
+  padding: 15px;
+  border: 1px solid #ebeef5;
+  border-radius: 4px;
+  margin-bottom: 15px;
+}
+
+.el-table--enable-row-hover .el-table__body tr:hover > td {
+  background-color: #f5f7fa;
+}
+.el-table__body tr.current-row > td {
+  background-color: #e6f7ff;
+}
+
+/* 绂佺敤鐘舵�佷笅鎸夐挳鏍峰紡 */
+.el-button.is-disabled {
+  cursor: not-allowed;
+}
+.batch-patient-section h4,
+.batch-task-section h4 {
+  margin-top: 0;
+  margin-bottom: 15px;
+  color: #303133;
+  font-size: 16px;
+}
+
+/* 琛ㄦ牸鏍峰紡浼樺寲 */
+.el-table {
+  margin-bottom: 10px;
+}
+
+/* 寮圭獥搴曢儴鎸夐挳闂磋窛 */
+.dialog-footer {
+  text-align: right;
+  padding: 10px 20px 20px;
+}
+</style>
diff --git a/src/views/patient/patient/outpatient.vue b/src/views/patient/patient/outpatient.vue
index 0c4ec56..8cb1bc5 100644
--- a/src/views/patient/patient/outpatient.vue
+++ b/src/views/patient/patient/outpatient.vue
@@ -1153,6 +1153,7 @@
             sendstate: 2,
             ...patient,
             sendname: patient.patname,
+            endtime: patient.admitdate + " 00:00:00",
             leavediagname: patient.diagname,
             age: "",
           };
diff --git a/src/views/patient/propaganda/Missioncreation.vue b/src/views/patient/propaganda/Missioncreation.vue
index f666f1a..880ee5f 100644
--- a/src/views/patient/propaganda/Missioncreation.vue
+++ b/src/views/patient/propaganda/Missioncreation.vue
@@ -253,7 +253,7 @@
                       /> </el-form-item
                   ></el-col>
                 </el-row>
-                <el-form-item label="鏈嶅姟褰㈠紡">
+                <!-- <el-form-item label="鏈嶅姟褰㈠紡">
                   <el-checkbox-group v-model="checkList">
                     <el-checkbox
                       v-for="(item, index) in checkboxlist"
@@ -263,6 +263,16 @@
                       {{ item.label }}</el-checkbox
                     >
                   </el-checkbox-group>
+                </el-form-item> -->
+                <el-form-item label="鏈嶅姟褰㈠紡">
+                  <SortCheckbox
+                    v-model="checkList"
+                    :options="checkboxlist"
+                    :initialselectedOrder="selectedOrder"
+                    value-key="value"
+                    label-key="label"
+                    @change="checkSelectionChange"
+                  />
                 </el-form-item>
               </el-form>
             </div>
@@ -520,7 +530,7 @@
             />
           </el-row>
           <pagination
-            v-show="patienttotal > 0"
+            v-show="patienttotal > 0 && this.patientqueryParams.allhosp != 6"
             :total="patienttotal"
             :page.sync="patientqueryParams.pageNum"
             :limit.sync="patientqueryParams.pageSize"
@@ -759,7 +769,7 @@
 
 import store from "@/store";
 import {
-  getTaskpatient,
+  getTaskpatientQC,
   getlibrarylist,
   getFollowuplist,
   getQtemplatelist,
@@ -773,6 +783,7 @@
 import { listDept } from "@/api/system/dept";
 import { getToken } from "@/utils/auth";
 import SFtable from "@/components/SFtable"; //琛ㄦ牸缁勪欢
+import SortCheckbox from "@/components/SortCheckbox"; //琛ㄦ牸缁勪欢
 
 export default {
   name: "ServiceDetails",
@@ -796,6 +807,7 @@
       dialogVisiblepatient: false, //娣诲姞鎮h�呭脊妗�
       radio: 1,
       checkboxlist: [],
+      selectedOrder: [],
       // 绉戝/鐥呭尯
       belongWards: [],
       belongWards: [],
@@ -805,9 +817,10 @@
       htmlRichText: "<p>Hello, <strong>world</strong>!</p>",
       // 鎮h�呰〃鍗�
       tableLabelhz: [
-        { label: "鍑洪櫌鏃ユ湡", width: "150", prop: "inhosptime" },
+        { label: "鍑洪櫌鏃ユ湡", width: "150", prop: "endtime" },
         { label: "鎮h��", width: "", prop: "name" },
-        { label: "韬唤璇�", width: "200", prop: "sfzh" },
+        { label: "韬唤璇�", width: "200", prop: "idcardno" },
+        { label: "鐢佃瘽鍙风爜", width: "180", prop: "telcode" },
         { label: "鎬у埆", width: "", prop: "sex" },
         { label: "骞撮緞", width: "", prop: "age" },
         { label: "璐d换鎶ゅ+", width: "", prop: "nurseName" },
@@ -820,6 +833,7 @@
         { label: "鍑洪櫌鏃ユ湡", width: "150", prop: "endtime" },
         { label: "鎮h��", width: "", prop: "name" },
         { label: "韬唤璇�", width: "200", prop: "sfzh" },
+        { label: "鐢佃瘽鍙风爜", width: "180", prop: "telcode" },
         { label: "鎬у埆", width: "", prop: "sex" },
         { label: "骞撮緞", width: "", prop: "age" },
         { label: "璐d换鎶ゅ+", width: "", prop: "nurseName" },
@@ -966,11 +980,11 @@
       },
       taskoptions: [
         {
-          value: "1",
+          value: "4",
           label: "鍑洪櫌鐥呬汉",
         },
         {
-          value: "4",
+          value: "1",
           label: "鍦ㄩ櫌鐥呬汉",
         },
         {
@@ -980,6 +994,14 @@
         {
           value: "3",
           label: "浣撴鐥呬汉",
+        },
+        {
+          value: "6",
+          label: "闄㈠鎮h��",
+        },
+        {
+          value: "5",
+          label: "鎵嬫湳鐥呬汉",
         },
       ],
       source: [
@@ -999,7 +1021,7 @@
       quote: false,
     };
   },
-  components: { SFtable },
+  components: { SFtable, SortCheckbox },
 
   created() {
     this.id = this.$route.query.id;
@@ -1126,12 +1148,21 @@
     submitForm(formName) {
       this.form.preachform = this.checkList.join(",");
       // this.formatFn(1);
-      if (!this.form.patTaskRelevances[0]&&this.form.longTask==0) {
+      if (!this.form.patTaskRelevances[0] && this.form.longTask == 0) {
         this.$modal.msgError("璇烽�夋嫨鐥呬汉");
         return;
       }
       if (!this.form.templatename) {
         this.$modal.msgError("鏈�夋嫨妯℃澘");
+        return;
+      }
+      if (this.checkList) {
+        this.form.preachform = this.checkList.join(",");
+        this.form.preachformList = this.selectedOrder;
+      } else {
+        this.$modal.msgError("璇烽�夋嫨鏈嶅姟绫诲瀷");
+        this.submitLoading = false;
+
         return;
       }
       const filteredArray = this.variableList.filter(
@@ -1242,13 +1273,32 @@
       this.overallCase.forEach((item) => {
         this.allpids.push(item.patid);
       });
-      if (this.patientqueryParams.allhosp == 1) {
+      if (this.patientqueryParams.allhosp == 4) {
         this.tableLabelhz = [
+          // { label: "鍏ラ櫌鏃ユ湡", width: "170", prop: "starttime" },
           { label: "鍑洪櫌鏃ユ湡", width: "150", prop: "endtime" },
           { label: "鎮h��", width: "", prop: "name" },
-          { label: "韬唤璇�", width: "200", prop: "sfzh" },
+          { label: "鎮h�呰瘖鏂�", width: "", prop: "leavediagname" },
+          { label: "韬唤璇�", width: "200", prop: "idcardno" },
           { label: "鎬у埆", width: "", prop: "sex" },
           { label: "骞撮緞", width: "", prop: "age" },
+          { label: "鐢佃瘽", width: "180", prop: "telcode" },
+          { label: "鍑洪櫌澶╂暟", width: "", prop: "endDay" },
+          { label: "璐d换鎶ゅ+", width: "", prop: "nurseName" },
+          { label: "鍖荤敓", width: "", prop: "drname" },
+          { label: "绉戝", width: "180", prop: "dept" },
+          { label: "鐥呭尯", width: "150", prop: "leavehospitaldistrictname" },
+        ];
+      } else if (this.patientqueryParams.allhosp == 1) {
+        this.tableLabelhz = [
+          { label: "鍏ラ櫌鏃ユ湡", width: "150", prop: "starttime" },
+          { label: "鎮h��", width: "", prop: "name" },
+          { label: "鎮h�呰瘖鏂�", width: "", prop: "leavediagname" },
+          { label: "韬唤璇�", width: "200", prop: "idcardno" },
+          { label: "鎬у埆", width: "", prop: "sex" },
+          { label: "骞撮緞", width: "", prop: "age" },
+          { label: "鐢佃瘽", width: "180", prop: "telcode" },
+          { label: "鍑洪櫌澶╂暟", width: "", prop: "endDay" },
           { label: "璐d换鎶ゅ+", width: "", prop: "nurseName" },
           { label: "鍖荤敓", width: "", prop: "drname" },
           { label: "绉戝", width: "180", prop: "dept" },
@@ -1256,14 +1306,18 @@
         ];
       } else if (this.patientqueryParams.allhosp == 2) {
         this.tableLabelhz = [
-          { label: "搴忓彿", width: "", prop: "patid" },
-          { label: "鎮h�呭悕绉�", width: "", prop: "name" },
+          { label: "灏辫瘖鏃ユ湡", width: "150", prop: "admitdate" },
+          { label: "鎮h��", width: "", prop: "name" },
+          { label: "韬唤璇�", width: "200", prop: "idcardno" },
+          { label: "鐢佃瘽鍙风爜", width: "180", prop: "telcode" },
           { label: "鎬у埆", width: "", prop: "sex" },
           { label: "骞撮緞", width: "", prop: "age" },
-          { label: "璇婃柇", width: "", prop: "diagname" },
-          { label: "灏辫瘖绉戝", width: "", prop: "deptName" },
-          { label: "鍏ラ櫌鏃ユ湡", width: "", prop: "inhosptime" },
-          { label: "鍒涘缓浜�", width: "", prop: "createBy" },
+          { label: "鐢佃瘽", width: "180", prop: "telcode" },
+          { label: "鍑洪櫌澶╂暟", width: "", prop: "endDay" },
+          { label: "璐d换鎶ゅ+", width: "", prop: "nurseName" },
+          { label: "鍖荤敓", width: "", prop: "drname" },
+          { label: "绉戝", width: "180", prop: "dept" },
+          { label: "鐥呭尯", width: "150", prop: "leavehospitaldistrictname" },
         ];
       }
       if (this.allpids[0]) {
@@ -1271,33 +1325,26 @@
       } else {
         this.patientqueryParams.pids = null;
       }
-      // 绫诲瀷鍒ゆ柇
-      if (this.patientqueryParams.allhosp == 1) {
-        this.patientqueryParams.cry = 1;
-      } else if (this.patientqueryParams.allhosp == 4) {
-        this.patientqueryParams.cry = 0;
-        this.patientqueryParams.allhosp = "1";
-      }
-      if (this.patientqueryParams.searchscope == 1) {
-        this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
-          (obj) => obj.deptCode
-        );
+      if (this.patientqueryParams.allhosp == 4) {
+        this.patientqueryParams.hospitaldistrictcodes = [];
+        this.patientqueryParams.deptcodes = [];
+      } else if (this.patientqueryParams.allhosp == 1) {
+        this.patientqueryParams.deptcodes =
+          this.patientqueryParams.leaveldeptcodes;
+        this.patientqueryParams.hospitaldistrictcodes =
+          this.patientqueryParams.leavehospitaldistrictcodes;
         this.patientqueryParams.leavehospitaldistrictcodes = [];
-      } else if (this.patientqueryParams.searchscope == 2) {
-        this.patientqueryParams.leavehospitaldistrictcodes =
-          store.getters.belongWards.map((obj) => obj.districtCode);
         this.patientqueryParams.leaveldeptcodes = [];
-      } else {
-        this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
-          (obj) => obj.deptCode
-        );
-        this.patientqueryParams.leavehospitaldistrictcodes =
-          store.getters.belongWards.map((obj) => obj.districtCode);
       }
 
-      getTaskpatient(this.patientqueryParams).then((response) => {
+      getTaskpatientQC(this.patientqueryParams).then((response) => {
         console.log(response);
         this.patientuserList = response.rows;
+        this.patientuserList.forEach((item) => {
+          if (item.endtime) {
+            item.endDay = this.daysBetween(item.endtime);
+          }
+        });
         this.patienttotal = response.total;
         this.loading = false;
         this.Restorecheck();
@@ -1309,9 +1356,8 @@
     handleExport() {},
 
     // 閫夋嫨鎮h�呰〃鏁版嵁
-    handleSelectionChange(selection, type) {
-      console.log("澶氶�夋偅鑰�");
-      this.SelectPatientslist = selection;
+    handleSelectionChange(selection) {
+      this.SelectPatientslist = structuredClone(selection);
       this.multiple = !selection.length;
 
       // 璧嬪�肩粰鏁翠綋閫変腑鏁扮粍
@@ -1320,13 +1366,22 @@
         if (!isExist) {
           item.isoperation = 1;
           item.patid = item.id;
-          if (item.idcardno) {
-            item.sfzh = item.idcardno;
+          item.hospType = this.patientqueryParams.allhosp;
+          item.sfzh = item.idcardno;
+          item.deptCode = item.deptcode;
+          item.deptName = item.dept;
+          item.admindate = item.inhosptime;
+          item.diagname = item.leavediagname;
+          item.sfzh = item.idcardno;
+          if (this.patientqueryParams.allhosp == 6) {
+            item.patfrom = 1;
           }
-          if (type) {
-            item.hospType = type;
-          } else {
-            item.hospType = this.patientqueryParams.allhosp;
+          if (this.patientqueryParams.allhosp == 1) {
+            item.visittime = item.endtime;
+          } else if (this.patientqueryParams.allhosp == 4) {
+            item.visittime = item.starttime;
+          } else if (this.patientqueryParams.allhosp == 2) {
+            item.visittime = item.admitdate;
           }
           this.overallCase.push(item);
           this.form.patTaskRelevances.push(item);
@@ -1422,6 +1477,7 @@
               : [];
             this.overallCase = this.form.patTaskRelevances.concat();
             this.checkList = this.form.preachform.split(",");
+            this.selectedOrder = this.form.preachformList;
             console.log(this.form.showDate, "this.form");
             if (this.form.daytime) this.daytime = this.form.showDate.split(",");
             console.log(this.newadd, "渚濈収");
@@ -1448,6 +1504,11 @@
           }
         });
       }
+    },
+    checkSelectionChange(selectedValues, selectedOrder) {
+      this.selectedOrder = selectedValues;
+      console.log("褰撳墠閫変腑:", selectedValues);
+      console.log("閫変腑椤哄簭:", selectedOrder);
     },
     // 渚濈収鏂板鏃跺鐞�
     neWaddfn() {
@@ -1581,6 +1642,7 @@
       TaskQuestioncomit(this.Tasktemplate).then((response) => {
         console.log(response);
         this.previewtf = false;
+        this.drawermb =false;
         this.form.templateid = response.data;
         this.form.libtemplateid = this.libId;
         this.form.templatename = this.libName;
@@ -1839,7 +1901,7 @@
   }
 }
 .button-textsc {
-  color: #3664D9;
+  color: #3664d9;
 }
 .button-textxg {
   color: #de7897;
diff --git a/src/views/patient/propaganda/particty.vue b/src/views/patient/propaganda/particty.vue
index 67e3acd..70b06f1 100644
--- a/src/views/patient/propaganda/particty.vue
+++ b/src/views/patient/propaganda/particty.vue
@@ -999,7 +999,6 @@
         { label: "鐢佃瘽鍙风爜", width: "180", prop: "telcode" },
         { label: "鎬у埆", width: "", prop: "sex" },
         { label: "骞撮緞", width: "", prop: "age" },
-        { label: "鐢佃瘽", width: "180", prop: "telcode" },
         { label: "鍑洪櫌澶╂暟", width: "", prop: "endDay" },
         { label: "璐d换鎶ゅ+", width: "", prop: "nurseName" },
         { label: "涓绘不鍖荤敓", width: "", prop: "drname" },
diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue
index 7647fae..fe833bd 100644
--- a/src/views/sfstatistics/percentage/index.vue
+++ b/src/views/sfstatistics/percentage/index.vue
@@ -126,456 +126,472 @@
                 >
               </el-col>
             </el-form>
-            <el-table
-              v-loading="loading"
-              :data="userList"
-              :border="true"
-              @selection-change="handleSelectionChange"
-              @expand-change="handleRowClick"
-              :row-key="getRowKey"
-              :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"
-                  >
-                    <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"
+            <div class="your-table-container">
+              <el-table
+                v-loading="loading"
+                :data="userList"
+                :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>
+                      <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>
-                    <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="闇�闅忚"
+                        label="鏃犻渶闅忚浜烘"
                         align="center"
-                        key="needFollowUp"
-                        prop="needFollowUp"
+                        width="100"
+                        key="nonFollowUp"
+                        prop="nonFollowUp"
                       >
                       </el-table-column>
                       <el-table-column
-                        label="寰呴殢璁�"
+                        label="搴旈殢璁夸汉娆�"
                         align="center"
-                        key="pendingFollowUp"
-                        prop="pendingFollowUp"
+                        width="100"
+                        key="followUpNeeded"
+                        prop="followUpNeeded"
                       >
                       </el-table-column>
-                      <el-table-column
-                        label="闅忚鎴愬姛"
-                        align="center"
-                        key="followUpSuccess"
-                        prop="followUpSuccess"
+                      <el-table-column align="center" label="棣栨鍑洪櫌闅忚">
+                        <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>
+                        <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>
+                        <el-table-column
+                          label="闅忚鐜�"
+                          align="center"
+                          width="120"
+                          key="followUpRate"
+                          prop="followUpRate"
+                        >
+                          <!-- <template slot-scope="scope">
+                      <span
+                        >{{
+                          (Number(scope.row.followUpRate) * 100).toFixed(2)
+                        }}%</span
                       >
+                    </template> -->
+                        </el-table-column>
+                        <el-table-column
+                          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
+                            >
+                          </template>
+                        </el-table-column>
+                        <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>
+                        <el-table-column
+                          label="寰俊"
+                          align="center"
+                          key="weChat"
+                          prop="weChat"
+                        >
+                        </el-table-column>
                       </el-table-column>
-                      <el-table-column
-                        label="闅忚澶辫触"
-                        align="center"
-                        key="followUpFail"
-                        prop="followUpFail"
+                      <el-table-column align="center" label="鍐嶆鍑洪櫌闅忚">
+                        <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>
+                        <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>
+                        <el-table-column
+                          label="闅忚鐜�"
+                          align="center"
+                          width="120"
+                          key="followUpRateAgain"
+                          prop="followUpRateAgain"
+                        >
+                          <!-- <template slot-scope="scope">
+                      <span
+                        >{{
+                          (Number(scope.row.FollowUpRateAgain) * 100).toFixed(2)
+                        }}%</span
                       >
+                    </template> -->
+                        </el-table-column>
+                        <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>
+                        <el-table-column
+                          label="寰俊"
+                          align="center"
+                          key="weChatAgain"
+                          prop="weChatAgain"
+                        >
+                        </el-table-column>
                       </el-table-column>
-                      <el-table-column
-                        label="闅忚鐜�"
-                        align="center"
-                        width="120"
-                        key="followUpRate"
-                        prop="followUpRate"
-                      >
-                        <!-- <template slot-scope="scope">
-                    <span
-                      >{{
-                        (Number(scope.row.followUpRate) * 100).toFixed(2)
-                      }}%</span
-                    >
-                  </template> -->
-                      </el-table-column>
-                      <el-table-column
-                        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
-                          >
-                        </template>
-                      </el-table-column>
-                      <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>
-                      <el-table-column
-                        label="寰俊"
-                        align="center"
-                        key="weChat"
-                        prop="weChat"
-                      >
-                      </el-table-column>
-                    </el-table-column>
-                    <el-table-column align="center" label="鍐嶆鍑洪櫌闅忚">
-                      <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>
-                      <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>
-                      <el-table-column
-                        label="闅忚鐜�"
-                        align="center"
-                        width="120"
-                        key="followUpRateAgain"
-                        prop="followUpRateAgain"
-                      >
-                        <!-- <template slot-scope="scope">
-                    <span
-                      >{{
-                        (Number(scope.row.FollowUpRateAgain) * 100).toFixed(2)
-                      }}%</span
-                    >
-                  </template> -->
-                      </el-table-column>
-                      <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>
-                      <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"
-              />
-              <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>
-              <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>
-                <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>
-                <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"
-                >
-                  <!-- <template slot-scope="scope">
-                    <span
-                      >{{
-                        (Number(scope.row.followUpRate) * 100).toFixed(2)
-                      }}%</span
-                    >
-                  </template> -->
-                </el-table-column>
-                <el-table-column
-                  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-table>
                   </template>
                 </el-table-column>
                 <el-table-column
-                  label="浜哄伐"
+                  label="鍑洪櫌鐥呭尯"
                   align="center"
-                  key="manual"
-                  prop="manual"
-                >
-                </el-table-column>
+                  sortable
+                  key="leavehospitaldistrictname"
+                  prop="leavehospitaldistrictname"
+                  width="150"
+                  :show-overflow-tooltip="true"
+                />
                 <el-table-column
-                  label="鐭俊"
+                  label="绉戝"
                   align="center"
-                  key="sms"
-                  prop="sms"
-                >
-                </el-table-column>
+                  key="deptname"
+                  prop="deptname"
+                  :show-overflow-tooltip="true"
+                />
                 <el-table-column
-                  label="寰俊"
+                  label="鍑洪櫌浜烘"
                   align="center"
-                  key="weChat"
-                  prop="weChat"
+                  key="dischargeCount"
+                  prop="dischargeCount"
                 >
                 </el-table-column>
-              </el-table-column>
-              <el-table-column align="center" label="鍐嶆鍑洪櫌闅忚">
-                <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>
-                <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>
-                <el-table-column
-                  label="闅忚鐜�"
-                  align="center"
-                  width="120"
-                  key="followUpRateAgain"
-                  prop="followUpRateAgain"
-                >
-                  <!-- <template slot-scope="scope">
-                    <span
-                      >{{
-                        (Number(scope.row.FollowUpRateAgain) * 100).toFixed(2)
-                      }}%</span
-                    >
-                  </template> -->
-                </el-table-column>
-                <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>
-                <el-table-column
-                  label="寰俊"
-                  align="center"
-                  key="weChatAgain"
-                  prop="weChatAgain"
-                >
-                </el-table-column>
-              </el-table-column>
-              <el-table-column v-if="orgname=='涓芥按甯備腑鍖婚櫌'" align="center" label="闅忚鎯呭喌">
 
                 <el-table-column
-                  label="姝e父璇煶"
+                  label="鏃犻渶闅忚浜烘"
                   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"
+                  key="nonFollowUp"
+                  prop="nonFollowUp"
                 >
                 </el-table-column>
-              </el-table-column>
-            </el-table>
+                <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>
+                  <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>
+                  <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"
+                  >
+                    <!-- <template slot-scope="scope">
+                      <span
+                        >{{
+                          (Number(scope.row.followUpRate) * 100).toFixed(2)
+                        }}%</span
+                      >
+                    </template> -->
+                  </el-table-column>
+                  <el-table-column
+                    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
+                      >
+                    </template>
+                  </el-table-column>
+                  <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>
+                  <el-table-column
+                    label="寰俊"
+                    align="center"
+                    key="weChat"
+                    prop="weChat"
+                  >
+                  </el-table-column>
+                </el-table-column>
+                <el-table-column align="center" label="鍐嶆鍑洪櫌闅忚">
+                  <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>
+                  <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>
+                  <el-table-column
+                    label="闅忚鐜�"
+                    align="center"
+                    width="120"
+                    key="followUpRateAgain"
+                    prop="followUpRateAgain"
+                  >
+                    <!-- <template slot-scope="scope">
+                      <span
+                        >{{
+                          (Number(scope.row.FollowUpRateAgain) * 100).toFixed(2)
+                        }}%</span
+                      >
+                    </template> -->
+                  </el-table-column>
+                  <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>
+                  <el-table-column
+                    label="寰俊"
+                    align="center"
+                    key="weChatAgain"
+                    prop="weChatAgain"
+                  >
+                  </el-table-column>
+                </el-table-column>
+                <el-table-column
+                  v-if="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>
+            </div>
 
             <!-- <pagination
               v-show="total > 0"
@@ -883,7 +899,7 @@
     return {
       topactiveName: "Local", //椤堕儴閫夋嫨
       activeName: "first", //渚ц竟閫夋嫨
-      orgname:'',
+      orgname: "",
       expands: [],
       // 閬僵灞�
       loading: false,
@@ -1003,7 +1019,6 @@
     this.getDeptTree();
     this.getList();
     this.orgname = localStorage.getItem("orgname");
-
   },
 
   methods: {
@@ -1064,6 +1079,162 @@
       } else {
         this.expands = [this.getRowKey(row)];
       }
+    },
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = "鍚堣";
+          return;
+        }
+         if (index === 1||index === 2) {
+          sums[index] = "/";
+          return;
+        }
+
+        // 瀵圭櫨鍒嗘瘮瀛楁鐗规畩澶勭悊 - 鍙栧钩鍧囧��
+        if (
+          column.property === "followUpRate" ||
+          column.property === "rate" ||
+          column.property === "followUpRateAgain"
+        ) {
+          // 鎻愬彇鎵�鏈夋湁鏁堢櫨鍒嗘瘮鍊煎苟杞崲涓哄皬鏁�
+          const percentageValues = data
+            .map((item) => {
+              const value = item[column.property];
+              if (!value || value === "-" || value === "0%") return null;
+
+              // 澶勭悊甯︾櫨鍒嗗彿鐨勬暟鎹�
+              if (typeof value === "string" && value.includes("%")) {
+                // 鍘婚櫎鐧惧垎鍙峰苟杞崲涓哄皬鏁�
+                const numValue = parseFloat(value.replace("%", "")) / 100;
+                return isNaN(numValue) ? null : numValue;
+              } else {
+                // 澶勭悊宸茬粡鏄皬鏁扮殑鏁版嵁
+                const numValue = parseFloat(value);
+                return isNaN(numValue) ? null : numValue;
+              }
+            })
+            .filter((value) => value !== null && value !== 0); // 杩囨护鎺塶ull鍜�0鍊�
+
+          if (percentageValues.length > 0) {
+            const average =
+              percentageValues.reduce((sum, value) => sum + value, 0) /
+              percentageValues.length;
+            sums[index] = (average * 100).toFixed(2) + "%";
+          } else {
+            sums[index] = "0.00%";
+          }
+        } else {
+          // 鏅�氭暟瀛楀瓧娈� - 姹傚拰
+          const values = data.map((item) => {
+            const value = item[column.property];
+            if (value === "-" || value === "" || value === null) return 0;
+            return Number(value) || 0;
+          });
+
+          if (!values.every((value) => isNaN(value))) {
+            sums[index] = values.reduce((prev, curr) => prev + curr, 0);
+            sums[index] = this.formatNumber(sums[index]);
+          } else {
+            sums[index] = "-";
+          }
+        }
+      });
+
+      return sums;
+    },
+
+    // 鍐呴儴琛ㄦ牸鍚堣琛岃绠楁柟娉�
+    getInnerSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = "灏忚";
+          return;
+        }
+
+        if (column.property === "drname" || column.property === "deptname") {
+          sums[index] = "-";
+          return;
+        }
+
+        // 瀵圭櫨鍒嗘瘮瀛楁鐗规畩澶勭悊 - 鍙栧钩鍧囧��
+        if (column.property === "followUpRate" || column.property === "rate") {
+          // 鎻愬彇鎵�鏈夋湁鏁堢櫨鍒嗘瘮鍊煎苟杞崲涓哄皬鏁�
+          const percentageValues = data
+            .map((item) => {
+              const value = item[column.property];
+              if (!value || value === "-" || value === "0%") return null;
+
+              // 澶勭悊甯︾櫨鍒嗗彿鐨勬暟鎹�
+              if (typeof value === "string" && value.includes("%")) {
+                // 鍘婚櫎鐧惧垎鍙峰苟杞崲涓哄皬鏁�
+                const numValue = parseFloat(value.replace("%", "")) / 100;
+                return isNaN(numValue) ? null : numValue;
+              } else {
+                // 澶勭悊宸茬粡鏄皬鏁扮殑鏁版嵁
+                const numValue = parseFloat(value);
+                return isNaN(numValue) ? null : numValue;
+              }
+            })
+            .filter((value) => value !== null && value !== 0);
+
+          if (percentageValues.length > 0) {
+            const average =
+              percentageValues.reduce((sum, value) => sum + value, 0) /
+              percentageValues.length;
+            sums[index] = (average * 100).toFixed(2) + "%";
+          } else {
+            sums[index] = "0.00%";
+          }
+        } else {
+          // 鏅�氭暟瀛楀瓧娈� - 姹傚拰
+          const values = data.map((item) => {
+            const value = item[column.property];
+            if (value === "-" || value === "" || value === null) return 0;
+            return Number(value) || 0;
+          });
+
+          if (!values.every((value) => isNaN(value))) {
+            sums[index] = values.reduce((prev, curr) => prev + curr, 0);
+            sums[index] = this.formatNumber(sums[index]);
+          } else {
+            sums[index] = "-";
+          }
+        }
+      });
+
+      return sums;
+    },
+
+    // 杈呭姪鏂规硶锛氭彁鍙栫櫨鍒嗘瘮鏁板��
+    extractPercentageValue(value) {
+      if (!value) return null;
+
+      if (typeof value === "string") {
+        // 澶勭悊甯︾櫨鍒嗗彿鐨勫瓧绗︿覆
+        if (value.includes("%")) {
+          const num = parseFloat(value.replace("%", ""));
+          return isNaN(num) ? null : num / 100;
+        }
+        // 澶勭悊绾暟瀛楀瓧绗︿覆
+        const num = parseFloat(value);
+        return isNaN(num) ? null : num;
+      }
+
+      // 澶勭悊鏁板瓧绫诲瀷
+      return typeof value === "number" ? value : null;
+    },
+
+    // 鏁板瓧鏍煎紡鍖栨柟娉�
+    formatNumber(num) {
+      if (isNaN(num)) return "-";
+      return Number.isInteger(num) ? num.toString() : num.toFixed(0);
     },
     /** 淇敼鏍囩 */
     handleUpdate(row) {
@@ -1325,298 +1496,302 @@
     },
 
     // 鍒濆鍖栭ゼ鍥�
-initPieChart() {
-  const echarts = require("echarts");
-  const pieDom = document.getElementById("pieChart");
-  if (!pieDom) return;
+    initPieChart() {
+      const echarts = require("echarts");
+      const pieDom = document.getElementById("pieChart");
+      if (!pieDom) return;
 
-  if (this.pieChart) {
-    this.pieChart.dispose();
-  }
-
-  this.pieChart = echarts.init(pieDom);
-
-  // 璁$畻楗煎浘鏁版嵁
-  const followUpData = {
-    pending: 0,
-    success: 0,
-    fail: 0,
-  };
-
-  this.userList.forEach((item) => {
-    followUpData.pending += item.pendingFollowUp || 0;
-    followUpData.success += item.followUpSuccess || 0;
-    followUpData.fail += item.followUpFail || 0;
-  });
-
-  // 浣跨敤鏇寸編瑙傜殑棰滆壊鏂规
-  const pieOption = {
-    title: {
-      text: "闅忚鐘舵�佸垎甯�",
-      left: "center",
-      textStyle: {
-        color: '#333',
-        fontSize: 16
+      if (this.pieChart) {
+        this.pieChart.dispose();
       }
-    },
-    tooltip: {
-      trigger: "item",
-      formatter: "{a} <br/>{b}: {c} ({d}%)",
-    },
-    legend: {
-      orient: "vertical",
-      left: "left",
-      data: ["寰呴殢璁�", "闅忚鎴愬姛", "闅忚澶辫触"],
-      textStyle: {
-        color: '#666'
-      }
-    },
-    color: ['#FF9D4D', '#36B37E', '#FF5C5C'], // 鏂扮殑閰嶈壊鏂规
-    series: [
-      {
-        name: "闅忚鐘舵��",
-        type: "pie",
-        radius: ["40%", "70%"],
-        avoidLabelOverlap: true,
-        itemStyle: {
-          borderRadius: 10,
-          borderColor: "#fff",
-          borderWidth: 2
-        },
-        label: {
-          show: true,
-          formatter: "{b}: {c} ({d}%)",
-          color: '#333'
-        },
-        emphasis: {
-          label: {
-            show: true,
-            fontSize: "18",
-            fontWeight: "bold"
+
+      this.pieChart = echarts.init(pieDom);
+
+      // 璁$畻楗煎浘鏁版嵁
+      const followUpData = {
+        pending: 0,
+        success: 0,
+        fail: 0,
+      };
+
+      this.userList.forEach((item) => {
+        followUpData.pending += item.pendingFollowUp || 0;
+        followUpData.success += item.followUpSuccess || 0;
+        followUpData.fail += item.followUpFail || 0;
+      });
+
+      // 浣跨敤鏇寸編瑙傜殑棰滆壊鏂规
+      const pieOption = {
+        title: {
+          text: "闅忚鐘舵�佸垎甯�",
+          left: "center",
+          textStyle: {
+            color: "#333",
+            fontSize: 16,
           },
-          itemStyle: {
-            shadowBlur: 10,
-            shadowOffsetX: 0,
-            shadowColor: 'rgba(0, 0, 0, 0.5)'
-          }
         },
-        data: [
-          {
-            value: followUpData.pending,
-            name: "寰呴殢璁�"
+        tooltip: {
+          trigger: "item",
+          formatter: "{a} <br/>{b}: {c} ({d}%)",
+        },
+        legend: {
+          orient: "vertical",
+          left: "left",
+          data: ["寰呴殢璁�", "闅忚鎴愬姛", "闅忚澶辫触"],
+          textStyle: {
+            color: "#666",
           },
+        },
+        color: ["#FF9D4D", "#36B37E", "#FF5C5C"], // 鏂扮殑閰嶈壊鏂规
+        series: [
           {
-            value: followUpData.success,
-            name: "闅忚鎴愬姛"
-          },
-          {
-            value: followUpData.fail,
-            name: "闅忚澶辫触"
-          }
-        ]
-      }
-    ]
-  };
-
-  this.pieChart.setOption(pieOption);
-  window.addEventListener("resize", this.resizePieChart);
-},
-
-// 鍒濆鍖栨煴鐘舵姌绾垮浘
-initBarLineChart() {
-  const echarts = require("echarts");
-  const barDom = document.getElementById("barLineChart");
-  if (!barDom) return;
-
-  if (this.barLineChart) {
-    this.barLineChart.dispose();
-  }
-
-  this.barLineChart = echarts.init(barDom);
-
-  // 鍑嗗鏁版嵁
-  const categories = this.userList.map(
-    (item) => item.leavehospitaldistrictname || item.deptname
-  );
-
-  const dischargeData = this.userList.map(
-    (item) => item.dischargeCount || 0
-  );
-  const followUpData = this.userList.map(
-    (item) => item.followUpNeeded || 0
-  );
-
-  // 鏂板涓ゆ潯鎶樼嚎鏁版嵁
- const followUpRateData = this.userList.map(item => {
-    if (!item.followUpRate) return 0;
-    // 鍘绘帀鐧惧垎鍙峰苟杞负鏁板瓧
-    const rateStr = String(item.followUpRate).replace('%', '');
-    return parseFloat(rateStr) || 0;
-  });
-
-  const timelyRateData = this.userList.map(item =>
-    item.rate ? (Number(item.rate) * 100).toFixed(2) : 0
-  );
-
-  const option = {
-    title: {
-      text: "绉戝/鐥呭尯闅忚瓒嬪娍",
-      left: "center",
-      textStyle: {
-        color: '#333',
-        fontSize: 16
-      }
-    },
-    tooltip: {
-      trigger: "axis",
-      axisPointer: {
-        type: "cross",
-        crossStyle: {
-          color: "#999",
-        },
-      },
-    },
-    legend: {
-      data: ["鍑洪櫌浜烘", "搴旈殢璁夸汉娆�", "闅忚鐜�(%)", "鍙婃椂鐜�(%)"],
-      top: "bottom",
-      textStyle: {
-        color: '#666'
-      }
-    },
-    color: ['#5470C6', '#91CC75', '#EE6666', '#9A60B4'], // 鏂板绱壊鐢ㄤ簬鍙婃椂鐜�
-    xAxis: {
-      type: "category",
-      data: categories,
-      axisLabel: {
-        interval: 0,
-        rotate: 30,
-        color: '#666'
-      },
-      axisLine: {
-        lineStyle: {
-          color: '#ddd'
-        }
-      }
-    },
-    yAxis: [
-      {
-        type: "value",
-        name: "浜烘",
-        min: 0,
-        axisLabel: {
-          color: '#666'
-        },
-        axisLine: {
-          lineStyle: {
-            color: '#ddd'
-          }
-        },
-        splitLine: {
-          lineStyle: {
-            color: '#f0f0f0'
-          }
-        }
-      },
-      {
-        type: "value",
-        name: "鐧惧垎姣�(%)",
-        min: 0,
-        max: 100,
-        axisLabel: {
-          color: '#666',
-          formatter: '{value}%'
-        },
-        axisLine: {
-          lineStyle: {
-            color: '#ddd'
-          }
-        },
-        splitLine: {
-          show: false
-        }
-      }
-    ],
-    series: [
-      {
-        name: "鍑洪櫌浜烘",
-        type: "bar",
-        barWidth: "25%",
-        data: dischargeData,
-        itemStyle: {
-          borderRadius: [4, 4, 0, 0]
-        }
-      },
-      {
-        name: "搴旈殢璁夸汉娆�",
-        type: "bar",
-        barWidth: "25%",
-        data: followUpData,
-        itemStyle: {
-          borderRadius: [4, 4, 0, 0]
-        }
-      },
-      {
-        name: "闅忚鐜�(%)",
-        type: "line",
-        yAxisIndex: 1,
-        data: followUpRateData,
-        symbolSize: 8,
-        lineStyle: {
-          width: 3
-        },
-        markLine: {
-          silent: true,
-          data: [{
-            yAxis: 80,
-            lineStyle: {
-              color: '#EE6666',
-              type: 'dashed'
+            name: "闅忚鐘舵��",
+            type: "pie",
+            radius: ["40%", "70%"],
+            avoidLabelOverlap: true,
+            itemStyle: {
+              borderRadius: 10,
+              borderColor: "#fff",
+              borderWidth: 2,
             },
-            // label: {
-            //   position: 'end',
-            //   formatter: '鐩爣80%'
-            // }
-          }]
-        }
-      },
-      {
-        name: "鍙婃椂鐜�(%)",
-        type: "line",
-        yAxisIndex: 1,
-        data: timelyRateData,
-        symbolSize: 8,
-        lineStyle: {
-          width: 3,
-          type: 'dotted' // 浣跨敤铏氱嚎鍖哄垎
-        },
-        markLine: {
-          silent: true,
-          data: [{
-            yAxis: 90,
-            lineStyle: {
-              color: '#9A60B4',
-              type: 'dashed'
+            label: {
+              show: true,
+              formatter: "{b}: {c} ({d}%)",
+              color: "#333",
             },
-            // label: {
-            //   position: 'end',
-            //   formatter: '鐩爣90%'
-            // }
-          }]
-        }
-      }
-    ],
-    grid: {
-      top: '15%',
-      left: '3%',
-      right: '4%',
-      bottom: '15%',
-      containLabel: true
-    }
-  };
+            emphasis: {
+              label: {
+                show: true,
+                fontSize: "18",
+                fontWeight: "bold",
+              },
+              itemStyle: {
+                shadowBlur: 10,
+                shadowOffsetX: 0,
+                shadowColor: "rgba(0, 0, 0, 0.5)",
+              },
+            },
+            data: [
+              {
+                value: followUpData.pending,
+                name: "寰呴殢璁�",
+              },
+              {
+                value: followUpData.success,
+                name: "闅忚鎴愬姛",
+              },
+              {
+                value: followUpData.fail,
+                name: "闅忚澶辫触",
+              },
+            ],
+          },
+        ],
+      };
 
-  this.barLineChart.setOption(option);
-  window.addEventListener("resize", this.resizeBarLineChart);
-},
+      this.pieChart.setOption(pieOption);
+      window.addEventListener("resize", this.resizePieChart);
+    },
+
+    // 鍒濆鍖栨煴鐘舵姌绾垮浘
+    initBarLineChart() {
+      const echarts = require("echarts");
+      const barDom = document.getElementById("barLineChart");
+      if (!barDom) return;
+
+      if (this.barLineChart) {
+        this.barLineChart.dispose();
+      }
+
+      this.barLineChart = echarts.init(barDom);
+
+      // 鍑嗗鏁版嵁
+      const categories = this.userList.map(
+        (item) => item.leavehospitaldistrictname || item.deptname
+      );
+
+      const dischargeData = this.userList.map(
+        (item) => item.dischargeCount || 0
+      );
+      const followUpData = this.userList.map(
+        (item) => item.followUpNeeded || 0
+      );
+
+      // 鏂板涓ゆ潯鎶樼嚎鏁版嵁
+      const followUpRateData = this.userList.map((item) => {
+        if (!item.followUpRate) return 0;
+        // 鍘绘帀鐧惧垎鍙峰苟杞负鏁板瓧
+        const rateStr = String(item.followUpRate).replace("%", "");
+        return parseFloat(rateStr) || 0;
+      });
+
+      const timelyRateData = this.userList.map((item) =>
+        item.rate ? (Number(item.rate) * 100).toFixed(2) : 0
+      );
+
+      const option = {
+        title: {
+          text: "绉戝/鐥呭尯闅忚瓒嬪娍",
+          left: "center",
+          textStyle: {
+            color: "#333",
+            fontSize: 16,
+          },
+        },
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            type: "cross",
+            crossStyle: {
+              color: "#999",
+            },
+          },
+        },
+        legend: {
+          data: ["鍑洪櫌浜烘", "搴旈殢璁夸汉娆�", "闅忚鐜�(%)", "鍙婃椂鐜�(%)"],
+          top: "bottom",
+          textStyle: {
+            color: "#666",
+          },
+        },
+        color: ["#5470C6", "#91CC75", "#EE6666", "#9A60B4"], // 鏂板绱壊鐢ㄤ簬鍙婃椂鐜�
+        xAxis: {
+          type: "category",
+          data: categories,
+          axisLabel: {
+            interval: 0,
+            rotate: 30,
+            color: "#666",
+          },
+          axisLine: {
+            lineStyle: {
+              color: "#ddd",
+            },
+          },
+        },
+        yAxis: [
+          {
+            type: "value",
+            name: "浜烘",
+            min: 0,
+            axisLabel: {
+              color: "#666",
+            },
+            axisLine: {
+              lineStyle: {
+                color: "#ddd",
+              },
+            },
+            splitLine: {
+              lineStyle: {
+                color: "#f0f0f0",
+              },
+            },
+          },
+          {
+            type: "value",
+            name: "鐧惧垎姣�(%)",
+            min: 0,
+            max: 100,
+            axisLabel: {
+              color: "#666",
+              formatter: "{value}%",
+            },
+            axisLine: {
+              lineStyle: {
+                color: "#ddd",
+              },
+            },
+            splitLine: {
+              show: false,
+            },
+          },
+        ],
+        series: [
+          {
+            name: "鍑洪櫌浜烘",
+            type: "bar",
+            barWidth: "25%",
+            data: dischargeData,
+            itemStyle: {
+              borderRadius: [4, 4, 0, 0],
+            },
+          },
+          {
+            name: "搴旈殢璁夸汉娆�",
+            type: "bar",
+            barWidth: "25%",
+            data: followUpData,
+            itemStyle: {
+              borderRadius: [4, 4, 0, 0],
+            },
+          },
+          {
+            name: "闅忚鐜�(%)",
+            type: "line",
+            yAxisIndex: 1,
+            data: followUpRateData,
+            symbolSize: 8,
+            lineStyle: {
+              width: 3,
+            },
+            markLine: {
+              silent: true,
+              data: [
+                {
+                  yAxis: 80,
+                  lineStyle: {
+                    color: "#EE6666",
+                    type: "dashed",
+                  },
+                  // label: {
+                  //   position: 'end',
+                  //   formatter: '鐩爣80%'
+                  // }
+                },
+              ],
+            },
+          },
+          {
+            name: "鍙婃椂鐜�(%)",
+            type: "line",
+            yAxisIndex: 1,
+            data: timelyRateData,
+            symbolSize: 8,
+            lineStyle: {
+              width: 3,
+              type: "dotted", // 浣跨敤铏氱嚎鍖哄垎
+            },
+            markLine: {
+              silent: true,
+              data: [
+                {
+                  yAxis: 90,
+                  lineStyle: {
+                    color: "#9A60B4",
+                    type: "dashed",
+                  },
+                  // label: {
+                  //   position: 'end',
+                  //   formatter: '鐩爣90%'
+                  // }
+                },
+              ],
+            },
+          },
+        ],
+        grid: {
+          top: "15%",
+          left: "3%",
+          right: "4%",
+          bottom: "15%",
+          containLabel: true,
+        },
+      };
+
+      this.barLineChart.setOption(option);
+      window.addEventListener("resize", this.resizeBarLineChart);
+    },
 
     // 鍥捐〃鍝嶅簲寮忚皟鏁存柟娉�
     resizePieChart() {
@@ -1727,6 +1902,41 @@
   text-align: left;
   font-size: 20px;
 }
+// 缇庡寲鍚堣琛屾牱寮�
+::v-deep .el-table__footer {
+  .el-table__cell {
+    background-color: #f5f7fa;
+    font-weight: 600;
+    color: #409eff;
+
+    .cell {
+      font-weight: 600;
+      color: #409eff;
+    }
+  }
+}
+
+// 鍐呴儴琛ㄦ牸鍚堣琛屾牱寮�
+::v-deep .inner-table .el-table__footer {
+  .el-table__cell {
+    background-color: #ecf5ff;
+    font-weight: 500;
+    color: #67c23a;
+
+    .cell {
+      font-weight: 500;
+      color: #67c23a;
+    }
+  }
+}
+
+// 鐧惧垎姣斿瓧娈电壒娈婃牱寮�
+.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;
+}
 
 .leftvlue {
   //   display: flex;
diff --git a/vue.config.js b/vue.config.js
index e6f390f..5f97768 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -37,8 +37,8 @@
       [process.env.VUE_APP_BASE_API]: {
         // target: `https://www.health-y.cn/lssf`,
         // target: `http://192.168.100.129:8095`,
-        target: `http://192.168.100.10:8096`,
-        // target:`http://localhost:8095`,
+        // target: `http://192.168.100.10:8096`,
+        target:`http://localhost:8095`,
         // target:`http://35z1t16164.qicp.vip`,
         // target: `http://192.168.100.193:8095`,
         // target: `http://192.168.101.166:8093`,

--
Gitblit v1.9.3