Files
emsfront/src/views/ems/dzjk/home/index.vue

141 lines
4.0 KiB
Vue
Raw Normal View History

2025-06-18 01:01:17 +08:00
<template>
2025-06-28 14:52:49 +08:00
<div v-loading="loading">
2025-06-18 01:01:17 +08:00
<el-row :gutter="32" style="background:#fff;">
<el-col :xs="24" :sm="24" :lg="10">
<el-card shadow="always" class="common-card-container common-card-container-body-no-padding">
<div slot="header">
<span class="card-title">数据概览</span>
</div>
<div style="height: 310px" >
<el-row :gutter="20">
<el-col :span="12" v-for="(item,index) in sjglData" :key="index+'sjglData'" class="sjgl-data">
<div class="sjgl-title">{{item.title}}</div>
<div class="sjgl-value">{{item.value}}</div>
</el-col>
</el-row>
</div>
</el-card>
</el-col>
<el-col :xs="24" :sm="24" :lg="14">
<el-card shadow="always" class="common-card-container common-card-container-body-no-padding">
<div slot="header">
<span class="card-title">实时告警</span>
<!-- <el-button style="float: right; padding: 3px 0" type="text" size="small">通讯状态<span style="color:red">超时</span></el-button>-->
2025-06-18 01:01:17 +08:00
</div>
<div class="ssgj-container">
<el-table
class="common-table"
2025-06-18 01:01:17 +08:00
:data="tableData"
height="100%"
stripe
style="width: 100%">
<el-table-column
prop="deviceName"
2025-06-18 01:01:17 +08:00
label="名称">
</el-table-column>
<el-table-column
label="状态"
>
<template slot-scope="scope">
2025-06-30 17:32:04 +08:00
<span :class="{'circle warning-status' : scope.row.status !== 0}">{{ $store.state.ems.warnOptions[scope.row.status]}}</span>
</template>
2025-06-18 01:01:17 +08:00
</el-table-column>
<el-table-column
class-name="alarm-content"
prop="alarmContent"
2025-06-18 01:01:17 +08:00
label="告警内容">
</el-table-column>
</el-table>
</div>
</el-card>
</el-col>
</el-row>
<nllz-chart ref="nllzChart"/>
2025-06-18 01:01:17 +08:00
</div>
</template>
<script>
import {getDzjkHomeView} from '@/api/ems/dzjk'
2025-06-18 01:01:17 +08:00
import NllzChart from "./NllzChart.vue";
2025-06-28 14:52:49 +08:00
import getQuerySiteId from '@/mixins/ems/getQuerySiteId'
2025-06-18 01:01:17 +08:00
export default {
2025-06-24 23:50:29 +08:00
name:'DzjkSbjkHome',
2025-06-28 14:52:49 +08:00
computed: {
loader() {
return loader
}
},
2025-06-28 14:52:49 +08:00
components: {NllzChart},
mixins: [getQuerySiteId],
2025-06-18 01:01:17 +08:00
data() {
return {
2025-06-28 14:52:49 +08:00
loading:false,
2025-06-18 01:01:17 +08:00
sjglData:[{
title:'今日充电量MWh',
value:'',
attr:'dayChargedCap'
2025-06-18 01:01:17 +08:00
},{
title:'今日放电量MWh',
value:'',
attr:'dayDisChargedCap'
2025-06-18 01:01:17 +08:00
},{
title:'总充电量MWh',
value:'',
attr:'totalChargedCap'
2025-06-18 01:01:17 +08:00
},{
title:'总放电量MWh',
value:'',
attr:'totalDischargedCap'
2025-06-18 01:01:17 +08:00
}],
// todo 表格里的不同状态可能需要显示不同颜色 确定表格内容
tableData:[]
}
},
methods:{
2025-06-28 14:52:49 +08:00
init(){
this.loading = true
getDzjkHomeView(this.siteId).then(response => {
const data = response?.data || {}
this.sjglData.forEach(item=>{
item.value = (data[item.attr] || data[item.attr] === 0) ? data[item.attr] : '-'
})
this.tableData = data?.siteMonitorHomeAlarmVo || []
this.$refs.nllzChart.setOption(data)
2025-06-28 14:52:49 +08:00
}).finally(() => {this.loading = false})
2025-06-18 01:01:17 +08:00
}
},
2025-06-18 01:01:17 +08:00
}
</script>
<style scoped lang="scss">
//数据概览
.sjgl-data{
text-align: center;
margin-top:20px;
.sjgl-title{
color: #666666;
line-height: 14px;
padding-top: 18px;
}
.sjgl-value{
color: rgba(51,51,51,1);
font-size: 26px;
line-height: 26px;
font-weight: 500;
margin-top: 14px;
}
}
//实时告警
.ssgj-container{
padding:20px;
height: 310px;
box-sizing: border-box;
::v-deep{
.el-table .el-table__header-wrapper th, .el-table .el-table__fixed-header-wrapper th{
background:#FFF2CB ;
}
2025-06-18 01:01:17 +08:00
}
}
</style>