Merge branch 'develop' into single-develop

This commit is contained in:
白菜
2026-01-24 10:37:31 +08:00
10 changed files with 41 additions and 29 deletions

View File

@ -8,7 +8,7 @@ const ems = {
zdDeviceCategoryOptions: {},//站点各个站点包含的设备种类 {021_DDS_01:["BATTERY","CLUSTER","STACK", "DH", "AMMETER", "PCS", "XF"],021_DDS_02:[]...} zdDeviceCategoryOptions: {},//站点各个站点包含的设备种类 {021_DDS_01:["BATTERY","CLUSTER","STACK", "DH", "AMMETER", "PCS", "XF"],021_DDS_02:[]...}
workStatusOptions: {'0': '运行', '1': '停机', '2': '故障'},//工作状态 workStatusOptions: {'0': '运行', '1': '停机', '2': '故障'},//工作状态
PCSWorkStatusOptions: {'0': '运行', '1': '停机', '2': '故障', '3': '待机', '4': '充电', '5': '放电'},//PCS工作状态 PCSWorkStatusOptions: {'0': '运行', '1': '停机', '2': '故障', '3': '待机', '4': '充电', '5': '放电'},//PCS工作状态
STACKWorkStatusOptions: {"0": "净置", "1": "充电", "2": "放电", "3": "浮充", '9': "故障"},//STACK电池簇工作状态 STACKWorkStatusOptions: {"0": "净置", "1": "充电", "2": "放电", "3": "浮充", '9': "故障"},//STACKBMS总览工作状态
deviceStatusOptions: {'0': '离线', '1': '在线'},//设备状态 deviceStatusOptions: {'0': '离线', '1': '在线'},//设备状态
gridStatusOptions: {'0': '并网', '1': '未并网'},//并网状态 gridStatusOptions: {'0': '并网', '1': '未并网'},//并网状态
controlModeOptions: {'0': '远程', '1': '本地'},//控制模式 controlModeOptions: {'0': '远程', '1': '本地'},//控制模式

View File

@ -3,11 +3,7 @@
<div v-for="(baseInfo,index) in baseInfoList" :key="index+'bmsdccContainer'" style="margin-bottom:25px;"> <div v-for="(baseInfo,index) in baseInfoList" :key="index+'bmsdccContainer'" style="margin-bottom:25px;">
<el-card shadow="always" <el-card shadow="always"
class="sbjk-card-container common-card-container-body-no-padding common-card-container-no-title-bg" class="sbjk-card-container common-card-container-body-no-padding common-card-container-no-title-bg"
:class="{ :class="handleCardClass(baseInfo)">
'timing-card-container':!['0','2'].includes(baseInfo.workStatus),
'warning-card-container':baseInfo.workStatus === '2',
'running-card-container':baseInfo.workStatus === '0'
}">
<div slot="header"> <div slot="header">
<span <span
class="large-title">{{ class="large-title">{{
@ -20,7 +16,7 @@
<el-button type="primary" round size="small" style="margin-right:20px;" <el-button type="primary" round size="small" style="margin-right:20px;"
@click="pointDetail(baseInfo,'point')">详细 @click="pointDetail(baseInfo,'point')">详细
</el-button> </el-button>
<el-badge :value="baseInfo.alarmNum || 0" class="item"> <el-badge :hidden="!baseInfo.alarmNum" :value="baseInfo.alarmNum || 0" class="item">
<i <i
class="el-icon-message-solid alarm-icon" class="el-icon-message-solid alarm-icon"
@click="pointDetail(baseInfo,'alarmPoint')" @click="pointDetail(baseInfo,'alarmPoint')"
@ -30,16 +26,16 @@
</div> </div>
<div class="descriptions-main"> <div class="descriptions-main">
<el-descriptions direction="vertical" :column="3" :colon="false"> <el-descriptions direction="vertical" :column="3" :colon="false">
<el-descriptions-item labelClassName="descriptions-label" <el-descriptions-item
:contentClassName="`descriptions-direction ${baseInfo.workStatus === '0' ? 'save' :'danger'}`" contentClassName="descriptions-direction work-status"
:span="1" label="工作状态"> :span="1" label="工作状态">
{{ $store.state.ems.workStatusOptions[baseInfo.workStatus] }} {{ workStatusOptions[baseInfo.workStatus] }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item labelClassName="descriptions-label" contentClassName="descriptions-direction" <el-descriptions-item contentClassName="descriptions-direction"
:span="1" label="与PCS通信"> :span="1" label="与PCS通信">
{{ $store.state.ems.communicationStatusOptions[baseInfo.pcsCommunicationStatus] }} {{ $store.state.ems.communicationStatusOptions[baseInfo.pcsCommunicationStatus] }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item labelClassName="descriptions-label" contentClassName="descriptions-direction" <el-descriptions-item contentClassName="descriptions-direction"
:span="1" label="与EMS通信"> :span="1" label="与EMS通信">
{{ $store.state.ems.communicationStatusOptions[baseInfo.emsCommunicationStatus] }} {{ $store.state.ems.communicationStatusOptions[baseInfo.emsCommunicationStatus] }}
</el-descriptions-item> </el-descriptions-item>
@ -132,11 +128,17 @@ import PointTable from "@/views/ems/site/sblb/PointTable.vue";
import {getBMSBatteryCluster} from '@/api/ems/dzjk' import {getBMSBatteryCluster} from '@/api/ems/dzjk'
import getQuerySiteId from "@/mixins/ems/getQuerySiteId"; import getQuerySiteId from "@/mixins/ems/getQuerySiteId";
import intervalUpdate from "@/mixins/ems/intervalUpdate"; import intervalUpdate from "@/mixins/ems/intervalUpdate";
import {mapState} from "vuex";
export default { export default {
name: 'DzjkSbjkBmsdcc', name: 'DzjkSbjkBmsdcc',
mixins: [getQuerySiteId, intervalUpdate], mixins: [getQuerySiteId, intervalUpdate],
components: {PointTable, pointChart}, components: {PointTable, pointChart},
computed: {
...mapState({
workStatusOptions: state => state?.ems?.workStatusOptions || {},
})
},
data() { data() {
return { return {
loading: false, loading: false,
@ -171,6 +173,10 @@ export default {
} }
}, },
methods: { methods: {
handleCardClass(item) {
const {workStatus = ''} = item
return !['0', '2'].includes(item.workStatus) ? "timing-card-container" : workStatus === '2' ? 'warning-card-container' : 'running-card-container'
},
// 查看设备电位表格 // 查看设备电位表格
pointDetail(row, dataType) { pointDetail(row, dataType) {
const {siteId, deviceId} = row const {siteId, deviceId} = row

View File

@ -14,7 +14,7 @@
<el-button type="primary" round size="small" style="margin-right:20px;" <el-button type="primary" round size="small" style="margin-right:20px;"
@click="pointDetail(baseInfo,'point')">详细 @click="pointDetail(baseInfo,'point')">详细
</el-button> </el-button>
<el-badge :value="baseInfo.alarmNum || 0" class="item"> <el-badge :hidden="!baseInfo.alarmNum" :value="baseInfo.alarmNum || 0" class="item">
<i <i
class="el-icon-message-solid alarm-icon" class="el-icon-message-solid alarm-icon"
@click="pointDetail(baseInfo,'alarmPoint')" @click="pointDetail(baseInfo,'alarmPoint')"
@ -170,7 +170,7 @@ export default {
mixins: [getQuerySiteId, intervalUpdate], mixins: [getQuerySiteId, intervalUpdate],
computed: { computed: {
...mapState({ ...mapState({
STACKWorkStatusOptions: state => state?.ems?.PCSWorkStatusOptions || {}, STACKWorkStatusOptions: state => state?.ems?.STACKWorkStatusOptions || {},
}) })
}, },
data() { data() {

View File

@ -6,7 +6,8 @@
shadow="always" shadow="always"
class="sbjk-card-container list" class="sbjk-card-container list"
:class="{ :class="{
'warning-card-container':item.emsCommunicationStatus && item.emsCommunicationStatus !== '0', 'timing-card-container':!['0','2'].includes(item.emsCommunicationStatus),
'warning-card-container':item.emsCommunicationStatus === '2',
'running-card-container':item.emsCommunicationStatus === '0' 'running-card-container':item.emsCommunicationStatus === '0'
}" }"
> >
@ -15,18 +16,16 @@
<div class="info"> <div class="info">
<div> <div>
{{ {{
$store.state.ems.communicationStatusOptions[ communicationStatusOptions[item.emsCommunicationStatus] || '-'
item.emsCommunicationStatus
]
}} }}
</div> </div>
<div>数据更新时间{{ item.dataUpdateTime }}</div> <div>数据更新时间{{ item.dataUpdateTime || '-' }}</div>
</div> </div>
<div class="alarm"> <div class="alarm">
<el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')"> <el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">
详细 详细
</el-button> </el-button>
<el-badge :value="item.alarmNum || 0" class="item"> <el-badge :hidden="!item.alarmNum" :value="item.alarmNum || 0" class="item">
<i <i
class="el-icon-message-solid alarm-icon" class="el-icon-message-solid alarm-icon"
@click="pointDetail(item,'alarmPoint')" @click="pointDetail(item,'alarmPoint')"
@ -57,11 +56,18 @@ import getQuerySiteId from "@/mixins/ems/getQuerySiteId";
import {getAmmeterDataList} from "@/api/ems/dzjk"; import {getAmmeterDataList} from "@/api/ems/dzjk";
import intervalUpdate from "@/mixins/ems/intervalUpdate"; import intervalUpdate from "@/mixins/ems/intervalUpdate";
import PointTable from "@/views/ems/site/sblb/PointTable.vue"; import PointTable from "@/views/ems/site/sblb/PointTable.vue";
import {mapState} from "vuex";
export default { export default {
name: "DzjkSbjkDb", name: "DzjkSbjkDb",
mixins: [getQuerySiteId, intervalUpdate], mixins: [getQuerySiteId, intervalUpdate],
components: {PointTable, pointChart}, components: {PointTable, pointChart},
computed: {
...mapState({
communicationStatusOptions: state => state?.ems?.communicationStatusOptions || {},
})
},
data() { data() {
return { return {
loading: false, loading: false,

View File

@ -14,7 +14,7 @@
<el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')"> <el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">
详细 详细
</el-button> </el-button>
<el-badge :value="item.alarmNum || 0" class="item"> <el-badge :hidden="!item.alarmNum" :value="item.alarmNum || 0" class="item">
<i <i
class="el-icon-message-solid alarm-icon" class="el-icon-message-solid alarm-icon"
@click="pointDetail(item,'alarmPoint')" @click="pointDetail(item,'alarmPoint')"

View File

@ -19,7 +19,7 @@
<div class="alarm"> <div class="alarm">
<el-button size="small" round style="margin-right:20px;" type="primary" @click="pointDetail(item,'point')">详细 <el-button size="small" round style="margin-right:20px;" type="primary" @click="pointDetail(item,'point')">详细
</el-button> </el-button>
<el-badge :value="item.alarmNum || 0" class="item"> <el-badge :hidden="!item.alarmNum" :value="item.alarmNum || 0" class="item">
<i <i
class="el-icon-message-solid alarm-icon" class="el-icon-message-solid alarm-icon"
@click="pointDetail(item,'alarmPoint')" @click="pointDetail(item,'alarmPoint')"

View File

@ -37,7 +37,7 @@
@click="pointDetail(pcsItem,'point')"> @click="pointDetail(pcsItem,'point')">
详细 详细
</el-button> </el-button>
<el-badge :value="pcsItem.alarmNum || 0" class="item"> <el-badge :hidden="!pcsItem.alarmNum" :value="pcsItem.alarmNum || 0" class="item">
<i <i
class="el-icon-message-solid alarm-icon" class="el-icon-message-solid alarm-icon"
@click="pointDetail(pcsItem,'alarmPoint')" @click="pointDetail(pcsItem,'alarmPoint')"

View File

@ -25,7 +25,7 @@
<el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')"> <el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">
详细 详细
</el-button> </el-button>
<el-badge :value="item.alarmNum || 0" class="item"> <el-badge :hidden="!item.alarmNum" :value="item.alarmNum || 0" class="item">
<i <i
class="el-icon-message-solid alarm-icon" class="el-icon-message-solid alarm-icon"
@click="pointDetail(item,'alarmPoint')" @click="pointDetail(item,'alarmPoint')"

View File

@ -14,7 +14,7 @@
<el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')"> <el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">
详细 详细
</el-button> </el-button>
<el-badge :value="item.alarmNum || 0" class="item"> <el-badge :hidden="!item.alarmNum" :value="item.alarmNum || 0" class="item">
<i <i
class="el-icon-message-solid alarm-icon" class="el-icon-message-solid alarm-icon"
@click="pointDetail(item,'alarmPoint')" @click="pointDetail(item,'alarmPoint')"

View File

@ -80,7 +80,7 @@
<el-table-column label="数据点位" prop="dataPoint"></el-table-column> <el-table-column label="数据点位" prop="dataPoint"></el-table-column>
<el-table-column <el-table-column
label="数据点位名称" label="数据点位名称"
prop="pointName" prop="dataPointName"
></el-table-column> ></el-table-column>
<!-- <el-table-column label="modbus地址">--> <!-- <el-table-column label="modbus地址">-->
<!-- <template slot-scope="scope">--> <!-- <template slot-scope="scope">-->
@ -88,8 +88,8 @@
<!-- `${scope.row.ipAddress || ""} ${scope.row.ipPort || ""}`--> <!-- `${scope.row.ipAddress || ""} ${scope.row.ipPort || ""}`-->
<!-- }}</span>--> <!-- }}</span>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>
<el-table-column label="寄存器地址" prop="寄存器地址"></el-table-column> <el-table-column label="寄存器地址" prop="寄存器地址"></el-table-column>-->
<el-table-column <el-table-column
label="最新值" label="最新值"
prop="pointValue" prop="pointValue"