Browse Source

1.风柜监测系统两个页面-添加每个点位是否正常采集的数据

2.风柜监测系统新增三个风阀的远程手自动状态和手动调节频率
3.中央空调-监控详情,添加偏移值定时设置功能
meizhou
selia-zx 4 days ago
parent
commit
f4d65ef7d5
  1. 581
      src/views/aircAndWindc/awSysMonitor/components/damperMonitor.vue
  2. 56
      src/views/aircAndWindc/awSysMonitor/components/normalMonitor.vue
  3. 487
      src/views/centerairC/sysMonitor/hostDetails.vue
  4. 20
      src/views/index.vue

581
src/views/aircAndWindc/awSysMonitor/components/damperMonitor.vue

@ -72,7 +72,7 @@
/>
</div>
<div class="wind-tem1" v-if="isObjectValid(backAirObj)">
<div class="wind-text">回风温度</div>
<div :class="getTextClass(backAirObj, 'wind-text')">回风温度</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -92,7 +92,9 @@
></el-form>
</div>
<div class="wind-tem1-set" v-if="isObjectValid(backAirObjSet)">
<div class="wind-text">回风温度设置</div>
<div :class="getTextClass(backAirObjSet, 'wind-text')">
回风温度设置
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -110,10 +112,15 @@
</el-input> </el-form-item
></el-form>
</div>
<div class="wind-tem2" v-if="isObjectValid(damperOneObj)">
<div class="wind-text">宴会一厅风阀反馈</div>
<div class="back-text">{{ damperOneBackObj.collectValue }}%</div>
<div class="wind-text">调节</div>
<div class="dampers-name1">宴会一厅风阀</div>
<div class="dampers-position1" v-if="isObjectValid(damperOneBackObj)">
<div :class="getTextClass(damperOneBackObj, 'wind-text')">反馈</div>
<div :class="getTextClass(damperOneBackObj, 'back-text')">
{{ damperOneBackObj.collectValue }}%
</div>
</div>
<div class="dampers-position2" v-if="isObjectValid(damperOneObj)">
<div :class="getTextClass(damperOneObj, 'wind-text')">自动调节</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -133,10 +140,56 @@
</el-form-item>
</el-form>
</div>
<div class="wind-tem3" v-if="isObjectValid(damperTwoObj)">
<div class="wind-text">餐厅风阀反馈</div>
<div class="back-text">{{ damperTwoBackObj.collectValue }}%</div>
<div class="wind-text">调节</div>
<div class="dampers-position3" v-if="isObjectValid(damperOneRemoteObj)">
<div :class="getTextClass(damperOneRemoteObj, 'wind-text')">
远程手自动
</div>
<el-switch
style="display: block"
v-model="damperOneRemoteObj.collectValue"
active-color="#13ce66"
inactive-color="#ff4949"
active-text="手动"
inactive-text="自动"
@change="handleControlText(damperOneRemoteObj,'手动','自动')"
>
</el-switch>
</div>
<div class="dampers-position4" v-if="isObjectValid(damperOneManualObj)">
<div :class="getTextClass(damperOneManualObj, 'wind-text')">
手动调节
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
style="width: 1.2rem"
@keyup.enter.native="
handleEnter(damperOneManualObj, $event, '%')
"
@input="handleInput(damperOneManualObj)"
@blur="handleBlur()"
v-model="damperOneManualObj.collectValue"
size="mini"
:disabled="damperOneRemoteObj.collectValue"
>
<svg-icon
slot="prefix"
icon-class="percentage-icon"
class="percentage-icon"
/>
</el-input>
</el-form-item>
</el-form>
</div>
<div class="dampers-name2">餐厅风阀</div>
<div class="dampers-position6" v-if="isObjectValid(damperTwoBackObj)">
<div :class="getTextClass(damperTwoBackObj, 'wind-text')">反馈</div>
<div :class="getTextClass(damperTwoBackObj, 'back-text')">
{{ damperTwoBackObj.collectValue }}%
</div>
</div>
<div class="dampers-position7" v-if="isObjectValid(damperTwoObj)">
<div :class="getTextClass(damperTwoObj, 'wind-text')">自动调节</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -156,10 +209,63 @@
</el-form-item>
</el-form>
</div>
<div class="wind-tem4" v-if="isObjectValid(damperThreeObj)">
<div class="wind-text">会议风阀反馈</div>
<div class="back-text">{{ damperThreeBackObj.collectValue }}%</div>
<div class="wind-text">调节</div>
<div class="dampers-position8" v-if="isObjectValid(damperTwoRemoteObj)">
<div :class="getTextClass(damperTwoRemoteObj, 'wind-text')">
远程手自动
</div>
<el-switch
style="display: block"
v-model="damperTwoRemoteObj.collectValue"
active-color="#13ce66"
inactive-color="#ff4949"
active-text="手动"
inactive-text="自动"
@change="handleControlText(damperTwoRemoteObj,'手动','自动')"
>
</el-switch>
</div>
<div class="dampers-position9" v-if="isObjectValid(damperTwoManualObj)">
<div :class="getTextClass(damperTwoManualObj, 'wind-text')">
手动调节
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
style="width: 1.2rem"
@keyup.enter.native="
handleEnter(damperTwoManualObj, $event, '%')
"
@input="handleInput(damperTwoManualObj)"
@blur="handleBlur()"
v-model="damperTwoManualObj.collectValue"
size="mini"
:disabled="damperTwoRemoteObj.collectValue"
>
<svg-icon
slot="prefix"
icon-class="percentage-icon"
class="percentage-icon"
/>
</el-input>
</el-form-item>
</el-form>
</div>
<div class="dampers-name3">会议风阀</div>
<div
class="dampers-position10"
v-if="isObjectValid(damperThreeBackObj)"
>
<div :class="getTextClass(damperThreeBackObj, 'wind-text')">
反馈
</div>
<div :class="getTextClass(damperThreeBackObj, 'back-text')">
{{ damperThreeBackObj.collectValue }}%
</div>
</div>
<div class="dampers-position11" v-if="isObjectValid(damperThreeObj)">
<div :class="getTextClass(damperThreeObj, 'wind-text')">
自动调节
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -179,13 +285,62 @@
</el-form-item>
</el-form>
</div>
<div
class="dampers-position12"
v-if="isObjectValid(damperThreeRemoteObj)"
>
<div :class="getTextClass(damperThreeRemoteObj, 'wind-text')">
远程手自动
</div>
<el-switch
style="display: block"
v-model="damperThreeRemoteObj.collectValue"
active-color="#13ce66"
inactive-color="#ff4949"
active-text="手动"
inactive-text="自动"
@change="handleControlText(damperThreeRemoteObj,'手动','自动')"
>
</el-switch>
</div>
<div
class="dampers-position13"
v-if="isObjectValid(damperThreeManualObj)"
>
<div :class="getTextClass(damperThreeManualObj, 'wind-text')">
手动调节
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
style="width: 1.2rem"
@keyup.enter.native="
handleEnter(damperThreeManualObj, $event, '%')
"
@input="handleInput(damperThreeManualObj)"
@blur="handleBlur()"
v-model="damperThreeManualObj.collectValue"
size="mini"
:disabled="damperThreeRemoteObj.collectValue"
>
<svg-icon
slot="prefix"
icon-class="percentage-icon"
class="percentage-icon"
/>
</el-input>
</el-form-item>
</el-form>
</div>
<div class="fan-satatus3">
<div
class="context-li"
v-if="isObjectValid(startStopObj)"
style="width: 2.4rem"
>
<div class="wind-text">启停选择:</div>
<div :class="getTextClass(startStopObj, 'wind-text')">
启停选择:
</div>
<el-select
size="mini"
v-model="startStopObj.collectValue"
@ -208,7 +363,9 @@
class="context-li"
v-if="isObjectValid(remoteManualObj) && startStopValue === 0"
>
<div class="wind-text">远程手动启停:</div>
<div :class="getTextClass(remoteManualObj, 'wind-text')">
远程手动启停:
</div>
<el-switch
style="display: block"
v-model="remoteManualObj.collectValue"
@ -216,7 +373,7 @@
inactive-color="#ff4949"
active-text="开启"
inactive-text="停止"
@change="handleControlText(remoteManualObj)"
@change="handleControlText(remoteManualObj,'开启','停止')"
:disabled="automaticObj.collectValue"
>
</el-switch>
@ -225,7 +382,9 @@
class="context-li"
v-if="isObjectValid(timeScheduleObj) && startStopValue === 1"
>
<div class="wind-text">时间表启停:</div>
<div :class="getTextClass(timeScheduleObj, 'wind-text')">
时间表启停:
</div>
<el-switch
style="display: block"
v-model="timeScheduleObj.collectValue"
@ -233,7 +392,7 @@
inactive-color="#ff4949"
active-text="开启"
inactive-text="停止"
@change="handleControlText(timeScheduleObj)"
@change="handleControlText(timeScheduleObj,'开启','停止')"
:disabled="automaticObj.collectValue"
>
</el-switch>
@ -243,7 +402,9 @@
v-if="isObjectValid(openingBackObj)"
style="width: 2.4rem"
>
<div class="wind-text">风阀开度设置:</div>
<div :class="getTextClass(openingBackObj, 'wind-text')">
风阀开度设置:
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -263,29 +424,35 @@
</el-form>
</div>
<div class="context-li" v-if="isObjectValid(faultAlarmObj)">
<div class="wind-text">风机故障状态:</div>
<div :class="getTextClass(faultAlarmObj, 'wind-text')">
风机故障状态:
</div>
<div class="badStautus" v-if="faultAlarmObj.collectValue">故障</div>
<div class="goodStautus" v-else>正常</div>
</div>
<div class="context-li" v-if="isObjectValid(runStatusObj)">
<div class="wind-text">风机运行状态:</div>
<div :class="getTextClass(runStatusObj, 'wind-text')">
风机运行状态:
</div>
<div class="goodStautus" v-if="runStatusObj.collectValue">运行</div>
<div class="noneStautus" v-else>不运行</div>
</div>
<div class="context-li" v-if="isObjectValid(pressureObj)">
<div class="wind-text">风机压差:</div>
<div :class="getTextClass(pressureObj, 'wind-text')">风机压差:</div>
<div class="badStautus" v-if="pressureObj.collectValue">故障</div>
<div class="goodStautus" v-else>正常</div>
</div>
</div>
<div class="fan-satatus1">
<div class="context-li" v-if="isObjectValid(automaticObj)">
<div class="wind-text">风机手自动状态:</div>
<div :class="getTextClass(automaticObj, 'wind-text')">
风机手自动状态:
</div>
<div class="noneStautus" v-if="automaticObj.collectValue">手动</div>
<div class="goodStautus" v-else>自动</div>
</div>
<!-- <div class="context-li" v-if="isObjectValid(startControlObj)">
<div class="wind-text">风机启停控制</div>
<div :class="getTextClass(startControlObj, 'wind-text')">风机启停控制</div>
<el-switch
style="display: block"
v-model="startControlObj.collectValue"
@ -293,22 +460,28 @@
inactive-color="#ff4949"
active-text="开启"
inactive-text="停止"
@change="handleControlText(startControlObj)"
@change="handleControlText(startControlObj,'开启','停止')"
>
</el-switch>
</div> -->
<div class="context-li" v-if="isObjectValid(damperHzBackObj)">
<div class="wind-text">风机频率反馈:</div>
<div :class="getTextClass(damperHzBackObj, 'wind-text')">
风机频率反馈:
</div>
<div>{{ damperHzBackObj.collectValue }}Hz</div>
</div>
<div class="context-li" v-if="isObjectValid(damperHzObj)">
<div class="wind-text">风机频率调节:</div>
<div :class="getTextClass(damperHzObj, 'wind-text')">
风机频率调节:
</div>
<div>{{ Math.floor(damperHzObj.collectValue / 2) }}Hz</div>
</div>
</div>
<div class="fan-satatus2">
<div class="context-li" v-if="isObjectValid(waterValveObj)">
<div class="wind-text">水阀反馈</div>
<div :class="getTextClass(waterValveObj, 'wind-text')">
水阀反馈
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -331,7 +504,9 @@
</div>
<div class="fan-satatus2-set">
<div class="context-li" v-if="isObjectValid(waterValveObjSet)">
<div class="wind-text">水阀调节</div>
<div :class="getTextClass(waterValveObjSet, 'wind-text')">
水阀调节
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -360,7 +535,9 @@
v-if="isObjectValid(modeChangeObj)"
style="width: 2.4rem"
>
<div class="wind-text">模式选择:</div>
<div :class="getTextClass(modeChangeObj, 'wind-text')">
模式选择:
</div>
<el-select
size="mini"
v-model="modeChangeObj.collectValue"
@ -380,7 +557,9 @@
</el-select>
</div>
<div class="context-li" v-if="isObjectValid(modeOneObj)">
<div class="wind-text">宴会一厅模式-频率设定:</div>
<div :class="getTextClass(modeOneObj, 'wind-text')">
宴会一厅模式-频率设定:
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -401,7 +580,9 @@
</el-form>
</div>
<div class="context-li" v-if="isObjectValid(modeTwoObj)">
<div class="wind-text">餐厅模式-频率设定:</div>
<div :class="getTextClass(modeTwoObj, 'wind-text')">
餐厅模式-频率设定:
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -422,7 +603,9 @@
</el-form>
</div>
<div class="context-li" v-if="isObjectValid(modeThreeObj)">
<div class="wind-text">会议模式-频率设定:</div>
<div :class="getTextClass(modeThreeObj, 'wind-text')">
会议模式-频率设定:
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -443,7 +626,9 @@
</el-form>
</div>
<div class="context-li" v-if="isObjectValid(modeFourObj)">
<div class="wind-text">全开模式-频率设定:</div>
<div :class="getTextClass(modeFourObj, 'wind-text')">
全开模式-频率设定:
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -468,7 +653,11 @@
<div
class="offClass"
@click="handleOneKeyButton(remoteManualObj, '远程手动停止')"
v-if="isObjectValid(remoteManualObj) && startStopValue === 0 && !automaticObj.collectValue"
v-if="
isObjectValid(remoteManualObj) &&
startStopValue === 0 &&
!automaticObj.collectValue
"
>
<div v-if="remoteManualObj.collectValue" class="off-bg on-animation">
运行
@ -479,7 +668,11 @@
<div
class="offClass"
@click="handleOneKeyButton(timeScheduleObj, '时间表停止')"
v-if="isObjectValid(timeScheduleObj) && startStopValue === 1 && !automaticObj.collectValue"
v-if="
isObjectValid(timeScheduleObj) &&
startStopValue === 1 &&
!automaticObj.collectValue
"
>
<div v-if="timeScheduleObj.collectValue" class="off-bg on-animation">
运行
@ -615,6 +808,12 @@ export default {
damperOneBackObj: {}, //1
damperTwoBackObj: {}, //2
damperThreeBackObj: {}, //3
damperOneRemoteObj: {}, //1
damperTwoRemoteObj: {}, //2
damperThreeRemoteObj: {}, //3
damperOneManualObj: {}, //1
damperTwoManualObj: {}, //2
damperThreeManualObj: {}, //3
openingBackObj: {}, //
startStopObj: {}, //
remoteManualObj: {}, //
@ -786,6 +985,12 @@ export default {
this.damperOneBackObj = {}; //1
this.damperTwoBackObj = {}; //2
this.damperThreeBackObj = {}; //3
this.damperOneRemoteObj = {}; //1
this.damperTwoRemoteObj = {}; //2
this.damperThreeRemoteObj = {}; //3
this.damperOneManualObj = {}; //1
this.damperTwoManualObj = {}; //2
this.damperThreeManualObj = {}; //3
this.openingBackObj = {}; //
this.startStopObj = {}; //
this.remoteManualObj = {}; //
@ -913,6 +1118,54 @@ export default {
) {
this.damperThreeBackObj = item;
}
//1 01
else if (
item.paramType === "2" &&
item.collectName.includes("1号风阀远程手自动")
) {
this.damperOneRemoteObj = item;
this.damperOneRemoteObj.collectValue =
Number(item.collectValue) == 1 ? true : false;
}
//2
else if (
item.paramType === "2" &&
item.collectName.includes("2号风阀远程手自动")
) {
this.damperTwoRemoteObj = item;
this.damperTwoRemoteObj.collectValue =
Number(item.collectValue) == 1 ? true : false;
}
//3
else if (
item.paramType === "2" &&
item.collectName.includes("3号风阀远程手自动")
) {
this.damperThreeRemoteObj = item;
this.damperThreeRemoteObj.collectValue =
Number(item.collectValue) == 1 ? true : false;
}
//1
else if (
item.paramType === "3" &&
item.collectName.includes("1号风阀手动调节")
) {
this.damperOneManualObj = item;
}
//2
else if (
item.paramType === "3" &&
item.collectName.includes("2号风阀手动调节")
) {
this.damperTwoManualObj = item;
}
//3
else if (
item.paramType === "3" &&
item.collectName.includes("3号风阀手动调节")
) {
this.damperThreeManualObj = item;
}
//
else if (
item.paramType === "3" &&
@ -1067,6 +1320,12 @@ export default {
this.damperOneBackObj = {}; //1
this.damperTwoBackObj = {}; //2
this.damperThreeBackObj = {}; //3
this.damperOneRemoteObj = {}; //1
this.damperTwoRemoteObj = {}; //2
this.damperThreeRemoteObj = {}; //3
this.damperOneManualObj = {}; //1
this.damperTwoManualObj = {}; //2
this.damperThreeManualObj = {}; //3
this.openingBackObj = {}; //
this.startStopObj = {}; //
this.remoteManualObj = {}; //
@ -1094,6 +1353,11 @@ export default {
});
}
},
// quality
getTextClass(obj, claseName) {
// console.log("quality······",obj.collectName, obj.quality);
return [claseName, obj.quality !== "0" ? "alarm-text" : ""];
},
//
handleInput(item) {
console.log("校验");
@ -1188,9 +1452,9 @@ export default {
});
},
///
handleControlText(item) {
handleControlText(item, name1, name2) {
this.$confirm(
`确定要切换设备的状态为:${item.collectValue ? "开启" : "停止 吗?"}`,
`确定要切换设备的状态为:${item.collectValue ? name1 : name2}吗?`,
"提示",
{
confirmButtonText: "确定",
@ -1737,12 +2001,108 @@ export default {
margin-bottom: 0.15rem;
}
}
.wind-tem2 {
.dampers-name1 {
z-index: 10;
position: absolute;
top: 1.5rem;
left: 10.1rem;
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
font-weight: bold;
}
.dampers-position1 {
z-index: 10;
// width: 3.8rem;
position: absolute;
top: 1.1rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
font-size: 0.18rem;
.wind-text {
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
}
.back-text {
margin-right: 0.1rem;
}
}
.dampers-position2 {
z-index: 10;
// width: 3.8rem;
position: absolute;
top: 1.45rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
font-size: 0.18rem;
.wind-text {
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
}
.back-text {
margin-right: 0.1rem;
}
}
.dampers-position3 {
z-index: 10;
width: 3rem;
position: absolute;
top: 1.85rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
font-size: 0.18rem;
.wind-text {
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
}
.back-text {
margin-right: 0.1rem;
}
}
.dampers-position4 {
z-index: 10;
// width: 3.8rem;
position: absolute;
top: 2.2rem;
left: 10.55rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
font-size: 0.18rem;
.wind-text {
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
}
.back-text {
margin-right: 0.1rem;
}
}
.dampers-name2 {
z-index: 10;
position: absolute;
top: 3.3rem;
left: 10.3rem;
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
font-weight: bold;
}
.dampers-position6 {
z-index: 10;
// width: 3.57rem;
position: absolute;
top: 2.9rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
@ -1756,12 +2116,79 @@ export default {
margin-right: 0.1rem;
}
}
.wind-tem3 {
.dampers-position7 {
z-index: 10;
// width: 3.57rem;
position: absolute;
top: 3.25rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
font-size: 0.18rem;
.wind-text {
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
}
.back-text {
margin-right: 0.1rem;
}
}
.dampers-position8 {
z-index: 10;
width: 3rem;
position: absolute;
top: 3.7rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
font-size: 0.18rem;
.wind-text {
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
}
.back-text {
margin-right: 0.1rem;
}
}
.dampers-position9 {
z-index: 10;
// width: 3.57rem;
position: absolute;
top: 4.1rem;
left: 10.55rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
font-size: 0.18rem;
.wind-text {
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
}
.back-text {
margin-right: 0.1rem;
}
}
.dampers-name3 {
z-index: 10;
position: absolute;
top: 5.2rem;
left: 10.45rem;
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
font-weight: bold;
}
.dampers-position10 {
z-index: 10;
// width: 3.57rem;
position: absolute;
top: 4.8rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
@ -1775,12 +2202,50 @@ export default {
margin-right: 0.1rem;
}
}
.wind-tem4 {
.dampers-position11 {
z-index: 10;
// width: 3.57rem;
position: absolute;
top: 5.9rem;
left: 10.55rem;
top: 5.15rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
font-size: 0.18rem;
.wind-text {
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
}
.back-text {
margin-right: 0.1rem;
}
}
.dampers-position12 {
z-index: 10;
width: 3rem;
position: absolute;
top: 5.6rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
font-size: 0.18rem;
.wind-text {
color: #00d2ff;
font-size: 0.18rem;
white-space: nowrap;
}
.back-text {
margin-right: 0.1rem;
}
}
.dampers-position13 {
z-index: 10;
// width: 3.57rem;
position: absolute;
top: 6rem;
left: 12rem;
display: flex;
flex-direction: row;
align-items: center;
@ -2220,6 +2685,13 @@ export default {
.device-li {
position: relative;
}
/* 报警文字样式 */
.alarm-text {
color: red !important;
animation: blink 1s infinite;
}
// 2000px
@media (min-width: 2000px) {
.device-container {
@ -2277,6 +2749,15 @@ export default {
font-size: 15px !important;
}
}
.dampers-position2 {
top: 1.3rem !important;
}
.dampers-position7 {
top: 3.1rem !important;
}
.dampers-position11 {
top: 5rem !important;
}
}
</style>
<style scoped>
@ -2315,6 +2796,13 @@ export default {
.windC >>> .el-form-item--medium .el-form-item__content {
line-height: 0 !important;
}
.windC >>> .el-switch {
display: flex !important;
flex-wrap: nowrap !important;
}
.windC >>> .el-switch__label {
white-space: nowrap !important;
}
/* 手机端样式 */
@media (min-width: 0px) and (max-width: 990px) {
.windC >>> .el-input--mini .el-input__inner {
@ -2343,6 +2831,7 @@ export default {
.windC >>> .el-switch__core:after {
width: 0.16rem !important;
height: 0.16rem !important;
top: 0.01rem !important;
}
.windC >>> .el-switch.is-checked .el-switch__core::after {
margin-left: -0.17rem !important;

56
src/views/aircAndWindc/awSysMonitor/components/normalMonitor.vue

@ -72,7 +72,7 @@
/>
</div>
<div class="wind-tem1" v-if="isObjectValid(airSupplyObj)">
<div class="wind-text">实际回风温度</div>
<div :class="getTextClass(backAirObj, 'wind-text')">实际回风温度</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -92,7 +92,9 @@
></el-form>
</div>
<div class="wind-tem1-set" v-if="isObjectValid(airSupplyObj)">
<div class="wind-text">回风温度设置</div>
<div :class="getTextClass(backAirObjSet, 'wind-text')">
回风温度设置
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -111,7 +113,7 @@
></el-form>
</div>
<div class="wind-tem2" v-if="isObjectValid(airSupplyObj)">
<div class="wind-text">送风温度</div>
<div :class="getTextClass(airSupplyObj, 'wind-text')">送风温度</div>
<el-input
@keyup.enter.native="handleEnter(airSupplyObj, $event, '℃')"
@input="handleInput(airSupplyObj)"
@ -125,17 +127,21 @@
</div>
<div class="fan-satatus3">
<div class="context-li" v-if="isObjectValid(faultAlarmObj)">
<div class="wind-text">风机故障状态:</div>
<div :class="getTextClass(faultAlarmObj, 'wind-text')">
风机故障状态:
</div>
<div class="badStautus" v-if="faultAlarmObj.collectValue">故障</div>
<div class="goodStautus" v-else>正常</div>
</div>
<div class="context-li" v-if="isObjectValid(runStatusObj)">
<div class="wind-text">风机运行状态:</div>
<div :class="getTextClass(runStatusObj, 'wind-text')">
风机运行状态:
</div>
<div class="goodStautus" v-if="runStatusObj.collectValue">运行</div>
<div class="noneStautus" v-else>不运行</div>
</div>
<div class="context-li" v-if="isObjectValid(pressureObj)">
<div class="wind-text">风机压差:</div>
<div :class="getTextClass(pressureObj, 'wind-text')">风机压差:</div>
<div class="badStautus" v-if="pressureObj.collectValue">故障</div>
<div class="goodStautus" v-else>正常</div>
</div>
@ -153,7 +159,9 @@
</div>
<div class="fan-satatus1">
<div class="context-li" v-if="isObjectValid(automaticObj)">
<div class="wind-text">风机手自动状态</div>
<div :class="getTextClass(automaticObj, 'wind-text')">
风机手自动状态
</div>
<!-- <el-switch
style="display: block"
v-model="automaticObj.collectValue"
@ -168,7 +176,9 @@
<div class="goodStautus" v-else>自动</div>
</div>
<div class="context-li" v-if="isObjectValid(startControlObj)">
<div class="wind-text">风机启停控制</div>
<div :class="getTextClass(startControlObj, 'wind-text')">
风机启停控制
</div>
<el-switch
style="display: block"
v-model="startControlObj.collectValue"
@ -184,7 +194,9 @@
</div>
<div class="fan-satatus2">
<div class="context-li" v-if="isObjectValid(waterSupplyObj)">
<div class="wind-text">供水温度</div>
<div :class="getTextClass(waterSupplyObj, 'wind-text')">
供水温度
</div>
<el-input
@keyup.enter.native="handleEnter(waterSupplyObj, $event, '℃')"
@input="handleInput(waterSupplyObj)"
@ -197,7 +209,7 @@
</el-input>
</div>
<div class="context-li" v-if="isObjectValid(backwaterObj)">
<div class="wind-text">回水温度</div>
<div :class="getTextClass(backwaterObj, 'wind-text')">回水温度</div>
<el-input
@keyup.enter.native="handleEnter(backwaterObj, $event, '℃')"
@input="handleInput(backwaterObj)"
@ -210,7 +222,9 @@
</el-input>
</div>
<div class="context-li" v-if="isObjectValid(waterValveObj)">
<div class="wind-text">水阀调节</div>
<div :class="getTextClass(waterValveObj, 'wind-text')">
水阀调节
</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
@ -231,11 +245,13 @@
</div>
</div>
<div class="wind-valve" v-if="isObjectValid(airValveBackObj)">
<div class="wind-text">新风阀反馈</div>
<div :class="getTextClass(airValveBackObj, 'wind-text')">
新风阀反馈
</div>
<div>{{ airValveBackObj.collectValue }}%</div>
</div>
<div class="wind-valve2" v-if="isObjectValid(airValveObj)">
<div class="wind-text">新风阀调节</div>
<div :class="getTextClass(airValveObj, 'wind-text')">新风阀调节</div>
<el-input
@keyup.enter.native="handleEnter(airValveObj, $event, '%')"
@input="handleInput(airValveObj)"
@ -612,6 +628,11 @@ export default {
});
}
},
// quality
getTextClass(obj, claseName) {
// console.log("quality······",obj.collectName, obj.quality);
return [claseName, obj.quality !== "0" ? "alarm-text" : ""];
},
//
handleInput(item) {
console.log("校验");
@ -714,7 +735,7 @@ export default {
console.log("操作参数", data);
// loading
this.loading = true;
debugger
debugger;
operationConrol([data])
.then((res) => {
if (res.code == 200) {
@ -1550,6 +1571,12 @@ export default {
.device-li {
position: relative;
}
/* 报警文字样式 */
.alarm-text {
color: red !important;
animation: blink 1s infinite;
}
// 2000px
@media (min-width: 2000px) {
.device-container {
@ -1655,6 +1682,7 @@ export default {
.windC >>> .el-switch__core:after {
width: 0.16rem !important;
height: 0.16rem !important;
top: 0.01rem !important;
}
.windC >>> .el-switch.is-checked .el-switch__core::after {
margin-left: -0.17rem !important;

487
src/views/centerairC/sysMonitor/hostDetails.vue

@ -147,6 +147,9 @@
></span
>
</div>
<div class="hostStatus-li2" @click="openTimeSwitch">
偏移值定时设置
</div>
</div>
<!-- 负载 -->
<LoadData class="loadData" :hostData="hostData"></LoadData>
@ -281,6 +284,118 @@
</div>
</div>
</div>
<!-- 定时开关内容 -->
<el-dialog
title="偏移值定时设置"
:visible.sync="isOpenTimeSwitch"
append-to-body
width="800px"
class="custom-dialog"
>
<div class="dialog-content">
<div class="device-container" v-loading="loading">
<div class="device-li">
<div class="device-name">定时名称</div>
<div class="device-name">设置时间1</div>
<div class="device-name">设置时间2</div>
<div class="device-name">偏移值</div>
<div class="device-name">当前设定值</div>
<div class="device-name">最终设定值</div>
<div class="device-name">启动状态</div>
</div>
<div
class="device-li"
v-for="(item, index) in delayList"
:key="index"
:class="{ highlight: item.name.includes(currentWeekday) }"
>
<div class="device-name">{{ item.name }}</div>
<div class="device-name">
<el-form @submit.native.prevent>
<el-form-item>
<el-input
size="mini"
v-model="item.delayOpenHour"
@keyup.enter.native="
handleSwitchEnter(item, 'openHour', $event)
"
@input="handleSwitchInput(item, 'delayOpenHour', 'hour')"
></el-input> </el-form-item
></el-form>
<div class="slip">:</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
size="mini"
v-model="item.delayOpenMinute"
@keyup.enter.native="
handleSwitchEnter(item, 'openMinute', $event)
"
@input="
handleSwitchInput(item, 'delayOpenMinute', 'minute')
"
></el-input> </el-form-item
></el-form>
</div>
<div class="device-name">
<el-form @submit.native.prevent>
<el-form-item>
<el-input
size="mini"
v-model="item.delayCloseHour"
@keyup.enter.native="
handleSwitchEnter(item, 'closeHour', $event)
"
@input="handleSwitchInput(item, 'delayCloseHour', 'hour')"
></el-input></el-form-item
></el-form>
<div class="slip">:</div>
<el-form @submit.native.prevent>
<el-form-item>
<el-input
size="mini"
v-model="item.delayCloseMinute"
@keyup.enter.native="
handleSwitchEnter(item, 'closeMinute', $event)
"
@input="
handleSwitchInput(item, 'delayCloseMinute', 'minute')
"
></el-input></el-form-item
></el-form>
</div>
<!-- 三个值偏移值可输入 -->
<div class="device-name">
<el-form @submit.native.prevent>
<el-form-item>
<el-input
size="mini"
v-model="item.offsetValue"
@keyup.enter.native="
handleSwitchEnter(item, 'offset', $event)
"
@input="handleSwitchInput(item, 'offsetValue', 'offset')"
></el-input></el-form-item
></el-form>
</div>
<div class="device-name">{{ item.curValue }}</div>
<div class="device-name">{{ item.finalOutWaterTemp }}</div>
<div class="device-name">
<el-switch
style="display: block"
active-color="#13ce66"
inactive-color="#ff4949"
active-text="开启"
inactive-text="停用"
v-model="item.delayStatus"
@change="handleSwitchStatus(item)"
>
</el-switch>
</div>
</div>
</div>
</div>
</el-dialog>
</div>
</template>
@ -291,7 +406,9 @@ import {
runTime,
operationConrol,
} from "@/api/centerairC/sysMonitor";
import { policyListData } from "@/api/centerairC/strategy";
import { alarmRecordList } from "@/api/alarm/alarmRecord";
import { undateTime } from "@/api/aircAndWindc/index";
import { cpmList } from "@/api/device/gather";
import LoadData from "./components/loadData.vue";
import hostChart from "./components/hostChart.vue";
@ -326,6 +443,11 @@ export default {
isShowWarning: false, //
dayData: "", //
sharedIndex: 0,
isOpenTimeSwitch: false,
delayList: [],
currentWeekday: "",
timer: null, // ID
};
},
computed: {
@ -525,6 +647,17 @@ export default {
) {
//
this.offsetValuerControlObj = item;
// curValue
if (
this.offsetValuerControlObj.curValue !== undefined &&
!isNaN(parseFloat(this.offsetValuerControlObj.curValue))
) {
// curValue
this.offsetValuerControlObj.curValue = parseInt(
this.offsetValuerControlObj.curValue,
10
);
}
}
});
}
@ -704,12 +837,11 @@ export default {
//
handleInput(item) {
console.log("校验");
//
let input = String(item).replace(/[^\d.]/g, "");
//
if (input.startsWith(".")) {
//
input = input.slice(1);
//
let input = String(item).replace(/[^\d]/g, "");
// 0 1 0
if (input.startsWith("0") && input.length > 1) {
input = input.replace(/^0+/, "");
}
this.offsetValuerControlObj.curValue = input;
},
@ -726,7 +858,7 @@ export default {
//
event.target.blur();
this.$confirm(
`确定要修改冷水设定值偏移10V的温度为:${item.curValue} ℃吗?`,
`确定要修改冷水设定值偏移的温度为:${item.curValue} ℃吗?`,
"提示",
{
confirmButtonText: "确定",
@ -740,6 +872,7 @@ export default {
.catch(() => {
//
// this.$emit("upList");
this.getHostDetailsData();
});
},
//
@ -773,6 +906,285 @@ export default {
this.getHostDetailsData();
});
},
//
openTimeSwitch() {
this.isOpenTimeSwitch = true;
this.getPolicyList();
},
//
getPolicyList() {
return new Promise((resolve, reject) => {
let data = {
systemType: "0",
funPolicyType: "4",
};
policyListData(data)
.then((res) => {
console.log("设备定时开关返回res", res);
if (res.code === 200) {
let handleList = res.rows;
this.delayList = [];
handleList.forEach((element, index) => {
if (element.values && element.values.length > 0) {
//
let delayItem = {
name: element.name,
};
const limitedChildren = element.values;
limitedChildren.forEach((child) => {
// console.log("${index}_", `${index}_`);
// console.log("child.pointName", child.pointName);
if (child.pointName) {
// 1-
if (child.pointName.includes(`偏移值设置时间${index + 1}-时1`)) {
// console.log("-·························");
delayItem.delayOpenHour = child.curValue;
delayItem.delayOpenHourId = child.id;
}
// 1-
else if (
child.pointName.includes(`偏移值设置时间${index + 1}-分1`)
) {
delayItem.delayOpenMinute = child.curValue;
delayItem.delayOpenMinuteId = child.id;
}
// 2-
else if (
child.pointName.includes(`偏移值设置时间${index + 1}-时2`)
) {
delayItem.delayCloseHour = child.curValue;
delayItem.delayCloseHourId = child.id;
}
// 2-
else if (
child.pointName.includes(`偏移值设置时间${index + 1}-分2`)
) {
delayItem.delayCloseMinute = child.curValue;
delayItem.delayCloseMinuteId = child.id;
}
//
else if (child.pointName.includes(`偏移值${index + 1}`)) {
delayItem.offsetValue = child.curValue;
delayItem.offsetValueId = child.id;
}
//
else if (child.pointName.includes("出水温度设置")) {
delayItem.curValue = child.curValue;
delayItem.curValueId = child.id;
}
//
else if (child.pointName.includes(`启动标志`)) {
delayItem.delayStatus =
Number(child.curValue) == 0 ? false : true;
delayItem.delayStatusId = child.id;
}
}
});
//
const offsetValue =
delayItem.offsetValue !== null &&
delayItem.offsetValue !== ""
? parseFloat(delayItem.offsetValue)
: NaN;
const curValue =
delayItem.curValue !== null && delayItem.curValue !== ""
? parseFloat(delayItem.curValue)
: NaN;
if (!isNaN(offsetValue) && !isNaN(curValue)) {
delayItem.finalOutWaterTemp = offsetValue + curValue;
}
// delayList
if (Object.keys(delayItem).length > 1) {
this.delayList.push(delayItem);
}
}
});
console.log("处理后的数组", this.delayList);
// this.delayList = res.rows;
} else {
this.delayList = [];
}
// Promise
resolve(res);
})
.catch((error) => {
// Promise
reject(error);
});
});
},
//
handleSwitchInput(item, propertyName, name) {
console.log("校验", item[propertyName]);
//
if (item[propertyName] === "") {
return;
}
let isValid = true;
//
let inputValue = String(item[propertyName]).replace(/[^\d]/g, "");
if (name === "hour") {
isValid =
!isNaN(inputValue) &&
parseInt(inputValue) >= 0 &&
parseInt(inputValue) <= 23;
if (!isValid) {
this.$message.error("输入值在0-23区间,请重新输入");
item[propertyName] = "";
return;
}
} else if (name === "minute") {
isValid =
!isNaN(inputValue) &&
parseInt(inputValue) >= 0 &&
parseInt(inputValue) <= 59;
if (!isValid) {
this.$message.error("输入值在0-59区间,请重新输入");
item[propertyName] = "";
return;
}
} else if (name === "offset") {
isValid = !isNaN(inputValue) && parseInt(inputValue) >= 0;
if (!isValid) {
this.$message.error("输入值大于0,请重新输入");
item[propertyName] = "";
return;
}
}
item[propertyName] = inputValue;
},
handleSwitchEnter(item, name, event) {
console.log("item", item);
console.log("接收到的事件对象:", event);
//
if (event && event.preventDefault) {
event.preventDefault();
}
//
event.target.blur();
let id = "";
let value = "";
let title = "";
let unit = "";
if (name === "openHour") {
id = item.delayOpenHourId;
value = item.delayOpenHour;
title = "设置时间1-小时";
unit = "时";
} else if (name === "openMinute") {
id = item.delayOpenMinuteId;
value = item.delayOpenMinute;
title = "设置时间1-分钟";
unit = "分";
} else if (name === "closeHour") {
id = item.delayCloseHourId;
value = item.delayCloseHour;
title = "设置时间2-小时";
unit = "时";
} else if (name === "closeMinute") {
id = item.delayCloseMinuteId;
value = item.delayCloseMinute;
title = "设置时间2-分钟";
unit = "分";
} else if (name === "offset") {
id = item.offsetValueId;
value = item.offsetValue;
title = "偏移值";
unit = "";
}
if (value === "") {
this.$message.warning("请输入当前设置值!");
return;
}
console.log("请求后端", item);
this.$confirm(
`确定要把"${item.name}"的${title}设置为:${value} ${unit}吗?`,
"提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
)
.then(() => {
// console.log("id",id)
this.handleSwitchOperationConrol(id, value);
})
.catch(() => {
//
this.getPolicyList();
});
},
handleSwitchOperationConrol(id, param) {
let data = {
policyId: id,
timeValue: param,
};
// console.log("", data);
// loading
this.loading = true;
undateTime(data)
.then((res) => {
if (res.code == 200) {
this.$modal.msgSuccess("指令下发成功!");
// loading
// this.loading = true;
// ;
setTimeout(() => {
this.getPolicyList();
// loading
this.loading = false;
}, 500);
} else {
// loading
this.loading = false;
// this.$modal.msgError("");
console.log("应该更新状态的");
// ;
this.getPolicyList();
}
})
.catch((error) => {
// loading
this.loading = false;
console.log("请求发生错误,更新设备状态", error);
// ;
this.getPolicyList();
});
},
//
handleSwitchStatus(item) {
this.$confirm(
`确定要切换"${item.name}"的状态为:${
item.delayStatus ? "开启" : "停用 吗?"
}`,
"提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
)
.then(() => {
//
console.log("请求后台", item.delayStatus);
let param = null;
if (item.delayStatus) {
param = 1;
} else {
param = 0;
}
this.handleSwitchOperationConrol(item.delayStatusId, param);
})
.catch(() => {
//
item.delayStatus = !item.delayStatus;
console.log("不请求后台");
});
},
},
};
</script>
@ -893,7 +1305,7 @@ export default {
align-items: center;
justify-content: space-between;
.detail-top-left {
height: 4.4rem;
height: 4.8rem;
// background-color: aquamarine;
position: relative;
.host-img1 {
@ -1003,6 +1415,23 @@ export default {
white-space: nowrap;
}
}
.hostStatus-li2 {
background-color: #136bf0;
color: #ffffff;
font-size: 0.16rem;
margin-bottom: 0.1rem;
padding: 0.1rem;
letter-spacing: 0.02rem;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
border-radius: 0.1rem;
cursor: pointer;
}
.hostStatus-li2:hover {
background-color: #217af0;
}
}
.water-flow3 {
z-index: 10;
@ -1089,7 +1518,7 @@ export default {
}
.detail-top-right {
width: calc(100% - 7.6rem);
height: 4.4rem;
height: 4.8rem;
// background-color: rgb(127, 172, 255);
}
}
@ -1354,25 +1783,51 @@ export default {
align-items: center;
}
.goodData >>> .el-input {
width: 0.5rem !important;
width: 1rem !important;
}
.goodData >>> .el-input--mini .el-input__inner {
height: 0.28rem !important;
line-height: 20.28rem !important;
padding: 0 !important;
}
.goodData >>> .el-input__inner {
background: transparent !important;
border: 1px solid transparent !important;
color: #3df574 !important;
font-weight: bold;
box-shadow: none !important;
}
.goodData >>> .el-input__suffix {
color: #3df574 !important;
font-weight: bold;
right: -0.02rem !important;
right: 0.05rem !important;
height: 100% !important;
top: -0.01rem !important;
}
.device-name:nth-child(3) {
margin-left: 30px !important;
}
.device-name {
justify-content: center !important;
align-items: center !important;
}
.device-name .slip {
margin: 0 5px;
}
.device-name >>> .el-form {
width: 50px !important;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
flex-wrap: nowrap;
}
.device-name >>> .el-form-item {
margin-bottom: 0 !important;
}
.device-name >>> .el-input {
width: 50px !important;
}
.device-name {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
flex-wrap: nowrap;
}
</style>

20
src/views/index.vue

@ -67,47 +67,47 @@
<div class="special-title">项目概况</div>
</div>
<div class="overview">
<div class="overview-li">
<div class="overview-li" @click="goEnergy">
<div>总耗电量(kwh)</div>
<div class="overview-details">{{ projectView.totalEle }}</div>
</div>
<div class="overview-li">
<div class="overview-li" @click="goEnergy">
<div>总热水补水()</div>
<div class="overview-details">
{{ projectView.totalWater }}
</div>
</div>
<div class="overview-li">
<div class="overview-li" @click="goEnergy">
<div>总蒸汽流量()</div>
<div class="overview-details">
{{ projectView.totalGas }}
</div>
</div>
<div class="overview-li">
<div class="overview-li" @click="goEnergy">
<div>总产冷量(kw)</div>
<div class="overview-details">
{{ projectView.totalCold }}
</div>
</div>
<div class="overview-li">
<div class="overview-li" @click="goEnergy">
<div>今年耗电量(kwh)</div>
<div class="overview-details">
{{ projectView.yearEle }}
</div>
</div>
<div class="overview-li">
<div class="overview-li" @click="goEnergy">
<div>今年热水补水()</div>
<div class="overview-details">
{{ projectView.yearWater }}
</div>
</div>
<div class="overview-li">
<div class="overview-li" @click="goEnergy">
<div>今年蒸汽流量()</div>
<div class="overview-details">
{{ projectView.yearGas }}
</div>
</div>
<div class="overview-li">
<div class="overview-li" @click="goEnergy">
<div>今年产冷量(kw)</div>
<div class="overview-details">
{{ projectView.yearCold }}
@ -381,6 +381,9 @@ export default {
}
});
},
goEnergy(){
this.$router.push("/comprehensiveEnergy/systemEnergy")
},
//chartInstance
initChart() {
this.chartInstance = echarts.init(this.$refs.charts_ref);
@ -707,6 +710,7 @@ export default {
align-items: center;
flex-wrap: wrap;
.overview-li {
cursor: pointer;
width: calc(25%);
height: 1.65rem;
display: flex;

Loading…
Cancel
Save