Merge branch 'develop' into single-develop
# Conflicts: # src/assets/styles/common.scss
This commit is contained in:
@ -9,10 +9,11 @@ export function getSiteInfoList({siteName, startTime, endTime, pageSize, pageNum
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 设备列表
|
// 设备列表
|
||||||
export function getDeviceInfoList({siteId, pageSize, pageNum}) {
|
export function getDeviceInfoList(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/ems/siteConfig/getDeviceInfoList?siteId=${siteId}&pageSize=${pageSize}&pageNum=${pageNum}`,
|
url: `/ems/siteConfig/getDeviceInfoList`,
|
||||||
method: 'get'
|
method: 'get',
|
||||||
|
params: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,6 +59,15 @@ export function deleteService(id) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//pcs开、关机
|
||||||
|
export function updateDeviceStatus(data) {
|
||||||
|
return request({
|
||||||
|
url: `/ems/siteConfig/updateDeviceStatus`,
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 获取上级设备id列表
|
// 获取上级设备id列表
|
||||||
export function getParentDeviceId({siteId, deviceCategory}) {
|
export function getParentDeviceId({siteId, deviceCategory}) {
|
||||||
return request({
|
return request({
|
||||||
|
|||||||
@ -9,53 +9,61 @@
|
|||||||
padding: 24px;
|
padding: 24px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
//除去顶部信息(如搜索栏、站点基本信息等)外的 白色背景内容区域
|
//除去顶部信息(如搜索栏、站点基本信息等)外的 白色背景内容区域
|
||||||
.ems-content-container{
|
.ems-content-container {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
margin-top: 24px;
|
margin-top: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
//需要设置内padding的白色背景区域
|
//需要设置内padding的白色背景区域
|
||||||
.ems-content-container-padding{
|
.ems-content-container-padding {
|
||||||
padding: 24px;
|
padding: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
//card通用样式 标题、body
|
//card通用样式 标题、body
|
||||||
.common-card-container{
|
.common-card-container {
|
||||||
.el-card__header{
|
.el-card__header {
|
||||||
padding:14px;
|
padding: 14px;
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
background: #F1F5FB ;
|
background: #F1F5FB;
|
||||||
position: relative;
|
position: relative;
|
||||||
.card-title{
|
|
||||||
|
.card-title {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color:#333333;
|
color: #333333;
|
||||||
}
|
}
|
||||||
.el-button--text{
|
|
||||||
|
.el-button--text {
|
||||||
color: #666666;
|
color: #666666;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.common-card-container-body-no-padding{
|
|
||||||
.el-card__body{
|
.common-card-container-body-no-padding {
|
||||||
padding:0;
|
.el-card__body {
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.common-card-container-no-title-bg {
|
.common-card-container-no-title-bg {
|
||||||
.el-card__header{
|
.el-card__header {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//单站监控 设备监控card公共样式
|
//单站监控 设备监控card公共样式
|
||||||
.sbjk-card-container{
|
.sbjk-card-container {
|
||||||
.el-card__header {
|
.el-card__header {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
padding: 5px 14px;
|
padding: 5px 14px;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
position: relative;
|
position: relative;
|
||||||
border-radius: 5px 5px 0 0;
|
border-radius: 5px 5px 0 0;
|
||||||
.large-title{
|
|
||||||
|
.large-title {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
@ -63,6 +71,7 @@
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.info {
|
.info {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
@ -70,15 +79,18 @@
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
}
|
}
|
||||||
.el-button--text{
|
|
||||||
|
.el-button--text {
|
||||||
color: #666666;
|
color: #666666;
|
||||||
}
|
}
|
||||||
.alarm{
|
|
||||||
|
.alarm {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 25px;
|
right: 25px;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
.alarm-icon{
|
|
||||||
|
.alarm-icon {
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
display: block;
|
display: block;
|
||||||
@ -86,18 +98,21 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//红色背景颜色标题
|
//红色背景颜色标题
|
||||||
&.warning-card-container{
|
&.warning-card-container {
|
||||||
.el-card__header {
|
.el-card__header {
|
||||||
background-color: #fc6b69;
|
background-color: #b64040; //#fc6b69;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//绿色背景颜色标题
|
//绿色背景颜色标题
|
||||||
&.running-card-container {
|
&.running-card-container {
|
||||||
.el-card__header {
|
.el-card__header {
|
||||||
background-color: #05aea3;
|
background-color: #40b6a5; //#05aea3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//灰色背景颜色标题
|
//灰色背景颜色标题
|
||||||
&.timing-card-container {
|
&.timing-card-container {
|
||||||
.el-card__header {
|
.el-card__header {
|
||||||
@ -111,11 +126,13 @@
|
|||||||
&.common-card-container .el-card__header {
|
&.common-card-container .el-card__header {
|
||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
|
|
||||||
.time-range-header {
|
.time-range-header {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.card-title {
|
.card-title {
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
}
|
}
|
||||||
@ -124,86 +141,100 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//描述样式 PCS、BMS总览、BMS电池簇页面公共样式
|
//描述样式 PCS、BMS总览、BMS电池簇页面公共样式
|
||||||
.descriptions-main{
|
.descriptions-main {
|
||||||
padding:24px;
|
padding: 24px;
|
||||||
position: relative;
|
position: relative;
|
||||||
&.descriptions-main-bg-color{
|
|
||||||
background-color:#f1f5fc ;
|
&.descriptions-main-bg-color {
|
||||||
.el-descriptions__body{
|
background-color: #f1f5fc;
|
||||||
background-color:#f1f5fc ;
|
|
||||||
|
.el-descriptions__body {
|
||||||
|
background-color: #f1f5fc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.el-descriptions-item__cell[colspan='1']{
|
|
||||||
width:25%
|
.el-descriptions-item__cell[colspan='1'] {
|
||||||
|
width: 25%
|
||||||
}
|
}
|
||||||
.el-descriptions__body .el-descriptions__table{
|
|
||||||
.descriptions-direction{
|
.el-descriptions__body .el-descriptions__table {
|
||||||
|
.descriptions-direction {
|
||||||
line-height: 19px;
|
line-height: 19px;
|
||||||
color: #666666;
|
color: #666666;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
.descriptions-label{
|
|
||||||
|
.descriptions-label {
|
||||||
line-height: 14px;
|
line-height: 14px;
|
||||||
color: #666666;
|
color: #666666;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
.danger{
|
|
||||||
color:#FC6B69;
|
.danger {
|
||||||
|
color: #FC6B69;
|
||||||
}
|
}
|
||||||
.save{
|
|
||||||
color:#09ADA3;
|
.save {
|
||||||
|
color: #09ADA3;
|
||||||
}
|
}
|
||||||
.keep{
|
|
||||||
color:#3C81FF;
|
.keep {
|
||||||
|
color: #3C81FF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//电表、液冷公共样式
|
//电表、液冷公共样式
|
||||||
.device-info-row{
|
.device-info-row {
|
||||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
||||||
border-left: 1px solid #eee;
|
border-left: 1px solid #eee;
|
||||||
border-top: 1px solid #eee;
|
border-top: 1px solid #eee;
|
||||||
.device-info-col{
|
|
||||||
|
.device-info-col {
|
||||||
padding: 10px 0;
|
padding: 10px 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size:12px;
|
font-size: 12px;
|
||||||
color:#666666;
|
color: #666666;
|
||||||
line-height: 14px;
|
line-height: 14px;
|
||||||
border-bottom: 1px solid #eee;
|
border-bottom: 1px solid #eee;
|
||||||
border-right: 1px solid #eee;
|
border-right: 1px solid #eee;
|
||||||
.left{
|
|
||||||
|
.left {
|
||||||
}
|
}
|
||||||
.right{
|
|
||||||
|
.right {
|
||||||
display: block;
|
display: block;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size:16px;
|
font-size: 16px;
|
||||||
line-height: 18px;
|
line-height: 18px;
|
||||||
margin-top:10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//公共表格样式
|
//公共表格样式
|
||||||
.el-table{
|
.el-table {
|
||||||
font-size:13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
.common-table.el-table{
|
|
||||||
color:#333333;
|
.common-table.el-table {
|
||||||
|
color: #333333;
|
||||||
|
|
||||||
.el-table__header-wrapper th, .el-table__fixed-header-wrapper th {
|
.el-table__header-wrapper th, .el-table__fixed-header-wrapper th {
|
||||||
background: #f1f5fc;
|
background: #f1f5fc;
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
|
|
||||||
.table-head {
|
.table-head {
|
||||||
color: #515a6e;
|
color: #515a6e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.warning-status{
|
|
||||||
color:#FC6B69;
|
.warning-status {
|
||||||
|
color: #FC6B69;
|
||||||
|
|
||||||
&.circle::before {
|
&.circle::before {
|
||||||
content: "";
|
content: "";
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@ -217,25 +248,30 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
//二、三级菜单栏样式
|
//二、三级菜单栏样式
|
||||||
.ems-second-menu{
|
.ems-second-menu {
|
||||||
width:fit-content;
|
width: fit-content;
|
||||||
.el-menu-item{
|
|
||||||
|
.el-menu-item {
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
padding:0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
&.el-menu--horizontal > .el-menu-item.is-active,&.el-menu--horizontal > .el-menu-item{
|
|
||||||
border-bottom:none!important;
|
&.el-menu--horizontal > .el-menu-item.is-active, &.el-menu--horizontal > .el-menu-item {
|
||||||
|
border-bottom: none !important;
|
||||||
}
|
}
|
||||||
.el-menu-item.is-active{
|
|
||||||
background: #0366c1!important;
|
.el-menu-item.is-active {
|
||||||
|
background: #0366c1 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.ems-third-menu-container{
|
|
||||||
|
.ems-third-menu-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-left: 160px;
|
padding-left: 160px;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
.ems-third-menu{
|
|
||||||
|
.ems-third-menu {
|
||||||
border-right: none;
|
border-right: none;
|
||||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
||||||
height: fit-content;
|
height: fit-content;
|
||||||
@ -249,22 +285,23 @@
|
|||||||
width: 125px;
|
width: 125px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.el-menu-item:hover{
|
|
||||||
background: #67b1ff!important;
|
.el-menu-item:hover {
|
||||||
color:#ffffff!important;
|
background: #67b1ff !important;
|
||||||
|
color: #ffffff !important;
|
||||||
}
|
}
|
||||||
.el-menu-item.is-active{
|
|
||||||
background: #409eff!important;
|
.el-menu-item.is-active {
|
||||||
|
background: #409eff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//按钮栏 选中样式
|
//按钮栏 选中样式
|
||||||
.ems-btns-group{
|
.ems-btns-group {
|
||||||
.activeBtn{
|
.activeBtn {
|
||||||
background-color: #0366c1;
|
background-color: #0366c1;
|
||||||
border-color: #0366c1;
|
border-color: #0366c1;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
@ -273,11 +310,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
//搜索栏样式
|
//搜索栏样式
|
||||||
.select-container.el-form--inline .el-form-item{
|
.select-container.el-form--inline .el-form-item {
|
||||||
margin-right: 15px;
|
margin-right: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
//红色背景颜色按钮
|
//红色背景颜色按钮
|
||||||
.alarm-btn,.alarm-btn:hover, .alarm-btn:focus{
|
.alarm-btn, .alarm-btn:hover, .alarm-btn:focus {
|
||||||
background-color: #FC6B69;
|
background-color: #FC6B69;
|
||||||
border-color: #FC6B69;
|
border-color: #FC6B69;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,19 +1,22 @@
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div v-loading="loading">
|
<div v-loading="loading">
|
||||||
<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" class="sbjk-card-container common-card-container-body-no-padding common-card-container-no-title-bg"
|
<el-card shadow="always"
|
||||||
|
class="sbjk-card-container common-card-container-body-no-padding common-card-container-no-title-bg"
|
||||||
:class="{
|
:class="{
|
||||||
'warning-card-container':baseInfo.workStatus && baseInfo.workStatus !== '0',
|
'warning-card-container':baseInfo.workStatus && baseInfo.workStatus !== '0',
|
||||||
'running-card-container':baseInfo.workStatus === '0'
|
'running-card-container':baseInfo.workStatus === '0'
|
||||||
}">
|
}">
|
||||||
<div slot="header">
|
<div slot="header">
|
||||||
<span class="large-title">{{baseInfo.parentDeviceName?`${baseInfo.parentDeviceName} -> ` : ''}}{{baseInfo.deviceName}}</span>
|
<span
|
||||||
|
class="large-title">{{ baseInfo.parentDeviceName ? `${baseInfo.parentDeviceName} -> ` : '' }}{{ baseInfo.deviceName }}</span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div>数据更新时间:{{ baseInfo.dataUpdateTime || '-'}}</div>
|
<div>数据更新时间:{{ baseInfo.dataUpdateTime || '-' }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="alarm">
|
<div class="alarm">
|
||||||
<el-button type="primary" size="small" style="margin-right:20px;" @click="pointDetail(baseInfo,'point')">详细</el-button>
|
<el-button type="primary" round size="small" style="margin-right:20px;"
|
||||||
|
@click="pointDetail(baseInfo,'point')">详细
|
||||||
|
</el-button>
|
||||||
<el-badge :value="baseInfo.alarmNum || 0" class="item">
|
<el-badge :value="baseInfo.alarmNum || 0" class="item">
|
||||||
<i
|
<i
|
||||||
class="el-icon-message-solid alarm-icon"
|
class="el-icon-message-solid alarm-icon"
|
||||||
@ -24,16 +27,28 @@
|
|||||||
</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" :contentClassName="`descriptions-direction ${baseInfo.workStatus === '0' ? 'save' :'danger'}`" :span="1" label="工作状态" >{{$store.state.ems.workStatusOptions[baseInfo.workStatus]}}</el-descriptions-item>
|
<el-descriptions-item labelClassName="descriptions-label"
|
||||||
<el-descriptions-item labelClassName="descriptions-label" contentClassName="descriptions-direction" :span="1" label="与PCS通信">{{$store.state.ems.communicationStatusOptions[baseInfo.pcsCommunicationStatus]}}</el-descriptions-item>
|
:contentClassName="`descriptions-direction ${baseInfo.workStatus === '0' ? 'save' :'danger'}`"
|
||||||
<el-descriptions-item labelClassName="descriptions-label" contentClassName="descriptions-direction" :span="1" label="与EMS通信">{{$store.state.ems.communicationStatusOptions[baseInfo.emsCommunicationStatus]}}</el-descriptions-item>
|
:span="1" label="工作状态">
|
||||||
|
{{ $store.state.ems.workStatusOptions[baseInfo.workStatus] }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item labelClassName="descriptions-label" contentClassName="descriptions-direction"
|
||||||
|
:span="1" label="与PCS通信">
|
||||||
|
{{ $store.state.ems.communicationStatusOptions[baseInfo.pcsCommunicationStatus] }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item labelClassName="descriptions-label" contentClassName="descriptions-direction"
|
||||||
|
:span="1" label="与EMS通信">
|
||||||
|
{{ $store.state.ems.communicationStatusOptions[baseInfo.emsCommunicationStatus] }}
|
||||||
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</div>
|
</div>
|
||||||
<div class="descriptions-main descriptions-main-bg-color">
|
<div class="descriptions-main descriptions-main-bg-color">
|
||||||
<el-descriptions direction="vertical" :column="3" :colon="false">
|
<el-descriptions direction="vertical" :column="3" :colon="false">
|
||||||
<el-descriptions-item labelClassName="descriptions-label" contentClassName="descriptions-direction" v-for="(item,index) in infoData" :key="index+'pcsInfoData'" :span="1" :label="item.label">
|
<el-descriptions-item labelClassName="descriptions-label" contentClassName="descriptions-direction"
|
||||||
|
v-for="(item,index) in infoData" :key="index+'pcsInfoData'" :span="1"
|
||||||
|
:label="item.label">
|
||||||
<span class="pointer" @click="showChart(item.pointName || '',baseInfo.deviceId)">
|
<span class="pointer" @click="showChart(item.pointName || '',baseInfo.deviceId)">
|
||||||
{{baseInfo[item.attr] | formatNumber}} <span v-if="item.unit" v-html="item.unit"></span>
|
{{ baseInfo[item.attr] | formatNumber }} <span v-if="item.unit" v-html="item.unit"></span>
|
||||||
</span>
|
</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
@ -42,7 +57,9 @@
|
|||||||
<div class="process-line-bg">
|
<div class="process-line-bg">
|
||||||
<div class="process-line" :style="{height:baseInfo.currentSoc+'%'}"></div>
|
<div class="process-line" :style="{height:baseInfo.currentSoc+'%'}"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="process pointer" @click="showChart( '当前SOC',baseInfo.deviceId)">当前SOC : {{baseInfo.currentSoc}}%</div>
|
<div class="process pointer" @click="showChart( '当前SOC',baseInfo.deviceId)">当前SOC :
|
||||||
|
{{ baseInfo.currentSoc }}%
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
@ -62,14 +79,16 @@
|
|||||||
label="单体平均值"
|
label="单体平均值"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="pointer" @click="showChart( tablePointNameMap[scope.row.dataName+scope.column.label],baseInfo.deviceId)">{{scope.row.avgData}}</span>
|
<span class="pointer"
|
||||||
|
@click="showChart( tablePointNameMap[scope.row.dataName+scope.column.label],baseInfo.deviceId)">{{ scope.row.avgData }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="minData"
|
prop="minData"
|
||||||
label="单体最小值">
|
label="单体最小值">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="pointer" @click="showChart( tablePointNameMap[scope.row.dataName+scope.column.label],baseInfo.deviceId)">{{scope.row.minData}}</span>
|
<span class="pointer"
|
||||||
|
@click="showChart( tablePointNameMap[scope.row.dataName+scope.column.label],baseInfo.deviceId)">{{ scope.row.minData }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -80,7 +99,8 @@
|
|||||||
prop="maxData"
|
prop="maxData"
|
||||||
label="单体最大值">
|
label="单体最大值">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="pointer " @click="showChart( tablePointNameMap[scope.row.dataName+scope.column.label],baseInfo.deviceId)">{{scope.row.maxData}}</span>
|
<span class="pointer "
|
||||||
|
@click="showChart( tablePointNameMap[scope.row.dataName+scope.column.label],baseInfo.deviceId)">{{ scope.row.maxData }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -103,59 +123,62 @@ 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";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name:'DzjkSbjkBmsdcc',
|
name: 'DzjkSbjkBmsdcc',
|
||||||
mixins:[getQuerySiteId,intervalUpdate],
|
mixins: [getQuerySiteId, intervalUpdate],
|
||||||
components:{PointTable, pointChart},
|
components: {PointTable, pointChart},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading:false,
|
loading: false,
|
||||||
unitObj:{
|
unitObj: {
|
||||||
'电压':'V',
|
'电压': 'V',
|
||||||
'温度':'℃',
|
'温度': '℃',
|
||||||
'SOC':'%'
|
'SOC': '%'
|
||||||
},
|
},
|
||||||
tablePointNameMap:{
|
tablePointNameMap: {
|
||||||
'电压单体最小值':'最低单体电压',
|
'电压单体最小值': '最低单体电压',
|
||||||
'电压单体平均值':'电压平均值',
|
'电压单体平均值': '电压平均值',
|
||||||
'电压单体最大值':'最高单体电压',
|
'电压单体最大值': '最高单体电压',
|
||||||
'温度单体最小值':'最低单体温度',
|
'温度单体最小值': '最低单体温度',
|
||||||
'温度单体平均值':'平均单体温度',
|
'温度单体平均值': '平均单体温度',
|
||||||
'温度单体最大值':'最高单体温度',
|
'温度单体最大值': '最高单体温度',
|
||||||
'SOC单体最小值':'最低单体SOC',
|
'SOC单体最小值': '最低单体SOC',
|
||||||
'SOC单体平均值':'当前SOC',
|
'SOC单体平均值': '当前SOC',
|
||||||
'SOC单体最大值':'最高单体SOC',
|
'SOC单体最大值': '最高单体SOC',
|
||||||
},
|
},
|
||||||
baseInfoList:[],
|
baseInfoList: [],
|
||||||
infoData:[
|
infoData: [
|
||||||
{label:'簇电压',attr:'clusterVoltage',unit:'V',pointName:'簇电压'},
|
{label: '簇电压', attr: 'clusterVoltage', unit: 'V', pointName: '簇电压'},
|
||||||
{label:'可充电量',attr:'chargeableCapacity',unit:'kWh',pointName:'可充电量'},
|
{label: '可充电量', attr: 'chargeableCapacity', unit: 'kWh', pointName: '可充电量'},
|
||||||
{label:'累计充电量',attr:'totalChargedCapacity',unit:'kWh',pointName:'累计充电量'},
|
{label: '累计充电量', attr: 'totalChargedCapacity', unit: 'kWh', pointName: '累计充电量'},
|
||||||
{label:'簇电流',attr:'clusterCurrent',unit:'A',pointName:'簇电流'},
|
{label: '簇电流', attr: 'clusterCurrent', unit: 'A', pointName: '簇电流'},
|
||||||
{label:'可放电量',attr:'dischargeableCapacity',unit:'kWh',pointName:'可放电量'},
|
{label: '可放电量', attr: 'dischargeableCapacity', unit: 'kWh', pointName: '可放电量'},
|
||||||
{label:'累计放电量',attr:'totalDischargedCapacity',unit:'kWh',pointName:'累计放电量'},
|
{label: '累计放电量', attr: 'totalDischargedCapacity', unit: 'kWh', pointName: '累计放电量'},
|
||||||
{label:'SOH',attr:'soh',unit:'%',pointName:'SOH'},
|
{label: 'SOH', attr: 'soh', unit: '%', pointName: 'SOH'},
|
||||||
{label:'平均温度',attr:'averageTemperature',unit:'℃',pointName:'平均温度'},
|
{label: '平均温度', attr: 'averageTemperature', unit: '℃', pointName: '平均温度'},
|
||||||
{label:'绝缘电阻',attr:'insulationResistance',unit:'Ω',pointName:'绝缘电阻'},
|
{label: '绝缘电阻', attr: 'insulationResistance', unit: 'Ω', pointName: '绝缘电阻'},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods: {
|
||||||
// 查看设备电位表格
|
// 查看设备电位表格
|
||||||
pointDetail(row,dataType){
|
pointDetail(row, dataType) {
|
||||||
const {siteId,deviceId} = row
|
const {siteId, deviceId} = row
|
||||||
this.$refs.pointTable.showTable({siteId,deviceId,deviceCategory:'CLUSTER'},dataType)
|
this.$refs.pointTable.showTable({siteId, deviceId, deviceCategory: 'CLUSTER'}, dataType)
|
||||||
},
|
},
|
||||||
showChart(pointName,deviceId){
|
showChart(pointName, deviceId) {
|
||||||
pointName && this.$refs.pointChart.showChart({pointName,deviceCategory:'CLUSTER',deviceId})
|
pointName && this.$refs.pointChart.showChart({pointName, deviceCategory: 'CLUSTER', deviceId})
|
||||||
},
|
},
|
||||||
updateData(){
|
updateData() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getBMSBatteryCluster(this.siteId).then(response => {
|
getBMSBatteryCluster(this.siteId).then(response => {
|
||||||
this.baseInfoList = JSON.parse(JSON.stringify(response?.data || []));
|
this.baseInfoList = JSON.parse(JSON.stringify(response?.data || []));
|
||||||
}).finally(() => {this.loading = false})
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
init(){
|
init() {
|
||||||
this.updateData()
|
this.updateData()
|
||||||
this.updateInterval(this.updateData)
|
this.updateInterval(this.updateData)
|
||||||
}
|
}
|
||||||
@ -166,28 +189,32 @@ export default {
|
|||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
::v-deep {
|
::v-deep {
|
||||||
//描述列表样式
|
//描述列表样式
|
||||||
.descriptions-main{
|
.descriptions-main {
|
||||||
padding:24px 300px 24px 24px;
|
padding: 24px 300px 24px 24px;
|
||||||
}
|
}
|
||||||
.descriptions-main-bottom{
|
|
||||||
padding:14px 300px 14px 24px;
|
.descriptions-main-bottom {
|
||||||
|
padding: 14px 300px 14px 24px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 进度条样式
|
// 进度条样式
|
||||||
.process-container{
|
.process-container {
|
||||||
width:100px;
|
width: 100px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right:70px;
|
right: 70px;
|
||||||
top:50%;
|
top: 50%;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
.process-line-bg{
|
|
||||||
|
.process-line-bg {
|
||||||
position: relative;
|
position: relative;
|
||||||
width:100%;
|
width: 100%;
|
||||||
height: 110px;
|
height: 110px;
|
||||||
background-color:#fff2cb ;
|
background-color: #fff2cb;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
box-shadow: 0 0 10px #fff2cb, 0 0 0 rgba(255, 242, 203, 0.5);
|
box-shadow: 0 0 10px #fff2cb, 0 0 0 rgba(255, 242, 203, 0.5);
|
||||||
.process-line{
|
|
||||||
|
.process-line {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
@ -198,9 +225,10 @@ export default {
|
|||||||
box-shadow: 0 0 10px #ffbf14, 0 0 0 rgba(255, 191, 20, 0.5);
|
box-shadow: 0 0 10px #ffbf14, 0 0 0 rgba(255, 191, 20, 0.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.process{
|
|
||||||
margin-top:15px;
|
.process {
|
||||||
color:#666666;
|
margin-top: 15px;
|
||||||
|
color: #666666;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div v-loading="loading">
|
<div v-loading="loading">
|
||||||
<div v-for="(baseInfo,index) in baseInfoList" :key="index+'bmszlContainer'" style="margin-bottom:25px;">
|
<div v-for="(baseInfo,index) in baseInfoList" :key="index+'bmszlContainer'" style="margin-bottom:25px;">
|
||||||
@ -8,12 +7,14 @@
|
|||||||
}" 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"
|
||||||
shadow="always">
|
shadow="always">
|
||||||
<div slot="header">
|
<div slot="header">
|
||||||
<span class="large-title">{{baseInfo.deviceName}}</span>
|
<span class="large-title">{{ baseInfo.deviceName }}</span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div>数据更新时间:{{ baseInfo.dataUpdateTime || '-'}}</div>
|
<div>数据更新时间:{{ baseInfo.dataUpdateTime || '-' }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="alarm">
|
<div class="alarm">
|
||||||
<el-button type="primary" size="small" style="margin-right:20px;" @click="pointDetail(baseInfo,'point')">详细</el-button>
|
<el-button type="primary" round size="small" style="margin-right:20px;"
|
||||||
|
@click="pointDetail(baseInfo,'point')">详细
|
||||||
|
</el-button>
|
||||||
<el-badge :value="baseInfo.alarmNum || 0" class="item">
|
<el-badge :value="baseInfo.alarmNum || 0" class="item">
|
||||||
<i
|
<i
|
||||||
class="el-icon-message-solid alarm-icon"
|
class="el-icon-message-solid alarm-icon"
|
||||||
@ -24,16 +25,28 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="descriptions-main">
|
<div class="descriptions-main">
|
||||||
<el-descriptions :colon="false" :column="3" direction="vertical">
|
<el-descriptions :colon="false" :column="3" direction="vertical">
|
||||||
<el-descriptions-item :contentClassName="`descriptions-direction ${baseInfo.workStatus === '0' ? 'save' :'danger'}`" :span="1" label="工作状态" labelClassName="descriptions-label" >{{$store.state.ems.workStatusOptions[baseInfo.workStatus]}}</el-descriptions-item>
|
<el-descriptions-item
|
||||||
<el-descriptions-item :span="1" contentClassName="descriptions-direction" label="与PCS通信" labelClassName="descriptions-label">{{$store.state.ems.communicationStatusOptions[baseInfo.pcsCommunicationStatus]}}</el-descriptions-item>
|
:contentClassName="`descriptions-direction ${baseInfo.workStatus === '0' ? 'save' :'danger'}`" :span="1"
|
||||||
<el-descriptions-item :span="1" contentClassName="descriptions-direction" label="与EMS通信" labelClassName="descriptions-label">{{$store.state.ems.communicationStatusOptions[baseInfo.emsCommunicationStatus]}}</el-descriptions-item>
|
label="工作状态" labelClassName="descriptions-label">
|
||||||
|
{{ $store.state.ems.workStatusOptions[baseInfo.workStatus] }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" contentClassName="descriptions-direction" label="与PCS通信"
|
||||||
|
labelClassName="descriptions-label">
|
||||||
|
{{ $store.state.ems.communicationStatusOptions[baseInfo.pcsCommunicationStatus] }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" contentClassName="descriptions-direction" label="与EMS通信"
|
||||||
|
labelClassName="descriptions-label">
|
||||||
|
{{ $store.state.ems.communicationStatusOptions[baseInfo.emsCommunicationStatus] }}
|
||||||
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</div>
|
</div>
|
||||||
<div class="descriptions-main descriptions-main-bg-color">
|
<div class="descriptions-main descriptions-main-bg-color">
|
||||||
<el-descriptions :colon="false" :column="3" direction="vertical">
|
<el-descriptions :colon="false" :column="3" direction="vertical">
|
||||||
<el-descriptions-item v-for="(item,index) in infoData" :key="index+'pcsInfoData'" :label="item.label" :span="1" contentClassName="descriptions-direction" labelClassName="descriptions-label">
|
<el-descriptions-item v-for="(item,index) in infoData" :key="index+'pcsInfoData'" :label="item.label"
|
||||||
|
:span="1" contentClassName="descriptions-direction"
|
||||||
|
labelClassName="descriptions-label">
|
||||||
<span class="pointer" @click="showChart(item.pointName || '',baseInfo.deviceId)">
|
<span class="pointer" @click="showChart(item.pointName || '',baseInfo.deviceId)">
|
||||||
{{baseInfo[item.attr] | formatNumber}}<span v-if="item.unit" v-html="item.unit"></span>
|
{{ baseInfo[item.attr] | formatNumber }}<span v-if="item.unit" v-html="item.unit"></span>
|
||||||
</span>
|
</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
@ -42,7 +55,9 @@
|
|||||||
<div class="process-line-bg">
|
<div class="process-line-bg">
|
||||||
<div :style="{height:baseInfo.stackSoc+'%'}" class="process-line"></div>
|
<div :style="{height:baseInfo.stackSoc+'%'}" class="process-line"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="process pointer" @click="showChart('当前SOC',baseInfo.deviceId)">当前SOC : {{baseInfo.stackSoc}}%</div>
|
<div class="process pointer" @click="showChart('当前SOC',baseInfo.deviceId)">当前SOC :
|
||||||
|
{{ baseInfo.stackSoc }}%
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
@ -59,26 +74,30 @@
|
|||||||
label="簇电压"
|
label="簇电压"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="pointer" @click="showChart('簇电压',scope.row.clusterId,'CLUSTER')">{{scope.row.clusterVoltage}} V</span>
|
<span class="pointer"
|
||||||
|
@click="showChart('簇电压',scope.row.clusterId,'CLUSTER')">{{ scope.row.clusterVoltage }} V</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="簇电流">
|
label="簇电流">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="pointer" @click="showChart('簇电流',scope.row.clusterId,'CLUSTER')">{{scope.row.clusterCurrent}} A</span>
|
<span class="pointer"
|
||||||
|
@click="showChart('簇电流',scope.row.clusterId,'CLUSTER')">{{ scope.row.clusterCurrent }} A</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="簇SOC">
|
label="簇SOC">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="pointer" @click="showChart('当前SOC',scope.row.clusterId,'CLUSTER')">{{scope.row.currentSoc}} %</span>
|
<span class="pointer"
|
||||||
|
@click="showChart('当前SOC',scope.row.clusterId,'CLUSTER')">{{ scope.row.currentSoc }} %</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="单体最高电压"
|
label="单体最高电压"
|
||||||
prop="maxVoltage">
|
prop="maxVoltage">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="pointer" @click="showChart('最高单体电压',scope.row.clusterId,'CLUSTER')">{{scope.row.maxCellVoltage}} V</span>
|
<span class="pointer"
|
||||||
|
@click="showChart('最高单体电压',scope.row.clusterId,'CLUSTER')">{{ scope.row.maxCellVoltage }} V</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -89,7 +108,8 @@
|
|||||||
label="单体最低电压"
|
label="单体最低电压"
|
||||||
prop="minVoltage">
|
prop="minVoltage">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="pointer" @click="showChart('最低单体电压',scope.row.clusterId,'CLUSTER')">{{scope.row.minCellVoltage}} V</span>
|
<span class="pointer"
|
||||||
|
@click="showChart('最低单体电压',scope.row.clusterId,'CLUSTER')">{{ scope.row.minCellVoltage }} V</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -99,7 +119,8 @@
|
|||||||
<el-table-column
|
<el-table-column
|
||||||
label="单体最高温度">
|
label="单体最高温度">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="pointer" @click="showChart('最高单体温度',scope.row.clusterId,'CLUSTER')">{{scope.row.maxCellTemp}} ℃</span>
|
<span class="pointer"
|
||||||
|
@click="showChart('最高单体温度',scope.row.clusterId,'CLUSTER')">{{ scope.row.maxCellTemp }} ℃</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -110,7 +131,8 @@
|
|||||||
label="单体最低温度"
|
label="单体最低温度"
|
||||||
prop="minTemperature">
|
prop="minTemperature">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="pointer" @click="showChart('最低单体温度',scope.row.clusterId,'CLUSTER')">{{scope.row.minCellTemp}} ℃</span>
|
<span class="pointer"
|
||||||
|
@click="showChart('最低单体温度',scope.row.clusterId,'CLUSTER')">{{ scope.row.minCellTemp }} ℃</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -133,43 +155,46 @@ import getQuerySiteId from "@/mixins/ems/getQuerySiteId";
|
|||||||
import intervalUpdate from "@/mixins/ems/intervalUpdate";
|
import intervalUpdate from "@/mixins/ems/intervalUpdate";
|
||||||
import pointChart from "./../PointChart.vue";
|
import pointChart from "./../PointChart.vue";
|
||||||
import PointTable from "@/views/ems/site/sblb/PointTable.vue";
|
import PointTable from "@/views/ems/site/sblb/PointTable.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name:'DzjkSbjkBmszl',
|
name: 'DzjkSbjkBmszl',
|
||||||
components: {pointChart,PointTable},
|
components: {pointChart, PointTable},
|
||||||
mixins:[getQuerySiteId,intervalUpdate],
|
mixins: [getQuerySiteId, intervalUpdate],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading:false,
|
loading: false,
|
||||||
baseInfoList:[],
|
baseInfoList: [],
|
||||||
infoData:[
|
infoData: [
|
||||||
{label:'电池堆总电压',attr:'stackVoltage',unit:'V',pointName:'电池堆电压'},
|
{label: '电池堆总电压', attr: 'stackVoltage', unit: 'V', pointName: '电池堆电压'},
|
||||||
{label:'可充电量',attr:'availableChargeCapacity',unit:'kWh',pointName:'可充电量'},
|
{label: '可充电量', attr: 'availableChargeCapacity', unit: 'kWh', pointName: '可充电量'},
|
||||||
{label:'累计充电量',attr:'totalChargeCapacity',unit:'kWh',pointName:'累计充电量'},
|
{label: '累计充电量', attr: 'totalChargeCapacity', unit: 'kWh', pointName: '累计充电量'},
|
||||||
{label:'电池堆总电流',attr:'stackCurrent',unit:'A',pointName:'电池堆总电流'},
|
{label: '电池堆总电流', attr: 'stackCurrent', unit: 'A', pointName: '电池堆总电流'},
|
||||||
{label:'可放电量',attr:'availableDischargeCapacity',unit:'kWh',pointName:'可放电量'},
|
{label: '可放电量', attr: 'availableDischargeCapacity', unit: 'kWh', pointName: '可放电量'},
|
||||||
{label:'累计放电量',attr:'totalDischargeCapacity',unit:'kWh',pointName:'累计放电量'},
|
{label: '累计放电量', attr: 'totalDischargeCapacity', unit: 'kWh', pointName: '累计放电量'},
|
||||||
{label:'SOH',attr:'stackSoh',unit:'%',pointName:'SOH'},
|
{label: 'SOH', attr: 'stackSoh', unit: '%', pointName: 'SOH'},
|
||||||
{label:'平均温度',attr:'operatingTemp',unit:'℃',pointName:'平均温度'},
|
{label: '平均温度', attr: 'operatingTemp', unit: '℃', pointName: '平均温度'},
|
||||||
{label:'绝缘电阻',attr:'stackInsulationResistance',unit:'Ω',pointName:'绝缘电阻'},
|
{label: '绝缘电阻', attr: 'stackInsulationResistance', unit: 'Ω', pointName: '绝缘电阻'},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods: {
|
||||||
// 查看设备电位表格
|
// 查看设备电位表格
|
||||||
pointDetail(row,dataType){
|
pointDetail(row, dataType) {
|
||||||
const {siteId,deviceId} = row
|
const {siteId, deviceId} = row
|
||||||
this.$refs.pointTable.showTable({siteId,deviceId,deviceCategory:'STACK'},dataType)
|
this.$refs.pointTable.showTable({siteId, deviceId, deviceCategory: 'STACK'}, dataType)
|
||||||
},
|
},
|
||||||
showChart(pointName,deviceId,deviceCategory = 'STACK'){
|
showChart(pointName, deviceId, deviceCategory = 'STACK') {
|
||||||
pointName && this.$refs.pointChart.showChart({pointName,deviceCategory,deviceId})
|
pointName && this.$refs.pointChart.showChart({pointName, deviceCategory, deviceId})
|
||||||
},
|
},
|
||||||
updateData(){
|
updateData() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getBMSOverView(this.siteId).then(response => {
|
getBMSOverView(this.siteId).then(response => {
|
||||||
this.baseInfoList = JSON.parse(JSON.stringify(response?.data || []));
|
this.baseInfoList = JSON.parse(JSON.stringify(response?.data || []));
|
||||||
}).finally(() => {this.loading = false})
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
init(){
|
init() {
|
||||||
this.updateData()
|
this.updateData()
|
||||||
this.updateInterval(this.updateData)
|
this.updateInterval(this.updateData)
|
||||||
}
|
}
|
||||||
@ -189,21 +214,24 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 进度条样式
|
// 进度条样式
|
||||||
.process-container{
|
.process-container {
|
||||||
width:100px;
|
width: 100px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right:70px;
|
right: 70px;
|
||||||
top:50%;
|
top: 50%;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
.process-line-bg{
|
|
||||||
|
.process-line-bg {
|
||||||
position: relative;
|
position: relative;
|
||||||
width:100%;
|
width: 100%;
|
||||||
height: 110px;
|
height: 110px;
|
||||||
background-color:#fff2cb ;
|
background-color: #fff2cb;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
box-shadow: 0 0 10px #fff2cb, 0 0 0 rgba(255, 242, 203, 0.5);
|
box-shadow: 0 0 10px #fff2cb, 0 0 0 rgba(255, 242, 203, 0.5);
|
||||||
.process-line{
|
|
||||||
|
.process-line {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
@ -214,9 +242,10 @@ export default {
|
|||||||
box-shadow: 0 0 10px rgb(252 108 108), 0 0 0 rgba(252, 108, 108, 0.5);
|
box-shadow: 0 0 10px rgb(252 108 108), 0 0 0 rgba(252, 108, 108, 0.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.process{
|
|
||||||
margin-top:15px;
|
.process {
|
||||||
color:#666666;
|
margin-top: 15px;
|
||||||
|
color: #666666;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,9 @@
|
|||||||
<div>数据更新时间:{{ item.dataUpdateTime }}</div>
|
<div>数据更新时间:{{ item.dataUpdateTime }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="alarm">
|
<div class="alarm">
|
||||||
<el-button type="primary" size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">详细</el-button>
|
<el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">
|
||||||
|
详细
|
||||||
|
</el-button>
|
||||||
<el-badge :value="item.alarmNum || 0" class="item">
|
<el-badge :value="item.alarmNum || 0" class="item">
|
||||||
<i
|
<i
|
||||||
class="el-icon-message-solid alarm-icon"
|
class="el-icon-message-solid alarm-icon"
|
||||||
@ -33,9 +35,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-row class="device-info-row">
|
<el-row class="device-info-row">
|
||||||
<el-col v-for="(tempDataItem,tempDataIndex) in deviceIdTypeMsg[item.deviceId]" :key="tempDataIndex+'dbTempData'" :span="8" class="device-info-col">
|
<el-col v-for="(tempDataItem,tempDataIndex) in deviceIdTypeMsg[item.deviceId]" :key="tempDataIndex+'dbTempData'"
|
||||||
|
:span="8" class="device-info-col">
|
||||||
<span class="pointer" @click="showChart(tempDataItem.pointName,item.deviceId)">
|
<span class="pointer" @click="showChart(tempDataItem.pointName,item.deviceId)">
|
||||||
<span class="left">{{tempDataItem.name}}</span> <span class="right">{{item[tempDataItem.attr]}}<span v-html="tempDataItem.unit"></span></span>
|
<span class="left">{{ tempDataItem.name }}</span> <span class="right">{{ item[tempDataItem.attr] }}<span
|
||||||
|
v-html="tempDataItem.unit"></span></span>
|
||||||
</span>
|
</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -49,102 +53,103 @@
|
|||||||
<script>
|
<script>
|
||||||
import pointChart from "./../PointChart.vue";
|
import pointChart from "./../PointChart.vue";
|
||||||
import getQuerySiteId from "@/mixins/ems/getQuerySiteId";
|
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";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "DzjkSbjkDb",
|
name: "DzjkSbjkDb",
|
||||||
mixins: [getQuerySiteId,intervalUpdate],
|
mixins: [getQuerySiteId, intervalUpdate],
|
||||||
components:{PointTable, pointChart},
|
components: {PointTable, pointChart},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
list:[],
|
list: [],
|
||||||
deviceIdTypeMsg:{
|
deviceIdTypeMsg: {
|
||||||
'LOAD':[
|
'LOAD': [
|
||||||
{
|
{
|
||||||
name:'正向有功电能',
|
name: '正向有功电能',
|
||||||
attr:'forwardActive',
|
attr: 'forwardActive',
|
||||||
pointName:'正向有功电能'
|
pointName: '正向有功电能'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'反向有功电能',
|
name: '反向有功电能',
|
||||||
attr:'reverseActive',
|
attr: 'reverseActive',
|
||||||
pointName:'反向有功电能'
|
pointName: '反向有功电能'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'正向无功电能',
|
name: '正向无功电能',
|
||||||
attr:'forwardReactive',
|
attr: 'forwardReactive',
|
||||||
pointName:'正向无功电能'
|
pointName: '正向无功电能'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'反向无功电能',
|
name: '反向无功电能',
|
||||||
attr:'reverseReactive',
|
attr: 'reverseReactive',
|
||||||
pointName:'反向无功电能'
|
pointName: '反向无功电能'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'有功功率',
|
name: '有功功率',
|
||||||
attr:'activePower',
|
attr: 'activePower',
|
||||||
pointName:'总有功功率'
|
pointName: '总有功功率'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'无功功率',
|
name: '无功功率',
|
||||||
attr:'reactivePower',
|
attr: 'reactivePower',
|
||||||
pointName:'总无功功率'
|
pointName: '总无功功率'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'METE':[
|
'METE': [
|
||||||
{
|
{
|
||||||
name:'正向有功电能',
|
name: '正向有功电能',
|
||||||
attr:'forwardActive',
|
attr: 'forwardActive',
|
||||||
pointName:'正向有功电能'
|
pointName: '正向有功电能'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'反向有功电能',
|
name: '反向有功电能',
|
||||||
attr:'reverseActive',
|
attr: 'reverseActive',
|
||||||
pointName:'反向有功电能'
|
pointName: '反向有功电能'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'正向无功电能',
|
name: '正向无功电能',
|
||||||
attr:'forwardReactive',
|
attr: 'forwardReactive',
|
||||||
pointName:'正向无功电能'
|
pointName: '正向无功电能'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'反向无功电能',
|
name: '反向无功电能',
|
||||||
attr:'reverseReactive',
|
attr: 'reverseReactive',
|
||||||
pointName:'反向无功电能'
|
pointName: '反向无功电能'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'有功功率',
|
name: '有功功率',
|
||||||
attr:'activePower',
|
attr: 'activePower',
|
||||||
pointName:'总有功功率'
|
pointName: '总有功功率'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'无功功率',
|
name: '无功功率',
|
||||||
attr:'reactivePower',
|
attr: 'reactivePower',
|
||||||
pointName:'总无功功率'
|
pointName: '总无功功率'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'METEGF':[
|
'METEGF': [
|
||||||
{
|
{
|
||||||
name:'有功电能',
|
name: '有功电能',
|
||||||
attr:'activeEnergy',
|
attr: 'activeEnergy',
|
||||||
pointName:'有功电能'
|
pointName: '有功电能'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'无功电能',
|
name: '无功电能',
|
||||||
attr:'reactiveEnergy',
|
attr: 'reactiveEnergy',
|
||||||
pointName:'无功电能'
|
pointName: '无功电能'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'有功功率',
|
name: '有功功率',
|
||||||
attr:'activePower',
|
attr: 'activePower',
|
||||||
pointName:'总有功功率'
|
pointName: '总有功功率'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:'无功功率',
|
name: '无功功率',
|
||||||
attr:'reactivePower',
|
attr: 'reactivePower',
|
||||||
pointName:'总无功功率'
|
pointName: '总无功功率'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -152,14 +157,14 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 查看设备电位表格
|
// 查看设备电位表格
|
||||||
pointDetail(row,dataType){
|
pointDetail(row, dataType) {
|
||||||
const {deviceId} = row
|
const {deviceId} = row
|
||||||
this.$refs.pointTable.showTable({siteId:this.siteId,deviceId,deviceCategory:'AMMETER'},dataType)
|
this.$refs.pointTable.showTable({siteId: this.siteId, deviceId, deviceCategory: 'AMMETER'}, dataType)
|
||||||
},
|
},
|
||||||
showChart(pointName,deviceId){
|
showChart(pointName, deviceId) {
|
||||||
pointName && this.$refs.pointChart.showChart({pointName,deviceCategory:'AMMETER',deviceId})
|
pointName && this.$refs.pointChart.showChart({pointName, deviceCategory: 'AMMETER', deviceId})
|
||||||
},
|
},
|
||||||
updateData(){
|
updateData() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
getAmmeterDataList(this.siteId)
|
getAmmeterDataList(this.siteId)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
@ -174,13 +179,14 @@ export default {
|
|||||||
this.updateInterval(this.updateData)
|
this.updateInterval(this.updateData)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted() {},
|
mounted() {
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.sbjk-card-container {
|
.sbjk-card-container {
|
||||||
&.list:not(:last-child){
|
&.list:not(:last-child) {
|
||||||
margin-bottom: 25px;
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div v-loading="loading">
|
<div v-loading="loading">
|
||||||
<el-card
|
<el-card
|
||||||
@ -7,12 +6,14 @@
|
|||||||
class="sbjk-card-container running-card-container"
|
class="sbjk-card-container running-card-container"
|
||||||
shadow="always">
|
shadow="always">
|
||||||
<div slot="header">
|
<div slot="header">
|
||||||
<span class="large-title">{{item.deviceName}}</span>
|
<span class="large-title">{{ item.deviceName }}</span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div>数据更新时间:{{ item.dataUpdateTime || '-'}}</div>
|
<div>数据更新时间:{{ item.dataUpdateTime || '-' }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="alarm">
|
<div class="alarm">
|
||||||
<el-button type="primary" size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">详细</el-button>
|
<el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">
|
||||||
|
详细
|
||||||
|
</el-button>
|
||||||
<el-badge :value="item.alarmNum || 0" class="item">
|
<el-badge :value="item.alarmNum || 0" class="item">
|
||||||
<i
|
<i
|
||||||
class="el-icon-message-solid alarm-icon"
|
class="el-icon-message-solid alarm-icon"
|
||||||
@ -22,9 +23,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-row class="device-info-row">
|
<el-row class="device-info-row">
|
||||||
<el-col v-for="(tempDataItem,tempDataIndex) in tempData" :key="tempDataIndex+'hdTempData'" :span="12" class="device-info-col">
|
<el-col v-for="(tempDataItem,tempDataIndex) in tempData" :key="tempDataIndex+'hdTempData'" :span="12"
|
||||||
|
class="device-info-col">
|
||||||
<span class="pointer" @click="showChart(tempDataItem.title,item.deviceId)">
|
<span class="pointer" @click="showChart(tempDataItem.title,item.deviceId)">
|
||||||
<span class="left">{{tempDataItem.title}}</span> <span class="right">{{item[tempDataItem.attr]}}<span v-html="tempDataItem.unit"></span></span>
|
<span class="left">{{ tempDataItem.title }}</span> <span class="right">{{ item[tempDataItem.attr] }}<span
|
||||||
|
v-html="tempDataItem.unit"></span></span>
|
||||||
</span>
|
</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -42,66 +45,73 @@ import {getDhDataList} from '@/api/ems/dzjk'
|
|||||||
import intervalUpdate from "@/mixins/ems/intervalUpdate";
|
import intervalUpdate from "@/mixins/ems/intervalUpdate";
|
||||||
import pointChart from "./../PointChart.vue";
|
import pointChart from "./../PointChart.vue";
|
||||||
import PointTable from "@/views/ems/site/sblb/PointTable.vue";
|
import PointTable from "@/views/ems/site/sblb/PointTable.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name:'DzjkSbjkDh',
|
name: 'DzjkSbjkDh',
|
||||||
mixins:[getQuerySiteId,intervalUpdate],
|
mixins: [getQuerySiteId, intervalUpdate],
|
||||||
components:{pointChart,PointTable},
|
components: {pointChart, PointTable},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading:false,
|
loading: false,
|
||||||
list:[],
|
list: [],
|
||||||
tempData:[
|
tempData: [
|
||||||
{title:'湿度',attr:'humidity',unit:'℃'},
|
{title: '湿度', attr: 'humidity', unit: ''},
|
||||||
{title:'温度',attr:'temperature',unit:''},
|
{title: '温度', attr: 'temperature', unit: '℃'},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods: {
|
||||||
// 查看设备电位表格
|
// 查看设备电位表格
|
||||||
pointDetail(row,dataType){
|
pointDetail(row, dataType) {
|
||||||
const {deviceId} = row
|
const {deviceId} = row
|
||||||
this.$refs.pointTable.showTable({siteId:this.siteId,deviceId,deviceCategory:'DH'},dataType)
|
this.$refs.pointTable.showTable({siteId: this.siteId, deviceId, deviceCategory: 'DH'}, dataType)
|
||||||
},
|
},
|
||||||
showChart(pointName,deviceId){
|
showChart(pointName, deviceId) {
|
||||||
pointName && this.$refs.pointChart.showChart({pointName,deviceCategory:'DH',deviceId})
|
pointName && this.$refs.pointChart.showChart({pointName, deviceCategory: 'DH', deviceId})
|
||||||
},
|
},
|
||||||
updateData(){
|
updateData() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getDhDataList(this.siteId).then(response => {
|
getDhDataList(this.siteId).then(response => {
|
||||||
this.list = JSON.parse(JSON.stringify(response?.data || []));
|
this.list = JSON.parse(JSON.stringify(response?.data || []));
|
||||||
}).finally(() => {this.loading = false})
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
init(){
|
init() {
|
||||||
this.updateData()
|
this.updateData()
|
||||||
this.updateInterval(this.updateData)
|
this.updateInterval(this.updateData)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted(){
|
mounted() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.sbjk-card-container{
|
.sbjk-card-container {
|
||||||
&:not(:last-child){
|
&:not(:last-child) {
|
||||||
margin-bottom: 25px;
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
.el-row{
|
|
||||||
|
.el-row {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
border:1px solid #eeeeee;
|
border: 1px solid #eeeeee;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 16px;
|
line-height: 16px;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
.el-col{
|
|
||||||
padding:12px 0;
|
.el-col {
|
||||||
|
padding: 12px 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
.el-col{
|
|
||||||
|
.el-col {
|
||||||
border-bottom: 1px solid #eeeeee;
|
border-bottom: 1px solid #eeeeee;
|
||||||
}
|
}
|
||||||
.el-col:not(:nth-child(3n)){
|
|
||||||
|
.el-col:not(:nth-child(3n)) {
|
||||||
border-right: 1px solid #eeeeee;
|
border-right: 1px solid #eeeeee;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -218,7 +218,7 @@
|
|||||||
<div>数据更新时间:{{ item.dataUpdateTime }}</div>
|
<div>数据更新时间:{{ item.dataUpdateTime }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="alarm">
|
<div class="alarm">
|
||||||
<el-button size="small" 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 :value="item.alarmNum || 0" class="item">
|
||||||
<i
|
<i
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-loading="loading" class="pcs-ems-dashboard-editor-container">
|
<div v-loading="loading" class="pcs-ems-dashboard-editor-container">
|
||||||
<!-- 顶部六个方块-->
|
<!-- 顶部六个方块-->
|
||||||
<real-time-base-info :data="runningHeadData" />
|
<real-time-base-info :data="runningHeadData"/>
|
||||||
<div
|
<div
|
||||||
v-for="(pcsItem, pcsIndex) in pcsList"
|
v-for="(pcsItem, pcsIndex) in pcsList"
|
||||||
:key="pcsIndex + 'PcsHome'"
|
:key="pcsIndex + 'PcsHome'"
|
||||||
@ -31,7 +31,16 @@
|
|||||||
<div>数据更新时间:{{ pcsItem.dataUpdateTime }}</div>
|
<div>数据更新时间:{{ pcsItem.dataUpdateTime }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="alarm">
|
<div class="alarm">
|
||||||
<el-button type="primary" size="small" style="margin-right:20px;" @click="pointDetail(pcsItem,'point')">详细</el-button>
|
<pcs-switch style="margin-right:10px;"
|
||||||
|
:round="true"
|
||||||
|
size="small"
|
||||||
|
type="danger"
|
||||||
|
:data="pcsItem"
|
||||||
|
@updateSuccess="init"/>
|
||||||
|
<el-button type="primary" round size="small" style="margin-right:20px;"
|
||||||
|
@click="pointDetail(pcsItem,'point')">
|
||||||
|
详细
|
||||||
|
</el-button>
|
||||||
<el-badge :value="pcsItem.alarmNum || 0" class="item">
|
<el-badge :value="pcsItem.alarmNum || 0" class="item">
|
||||||
<i
|
<i
|
||||||
class="el-icon-message-solid alarm-icon"
|
class="el-icon-message-solid alarm-icon"
|
||||||
@ -51,7 +60,8 @@
|
|||||||
labelClassName="descriptions-label"
|
labelClassName="descriptions-label"
|
||||||
>{{
|
>{{
|
||||||
$store.state.ems.workStatusOptions[pcsItem.workStatus]
|
$store.state.ems.workStatusOptions[pcsItem.workStatus]
|
||||||
}}</el-descriptions-item
|
}}
|
||||||
|
</el-descriptions-item
|
||||||
>
|
>
|
||||||
<el-descriptions-item
|
<el-descriptions-item
|
||||||
:span="1"
|
:span="1"
|
||||||
@ -60,7 +70,8 @@
|
|||||||
labelClassName="descriptions-label"
|
labelClassName="descriptions-label"
|
||||||
>{{
|
>{{
|
||||||
$store.state.ems.gridStatusOptions[pcsItem.gridStatus]
|
$store.state.ems.gridStatusOptions[pcsItem.gridStatus]
|
||||||
}}</el-descriptions-item
|
}}
|
||||||
|
</el-descriptions-item
|
||||||
>
|
>
|
||||||
<el-descriptions-item
|
<el-descriptions-item
|
||||||
:contentClassName="`descriptions-direction ${
|
:contentClassName="`descriptions-direction ${
|
||||||
@ -71,7 +82,8 @@
|
|||||||
labelClassName="descriptions-label"
|
labelClassName="descriptions-label"
|
||||||
>{{
|
>{{
|
||||||
$store.state.ems.deviceStatusOptions[pcsItem.deviceStatus]
|
$store.state.ems.deviceStatusOptions[pcsItem.deviceStatus]
|
||||||
}}</el-descriptions-item
|
}}
|
||||||
|
</el-descriptions-item
|
||||||
>
|
>
|
||||||
<el-descriptions-item
|
<el-descriptions-item
|
||||||
:span="1"
|
:span="1"
|
||||||
@ -80,7 +92,8 @@
|
|||||||
labelClassName="descriptions-label"
|
labelClassName="descriptions-label"
|
||||||
>{{
|
>{{
|
||||||
$store.state.ems.controlModeOptions[pcsItem.controlMode]
|
$store.state.ems.controlModeOptions[pcsItem.controlMode]
|
||||||
}}</el-descriptions-item
|
}}
|
||||||
|
</el-descriptions-item
|
||||||
>
|
>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</div>
|
</div>
|
||||||
@ -127,7 +140,8 @@
|
|||||||
:span="4"
|
:span="4"
|
||||||
contentClassName="descriptions-direction keep"
|
contentClassName="descriptions-direction keep"
|
||||||
labelClassName="descriptions-label"
|
labelClassName="descriptions-label"
|
||||||
>{{ item.dischargeStatus }}</el-descriptions-item
|
>{{ item.dischargeStatus }}
|
||||||
|
</el-descriptions-item
|
||||||
>
|
>
|
||||||
<el-descriptions-item
|
<el-descriptions-item
|
||||||
:span="1"
|
:span="1"
|
||||||
@ -170,7 +184,7 @@
|
|||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
<el-empty v-show="pcsList.length <= 0" :image-size="200"></el-empty>
|
<el-empty v-show="pcsList.length <= 0" :image-size="200"></el-empty>
|
||||||
<point-chart ref="pointChart" :site-id="siteId" />
|
<point-chart ref="pointChart" :site-id="siteId"/>
|
||||||
<point-table ref="pointTable"/>
|
<point-table ref="pointTable"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -180,11 +194,13 @@ import pointChart from "./../PointChart.vue";
|
|||||||
import PointTable from "@/views/ems/site/sblb/PointTable.vue";
|
import PointTable from "@/views/ems/site/sblb/PointTable.vue";
|
||||||
import RealTimeBaseInfo from "./../RealTimeBaseInfo.vue";
|
import RealTimeBaseInfo from "./../RealTimeBaseInfo.vue";
|
||||||
import getQuerySiteId from "@/mixins/ems/getQuerySiteId";
|
import getQuerySiteId from "@/mixins/ems/getQuerySiteId";
|
||||||
import { getRunningHeadInfo, getPcsDetailInfo } from "@/api/ems/dzjk";
|
import {getPcsDetailInfo, getRunningHeadInfo} from "@/api/ems/dzjk";
|
||||||
import intervalUpdate from "@/mixins/ems/intervalUpdate";
|
import intervalUpdate from "@/mixins/ems/intervalUpdate";
|
||||||
|
import PcsSwitch from "@/views/ems/site/sblb/PcsSwitch.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "DzjkSbjkPcs",
|
name: "DzjkSbjkPcs",
|
||||||
components: { RealTimeBaseInfo, pointChart ,PointTable},
|
components: {RealTimeBaseInfo, pointChart, PointTable, PcsSwitch},
|
||||||
mixins: [getQuerySiteId, intervalUpdate],
|
mixins: [getQuerySiteId, intervalUpdate],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -204,7 +220,7 @@ export default {
|
|||||||
unit: "kWh",
|
unit: "kWh",
|
||||||
pointName: "当天交流充电量 (kWh)",
|
pointName: "当天交流充电量 (kWh)",
|
||||||
},
|
},
|
||||||
{ label: "A相电压", attr: "aPhaseVoltage", unit: "V", pointName: "" },
|
{label: "A相电压", attr: "aPhaseVoltage", unit: "V", pointName: ""},
|
||||||
{
|
{
|
||||||
label: "A相电流",
|
label: "A相电流",
|
||||||
attr: "aPhaseCurrent",
|
attr: "aPhaseCurrent",
|
||||||
@ -223,7 +239,7 @@ export default {
|
|||||||
unit: "kWh",
|
unit: "kWh",
|
||||||
pointName: "当天交流放电量 (kWh)",
|
pointName: "当天交流放电量 (kWh)",
|
||||||
},
|
},
|
||||||
{ label: "B相电压", attr: "bPhaseVoltage", unit: "V", pointName: "" },
|
{label: "B相电压", attr: "bPhaseVoltage", unit: "V", pointName: ""},
|
||||||
{
|
{
|
||||||
label: "B相电流",
|
label: "B相电流",
|
||||||
attr: "bPhaseCurrent",
|
attr: "bPhaseCurrent",
|
||||||
@ -242,7 +258,7 @@ export default {
|
|||||||
unit: "℃",
|
unit: "℃",
|
||||||
pointName: "",
|
pointName: "",
|
||||||
},
|
},
|
||||||
{ label: "C相电压", attr: "cPhaseVoltage", unit: "V", pointName: "" },
|
{label: "C相电压", attr: "cPhaseVoltage", unit: "V", pointName: ""},
|
||||||
{
|
{
|
||||||
label: "C相电流",
|
label: "C相电流",
|
||||||
attr: "cPhaseCurrent",
|
attr: "cPhaseCurrent",
|
||||||
@ -273,13 +289,13 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 查看设备电位表格
|
// 查看设备电位表格
|
||||||
pointDetail(row,dataType){
|
pointDetail(row, dataType) {
|
||||||
const {deviceId} = row
|
const {deviceId} = row
|
||||||
this.$refs.pointTable.showTable({siteId:this.siteId,deviceId,deviceCategory:'PCS'},dataType)
|
this.$refs.pointTable.showTable({siteId: this.siteId, deviceId, deviceCategory: 'PCS'}, dataType)
|
||||||
},
|
},
|
||||||
showChart(pointName, deviceId,isBranch=false) {
|
showChart(pointName, deviceId, isBranch = false) {
|
||||||
pointName &&
|
pointName &&
|
||||||
this.$refs.pointChart.showChart({ pointName,deviceCategory:isBranch ? 'BRANCH' : 'PCS', deviceId });
|
this.$refs.pointChart.showChart({pointName, deviceCategory: isBranch ? 'BRANCH' : 'PCS', deviceId});
|
||||||
},
|
},
|
||||||
//6个方块数据
|
//6个方块数据
|
||||||
getRunningHeadData() {
|
getRunningHeadData() {
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div v-loading="loading">
|
<div v-loading="loading">
|
||||||
<el-card
|
<el-card
|
||||||
@ -11,7 +10,7 @@
|
|||||||
}"
|
}"
|
||||||
shadow="always">
|
shadow="always">
|
||||||
<div slot="header">
|
<div slot="header">
|
||||||
<span class="large-title">{{item.deviceName}}</span>
|
<span class="large-title">{{ item.deviceName }}</span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div>
|
<div>
|
||||||
{{
|
{{
|
||||||
@ -20,10 +19,12 @@
|
|||||||
]
|
]
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div>数据更新时间:{{ item.dataUpdateTime || '-'}}</div>
|
<div>数据更新时间:{{ item.dataUpdateTime || '-' }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="alarm">
|
<div class="alarm">
|
||||||
<el-button type="primary" size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">详细</el-button>
|
<el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">
|
||||||
|
详细
|
||||||
|
</el-button>
|
||||||
<el-badge :value="item.alarmNum || 0" class="item">
|
<el-badge :value="item.alarmNum || 0" class="item">
|
||||||
<i
|
<i
|
||||||
class="el-icon-message-solid alarm-icon"
|
class="el-icon-message-solid alarm-icon"
|
||||||
@ -33,9 +34,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-row class="device-info-row">
|
<el-row class="device-info-row">
|
||||||
<el-col v-for="(tempDataItem,tempDataIndex) in tempData" :key="tempDataIndex+'hdTempData'" :span="12" class="device-info-col">
|
<el-col v-for="(tempDataItem,tempDataIndex) in tempData" :key="tempDataIndex+'hdTempData'" :span="12"
|
||||||
|
class="device-info-col">
|
||||||
<span class="pointer" @click="showChart(tempDataItem.title,item.deviceId)">
|
<span class="pointer" @click="showChart(tempDataItem.title,item.deviceId)">
|
||||||
<span class="left">{{tempDataItem.title}}</span> <span class="right">{{item[tempDataItem.attr] || ''}}<span v-html="tempDataItem.unit"></span></span>
|
<span class="left">{{ tempDataItem.title }}</span> <span class="right">{{ item[tempDataItem.attr] || '' }}<span
|
||||||
|
v-html="tempDataItem.unit"></span></span>
|
||||||
</span>
|
</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -53,68 +56,75 @@ import {getXfDataList} from '@/api/ems/dzjk'
|
|||||||
import intervalUpdate from "@/mixins/ems/intervalUpdate";
|
import intervalUpdate from "@/mixins/ems/intervalUpdate";
|
||||||
import pointChart from "./../PointChart.vue";
|
import pointChart from "./../PointChart.vue";
|
||||||
import PointTable from "@/views/ems/site/sblb/PointTable.vue";
|
import PointTable from "@/views/ems/site/sblb/PointTable.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name:'DzjkSbjkXf',
|
name: 'DzjkSbjkXf',
|
||||||
mixins:[getQuerySiteId,intervalUpdate],
|
mixins: [getQuerySiteId, intervalUpdate],
|
||||||
components:{pointChart,PointTable},
|
components: {pointChart, PointTable},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading:false,
|
loading: false,
|
||||||
list:[],
|
list: [],
|
||||||
tempData:[
|
tempData: [
|
||||||
{title:'主电源备用电池状态',attr:'dczt',unit:''},
|
{title: '主电源备用电池状态', attr: 'dczt', unit: ''},
|
||||||
{title:'手自动状态延时状态',attr:'yszt',unit:''},
|
{title: '手自动状态延时状态', attr: 'yszt', unit: ''},
|
||||||
{title:'启动喷洒气体喷洒状态',attr:'pszt',unit:''},
|
{title: '启动喷洒气体喷洒状态', attr: 'pszt', unit: ''},
|
||||||
{title:'压力开关状态电磁阀状态',attr:'dcfzt',unit:''},
|
{title: '压力开关状态电磁阀状态', attr: 'dcfzt', unit: ''},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods: {
|
||||||
// 查看设备电位表格
|
// 查看设备电位表格
|
||||||
pointDetail(row,dataType){
|
pointDetail(row, dataType) {
|
||||||
const {deviceId} = row
|
const {deviceId} = row
|
||||||
this.$refs.pointTable.showTable({siteId:this.siteId,deviceId,deviceCategory:'XF'},dataType)
|
this.$refs.pointTable.showTable({siteId: this.siteId, deviceId, deviceCategory: 'XF'}, dataType)
|
||||||
},
|
},
|
||||||
showChart(pointName,deviceId){
|
showChart(pointName, deviceId) {
|
||||||
pointName && this.$refs.pointChart.showChart({pointName,deviceCategory:'XF',deviceId})
|
pointName && this.$refs.pointChart.showChart({pointName, deviceCategory: 'XF', deviceId})
|
||||||
},
|
},
|
||||||
updateData(){
|
updateData() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getXfDataList(this.siteId).then(response => {
|
getXfDataList(this.siteId).then(response => {
|
||||||
this.list = JSON.parse(JSON.stringify(response?.data || []));
|
this.list = JSON.parse(JSON.stringify(response?.data || []));
|
||||||
}).finally(() => {this.loading = false})
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
init(){
|
init() {
|
||||||
this.updateData()
|
this.updateData()
|
||||||
this.updateInterval(this.updateData)
|
this.updateInterval(this.updateData)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted(){
|
mounted() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.sbjk-card-container{
|
.sbjk-card-container {
|
||||||
&:not(:last-child){
|
&:not(:last-child) {
|
||||||
margin-bottom: 25px;
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
.el-row{
|
|
||||||
|
.el-row {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
border:1px solid #eeeeee;
|
border: 1px solid #eeeeee;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 16px;
|
line-height: 16px;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
.el-col{
|
|
||||||
padding:12px 0;
|
.el-col {
|
||||||
|
padding: 12px 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
.el-col{
|
|
||||||
|
.el-col {
|
||||||
border-bottom: 1px solid #eeeeee;
|
border-bottom: 1px solid #eeeeee;
|
||||||
}
|
}
|
||||||
.el-col:not(:nth-child(3n)){
|
|
||||||
|
.el-col:not(:nth-child(3n)) {
|
||||||
border-right: 1px solid #eeeeee;
|
border-right: 1px solid #eeeeee;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div v-loading="loading">
|
<div v-loading="loading">
|
||||||
<el-card
|
<el-card
|
||||||
@ -7,12 +6,14 @@
|
|||||||
class="sbjk-card-container running-card-container"
|
class="sbjk-card-container running-card-container"
|
||||||
shadow="always">
|
shadow="always">
|
||||||
<div slot="header">
|
<div slot="header">
|
||||||
<span class="large-title">{{item.deviceName}}</span>
|
<span class="large-title">{{ item.deviceName }}</span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div>数据更新时间:{{ item.dataUpdateTime || '-'}}</div>
|
<div>数据更新时间:{{ item.dataUpdateTime || '-' }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="alarm">
|
<div class="alarm">
|
||||||
<el-button type="primary" size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">详细</el-button>
|
<el-button type="primary" round size="small" style="margin-right:20px;" @click="pointDetail(item,'point')">
|
||||||
|
详细
|
||||||
|
</el-button>
|
||||||
<el-badge :value="item.alarmNum || 0" class="item">
|
<el-badge :value="item.alarmNum || 0" class="item">
|
||||||
<i
|
<i
|
||||||
class="el-icon-message-solid alarm-icon"
|
class="el-icon-message-solid alarm-icon"
|
||||||
@ -22,9 +23,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-row class="device-info-row">
|
<el-row class="device-info-row">
|
||||||
<el-col v-for="(tempDataItem,tempDataIndex) in tempData" :key="tempDataIndex+'ylTempData'" :span="8" class="device-info-col">
|
<el-col v-for="(tempDataItem,tempDataIndex) in tempData" :key="tempDataIndex+'ylTempData'" :span="8"
|
||||||
|
class="device-info-col">
|
||||||
<span class="pointer" @click="showChart(tempDataItem.title,item.deviceId)">
|
<span class="pointer" @click="showChart(tempDataItem.title,item.deviceId)">
|
||||||
<span class="left">{{tempDataItem.title}}</span> <span class="right">{{item[tempDataItem.attr]}}<span v-html="tempDataItem.unit"></span></span>
|
<span class="left">{{ tempDataItem.title }}</span> <span class="right">{{ item[tempDataItem.attr] }}<span
|
||||||
|
v-html="tempDataItem.unit"></span></span>
|
||||||
</span>
|
</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -42,54 +45,57 @@ import {getCoolingDataList} from '@/api/ems/dzjk'
|
|||||||
import intervalUpdate from "@/mixins/ems/intervalUpdate";
|
import intervalUpdate from "@/mixins/ems/intervalUpdate";
|
||||||
import pointChart from "./../PointChart.vue";
|
import pointChart from "./../PointChart.vue";
|
||||||
import PointTable from "@/views/ems/site/sblb/PointTable.vue";
|
import PointTable from "@/views/ems/site/sblb/PointTable.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name:'DzjkSbjkYl',
|
name: 'DzjkSbjkYl',
|
||||||
mixins:[getQuerySiteId,intervalUpdate],
|
mixins: [getQuerySiteId, intervalUpdate],
|
||||||
components:{pointChart,PointTable},
|
components: {pointChart, PointTable},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading:false,
|
loading: false,
|
||||||
list:[],
|
list: [],
|
||||||
tempData:[
|
tempData: [
|
||||||
{title:'供水温度',attr:'gsTemp',unit:'℃'},
|
{title: '供水温度', attr: 'gsTemp', unit: '℃'},
|
||||||
{title:'回水温度',attr:'hsTemp',unit:'℃'},
|
{title: '回水温度', attr: 'hsTemp', unit: '℃'},
|
||||||
{title:'供水压力',attr:'gsPressure',unit:'bar'},
|
{title: '供水压力', attr: 'gsPressure', unit: 'bar'},
|
||||||
{title:'回水压力',attr:'hsPressure',unit:'bar'},
|
{title: '回水压力', attr: 'hsPressure', unit: 'bar'},
|
||||||
{title:'冷源水温度',attr:'lysTemp',unit:'℃'},
|
{title: '冷源水温度', attr: 'lysTemp', unit: '℃'},
|
||||||
{title:'VB01开度',attr:'vb01Kd',unit:'%'},
|
{title: 'VB01开度', attr: 'vb01Kd', unit: '%'},
|
||||||
{title:'VB02开度',attr:'vb02Kd',unit:'%'},
|
{title: 'VB02开度', attr: 'vb02Kd', unit: '%'},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods: {
|
||||||
// 查看设备电位表格
|
// 查看设备电位表格
|
||||||
pointDetail(row,dataType){
|
pointDetail(row, dataType) {
|
||||||
const {deviceId} = row
|
const {deviceId} = row
|
||||||
this.$refs.pointTable.showTable({siteId:this.siteId,deviceId,deviceCategory:'COOLING'},dataType)
|
this.$refs.pointTable.showTable({siteId: this.siteId, deviceId, deviceCategory: 'COOLING'}, dataType)
|
||||||
},
|
},
|
||||||
showChart(pointName,deviceId){
|
showChart(pointName, deviceId) {
|
||||||
pointName && this.$refs.pointChart.showChart({pointName,deviceCategory:'COOLING',deviceId})
|
pointName && this.$refs.pointChart.showChart({pointName, deviceCategory: 'COOLING', deviceId})
|
||||||
},
|
},
|
||||||
updateData(){
|
updateData() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getCoolingDataList(this.siteId).then(response => {
|
getCoolingDataList(this.siteId).then(response => {
|
||||||
this.list = JSON.parse(JSON.stringify(response?.data || []));
|
this.list = JSON.parse(JSON.stringify(response?.data || []));
|
||||||
}).finally(() => {this.loading = false})
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
init(){
|
init() {
|
||||||
this.updateData()
|
this.updateData()
|
||||||
this.updateInterval(this.updateData)
|
this.updateInterval(this.updateData)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted(){
|
mounted() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.sbjk-card-container{
|
.sbjk-card-container {
|
||||||
&:not(:last-child){
|
&:not(:last-child) {
|
||||||
margin-bottom: 25px;
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
<div class="bottom-arrows"></div>
|
<div class="bottom-arrows"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="computer">
|
<div class="computer">
|
||||||
<img src="@/assets/images/ems/computer.png" alt="" />
|
<img src="@/assets/images/ems/computer.png" alt=""/>
|
||||||
<span style="z-index: 2; position: relative">ems</span>
|
<span style="z-index: 2; position: relative">ems</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -34,10 +34,10 @@
|
|||||||
<div
|
<div
|
||||||
class="status"
|
class="status"
|
||||||
:class="
|
:class="
|
||||||
item.runningStatus === '2' ? 'status-running' : ''
|
item.deviceStatus === '2' ? 'status-running' : ''
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{ deviceStatusOptions[item.runningStatus] }}
|
{{ deviceStatusOptions[item.deviceStatus] }}
|
||||||
</div>
|
</div>
|
||||||
<div class="row-items-img">
|
<div class="row-items-img">
|
||||||
<img
|
<img
|
||||||
@ -68,10 +68,10 @@
|
|||||||
<div
|
<div
|
||||||
class="status"
|
class="status"
|
||||||
:class="
|
:class="
|
||||||
item.runningStatus === '2' ? 'status-running' : ''
|
item.deviceStatus === '2' ? 'status-running' : ''
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{ deviceStatusOptions[item.runningStatus] }}
|
{{ deviceStatusOptions[item.deviceStatus] }}
|
||||||
</div>
|
</div>
|
||||||
<div class="row-items-img">
|
<div class="row-items-img">
|
||||||
<img
|
<img
|
||||||
@ -107,10 +107,10 @@
|
|||||||
<div
|
<div
|
||||||
class="status"
|
class="status"
|
||||||
:class="
|
:class="
|
||||||
item.runningStatus === '2' ? 'status-running' : ''
|
item.deviceStatus === '2' ? 'status-running' : ''
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{ deviceStatusOptions[item.runningStatus] }}
|
{{ deviceStatusOptions[item.deviceStatus] }}
|
||||||
</div>
|
</div>
|
||||||
<div class="row-items-img row-items-img-bms">
|
<div class="row-items-img row-items-img-bms">
|
||||||
<div style="position:relative;">
|
<div style="position:relative;">
|
||||||
@ -118,7 +118,7 @@
|
|||||||
class="img-bms"
|
class="img-bms"
|
||||||
:src="require('@/assets/images/ems/bms.png')"
|
:src="require('@/assets/images/ems/bms.png')"
|
||||||
/>
|
/>
|
||||||
<div class="num">{{item.batteryNum || 0}}</div>
|
<div class="num">{{ item.batteryNum || 0 }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">{{ item.deviceName }}</div>
|
<div class="name">{{ item.deviceName }}</div>
|
||||||
</div>
|
</div>
|
||||||
@ -150,10 +150,10 @@
|
|||||||
<div
|
<div
|
||||||
class="status"
|
class="status"
|
||||||
:class="
|
:class="
|
||||||
item.runningStatus === '2' ? 'status-running' : ''
|
item.deviceStatus === '2' ? 'status-running' : ''
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{ deviceStatusOptions[item.runningStatus] }}
|
{{ deviceStatusOptions[item.deviceStatus] }}
|
||||||
</div>
|
</div>
|
||||||
<div class="row-items-img">
|
<div class="row-items-img">
|
||||||
<img
|
<img
|
||||||
@ -171,14 +171,14 @@
|
|||||||
<div
|
<div
|
||||||
class="status"
|
class="status"
|
||||||
:class="
|
:class="
|
||||||
item.children[0].runningStatus === '2'
|
item.children[0].deviceStatus === '2'
|
||||||
? 'status-running'
|
? 'status-running'
|
||||||
: ''
|
: ''
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{
|
{{
|
||||||
deviceStatusOptions[
|
deviceStatusOptions[
|
||||||
item.children[0].runningStatus
|
item.children[0].deviceStatus
|
||||||
]
|
]
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
@ -188,7 +188,7 @@
|
|||||||
class="img-bms"
|
class="img-bms"
|
||||||
:src="require('@/assets/images/ems/bms.png')"
|
:src="require('@/assets/images/ems/bms.png')"
|
||||||
/>
|
/>
|
||||||
<div class="num">{{item.batteryNum || 0}}</div>
|
<div class="num">{{ item.batteryNum || 0 }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">{{ item.children[0].deviceName }}</div>
|
<div class="name">{{ item.children[0].deviceName }}</div>
|
||||||
</div>
|
</div>
|
||||||
@ -204,9 +204,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getDeviceList } from "@/api/ems/site";
|
import {getDeviceList} from "@/api/ems/site";
|
||||||
import getQuerySiteId from "@/mixins/ems/getQuerySiteId";
|
import getQuerySiteId from "@/mixins/ems/getQuerySiteId";
|
||||||
import { mapState } from "vuex";
|
import {mapState} from "vuex";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "DzjkZxlt",
|
name: "DzjkZxlt",
|
||||||
mixins: [getQuerySiteId],
|
mixins: [getQuerySiteId],
|
||||||
@ -280,16 +281,16 @@ export default {
|
|||||||
data.forEach((item) => {
|
data.forEach((item) => {
|
||||||
// 电表
|
// 电表
|
||||||
if (item.deviceCategory === "AMMETER") {
|
if (item.deviceCategory === "AMMETER") {
|
||||||
db.push({ ...item, children: [] });
|
db.push({...item, children: []});
|
||||||
} else if (item.deviceCategory === "PCS") {
|
} else if (item.deviceCategory === "PCS") {
|
||||||
// pcs
|
// pcs
|
||||||
pcs.push({ ...item, children: [] });
|
pcs.push({...item, children: []});
|
||||||
} else if (item.deviceCategory === "STACK") {
|
} else if (item.deviceCategory === "STACK") {
|
||||||
// bms
|
// bms
|
||||||
bms.push({ ...item, children: [] });
|
bms.push({...item, children: []});
|
||||||
} else if (item.deviceCategory === "COOLING") {
|
} else if (item.deviceCategory === "COOLING") {
|
||||||
// 液冷
|
// 液冷
|
||||||
lq.push({ ...item, children: [] });
|
lq.push({...item, children: []});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
bms.forEach((item, index) => {
|
bms.forEach((item, index) => {
|
||||||
@ -329,6 +330,7 @@ $lineColor: #86bcc7;
|
|||||||
display: flex;
|
display: flex;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
//云 、计算机 、箭头
|
//云 、计算机 、箭头
|
||||||
.top {
|
.top {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
@ -343,6 +345,7 @@ $lineColor: #86bcc7;
|
|||||||
//云 样式
|
//云 样式
|
||||||
.cloud-container {
|
.cloud-container {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
|
||||||
.cloud {
|
.cloud {
|
||||||
width: 60px;
|
width: 60px;
|
||||||
height: 26px;
|
height: 26px;
|
||||||
@ -354,6 +357,7 @@ $lineColor: #86bcc7;
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 26px;
|
line-height: 26px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cloud:before,
|
.cloud:before,
|
||||||
.cloud:after {
|
.cloud:after {
|
||||||
content: "";
|
content: "";
|
||||||
@ -363,20 +367,24 @@ $lineColor: #86bcc7;
|
|||||||
height: 30px;
|
height: 30px;
|
||||||
border-radius: 100%;
|
border-radius: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cloud:before {
|
.cloud:before {
|
||||||
top: -9px;
|
top: -9px;
|
||||||
left: 8px;
|
left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cloud:after {
|
.cloud:after {
|
||||||
top: -6px;
|
top: -6px;
|
||||||
right: 9px;
|
right: 9px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//双箭头
|
//双箭头
|
||||||
.double-arrows {
|
.double-arrows {
|
||||||
height: fit-content;
|
height: fit-content;
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
.top-arrows,
|
.top-arrows,
|
||||||
.bottom-arrows {
|
.bottom-arrows {
|
||||||
height: 4px;
|
height: 4px;
|
||||||
@ -384,6 +392,7 @@ $lineColor: #86bcc7;
|
|||||||
background-color: #5ea9df;
|
background-color: #5ea9df;
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -392,9 +401,11 @@ $lineColor: #86bcc7;
|
|||||||
height: 0;
|
height: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-arrows {
|
.top-arrows {
|
||||||
vertical-align: super;
|
vertical-align: super;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-arrows::after {
|
.top-arrows::after {
|
||||||
top: -4px;
|
top: -4px;
|
||||||
border-bottom: 6px solid transparent;
|
border-bottom: 6px solid transparent;
|
||||||
@ -403,8 +414,10 @@ $lineColor: #86bcc7;
|
|||||||
border-top: 6px solid transparent;
|
border-top: 6px solid transparent;
|
||||||
left: -11px;
|
left: -11px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-arrows {
|
.bottom-arrows {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
top: -4px;
|
top: -4px;
|
||||||
border-top: 6px solid transparent;
|
border-top: 6px solid transparent;
|
||||||
@ -425,6 +438,7 @@ $lineColor: #86bcc7;
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
position: relative;
|
position: relative;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: auto;
|
height: auto;
|
||||||
@ -432,6 +446,7 @@ $lineColor: #86bcc7;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.outer-border {
|
.outer-border {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
@ -467,8 +482,10 @@ $lineColor: #86bcc7;
|
|||||||
color: #000;
|
color: #000;
|
||||||
font-weight: bolder;
|
font-weight: bolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
.row-lists {
|
.row-lists {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.row-items {
|
.row-items {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 5px 0;
|
padding: 5px 0;
|
||||||
@ -503,17 +520,21 @@ $lineColor: #86bcc7;
|
|||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
background: #aaaaaa;
|
background: #aaaaaa;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
|
|
||||||
&.status-running {
|
&.status-running {
|
||||||
background: #00c69c;
|
background: #00c69c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 图片+设备名称
|
// 图片+设备名称
|
||||||
.row-items-img {
|
.row-items-img {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-top: 12px;
|
padding-top: 12px;
|
||||||
&.row-items-img-bms{
|
|
||||||
|
&.row-items-img-bms {
|
||||||
padding-top: 14px;
|
padding-top: 14px;
|
||||||
.num{
|
|
||||||
|
.num {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: -2px;
|
top: -2px;
|
||||||
right: -2px;
|
right: -2px;
|
||||||
@ -526,21 +547,26 @@ $lineColor: #86bcc7;
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: auto;
|
height: auto;
|
||||||
display: block;
|
display: block;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
&.img-lq {
|
&.img-lq {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.img-pcs {
|
&.img-pcs {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.img-db {
|
&.img-db {
|
||||||
width: 56px;
|
width: 56px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 1px;
|
top: 1px;
|
||||||
@ -559,19 +585,24 @@ $lineColor: #86bcc7;
|
|||||||
&:not(:last-child) {
|
&:not(:last-child) {
|
||||||
margin-right: 30px;
|
margin-right: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.row-items {
|
.row-items {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.parent-dash {
|
.parent-dash {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
position: inherit;
|
position: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
content: "";
|
content: "";
|
||||||
@ -585,16 +616,19 @@ $lineColor: #86bcc7;
|
|||||||
transform: scale(0.4, 1);
|
transform: scale(0.4, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.children-dash {
|
.children-dash {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
margin: -20px 0 0 26px;
|
margin: -20px 0 0 26px;
|
||||||
height: fit-content;
|
height: fit-content;
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
position: inherit;
|
position: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
content: "";
|
content: "";
|
||||||
|
|||||||
94
src/views/ems/site/sblb/PcsSwitch.vue
Normal file
94
src/views/ems/site/sblb/PcsSwitch.vue
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
<template>
|
||||||
|
<el-button :size="size" :type="type" :round="round" @click="switchStatus"
|
||||||
|
>
|
||||||
|
{{ label }}
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
import {updateDeviceStatus} from "@/api/ems/site";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
size: {
|
||||||
|
type: String,
|
||||||
|
default: 'mini',
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
round: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: 'primary',
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {
|
||||||
|
deviceStatus: null,
|
||||||
|
deviceId: null,
|
||||||
|
deviceName: null,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
label() {
|
||||||
|
return this.data.deviceStatus === '4' ? '开机' : '关机'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
switchStatus() {
|
||||||
|
console.log(this.data, 11111111)
|
||||||
|
const {deviceStatus, deviceId, deviceName, siteId} = this.data
|
||||||
|
this.$confirm(`确认要${this.label}设备${deviceName || ''}吗?`, {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
showClose: false,
|
||||||
|
closeOnClickModal: false,
|
||||||
|
type: "warning",
|
||||||
|
beforeClose: (action, instance, done) => {
|
||||||
|
if (action === "confirm") {
|
||||||
|
instance.confirmButtonLoading = true;
|
||||||
|
//做开关机操作,更新成功后刷新表格
|
||||||
|
updateDeviceStatus({
|
||||||
|
siteId,
|
||||||
|
deviceStatus,
|
||||||
|
deviceId
|
||||||
|
})
|
||||||
|
.then((response) => {
|
||||||
|
response.code === 200 && done();
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
instance.confirmButtonLoading = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
//只有在废弃成功的情况下会走到这里
|
||||||
|
this.$message({
|
||||||
|
type: "success",
|
||||||
|
message: `${deviceName}${this.label}成功!`,
|
||||||
|
});
|
||||||
|
this.$emit('updateSuccess')
|
||||||
|
//调用接口 更新表格数据
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
//取消关机
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
@ -42,8 +42,8 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showDialog({siteId, code}) {
|
showDialog({siteId, deviceCategory, deviceId}) {
|
||||||
this.upload.data = {siteId, deviceCategory: code}
|
this.upload.data = {siteId, deviceCategory, deviceId}
|
||||||
this.show = true;
|
this.show = true;
|
||||||
},
|
},
|
||||||
//关闭弹窗 重置数据
|
//关闭弹窗 重置数据
|
||||||
|
|||||||
@ -8,13 +8,23 @@
|
|||||||
:key="index+'zdxeSelect'"></el-option>
|
:key="index+'zdxeSelect'"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="设备类型">
|
||||||
|
<el-select v-model="deviceCategory" placeholder="请选择设备类型" @change="onSearch" clearable>
|
||||||
|
<el-option
|
||||||
|
v-for="(item,index) in deviceCategoryList"
|
||||||
|
:key="index+'deviceCategorySelect'"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.code">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<!-- <el-button type="primary" @click="onSearch" native-type="button">搜索</el-button>-->
|
<!-- <el-button type="primary" @click="onSearch" native-type="button">搜索</el-button>-->
|
||||||
<!-- <el-button @click="onReset" native-type="button">重置</el-button>-->
|
<!-- <el-button @click="onReset" native-type="button">重置</el-button>-->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-button type="primary" @click="addDevice" native-type="button">新增设备</el-button>
|
<el-button type="primary" @click="addDevice" native-type="button">新增设备</el-button>
|
||||||
<el-dropdown @command="downloadPointDetail">
|
<el-dropdown @command="(val)=>downloadPointDetail(val,false)">
|
||||||
<el-button
|
<el-button
|
||||||
style="margin-left:10px;"
|
style="margin-left:10px;"
|
||||||
type="primary"
|
type="primary"
|
||||||
@ -28,7 +38,7 @@
|
|||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
<el-dropdown @command="uploadPointDetail">
|
<el-dropdown @command="(val)=>uploadPointDetail(val,false)">
|
||||||
<el-button
|
<el-button
|
||||||
style="margin-left:10px;"
|
style="margin-left:10px;"
|
||||||
type="success"
|
type="success"
|
||||||
@ -42,8 +52,6 @@
|
|||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
|
|
||||||
|
|
||||||
<el-table
|
<el-table
|
||||||
class="common-table"
|
class="common-table"
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
@ -72,10 +80,13 @@
|
|||||||
label="设备类别">
|
label="设备类别">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="runningStatus"
|
prop="deviceStatus"
|
||||||
label="在线状态">
|
label="在线状态">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ $store.state.ems.deviceStatusOptions[scope.row.runningStatus] }}</span>
|
<span>{{ $store.state.ems.deviceStatusOptions[scope.row.deviceStatus] }}</span>
|
||||||
|
<pcs-switch v-if="scope.row.deviceCategory === 'PCS'" style="margin-left:5px;"
|
||||||
|
:data="{siteId:scope.row.siteId,deviceStatus:scope.row.deviceStatus,deviceId:scope.row.deviceId,deviceName:scope.row.deviceName}"
|
||||||
|
@updateSuccess="getData"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -96,6 +107,23 @@
|
|||||||
报警点位清单
|
报警点位清单
|
||||||
</el-button>
|
</el-button>
|
||||||
<br>
|
<br>
|
||||||
|
<el-button
|
||||||
|
@click="downloadPointDetail(scope.row,true)"
|
||||||
|
style="margin-top:10px;"
|
||||||
|
type="primary"
|
||||||
|
plain
|
||||||
|
size="mini">
|
||||||
|
下载点位清单
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
@click="uploadPointDetail(scope.row,true)"
|
||||||
|
style="margin-top:10px;"
|
||||||
|
type="success"
|
||||||
|
plain
|
||||||
|
size="mini">
|
||||||
|
上传点位清单
|
||||||
|
</el-button>
|
||||||
|
<br>
|
||||||
<el-button
|
<el-button
|
||||||
@click="editDevice(scope.row)"
|
@click="editDevice(scope.row)"
|
||||||
style="margin-top:10px;"
|
style="margin-top:10px;"
|
||||||
@ -126,7 +154,7 @@
|
|||||||
style="margin-top:15px;text-align: center"
|
style="margin-top:15px;text-align: center"
|
||||||
>
|
>
|
||||||
</el-pagination>
|
</el-pagination>
|
||||||
<el-dialog :visible.sync="dialogTableVisible" class="ems-dialog" title=" 详细信息" :close-on-click-modal="false"
|
<el-dialog :visible.sync="dialogTableVisible" class="ems-dialog" title="详细信息" :close-on-click-modal="false"
|
||||||
:before-close="handleClosed">
|
:before-close="handleClosed">
|
||||||
<div class="descriptions-main" style="padding: 0">
|
<div class="descriptions-main" style="padding: 0">
|
||||||
<el-descriptions direction="vertical" :column="2" :colon="false" border>
|
<el-descriptions direction="vertical" :column="2" :colon="false" border>
|
||||||
@ -151,10 +179,11 @@ import {getAllDeviceCategory} from '@/api/ems/search'
|
|||||||
import PointTable from './PointTable.vue'
|
import PointTable from './PointTable.vue'
|
||||||
import AddDevice from "./AddDevice.vue";
|
import AddDevice from "./AddDevice.vue";
|
||||||
import PointUpload from "./PointUpload.vue";
|
import PointUpload from "./PointUpload.vue";
|
||||||
|
import PcsSwitch from "./PcsSwitch.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Sblb",
|
name: "Sblb",
|
||||||
components: {AddDevice, PointTable, PointUpload},
|
components: {AddDevice, PointTable, PointUpload, PcsSwitch},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
@ -163,8 +192,9 @@ export default {
|
|||||||
editDeviceId: '',//编辑设备id
|
editDeviceId: '',//编辑设备id
|
||||||
siteId: '',
|
siteId: '',
|
||||||
siteList: [],
|
siteList: [],
|
||||||
tableData: [],
|
deviceCategory: '',//搜索栏设备类型
|
||||||
deviceCategoryList: [],//设备类别
|
deviceCategoryList: [],//设备类别
|
||||||
|
tableData: [],
|
||||||
pageSize: 10,//分页栏当前每个数据总数
|
pageSize: 10,//分页栏当前每个数据总数
|
||||||
pageNum: 1,//分页栏当前页数
|
pageNum: 1,//分页栏当前页数
|
||||||
totalSize: 0,//table表格数据总数
|
totalSize: 0,//table表格数据总数
|
||||||
@ -204,15 +234,26 @@ export default {
|
|||||||
this.$refs.pointTable.showTable(row, dataType)
|
this.$refs.pointTable.showTable(row, dataType)
|
||||||
},
|
},
|
||||||
// 下载点位清单
|
// 下载点位清单
|
||||||
downloadPointDetail(command) {
|
downloadPointDetail(command, isDetail = false) {
|
||||||
|
const siteId = isDetail ? command.siteId : this.siteId
|
||||||
|
const deviceCategory = isDetail ? command.deviceCategory : command.code
|
||||||
|
const categoryName = isDetail ? command.categoryName : command.name
|
||||||
|
const deviceId = isDetail ? command.deviceId : null
|
||||||
|
console.log('下载', command, isDetail)
|
||||||
this.download('ems/pointMatch/export', {
|
this.download('ems/pointMatch/export', {
|
||||||
siteId: this.siteId,
|
siteId,
|
||||||
deviceCategory: command.code
|
deviceCategory,
|
||||||
}, `点位清单_${command.name}_${new Date().getTime()}.xlsx`)
|
deviceId,
|
||||||
|
}, `点位清单_${categoryName}_${new Date().getTime()}.xlsx`)
|
||||||
},
|
},
|
||||||
// 上传点位清单
|
// 上传点位清单
|
||||||
uploadPointDetail(command) {
|
uploadPointDetail(command, isDetail = false) {
|
||||||
this.$refs.pointUpload.showDialog({...command, siteId: this.siteId})
|
const siteId = isDetail ? command.siteId : this.siteId
|
||||||
|
const deviceCategory = isDetail ? command.deviceCategory : command.code
|
||||||
|
const categoryName = isDetail ? command.categoryName : command.name
|
||||||
|
const deviceId = isDetail ? command.deviceId : ''
|
||||||
|
console.log('上传', command, isDetail)
|
||||||
|
this.$refs.pointUpload.showDialog({siteId, deviceCategory, categoryName, deviceId})
|
||||||
},
|
},
|
||||||
clearEditDeviceData() {
|
clearEditDeviceData() {
|
||||||
this.mode = '';
|
this.mode = '';
|
||||||
@ -312,8 +353,8 @@ export default {
|
|||||||
// 获取数据
|
// 获取数据
|
||||||
getData() {
|
getData() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
const {siteId, pageNum, pageSize} = this
|
const {siteId, deviceCategory, pageNum, pageSize} = this
|
||||||
getDeviceInfoList({siteId, pageNum, pageSize}).then(response => {
|
getDeviceInfoList({siteId, deviceCategory, pageNum, pageSize}).then(response => {
|
||||||
this.tableData = response?.rows || [];
|
this.tableData = response?.rows || [];
|
||||||
this.totalSize = response?.total || 0
|
this.totalSize = response?.total || 0
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user