From a5cba9ab040f6f97558046885dce3017f9bab7e9 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 11 八月 2026 14:12:29 +0800
Subject: [PATCH] 提交

---
 src/views/sfstatistics/percentage/index.vue |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 112 insertions(+), 6 deletions(-)

diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue
index dd731d8..b6cb27c 100644
--- a/src/views/sfstatistics/percentage/index.vue
+++ b/src/views/sfstatistics/percentage/index.vue
@@ -75,10 +75,25 @@
             v-model="queryParams.dateRange"
             value-format="yyyy-MM-dd HH:mm:ss"
             type="daterange"
+            unlink-panels
             range-separator="鑷�"
             start-placeholder="寮�濮嬫棩鏈�"
             end-placeholder="缁撴潫鏃ユ湡"
             :default-time="['00:00:00', '23:59:59']"
+            :picker-options="pickerOptions"
+          />
+        </el-form-item>
+        <el-form-item label-width="200" label="鍑洪櫌鏃堕棿鑼冨洿" prop="userName">
+          <el-date-picker
+            v-model="queryParams.dateRangecy"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            type="daterange"
+            unlink-panels
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+            :default-time="['00:00:00', '23:59:59']"
+            :picker-options="pickerOptions"
           />
         </el-form-item>
 
@@ -117,6 +132,21 @@
     <!-- Tab鍒囨崲鍖哄煙 -->
     <div class="tab-section">
       <el-tabs v-model="activeTab" @tab-click="handleTabClick">
+        <el-tab-pane
+          label="缁煎悎缁熻"
+          v-if="orgname == '涓芥按甯備腑鍖婚櫌'"
+          name="combined"
+        >
+          <CombinedFollowUp
+            ref="combinedFollowUp"
+            :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="first">
           <FirstFollowUp
             ref="firstFollowUp"
@@ -164,6 +194,7 @@
     <ChartDialog
       :visible="chartDialogVisible"
       :data="chartData"
+      :statisticaltype="queryParams.statisticaltype"
       :active-tab="activeTab"
       @close="chartDialogVisible = false"
     />
@@ -198,11 +229,11 @@
 import ChartDialog from "./components/ChartDialog.vue";
 import DetailDialog from "./components/DetailDialog.vue";
 import TimelyRateDialog from "./components/TimelyRateDialog.vue";
-
+import CombinedFollowUp from "./components/CombinedFollowUp.vue";
 import { getSfStatisticsHyperlink } from "@/api/AiCentre/index";
 
 export default {
-  name: "FollowUpStatistics",
+  name: "Percentage",
   components: {
     FirstFollowUp,
     SecondFollowUp,
@@ -210,6 +241,7 @@
     ChartDialog,
     DetailDialog,
     TimelyRateDialog,
+    CombinedFollowUp,
   },
   data() {
     return {
@@ -222,10 +254,46 @@
       options: this.$store.getters.tasktypes,
       queryParams: {
         serviceType: [2],
-        dateRange: [],
-        statisticaltype: 1,
+        dateRange: this.getLastMonthRange(),
+        dateRangecy: [],
+        statisticaltype:
+          localStorage.getItem("orgname") == "缂欎簯鍘夸汉姘戝尰闄�" ||
+          localStorage.getItem("orgname") == "鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�"
+            ? 2
+            : 1,
         leavehospitaldistrictcodes: ["all"],
-        deptcodes: [],
+        deptcodes: ["all"],
+      },
+      pickerOptions: {
+        shortcuts: [
+          {
+            text: "鏈�杩戜竴鍛�",
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+              picker.$emit("pick", [start, end]);
+            },
+          },
+          {
+            text: "鏈�杩戜竴涓湀",
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+              picker.$emit("pick", [start, end]);
+            },
+          },
+          {
+            text: "鏈�杩戜笁涓湀",
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+              picker.$emit("pick", [start, end]);
+            },
+          },
+        ],
       },
       flatArrayhospit: [],
       flatArraydept: [],
@@ -281,7 +349,29 @@
       this.flatArraydept.push({ label: "鍏ㄩ儴", value: "all" });
       this.flatArrayhospit.push({ label: "鍏ㄩ儴", value: "all" });
     },
+    // 娣诲姞鑾峰彇鏈�杩戜竴涓湀鏃堕棿鑼冨洿鐨勬柟娉�
+    getLastMonthRange() {
+      const end = new Date();
+      const start = new Date();
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
 
+      // 鏍煎紡鍖栦负 yyyy-MM-dd HH:mm:ss
+      const formatDate = (date) => {
+        const year = date.getFullYear();
+        const month = String(date.getMonth() + 1).padStart(2, "0");
+        const day = String(date.getDate()).padStart(2, "0");
+        return `${year}-${month}-${day} 00:00:00`;
+      };
+
+      const formatEndDate = (date) => {
+        const year = date.getFullYear();
+        const month = String(date.getMonth() + 1).padStart(2, "0");
+        const day = String(date.getDate()).padStart(2, "0");
+        return `${year}-${month}-${day} 23:59:59`;
+      };
+
+      return [formatDate(start), formatEndDate(end)];
+    },
     handleTabClick(tab) {
       this.activeTab = tab.name;
       this.loadCurrentTabData();
@@ -298,6 +388,9 @@
         case "continued":
           this.$refs.continuedCare.loadData();
           break;
+        case "combined":
+          this.$refs.combinedFollowUp.loadData();
+          break;
       }
     },
 
@@ -306,7 +399,12 @@
         this.queryParams.dateRange[0]
       );
       this.queryParams.endTime = this.parseTime(this.queryParams.dateRange[1]);
-
+      this.queryParams.hospitalStartTime = this.parseTime(
+        this.queryParams.dateRangecy[0]
+      );
+      this.queryParams.hospitalEndTime = this.parseTime(
+        this.queryParams.dateRangecy[1]
+      );
       if (this.queryParams.statisticaltype == 1) {
         this.queryParams.deptcodes = [];
       } else if (this.queryParams.statisticaltype == 2) {
@@ -333,6 +431,9 @@
         case "continued":
           await this.$refs.continuedCare.exportTable();
           break;
+        case "combined":
+          await this.$refs.combinedFollowUp.exportTable();
+          break;
       }
     },
 
@@ -349,6 +450,8 @@
           return this.$refs.secondFollowUp.tableData;
         case "continued":
           return this.$refs.continuedCare.tableData;
+        case "combined":
+          return this.$refs.combinedFollowUp.tableData;
         default:
           return [];
       }
@@ -372,6 +475,9 @@
         obj.deptcodes = [row.deptcode];
         obj.leavehospitaldistrictcodes = [];
       }
+      obj.endTime = this.queryParams.endTime;
+      obj.startTime = this.queryParams.startTime;
+      obj.statisticaltype = this.queryParams.statisticaltype;
 
       getSfStatisticsHyperlink(obj).then((response) => {
         this.infotitlelist = response.data;

--
Gitblit v1.9.3