<template> <div class="dataCenter"> <div class="header"> <div v-for="(item, index) in headList" :key="index" :class="['btn', selectedIndex == index ? 'active' : '']" @click="setSelectedIndex(index)" > {{ item }} </div> </div> <customs-table ref="table" :table-data="tableData" :columns="columns" :header-class="'newHeader'" :list-loading="listLoading" :current-page="pageIndex" :total-count="total" :page-sizes="pageSizes" :page-size="pageSize" @pageSizeChange="handleSizeChange" @currentPageChange="handleCurrentChange" showSummary :getSummaries="getSummaries" /> </div> </template> <script> import CustomsTable from "@/components/CustomsTable" import paginationMixin from "@/components/TabComponents/mixin" import { getPatientPage, getReportCount } from "@/api/dataoverview.js" export default { // 数据概览 name: "", components: { CustomsTable, }, mixins: [paginationMixin], data() { return { listLoading: false, selectedIndex: sessionStorage.getItem("homeSelectedIndex") - 0 || 0, headList: ["筛查概览", "社区筛查", "医院筛查", "体检筛查"], columns: [ { label: "医联体", minWidth: 120, value: "unionName", }, { label: "累计上报量", minWidth: 100, value: "report", }, { label: "最近一季度上报量", minWidth: 120, value: "lastQuarter", }, { label: "累计审核合格量", minWidth: 120, value: "pass", }, { label: "高风险", minWidth: 80, value: "high", }, { label: "中风险", minWidth: 80, value: "middle", }, { label: "低风险", minWidth: 80, value: "low", }, { label: "高级别上皮内瘤变", minWidth: 120, value: "inogmCount", }, { label: "早期胃癌", minWidth: 80, value: "earlyGas", }, { label: "进展期胃癌", minWidth: 80, value: "periodGas", }, { label: "内镜数量", minWidth: 80, value: "gasCount", }, ], tableData: [], reportMap: { middle: 10, }, } }, watch: {}, mounted() { this.handleSearch() this.getReportCount() }, methods: { getSummaries() { const sums = [] this.columns.map((c, i) => { if (i === 0) { sums[0] = "总计" } else { sums[i] = this.reportMap[c.value] || "--" } }) return sums }, setSelectedIndex(i) { this.selectedIndex = i this.pageIndex = 1 this.handleSearch() this.getReportCount() sessionStorage.setItem("homeSelectedIndex", this.selectedIndex) }, getReportCount() { getReportCount({ patientFrom: this.selectedIndex == "0" ? null : this.selectedIndex, }).then((res) => { this.reportMap = res.data }) }, handleSearch() { this.listLoading = true let data = { size: this.pageSize, current: this.pageIndex, patientFrom: this.selectedIndex == "0" ? null : this.selectedIndex, } getPatientPage(data).then((res) => { this.listLoading = false if (res.code === 1) { const d = res.data this.tableData = d.records || [] this.total = Number(d.total) } this.listLoading = false }) }, }, } </script> <style lang="scss" scoped> .dataCenter { padding: 24px; height: 100%; display: flex; flex-direction: column; .header { display: flex; margin-bottom: 20px; .btn { cursor: pointer; width: 112px; height: 48px; background: #ffffff; border-radius: 4px; border: 1px solid #dddddd; font-size: 16px; font-family: AlibabaPuHuiTiM; color: #000; text-align: center; line-height: 48px; margin-right: 24px; } .active { background: #4e68ff; border: none; color: #ffffff; } } } </style>