Files
emsapp/pages/work/bmsdcc/index.vue
2026-01-15 17:51:09 +08:00

208 lines
5.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="page-container">
<uni-collapse ref="collapse" accordion v-if="list.length > 0">
<uni-collapse-item v-for="(item,index) in list" :key="item.deviceId+'bmscc'" :open="index===0"
class="common-collapse-item" :class="{
'timing-collapse-item':!['0','2'].includes(item.workStatus),
'warning-collapse-item':item.workStatus === '2',
'running-collapse-item':item.workStatus === '0'
}">
<template v-slot:title>
<view class='title-wrapper'>
<view class="top">
<view class="status">{{workStatusOptions[item.workStatus] || '暂无数据'}}</view>
<text
class="name">{{`${item.parentDeviceName?`${item.parentDeviceName} -> ` : ''}${item.deviceName}`}}</text>
</view>
</view>
</template>
<view class='content'>
<!-- 设备状态栏 -->
<uni-group mode="card" class="status-card-group">
<uni-grid :column="3" :showBorder="false">
<uni-grid-item>
<view class="grid-item-box">
<view class="title">工作状态</view>
<text
class="text work-status-color">{{workStatusOptions[item.workStatus] || '-'}}</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<view class="title">与PCS通信</view>
<text
class="text">{{communicationStatusOptions[item.pcsCommunicationStatus] || '-'}}</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<view class="title">与EMS通信</view>
<text
class="text">{{communicationStatusOptions[item.emsCommunicationStatus] || '-'}}</text>
</view>
</uni-grid-item>
</uni-grid>
</uni-group>
<!-- 设备数据 -->
<uni-group mode="card" class="data-card-group">
<uni-row v-for="(infoDataItem,infoDataIndex) in infoData" :key="infoDataIndex+'infoData'"
class="data-row">
<uni-col :span="8">
<view class="title">{{infoDataItem.label}}</view>
</uni-col>
<uni-col :span="16">
<view class="value">{{item[infoDataItem.attr] | formatNumber}}
<text v-if="infoDataItem.unit" v-html="infoDataItem.unit"></text>
</view>
</uni-col>
</uni-row>
</uni-group>
<!-- 子设备表格 -->
<uni-group mode="card" class="child-card-group" style="margin-bottom:20rpx;">
<uni-table border stripe emptyText="暂无数据" class="child-table">
<!-- 表头行 -->
<uni-tr>
<uni-th align="center">名称</uni-th>
<uni-th align="center">单体平均值</uni-th>
<uni-th align="center">单体最小值</uni-th>
<uni-th align="center">单体最小值ID</uni-th>
<uni-th align="center">单体最大值</uni-th>
<uni-th align="center">单体最大值ID</uni-th>
</uni-tr>
<!-- 表格数据行 -->
<uni-tr v-for="(tableItem, tableIndex) in item.batteryDataList"
:key="tableIndex+'batteryDataList'">
<uni-td align="center"
v-html="`${tableItem.dataName}${unitObj[tableItem.dataName]}`"></uni-td>
<uni-td align="center">{{tableItem.avgData}}</uni-td>
<uni-td align="center">{{tableItem.minData}}</uni-td>
<uni-td align="center">{{tableItem.minDataID}}</uni-td>
<uni-td align="center">{{tableItem.maxData}}</uni-td>
<uni-td align="center">{{tableItem.maxDataID}}</uni-td>
</uni-tr>
</uni-table>
</uni-group>
</view>
</uni-collapse-item>
</uni-collapse>
<view class="no-data" v-else>
暂无数据
</view>
</view>
</template>
<script>
import {
getBMSBatteryCluster
} from '@/api/ems/site.js'
import {
mapState
} from 'vuex'
export default {
computed: {
...mapState({
workStatusOptions: (state) =>
state.ems.workStatusOptions,
communicationStatusOptions: (state) =>
state.ems.communicationStatusOptions,
})
},
data() {
return {
unitObj: {
'电压': 'V',
'温度': '&#8451;',
'SOC': '%'
},
list: [],
siteId: '',
infoData: [{
label: '簇电压',
attr: 'clusterVoltage',
unit: 'V',
pointName: '簇电压'
},
{
label: '可充电量',
attr: 'chargeableCapacity',
unit: 'kWh',
pointName: '可充电量'
},
{
label: '累计充电量',
attr: 'totalChargedCapacity',
unit: 'kWh',
pointName: '累计充电量'
},
{
label: '簇电流',
attr: 'clusterCurrent',
unit: 'A',
pointName: '簇电流'
},
{
label: '可放电量',
attr: 'dischargeableCapacity',
unit: 'kWh',
pointName: '可放电量'
},
{
label: '累计放电量',
attr: 'totalDischargedCapacity',
unit: 'kWh',
pointName: '累计放电量'
},
{
label: 'SOH',
attr: 'soh',
unit: '%',
pointName: 'SOH'
},
{
label: '平均温度',
attr: 'averageTemperature',
unit: '&#8451;',
pointName: '平均温度'
},
{
label: '绝缘电阻',
attr: 'insulationResistance',
unit: '&Omega;',
pointName: '绝缘电阻'
},
{
label: '当前SOC',
attr: 'currentSoc',
unit: '%',
pointName: '当前SOC'
},
]
}
},
mounted() {
uni.showLoading()
this.siteId = this.$route.query.siteId || ''
getBMSBatteryCluster({
siteId: this.siteId
}).then(response => {
this.list = response?.data || []
if (this.list.length > 0) {
this.$nextTick(() => {
setTimeout(() => {
this.$refs.collapse.resize()
uni.hideLoading()
}, 100)
})
} else {
uni.hideLoading()
}
}).catch(() => {
uni.hideLoading()
})
}
}
</script>