From 40382035e2e87b5c6813efd7e669b17a6a27be17 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5968728@163.com>
Date: 星期一, 18 八月 2025 16:29:36 +0800
Subject: [PATCH] 你的提交信息

---
 src/views/index.vue |  951 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 695 insertions(+), 256 deletions(-)

diff --git a/src/views/index.vue b/src/views/index.vue
index d44d565..8b63e39 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -3,69 +3,76 @@
     <div class="home" style="margin-top: 40px; margin-left: 20px">
       <!-- 澶撮儴涓や釜 -->
       <el-row :gutter="20">
-        <el-col :span="10">
+        <el-col :span="11">
           <!-- 灏辫瘖缁熻鐩掑瓙 -->
           <div class="grid-content bg-purple headerBox bgc1">
             <div class="title">
-              灏辫瘖缁熻
+              闂ㄨ瘖鏈嶅姟<span
+                style="
+                  font-size: 25px;
+                  font-weight: 600;
+                  text-shadow: 2px 4px 7px rgb(85 132 255 / 50%);
+                  color: black;
+                "
+              ></span>
               <span>{{ endatd }} ~ {{ statd }}</span>
             </div>
             <el-row :gutter="20">
-              <el-col :span="6">
+              <el-col :span="10">
                 <div class="home-user-task-stats">
-                  <p>{{ 12322 }}</p>
-                </div>
-                <div class="text-color2">
-                  <p>灏辫瘖鎬绘暟锛堜釜锛�</p>
-                </div>
-              </el-col>
-              <el-col :span="6">
-                <div class="home-user-task-stats">
-                  <p>{{ 1231 }}</p>
+                  <p>{{ OutpatientData.rc }}</p>
                   <div class="text-color2">
-                    <p>鍦ㄩ櫌鎬绘暟锛堜汉锛�</p>
+                    <p>闂ㄨ瘖灏辫瘖閲忥紙浜烘锛�</p>
                   </div>
                 </div>
               </el-col>
-              <el-col :span="6">
+              <el-col :span="10">
                 <div class="home-user-task-stats">
-                  <p>{{ ticketStatistics.progressTotal || "0" }}</p>
+                  <p>{{ OutpatientData.rs }}</p>
                   <div class="text-color2">
-                    <p>绂婚櫌鎬绘暟锛堜汉锛�</p>
+                    <p>闂ㄨ瘖鏈嶅姟閲忥紙浜烘锛�</p>
                   </div>
                 </div>
               </el-col>
-              <el-col :span="6">
+              <!-- <el-col :span="7">
                 <div class="home-user-task-stats">
-                  <p>{{ 12 }}</p>
+                  <p>{{ 1209 }}</p>
                   <div class="text-color2">
-                    <p>鎶曡瘔鎬绘暟</p>
+                    <p>浣撴鎬绘暟锛堜汉锛�</p>
                   </div>
                 </div>
-              </el-col>
+              </el-col> -->
             </el-row>
           </div>
         </el-col>
-        <el-col :span="7">
+        <el-col :span="9">
           <div class="grid-content bg-purple headerBox bgc2">
             <div class="title">
-              鍖诲姟浜哄憳鏁伴噺
+              鍑洪櫌鏈嶅姟
+              <span
+                style="
+                  font-size: 25px;
+                  text-shadow: 2px 4px 7px rgb(255 99 85 / 50%);
+                  font-weight: 600;
+                  color: red;
+                "
+              ></span>
               <span>{{ endatd }} ~ {{ statd }}</span>
             </div>
             <el-row :gutter="20">
-              <el-col :span="12">
+              <el-col :span="10">
                 <div class="home-user-task-stats">
-                  <p style="color: red">{{ 3453 }}</p>
+                  <p style="color: red">{{ DischargeData.rc }}</p>
                 </div>
                 <div class="text-color2">
-                  <p>鍖诲笀</p>
+                  <p>鍑洪櫌灏辫瘖閲忥紙浜烘锛�</p>
                 </div>
               </el-col>
-              <el-col :span="12">
+              <el-col :span="10">
                 <div class="home-user-task-stats">
-                  <p style="color: red">{{ 4213 }}</p>
+                  <p style="color: red">{{ DischargeData.rs }}</p>
                   <div class="text-color2">
-                    <p>鎶ゅ+</p>
+                    <p>鍑洪櫌鏈嶅姟閲忥紙浜烘锛�</p>
                   </div>
                 </div>
               </el-col>
@@ -75,11 +82,11 @@
       </el-row>
       <!-- 涓棿鍜屽彸杈� -->
       <el-row :gutter="20">
-        <el-col :span="17">
+        <el-col :span="20">
           <!-- echars鏁版嵁鍙鍖� -->
           <div class="grid-content bg-purple" style="min-height: 365px">
             <div class="title">
-              灏辫瘖缁熻
+              鏈嶅姟缁熻
               <span>{{ endatd }} ~ {{ statd }}</span>
               <el-radio-group
                 v-model="radio1"
@@ -87,104 +94,220 @@
                 style="margin-left: 390px"
                 @change="changes"
               >
-                <el-radio-button label="鍛�" @click="dyat = 7"></el-radio-button>
                 <el-radio-button
-                  label="鏈�"
-                  @click="dyat = 30"
+                  label="杩戜竴鍛�"
+                  @click="dyat = 7"
                 ></el-radio-button>
                 <el-radio-button
-                  label="骞�"
-                  @click="dyat = 360"
+                  label="杩戜竴鏈�"
+                  @click="dyat = 31"
                 ></el-radio-button>
+                <el-radio-button
+                  label="杩戜竴骞�"
+                  @click="dyat = 365"
+                ></el-radio-button>
+                <el-radio-button label="鑷畾涔�">
+                  <el-date-picker
+                    v-if="radio1 === '鑷畾涔�'"
+                    v-model="customDateRange"
+                    type="daterange"
+                    range-separator="鑷�"
+                    start-placeholder="寮�濮嬫棩鏈�"
+                    end-placeholder="缁撴潫鏃ユ湡"
+                    value-format="yyyy-MM-dd"
+                    @change="handleCustomDateChange"
+                  ></el-date-picker>
+                </el-radio-button>
               </el-radio-group>
             </div>
-            <!-- 涓棿echars -->
+            <!-- 涓儴绾挎�ф煴鐘跺浘 -->
             <div class="boxEchars">
               <div class="echars1" id="echars"></div>
-              <div class="echars2" id="echars2"></div>
             </div>
           </div>
         </el-col>
-        <!-- 涓棿鍜屽彸杈� -->
-        <el-col :span="6" class="aside">
-          <div
-            class="grid-content bg-purple"
-            style="height: 560px; margin-top: -180px"
-          >
+        <!-- 鍙宠竟鍒楄〃 -->
+        <el-col :span="4" class="aside">
+          <div class="grid-content bg-purple" style="margin-top: -180px">
             <div class="title">
-              鎺ヨ瘖鎺掕
+              绉戝鏈嶅姟閲�
               <span>{{ endatd }} ~ {{ statd }}</span>
             </div>
-            <el-table style="width: 100%" :data="SkuTop">
-              <template v-for="(item, index) in SkuTop"></template>
-              <el-table-column
-                prop="order"
-                width="30"
-                style="background: url(~@/assets/order/4.png)"
-                type="index"
-                
-              ></el-table-column>
-              <el-table-column
-                prop="skuName"
-                width="124"
-                class-name="name"
-                
-              ></el-table-column>
-              <el-table-column
-                prop="count"
-                class-name="count"
-                
-              ></el-table-column>
-            </el-table>
+            <div style="max-height: 690px; width: 100%; overflow: auto">
+              <el-table style="width: 100%" :data="SkuTop">
+                <template v-for="(item, index) in SkuTop"></template>
+                <el-table-column
+                  prop="order"
+                  width="30"
+                  style="background: url(~@/assets/order/4.png)"
+                  type="index"
+                ></el-table-column>
+                <el-table-column
+                  prop="deptname"
+                  width="88"
+                  class-name="name"
+                ></el-table-column>
+
+                <el-table-column prop="rc" class-name="rc">
+                  <template slot-scope="scope"> {{ scope.row.rc }}娆� </template>
+                </el-table-column>
+              </el-table>
+            </div>
           </div>
         </el-col>
       </el-row>
       <!-- 搴曢儴涓�涓� -->
       <el-row :gutter="20" style="margin-bottom: 20px">
-        <el-col :span="13">
+        <el-col :span="24">
           <div class="grid-content bg-purple" style="min-height: 300px">
             <div class="title">
-              鍚堜綔鍟嗙偣浣嶆暟Top5
+              瀹f暀缁熻
               <span class="el-icon-s-unfold moreIcon"></span>
             </div>
             <div class="cooperate">
               <!-- 鍚堜綔鍖哄煙 -->
               <div class="pieChart" id="pieCharts"></div>
-              <div class="Points">
-                <p>{{ 122 }}</p>
-                <span>鐐逛綅鏁�</span>
-                <p>{{ 18 }}</p>
-                <span>鍚堜綔鍟�</span>
-              </div>
             </div>
           </div>
         </el-col>
-        <el-col :span="10">
+        <!-- <el-col :span="9">
           <div class="grid-content bg-purple" style="min-height: 300px">
             <div class="title">
-              寮傚父璁惧鐩戞帶
+              鍚勯」鏈嶅姟缁熻
               <span class="el-icon-s-unfold moreIcon2"></span>
             </div>
-            <div class="empenty"></div>
+            <div class="empenty">
+              <el-row>
+                <el-col :span="3"
+                  ><div class="grid-contents bg-purples">鍑洪櫌锛�</div></el-col
+                >
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">鍑洪櫌闅忚</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">鍑洪櫌瀹f暀</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">澶嶈瘖閫氱煡</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="3"
+                  ><div class="grid-contents bg-purples"></div
+                ></el-col>
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">鍑洪櫌璇勪及</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">婊℃剰搴﹁皟鏌�</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">鍏朵粬閫氱煡</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+              </el-row>
+
+              <el-row>
+                <el-col :span="3"
+                  ><div class="grid-contents bg-purples">闂ㄨ瘖锛�</div></el-col
+                >
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">褰卞儚闅忚</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">闂ㄨ瘖瀹f暀</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">澶嶈瘖閫氱煡</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="3"
+                  ><div class="grid-contents bg-purples"></div
+                ></el-col>
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">婊℃剰搴﹁皟鏌�</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">鍏朵粬閫氱煡</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="3"
+                  ><div class="grid-contents bg-purples">鍦ㄩ櫌锛�</div></el-col
+                >
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">鍦ㄩ櫌瀹f暀</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">鍦ㄩ櫌璇勪及</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+
+                <el-col :span="7">
+                  <div style="display: flex">
+                    <div class="subtitle">鍏朵粬閫氱煡</div>
+                    <div class="grid-contents bg-purple-light">0娆�</div>
+                  </div>
+                </el-col>
+              </el-row>
+            </div>
           </div>
-        </el-col>
+        </el-col> -->
       </el-row>
     </div>
   </div>
 </template>
 
 <script>
-// import {
-//   getUserWork,
-//   getregionCollect,
-//   getregionOrderCount,
-//   getregionAmountCollect,
-//   getNodeCount,
-//   getPrtnerCount,
-//   getnodeCollect,
-//   getSkuTop,
-//   getOrderAmount,
-// } from "@/api/home";
+import {
+  getEChartsPatMedOuthospCount,
+  getechartsListCountdata,
+  getechartsMedOuthospList,
+  getechartsMedInhospList,
+  getServiceStatistics,
+  getDeptRanking,
+} from "@/api/AiCentre/index";
 import dayjs from "dayjs";
 
 export default {
@@ -194,8 +317,25 @@
       NodeCount: "",
       PrtnerCount: "",
       NodeCount: "",
-      radio1: "鍛�",
+      myChart2: null,
+      mypPieCharts: null,
+      lastWidth: window.innerWidth,
+      lastHeight: window.innerHeight,
+      radio1: "杩戜竴鍛�",
       ticketStatistics: {},
+      timeTypeMap: {
+        鍛�: "day",
+        鏈�: "month",
+        骞�: "year",
+      },
+      DischargeData: {
+        rs: "",
+        rc: "",
+      },
+      OutpatientData: {
+        rs: "",
+        rc: "",
+      },
       order: "",
       Count: "",
       datatni: [],
@@ -205,7 +345,9 @@
       SkuTop: [],
       cylinderSeries: [],
       cylinderXAxis: [],
-      dyat: 30,
+      customDateRange: [], // 鑷畾涔夋棩鏈熻寖鍥�
+      dyat: 6,
+      intervalId: null,
     };
   },
 
@@ -217,245 +359,519 @@
     atd() {
       return dayjs().subtract(this.dyat, "day").format("YYYY-MM-DD HH:mm:ss");
     },
-    statd() {
+   statd() {
+      if (this.radio1 === "鑷畾涔�" && this.customDateRange.length > 0) {
+        return this.customDateRange[1];
+      }
       return dayjs().format("YYYY-MM-DD");
     },
     endatd() {
+      if (this.radio1 === "鑷畾涔�" && this.customDateRange.length > 0) {
+        return this.customDateRange[0];
+      }
       return dayjs().subtract(this.dyat, "day").format("YYYY-MM-DD");
     },
   },
   created() {
+    this.getTopdata();
+    this.getgraphdata();
+    // this.getranking();
     this.$nextTick(function () {
-      this.getregionAmountCollect();
-      this.getUserWorks();
-      this.getregionCollect();
-      this.getregionOrderCount();
-      this.getNodeCount();
-      this.getPrtnerCount();
+      this.myEcharts2();
       this.getnodeCollect();
       this.getSkuTop();
-      this.getOrderAmount();
-    })
+    });
   },
-  mounted() {},
+  mounted() {
+    this.setInterval();
+    // window.addEventListener("resize", this.handleResize());
+  },
+  beforeDestroy() {
+    if (this.intervalId) {
+      clearInterval(this.intervalId); // 娓呴櫎瀹氭椂鍣�
+    }
+  },
   methods: {
     // 鏀瑰彉鏃堕棿浜嬩欢
     changes() {
-      if (this.radio1 == "鍛�") {
-        this.dyat = 7;
-      } else if (this.radio1 == "鏈�") {
-        this.dyat = 30;
-      } else {
-        this.dyat = 360;
+      switch (this.radio1) {
+        case "杩戜竴鍛�":
+          this.dyat = 7;
+          break;
+        case "杩戜竴鏈�":
+          this.dyat = 30;
+          break;
+        case "杩戜竴骞�":
+          this.dyat = 365;
+          break;
+        case "鑷畾涔�":
+          // 鑷畾涔夋棩鏈熷鐞嗗湪handleCustomDateChange鏂规硶涓�
+          return;
       }
-      this.getregionAmountCollect();
-      this.getUserWorks();
-      this.getregionCollect();
-      this.getregionOrderCount();
-      this.getNodeCount();
-      this.getPrtnerCount();
+      this.refreshData();
+    },
+
+    // 澶勭悊鑷畾涔夋棩鏈熷彉鍖�
+    handleCustomDateChange(range) {
+      if (!range || range.length !== 2) return;
+
+      this.customDateRange = range;
+      this.refreshData();
+    },
+
+    // 缁熶竴鍒锋柊鏁版嵁鐨勬柟娉�
+    refreshData() {
+      this.getgraphdata();
+      // this.getranking();
+      this.getTopdata();
+      this.myEcharts2();
       this.getnodeCollect();
       this.getSkuTop();
-      this.getOrderAmount();
     },
-    // 鏌辩姸鍥�
-    async getOrderAmount() {
-      // const res = await getOrderAmount(this.endatd, this.statd);
-      // this.cylinderXAxis = res.data.xAxis;
-      // this.cylinderSeries = res.data.series;
-      this.cylinderXAxis = [
-        "1鏈�",
-        "2鏈�",
-        "3鏈�",
-        "4鏈�",
-        "5鏈�",
-        "6鏈�",
-        "7鏈�",
-        "8鏈�",
-      ];
-      this.cylinderSeries = [123, 123, 223, 212, 432, 123, 442, 234];
-      this.myEcharts();
-    },
-    // 鑾峰彇鐐逛綅鎬绘暟
-    async getNodeCount() {
-      // const res = await getNodeCount();
-      // this.NodeCount = res.data;
-    },
-    // 鑾峰彇鍚堜綔鍟嗘�绘暟
-    async getPrtnerCount() {
-      // const res = await getPrtnerCount();
-      // this.PrtnerCount = res.data;
-    },
+
     // 鍚堜綔鍟嗙偣浣嶆眹鎬荤粺璁¢ゼ鐘跺浘
     async getnodeCollect() {
       // const res = await getnodeCollect();
       // this.nodeCollect = res.data;
       this.nodeCollect = [
-        { name: "娴欏ぇ涓�闄�", value: 12 },
-        { name: "娴欏ぇ浜岄櫌", value: 8 },
-        { name: "閲戝叞鍖婚櫌", value: 8 },
-        { name: "閭甸�稿か鍖婚櫌", value: 6 },
-        { name: "鐪佷汉姘戝尰闄�", value: 5 },
-        { name: "鏈濇櫀闄㈠尯", value: 4 },
+        { name: "褰卞儚闅忚", value: 1232 },
+        { name: "鍑洪櫌闅忚", value: 342 },
       ];
       this.myPieChart();
     },
     // top鎺掕
     async getSkuTop() {
-      // const res = await getSkuTop(10, this.endatd, this.statd);
-      // this.SkuTop = res.data;
-      this.SkuTop = [
-        { amount: 0, count: 123, skuId: "0", skuName: "鐜嬪ぇ澶�" },
-        { amount: 0, count: 122, skuId: "0", skuName: "鍚村ぇ澶�" },
-        { amount: 0, count: 112, skuId: "0", skuName: "鏉庝富浠�" },
-        { amount: 0, count: 111, skuId: "0", skuName: "寮犳姢澹�" },
-        { amount: 0, count: 102, skuId: "0", skuName: "鏉庢姢澹�" },
-        { amount: 0, count: 98, skuId: "0", skuName: "鍒樻姢澹�" },
-        { amount: 0, count: 89, skuId: "0", skuName: "椹ぇ澶�" },
-        { amount: 0, count: 88, skuId: "0", skuName: "椹ぇ澶�" },
-        { amount: 0, count: 87, skuId: "0", skuName: "椹ぇ澶�" },
-        { amount: 0, count: 67, skuId: "0", skuName: "椹ぇ澶�" },
-      ];
-    },
-    // 鑾峰彇宸ュ崟鏁伴噺
-    async getUserWorks() {
-      // const res = await getUserWork(this.atd, this.td);
-      // this.ticketStatistics = res.data[0];
-    },
-    // 鑾峰彇灏辫瘖鏁伴噺
-    async getregionOrderCount() {
-      // const res = await getregionOrderCount({
-      //   start: this.atd,
-      //   end: this.td,
-      // });
+      let Rankingdata = {
+        startDate: this.endatd,
+        endDate: this.statd,
+        cy: 1,
+      };
+      await getDeptRanking(Rankingdata).then((res) => {
+        if (res.code == 200) {
+          this.SkuTop = res.rows.sort((a, b) => b.rc - a.rc);
+          console.log(this.SkuTop, "this.SkuTop");
+        }
+      });
 
-      // this.order = res.data;
+      // this.SkuTop = [
+      //   { amount: 0, count: 123, skuId: "0", skuName: "蹇冭偤绉�" },
+      //   { amount: 0, count: 122, skuId: "0", skuName: "鑲捐剰绉�" },
+      //   { amount: 0, count: 112, skuId: "0", skuName: "娉屽翱绉�" },
+      //   { amount: 0, count: 111, skuId: "0", skuName: "鐢风" },
+      //   { amount: 0, count: 102, skuId: "0", skuName: "濡囦骇绉�" },
+      //   { amount: 0, count: 98, skuId: "0", skuName: "澶栫" },
+      //   { amount: 0, count: 89, skuId: "0", skuName: "鎬ヨ瘖" },
+      //   { amount: 0, count: 88, skuId: "0", skuName: "鍣ㄦ绉�" },
+      //   { amount: 0, count: 87, skuId: "0", skuName: "楠ㄧ" },
+      //   { amount: 0, count: 67, skuId: "0", skuName: "鏀惧皠绉�" },
+      //   { amount: 0, count: 89, skuId: "0", skuName: "鎬ヨ瘖" },
+      //   { amount: 0, count: 88, skuId: "0", skuName: "鍣ㄦ绉�" },
+      //   { amount: 0, count: 87, skuId: "0", skuName: "楠ㄧ" },
+      //   { amount: 0, count: 67, skuId: "0", skuName: "鏀惧皠绉�1" },
+      //   { amount: 0, count: 67, skuId: "0", skuName: "鏀惧皠绉�2" },
+      // ];
     },
-    // 鑾峰彇鎬婚噺鏁伴噺
-    async getregionCollect() {
-      // const res = await getregionCollect({
-      //   start: this.atd,
-      //   end: this.td,
-      // });
-      // this.Count = (res.data / 1000000).toFixed(2);
+    // 鑾峰彇澶撮儴鏁版嵁
+    getTopdata() {
+      let hospCountdata = {
+        startDate: this.endatd,
+        endDate: this.statd,
+        cy: 1,
+      };
+      let Countdata = {
+        startDate: this.endatd,
+        endDate: this.statd,
+        cy: 1,
+      };
+      // 鏌ヨ闂ㄨ瘖鐪嬬梾浜烘鍜屼汉鏁�
+      getEChartsPatMedOuthospCount(hospCountdata).then((res) => {
+        if (res.code == 200) {
+          this.OutpatientData = res.data;
+        }
+      });
+      // 鏌ヨ鍑恒�佸叆闄㈢湅鐥呬汉娆″拰浜烘暟
+      getechartsListCountdata(Countdata).then((res) => {
+        if (res.code == 200) {
+          this.DischargeData = res.data;
+        }
+      });
+    },
+    // 鑾峰彇涓儴绾挎煴鍥炬暟鎹�
+    getranking() {},
+
+    async getgraphdata() {
+      let params = {
+        startDate: this.endatd,
+        endDate: this.statd,
+        timeType: this.getTimeType()
+      };
+
+      try {
+        const res = await getServiceStatistics(params);
+        if (res.code === 200) {
+          this.processChartData(res.data);
+        }
+      } catch (error) {
+        console.error("鑾峰彇鍥捐〃鏁版嵁澶辫触:", error);
+      }
     },
 
-    // 鏌辩姸鍥�
-    myEcharts() {
-      // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
-      var echarts = require("echarts");
-      var myChart = echarts.init(document.getElementById("echars2"));
+    // 鑾峰彇鏃堕棿绫诲瀷
+    getTimeType() {
+      if (this.radio1 === "杩戜竴鍛�" || this.radio1 === "杩戜竴鏈�") {
+        return "day";
+      }
 
-      // 鎸囧畾鍥捐〃鐨勯厤缃」鍜屾暟鎹�
-      var option = {
-        title: {
-          text: "灏辫瘖鍒嗗竷",
-          left: "center",
-        },
-        grid: { top: "18%", left: "19%", right: "0%", bottom: "24%" },
+      if (this.radio1 === "杩戜竴骞�") {
+        return "month";
+      }
+
+      // 鑷畾涔夋棩鏈熻寖鍥�
+      if (this.radio1 === "鑷畾涔�" && this.customDateRange.length === 2) {
+        const start = dayjs(this.customDateRange[0]);
+        const end = dayjs(this.customDateRange[1]);
+        const diffDays = end.diff(start, 'day');
+
+        return diffDays > 60 ? "month" : "day";
+      }
+
+      return "day"; // 榛樿杩斿洖day绫诲瀷
+    },
+    processChartData(data) {
+      // 鎸夋椂闂存帓搴忕‘淇濇暟鎹『搴忔纭�
+      const sortedData = [...data].sort(
+        (a, b) => new Date(a.timePeriod) - new Date(b.timePeriod)
+      );
+
+      const xAxisData = [];
+      const dischargeFollowData = [];
+      const outpatientFollowData = [];
+      const pmiData = [];
+      const pmoData = [];
+
+      sortedData.forEach((item) => {
+  // 鏍规嵁鏃堕棿绫诲瀷鏍煎紡鍖栨樉绀�
+  const timeType = this.getTimeType();
+  const timeLabel = timeType === "day"
+    ? dayjs(item.timePeriod).format("MM-DD")
+    : dayjs(item.timePeriod).format("YYYY-MM");
+
+  xAxisData.push(timeLabel);
+  dischargeFollowData.push(item.dischargeFollowCount);
+  outpatientFollowData.push(item.outpatientFollowCount);
+  pmiData.push(item.pmiCount);
+  pmoData.push(item.pmoCount);
+});
+
+      // 鏇存柊鍥捐〃
+      this.updateChart(
+        xAxisData,
+        dischargeFollowData,
+        outpatientFollowData,
+        pmiData,
+        pmoData
+      );
+    },
+    updateChart(
+      xAxisData,
+      dischargeFollowData,
+      outpatientFollowData,
+      pmiData,
+      pmoData
+    ) {
+      if (!this.myChart2) {
+        this.myEcharts2();
+        return;
+      }
+
+      // 璁$畻闅忚閲忕殑鏈�澶у��
+      const maxFollow = Math.max(
+        ...dischargeFollowData,
+        ...outpatientFollowData
+      );
+      // 璁$畻鏈嶅姟浜烘鐨勬渶澶у��
+      const maxService = Math.max(...pmiData, ...pmoData);
+
+      // 鍔ㄦ�佽绠梚nterval鍊�
+      const followInterval = this.calculateOptimalInterval(maxFollow);
+      const serviceInterval = this.calculateOptimalInterval(maxService);
+
+      const option = {
         xAxis: {
-          type: "category",
-          data: this.cylinderXAxis,
+          data: xAxisData,
         },
-        yAxis: {
-          type: "value",
-          name: "鍗曚綅/鍏�",
-        },
-        series: [
+        yAxis: [
           {
-            data: this.cylinderSeries,
-            barWidth: "5%",
-            type: "bar",
+            interval: followInterval,
+            max: Math.ceil(maxFollow / followInterval) * followInterval,
           },
+          {
+            interval: serviceInterval,
+            max: Math.ceil(maxService / serviceInterval) * serviceInterval,
+          },
+        ],
+        series: [
+          { data: dischargeFollowData },
+          { data: outpatientFollowData },
+          { data: pmiData },
+          { data: pmoData },
         ],
       };
 
-      // 浣跨敤鍒氭寚瀹氱殑閰嶇疆椤瑰拰鏁版嵁鏄剧ず鍥捐〃銆�
-      myChart.setOption(option);
+      this.myChart2.setOption(option);
+    },
+
+    // 璁$畻鏈�浼樼殑interval鍊�
+    calculateOptimalInterval(maxValue) {
+      if (maxValue <= 0) return 50; // 榛樿鍊�
+
+      // 鏍规嵁鏈�澶у�艰绠楀悎閫傜殑闂撮殧
+      const magnitude = Math.pow(10, Math.floor(Math.log10(maxValue)));
+      const stepRatio = maxValue / magnitude;
+
+      let interval;
+      if (stepRatio > 5) {
+        interval = magnitude;
+      } else if (stepRatio > 2) {
+        interval = magnitude / 2;
+      } else {
+        interval = magnitude / 5;
+      }
+
+      // 纭繚interval鏄暣鏁�
+      interval = Math.round(interval);
+
+      // 闄愬埗鏈�灏忛棿闅�
+      return Math.max(interval, 50);
     },
     // 鑾峰彇绾跨姸鍥炬椂闂�
     async getregionAmountCollect() {
-      // const res = await getregionAmountCollect(1, this.endatd, this.statd);
+      //getregionAmountCollect(1, this.endatd, this.statd);
       // this.xAxis = res.data.xAxis;
       // this.series = res.data.series;
-      this.xAxis = [
-        "1鏈�",
-        "2鏈�",
-        "3鏈�",
-        "4鏈�",
-        "5鏈�",
-        "6鏈�",
-        "7鏈�",
-        "8鏈�",
-      ];
+      this.xAxis = ["1鏈�", "2鏈�", "3鏈�", "4鏈�", "5鏈�", "6鏈�", "7鏈�", "8鏈�"];
       this.series = [123, 123, 223, 212, 432, 123, 442, 234];
       this.myEcharts2();
     },
-    // 绾挎�у浘
+    // 绾挎�у浘鍙婃煴鐘跺浘
     myEcharts2() {
       var echarts = require("echarts");
       var myChart2 = echarts.init(document.getElementById("echars"));
+      this.myChart2 = myChart2;
+
       var option2 = {
-        color: ["red"],
-        title: {
-          text: "灏辫瘖瓒嬪娍鍥�",
-          left: "center",
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            type: "cross",
+            crossStyle: {
+              color: "#999",
+            },
+          },
         },
-        grid: { top: "18%", left: "17%", right: "0%", bottom: "24%" },
-        xAxis: {
-          type: "category",
-          data: this.xAxis,
-          boundaryGap: true,
+        toolbox: {
+          feature: {
+            dataView: { show: true, readOnly: false },
+            magicType: { show: true, type: ["line", "bar"] },
+            restore: { show: true },
+            saveAsImage: { show: true },
+          },
         },
-        yAxis: {
-          name: "鍗曚綅/鍏�",
-          type: "value",
+        legend: {
+          data: ["鍑洪櫌鏈嶅姟閲�", "闂ㄨ瘖鏈嶅姟閲�", "鍑洪櫌灏辫瘖浜烘", "闂ㄨ瘖灏辫瘖浜烘"],
         },
+        xAxis: [
+          {
+            type: "category",
+            data: [], // 鍒濆涓虹┖锛屽皢閫氳繃API鏁版嵁濉厖
+            axisPointer: {
+              type: "shadow",
+            },
+          },
+        ],
+        yAxis: [
+          {
+            type: "value",
+            name: "闅忚閲�",
+            min: 0,
+            axisLabel: {
+              formatter: "{value} 浜�",
+            },
+          },
+          {
+            type: "value",
+            name: "鏈嶅姟浜烘",
+            min: 0,
+            axisLabel: {
+              formatter: "{value} 娆�",
+            },
+          },
+        ],
+        grid: { top: "35%" },
         series: [
           {
-            data: this.series,
+            name: "鍑洪櫌鏈嶅姟閲�",
+            type: "bar",
+            tooltip: {
+              valueFormatter: function (value) {
+                return value + " 浜�";
+              },
+            },
+            data: [], // 鍒濆涓虹┖锛屽皢閫氳繃API鏁版嵁濉厖
+          },
+          {
+            name: "闂ㄨ瘖鏈嶅姟閲�",
+            type: "bar",
+            tooltip: {
+              valueFormatter: function (value) {
+                return value + " 浜�";
+              },
+            },
+            data: [], // 鍒濆涓虹┖锛屽皢閫氳繃API鏁版嵁濉厖
+          },
+          {
+            name: "鍑洪櫌灏辫瘖浜烘",
             type: "line",
+            smooth: 0.3,
+            yAxisIndex: 1,
+            tooltip: {
+              valueFormatter: function (value) {
+                return value + " 娆�";
+              },
+            },
+            data: [], // 鍒濆涓虹┖锛屽皢閫氳繃API鏁版嵁濉厖
+          },
+          {
+            name: "闂ㄨ瘖灏辫瘖浜烘",
+            type: "line",
+            smooth: 0.3,
+            yAxisIndex: 1,
+            tooltip: {
+              valueFormatter: function (value) {
+                return value + " 娆�";
+              },
+            },
+            data: [], // 鍒濆涓虹┖锛屽皢閫氳繃API鏁版嵁濉厖
           },
         ],
       };
+
       myChart2.setOption(option2);
+
+      // 鍒濆鍔犺浇鏁版嵁
+      this.getgraphdata();
     },
     // 楗肩姸鍥�
     myPieChart() {
       // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
       var echarts = require("echarts");
       var mypPieCharts = echarts.init(document.getElementById("pieCharts"));
-
+      this.mypPieCharts = mypPieCharts;
       // 鎸囧畾鍥捐〃鐨勯厤缃」鍜屾暟鎹�
       var optionPie = {
-        title: {
-          left: "left",
-        },
-
+        legend: {},
         tooltip: {
-          trigger: "item",
-          formatter: "{b}<br/>鎬诲崰姣� : {d}% ",
+          trigger: "axis",
+          showContent: true,
         },
-        toolbox: {
-          show: true,
-          feature: {
-            mark: { show: true },
-          },
+        dataset: {
+          source: [
+            ["product", "2012", "2013", "2014", "2015", "2016", "2017"],
+            ["鍑洪櫌瀹f暀", 56, 82, 88, 70, 53, 85],
+            ["鍦ㄩ櫌瀹f暀", 51, 51, 55, 53, 73, 68],
+            ["闂ㄨ瘖瀹f暀", 40, 62, 69, 36, 45, 32],
+          ],
         },
+        xAxis: { type: "category" },
+        yAxis: { gridIndex: 0 },
+        grid: { top: "25%", left: "10%", right: "40%", bottom: "10%" },
         series: [
           {
-            name: "鍚堜綔鍟嗙偣浣嶆暟Top5",
+            name: "鍑洪櫌瀹f暀",
+            type: "line",
+            smooth: true,
+            seriesLayoutBy: "row",
+            emphasis: { focus: "series" },
+          },
+          {
+            name: "鍦ㄩ櫌瀹f暀",
+            type: "line",
+            smooth: true,
+            seriesLayoutBy: "row",
+            emphasis: { focus: "series" },
+          },
+          {
+            name: "闂ㄨ瘖瀹f暀",
+            type: "line",
+            smooth: true,
+            seriesLayoutBy: "row",
+            emphasis: { focus: "series" },
+          },
+          {
             type: "pie",
-            radius: ["10%", "70%"],
-            center: ["50%", "50%"],
-            roseType: "radius",
-            data: this.nodeCollect,
+            id: "pie",
+            radius: ["40%", "70%"],
+            center: ["80%", "50%"],
+            emphasis: {
+              focus: "self",
+            },
+            itemStyle: {
+              borderRadius: 10,
+              borderColor: "#fff",
+              borderWidth: 2,
+            },
+            label: {
+              formatter: "{b}: {@2012}",
+            },
+            encode: {
+              itemName: "product",
+              value: "2012",
+              tooltip: "2012",
+            },
           },
         ],
       };
+      mypPieCharts.on("updateAxisPointer", function (event) {
+        const xAxisInfo = event.axesInfo[0];
+        if (xAxisInfo) {
+          const dimension = xAxisInfo.value + 1;
+          mypPieCharts.setOption({
+            series: {
+              id: "pie",
+              label: {
+                formatter: "{b}: {@[" + dimension + "]} ",
+              },
+              encode: {
+                value: dimension,
+                tooltip: dimension,
+              },
+            },
+          });
+        }
+      });
 
       // 浣跨敤鍒氭寚瀹氱殑閰嶇疆椤瑰拰鏁版嵁鏄剧ず鍥捐〃銆�
       mypPieCharts.setOption(optionPie);
+    },
+    // 椤甸潰鍙樺寲璋冩暣澶у皬
+    handleResize() {
+      console.log(111);
+      // 璋冩暣 ECharts 鍥捐〃澶у皬
+      if (this.myChart2) {
+        this.myChart2.resize();
+      }
+      if (this.mypPieCharts) {
+        this.mypPieCharts.resize();
+      }
+    },
+    setInterval() {
+      this.intervalId = setInterval(() => {
+        if (window.innerWidth != this.lastWidth) {
+          this.lastWidth = window.innerWidth;
+          console.log("绐楀彛澶у皬鍙兘琚墜鍔ㄨ皟鏁翠簡");
+          this.handleResize();
+        }
+      }, 1000);
     },
   },
 };
@@ -466,15 +882,13 @@
   padding: 0;
   margin: 0;
 }
+
 .boxEchars {
   width: 100%;
-  height: 280px;
+  height: 40vh;
   margin-top: 45px;
   display: flex;
   .echars1 {
-    flex: 1;
-  }
-  .echars2 {
     flex: 1;
   }
 }
@@ -560,7 +974,8 @@
 }
 .empenty {
   width: 100%;
-  height: 280px;
+  padding: 20px 0;
+  min-height: 280px;
 }
 .cooperate {
   width: 100%;
@@ -568,13 +983,13 @@
   margin-top: 25px;
   display: flex;
   .pieChart {
-    flex: 3;
+    flex: 1;
   }
   .Points {
     width: 154px;
     height: 230px;
-    padding-top: 47px;
-    padding-left: 38px;
+    text-align: center;
+    padding: 20px 0;
     background: linear-gradient(135deg, transparent, #f8f8f9 0) 0 0,
       linear-gradient(-135deg, transparent 12px, #f8f8f9 0) 100% 0,
       linear-gradient(-45deg, transparent, #f8f8f9 0) 100% 100%,
@@ -690,6 +1105,10 @@
     line-height: 17px;
   }
 }
+::v-deep.aside .el-table__header-wrapper {
+  overflow: hidden;
+  display: none;
+}
 .headerBox {
   height: 150px;
   padding: 25px;
@@ -709,13 +1128,33 @@
 .bg-purple {
   background: #fff;
 }
+.bg-purples {
+  color: #206abe;
+  font-size: 18px;
+}
 .bg-purple-light {
   background: #e5e9f2;
+  text-align: center;
+  align-items: center;
+  line-height: 36px;
+  width: 6vw;
+}
+.subtitle {
+  text-align: center;
+  align-items: center;
 }
 .grid-content {
   min-height: 36px;
   border-radius: 20px;
-  padding: 0 20px;
+  padding: 0 10px;
+  text-align: center;
+}
+
+.grid-contents {
+  min-height: 36px;
+  border-radius: 20px;
+  padding: 0 10px;
+  padding-right: 0;
 }
 .row-bg {
   padding: 10px 0;

--
Gitblit v1.9.3