Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
pet-business-web
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
刘怀志
pet-business-web
Commits
ed0a56dc
Commit
ed0a56dc
authored
Aug 02, 2023
by
陈明豪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
数据统计-接口对接
parent
ff3663e8
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
349 additions
and
519 deletions
+349
-519
statistics.js
src/api/business/statistics.js
+9
-0
china-map-bigger.vue
...ws/data-statistics/echars-components/china-map-bigger.vue
+1
-1
pileUpChart.vue
src/views/data-statistics/echars-components/pileUpChart.vue
+0
-1
twoLineChart.vue
src/views/data-statistics/echars-components/twoLineChart.vue
+5
-5
twoLineChartYNoUnit.vue
...data-statistics/echars-components/twoLineChartYNoUnit.vue
+10
-3
hospital-data-statistics.vue
...ics/hospital-data-statistics/hospital-data-statistics.vue
+6
-4
emptyTool.vue
src/views/data-statistics/other-components/emptyTool.vue
+51
-0
percentTool.vue
src/views/data-statistics/other-components/percentTool.vue
+3
-0
service-statistics.vue
...data-statistics/service-statistics/service-statistics.vue
+264
-505
No files found.
src/api/business/statistics.js
View file @
ed0a56dc
...
...
@@ -31,3 +31,12 @@ export function listHospital(query) {
params
:
query
})
}
// 获取服务项目预约记录
export
function
listOrder
(
query
)
{
return
request
({
url
:
'/business/statistics/checkList'
,
method
:
'get'
,
params
:
query
})
}
src/views/data-statistics/echars-components/china-map-bigger.vue
View file @
ed0a56dc
...
...
@@ -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>
...
...
src/views/data-statistics/echars-components/pileUpChart.vue
View file @
ed0a56dc
...
...
@@ -42,7 +42,6 @@ export default {
type
:
'shadow'
},
formatter
:
(
axis
)
=>
{
console
.
log
(
'堆叠'
,
axis
)
return
`<div>
<div>
${
axis
[
0
].
name
}
</div>
<div style="display: flex">
...
...
src/views/data-statistics/echars-components/twoLineChart.vue
View file @
ed0a56dc
...
...
@@ -33,12 +33,12 @@ export default {
line_color
:
''
,
area_color
:
''
,
unit
:
''
},
// y轴是否显示单位
showYUnit
:
{
type
:
Boolean
,
default
:
true
}
},
// y轴是否显示单位
showYUnit
:
{
type
:
Boolean
,
default
:
true
}
},
data
()
{
...
...
src/views/data-statistics/echars-components/twoLineChartYNoUnit.vue
View file @
ed0a56dc
...
...
@@ -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
+
')'
,
...
...
src/views/data-statistics/hospital-data-statistics/hospital-data-statistics.vue
View file @
ed0a56dc
...
...
@@ -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
...
...
src/views/data-statistics/other-components/emptyTool.vue
0 → 100644
View file @
ed0a56dc
<
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
>
src/views/data-statistics/other-components/percentTool.vue
View file @
ed0a56dc
...
...
@@ -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
>
src/views/data-statistics/service-statistics/service-statistics.vue
View file @
ed0a56dc
...
...
@@ -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=
"
project
Name"
/>
<el-table-column
sortable
label=
"检查项目"
show-overflow-tooltip
prop=
"
checkItems
Name"
/>
<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=
"
t
otal>0"
:total=
"
t
otal"
:page
.
sync=
"query
Params
.pageNum"
:limit
.
sync=
"query
Params
.pageSize"
@
pagination=
"get
Bann
erList"
v
-
show
=
"
orderT
otal>0"
:
total
=
"
orderT
otal"
:
page
.
sync
=
"query
Order
.pageNum"
:
limit
.
sync
=
"query
Order
.pageSize"
@
pagination
=
"get
Ord
erList"
/>
<
/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
:
5
0
},
{
name
:
'100~300元'
,
max
:
5
0
},
{
name
:
'300~500元'
,
max
:
5
0
},
{
name
:
'500~1000元'
,
max
:
5
0
},
{
name
:
'1000元以上'
,
max
:
5
0
}
{
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
:
5
0
},
{
name
:
'100~300元'
,
max
:
5
0
},
{
name
:
'300~500元'
,
max
:
5
0
},
{
name
:
'500~1000元'
,
max
:
5
0
},
{
name
:
'1000元以上'
,
max
:
5
0
}
{
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
:
1
0
3px
;
height
:
1
1
3
px
;
padding
-
top
:
20
px
;
padding
-
left
:
16
px
;
//padding-right: 16px;
...
...
@@ -1831,8 +1575,11 @@ export default {
}
.
percentDiv
{
width
:
100
%
;
height
:
1
8
1px
;
height
:
1
9
1
px
;
text
-
align
:
center
;
.
cardTitle
{
margin
-
bottom
:
10
px
;
}
}
.
serviceCard
{
width
:
100
%
;
...
...
@@ -1908,4 +1655,16 @@ export default {
}
}
}
::
v
-
deep
.
el
-
radio
-
button__orig
-
radio
:
checked
+
.
el
-
radio
-
button__inner
{
color
:
#
5
FB54B
!
important
;
background
-
color
:
#
fff
!
important
;
border
-
color
:
#
E5E5E5
!
important
;
box
-
shadow
:
0
0
0
0
#
E5E5E5
;
}
::
v
-
deep
.
el
-
radio
-
button__inner
:
hover
{
color
:
#
6
db45d
!
important
;
}
.
rankInnerDiv
{
height
:
389
px
;
}
<
/style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment