Commit ed0a56dc authored by 陈明豪's avatar 陈明豪

数据统计-接口对接

parent ff3663e8
...@@ -31,3 +31,12 @@ export function listHospital(query) { ...@@ -31,3 +31,12 @@ export function listHospital(query) {
params: query params: query
}) })
} }
// 获取服务项目预约记录
export function listOrder(query) {
return request({
url: '/business/statistics/checkList',
method: 'get',
params: query
})
}
...@@ -89,7 +89,7 @@ export default { ...@@ -89,7 +89,7 @@ export default {
trigger: 'item', // 出发方式 trigger: 'item', // 出发方式
formatter: (item) => { formatter: (item) => {
const unit = _this.unit const unit = _this.unit
const percent = item.data.value / _this.sum * 100 const percent = (item.data.value / _this.sum * 100).toFixed(1)
return `<div> return `<div>
${item.data.name} ${item.data.name}
<br> <br>
......
...@@ -42,7 +42,6 @@ export default { ...@@ -42,7 +42,6 @@ export default {
type: 'shadow' type: 'shadow'
}, },
formatter: (axis) => { formatter: (axis) => {
console.log('堆叠', axis)
return `<div> return `<div>
<div>${axis[0].name}</div> <div>${axis[0].name}</div>
<div style="display: flex"> <div style="display: flex">
......
...@@ -33,13 +33,13 @@ export default { ...@@ -33,13 +33,13 @@ export default {
line_color: '', line_color: '',
area_color: '', area_color: '',
unit: '' unit: ''
}
}, },
// y轴是否显示单位 // y轴是否显示单位
showYUnit: { showYUnit: {
type: Boolean, type: Boolean,
default: true default: true
} }
}
}, },
data() { data() {
return {} return {}
......
...@@ -14,7 +14,7 @@ export default { ...@@ -14,7 +14,7 @@ export default {
// x轴坐标 // x轴坐标
xData: { xData: {
type: Array, type: Array,
default: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] default: []
}, },
// y轴数据 1 // y轴数据 1
yData1: { yData1: {
...@@ -47,7 +47,14 @@ export default { ...@@ -47,7 +47,14 @@ export default {
data() { data() {
return {} return {}
}, },
watch: {}, watch: {
xData: {
handler(newVal) {
this.setECharts()
},
deep: true
}
},
mounted() { mounted() {
this.setECharts() this.setECharts()
}, },
...@@ -84,7 +91,7 @@ export default { ...@@ -84,7 +91,7 @@ export default {
// } // }
}, },
legend: { legend: {
x: 'right', x: 'center',
y: 'top', y: 'top',
data: [ data: [
_this.yData1.label + '(' + _this.yData1.unit + ')', _this.yData1.label + '(' + _this.yData1.unit + ')',
......
...@@ -105,7 +105,7 @@ ...@@ -105,7 +105,7 @@
<el-row :gutter="24" class="row2"> <el-row :gutter="24" class="row2">
<el-col :span="12"> <el-col :span="12">
<div class="cardDiv" style="padding-bottom: 0"> <div class="cardDiv" style="padding-bottom: 0">
<two-line-chart :y-data1="yData1" :y-data2="yData2" title="预储值波动" /> <two-line-chart v-if="yData1" :y-data1="yData1" :y-data2="yData2" title="预储值波动" />
</div> </div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
...@@ -182,7 +182,7 @@ ...@@ -182,7 +182,7 @@
<el-row :gutter="24" class="row2"> <el-row :gutter="24" class="row2">
<el-col :span="9"> <el-col :span="9">
<div class="cardDiv" style="padding-bottom: 0"> <div class="cardDiv" style="padding-bottom: 0">
<china-map v-if="mapData.length > 0" :map-data="mapData" unit="家" :sum="mapData[mapData.length - 1].value" title="医院所在城市分析" /> <china-map v-if="mapData.length > 0" :map-data="mapData" unit="家" :sum="(mapData.length > 0 ? mapData[mapData.length - 1].value:0)" title="医院所在城市分析" />
<div v-else style="height: 386px;"> <div v-else style="height: 386px;">
<div class="cardTitle"> <div class="cardTitle">
医院所在城市分析 医院所在城市分析
...@@ -348,14 +348,14 @@ export default { ...@@ -348,14 +348,14 @@ export default {
mapData: [], mapData: [],
yData1: { yData1: {
label: '新增预储值总额', label: '新增预储值总额',
data: [33, 31, 52, 66, 28, 71, 42, 95, 81, 92, 120, 21], data: [],
line_color: '#3490CE', line_color: '#3490CE',
area_color: 'rgba(52,144,206,0.3)', area_color: 'rgba(52,144,206,0.3)',
unit: '万元' unit: '万元'
}, },
yData2: { yData2: {
label: '预储值余额总额', label: '预储值余额总额',
data: [13, 33, 25, 16, 1, 10, 22, 44, 58, 79, 30, 10], data: [],
line_color: '#5FB54B', line_color: '#5FB54B',
area_color: 'rgba(95,181,75,0.3)', area_color: 'rgba(95,181,75,0.3)',
unit: '万元' unit: '万元'
...@@ -394,6 +394,8 @@ export default { ...@@ -394,6 +394,8 @@ export default {
console.log('dataRes', res) console.log('dataRes', res)
this.hospitalInfoStatistics = res.data.hospitalInfoStatistics this.hospitalInfoStatistics = res.data.hospitalInfoStatistics
this.hospitalPercentInfo = res.data.hospitalPercentInfo this.hospitalPercentInfo = res.data.hospitalPercentInfo
this.yData1.data = res.data.prestoredUndulateDTO.newPrestored
this.yData2.data = res.data.prestoredUndulateDTO.balanceArray
this.mapData = res.data.chinaMapDistributionList this.mapData = res.data.chinaMapDistributionList
this.hospitalPrestoredRank = res.data.prestoredRankList this.hospitalPrestoredRank = res.data.prestoredRankList
this.hospitalTimeRank = res.data.enterTimeRankList this.hospitalTimeRank = res.data.enterTimeRankList
......
<template>
<div>
<div class="cardTitle">
{{ title }}
</div>
<div class="emptyDiv">
<div style="align-self:center;width: 100%">
<div>
<img src="../../../assets/data_statistics/guahao_img_wushuju.png">
</div>
<div>暂无数据</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'EmptyTool',
props: ['title'],
data() {
return {}
},
watch: {},
created() {
},
methods: {}
}
</script>
<style scoped>
.cardTitle {
margin-bottom: 10px;
font-size: 14px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #333333;
margin-bottom: 20px;
}
.emptyDiv {
height: 90%;
width: 100%;
text-align: center;
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #AFAFAF;
display:flex;
}
</style>
...@@ -155,6 +155,7 @@ export default { ...@@ -155,6 +155,7 @@ export default {
} }
} }
.orange_percent_invert { .orange_percent_invert {
//filter: alpha(opacity=10);
::v-deep .el-progress-circle { ::v-deep .el-progress-circle {
svg > path:nth-child(2) { svg > path:nth-child(2) {
stroke: url(#yuchuzhi); // 该url() 中填入的是, 对应组件中的 id 名 stroke: url(#yuchuzhi); // 该url() 中填入的是, 对应组件中的 id 名
...@@ -172,6 +173,7 @@ export default { ...@@ -172,6 +173,7 @@ export default {
} }
.rotateYProgress { .rotateYProgress {
height: 138px;
::v-deep .el-progress{ ::v-deep .el-progress{
padding-top: 20px; padding-top: 20px;
} }
...@@ -181,6 +183,7 @@ export default { ...@@ -181,6 +183,7 @@ export default {
} }
} }
.noRotateProgress { .noRotateProgress {
height: 138px;
padding-top: 20px; padding-top: 20px;
} }
</style> </style>
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<el-col :span="6"> <el-col :span="6">
<div class="service_info_statistics service_info_statistics_device"> <div class="service_info_statistics service_info_statistics_device">
<div style="display: flex;"> <div style="display: flex;">
<div class="numberColor">{{ formatNum(businessInformation.serviceEquipment) }}</div> <div class="numberColor">{{ formatNum(businessInformation.serviceEquipment || 0) }}</div>
<div class="fontColor"></div> <div class="fontColor"></div>
</div> </div>
<div class="bottomText"> <div class="bottomText">
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<el-col :span="6"> <el-col :span="6">
<div class="service_info_statistics service_info_statistics_project"> <div class="service_info_statistics service_info_statistics_project">
<div style="display: flex;"> <div style="display: flex;">
<div class="numberColor">{{ formatNum(businessInformation.serviceProject) }}</div> <div class="numberColor">{{ formatNum(businessInformation.serviceProject || 0) }}</div>
<div class="fontColor"></div> <div class="fontColor"></div>
</div> </div>
<div class="bottomText"> <div class="bottomText">
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<el-col :span="6"> <el-col :span="6">
<div class="service_info_statistics service_info_statistics_order"> <div class="service_info_statistics service_info_statistics_order">
<div style="display: flex;"> <div style="display: flex;">
<div class="numberColor">{{ formatNum(businessInformation.appointmentsNum) }}</div> <div class="numberColor">{{ formatNum(businessInformation.appointmentsNum || 0) }}</div>
<div class="fontColor"></div> <div class="fontColor"></div>
</div> </div>
<div class="bottomText"> <div class="bottomText">
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
<el-col :span="6"> <el-col :span="6">
<div class="service_info_statistics service_info_statistics_income"> <div class="service_info_statistics service_info_statistics_income">
<div style="display: flex;"> <div style="display: flex;">
<div class="numberColor">{{ formatNum(businessInformation.appointmentsAmount) }}</div> <div class="numberColor">{{ formatNum(businessInformation.appointmentsAmount || 0) }}</div>
<div class="fontColor"></div> <div class="fontColor"></div>
</div> </div>
<div class="bottomText"> <div class="bottomText">
...@@ -72,15 +72,47 @@ ...@@ -72,15 +72,47 @@
</el-row> </el-row>
<el-row :gutter="24" class="row2"> <el-row :gutter="24" class="row2">
<el-col :span="24"> <el-col :span="24">
<div class="cardDiv" style="padding-bottom: 0"> <div class="cardDiv" style="padding-bottom: 0;">
<two-line-chart-no-unit :y-data1="yData1" :y-data2="yData2" title="本年客户统计" /> <div style="position: absolute;z-index: 10;width: 90%;text-align: right;">
<el-radio-group v-model="lineSelect">
<el-radio-button label="byYear" class="radioButton"></el-radio-button>
<el-radio-button label="byMonth" class="radioButton"></el-radio-button>
</el-radio-group>
</div>
<div v-if="lineSelect === 'byYear'">
<two-line-chart-no-unit
v-if="yData1.data.length > 0 || yData2.data.length > 0"
:x-data="['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']"
:y-data1="yData1"
:y-data2="yData2"
title="服务预约情况"
/>
<empty-tool v-else style="height: 468px" title="服务预约情况" />
</div>
<div v-else>
<two-line-chart-no-unit
v-if="yData1Month.data.length > 0 || yData2Month.data.length > 0"
:x-data="monthDayArray"
:y-data1="yData1Month"
:y-data2="yData2Month"
title="服务预约情况"
/>
<empty-tool v-else style="height: 468px" title="服务预约情况" />
</div>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<div class="cardDiv" style="padding-bottom: 0"> <div class="cardDiv" style="padding-bottom: 0">
<china-map-bigger :map-data="mapData" unit="台" :sum="1000" title="平台服务设备地区分布" /> <china-map-bigger
v-if="mapData.length > 0"
:map-data="mapData"
unit="台"
:sum="mapData.reduce((sum, e) => sum + Number(e.value || 0), 0)"
title="平台服务设备地区分布"
/>
<empty-tool v-else style="height: 629px" title="平台服务设备地区分布" />
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -90,14 +122,15 @@ ...@@ -90,14 +122,15 @@
<div class="cardTitle" style="margin-bottom: 29px"> <div class="cardTitle" style="margin-bottom: 29px">
平台服务项目预约次数排行 平台服务项目预约次数排行
</div> </div>
<div class="rankInnerDiv">
<div v-for="(item, key) in orderRank" :key="key" class="orderRankDiv"> <div v-for="(item, key) in orderRank" :key="key" class="orderRankDiv">
<div class="rank_name_font"> <div class="rank_name_font">
<overlong-tool :text="item.name" :max="30" /> <overlong-tool :text="item.itemName" :max="30" />
</div> </div>
<el-row> <el-row>
<el-col :span="20"> <el-col :span="20">
<el-progress <el-progress
:percentage="item.percent" :percentage="item.number/orderRank[0].number*100"
:stroke-width="9" :stroke-width="9"
:show-text="false" :show-text="false"
class="orderRankProgress" class="orderRankProgress"
...@@ -105,11 +138,13 @@ ...@@ -105,11 +138,13 @@
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<div class="orderRankFont"> <div class="orderRankFont">
{{ item.total }} {{ item.number }}
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
<empty-tool v-if="orderRank.length === 0" style="height: 100%" title="" />
</div>
</div> </div>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
...@@ -117,14 +152,15 @@ ...@@ -117,14 +152,15 @@
<div class="cardTitle" style="margin-bottom: 29px"> <div class="cardTitle" style="margin-bottom: 29px">
平台服务设备服务次数排行 平台服务设备服务次数排行
</div> </div>
<div class="rankInnerDiv">
<div v-for="(item, key) in deviceRank" :key="key" class="deviceRankDiv"> <div v-for="(item, key) in deviceRank" :key="key" class="deviceRankDiv">
<div class="rank_name_font"> <div class="rank_name_font">
<overlong-tool :text="item.name" :max="30" /> <overlong-tool :text="item.itemName" :max="30" />
</div> </div>
<el-row> <el-row>
<el-col :span="20"> <el-col :span="20">
<el-progress <el-progress
:percentage="item.percent" :percentage="item.number/deviceRank[0].number*100"
:stroke-width="9" :stroke-width="9"
:show-text="false" :show-text="false"
class="deviceRankProgress" class="deviceRankProgress"
...@@ -132,16 +168,19 @@ ...@@ -132,16 +168,19 @@
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<div class="deviceRankFont"> <div class="deviceRankFont">
{{ item.total }} {{ item.number }}
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
<empty-tool v-if="deviceRank.length === 0" style="height: 100%" title="" />
</div>
</div> </div>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<div class="cardDiv" style="padding-bottom: 0"> <div class="cardDiv" style="padding-bottom: 0">
<radar-chart-one-line <radar-chart-one-line
v-if="projectUnitPriceDistributionRadarData.yData.length > 0"
title="现有服务项目单价分布" title="现有服务项目单价分布"
name="服务项目单价" name="服务项目单价"
:y-data="projectUnitPriceDistributionRadarData.yData" :y-data="projectUnitPriceDistributionRadarData.yData"
...@@ -151,11 +190,13 @@ ...@@ -151,11 +190,13 @@
:area-start-color="projectUnitPriceDistributionRadarData.areaStartColor" :area-start-color="projectUnitPriceDistributionRadarData.areaStartColor"
:area-end-color="projectUnitPriceDistributionRadarData.areaEndColor" :area-end-color="projectUnitPriceDistributionRadarData.areaEndColor"
/> />
<empty-tool v-else style="height: 360px" title="现有服务项目单价分布" />
</div> </div>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<div class="cardDiv" style="padding-bottom: 0"> <div class="cardDiv" style="padding-bottom: 0">
<radar-chart-one-line <radar-chart-one-line
v-if="projectIncomeDistributionRadarData.yData.length > 0"
title="服务项目收益分布" title="服务项目收益分布"
name="预约次数" name="预约次数"
:y-data="projectIncomeDistributionRadarData.yData" :y-data="projectIncomeDistributionRadarData.yData"
...@@ -165,6 +206,7 @@ ...@@ -165,6 +206,7 @@
:area-start-color="projectIncomeDistributionRadarData.areaStartColor" :area-start-color="projectIncomeDistributionRadarData.areaStartColor"
:area-end-color="projectIncomeDistributionRadarData.areaEndColor" :area-end-color="projectIncomeDistributionRadarData.areaEndColor"
/> />
<empty-tool v-else style="height: 360px" title="服务项目收益分布" />
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -172,21 +214,53 @@ ...@@ -172,21 +214,53 @@
<el-col :span="24"> <el-col :span="24">
<div class="cardDiv"> <div class="cardDiv">
<div class="cardTitle"> <div class="cardTitle">
医院授权到期信息 服务项目预约记录
</div> </div>
<el-divider class="dividerLine" /> <el-divider class="dividerLine" />
<el-table :data="tableData" style="width: 100%"> <el-table
:data="tableData"
style="width: 100%"
@sort-change="handleSortChangeForPlatform"
>
<el-table-column label="序号" min-width="20px" show-overflow-tooltip type="index" /> <el-table-column label="序号" min-width="20px" show-overflow-tooltip type="index" />
<el-table-column sortable label="检查项目" show-overflow-tooltip prop="projectName" /> <el-table-column sortable label="检查项目" show-overflow-tooltip prop="checkItemsName" />
<el-table-column sortable label="设备名称" show-overflow-tooltip prop="deviceName" /> <el-table-column sortable label="设备名称" show-overflow-tooltip prop="deviceName" />
<el-table-column sortable label="支付金额" show-overflow-tooltip prop="pay" /> <el-table-column sortable label="支付金额" show-overflow-tooltip prop="payAmount">
<el-table-column sortable label="操作医院" show-overflow-tooltip prop="operateHospital" /> <template slot-scope="scope">
<el-table-column sortable label="提交时间" show-overflow-tooltip prop="subTime" /> {{ scope.row.payAmount ? scope.row.payAmount + '元':'-' }}
<el-table-column sortable label="宠物昵称" show-overflow-tooltip prop="petName" /> </template>
<el-table-column sortable label="宠物保险" show-overflow-tooltip prop="petWarranty" /> </el-table-column>
<el-table-column sortable label="宠主姓名" show-overflow-tooltip prop="petOwnerName" /> <el-table-column sortable label="操作医院" show-overflow-tooltip prop="hospitalName" />
<el-table-column sortable label="宠主手机号" show-overflow-tooltip prop="petOwnerPhone" /> <el-table-column sortable label="提交时间" show-overflow-tooltip prop="appointTime">
<el-table-column label="状态" show-overflow-tooltip prop="status" /> <template slot-scope="scope">
{{ parseTime(scope.row.appointTime, '{y}/{m}/{d} {h}:{i}') }}
</template>
</el-table-column>
<el-table-column sortable label="宠物昵称" show-overflow-tooltip prop="petNickname" />
<el-table-column sortable label="宠物保险" show-overflow-tooltip prop="insure">
<template slot-scope="scope">
{{ scope.row.insure === '0' ? '未购保险':'已购买保险' }}
</template>
</el-table-column>
<el-table-column sortable label="宠主姓名" show-overflow-tooltip prop="nickname">
<template slot-scope="scope">
{{ scope.row.nickname || '-' }}
</template>
</el-table-column>
<el-table-column sortable label="宠主手机号" show-overflow-tooltip prop="phonenumber" />
<el-table-column sortable label="状态" show-overflow-tooltip prop="checkSchedule">
<template slot-scope="scope">
<span
v-if="scope.row.checkSchedule >= 3"
style="font-size: 12px;font-family: Microsoft YaHei;ont-weight: 400;color: #5FB54B;"
> 已完成</span>
<span
v-else
style="font-size: 12px;font-family: Microsoft YaHei;font-weight: 400;color: #FF9D4E;"
> 待检查</span>
<!-- 过期-->
</template>
</el-table-column>
<el-table-column label="操作"> <el-table-column label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
...@@ -203,11 +277,11 @@ ...@@ -203,11 +277,11 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="orderTotal>0"
:total="total" :total="orderTotal"
:page.sync="queryParams.pageNum" :page.sync="queryOrder.pageNum"
:limit.sync="queryParams.pageSize" :limit.sync="queryOrder.pageSize"
@pagination="getBannerList" @pagination="getOrderList"
/> />
</div> </div>
</el-col> </el-col>
...@@ -668,224 +742,59 @@ import PercentTool from '@/views/data-statistics/other-components/percentTool.vu ...@@ -668,224 +742,59 @@ import PercentTool from '@/views/data-statistics/other-components/percentTool.vu
import OneLineChart from '@/views/data-statistics/echars-components/oneLineChart.vue' import OneLineChart from '@/views/data-statistics/echars-components/oneLineChart.vue'
import PileUpChart from '@/views/data-statistics/echars-components/pileUpChart.vue' import PileUpChart from '@/views/data-statistics/echars-components/pileUpChart.vue'
import RadarChartOneLineBigger from '@/views/data-statistics/echars-components/radar-chart-one-line-bigger.vue' import RadarChartOneLineBigger from '@/views/data-statistics/echars-components/radar-chart-one-line-bigger.vue'
import { getBusinessStatistics } from '@/api/business/statistics' import { getBusinessStatistics, listOrder } from '@/api/business/statistics'
import EmptyTool from '@/views/data-statistics/other-components/emptyTool.vue'
import { parseTime } from '@/utils/ruoyi'
export default { export default {
name: 'ServiceStatistics', name: 'ServiceStatistics',
components: { RadarChartOneLineBigger, PileUpChart, OneLineChart, PercentTool, RadarChartOneLine, OverlongTool, TwoLineChartNoUnit, ChinaMapBigger }, components: { EmptyTool, RadarChartOneLineBigger, PileUpChart, OneLineChart, PercentTool, RadarChartOneLine, OverlongTool, TwoLineChartNoUnit, ChinaMapBigger },
data() { data() {
return { return {
isPlatformRole: true, isPlatformRole: true,
businessInformation: {}, businessInformation: {},
mapData: [ lineSelect: 'byYear',
{ monthDayArray: [],
name: '北京市', mapData: [],
value: 200
},
{
name: '天津市',
value: 0
},
{
name: '上海市',
value: 200
},
{
name: '重庆市',
value: 0
},
{
name: '河北省',
value: 0
},
{
name: '河南省',
value: 0
},
{
name: '云南省',
value: 0
},
{
name: '辽宁省',
value: 0
},
{
name: '黑龙江省',
value: 0
},
{
name: '湖南省',
value: 40
},
{
name: '安徽省',
value: 10
},
{
name: '山东省',
value: 60
},
{
name: '新疆维吾尔自治区',
value: 0
},
{
name: '江苏省',
value: 0
},
{
name: '浙江省',
value: 0
},
{
name: '江西省',
value: 90
},
{
name: '湖北省',
value: 70
},
{
name: '广西壮族自治区',
value: 0
},
{
name: '甘肃省',
value: 0
},
{
name: '山西省',
value: 0
},
{
name: '内蒙古自治区',
value: 10
},
{
name: '陕西省',
value: 0
},
{
name: '吉林省',
value: 0
},
{
name: '福建省',
value: 60
},
{
name: '贵州省',
value: 0
},
{
name: '广东省',
value: 800
},
{
name: '青海省',
value: 1
},
{
name: '西藏自治区',
value: 1
},
{
name: '四川省',
value: 0
},
{
name: '宁夏回族自治区',
value: 0
},
{
name: '海南省',
value: 0
},
{
name: '台湾省',
value: 0
},
{
name: '香港特别行政区',
value: 0
},
{
name: '澳门特别行政区',
value: 0
},
{
name: '南海诸岛',
value: 0
}
],
yData1: { yData1: {
label: '总收益', label: '总收益',
data: [332, 313, 123, 332, 111, 227, 432, 923, 81, 92, 111, 222], data: [],
line_color: '#3490CE', line_color: '#3490CE',
area_color: 'rgba(52,144,206,0.3)', area_color: 'rgba(52,144,206,0.3)',
unit: '千元' unit: '千元'
}, },
yData2: { yData2: {
label: '预约次数', label: '预约次数',
data: [112, 322, 222, 111, 213, 111, 222, 123, 225, 112, 222, 111], data: [],
line_color: '#5FB54B', line_color: '#5FB54B',
area_color: 'rgba(95,181,75,0.3)', area_color: 'rgba(95,181,75,0.3)',
unit: '次' unit: '次'
}, },
orderRank: [ yData1Month: {
{ label: '总收益',
name: '微信创伤修复', data: [],
percent: 100, line_color: '#3490CE',
total: 214 area_color: 'rgba(52,144,206,0.3)',
}, unit: '千元'
{
name: '绝育',
percent: 90,
total: 114
},
{
name: '影像检查',
percent: 50,
total: 84
},
{
name: '胃镜检查',
percent: 20,
total: 24
}
],
deviceRank: [
{
name: 'PRS 300C VET运动版动物DR',
percent: 100,
total: 214
},
{
name: 'PRS动物DR',
percent: 90,
total: 114
}, },
{ yData2Month: {
name: 'RTS 3060 影像检查', label: '预约次数',
percent: 50, data: [],
total: 84 line_color: '#5FB54B',
area_color: 'rgba(95,181,75,0.3)',
unit: '次'
}, },
{ orderRank: [],
name: 'INTEL I9 YUN 检查', deviceRank: [],
percent: 20,
total: 24
}
],
projectUnitPriceDistributionRadarData: { projectUnitPriceDistributionRadarData: {
indicator: [ indicator: [
{ name: '0~100元', max: 50 }, { name: '0~100元', max: 0 },
{ name: '100~300元', max: 50 }, { name: '100~300元', max: 0 },
{ name: '300~500元', max: 50 }, { name: '300~500元', max: 0 },
{ name: '500~1000元', max: 50 }, { name: '500~1000元', max: 0 },
{ name: '1000元以上', max: 50 } { name: '1000元以上', max: 0 }
], ],
yData: [33, 25, 50, 38, 40], yData: [],
lineStartColor: '#7245D9', lineStartColor: '#7245D9',
lineEndColor: '#5A5FE6', lineEndColor: '#5A5FE6',
areaStartColor: 'rgba(114, 69, 217, 0.3)', areaStartColor: 'rgba(114, 69, 217, 0.3)',
...@@ -893,260 +802,26 @@ export default { ...@@ -893,260 +802,26 @@ export default {
}, },
projectIncomeDistributionRadarData: { projectIncomeDistributionRadarData: {
indicator: [ indicator: [
{ name: '0~100元', max: 50 }, { name: '0~100元', max: 0 },
{ name: '100~300元', max: 50 }, { name: '100~300元', max: 0 },
{ name: '300~500元', max: 50 }, { name: '300~500元', max: 0 },
{ name: '500~1000元', max: 50 }, { name: '500~1000元', max: 0 },
{ name: '1000元以上', max: 50 } { name: '1000元以上', max: 0 }
], ],
yData: [23, 15, 30, 48, 20], yData: [],
lineStartColor: '#3994C1', lineStartColor: '#3994C1',
lineEndColor: '#5BB158', lineEndColor: '#5BB158',
areaStartColor: 'rgba(57, 148, 193, 0.3)', areaStartColor: 'rgba(57, 148, 193, 0.3)',
areaEndColor: 'rgba(91, 177, 88, 0.3)' areaEndColor: 'rgba(91, 177, 88, 0.3)'
}, },
tableData: [ tableData: [],
{ queryOrder: {
projectName: '常规医学影响检查', pageNum: 1,
deviceName: 'PRS 300C VET运动版动物DR', pageSize: 20,
pay: '330.00元', orderByColumn: 'appointTime',
operateHospital: '乖乖宠物医院(八里台店)', isAsc: 'descending'
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
},
{
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
}, },
{ orderTotal: 0,
projectName: '常规医学影响检查',
deviceName: 'PRS 300C VET运动版动物DR',
pay: '330.00元',
operateHospital: '乖乖宠物医院(八里台店)',
subTime: '2023/04/01 12:26',
petName: '小白',
petWarranty: '已购保险',
petOwnerName: '李佳奇',
petOwnerPhone: '13434567897',
status: 1
}
],
recordTableData: [ recordTableData: [
{ {
recordId: '【兽2023】1100APR2310142', recordId: '【兽2023】1100APR2310142',
...@@ -1468,23 +1143,64 @@ export default { ...@@ -1468,23 +1143,64 @@ export default {
} }
}, },
created() { created() {
this.mGetDate()
console.log('store--->', this.$store.state.user.userType) console.log('store--->', this.$store.state.user.userType)
if (this.$store.state.user.userType === '00') { if (this.$store.state.user.userType === '00') {
this.isPlatformRole = true this.isPlatformRole = true
this.getDataForPlatform() this.getDataForPlatform()
this.getOrderList()
} else { } else {
this.getDataForHospital()
this.isPlatformRole = false this.isPlatformRole = false
} }
}, },
methods: { methods: {
parseTime,
getDataForPlatform() { getDataForPlatform() {
getBusinessStatistics().then(res => { getBusinessStatistics().then(res => {
if (res.code === 200) { if (res.code === 200) {
console.log('业务统计数据===>', res) console.log('业务统计数据===>', res)
this.businessInformation = res.data.businessInformation this.businessInformation = res.data.businessInformation
this.yData1.data = res.data.appointmentStatus.appointmentYear.map(obj => { return obj.payAmount })
this.yData2.data = res.data.appointmentStatus.appointmentYear.map(obj => { return obj.regNumber })
this.yData1Month.data = res.data.appointmentStatus.appointmentMonth.map(obj => { return obj.payAmount })
this.yData2Month.data = res.data.appointmentStatus.appointmentMonth.map(obj => { return obj.regNumber })
this.mapData = res.data.regionalDistribution
this.orderRank = res.data.appointmentCount
this.deviceRank = res.data.servicesCount
this.projectUnitPriceDistributionRadarData.yData = res.data.projectUnitPrice.dimension
const max1 = this.formatMax(this.getArrayMax(this.projectUnitPriceDistributionRadarData.yData))
this.projectUnitPriceDistributionRadarData.indicator[0].max = max1
this.projectUnitPriceDistributionRadarData.indicator[1].max = max1
this.projectUnitPriceDistributionRadarData.indicator[2].max = max1
this.projectUnitPriceDistributionRadarData.indicator[3].max = max1
this.projectUnitPriceDistributionRadarData.indicator[4].max = max1
this.projectIncomeDistributionRadarData.yData = res.data.projectBenefits.dimension
const max2 = this.formatMax(this.getArrayMax(this.projectIncomeDistributionRadarData.yData))
this.projectIncomeDistributionRadarData.indicator[0].max = max2
this.projectIncomeDistributionRadarData.indicator[1].max = max2
this.projectIncomeDistributionRadarData.indicator[2].max = max2
this.projectIncomeDistributionRadarData.indicator[3].max = max2
this.projectIncomeDistributionRadarData.indicator[4].max = max2
}
})
},
getDataForHospital() {
getBusinessStatistics().then(res => {
if (res.code === 200) {
console.log('业务统计,医院权限')
} }
}) })
}, },
getOrderList() {
listOrder(this.queryOrder).then(res => {
console.log('预约列表', res)
this.tableData = res.rows
this.orderTotal = res.total
})
},
formatNum(value) { formatNum(value) {
return Number(value).toLocaleString() return Number(value).toLocaleString()
}, },
...@@ -1496,6 +1212,34 @@ export default { ...@@ -1496,6 +1212,34 @@ export default {
} }
} }
return max return max
},
mGetDate() {
const date = new Date()
const year = date.getFullYear()
const month = date.getMonth() + 1
const d = new Date(year, month, 0)
const dayCounts = d.getDate()
const arr = []
for (let i = 0; i <= dayCounts - 1; i++) {
arr.push(String(i + 1) + '日')
}
this.monthDayArray = arr
},
formatMax(max) {
const temp = max % 5
if (temp !== 0) {
max = max + (5 - temp)
return max
} else {
return max
}
},
handleSortChangeForPlatform(column) {
console.log('更换排序', column)
this.queryOrder.orderByColumn = column.prop// 查询字段是表格中字段名字
this.queryOrder.isAsc = column.order// 动态取值排序顺序
this.getOrderList()
} }
} }
} }
...@@ -1527,7 +1271,7 @@ export default { ...@@ -1527,7 +1271,7 @@ export default {
} }
.service_info_statistics { .service_info_statistics {
width: 100%; width: 100%;
height: 103px; height: 113px;
padding-top: 20px; padding-top: 20px;
padding-left: 16px; padding-left: 16px;
//padding-right: 16px; //padding-right: 16px;
...@@ -1831,8 +1575,11 @@ export default { ...@@ -1831,8 +1575,11 @@ export default {
} }
.percentDiv { .percentDiv {
width: 100%; width: 100%;
height: 181px; height: 191px;
text-align: center; text-align: center;
.cardTitle {
margin-bottom: 10px;
}
} }
.serviceCard { .serviceCard {
width: 100%; width: 100%;
...@@ -1908,4 +1655,16 @@ export default { ...@@ -1908,4 +1655,16 @@ export default {
} }
} }
} }
::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
color: #5FB54B !important;
background-color: #fff !important;
border-color: #E5E5E5 !important;
box-shadow: 0 0 0 0 #E5E5E5;
}
::v-deep .el-radio-button__inner:hover {
color: #6db45d !important;
}
.rankInnerDiv {
height: 389px;
}
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment