b7f7f38d7ead0939d82a8a0fb301b30b72398acc..99b062eeca471bdcbfcacd88e308fab9972cd6ec
5 天以前 WXL (wul)
展示优化
99b062 对比 | 目录
5 天以前 WXL (wul)
统计页面展示优化
535ac7 对比 | 目录
5 天以前 WXL (wul)
统计页面数据接入
130894 对比 | 目录
5 天以前 WXL (wul)
统计页面数据接入
2575f3 对比 | 目录
已添加1个文件
已修改2个文件
621 ■■■■■ 文件已修改
src/api/AiCentre/EChartsdata.js 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/index.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/index.vue 559 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/EChartsdata.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
import request from "@/utils/request";
// æŸ¥è¯¢é—¨è¯Šçœ‹ç—…人次和人数
export function getEChartsPatMedOuthospCount(data) {
  return request({
    url: "/smartor/patouthosp/selectPatMedOuthospCount",
    method: "post",
    data: data,
  });
}
// æŸ¥è¯¢å‡ºã€å…¥é™¢çœ‹ç—…人次和人数
export function getechartsListCountdata(data) {
  return request({
    url: "/smartor/patinhosp/selectPatMedInhospListCount",
    method: "post",
    data: data,
  });
}
// æŸ¥è¯¢æ‚£è€…门诊记录列表
export function getechartsMedOuthospList(data) {
  return request({
    url: "/smartor/patouthosp/selectPatMedOuthospList",
    method: "post",
    data: data,
  });
}
// é¦–页中部数据
export function getServiceStatistics(data) {
  return request({
    url: "/smartor/serviceSubtask/getServiceStatistics",
    method: "post",
    data: data,
  });
}
// æŸ¥è¯¢æ‚£è€…住院记录列表
export function getechartsMedInhospList(data) {
  return request({
    url: "/smartor/patinhosp/selectPatMedInhospList",
    method: "post",
    data: data,
  });
}
// æŸ¥è¯¢å½“前登陆人自己(病区、部门)的患者住院记录列表
export function getechartsandData(data) {
  return request({
    url: "/smartor/patinhosp/selectPatMedInhospListByCondition",
    method: "post",
    data: data,
  });
}
// å„科室服务人次
export function getDeptRanking(data) {
  return request({
    url: "/smartor/patinhosp/getDeptRanking",
    method: "post",
    data: data,
  });
}
src/api/AiCentre/index.js
@@ -9,3 +9,4 @@
export * from './external'
export * from './Homeimage'
export * from './patientexternal'
export * from './EChartsdata'
src/views/index.vue
@@ -7,49 +7,48 @@
          <!-- å°±è¯Šç»Ÿè®¡ç›’子 -->
          <div class="grid-content bg-purple headerBox bgc1">
            <div class="title">
              æ‚£è€…统计<span
              é—¨è¯ŠæœåŠ¡<span
                style="
                  font-size: 25px;
                  font-weight: 600;
                  text-shadow: 2px 4px 7px rgb(85 132 255 / 50%);
                  color: black;
                "
                >{{0}} (人)</span
              >
              ></span>
              <span>{{ endatd }} ~ {{ statd }}</span>
            </div>
            <el-row :gutter="20">
              <el-col :span="8">
              <el-col :span="10">
                <div class="home-user-task-stats">
                  <p>{{ 0 }}</p>
                  <p>{{ OutpatientData.rc }}</p>
                  <div class="text-color2">
                    <p>门诊总数(人)</p>
                    <p>门诊就诊量(人次)</p>
                  </div>
                </div>
              </el-col>
              <el-col :span="7">
              <el-col :span="10">
                <div class="home-user-task-stats">
                  <p>{{ 0 }}</p>
                  <p>{{ OutpatientData.rs }}</p>
                  <div class="text-color2">
                    <p>住院总数(人)</p>
                    <p>门诊服务量(人次)</p>
                  </div>
                </div>
              </el-col>
              <el-col :span="7">
              <!-- <el-col :span="7">
                <div class="home-user-task-stats">
                  <p>{{ 0 }}</p>
                  <p>{{ 1209 }}</p>
                  <div class="text-color2">
                    <p>体检总数(人)</p>
                  </div>
                </div>
              </el-col>
              </el-col> -->
            </el-row>
          </div>
        </el-col>
        <el-col :span="9">
          <div class="grid-content bg-purple headerBox bgc2">
            <div class="title">
              é—¨è¯ŠæœåŠ¡æ€»æ•°
              å‡ºé™¢æœåŠ¡
              <span
                style="
                  font-size: 25px;
@@ -57,24 +56,23 @@
                  font-weight: 600;
                  color: red;
                "
                >12322 (人)</span
              >
              ></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">{{ 0 }}</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">{{ 0 }}</p>
                  <p style="color: red">{{ DischargeData.rs }}</p>
                  <div class="text-color2">
                    <p>体检服务人数</p>
                    <p>出院服务量(人次)</p>
                  </div>
                </div>
              </el-col>
@@ -88,7 +86,7 @@
          <!-- echars数据可视化 -->
          <div class="grid-content bg-purple" style="min-height: 365px">
            <div class="title">
              å°±è¯Šç»Ÿè®¡
              æœåŠ¡ç»Ÿè®¡
              <span>{{ endatd }} ~ {{ statd }}</span>
              <el-radio-group
                v-model="radio1"
@@ -96,32 +94,52 @@
                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>
          </div>
        </el-col>
        <!-- ä¸­é—´å’Œå³è¾¹ -->
        <!-- å³è¾¹åˆ—表 -->
        <el-col :span="4" class="aside">
          <div class="grid-content bg-purple" style="margin-top: -180px">
          <div class="grid-contentsa bg-purple" style="margin-top: -180px">
            <div class="title">
              å¥åº·å®£æ•™
              ç§‘室服务量
              <span>{{ endatd }} ~ {{ statd }}</span>
            </div>
            <div style="max-height: 690px; width: 100%; overflow: auto">
              <el-table style="width: 100%" :data="SkuTop">
            <div class="dept-table-container">
              <el-table
                v-if="SkuTop.length > 0"
                style="width: 100%"
                :data="SkuTop"
                :height="tableHeight"
              >
                <template v-for="(item, index) in SkuTop"></template>
                <el-table-column
                  prop="order"
@@ -130,35 +148,36 @@
                  type="index"
                ></el-table-column>
                <el-table-column
                  prop="skuName"
                  width="88"
                  prop="deptname"
                  width="120"
                  class-name="name"
                ></el-table-column>
                <el-table-column prop="count" class-name="count">
                  <template slot-scope="scope">
                    {{ scope.row.count }}次
                  </template>
                <el-table-column prop="rc" class-name="rc">
                  <template slot-scope="scope"> {{ scope.row.rc }}次 </template>
                </el-table-column>
              </el-table>
              <div v-else class="empty-tip">
                <el-empty description="暂无科室服务数据"></el-empty>
              </div>
            </div>
          </div>
        </el-col>
      </el-row>
      <!-- åº•部一个 -->
      <el-row :gutter="20" style="margin-bottom: 20px">
        <el-col :span="15">
        <!-- <el-col :span="24">
          <div class="grid-content bg-purple" style="min-height: 300px">
            <div class="title">
              å®£æ•™ç»Ÿè®¡
              <span class="el-icon-s-unfold moreIcon"></span>
            </div>
            <div class="cooperate">
              <!-- åˆä½œåŒºåŸŸ -->
              <div class="pieChart" id="pieCharts"></div>
            </div>
          </div>
        </el-col>
        <el-col :span="9">
        </el-col> -->
        <!-- <el-col :span="9">
          <div class="grid-content bg-purple" style="min-height: 300px">
            <div class="title">
              å„项服务统计
@@ -220,7 +239,7 @@
                >
                <el-col :span="7">
                  <div style="display: flex">
                    <div class="subtitle">门诊随访</div>
                    <div class="subtitle">影像随访</div>
                    <div class="grid-contents bg-purple-light">0次</div>
                  </div>
                </el-col>
@@ -281,7 +300,7 @@
              </el-row>
            </div>
          </div>
        </el-col>
        </el-col> -->
      </el-row>
    </div>
  </div>
@@ -289,13 +308,14 @@
<script>
import {
  getoutpatientamount,
  getInhospital,
  getBarchart,
  getQtemplateobj,
  getEChartsPatMedOuthospCount,
  getechartsListCountdata,
  getechartsMedOuthospList,
  getechartsMedInhospList,
  getServiceStatistics,
  getDeptRanking,
} from "@/api/AiCentre/index";
import dayjs from "dayjs";
import { data } from "jquery";
export default {
  name: "home",
@@ -308,8 +328,21 @@
      mypPieCharts: null,
      lastWidth: window.innerWidth,
      lastHeight: window.innerHeight,
      radio1: "周",
      radio1: "近一年",
      ticketStatistics: {},
      timeTypeMap: {
        å‘¨: "day",
        æœˆ: "month",
        å¹´: "year",
      },
      DischargeData: {
        rs: "",
        rc: "",
      },
      OutpatientData: {
        rs: "",
        rc: "",
      },
      order: "",
      Count: "",
      datatni: [],
@@ -319,7 +352,8 @@
      SkuTop: [],
      cylinderSeries: [],
      cylinderXAxis: [],
      dyat: 30,
      customDateRange: [], // è‡ªå®šä¹‰æ—¥æœŸèŒƒå›´
      dyat: 365,
      intervalId: null,
    };
  },
@@ -333,18 +367,34 @@
      return dayjs().subtract(this.dyat, "day").format("YYYY-MM-DD HH:mm:ss");
    },
    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");
    },
    tableHeight() {
      // æ ¹æ®æ•°æ®é‡åŠ¨æ€è®¡ç®—é«˜åº¦
      const rowHeight = 40; // æ¯è¡Œå¤§çº¦é«˜åº¦
      const headerHeight = 40; // è¡¨å¤´é«˜åº¦
      const minHeight = 500; // æœ€å°é«˜åº¦
      const maxHeight = 600; // æœ€å¤§é«˜åº¦
      const calculatedHeight = this.SkuTop.length * rowHeight + headerHeight;
      return Math.min(Math.max(calculatedHeight, minHeight), maxHeight);
    },
  },
  created() {
    // this.getoutpatientamount();
    // this.getInhospital();
    // this.getBarchart();
    this.getTopdata();
    this.getgraphdata();
    // this.getranking();
    this.$nextTick(function () {
      this.getregionAmountCollect();
      this.myEcharts2();
      this.getnodeCollect();
      this.getSkuTop();
    });
@@ -361,17 +411,37 @@
  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.getoutpatientamount();
      // this.getInhospital();
      // this.getBarchart();
      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();
    },
@@ -381,45 +451,217 @@
      // const res = await getnodeCollect();
      // this.nodeCollect = res.data;
      this.nodeCollect = [
        { name: "门诊随访", value: 1232 },
        { 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: "放射科" },
        // { 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: "放射科" },
      ];
      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.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" },
      // ];
    },
    // èŽ·å–é—¨è¯ŠåŸºç¡€æ•°æ®
    getoutpatientamount() {
      getoutpatientamount().then((res) => {});
    // èŽ·å–å¤´éƒ¨æ•°æ®
    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;
        }
      });
    },
    // èŽ·å–å°±è¯Šæ•°é‡
    getBarchart() {
      getBarchart().then((res) => {});
    },
    // èŽ·å–æ€»é‡æ•°é‡
    getInhospital() {
      getInhospital().then((res) => {});
    // èŽ·å–ä¸­éƒ¨çº¿æŸ±å›¾æ•°æ®
    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);
      }
    },
    // èŽ·å–æ—¶é—´ç±»åž‹
    getTimeType() {
      if (this.radio1 === "近一周" || this.radio1 === "近一月") {
        return "day";
      }
      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);
      // åŠ¨æ€è®¡ç®—interval值
      const followInterval = this.calculateOptimalInterval(maxFollow);
      const serviceInterval = this.calculateOptimalInterval(maxService);
      const option = {
        xAxis: {
          data: xAxisData,
        },
        yAxis: [
          {
            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 },
        ],
      };
      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() {
      //getregionAmountCollect(1, this.endatd, this.statd);
@@ -429,11 +671,12 @@
      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 = {
        tooltip: {
          trigger: "axis",
@@ -453,30 +696,12 @@
          },
        },
        legend: {
          data: [
            "出院随访量",
            "门诊随访量",
            "在院随访量",
            "门诊复诊通知",
            "出院复诊通知",
            "在院评估量",
          ],
          data: ["出院服务量", "门诊服务量", "出院就诊人次", "门诊就诊人次"],
        },
        xAxis: [
          {
            type: "category",
            data: [
              "一月",
              "二月",
              "三月",
              "四月",
              "五月",
              "六月",
              "七月",
              "八月",
              "九月",
              "十月",
            ],
            data: [], // åˆå§‹ä¸ºç©ºï¼Œå°†é€šè¿‡API数据填充
            axisPointer: {
              type: "shadow",
            },
@@ -487,18 +712,14 @@
            type: "value",
            name: "随访量",
            min: 0,
            max: 250,
            interval: 50,
            axisLabel: {
              formatter: "{value} äºº",
            },
          },
          {
            type: "value",
            name: "复诊/评估次数",
            name: "服务人次",
            min: 0,
            max: 250,
            interval: 50,
            axisLabel: {
              formatter: "{value} æ¬¡",
            },
@@ -507,42 +728,27 @@
        grid: { top: "35%" },
        series: [
          {
            name: "出院随访量",
            name: "出院服务量",
            type: "bar",
            tooltip: {
              valueFormatter: function (value) {
                return value + " äºº";
              },
            },
            // data: [120, 150, 165, 90, 140, 200, 130, 85, 175, 95, 110, 160],
            data:[],
            data: [], // åˆå§‹ä¸ºç©ºï¼Œå°†é€šè¿‡API数据填充
          },
          {
            name: "门诊随访量",
            name: "门诊服务量",
            type: "bar",
            tooltip: {
              valueFormatter: function (value) {
                return value + " äºº";
              },
            },
            // data: [102, 190, 135, 88, 175, 160, 83, 145, 200, 110, 97, 180],
            data:[],
            data: [], // åˆå§‹ä¸ºç©ºï¼Œå°†é€šè¿‡API数据填充
          },
          {
            name: "在院随访量",
            type: "bar",
            tooltip: {
              valueFormatter: function (value) {
                return value + " äºº";
              },
            },
            // data: [145, 92, 178, 134, 167, 85, 199, 112, 156, 88, 120, 145],
            data:[],
          },
          {
            name: "出院复诊通知",
            name: "出院就诊人次",
            type: "line",
            smooth: 0.3,
            yAxisIndex: 1,
@@ -551,12 +757,10 @@
                return value + " æ¬¡";
              },
            },
            // data: [45, 123, 78, 156, 89, 34, 199, 112, 67, 145, 88, 175],
            data:[],
            data: [], // åˆå§‹ä¸ºç©ºï¼Œå°†é€šè¿‡API数据填充
          },
          {
            name: "门诊复诊通知",
            name: "门诊就诊人次",
            type: "line",
            smooth: 0.3,
            yAxisIndex: 1,
@@ -565,45 +769,15 @@
                return value + " æ¬¡";
              },
            },
            // data: [102, 190, 135, 88, 175, 160, 83, 145, 200, 110, 97, 180],
            data:[],
          },
          {
            name: "在院评估量",
            type: "line",
            smooth: 0.3,
            yAxisIndex: 1,
            tooltip: {
              valueFormatter: function (value) {
                return value + " æ¬¡";
              },
            },
            // data: [120, 150, 165, 90, 140, 200, 130, 85, 175, 95, 110, 160],
            data:[],
            data: [], // åˆå§‹ä¸ºç©ºï¼Œå°†é€šè¿‡API数据填充
          },
        ],
      };
      myChart2.on("updateAxisPointer", function (event) {
        const xAxisInfo = event.axesInfo[0];
        if (xAxisInfo) {
          const dimension = xAxisInfo.value + 1;
          myChart2.setOption({
            series: {
              id: "pie",
              label: {
                formatter: "{b}: {@[" + dimension + "]} ",
              },
              encode: {
                value: dimension,
                tooltip: dimension,
              },
            },
          });
        }
      });
      myChart2.setOption(option2);
      // åˆå§‹åŠ è½½æ•°æ®
      this.getgraphdata();
    },
    // é¥¼çж图
    myPieChart() {
@@ -620,13 +794,10 @@
        },
        dataset: {
          source: [
            ["product", "2020", "2021", "2022", "2023", "2024", "2025"],
            // ["出院宣教", 56, 82, 88, 70, 53, 85],
            // ["在院宣教", 51, 51, 55, 53, 73, 68],
            // ["门诊宣教", 40, 62, 69, 36, 45, 32],
            ["出院宣教", ],
            ["在院宣教", ],
            ["门诊宣教", ],
            ["product", "2012", "2013", "2014", "2015", "2016", "2017"],
            ["出院宣教", 56, 82, 88, 70, 53, 85],
            ["在院宣教", 51, 51, 55, 53, 73, 68],
            ["门诊宣教", 40, 62, 69, 36, 45, 32],
          ],
        },
        xAxis: { type: "category" },
@@ -738,6 +909,12 @@
  .echars1 {
    flex: 1;
  }
}
.dept-table-container {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0; /* é‡è¦ï¼šå…è®¸å†…容收缩 */
}
::v-deep .el-table {
  td:first-child {
@@ -994,7 +1171,15 @@
  min-height: 36px;
  border-radius: 20px;
  padding: 0 10px;
  text-align: center;
}
.grid-contentsa {
  min-height: 600px;
  border-radius: 20px;
  padding: 0 10px;
  text-align: center;
}
.grid-contents {
  min-height: 36px;
  border-radius: 20px;