From 94ce59bb6e94bd5e78f32d921ce5c14d641dabc8 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期三, 15 四月 2026 09:04:45 +0800
Subject: [PATCH] 测试完成

---
 src/views/sfstatistics/percentage/index.vue | 1236 +++++++++++++++-------------------------------------------
 1 files changed, 327 insertions(+), 909 deletions(-)

diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue
index 3d34079..911156a 100644
--- a/src/views/sfstatistics/percentage/index.vue
+++ b/src/views/sfstatistics/percentage/index.vue
@@ -1,951 +1,369 @@
 <template>
-  <div class="Questionnairemanagement">
-    <!-- 宸︿晶鏍� -->
-    <!-- <div class="sidecolumn">
-      <div class="sidecolumn-top">
-        <div class="top-wj">鎮h�呰寖鍥�</div>
-      </div>
+  <div class="follow-up-statistics">
+    <!-- 鎼滅储琛ㄥ崟鍖哄煙 -->
+    <div class="search-section">
+      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px">
+        <el-form-item label="缁熻绫诲瀷" prop="userName">
+          <el-select v-model="queryParams.statisticaltype" placeholder="璇烽�夋嫨缁熻绫诲瀷">
+            <el-option v-for="item in Statisticallist" :key="item.value" :label="item.label" :value="item.value" />
+          </el-select>
+          <el-select
+            style="margin-left: 10px"
+            v-if="queryParams.statisticaltype == 1"
+            v-model="queryParams.leavehospitaldistrictcodes"
+            size="medium"
+            multiple
+            filterable
+            placeholder="璇烽�夋嫨鐥呭尯"
+          >
+            <el-option v-for="item in flatArrayhospit" :key="item.value" :label="item.label" :value="item.value" />
+          </el-select>
+          <el-select
+            v-else-if="queryParams.statisticaltype == 2"
+            v-model="queryParams.deptcodes"
+            size="medium"
+            multiple
+            filterable
+            placeholder="璇烽�夋嫨绉戝"
+          >
+            <el-option v-for="item in flatArraydept" :key="item.value" :label="item.label" :value="item.value" />
+          </el-select>
+        </el-form-item>
 
-      <div class="bottom-fl">
-        <el-tabs
-          tab-position="right"
-          v-model="activeName"
-          @tab-click="handleClick"
-        >
-          <el-tab-pane label="鍏ㄩ儴" name="first"></el-tab-pane>
-          <el-tab-pane label="浣忛櫌" name="bhospitalized"></el-tab-pane>
-          <el-tab-pane label="鍦ㄩ櫌" name="Inhospital"></el-tab-pane>
-          <el-tab-pane label="闂ㄨ瘖" name="outpatient"></el-tab-pane>
-          <el-tab-pane label="浣撴" name="physical"></el-tab-pane>
-        </el-tabs>
-      </div>
-    </div> -->
-    <!-- 鍙充晶鏁版嵁 -->
-    <div class="leftvlue">
-      <!-- <div class="leftvlue-top">
-        <el-tabs v-model="topactiveName" @tab-click="tophandleClick">
-          <el-tab-pane name="Local">
-            <span class="mulsz" slot="label">鎸夊嚭闄㈢梾鍖虹粺璁� </span>
-          </el-tab-pane>
-          <el-tab-pane name="sharing">
-            <span class="mulsz" slot="label">鎸夊嚭闄㈢瀹ょ粺璁� </span>
-          </el-tab-pane>
-        </el-tabs>
-      </div> -->
-      <div class="leftvlue-bg">
-        <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="鍖婚櫌" prop="userName">
-                <el-select v-model="queryParams.value1" placeholder="璇烽�夋嫨">
-                  <el-option
-                    v-for="item in options"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                  >
-                  </el-option>
-                </el-select>
-              </el-form-item> -->
-              <el-form-item label="鍑洪櫌鐥呭尯" prop="userName">
-                <!-- <el-select v-model="queryParams.leavehospitaldistrictcodes" placeholder="璇烽�夋嫨">
-                  <el-option
-                    v-for="item in flatArray"
-                    :key="item.deptCode"
-                    :label="item.label"
-                    :value="item.deptCode"
-                  >
-                  </el-option>
-                </el-select> -->
-                <el-select
-                  v-model="queryParams.leavehospitaldistrictcodes"
-                  size="medium"
-                  multiple
-                  filterable
-                  placeholder="璇烽�夋嫨鐥呭尯"
-                >
-                  <el-option
-                    v-for="item in flatArray"
-                    :key="item.deptCode"
-                    :label="item.label"
-                    :value="item.deptCode"
-                  >
-                  </el-option>
-                </el-select>
-              </el-form-item>
-              <!-- <el-form-item label="绠$悊鏂规" prop="userName">
-                <el-select v-model="queryParams.value3" placeholder="璇烽�夋嫨">
-                  <el-option
-                    v-for="item in options"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                  >
-                  </el-option>
-                </el-select>
-              </el-form-item> -->
-              <!-- <el-form-item label="鍑洪櫌鏃ユ湡" prop="userName">
-                <el-date-picker
-                  v-model="queryParams.valuetime1"
-                  align="right"
-                  type="date"
-                  placeholder="閫夋嫨鏃ユ湡"
-                  :picker-options="pickerOptionsa"
-                >
-                </el-date-picker>
-              </el-form-item> -->
-              <el-select
-                v-model="queryParams.serviceType"
-                multiple
-                placeholder="璇烽�夋嫨"
-              >
-                <el-option
-                  v-for="item in options"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                >
-                </el-option>
-              </el-select>
-              <el-form-item
-                label-width="200"
-                label="搴旈殢璁挎椂闂磋寖鍥�"
-                prop="userName"
-              >
-                <el-date-picker
-                  v-model="queryParams.dateRange"
-                  type="daterange"
-                  range-separator="鑷�"
-                  start-placeholder="寮�濮嬫棩鏈�"
-                  end-placeholder="缁撴潫鏃ユ湡"
-                >
-                </el-date-picker>
-              </el-form-item>
+        <el-form-item label="鏈嶅姟绫诲瀷" prop="userName">
+          <el-select v-model="queryParams.serviceType" multiple placeholder="璇烽�夋嫨">
+            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+          </el-select>
+        </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-form>
+        <el-form-item label-width="200" label="搴旈殢璁挎椂闂磋寖鍥�" prop="userName">
+          <el-date-picker
+            v-model="queryParams.dateRange"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            type="daterange"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+            :default-time="['00:00:00', '23:59:59']"
+          />
+        </el-form-item>
 
-            <el-row :gutter="10" class="mb8">
-              <el-col :span="1.5">
-                <el-button
-                  type="primary"
-                  plain
-                  icon="el-icon-plus"
-                  size="medium"
-                  @click="addladeltag"
-                  v-hasPermi="['system:user:add']"
-                  >鏂板</el-button
-                >
-              </el-col>
+        <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-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">
-                <div class="documentf">
-                  <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>
-            <!-- <right-toolbar
-          :showSearch.sync="showSearch"
-          @queryTable="getList"
-          :columns="columns"
-        ></right-toolbar> -->
-            <el-table
-              v-loading="loading"
-              :data="userList"
-              :border="true"
-              @selection-change="handleSelectionChange"
-            >
-              <el-table-column type="selection" width="50" align="center" />
-              <!-- <el-table-column
-                fixed
-                label="搴忓彿"
-                align="center"
-                key="tagid"
-                prop="tagid"
-                width="50"
-              /> -->
-              <el-table-column
-                fixed
-                label="鍑洪櫌鐥呭尯"
-                align="center"
-                key="leavehospitaldistrictname"
-                prop="leavehospitaldistrictname"
-                width="100"
-                :show-overflow-tooltip="true"
-              />
-              <el-table-column
-                label="鏈嶅姟鎬婚噺"
-                align="center"
-                key="serviceCount"
-                prop="serviceCount"
-              >
-                <template slot-scope="scope">
-                  <span
-                    >{{ scope.row.updateBy }}
-                    <p>{{ scope.row.serviceCount }}</p></span
-                  >
-                </template>
-              </el-table-column>
-
-              <el-table-column
-                label="涓嶆墽琛�"
-                align="center"
-                width="120"
-                key="bzxCount"
-                prop="bzxCount"
-              >
-              </el-table-column>
-              <el-table-column
-                label="搴旈殢璁块噺"
-                align="center"
-                key="ysfCount"
-                prop="ysfCount"
-              >
-              </el-table-column
-              ><el-table-column
-                label="鍙戦�佸け璐�"
-                align="center"
-                key="fssbCount"
-                prop="fssbCount"
-              >
-              </el-table-column
-              ><el-table-column
-                label="寰呴殢璁�"
-                align="center"
-                key="dfsCount"
-                prop="dfsCount"
-              >
-              </el-table-column
-              ><el-table-column
-                label="宸插彂閫�"
-                align="center"
-                key="yfsCount"
-                prop="yfsCount"
-              >
-              </el-table-column>
-              <el-table-column
-                label="宸插畬鎴�"
-                align="center"
-                key="ywcCount"
-                prop="ywcCount"
-              >
-              </el-table-column>
-              <el-table-column
-                label="闅忚瀹屾垚鐜�"
-                align="center"
-                width="120"
-                key="sfwcl"
-                prop="sfwcl"
-              >
-                <template slot-scope="scope">
-                  <span>{{ (Number(scope.row.sfwcl) * 100).toFixed(2) }}%</span>
-                </template>
-              </el-table-column>
-              <!-- <el-table-column
-                label="鍏紬鍙峰彂閫佹鏁�"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              >
-              </el-table-column>
-              <el-table-column
-                label="鍏紬鍙烽殢璁垮畬鎴愭暟"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              >
-              </el-table-column>
-              <el-table-column
-                label="鍏紬鍙烽殢璁垮畬鎴愮巼"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              >
-              </el-table-column> -->
-              <!-- <el-table-column
-                label="鐭俊鍙戦�佹鏁�"
-                align="center"
-                width="120"
-                key="dxfscs"
-                prop="dxfscs"
-              >
-              </el-table-column>
-              <el-table-column
-                label="鐭俊闅忚瀹屾垚鏁�"
-                align="center"
-                width="120"
-                key="dxsfwccs"
-                prop="dxsfwccs"
-              >
-              </el-table-column>
-              <el-table-column
-                label="鐭俊闅忚瀹屾垚鐜�"
-                align="center"
-                width="120"
-                key="dxsfwcl"
-                prop="dxsfwcl"
-              >
-              </el-table-column> -->
-              <!-- <el-table-column
-                label="浜哄伐闅忚娆℃暟"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              >
-              </el-table-column>
-              <el-table-column
-                label="浜哄伐闅忚瀹屾垚鏁�"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              >
-              </el-table-column>
-              <el-table-column
-                label="浜哄伐闅忚瀹屾垚鐜�"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              >
-              </el-table-column> -->
-              <!-- <el-table-column
-                label="澶辫鏁�"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              >
-              </el-table-column>
-              <el-table-column
-                label="澶辫鐜�"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              >
-              </el-table-column>
-              <el-table-column
-                label="澶辫鐜�"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              > -->
-              <!-- </el-table-column> -->
-              <el-table-column
-                label="寮傚父鎬绘暟"
-                align="center"
-                key="yczs"
-                prop="yczs"
-              >
-                <template slot-scope="scope">
-                  <el-button
-                    size="medium"
-                    type="danger"
-                    plain
-                    @click="routerErr(scope.row)"
-                    ><span class="button-zx">{{
-                      scope.row.yczs
-                    }}</span></el-button
-                  >
-                </template>
-              </el-table-column>
-              <!-- <el-table-column
-                label="鎬诲紓甯哥巼"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              >
-              </el-table-column> -->
-              <el-table-column
-                label="鍥炲寮傚父鏁�"
-                align="center"
-                width="100"
-                key="hfycs"
-                prop="hfycs"
-              >
-              </el-table-column>
-              <!-- <el-table-column
-                label="鍥炲寮傚父鍙婃椂澶勭悊鏁�"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              >
-              </el-table-column>
-              <el-table-column
-                label="鍥炲寮傚父鍙婃椂澶勭悊鐜�"
-                align="center"
-                key="tagdescription"
-                prop="tagdescription"
-              >
-              </el-table-column> -->
-
-              <!-- <el-table-column
-                label="鎿嶄綔"
-                align="center"
-                width="300"
-                class-name="small-padding fixed-width"
-              >
-                <template slot-scope="scope">
-                  <el-button
-                    size="medium"
-                    type="text"
-                    @click="handleUpdate(scope.row)"
-                    v-hasPermi="['system:user:edit']"
-                    ><span class="button-textxg"
-                      ><i class="el-icon-edit"></i>淇敼</span
-                    ></el-button
-                  >
-                  <el-button
-                    size="medium"
-                    type="text"
-                    @click="handleDelete(scope.row)"
-                    v-hasPermi="['system:user:remove']"
-                    ><span class="button-textsc"
-                      ><i class="el-icon-delete"></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>
-      </div>
+        <el-button type="warning" plain icon="el-icon-download" size="medium" @click="handleExport">瀵煎嚭</el-button>
+        <el-button type="primary" plain icon="el-icon-data-line" size="medium" @click="showChartDialog">缁熻瓒嬪娍鍥�</el-button>
+      </el-form>
     </div>
+
+    <!-- Tab鍒囨崲鍖哄煙 -->
+    <div class="tab-section">
+      <el-tabs v-model="activeTab" @tab-click="handleTabClick">
+        <el-tab-pane label="棣栨闅忚" name="first">
+          <FirstFollowUp
+            ref="firstFollowUp"
+            :query-params="queryParams"
+            :flat-array-hospit="flatArrayhospit"
+            :flat-array-dept="flatArraydept"
+            :options="options"
+            :orgname="orgname"
+            @view-details="viewDetails"
+            @see-details="Seedetails"
+          />
+        </el-tab-pane>
+
+        <el-tab-pane label="鍐嶆闅忚" name="second">
+          <SecondFollowUp
+            ref="secondFollowUp"
+            :query-params="queryParams"
+            :flat-array-hospit="flatArrayhospit"
+            :flat-array-dept="flatArraydept"
+            :options="options"
+            :orgname="orgname"
+            @view-details="viewDetails"
+          />
+        </el-tab-pane>
+
+        <el-tab-pane label="寤剁画鎶ょ悊缁熻" name="continued" v-if="orgname == '鐪佺珛鍚屽痉缈犺嫅闄㈠尯'">
+          <ContinuedCare
+            ref="continuedCare"
+            :query-params="queryParams"
+            :flat-array-hospit="flatArrayhospit"
+            :flat-array-dept="flatArraydept"
+            :options="options"
+            :orgname="orgname"
+            @view-details="viewDetails"
+          />
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+
+    <!-- 寮圭獥鍖哄煙 -->
+    <ChartDialog
+      :visible="chartDialogVisible"
+      :data="chartData"
+      :active-tab="activeTab"
+      @close="chartDialogVisible = false"
+    />
+
+    <DetailDialog
+      :visible="infotitleVisible"
+      :title="infotitle"
+      :data="infotitlelist"
+      :search-name="searchName"
+      @close="infotitleVisible = false"
+      @search="handleSearch"
+      @details-go="SeedetailsgGo"
+    />
+
+    <TimelyRateDialog
+      :visible="SeedetailsVisible"
+      :loading="Seedloading"
+      :data="logsheetlist"
+      :total="patienttotal"
+      :query-params="patientqueryParams"
+      @close="SeedetailsVisible = false"
+      @search="Seedetailstion"
+      @details-go="SeedetailsgGo"
+    />
   </div>
 </template>
 
 <script>
-import {
-  toamendtag,
-  addapitag,
-  detailstag,
-  deletetag,
-  changetagcategory,
-  toamendtagcategory,
-  addtagcategory,
-  deletetagcategory,
-  listtag,
-  tagclassifylist,
-} from "@/api/system/label";
-import { getSfStatistics, deptTreeSelect } from "@/api/system/user";
+import FirstFollowUp from './components/FirstFollowUp.vue'
+import SecondFollowUp from './components/SecondFollowUp.vue'
+import ContinuedCare from './components/ContinuedCare.vue'
+import ChartDialog from './components/ChartDialog.vue'
+import DetailDialog from './components/DetailDialog.vue'
+import TimelyRateDialog from './components/TimelyRateDialog.vue'
 
-import Treeselect from "@riophae/vue-treeselect";
-import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-const shortcuts = [
-  {
-    text: "浠婂ぉ",
-    onClick(picker) {
-      picker.$emit("pick", new Date());
-    },
-  },
-  {
-    text: "鏄ㄥぉ",
-    onClick(picker) {
-      const date = new Date();
-      date.setTime(date.getTime() - 3600 * 1000 * 24);
-      picker.$emit("pick", date);
-    },
-  },
-  {
-    text: "涓�鍛ㄥ墠",
-    onClick(picker) {
-      const date = new Date();
-      date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
-      picker.$emit("pick", date);
-    },
-  },
-];
+
 export default {
-  name: "questionnaire",
-  dicts: ["sys_normal_disable", "sys_user_sex"],
-  components: { Treeselect },
+  name: 'FollowUpStatistics',
+  components: {
+    FirstFollowUp,
+    SecondFollowUp,
+    ContinuedCare,
+    ChartDialog,
+    DetailDialog,
+    TimelyRateDialog
+  },
   data() {
     return {
-      topactiveName: "Local", //椤堕儴閫夋嫨
-      activeName: "first", //渚ц竟閫夋嫨
-      // 閬僵灞�
-      loading: false,
-      // 閫変腑鏁扮粍
-      ids: [],
-      // 闈炲崟涓鐢�
-      single: true,
-      // 闈炲涓鐢�
-      multiple: true,
-      // 鏄剧ず鎼滅储鏉′欢
-      showSearch: true,
-      idds: "", //鍒嗙被id
-      // 鎬绘潯鏁�
-      total: 0,
-      flatArray: [],
-      amendtag: false, //鏄惁淇敼绫诲埆
-      lstamendtag: false, //鏄惁淇敼鏍囩
-      scavisible: false, //鍒犻櫎寮规
-      deleteVisible: false, //鍒嗙被鍒犻櫎寮规
-      deletefenl: "楂樿鍘�", //鍒犻櫎椤�
-      //淇敼娣诲姞鏍囩寮规鏁版嵁
-      tagform: {
-        isupload: "",
-        tagname: "",
-        tagcategoryid: "",
-        tagdescription: "",
-      },
-      classifyform: {
-        categoryname: "",
-      },
-      // 鏍囩琛ㄦ牸鏁版嵁
-      userList: [],
-      // 寮瑰嚭灞傛爣棰�
-      title: "",
-      // 鏄惁鏄剧ず寮瑰嚭灞�
-      open: false,
-      // 鏃ユ湡鑼冨洿
-      dateRange: [],
-      // 宀椾綅閫夐」
-      postOptions: [],
-      // 瑙掕壊閫夐」
-      roleOptions: [],
-      // 琛ㄥ崟鍙傛暟
-      form: {},
-      forms: {
-        name: "",
-      },
-      numberlb: 22,
-      dialogFormVisible: false, //娣诲姞銆佷慨鏀圭被鍒脊妗�
-      lstamendtagVisible: false, //娣诲姞銆佷慨鏀规爣绛惧脊妗�
-      goQRCodeVisible: false, //浜岀淮鐮佸脊妗�
-      sidecolumnval: "", //绫诲埆鎼滅储
-      propss: { multiple: true },
-
-      options: [
-      {
-          value: 1,
-          label: "鐩戞祴璇勪及",
-        },
-        {
-          value: 2,
-          label: "鍑洪櫌闅忚",
-        },
-        {
-          value: 3,
-          label: "闂ㄨ瘖闅忚",
-        },
-        {
-          value: 4,
-          label: "瀹f暀鍏虫��",
-        },
-        {
-          value: 5,
-          label: "澶嶈瘖绠$悊",
-        },
-
-        {
-          value: 7,
-          label: "鎮h�呮姤鍛�",
-        },
-
-        {
-          value: 9,
-          label: "浣撴闅忚",
-        },
-
-        {
-          value: 11,
-          label: "褰卞儚闅忚",
-        },
-        {
-          value: 12,
-          label: "蹇冪數闅忚",
-        },
-        {
-          value: 13,
-          label: "涓撶梾闅忚",
-        },
+      activeTab: 'first',
+      orgname: localStorage.getItem('orgname') || '',
+      Statisticallist: [
+        { label: '鐥呭尯缁熻', value: 1 },
+        { label: '绉戝缁熻', value: 2 }
       ],
-      pickerOptions: {
-        disabledDate(time) {
-          return time.getTime() < Date.now() - 3600 * 1000 * 24;
-        },
-        shortcuts: shortcuts,
-      },
-      pickerOptionsa: {
-        disabledDate(time) {
-          return time.getTime() > Date.now();
-        },
-        shortcuts: shortcuts,
-      },
-      // 鏌ヨ鏍囩鍒楄〃鍙傛暟
+      options: this.$store.getters.tasktypes,
       queryParams: {
-        pageNum: 1,
-        pageSize: 10,
         serviceType: [2],
         dateRange: [],
+        statisticaltype: 1,
+        leavehospitaldistrictcodes: ['all'],
+        deptcodes: []
       },
-      // 鍒椾俊鎭�
-      columns: [
-        { key: 0, label: `鏍囩缂栧彿`, visible: true },
-        { key: 1, label: `鏍囩鍚嶇О`, visible: true },
-        { key: 2, label: `鏍囩鏄电О`, visible: true },
-        { key: 3, label: `閮ㄩ棬`, visible: true },
-        { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
-        { key: 5, label: `鐘舵�乣, visible: true },
-        { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
-      ],
-    };
-  },
-  watch: {},
-  created() {
-    this.getList();
-    this.getDeptTree();
-  },
+      flatArrayhospit: [],
+      flatArraydept: [],
+      allDeptCodes: [],
+      allWardCodes: [],
+      showSearch: true,
 
+      // 寮圭獥鐩稿叧鐘舵��
+      chartDialogVisible: false,
+      chartData: [],
+      infotitleVisible: false,
+      SeedetailsVisible: false,
+      searchName: '',
+      infotitle: '',
+      infotitlelist: [],
+      patienttotal: 0,
+      logsheetlist: [],
+      Seedloading: false,
+      patientqueryParams: {
+        pn: 1,
+        ps: 10
+      }
+    }
+  },
+  created() {
+    this.getDeptTree()
+  },
   methods: {
-    /** 鏌ヨ鏍囩鍒楄〃 */
-    getList() {
-      getSfStatistics(this.queryParams).then((response) => {
-        console.log(response);
-        // this.total = response.total;
-        this.userList = response.data;
-      });
-    },
-    /** 淇敼鏍囩 */
-    handleUpdate(row) {
-      console.log(row, "淇敼鏍囩");
-      this.lstamendtagVisible = true;
-      this.lstamendtag = true;
-      this.tagform = {
-        isupload: row.isupload,
-        tagname: row.tagname,
-        tagcategoryid: row.tagcategoryid,
-        tagdescription: row.tagdescription,
-        tagid: row.tagid,
-      };
-    },
-    // 鑾峰彇绉戝鏍�
     getDeptTree() {
       // 绉戝鍒楄〃
-      deptTreeSelect().then((response) => {
-        this.deptOptions = response.data;
-        console.log(this.deptOptions, " this.deptOptions");
-
-        this.flatArray = this.flattenArray(response.data);
-        console.log(this.flatArray, "this.flatArray");
-      });
-    },
-    flattenArray(multiArray) {
-      let result = [];
-
-      // 閫掑綊鍑芥暟锛岀敤浜庡皢澶氱骇鏁扮粍杞崲涓轰竴缁存暟缁勶紝鍙寘鍚渶搴曞眰鐨勫厓绱�
-      function flatten(element) {
-        // 濡傛灉褰撳墠鍏冪礌鏈夊瓙鍏冪礌锛岀户缁�掑綊
-        if (element.children && element.children.length > 0) {
-          element.children.forEach((child) => flatten(child));
-        } else {
-          // 鍏嬮殕鍏冪礌浠ラ伩鍏嶄慨鏀瑰師濮嬫暟鎹�
-          let item = JSON.parse(JSON.stringify(element));
-          result.push(item); // 灏嗘渶搴曞眰鐨勫厓绱犳坊鍔犲埌缁撴灉鏁扮粍
+      this.flatArraydept = this.$store.getters.belongDepts.map((dept) => {
+        return {
+          label: dept.deptName,
+          value: dept.deptCode
         }
-      }
+      })
+      this.allDeptCodes = this.$store.getters.belongDepts.map((dept) => dept.deptCode)
 
-      // 浠庨《灞傚厓绱犲紑濮嬮�掑綊
-      multiArray.forEach((element) => flatten(element));
-      return result; // 杩斿洖鍙寘鍚渶搴曞眰鍏冪礌鐨勪竴缁存暟缁�
-    },
-    addladeltag() {
-      this.lstamendtagVisible = true;
-      this.lstamendtag = false;
-      this.tagform = {
-        isupload: "",
-        tagname: "",
-        tagcategoryid: "",
-        tagdescription: "",
-        tagid: "",
-      };
-    },
-    // 娣诲姞/淇敼鏍囩
-    Maintenancetag() {
-      if (this.lstamendtag) {
-        toamendtag(this.addDateRange(this.tagform)).then((response) => {
-          console.log(response);
-          this.getList();
-        });
-      } else {
-        addapitag(this.addDateRange(this.tagform)).then((response) => {
-          console.log(response);
-          this.getList();
-        });
-      }
-      this.tagform = {
-        isupload: "",
-        tagname: "",
-        tagcategoryid: "",
-        tagdescription: "",
-        tagid: "",
-      };
-    },
-    routerErr(row) {
-      console.log(row, "璺宠浆寮傚父");
-      this.$router.push({
-        path: "/followvisit/discharge",
-        query: {
-          errtype: 1,
-          leavehospitaldistrictcode: row.leavehospitaldistrictcode,
-        },
-      });
+      // 鐥呭尯鍒楄〃
+      this.flatArrayhospit = this.$store.getters.belongWards.map((ward) => {
+        return {
+          label: ward.districtName,
+          value: ward.districtCode
+        }
+      })
+      this.allWardCodes = this.$store.getters.belongWards.map((ward) => ward.districtCode)
+
+      this.flatArraydept.push({ label: '鍏ㄩ儴', value: 'all' })
+      this.flatArrayhospit.push({ label: '鍏ㄩ儴', value: 'all' })
     },
 
-    // 琛ㄥ崟閲嶇疆
-    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");
+    handleTabClick(tab) {
+      this.activeTab = tab.name
+      this.loadCurrentTabData()
     },
-    // 鏍囩鐘舵�佷慨鏀�
-    handleStatusChange(row) {
-      console.log(row.isupload);
-      let text = row.isupload === "0" ? "鍚敤" : "鍋滅敤";
-      this.$modal
-        .confirm('纭瑕�"' + text + '""' + row.tagname + '"鏍囩鍚楋紵')
-        .then(function () {
-          return changetagcategory(row.tagid, row.isupload);
-        })
-        .then(() => {
-          this.$modal.msgSuccess(text + "鎴愬姛");
-        })
-        .catch(function () {
-          row.isupload = row.isupload === "0" ? "1" : "0";
-        });
+
+    loadCurrentTabData() {
+      switch (this.activeTab) {
+        case 'first':
+          this.$refs.firstFollowUp.loadData()
+          break
+        case 'second':
+          this.$refs.secondFollowUp.loadData()
+          break
+        case 'continued':
+          this.$refs.continuedCare.loadData()
+          break
+      }
     },
-    /** 鎼滅储鎸夐挳鎿嶄綔 */
+
     handleQuery() {
-      this.queryParams.pageNum = 1;
-      console.log();
-      this.queryParams.startTime = this.parseTime(
-        this.queryParams.dateRange[0]
-      );
-      this.queryParams.endTime = this.parseTime(this.queryParams.dateRange[1]);
-      this.getList();
-    },
-    /** 閲嶇疆鎸夐挳鎿嶄綔 */
-    resetQuery() {
-      this.queryParams.dateRange = [];
-      this.queryParams.leavehospitaldistrictcodes = [];
-      this.handleQuery();
-    },
-    // 澶氶�夋閫変腑鏁版嵁
-    handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.tagid);
-      this.single = selection.length != 1;
-      this.multiple = !selection.length;
+      this.queryParams.startTime = this.parseTime(this.queryParams.dateRange[0])
+      this.queryParams.endTime = this.parseTime(this.queryParams.dateRange[1])
+
+      if (this.queryParams.statisticaltype == 1) {
+        this.queryParams.deptcodes = []
+      } else if (this.queryParams.statisticaltype == 2) {
+        this.queryParams.leavehospitaldistrictcodes = []
+      }
+
+      this.loadCurrentTabData()
     },
 
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
-    handleDelete(row) {
-      console.log(row, "鍒犻櫎寮圭獥");
-      const tagids = row.tagid || this.ids;
-      console.log(tagids);
-      const tagname = row.tagname;
-      this.$modal
-        .confirm(
-          tagname
-            ? '鏄惁纭鍒犻櫎鏍囩鍚嶇О涓�"' + tagname + '"鐨勬暟鎹」锛�'
-            : "鏄惁纭鍒犻櫎閫変腑鐨勬暟鎹」锛�"
-        )
-        .then(function () {
-          return deletetag(tagids);
-        })
-        .then(() => {
-          this.getList();
-          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-        })
-        .catch(() => {});
+    resetQuery() {
+      this.queryParams.dateRange = []
+      this.queryParams.leavehospitaldistrictcodes = []
+      this.handleQuery()
     },
-    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
-    handleExport() {
-      this.download(
-        "smartor/serviceSubtask/getSfStatisticsExport",
-        {
-          ...this.queryParams,
-        },
-        `user_${new Date().getTime()}.xlsx`
-      );
+
+    async handleExport() {
+      switch (this.activeTab) {
+        case 'first':
+          await this.$refs.firstFollowUp.exportTable()
+          break
+        case 'second':
+          await this.$refs.secondFollowUp.exportTable()
+          break
+        case 'continued':
+          await this.$refs.continuedCare.exportTable()
+          break
+      }
     },
-  },
-};
+
+    showChartDialog() {
+      this.chartData = this.getCurrentTabData()
+      this.chartDialogVisible = true
+    },
+
+    getCurrentTabData() {
+      switch (this.activeTab) {
+        case 'first':
+          return this.$refs.firstFollowUp.tableData
+        case 'second':
+          return this.$refs.secondFollowUp.tableData
+        case 'continued':
+          return this.$refs.continuedCare.tableData
+        default:
+          return []
+      }
+    },
+
+    viewDetails(row, title) {
+      this.infotitle = title
+      this.infotitlelist = row
+      this.infotitleVisible = true
+    },
+
+    Seedetails(row) {
+      this.SeedetailsVisible = true
+      this.Seedloading = true
+
+      this.$refs.firstFollowUp.selectTimelyRate(row, this.queryParams.dateRange)
+        .then(response => {
+          this.logsheetlist = response.data.detail
+          this.patienttotal = response.data.total
+          this.Seedloading = false
+        })
+    },
+
+    Seedetailstion() {
+      this.$refs.firstFollowUp.selectTimelyRate(this.patientqueryParams)
+        .then(response => {
+          this.logsheetlist = response.data.detail
+          this.patienttotal = response.data.total
+        })
+    },
+
+    SeedetailsgGo(row) {
+      this.SeedetailsVisible = false
+      let type = ''
+      if (row.preachformson && row.preachformson.includes('3')) {
+        type = 1
+      }
+      setTimeout(() => {
+        this.$router.push({
+          path: '/followvisit/record/detailpage/',
+          query: {
+            taskid: row.taskid,
+            patid: row.patid,
+            id: row.id,
+            Voicetype: type
+          }
+        })
+      }, 300)
+    },
+
+    handleSearch() {
+      // 鎼滅储閫昏緫
+    }
+  }
+}
 </script>
 
 <style lang="scss" scoped>
-.sidecolumn {
-  width: 180px;
-  min-height: 100vh;
-  text-align: center;
-  //   display: flex;
-  margin-top: 20px;
-  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);
-  .sidecolumn-top {
-    display: flex;
-    justify-content: space-between;
-    .top-wj {
-      font-size: 20px;
-    }
-    .top-tj {
-      font-size: 18px;
-
-      color: rgb(0, 89, 255);
-      cursor: pointer;
-    }
-  }
-  .center-ss {
-    margin-top: 30px;
-    .input-with-select {
-      height: 40px !important;
-    }
-  }
-  .bottom-fl {
-    margin-top: 30px;
-    display: center !important;
-  }
-}
-.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);
-  .qrcode-text {
-    font-size: 20px;
-    span {
-      margin-left: 20px;
-    }
-  }
-  .qrcode-img {
-    width: 300px;
-    height: 400px;
-  }
-}
-::v-deep.el-tabs--left,
-.el-tabs--right {
-  overflow: hidden;
-  align-items: center;
-  display: flex;
-}
-::v-deep.el-input--medium .el-input__inner {
-  height: 40px !important;
-}
-::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
-  height: 40px;
-  width: 5px;
-  left: 0;
-}
-::v-deep.el-tabs--right .el-tabs__item.is-right {
-  display: block;
-  text-align: left;
-  font-size: 20px;
-}
-
-.leftvlue {
-  //   display: flex;
-  //   flex: 1;
-  // width: 80%;
-  // margin-top: 20px;
-  margin: 20px;
-  padding: 30px;
+.follow-up-statistics {
+  padding: 20px;
   background: #ffff;
   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);
-  .mulsz {
-    font-size: 20px;
+  box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04);
+
+  .search-section {
+    margin-bottom: 20px;
   }
-}
-.document {
-  width: 100px;
-  height: 50px;
-}
-.documentf {
-  display: flex;
-  justify-content: flex-end;
-}
-.button-text {
-  color: rgb(70, 204, 238);
-}
-.button-textck {
-  color: rgb(39, 167, 67);
-}
-.button-textxg {
-  color: rgb(35, 81, 233);
-}
-.button-textsc {
-  color: rgb(235, 23, 23);
+
+  .tab-section {
+    ::v-deep .el-tabs__header {
+      margin-bottom: 20px;
+    }
+
+    ::v-deep .el-tabs__item {
+      font-size: 16px;
+      padding: 0 20px;
+      height: 40px;
+      line-height: 40px;
+    }
+
+    ::v-deep .el-tabs__active-bar {
+      height: 3px;
+    }
+  }
 }
 </style>

--
Gitblit v1.9.3