| | |
| | | <el-col :span="10"> |
| | | <div class="home-user-task-stats"> |
| | | <p>{{ OutpatientData.rc }}</p> |
| | | <p>{{ OutpatientData.rc }}</p> |
| | | <div class="text-color2"> |
| | | <p>门诊就诊量(人次)</p> |
| | | </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" |
| | |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="deptname" |
| | | width="88" |
| | | width="120" |
| | | class-name="name" |
| | | ></el-table-column> |
| | | |
| | |
| | | <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="24"> |
| | | <!-- <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> --> |
| | | <!-- <el-col :span="9"> |
| | | <div class="grid-content bg-purple" style="min-height: 300px"> |
| | | <div class="title"> |
| | |
| | | mypPieCharts: null, |
| | | lastWidth: window.innerWidth, |
| | | lastHeight: window.innerHeight, |
| | | radio1: "近一周", |
| | | radio1: "近一年", |
| | | ticketStatistics: {}, |
| | | timeTypeMap: { |
| | | 周: "day", |
| | |
| | | cylinderSeries: [], |
| | | cylinderXAxis: [], |
| | | customDateRange: [], // 自定义日期范围 |
| | | dyat: 6, |
| | | dyat: 365, |
| | | intervalId: null, |
| | | }; |
| | | }, |
| | |
| | | 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 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() { |
| | |
| | | let params = { |
| | | startDate: this.endatd, |
| | | endDate: this.statd, |
| | | timeType: this.getTimeType() |
| | | timeType: this.getTimeType(), |
| | | }; |
| | | |
| | | try { |
| | |
| | | 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'); |
| | | const diffDays = end.diff(start, "day"); |
| | | |
| | | return diffDays > 60 ? "month" : "day"; |
| | | } |
| | |
| | | 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"); |
| | | // 根据时间类型格式化显示 |
| | | 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); |
| | | }); |
| | | xAxisData.push(timeLabel); |
| | | dischargeFollowData.push(item.dischargeFollowCount); |
| | | outpatientFollowData.push(item.outpatientFollowCount); |
| | | pmiData.push(item.pmiCount); |
| | | pmoData.push(item.pmoCount); |
| | | }); |
| | | |
| | | // 更新图表 |
| | | this.updateChart( |
| | |
| | | flex: 1; |
| | | } |
| | | } |
| | | .dept-table-container { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | min-height: 0; /* 重要:允许内容收缩 */ |
| | | } |
| | | ::v-deep .el-table { |
| | | td:first-child { |
| | | .cell { |
| | |
| | | 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; |