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

数据统计-接口对接

parent ff3663e8
......@@ -31,3 +31,12 @@ export function listHospital(query) {
params: query
})
}
// 获取服务项目预约记录
export function listOrder(query) {
return request({
url: '/business/statistics/checkList',
method: 'get',
params: query
})
}
......@@ -89,7 +89,7 @@ export default {
trigger: 'item', // 出发方式
formatter: (item) => {
const unit = _this.unit
const percent = item.data.value / _this.sum * 100
const percent = (item.data.value / _this.sum * 100).toFixed(1)
return `<div>
${item.data.name}
<br>
......
......@@ -42,7 +42,6 @@ export default {
type: 'shadow'
},
formatter: (axis) => {
console.log('堆叠', axis)
return `<div>
<div>${axis[0].name}</div>
<div style="display: flex">
......
......@@ -33,12 +33,12 @@ export default {
line_color: '',
area_color: '',
unit: ''
},
// y轴是否显示单位
showYUnit: {
type: Boolean,
default: true
}
},
// y轴是否显示单位
showYUnit: {
type: Boolean,
default: true
}
},
data() {
......
......@@ -14,7 +14,7 @@ export default {
// x轴坐标
xData: {
type: Array,
default: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
default: []
},
// y轴数据 1
yData1: {
......@@ -47,7 +47,14 @@ export default {
data() {
return {}
},
watch: {},
watch: {
xData: {
handler(newVal) {
this.setECharts()
},
deep: true
}
},
mounted() {
this.setECharts()
},
......@@ -84,7 +91,7 @@ export default {
// }
},
legend: {
x: 'right',
x: 'center',
y: 'top',
data: [
_this.yData1.label + '(' + _this.yData1.unit + ')',
......
......@@ -105,7 +105,7 @@
<el-row :gutter="24" class="row2">
<el-col :span="12">
<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>
</el-col>
<el-col :span="8">
......@@ -182,7 +182,7 @@
<el-row :gutter="24" class="row2">
<el-col :span="9">
<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 class="cardTitle">
医院所在城市分析
......@@ -348,14 +348,14 @@ export default {
mapData: [],
yData1: {
label: '新增预储值总额',
data: [33, 31, 52, 66, 28, 71, 42, 95, 81, 92, 120, 21],
data: [],
line_color: '#3490CE',
area_color: 'rgba(52,144,206,0.3)',
unit: '万元'
},
yData2: {
label: '预储值余额总额',
data: [13, 33, 25, 16, 1, 10, 22, 44, 58, 79, 30, 10],
data: [],
line_color: '#5FB54B',
area_color: 'rgba(95,181,75,0.3)',
unit: '万元'
......@@ -394,6 +394,8 @@ export default {
console.log('dataRes', res)
this.hospitalInfoStatistics = res.data.hospitalInfoStatistics
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.hospitalPrestoredRank = res.data.prestoredRankList
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 {
}
}
.orange_percent_invert {
//filter: alpha(opacity=10);
::v-deep .el-progress-circle {
svg > path:nth-child(2) {
stroke: url(#yuchuzhi); // 该url() 中填入的是, 对应组件中的 id 名
......@@ -172,6 +173,7 @@ export default {
}
.rotateYProgress {
height: 138px;
::v-deep .el-progress{
padding-top: 20px;
}
......@@ -181,6 +183,7 @@ export default {
}
}
.noRotateProgress {
height: 138px;
padding-top: 20px;
}
</style>
......@@ -13,7 +13,7 @@
<el-col :span="6">
<div class="service_info_statistics service_info_statistics_device">
<div style="display: flex;">
<div class="numberColor">{{ formatNum(businessInformation.serviceEquipment) }}</div>
<div class="numberColor">{{ formatNum(businessInformation.serviceEquipment || 0) }}</div>
<div class="fontColor"></div>
</div>
<div class="bottomText">
......@@ -27,7 +27,7 @@
<el-col :span="6">
<div class="service_info_statistics service_info_statistics_project">
<div style="display: flex;">
<div class="numberColor">{{ formatNum(businessInformation.serviceProject) }}</div>
<div class="numberColor">{{ formatNum(businessInformation.serviceProject || 0) }}</div>
<div class="fontColor"></div>
</div>
<div class="bottomText">
......@@ -41,7 +41,7 @@
<el-col :span="6">
<div class="service_info_statistics service_info_statistics_order">
<div style="display: flex;">
<div class="numberColor">{{ formatNum(businessInformation.appointmentsNum) }}</div>
<div class="numberColor">{{ formatNum(businessInformation.appointmentsNum || 0) }}</div>
<div class="fontColor"></div>
</div>
<div class="bottomText">
......@@ -55,7 +55,7 @@
<el-col :span="6">
<div class="service_info_statistics service_info_statistics_income">
<div style="display: flex;">
<div class="numberColor">{{ formatNum(businessInformation.appointmentsAmount) }}</div>
<div class="numberColor">{{ formatNum(businessInformation.appointmentsAmount || 0) }}</div>
<div class="fontColor"></div>
</div>
<div class="bottomText">
......@@ -72,15 +72,47 @@
</el-row>
<el-row :gutter="24" class="row2">
<el-col :span="24">
<div class="cardDiv" style="padding-bottom: 0">
<two-line-chart-no-unit :y-data1="yData1" :y-data2="yData2" title="本年客户统计" />
<div class="cardDiv" style="padding-bottom: 0;">
<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>
</el-col>
</el-row>
</el-col>
<el-col :span="12">
<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>
</el-col>
</el-row>
......@@ -90,25 +122,28 @@
<div class="cardTitle" style="margin-bottom: 29px">
平台服务项目预约次数排行
</div>
<div v-for="(item, key) in orderRank" :key="key" class="orderRankDiv">
<div class="rank_name_font">
<overlong-tool :text="item.name" :max="30" />
<div class="rankInnerDiv">
<div v-for="(item, key) in orderRank" :key="key" class="orderRankDiv">
<div class="rank_name_font">
<overlong-tool :text="item.itemName" :max="30" />
</div>
<el-row>
<el-col :span="20">
<el-progress
:percentage="item.number/orderRank[0].number*100"
:stroke-width="9"
:show-text="false"
class="orderRankProgress"
/>
</el-col>
<el-col :span="4">
<div class="orderRankFont">
{{ item.number }}
</div>
</el-col>
</el-row>
</div>
<el-row>
<el-col :span="20">
<el-progress
:percentage="item.percent"
:stroke-width="9"
:show-text="false"
class="orderRankProgress"
/>
</el-col>
<el-col :span="4">
<div class="orderRankFont">
{{ item.total }}
</div>
</el-col>
</el-row>
<empty-tool v-if="orderRank.length === 0" style="height: 100%" title="" />
</div>
</div>
</el-col>
......@@ -117,31 +152,35 @@
<div class="cardTitle" style="margin-bottom: 29px">
平台服务设备服务次数排行
</div>
<div v-for="(item, key) in deviceRank" :key="key" class="deviceRankDiv">
<div class="rank_name_font">
<overlong-tool :text="item.name" :max="30" />
<div class="rankInnerDiv">
<div v-for="(item, key) in deviceRank" :key="key" class="deviceRankDiv">
<div class="rank_name_font">
<overlong-tool :text="item.itemName" :max="30" />
</div>
<el-row>
<el-col :span="20">
<el-progress
:percentage="item.number/deviceRank[0].number*100"
:stroke-width="9"
:show-text="false"
class="deviceRankProgress"
/>
</el-col>
<el-col :span="4">
<div class="deviceRankFont">
{{ item.number }}
</div>
</el-col>
</el-row>
</div>
<el-row>
<el-col :span="20">
<el-progress
:percentage="item.percent"
:stroke-width="9"
:show-text="false"
class="deviceRankProgress"
/>
</el-col>
<el-col :span="4">
<div class="deviceRankFont">
{{ item.total }}
</div>
</el-col>
</el-row>
<empty-tool v-if="deviceRank.length === 0" style="height: 100%" title="" />
</div>
</div>
</el-col>
<el-col :span="6">
<div class="cardDiv" style="padding-bottom: 0">
<radar-chart-one-line
v-if="projectUnitPriceDistributionRadarData.yData.length > 0"
title="现有服务项目单价分布"
name="服务项目单价"
:y-data="projectUnitPriceDistributionRadarData.yData"
......@@ -151,11 +190,13 @@
:area-start-color="projectUnitPriceDistributionRadarData.areaStartColor"
:area-end-color="projectUnitPriceDistributionRadarData.areaEndColor"
/>
<empty-tool v-else style="height: 360px" title="现有服务项目单价分布" />
</div>
</el-col>
<el-col :span="6">
<div class="cardDiv" style="padding-bottom: 0">
<radar-chart-one-line
v-if="projectIncomeDistributionRadarData.yData.length > 0"
title="服务项目收益分布"
name="预约次数"
:y-data="projectIncomeDistributionRadarData.yData"
......@@ -165,6 +206,7 @@
:area-start-color="projectIncomeDistributionRadarData.areaStartColor"
:area-end-color="projectIncomeDistributionRadarData.areaEndColor"
/>
<empty-tool v-else style="height: 360px" title="服务项目收益分布" />
</div>
</el-col>
</el-row>
......@@ -172,21 +214,53 @@
<el-col :span="24">
<div class="cardDiv">
<div class="cardTitle">
医院授权到期信息
服务项目预约记录
</div>
<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 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="pay" />
<el-table-column sortable label="操作医院" show-overflow-tooltip prop="operateHospital" />
<el-table-column sortable label="提交时间" show-overflow-tooltip prop="subTime" />
<el-table-column sortable label="宠物昵称" show-overflow-tooltip prop="petName" />
<el-table-column sortable label="宠物保险" show-overflow-tooltip prop="petWarranty" />
<el-table-column sortable label="宠主姓名" show-overflow-tooltip prop="petOwnerName" />
<el-table-column sortable label="宠主手机号" show-overflow-tooltip prop="petOwnerPhone" />
<el-table-column label="状态" show-overflow-tooltip prop="status" />
<el-table-column sortable label="支付金额" show-overflow-tooltip prop="payAmount">
<template slot-scope="scope">
{{ scope.row.payAmount ? scope.row.payAmount + '元':'-' }}
</template>
</el-table-column>
<el-table-column sortable label="操作医院" show-overflow-tooltip prop="hospitalName" />
<el-table-column sortable label="提交时间" show-overflow-tooltip prop="appointTime">
<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="操作">
<template slot-scope="scope">
<el-button
......@@ -203,11 +277,11 @@
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getBannerList"
v-show="orderTotal>0"
:total="orderTotal"
:page.sync="queryOrder.pageNum"
:limit.sync="queryOrder.pageSize"
@pagination="getOrderList"
/>
</div>
</el-col>
......@@ -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 PileUpChart from '@/views/data-statistics/echars-components/pileUpChart.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 {
name: 'ServiceStatistics',
components: { RadarChartOneLineBigger, PileUpChart, OneLineChart, PercentTool, RadarChartOneLine, OverlongTool, TwoLineChartNoUnit, ChinaMapBigger },
components: { EmptyTool, RadarChartOneLineBigger, PileUpChart, OneLineChart, PercentTool, RadarChartOneLine, OverlongTool, TwoLineChartNoUnit, ChinaMapBigger },
data() {
return {
isPlatformRole: true,
businessInformation: {},
mapData: [
{
name: '北京市',
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
}
],
lineSelect: 'byYear',
monthDayArray: [],
mapData: [],
yData1: {
label: '总收益',
data: [332, 313, 123, 332, 111, 227, 432, 923, 81, 92, 111, 222],
data: [],
line_color: '#3490CE',
area_color: 'rgba(52,144,206,0.3)',
unit: '千元'
},
yData2: {
label: '预约次数',
data: [112, 322, 222, 111, 213, 111, 222, 123, 225, 112, 222, 111],
data: [],
line_color: '#5FB54B',
area_color: 'rgba(95,181,75,0.3)',
unit: '次'
},
orderRank: [
{
name: '微信创伤修复',
percent: 100,
total: 214
},
{
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
},
{
name: 'RTS 3060 影像检查',
percent: 50,
total: 84
},
{
name: 'INTEL I9 YUN 检查',
percent: 20,
total: 24
}
],
yData1Month: {
label: '总收益',
data: [],
line_color: '#3490CE',
area_color: 'rgba(52,144,206,0.3)',
unit: '千元'
},
yData2Month: {
label: '预约次数',
data: [],
line_color: '#5FB54B',
area_color: 'rgba(95,181,75,0.3)',
unit: '次'
},
orderRank: [],
deviceRank: [],
projectUnitPriceDistributionRadarData: {
indicator: [
{ name: '0~100元', max: 50 },
{ name: '100~300元', max: 50 },
{ name: '300~500元', max: 50 },
{ name: '500~1000元', max: 50 },
{ name: '1000元以上', max: 50 }
{ name: '0~100元', max: 0 },
{ name: '100~300元', max: 0 },
{ name: '300~500元', max: 0 },
{ name: '500~1000元', max: 0 },
{ name: '1000元以上', max: 0 }
],
yData: [33, 25, 50, 38, 40],
yData: [],
lineStartColor: '#7245D9',
lineEndColor: '#5A5FE6',
areaStartColor: 'rgba(114, 69, 217, 0.3)',
......@@ -893,260 +802,26 @@ export default {
},
projectIncomeDistributionRadarData: {
indicator: [
{ name: '0~100元', max: 50 },
{ name: '100~300元', max: 50 },
{ name: '300~500元', max: 50 },
{ name: '500~1000元', max: 50 },
{ name: '1000元以上', max: 50 }
{ name: '0~100元', max: 0 },
{ name: '100~300元', max: 0 },
{ name: '300~500元', max: 0 },
{ name: '500~1000元', max: 0 },
{ name: '1000元以上', max: 0 }
],
yData: [23, 15, 30, 48, 20],
yData: [],
lineStartColor: '#3994C1',
lineEndColor: '#5BB158',
areaStartColor: 'rgba(57, 148, 193, 0.3)',
areaEndColor: 'rgba(91, 177, 88, 0.3)'
},
tableData: [
{
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
},
{
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
}
],
tableData: [],
queryOrder: {
pageNum: 1,
pageSize: 20,
orderByColumn: 'appointTime',
isAsc: 'descending'
},
orderTotal: 0,
recordTableData: [
{
recordId: '【兽2023】1100APR2310142',
......@@ -1468,23 +1143,64 @@ export default {
}
},
created() {
this.mGetDate()
console.log('store--->', this.$store.state.user.userType)
if (this.$store.state.user.userType === '00') {
this.isPlatformRole = true
this.getDataForPlatform()
this.getOrderList()
} else {
this.getDataForHospital()
this.isPlatformRole = false
}
},
methods: {
parseTime,
getDataForPlatform() {
getBusinessStatistics().then(res => {
if (res.code === 200) {
console.log('业务统计数据===>', res)
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) {
return Number(value).toLocaleString()
},
......@@ -1496,6 +1212,34 @@ export default {
}
}
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 {
}
.service_info_statistics {
width: 100%;
height: 103px;
height: 113px;
padding-top: 20px;
padding-left: 16px;
//padding-right: 16px;
......@@ -1831,8 +1575,11 @@ export default {
}
.percentDiv {
width: 100%;
height: 181px;
height: 191px;
text-align: center;
.cardTitle {
margin-bottom: 10px;
}
}
.serviceCard {
width: 100%;
......@@ -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>
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