<template> <el-row :gutter="40" class="panel-group"> <el-col v-for="card in dataGroup" :key="card.title" :xs="12" :sm="12" :lg="6" class="card-panel-col"> <card :title="card.title" :context="card.context" :icon="card.icon" :color="card.color"/> </el-col> </el-row> </template> <script> import Card from '@/components/BigData/Card' import { wellCountByBfzt } from '@/api/well' import { deviceStaticByStatus, alarmNowStatic } from '@/api/dataStatics' import { jobCountByStatus } from '@/api/job' export default { components: { Card }, data() { return { dataGroup: [ { title: '井总数量', context: '--', icon: 'icon-well', color: '#40c9c6' }, { title: '设备数量', context: '--', icon: 'icon-device', color: '#36a3f7' }, { title: '当前报警数', context: '--', icon: 'icon-alarm', color: '#f4516c' }, { title: '未完成工单数', context: '--', icon: 'icon-order', color: '#f4516c' } ] } }, created() { this.getWellCount() this.getDeviceCount() this.getAlarmCount() this.getJobCount() }, methods: { getWellCount() { this.dataGroup[0].context = 0 // TODO: 待调试真接口 // wellCountByBfzt().then(response => { // this.dataGroup[0].context = response.data.total // }) }, getDeviceCount() { this.dataGroup[1].context = 0 // TODO: 待调试真接口 // deviceStaticByStatus().then(response => { // this.dataGroup[1].context = response.data.total // }) }, getAlarmCount() { // TODO: 待调试真接口 this.dataGroup[2].context = 0 // alarmNowStatic().then(response => { // this.dataGroup[2].context = response.data.total // }) }, getJobCount() { jobCountByStatus().then(response => { const data = response.data const total = data.beforeGet + data.beforeConfirm + data.inHandle this.dataGroup[3].context = total }) } } } </script> <style lang="scss" scoped> .panel-group { margin-top: 18px; .card-panel-col { margin-bottom: 32px; } .card-panel { height: 108px; cursor: pointer; font-size: 12px; position: relative; overflow: hidden; color: #666; 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: #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>