<template> <el-row :gutter="40" class="panel-group"> <div v-for="card in dataGroup" :key="card.title"> <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> <card :title="card.title" :context="card.context" :icon="card.icon" :color="card.color" @click.native="goPage(card.path)"/> </el-col> <!--v-if="hasPerm(card.permission)"--> </div> </el-row> </template> <script> import Card from '@/components/BigData/Card' import { getSingleCount } from '@/api/biz/statistics' import { getToday } from '@/utils/dateutils' import { getTransferJobCount } from '@/api/biz/statistics' import { getToiletJobCount } from '@/api/biz/statistics' import { getCleanJobCount } from '@/api/biz/statistics' export default { components: { Card }, data() { return { dataGroup: [ { title: '公厕', context: '--', icon: 'icon-toilet', color: '#36a3f7', path: '/toiletlist', permission: '/device/list' }, { title: '垃圾桶', context: '--', icon: 'icon-wastebin', color: '#f4bc50', path: '/wastbinlist', permission: '/alarm/now' }, { title: '垃圾中转站', context: '--', icon: 'icon-transfer', color: '#a1a9b0', path: '/transferstation', permission: '/job' }, { title: '环卫车', context: '--', icon: 'icon-car', color: '#39c979', path: '/carlist', permission: '/well/list' }, { title: '人员', context: '--', icon: 'icon-staff', color: '#40c9c6', path: '/stafflist', permission: '/well/list' }, { title: '垃圾转运作业', context: '--', icon: 'icon-transfercar', color: '#c95877', path: '/jobRecord/wastebin', permission: '/well/list' }, { title: '路面清扫作业', context: '--', icon: 'icon-route', color: '#a57cf4', path: '/jobRecord/clean', permission: '/alarm/now' }, { title: '公厕保洁作业', context: '--', icon: 'icon-clean', color: '#7dd3d6', path: '/toiletclean', permission: '/job' } ] } }, created() { this.getStaffCount() this.getToiletCount() this.getWasteBinCount() this.getTransferStationCount() this.getCarCount() this.getWasteBinJobCount() this.fetchCleanJobCount() this.fetchToiletJobCount() }, methods: { goPage(path) { this.$router.push(path) }, getStaffCount() { getSingleCount('staff').then(response => { this.dataGroup[4].context = response.data }) }, getToiletCount() { getSingleCount('toilet').then(response => { this.dataGroup[0].context = response.data }) }, getWasteBinCount() { getSingleCount('wastebin').then(response => { this.dataGroup[1].context = response.data }) }, getTransferStationCount() { getSingleCount('transferstation').then(response => { this.dataGroup[2].context = response.data }) }, getCarCount() { getSingleCount('car').then(response => { this.dataGroup[3].context = response.data }) }, getWasteBinJobCount() { this.dataGroup[5].context = '--' const params = { type: 'day', // 统计方式,day按天,month按月 startTime: getToday('yyyy-MM-dd'), // 开始时间 endTime: getToday('yyyy-MM-dd') // 结束时间 } getTransferJobCount(params).then(response => { if (response.data.length > 0) { this.dataGroup[5].context = response.data[0].count } }) }, fetchCleanJobCount() { this.dataGroup[6].context = '--' const params = { type: 'day', // 统计方式,day按天,month按月 startTime: getToday('yyyy-MM-dd'), // 开始时间 endTime: getToday('yyyy-MM-dd') // 结束时间 } getCleanJobCount(params).then(response => { if (response.data.length > 0) { this.dataGroup[6].context = response.data[0].count } }) }, fetchToiletJobCount() { this.dataGroup[7].context = '--' const params = { type: 'day', // 统计方式,day按天,month按月 startTime: getToday('yyyy-MM-dd'), // 开始时间 endTime: getToday('yyyy-MM-dd') // 结束时间 } getToiletJobCount(params).then(response => { if (response.data.length > 0) { this.dataGroup[7].context = response.data[0].count } }) } } } </script> <style lang="scss" scoped> .panel-group { margin-top: 5px; margin-bottom: 15px; .card-panel-col { margin-bottom: 15px; } .card-panel { height: 108px; cursor: pointer; font-size: 12px; position: relative; overflow: hidden; color: #666; background: #fff; &: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: #40c9c6; } .icon-message { color: #36a3f7; } .icon-money { color: #f4516c; } .icon-shopping { color: #34bfa3 } .card-panel-icon-wrapper { float: left; margin: 14px 0 0 14px; padding: 16px; transition: all 0.38s ease-out; border-radius: 6px; } .card-panel-icon { float: left; font-size: 48px; } .card-panel-description { float: right; font-weight: bold; margin: 26px; margin-left: 0px; .card-panel-text { line-height: 18px; color: rgba(0, 0, 0, 0.45); font-size: 16px; margin-bottom: 12px; } .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>