|
@@ -0,0 +1,129 @@
|
|
|
+<template>
|
|
|
+ <page-layer>
|
|
|
+ <template #header>
|
|
|
+ <div style="text-align: center">
|
|
|
+ 统计日期:
|
|
|
+ <!-- <span v-if="reportFirst.kssj" style="color: #fc6c34;">
|
|
|
+ {{ reportFirst.kssj }} 至 {{ reportFirst.jssj }}
|
|
|
+ </span> -->
|
|
|
+ <span style="color: #fc6c34;">当前</span>
|
|
|
+ 统计机构名称:<span style="color: #fc6c34;">长沙泰和医院</span>
|
|
|
+ 指标名称: <span style="color: #fc6c34;">{{ reportInfo2.reportName }}</span>
|
|
|
+ 统计结果描述: <span style="color: #fc6c34;">{{ reportInfo2.overview }}{{ reportInfo2.unit }}</span>
|
|
|
+ <span style="color: #3742fa;"> {{ reportInfo2.fstName }}: </span>
|
|
|
+ <span style="color: #fc6c34;">{{ reportInfo2.fstValue }}{{ reportInfo2.unit }}</span>
|
|
|
+ </div>
|
|
|
+ <el-button type="primary" style="margin-left: 10px;">返回</el-button>
|
|
|
+ </template>
|
|
|
+ <template #aside>
|
|
|
+ <el-table :data="reportData" :height="tableHeight" highlight-current-row row-key="childKey" stripe border
|
|
|
+ @row-dblclick="reportThirdInfo">
|
|
|
+ <el-table-column prop="x" :label="x2Name" width="120"></el-table-column>
|
|
|
+ <el-table-column prop="y" :label="y2Name"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </template>
|
|
|
+ <template #main>
|
|
|
+ <div style="width: 80%; height: 400px; margin-bottom: 5px;" id="secondPie"></div>
|
|
|
+ <div style="width: 80%; height: 400px" id="secondDst"></div>
|
|
|
+ </template>
|
|
|
+ </page-layer>
|
|
|
+ <el-dialog v-if="props.reportSecond.tableInfo.trdGroup !== 'patient'" :title="titleChart" v-model="thirdDrawer"
|
|
|
+ fullscreen destroy-on-close>
|
|
|
+ <ReportThirdPage :reportThird="reportThird" />
|
|
|
+ </el-dialog>
|
|
|
+ <el-dialog v-else :title="titleChart" v-model="patientDrawer" width="80%" height="80%" top="40px" draggable destroy-on-close>
|
|
|
+ <ReportPatientPage :reportPatient="reportPatient" />
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+<script setup name="ReportFirst">
|
|
|
+import { ref } from "vue"
|
|
|
+import { useStore } from 'vuex'
|
|
|
+import { clone } from '@/utils/clone'
|
|
|
+import PageLayer from '@/layout/PageLayer.vue'
|
|
|
+import { highBarUtils, highPieUtils } from '@/utils/high-charts'
|
|
|
+import { selectReportGroup } from '@/api/reports/high-report'
|
|
|
+import ReportThirdPage from '@/components/operate-monitoring/ReportThirdPage.vue'
|
|
|
+import ReportPatientPage from '@/components/operate-monitoring/ReportPatientPage.vue'
|
|
|
+
|
|
|
+const storeU = useStore()
|
|
|
+const windowSize = storeU.state.app.windowSize
|
|
|
+const tableHeight = windowSize.h - 105
|
|
|
+const props = defineProps({
|
|
|
+ reportSecond: {
|
|
|
+ type: Object,
|
|
|
+ default: {}
|
|
|
+ }
|
|
|
+})
|
|
|
+nextTick(() => {
|
|
|
+ showSecondPst()
|
|
|
+})
|
|
|
+// 报表基本信息
|
|
|
+const reportInfo2 = ref({})
|
|
|
+// 报表展示值
|
|
|
+const reportData = ref({})
|
|
|
+// 表格展示信息
|
|
|
+const tableData = ref({})
|
|
|
+// 查询信息
|
|
|
+const param2 = ref({})
|
|
|
+
|
|
|
+const x2Name = ref('')
|
|
|
+const y2Name = ref('')
|
|
|
+
|
|
|
+reportData.value = props.reportSecond.data
|
|
|
+reportInfo2.value = props.reportSecond.row
|
|
|
+tableData.value = props.reportSecond.tableInfo
|
|
|
+param2.value = props.reportSecond.params
|
|
|
+
|
|
|
+const showSecondPst = () => {
|
|
|
+ let barTitle = reportInfo2.value.reportName
|
|
|
+ let yAxisName = '单位:' + reportInfo2.value.unit
|
|
|
+ let tipUnit = reportInfo2.value.unit
|
|
|
+ let xdata = []
|
|
|
+ let ydata = []
|
|
|
+ let pieData = []
|
|
|
+ x2Name.value = tableData.value.sndName
|
|
|
+ y2Name.value = reportInfo2.value.unit
|
|
|
+
|
|
|
+ reportData.value.forEach((item) => {
|
|
|
+ let pieInfo = {}
|
|
|
+ pieInfo.value = item.y
|
|
|
+ pieInfo.name = item.x
|
|
|
+ pieInfo.unit = reportInfo2.value.unit
|
|
|
+ xdata.push(item.x)
|
|
|
+ ydata.push(item.y)
|
|
|
+ pieData.push(pieInfo)
|
|
|
+ })
|
|
|
+
|
|
|
+ highBarUtils(secondDst, barTitle, xdata, ydata, barTitle, yAxisName, tipUnit, 1)
|
|
|
+ highPieUtils(secondPie, barTitle, pieData)
|
|
|
+}
|
|
|
+
|
|
|
+// 钻取的查询结果
|
|
|
+const thirdDrawer = ref(false)
|
|
|
+const reportThird = ref({})
|
|
|
+const patientDrawer = ref(false)
|
|
|
+const reportPatient = ref({})
|
|
|
+const titleChart = ref('')
|
|
|
+const reportThirdInfo = (row) => {
|
|
|
+ reportInfo2.value.sndName = row.x
|
|
|
+ reportInfo2.value.sndValue = row.y
|
|
|
+ let params = clone(param2.value)
|
|
|
+ params.sndName = row.x
|
|
|
+ // 下一级是病人,则走最后固定的病人明细展示页面
|
|
|
+ let trdGroup = tableData.value.trdGroup
|
|
|
+ if (trdGroup === 'patient') {
|
|
|
+ titleChart.value = reportInfo2.value.reportName
|
|
|
+ patientDrawer.value = true
|
|
|
+ reportPatient.value.row = reportInfo2.value
|
|
|
+ reportPatient.value.params = clone(params)
|
|
|
+ } else {
|
|
|
+ selectReportGroup(params).then((res) => {
|
|
|
+ reportThird.value = res
|
|
|
+ titleChart.value = res.title
|
|
|
+ thirdDrawer.value = true
|
|
|
+ reportThird.value.row = reportInfo2.value
|
|
|
+ reportThird.value.params = clone(params)
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|