dbd-meeting-html/src/views/admin/repair/RepairStatistics.vue

865 lines
21 KiB
Vue
Raw Normal View History

2024-08-08 14:32:22 +08:00
<template>
<div class='container'>
<div class='topHeadView'>
<div class='itemView' @click="dispatchCase('1')">
<div class='imgView'
:style="{'background' : `no-repeat center/cover url(${baseUrl + '/img/paidan.png'}), white`}"></div>
<div class='label'>待派单</div>
<div class='num'>{{ adminStatsCount.wait }}</div>
2024-08-17 16:31:37 +08:00
</div>
<div class='itemView' @click="dispatchCase('3')">
<div class='imgContainer'>
<div class='imgView'
:style="{'background' : `no-repeat center/cover url(${baseUrl + '/img/paidanjump.png'}), white`}"></div>
2024-08-20 16:35:26 +08:00
</div>
<div class='label'>重派单</div>
<div class='num'>{{ adminStatsCount.anew }}</div>
2024-08-17 16:31:37 +08:00
</div>
<div class='itemView' @click="jumpInfo('2')">
<div class='imgView'
:style="{'background' : `no-repeat center/cover url(${baseUrl + '/img/time.png'}), white`}"></div>
<div class='label'>未查看通知</div>
<div class='num'>{{ adminStatsCount.newnotice }}</div>
2024-08-17 16:31:37 +08:00
</div>
<div class='itemView' @click="jumpInfo('3')">
<div class='imgView'
:style="{'background' : `no-repeat center/cover url(${baseUrl + '/img/info.png'}), white`}"></div>
<div class='label'>已查看通知</div>
<div class='num'>{{ adminStatsCount.oldnotice }}</div>
2024-08-08 17:18:00 +08:00
</div>
</div>
<div class='caseStatisticsView'>
<div class='headView'>
<div class='titleView'>工单统计</div>
<div class='typeView' style='width: 200px;'>
<a-range-picker v-model='dateRange2' @change='onChange2' />
2024-08-08 17:18:00 +08:00
</div>
</div>
<div class='contentView'>
<div class='itemView' @click="dispatchCase()">
<div class='label'>维修工单</div>
<div class='value'>{{ repairStatsCount.zs }}</div>
2024-08-17 16:31:37 +08:00
</div>
<div class='itemView' @click="dispatchCase('7')">
<div class='label'>处理中工单</div>
<div class='value'>{{ repairStatsCount.wait }}</div>
2024-08-17 16:31:37 +08:00
</div>
<div class='itemView'>
<div class='label'>超时量</div>
<div class='value'>{{ repairStatsCount.timeout }}</div>
2024-08-17 16:31:37 +08:00
</div>
<div class='itemView'>
<div class='label'>差评量</div>
<div class='value'>{{ repairStatsCount.l }}</div>
2024-08-17 16:31:37 +08:00
</div>
<div class='itemView'>
<div class='label'>中评量</div>
<div class='value'>{{ repairStatsCount.m }}</div>
2024-08-17 16:31:37 +08:00
</div>
<div class='itemView'>
<div class='label'>好评量</div>
<div class='value'>{{ repairStatsCount.h }}</div>
2024-08-08 17:18:00 +08:00
</div>
</div>
</div>
<div class='statusView'>
<div class='caseStatusView'>
<div class='headView'>
<div class='titleView'>工单完成情况</div>
<div class='typeView' style='width: 200px;'>
<a-range-picker v-model='dateRange3L' @change='onChange3L' />
2024-08-28 21:04:08 +08:00
</div>
2024-08-08 17:18:00 +08:00
</div>
<div class='contentView'>
<div class='circularView'>
<div id='echart1' style='width: 400px; height: 300px'></div>
2024-08-08 17:18:00 +08:00
</div>
<div class='centerLine'></div>
<div class='circularView'>
<div id='echart2' style='width: 400px; height: 300px'></div>
2024-08-08 17:18:00 +08:00
</div>
</div>
</div>
<div class='evaluateView'>
<div class='headView'>
<div class='titleView'>评价情况</div>
<div class='typeView' style='width: 200px;'>
<a-range-picker v-model='dateRange3R' @change='onChange3R' />
2024-08-28 21:04:08 +08:00
</div>
2024-08-08 17:18:00 +08:00
</div>
<div class='contentView'>
<div id='echart3' style='width: 400px; height: 300px'></div>
2024-08-08 17:18:00 +08:00
</div>
</div>
</div>
<div class='faultView'>
<div class='floorView'>
<div class='headView'>
<div class='titleView'>网格长</div>
<div class='typeView' style='width: 200px;'>
<a-range-picker v-model='dateRange4L' @change='onChange4L' />
2024-08-08 17:18:00 +08:00
</div>
</div>
<div class='contentView'>
<div id='echart4' style='width: 550px; height: 600px'></div>
2024-08-08 17:36:38 +08:00
</div>
2024-08-08 17:18:00 +08:00
</div>
<div class='rightView'>
<div class='blockView'>
<div class='headView'>
<div class='titleView'>故障统计</div>
<div class='typeView' style='width: 200px;'>
<a-range-picker v-model='dateRange4R1' @change='onChange4R1' />
2024-08-09 10:57:16 +08:00
</div>
</div>
<div class='contentView'>
<div id='echart5' style='width: 700px; height: 327px'></div>
2024-08-09 10:57:16 +08:00
</div>
</div>
<div class='blockView'>
<div class='headView'>
<div class='titleView'>故障类型</div>
<div class='typeView' style='width: 200px;'>
<a-range-picker v-model='dateRange4R2' @change='onChange4R2' />
2024-08-09 10:57:16 +08:00
</div>
</div>
<div class='contentView'>
<div id='echart6' style='width: 700px; height: 327px'></div>
2024-08-09 10:57:16 +08:00
</div>
</div>
2024-08-08 17:18:00 +08:00
</div>
</div>
<div class='tableView'>
<div class='headView'>
<div class='titleView'>项目详情</div>
<div class='typeView' style='width: 200px;'>
<a-range-picker v-model='dateRange5' @change='onChange5' />
2024-08-09 10:57:16 +08:00
</div>
</div>
<div class='contentView'>
2024-08-09 11:02:17 +08:00
<a-table
size='default'
ref='table'
style='width: 100%'
:columns='columns'
:data-source='loadData'
2024-08-09 11:02:17 +08:00
>
2024-08-09 10:57:16 +08:00
</a-table>
</div>
</div>
2024-08-08 17:18:00 +08:00
</div>
2024-08-08 14:32:22 +08:00
</template>
<script>
2024-08-08 17:18:00 +08:00
import * as echarts from 'echarts'
2024-08-28 21:04:08 +08:00
import moment from 'moment'
import { STable } from '@/components'
2024-08-26 10:41:44 +08:00
2024-08-19 08:43:40 +08:00
import {
repairAdminStats,
repairStats,
floorStats,
2024-08-28 21:04:08 +08:00
deviceStats,
failureStats,
deviceTypeStats
2024-08-19 08:43:40 +08:00
} from '@/api/admin/repair/repairStats'
2024-08-08 17:18:00 +08:00
2024-08-28 21:04:08 +08:00
//常量计算当前周的开始与结束
const initStart = moment().startOf('isoWeek'), initEnd = moment().endOf('isoWeek')
2024-08-28 21:04:08 +08:00
2024-08-08 14:32:22 +08:00
export default {
2024-08-08 17:18:00 +08:00
name: 'RepairStatistics',
2024-08-28 21:04:08 +08:00
components: {
STable
},
data() {
2024-08-09 10:57:16 +08:00
return {
2024-08-28 21:04:08 +08:00
dateRange2: [initStart, initEnd],
dateRange3L: [initStart, initEnd],
dateRange3R: [initStart, initEnd],
dateRange4L: [initStart, initEnd],
dateRange4R1: [initStart, initEnd],
dateRange4R2: [initStart, initEnd],
dateRange5: [initStart, initEnd],
2024-08-20 16:35:26 +08:00
baseUrl: process.env.BASE_URL,
2024-08-17 16:31:37 +08:00
adminStatsCount: [],
repairStatsCount: [],
finishCount: [],
timeout: [],
2024-08-18 14:03:26 +08:00
deviceTypeCount: [],
2024-08-17 16:31:37 +08:00
pj: [],
floorStatsCount: [],
2024-08-09 10:57:16 +08:00
// 查询参数
queryParam: {},
2024-08-09 11:02:17 +08:00
selectedRowKeys: [],
selectedRows: [],
2024-08-19 08:43:40 +08:00
faultStatsCount: [],
2024-08-19 09:14:39 +08:00
selectFaultStatsCount: [],
2024-08-19 08:43:40 +08:00
deviceType: {
type: '',
time: '',
open: false
},
fault: {
type: '',
time: '',
open: false
},
2024-08-18 14:03:26 +08:00
yearShowOne: false,
2024-08-19 08:43:40 +08:00
//
floor: {
type: '',
time: '',
open: false
},
2024-08-19 09:14:39 +08:00
faultType: {
type: '',
time: '',
open: false
},
2024-08-09 10:57:16 +08:00
// 表头
columns: [
{
2024-08-18 14:03:26 +08:00
title: '类型',
dataIndex: 'typename'
},
{
title: '保修次数',
dataIndex: 'zs'
2024-08-09 10:57:16 +08:00
},
{
2024-08-18 14:03:26 +08:00
title: '维修次数',
dataIndex: 'closed'
2024-08-09 10:57:16 +08:00
},
{
2024-08-18 14:03:26 +08:00
title: '损坏最多品牌',
dataIndex: 'brand'
},
{
title: '维修完成率',
dataIndex: 'wcl'
},
{
title: '好评率',
dataIndex: 'hl'
},
{
title: '中评率',
dataIndex: 'ml'
},
{
title: '差评率',
dataIndex: 'll'
2024-08-09 11:05:28 +08:00
}
2024-08-09 10:57:16 +08:00
],
2024-08-28 21:04:08 +08:00
loadData: []
2024-08-09 10:57:16 +08:00
}
},
mounted() {
2024-08-28 21:04:08 +08:00
this.adminStats()//第一行工单统计
this.repairCount2()//第二行 工单统计
this.repairCount3L()//三行 工单完成情况
this.repairCount3R()//三行 评价情况
this.floorStats()//第四行 左侧 楼层负责人情况统计
this.deviceStats()// 第四行 右上设备 故障统计
this.failureStats()//第四行 右下 故障类型统计
this.deviceTypeStats()//第五行 设备、品牌、评价 统计
2024-08-08 17:18:00 +08:00
},
methods: {
// 跳转工单
dispatchCase(status) {
this.$router.push({ name: 'repair', query: { status } })
},
// 跳转通知
jumpInfo(tabKey) {
this.$router.push({ name: 'messageNotice', query: {tabKey} })
},
onChange2() {
this.repairCount2()
2024-08-19 08:43:40 +08:00
},
2024-08-28 21:04:08 +08:00
onChange3L() {
this.repairCount3L()
2024-08-19 08:43:40 +08:00
},
2024-08-28 21:04:08 +08:00
onChange3R() {
this.repairCount3R()
2024-08-19 08:43:40 +08:00
},
onChange4L() {
this.floorStats()
2024-08-19 08:43:40 +08:00
},
onChange4R1() {
this.deviceStats()
2024-08-19 08:43:40 +08:00
},
onChange4R2() {
this.failureStats()
2024-08-19 08:43:40 +08:00
},
onChange5() {
this.deviceTypeStats()
2024-08-19 08:43:40 +08:00
},
adminStats() {
2024-08-28 21:04:08 +08:00
repairAdminStats().then(res => {
this.adminStatsCount = res.repairAdminStats
2024-08-19 09:14:39 +08:00
})
2024-08-19 08:43:40 +08:00
},
repairCount2() {
const startDate = this.dateRange2[0].format('YYYY-MM-DD')
const endDate = this.dateRange2[1].format('YYYY-MM-DD')
2024-08-28 21:04:08 +08:00
repairStats({ startDate: startDate, endDate: endDate, type: 'repair' }).then(res => {
this.repairStatsCount = res.data.stats
2024-08-19 09:14:39 +08:00
})
},
repairCount3L() {
const startDate = this.dateRange3L[0].format('YYYY-MM-DD')
const endDate = this.dateRange3L[1].format('YYYY-MM-DD')
repairStats({ startDate: startDate, endDate: endDate, type: 'end' }).then(res => {
this.finishCount = res.data.wc
this.timeout = res.data.timeout
this.createEchartCake('echart1', {
bottom: 10,
left: 'right',
orient: 'vertical'
}, ['#91cd77', '#ef6567'], this.finishCount)
this.createEchartCake('echart2', {
bottom: 10,
left: 'right',
orient: 'vertical'
}, ['#ef6567', '#fc8251', '#f9c956', '#91cd77'], this.timeout)
2024-08-19 09:14:39 +08:00
})
},
repairCount3R() {
const startDate = this.dateRange3R[0].format('YYYY-MM-DD')
const endDate = this.dateRange3R[1].format('YYYY-MM-DD')
2024-08-28 21:04:08 +08:00
repairStats({ startDate: startDate, endDate: endDate, type: 'eval' }).then(res => {
this.pj = res.data.pj
this.createEchartCake('echart3', {
bottom: 10,
left: 'right',
orient: 'vertical'
}, ['#91cd77', '#fc8251', '#ef6567'], this.pj)
2024-08-19 08:43:40 +08:00
})
2024-08-18 14:03:26 +08:00
},
2024-08-28 21:04:08 +08:00
// 楼层负责人情况
floorStats() {
const startDate = this.dateRange4L[0].format('YYYY-MM-DD')
const endDate = this.dateRange4L[1].format('YYYY-MM-DD')
floorStats({ startDate: startDate, endDate: endDate }).then(res => {
2024-08-28 21:04:08 +08:00
this.createEchartLine('echart4', res.data)
2024-08-17 16:31:37 +08:00
})
},
2024-08-28 21:04:08 +08:00
//故障统计
deviceStats() {
const startDate = this.dateRange4R1[0].format('YYYY-MM-DD')
const endDate = this.dateRange4R1[1].format('YYYY-MM-DD')
2024-08-28 21:04:08 +08:00
deviceStats({ startDate: startDate, endDate: endDate }).then(res => {
this.faultStatsCount = res.data
this.createColumnEcharrt('echart5', res.data)
2024-08-19 08:43:40 +08:00
})
},
2024-08-28 21:04:08 +08:00
//第四行 右下 故障类型统计
failureStats() {
const startDate = this.dateRange4R2[0].format('YYYY-MM-DD')
const endDate = this.dateRange4R2[1].format('YYYY-MM-DD')
2024-08-28 21:04:08 +08:00
failureStats({ startDate: startDate, endDate: endDate }).then(res => {
2024-08-19 09:14:39 +08:00
this.selectFaultStatsCount = res.data
this.createEchartCake('echart6', {
bottom: 10,
left: 'right',
orient: 'vertical'
}, ['#ef6567', '#fc8251', '#f9c956', '#91cd77'], this.selectFaultStatsCount)
2024-08-17 16:31:37 +08:00
})
},
2024-08-28 21:04:08 +08:00
//第五行 设备、品牌、评价 统计
deviceTypeStats() {
const startDate = this.dateRange5[0].format('YYYY-MM-DD')
const endDate = this.dateRange5[1].format('YYYY-MM-DD')
deviceTypeStats({ startDate: startDate, endDate: endDate }).then(res => {
2024-08-28 21:04:08 +08:00
this.loadData = res.rows
2024-08-17 16:31:37 +08:00
})
},
2024-08-28 21:04:08 +08:00
createEchartCake(id, legend, colors, data) {
//console.log(data)
2024-08-08 17:18:00 +08:00
// 基于准备好的dom初始化echarts实例
let myChart = echarts.init(document.getElementById(id))
// 指定图表的配置项和数据
let option = {
tooltip: {
trigger: 'item'
},
2024-08-09 10:57:16 +08:00
legend: legend,
2024-08-28 21:04:08 +08:00
color: colors,
2024-08-08 17:18:00 +08:00
series: [
{
2024-08-17 16:31:37 +08:00
name: '完成率',
2024-08-08 17:18:00 +08:00
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 2,
borderColor: '#fff',
borderWidth: 2
},
label: {
2024-08-20 16:35:26 +08:00
show: true,
position: 'inner',
formatter: '{d}%'
2024-08-08 17:18:00 +08:00
},
emphasis: {
label: {
show: true,
fontSize: 40,
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
2024-08-17 16:31:37 +08:00
data: data
2024-08-08 17:18:00 +08:00
}
]
}
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option)
2024-08-19 08:43:40 +08:00
}
,
createEchartLine(id, data) {
2024-08-08 17:36:38 +08:00
// 基于准备好的dom初始化echarts实例
let myChart = echarts.init(document.getElementById(id))
let option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {},
color: ['#75bedc', '#f9c956'],
2024-08-08 17:36:38 +08:00
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'value',
boundaryGap: [0, 0.01]
},
yAxis: {
type: 'category',
2024-08-19 08:43:40 +08:00
data: data.y
2024-08-08 17:36:38 +08:00
},
series: [
{
2024-08-19 08:43:40 +08:00
name: '故障数量',
2024-08-08 17:36:38 +08:00
type: 'bar',
2024-08-28 21:04:08 +08:00
barWidth: '5px',
2024-08-19 08:43:40 +08:00
data: data.total
2024-08-08 17:36:38 +08:00
},
{
2024-08-28 21:04:08 +08:00
name: '已完成数量',
2024-08-08 17:36:38 +08:00
type: 'bar',
2024-08-28 21:04:08 +08:00
barWidth: '5px',
2024-08-19 08:43:40 +08:00
data: data.finish
2024-08-08 17:36:38 +08:00
}
]
}
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option)
2024-08-19 08:43:40 +08:00
}
,
createColumnEcharrt(id, data) {
2024-08-19 08:43:40 +08:00
data.x = data.x.map(item => {
if (item && item.length > 4) {
item = item.substring(0, 4) + '..'
}
return item
})
2024-08-09 10:57:16 +08:00
// 基于准备好的dom初始化echarts实例
let myChart = echarts.init(document.getElementById(id))
// There should not be negative values in rawData
const rawData = [
2024-08-19 08:43:40 +08:00
data.total,
data.finish
2024-08-09 10:57:16 +08:00
]
2024-08-28 21:04:08 +08:00
//计算,总数-已完成=未完成
2024-08-09 10:57:16 +08:00
for (let i = 0; i < rawData[0].length; ++i) {
rawData[0][i] -= rawData[1][i]
2024-08-09 10:57:16 +08:00
}
const grid = {
left: 100,
right: 100,
top: 50,
bottom: 50
}
const series = [
2024-08-19 08:43:40 +08:00
'未完成',
'已完成'
2024-08-09 10:57:16 +08:00
].map((name, sid) => {
return {
name,
type: 'bar',
stack: 'total',
2024-08-28 21:04:08 +08:00
barWidth: '10px',
2024-08-09 10:57:16 +08:00
label: {
show: true,
formatter: (params) => params.value > 0 ? params.value : ''
2024-08-09 10:57:16 +08:00
},
2024-08-28 21:04:08 +08:00
data: rawData[sid].map((d, did) => rawData[sid][did])
2024-08-09 10:57:16 +08:00
}
})
let option = {
legend: {
selectedMode: false
},
color: ['#f9c956', '#75bedc'],
2024-08-09 10:57:16 +08:00
grid,
yAxis: {
type: 'value'
},
xAxis: {
type: 'category',
2024-08-19 08:43:40 +08:00
data: data.x
2024-08-09 10:57:16 +08:00
},
series
}
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option)
2024-08-08 17:18:00 +08:00
}
}
2024-08-08 14:32:22 +08:00
}
</script>
<style scoped>
2024-08-08 17:18:00 +08:00
* {
box-sizing: border-box;
margin: 0;
padding: 0;
word-break: break-all;
line-height: 1;
}
.topHeadView {
display: flex;
justify-content: space-around;
align-items: center;
padding: 40px 0;
background: #4093f7;
border-radius: 10px;
}
.topHeadView .itemView {
position: relative;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
cursor: pointer;
2024-08-08 17:18:00 +08:00
}
2024-08-26 10:41:44 +08:00
.topHeadView .itemView .imgView {
2024-08-08 17:18:00 +08:00
width: 80px;
height: 80px;
2024-08-20 16:35:26 +08:00
border-radius: 80px;
}
2024-08-08 17:18:00 +08:00
.topHeadView .itemView .label {
margin-top: 10px;
color: white;
}
.topHeadView .itemView .num {
position: absolute;
left: calc(100% + 10px);
top: 50%;
transform: translateY(-100%);
width: 90px;
color: white;
font-size: 28px;
}
.caseStatisticsView {
margin-top: 10px;
padding: 0 20px;
border-radius: 10px;
background: white;
}
.caseStatisticsView .headView {
display: flex;
justify-content: space-between;
align-items: center;
}
.caseStatisticsView .headView .titleView {
font-size: 14px;
color: #4093f7;
font-weight: bold;
padding: 14px 30px;
border-bottom: 2px solid #4093f7;
}
.caseStatisticsView .headView .typeView {
display: flex;
justify-content: center;
align-items: center;
}
.caseStatisticsView .headView .typeView .type {
margin-right: 40px;
font-weight: bold;
}
.caseStatisticsView .headView .typeView .activity {
color: #4093f7;
}
.caseStatisticsView .contentView {
display: flex;
justify-content: center;
align-items: center;
padding: 30px 50px;
}
.caseStatisticsView .contentView .itemView {
flex: 1;
border: 1px solid #4093f7;
border-radius: 4px;
padding: 14px 20px;
margin-left: 20px;
display: flex;
justify-content: space-between;
align-items: center;
cursor: pointer;
2024-08-08 17:18:00 +08:00
}
.caseStatisticsView .contentView .itemView:first-of-type {
margin-left: 0;
}
.caseStatisticsView .contentView .itemView .label {
font-size: 12px;
font-weight: bold;
color: #4093f7;
}
.caseStatisticsView .contentView .itemView .value {
font-size: 12px;
}
.statusView {
display: flex;
justify-content: flex-start;
align-items: center;
margin-top: 10px;
}
.statusView .caseStatusView, .statusView .evaluateView {
background: white;
border-radius: 10px;
}
.statusView .caseStatusView {
flex: 2;
}
.statusView .evaluateView {
flex: 1;
margin-left: 6px;
}
.statusView .caseStatusView .headView, .statusView .evaluateView .headView {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20px;
height: 40px;
}
.statusView .caseStatusView .headView .titleView, .statusView .evaluateView .headView .titleView {
font-size: 14px;
color: gray;
}
.statusView .caseStatusView .headView .typeView {
display: flex;
justify-content: center;
align-items: center;
}
.statusView .caseStatusView .headView .typeView .type {
font-size: 12px;
color: #4093f7;
margin-left: 20px;
padding: 4px 8px;
border-radius: 4px;
}
.statusView .caseStatusView .headView .typeView .type.activity {
border: 1px solid #4093f7;
}
.statusView .caseStatusView .contentView {
display: flex;
justify-content: flex-start;
align-items: center;
}
.statusView .caseStatusView .contentView .circularView {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
}
.statusView .caseStatusView .contentView .centerLine {
width: 1px;
height: 200px;
background: rgba(0, 0, 0, 0.1);
}
.statusView .evaluateView .contentView {
display: flex;
justify-content: center;
align-items: center;
}
.faultView {
display: flex;
justify-content: flex-start;
2024-08-09 10:57:16 +08:00
align-items: flex-start;
2024-08-08 17:18:00 +08:00
margin-top: 10px;
}
2024-08-08 17:36:38 +08:00
.faultView .floorView {
2024-08-08 17:18:00 +08:00
background: white;
border-radius: 10px;
width: 600px;
}
.faultView .floorView .headView {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20px;
height: 40px;
}
.faultView .floorView .headView .titleView {
font-size: 14px;
color: gray;
}
.faultView .floorView .headView .conditionView {
2024-08-08 17:36:38 +08:00
display: flex;
2024-08-08 17:18:00 +08:00
justify-content: center;
align-items: center;
}
2024-08-08 17:36:38 +08:00
.faultView .floorView .contentView {
display: flex;
justify-content: center;
align-items: center;
height: 700px;
}
2024-08-08 14:32:22 +08:00
2024-08-09 10:57:16 +08:00
.rightView {
flex: 1;
margin-left: 6px;
}
.rightView .blockView {
background: white;
border-radius: 10px;
}
.rightView .blockView:last-of-type {
margin-top: 6px;
}
.rightView .blockView .headView {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20px;
height: 40px;
}
.rightView .blockView .headView .titleView {
font-size: 14px;
color: gray;
}
.rightView .blockView .headView .conditionView {
display: flex;
justify-content: center;
align-items: center;
}
.rightView .blockView .contentView {
display: flex;
justify-content: center;
align-items: center;
}
.tableView {
background: white;
border-radius: 10px;
margin-top: 6px;
}
.tableView .headView {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20px;
height: 40px;
}
.tableView .headView .titleView {
font-size: 14px;
color: gray;
}
.tableView .headView .conditionView {
display: flex;
justify-content: center;
align-items: center;
}
.tableView .contentView {
display: flex;
justify-content: center;
align-items: center;
}
2024-08-08 14:32:22 +08:00
</style>