parent
bbf3fcb915
commit
58840df292
@ -0,0 +1,33 @@
|
||||
const state = {
|
||||
select: {
|
||||
tag_id: '',
|
||||
dept_id: '',
|
||||
keyword: '',
|
||||
leixing: ''
|
||||
}
|
||||
}
|
||||
|
||||
const mutations = {
|
||||
SET_SELECTED: (state, { key, value, refresh = false }) => {
|
||||
if (refresh) {
|
||||
for(let key in state.select) {
|
||||
state.select[key] = ''
|
||||
}
|
||||
}
|
||||
if (state.select.hasOwnProperty(key)) {
|
||||
state.select[key] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const actions = {
|
||||
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state,
|
||||
mutations,
|
||||
actions
|
||||
}
|
||||
|
||||
@ -1,448 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="boxlist">
|
||||
<div class="box box1">
|
||||
<div class="boxtitle">
|
||||
<span>营业统计</span>
|
||||
<i class="el-icon-data-line statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">服务金额</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">
|
||||
{{totaldata.business.server_money_total}}
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.business.nurse_money_total}}</span>
|
||||
<span>护工金额</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.business.remain_money_total}}</span>
|
||||
<span>留存金额</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box2">
|
||||
<div class="boxtitle">
|
||||
|
||||
<span>人效统计</span>
|
||||
<i class="el-icon-user statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">总服务时长</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">
|
||||
{{totaldata.person_efficiency.server_time_total}}
|
||||
分钟
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
|
||||
<span>{{totaldata.person_efficiency.expect}}</span>
|
||||
<span> 照护人员数</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.person_efficiency.act}} </span>
|
||||
<span>天数</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box3">
|
||||
<div class="boxtitle">
|
||||
<span>客户统计</span>
|
||||
<i class="el-icon-s-custom statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">活跃客户</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">
|
||||
{{totaldata.customer.active}}人
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.customer.add}}</span>
|
||||
<span>新增</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.customer.wash}}</span>
|
||||
<span>流失</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box4">
|
||||
<div class="boxtitle">
|
||||
|
||||
<span>订单统计</span>
|
||||
<i class="el-icon-document statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">服务订单</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">{{totaldata.order.server_total}}单
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.order.cycle_total}}</span>
|
||||
<span>周期性订单</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.order.unit_total}}</span>
|
||||
<span>单次订单</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CountTo from 'vue-count-to'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
countsData: {
|
||||
type: Object
|
||||
},
|
||||
totaldata: {
|
||||
type: Object,
|
||||
default: {
|
||||
|
||||
"business": {
|
||||
"server_money_total": 0,
|
||||
"nurse_money_total": 0,
|
||||
"remain_money_total": 0
|
||||
},
|
||||
"person_efficiency": {
|
||||
"server_time_total": "0",
|
||||
"expect": 0,
|
||||
"act": 0
|
||||
},
|
||||
"customer": {
|
||||
"active": 0,
|
||||
"add": 0,
|
||||
"wash": 0
|
||||
},
|
||||
"order": {
|
||||
"server_total": 0,
|
||||
"cycle_total": 0,
|
||||
"unit_total": 0
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
CountTo
|
||||
},
|
||||
methods: {
|
||||
handleRoute(type) {
|
||||
this.$emit('handleRoute', type)
|
||||
},
|
||||
toCaculateper(f1, f2) {
|
||||
return ((f1 / (f2 == 0 ? 1 : f2)) * 100).toFixed(2) + "%"
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.boxlist {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.statIcon {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.index_icon {
|
||||
position: absolute;
|
||||
top: 1.25rem;
|
||||
right: 1.25rem;
|
||||
width: 3.5625rem;
|
||||
}
|
||||
|
||||
.index_bg {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
.boxcontentitem-small {
|
||||
font-size: 16px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
|
||||
.box {
|
||||
position: relative;
|
||||
width: 33%;
|
||||
margin-left: 0.5%;
|
||||
margin-right: 0.5%;
|
||||
margin-bottom: 2.375rem;
|
||||
box-shadow: 0px 8px 15px 0px rgba(212, 84, 32, 0.3100);
|
||||
border-radius: 8px;
|
||||
box-sizing: border-box;
|
||||
opacity: 0.8;
|
||||
padding: 1.25rem 0;
|
||||
|
||||
.boxcontentsubtitle {
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
font-size: 1.0625rem;
|
||||
margin-top: 1.25rem;
|
||||
}
|
||||
|
||||
.boxfooter {
|
||||
font-size: 1.0625rem;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.boxtitle {
|
||||
font-size: 20px;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
padding: 0 1.25rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.boxcontent {
|
||||
display: flex;
|
||||
//justify-content: space-around;
|
||||
align-items: center;
|
||||
|
||||
.boxline {
|
||||
width: 1px;
|
||||
height: 4.0625rem;
|
||||
background: #FFFFFF00;
|
||||
opacity: 0.3;
|
||||
margin-left: 2.0625rem;
|
||||
margin-right: 2.0625rem;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.boxcontentitem {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 19px;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
min-width: 100%;
|
||||
|
||||
.boxcontentitem-big {
|
||||
font-size: 2.625rem;
|
||||
font-family: Arial;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.box1 {
|
||||
background: linear-gradient(134deg, #D1AC7B, #DFC69C);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #DFC69C;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.bline {
|
||||
background: linear-gradient(to right, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0) 60%);
|
||||
height: 0.25rem;
|
||||
width: 100%;
|
||||
margin-top: 1.25rem;
|
||||
}
|
||||
|
||||
.box2 {
|
||||
background: linear-gradient(134deg, #9193BC, #B7B9D4);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #B7B9D4;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.box3 {
|
||||
|
||||
background: linear-gradient(-55deg, #F6A868, #F4C59E);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #F4C59E;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.box4 {
|
||||
|
||||
background: linear-gradient(-55deg, #64A48E, #9ECABB);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #9ECABB;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.panel-group {
|
||||
// margin-top: 18px;
|
||||
margin-left: -2% !important;
|
||||
margin-right: -3% !important;
|
||||
|
||||
.card-panel-col {
|
||||
margin: 0 2%;
|
||||
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.card-panel {
|
||||
height: 130px;
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
color: #666;
|
||||
text-align: center;
|
||||
// background: #fff;
|
||||
// box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
|
||||
// border-color: rgba(0, 0, 0, .05);
|
||||
|
||||
&:hover {
|
||||
.card-panel-icon-wrapper {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
// .icon-people {
|
||||
// background: #40c9c6;
|
||||
// }
|
||||
|
||||
// .icon-message {
|
||||
// background: #36a3f7;
|
||||
// }
|
||||
|
||||
// .icon-money {
|
||||
// background: #f4516c;
|
||||
// }
|
||||
|
||||
// .icon-shopping {
|
||||
// background: #34bfa3
|
||||
// }
|
||||
}
|
||||
|
||||
.icon-people {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.icon-message {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.icon-money {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.icon-shopping {
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.card-panel-icon-wrapper {
|
||||
float: right;
|
||||
margin: 22px 0 0 14px;
|
||||
padding: 16px;
|
||||
transition: all 0.38s ease-out;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.card-panel-icon {
|
||||
float: left;
|
||||
font-size: 42px;
|
||||
}
|
||||
|
||||
.card-panel-description {
|
||||
// float: right;
|
||||
font-weight: bold;
|
||||
margin: 16px 12px;
|
||||
|
||||
.card-panel-text {
|
||||
line-height: 25px;
|
||||
color: rgb(255, 255, 255);
|
||||
font-size: 26px;
|
||||
margin-bottom: 20px;
|
||||
width: 70%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
p {
|
||||
text-align: left;
|
||||
font-size: 19px;
|
||||
}
|
||||
|
||||
.card-panel-num {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width:550px) {
|
||||
.card-panel-description {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.card-panel-icon-wrapper {
|
||||
float: none !important;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0 !important;
|
||||
|
||||
.svg-icon {
|
||||
display: block;
|
||||
margin: 14px auto !important;
|
||||
float: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -1,55 +0,0 @@
|
||||
import { debounce } from '@/utils'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
$_sidebarElm: null,
|
||||
$_resizeHandler: null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$_resizeHandler = debounce(() => {
|
||||
if (this.chart) {
|
||||
this.chart.resize()
|
||||
}
|
||||
}, 100)
|
||||
this.$_initResizeEvent()
|
||||
this.$_initSidebarResizeEvent()
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.$_destroyResizeEvent()
|
||||
this.$_destroySidebarResizeEvent()
|
||||
},
|
||||
// to fixed bug when cached by keep-alive
|
||||
// https://github.com/PanJiaChen/vue-element-admin/issues/2116
|
||||
activated() {
|
||||
this.$_initResizeEvent()
|
||||
this.$_initSidebarResizeEvent()
|
||||
},
|
||||
deactivated() {
|
||||
this.$_destroyResizeEvent()
|
||||
this.$_destroySidebarResizeEvent()
|
||||
},
|
||||
methods: {
|
||||
// use $_ for mixins properties
|
||||
// https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
|
||||
$_initResizeEvent() {
|
||||
window.addEventListener('resize', this.$_resizeHandler)
|
||||
},
|
||||
$_destroyResizeEvent() {
|
||||
window.removeEventListener('resize', this.$_resizeHandler)
|
||||
},
|
||||
$_sidebarResizeHandler(e) {
|
||||
if (e.propertyName === 'width') {
|
||||
this.$_resizeHandler()
|
||||
}
|
||||
},
|
||||
$_initSidebarResizeEvent() {
|
||||
this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0]
|
||||
this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler)
|
||||
},
|
||||
$_destroySidebarResizeEvent() {
|
||||
this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,298 +1,134 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="title">最新上传</div>
|
||||
<xy-table :height="300" :action="index" :req-opt="select1" :table-item="table"></xy-table>
|
||||
|
||||
<div class="statistics">
|
||||
<panel-group :totaldata="list" />
|
||||
</div>
|
||||
|
||||
|
||||
<div class="title">热门文件</div>
|
||||
<xy-table :height="300" :action="index" :req-opt="select2" :table-item="table"></xy-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import echarts from "echarts"
|
||||
import PanelGroup from './components/PanelGroup'
|
||||
import {
|
||||
getChartsHome
|
||||
} from "../../api/dashboard.js"
|
||||
import { index } from '@/api/system/baseForm'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
PanelGroup
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
col: '',
|
||||
line: '',
|
||||
business_data: [],
|
||||
collect_data: [],
|
||||
list: {},
|
||||
customerArr: [],
|
||||
orderArr: [],
|
||||
chartData: {},
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
chartData(val, newval) {
|
||||
if (newval){
|
||||
this.init();
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async loadData() {
|
||||
await getChartsHome().then((res) => {
|
||||
console.log(res);
|
||||
this.list = res.list;
|
||||
this.chartData = res;
|
||||
let _business_data = [];
|
||||
let _collect_data = [];
|
||||
res.business_data.map(item => {
|
||||
_business_data.push(item.server_money_total)
|
||||
_collect_data.push(item.collect_money)
|
||||
})
|
||||
this.business_data = _business_data;
|
||||
this.collect_data = _collect_data;
|
||||
let _customerArr = [];
|
||||
let _orderArr = [];
|
||||
|
||||
res.order_data.map(item => {
|
||||
_customerArr.push(item.active_customer)
|
||||
_orderArr.push(item.order_total)
|
||||
})
|
||||
this.customerArr = _customerArr;
|
||||
this.orderArr = _orderArr;
|
||||
}).catch()
|
||||
},
|
||||
init() {
|
||||
this.col = echarts.init(document.getElementById('col-chart'))
|
||||
this.col.setOption({
|
||||
title: {
|
||||
text: ''
|
||||
select1: {
|
||||
table_name: 'materials',
|
||||
sort_name: 'created_at',
|
||||
sort_type: 'desc'
|
||||
},
|
||||
select2: {
|
||||
table_name: 'materials',
|
||||
sort_name: 'dianjiliang',
|
||||
sort_type: 'desc'
|
||||
},
|
||||
table: [
|
||||
{
|
||||
type: 'index',
|
||||
width: 60
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
},
|
||||
position: 'bottom'
|
||||
},
|
||||
legend: {},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
boundaryGap: [0, 0.01]
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['第一周', '第二周', '第三周', '第四周']
|
||||
},
|
||||
series: [{
|
||||
name: '服务金额',
|
||||
type: 'bar',
|
||||
data: this.business_data,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: 'rgb(42,182,252)'
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '收款',
|
||||
type: 'bar',
|
||||
data: this.collect_data,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: 'rgb(34,228,255)'
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '文件',
|
||||
width: 180,
|
||||
customFn: row => {
|
||||
return (
|
||||
<div>{row.nianfen}|{row.wenjian}|{row.bianhao}</div>
|
||||
)
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
this.line = echarts.init(document.getElementById('line-chart'))
|
||||
this.line.setOption({
|
||||
title: {
|
||||
text: ''
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['活跃客户', '服务订单']
|
||||
{
|
||||
label: '标题',
|
||||
prop: 'biaoti',
|
||||
width: 140
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '6%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
|
||||
{
|
||||
label: '类型',
|
||||
prop: 'leixing',
|
||||
width: 140,
|
||||
formatter: (data, row, val) => {
|
||||
let map = new Map([
|
||||
[1,'流程文件'],
|
||||
[2,'表单文件'],
|
||||
[3,'岗位工作及标准'],
|
||||
[4,'部门工作职责'],
|
||||
[5,'规章制度管理']
|
||||
])
|
||||
return map.get(val)
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['第一周', '第二周', '第三周', '第四周']
|
||||
{
|
||||
label: '审核部门',
|
||||
prop: 'id_material_shenhebumen_depts_material_id_relation.name',
|
||||
width: 140
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
{
|
||||
label: '标签',
|
||||
minWidht: 180,
|
||||
align: 'left',
|
||||
customFn:row => {
|
||||
return (
|
||||
<div>{
|
||||
row.id_material_biaoqian_tags_material_id_relation.map(i => {
|
||||
return (
|
||||
<span style="padding-left: 10px;">{ i.mingcheng }</span>
|
||||
)
|
||||
})
|
||||
}</div>
|
||||
)
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
name: '活跃客户',
|
||||
type: 'line',
|
||||
stack: 'Total',
|
||||
data: this.customerArr,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: 'rgb(42,182,252)'
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '服务订单',
|
||||
type: 'line',
|
||||
stack: 'Total',
|
||||
data: this.orderArr,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: 'rgb(34,228,255)'
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '文件',
|
||||
minWidht: 200,
|
||||
align: 'left',
|
||||
customFn:row => {
|
||||
return (
|
||||
<div>{
|
||||
row.id_material_fujian_uploads_material_id_relation.map(i => {
|
||||
return (
|
||||
<a href={i.url} download={i.name} class="uploaded-a" style="padding-left: 10px;">{ i.name }</a>
|
||||
)
|
||||
})
|
||||
}</div>
|
||||
)
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
index,
|
||||
},
|
||||
created() {
|
||||
|
||||
//this.loadData();
|
||||
},
|
||||
mounted() {
|
||||
|
||||
|
||||
//this.init()
|
||||
|
||||
window.onresize = () => {
|
||||
this.col.resize()
|
||||
this.line.resize()
|
||||
}
|
||||
|
||||
},
|
||||
destroyed() {
|
||||
window.onresize = null
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.statistics {
|
||||
display: flex;
|
||||
|
||||
margin-top: 20px;
|
||||
|
||||
&-title {
|
||||
|
||||
padding-left: 6px;
|
||||
}
|
||||
|
||||
&-content {
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
|
||||
&-top {
|
||||
.title {
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
letter-spacing: 1px;
|
||||
|
||||
&__num {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
&__name {
|
||||
font-size: 10px;
|
||||
color: rgb(140, 140, 140);
|
||||
}
|
||||
}
|
||||
|
||||
&-bottom {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
&-left {
|
||||
|
||||
&__num {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
&__name {
|
||||
font-size: 10px;
|
||||
color: rgb(140, 140, 140);
|
||||
}
|
||||
}
|
||||
|
||||
&-right {
|
||||
|
||||
&__num {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
&__name {
|
||||
font-size: 10px;
|
||||
color: rgb(140, 140, 140);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&>div {
|
||||
flex: 1;
|
||||
margin-right: 20px;
|
||||
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
padding: 10px 4px;
|
||||
}
|
||||
|
||||
.chart {
|
||||
display: flex;
|
||||
|
||||
margin-top: 20px;
|
||||
|
||||
|
||||
.chartItem {
|
||||
|
||||
width: 49%;
|
||||
|
||||
.chartItemTitle {
|
||||
font-size: 16px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#col-chart {
|
||||
background: #fff;
|
||||
border-radius: 10px;
|
||||
flex: 1;
|
||||
margin-right: 20px;
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
min-height: 400px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#line-chart {
|
||||
background: #fff;
|
||||
border-radius: 10px;
|
||||
flex: 1;
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
min-height: 400px;
|
||||
}
|
||||
}
|
||||
|
||||
.uploaded-a {
|
||||
color: red;
|
||||
text-decoration: none;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.uploaded-a:hover {
|
||||
color: red;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
Loading…
Reference in new issue