Browse Source

1.修改首页资料显示位置;“冷源系统”改为"系统用量趋势";风柜系统的"停止数"改为"关闭数"

2.中央空调-系统监测页面放开湿球温度;系统性能添加“热平衡率”
3.中央空调-主机详情彻底过滤掉重复值
4.中央空调-系统控制页面,把阀门的阀开反馈和阀关反馈合并为阀门状态
5.调整设备策略、设备延时开关的字体和图片样式
meizhou
selia-zx 2 weeks ago
parent
commit
3dc7eaf353
  1. 4
      .env.development
  2. BIN
      src/assets/images/valve.png
  3. 55
      src/views/centerairC/delaySwitch/index.vue
  4. 3
      src/views/centerairC/deviceStrategy/index.vue
  5. 54
      src/views/centerairC/sysControl/vavleheader.vue
  6. 117
      src/views/centerairC/sysMonitor/hostDetails.vue
  7. 35
      src/views/centerairC/sysMonitor/monitorCenter.vue
  8. 8
      src/views/components/aircAndWindcMeter.vue
  9. 26
      src/views/index.vue

4
.env.development

@ -7,9 +7,9 @@ ENV = 'development'
# 开发环境 # 开发环境
# VUE_APP_BASE_API = '/dev-api' # VUE_APP_BASE_API = '/dev-api'
# 后台 # 后台
# VUE_APP_BASE_API = 'http://192.168.1.222:8080' VUE_APP_BASE_API = 'http://192.168.1.222:8081'
# 梅州云端 # 梅州云端
VUE_APP_BASE_API = 'http://106.55.173.225:8091' # VUE_APP_BASE_API = 'http://106.55.173.225:8091'
# 路由懒加载 # 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true VUE_CLI_BABEL_TRANSPILE_MODULES = true

BIN
src/assets/images/valve.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 815 KiB

55
src/views/centerairC/delaySwitch/index.vue

@ -1,11 +1,11 @@
<template> <template>
<div class="app-container" v-loading="loading"> <div class="app-container" v-loading="loading">
<img <!-- <img
class="right-line" class="right-line"
src="../../../assets/images/right_line.png" src="../../../assets/images/right_line.png"
alt="" alt=""
/> /> -->
<div class="delay-title">自动开关机时间设置</div> <!-- <div class="delay-title">自动开关机时间设置</div> -->
<div class="delaySwitch"> <div class="delaySwitch">
<div class="delay-li" v-for="(item, index) in delayList" :key="index"> <div class="delay-li" v-for="(item, index) in delayList" :key="index">
<div class="buildingDiv"> <div class="buildingDiv">
@ -65,7 +65,7 @@
<img <img
v-if="children.pointName.includes('主机')" v-if="children.pointName.includes('主机')"
src="../../../assets/images/host.png" src="../../../assets/images/host.png"
class="butterflyValve" class="hostImg"
alt="" alt=""
/> />
<img <img
@ -77,7 +77,13 @@
<img <img
v-if="children.pointName.includes('阀')" v-if="children.pointName.includes('阀')"
src="../../../assets/images/butterflyValve.png" src="../../../assets/images/butterflyValve.png"
class="butterflyValve" class="valveImg"
alt=""
/>
<img
v-if="children.pointName.includes('泵')"
src="../../../assets/images/valve.png"
class="pumpImg"
alt="" alt=""
/> />
</div> </div>
@ -160,7 +166,7 @@
</div> </div>
</div> </div>
</div> </div>
<img class="left-line" src="../../../assets/images/left_line.png" alt="" /> <!-- <img class="left-line" src="../../../assets/images/left_line.png" alt="" /> -->
</div> </div>
</template> </template>
@ -318,7 +324,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.app-container { .app-container {
position: relative; position: relative;
padding: 20px; padding: 0px;
.delay-title { .delay-title {
/* 基础样式 */ /* 基础样式 */
display: inline-block; display: inline-block;
@ -429,7 +435,7 @@ export default {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: flex-start; align-items: flex-start;
padding: 40px 0; padding: 25px 0;
border-bottom: 1px dashed #0349ac; border-bottom: 1px dashed #0349ac;
.buildingDiv { .buildingDiv {
padding-left: 54px; padding-left: 54px;
@ -501,13 +507,37 @@ export default {
min-width: 150px; min-width: 150px;
} }
.butterflyValve { .butterflyValve {
width: 70px; width: 120px;
height: 70px; height: 120px;
margin-top: 10px; margin-top: 10px;
padding: 5px; padding: 5px;
border-radius: 5px; border-radius: 5px;
background-color: #2c4970; background-color: #2c4970;
} }
.hostImg {
width: 130px;
height: 130px;
margin-top: 10px;
padding: 5px;
border-radius: 5px;
background-color: #2c4970;
}
.valveImg {
width: 120px;
height: 120px;
margin-top: 10px;
padding: 5px;
border-radius: 5px;
background-color: #2c4970;
}
.pumpImg {
width: 120px;
height: 120px;
margin-top: 10px;
padding: 5px 20px;
border-radius: 5px;
background-color: #2c4970;
}
.device-arrow { .device-arrow {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -541,7 +571,7 @@ export default {
} }
.closeLast { .closeLast {
margin-top: -22px; margin-top: -22px;
margin-left: 275px; margin-left: 300px;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: flex-start; align-items: flex-start;
@ -733,10 +763,11 @@ export default {
.delay-input >>> .el-input__inner { .delay-input >>> .el-input__inner {
background-color: #04193a; background-color: #04193a;
border: 1px solid #1262db; border: 1px solid #1262db;
color: #3ef0fd;
font-weight: 700; font-weight: 700;
text-align: center; text-align: center;
padding: 0 0.1rem !important; padding: 0 0.1rem !important;
color: #3efdf3;
font-size: 17px !important;
} }
/* // 媒体查询,适配大于2000px分辨率的大屏样式 */ /* // 媒体查询,适配大于2000px分辨率的大屏样式 */
@media (min-width: 2000px) { @media (min-width: 2000px) {

3
src/views/centerairC/deviceStrategy/index.vue

@ -531,10 +531,11 @@ export default {
.policy-li >>> .el-input__inner { .policy-li >>> .el-input__inner {
background-color: #04193a; background-color: #04193a;
border: 1px solid #1262db; border: 1px solid #1262db;
color: #3ef0fd; color: #3efdf3;
font-weight: 700; font-weight: 700;
text-align: center; text-align: center;
padding: 0 0.1rem !important; padding: 0 0.1rem !important;
font-size: 17px !important;
} }
.policy-li >>> .el-radio { .policy-li >>> .el-radio {
margin-bottom: 5px; margin-bottom: 5px;

54
src/views/centerairC/sysControl/vavleheader.vue

@ -4,8 +4,7 @@
<div class="device-name">设备名称</div> <div class="device-name">设备名称</div>
<div class="device-name">手自动切换</div> <div class="device-name">手自动切换</div>
<div class="device-name">手动控制</div> <div class="device-name">手动控制</div>
<div class="device-name">阀开反馈</div> <div class="device-name">阀门状态</div>
<div class="device-name">阀关反馈</div>
</div> </div>
<div class="device-li" v-for="(item, index) in valveList" :key="index"> <div class="device-li" v-for="(item, index) in valveList" :key="index">
<div class="device-name">{{ item.name }}</div> <div class="device-name">{{ item.name }}</div>
@ -34,15 +33,8 @@
</el-switch> </el-switch>
</div> </div>
<div class="device-name"> <div class="device-name">
<div :class="item.openStauts === '关闭' ? 'bad-status' : 'good-status'"> <div :class="getValveStatusClass(item)">
{{ item.openStauts }} {{ getValveStatusText(item) }}
</div>
</div>
<div class="device-name">
<div
:class="item.closeStatus === '关闭' ? 'bad-status' : 'good-status'"
>
{{ item.closeStatus }}
</div> </div>
</div> </div>
</div> </div>
@ -58,7 +50,30 @@ export default {
}, },
}, },
methods: { methods: {
// /**
* 根据阀开反馈和阀关反馈获取阀门状态文案
* 开阀阀开反馈=开启阀关反馈=关闭
* 关阀阀开反馈=关闭阀关反馈=开启
* 开关阀中阀开反馈=关闭阀关反馈=关闭
* 其他
*/
getValveStatusText(item) {
const openStatus = item.openStauts;
const closeStatus = item.closeStatus;
if (openStatus === '开启' && closeStatus === '关闭') return '全开';
if (openStatus === '关闭' && closeStatus === '开启') return '全关';
if (openStatus === '关闭' && closeStatus === '关闭') return '执行中';
return '';
},
/** 获取阀门状态的样式类 */
getValveStatusClass(item) {
const text = this.getValveStatusText(item);
if (text === '全开') return 'valve-open';
if (text === '全关') return 'valve-close';
if (text === '执行中') return 'valve-switching';
return '';
},
/** 手动控制 */
handleControlText(item) { handleControlText(item) {
this.$confirm( this.$confirm(
`确定要切换设备"${item.name}"的状态为:${ `确定要切换设备"${item.name}"的状态为:${
@ -125,4 +140,19 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
/** 开阀 - 绿色 */
.valve-open {
color: #13ce66;
font-weight: bold;
}
/** 关阀 - 红色 */
.valve-close {
color: #ff4949;
font-weight: bold;
}
/** 开关阀中 - 橙色 */
.valve-switching {
color: #e6a23c;
font-weight: bold;
}
</style> </style>

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

@ -596,91 +596,85 @@ export default {
let data = res.rows; let data = res.rows;
data.forEach((item) => { data.forEach((item) => {
if (item.mtType === "0") { if (item.mtType === "0") {
// /** 所有主机参数(不过滤) */
this.hostData = item.list; this.hostData = item.list;
//
this.leftHostData = []; /** 先处理左边面板需要提取的特定数据项 */
this.rightHostData = [];
// paramType
// this.rightHostData = this.hostData.filter((item) => {
// return !["2", "21", "20", "6", "5", "22", "26"].includes(
// Number(item.paramType)
// );
// });
this.rightHostData = this.hostData.filter((item) => {
const specificParamTypes = [26];
// paramType
const isSpecificParamType = specificParamTypes.includes(
Number(item.paramType)
);
const isCombinedCondition0 =
Number(item.paramType) === 2 &&
item.otherName.includes("手动启停");
// item.paramType 12 otherName ""
const isCombinedCondition1 =
Number(item.paramType) === 12 &&
item.otherName.includes("冷水控制设定值");
const isCombinedCondition2 =
Number(item.paramType) === 12 &&
item.otherName.includes("用户冷水设定值");
const isCombinedCondition3 =
Number(item.paramType) === 12 &&
item.otherName.includes("冷冻水偏移值设置");
// false
return (
!isSpecificParamType &&
!isCombinedCondition0 &&
!isCombinedCondition1 &&
!isCombinedCondition2 &&
!isCombinedCondition3
);
});
// ordernum
this.rightHostData.sort((a, b) => {
return Number(a.orderNum) - Number(b.orderNum);
});
this.hostData.forEach((item) => { this.hostData.forEach((item) => {
// paramType showValue
if ( if (
item.paramType === "22" && item.paramType === "22" &&
item.otherName.includes("远程启动信号") item.otherName.includes("远程启动信号")
) { ) {
// - /** 远程开关机-手动启停 */
// item.showValue =
// Number(item.curValue) === 0 ? "" : "";
this.onOffObj = item; this.onOffObj = item;
} else if (item.paramType === "26") { } else if (item.paramType === "26") {
// /** 累计运行时间 */
this.timeObj = item; this.timeObj = item;
} else if ( } else if (
item.paramType === "12" && item.paramType === "12" &&
item.otherName.includes("冷水控制设定值") item.otherName.includes("冷水控制设定值")
) { ) {
// /** 本地出水温度设定值 */
this.coldWaterSetObj = item; this.coldWaterSetObj = item;
} else if ( } else if (
item.paramType === "12" && item.paramType === "12" &&
item.otherName.includes("用户冷水设定值") item.otherName.includes("用户冷水设定值")
) { ) {
// /** 远程出水温度设定值 */
this.coldWaterControlObj = item; this.coldWaterControlObj = item;
} else if ( } else if (
item.paramType === "12" && item.paramType === "12" &&
item.otherName.includes("冷冻水偏移值设置") item.otherName.includes("冷冻水偏移值设置")
) { ) {
// /** 偏移值设定 */
this.offsetValuerControlObj = item; this.offsetValuerControlObj = item;
// curValue
if ( if (
this.offsetValuerControlObj.curValue !== undefined && this.offsetValuerControlObj.curValue !== undefined &&
!isNaN(parseFloat(this.offsetValuerControlObj.curValue)) !isNaN(parseFloat(this.offsetValuerControlObj.curValue))
) { ) {
// curValue 10 /** 将 curValue 转换为整数并除以 10 */
this.offsetValuerControlObj.curValue = this.offsetValuerControlObj.curValue =
parseInt(this.offsetValuerControlObj.curValue, 10) / 10; parseInt(this.offsetValuerControlObj.curValue, 10) / 10;
} }
} }
}); });
/**
* 右侧主机参数需要排除的项配置
* 每一项格式{ paramType: number, otherName?: string }
* - 只配置 paramType排除该 paramType 的所有项
* - 同时配置 otherName排除 paramType 匹配且 otherName 包含该字符串的项
* 如需新增过滤项只需在数组中追加即可
*/
const excludeList = [
{ paramType: 22, otherName: "远程启动信号" },
{ paramType: 26 }, //
{ paramType: 12, otherName: "冷水控制设定值" },
{ paramType: 12, otherName: "用户冷水设定值" },
{ paramType: 12, otherName: "冷冻水偏移值设置" },
{ paramType: 2, otherName: "冷水机组运行" },
{ paramType: 1, otherName: "运行" },
{ paramType: 5, otherName: "故障" },
{ paramType: 20, }, //
{ paramType: 21, },//
{ paramType: 28, },//
];
/** 生成右侧主机参数:过滤掉排除项,再按 orderNum 排序 */
this.rightHostData = this.hostData
.filter((dataItem) => {
return !excludeList.some((rule) => {
const typeMatch =
Number(dataItem.paramType) === rule.paramType;
if (rule.otherName !== undefined) {
return (
typeMatch && dataItem.otherName.includes(rule.otherName)
);
}
return typeMatch;
});
})
.sort((a, b) => Number(a.orderNum) - Number(b.orderNum));
} }
}); });
// 使 filter item '0' // 使 filter item '0'
@ -807,21 +801,22 @@ export default {
return true; return true;
} }
break; break;
case "6": // // case "6": //
if (item.curValue === "自动") { // if (item.curValue === "") {
return true; // return true;
} // }
break; // break;
case "22": // // case "22": //
if (item.curValue === "远程") { // if (item.curValue === "") {
return true; // return true;
} // }
break; break;
default: default:
return false; return false;
break; break;
} }
} else { } else {
// 2021curValue0true
if (item.paramType === paramType && Number(item.curValue) !== 0) { if (item.paramType === paramType && Number(item.curValue) !== 0) {
return true; return true;
} }

35
src/views/centerairC/sysMonitor/monitorCenter.vue

@ -72,12 +72,12 @@
<span>室外露点</span> <span>室外露点</span>
<span class="deepColor">{{ weatherObj.dewPointTemp }}</span> <span class="deepColor">{{ weatherObj.dewPointTemp }}</span>
<span></span> <span></span>
</div> </div> -->
<div class="weather-li"> <div class="weather-li">
<span>室外湿球</span> <span>室外湿球</span>
<span class="deepColor">{{ weatherObj.wetBulbTemp }}</span> <span class="deepColor">{{ weatherObj.wetBulbTemp }}</span>
<span></span> <span></span>
</div> --> </div>
</div> </div>
<!-- 系统性能数据 --> <!-- 系统性能数据 -->
<div class="performance"> <div class="performance">
@ -98,6 +98,11 @@
<span class="deepColor">{{ performanceObj.realCold }}</span> <span class="deepColor">{{ performanceObj.realCold }}</span>
<span>kw</span> <span>kw</span>
</div> </div>
<div class="weather-li">
<span>热平衡率</span>
<span class="deepColor">{{ performanceObj.heatBalance }}</span>
<span>%</span>
</div>
<div class="weather-li"> <div class="weather-li">
<span>全年EER</span> <span>全年EER</span>
<span class="deepColor">{{ performanceObj.yearEER }}</span> <span class="deepColor">{{ performanceObj.yearEER }}</span>
@ -629,6 +634,8 @@
<!-- 冷却进出水温度 --> <!-- 冷却进出水温度 -->
<div class="coolingInTem">{{ coolingInTem }}</div> <div class="coolingInTem">{{ coolingInTem }}</div>
<div class="coolingOutTem">{{ coolingOutTem }}</div> <div class="coolingOutTem">{{ coolingOutTem }}</div>
<!-- 冷却水流流量 -->
<div class="coolingOutWater">{{ coolingOutWater }}/h</div>
<!-- 报警状态与系统模式 --> <!-- 报警状态与系统模式 -->
<div class="statusAndModel" v-if="isWarning"> <div class="statusAndModel" v-if="isWarning">
<img src="../../../assets/images/red.png" class="warnStatus" alt="" /> <img src="../../../assets/images/red.png" class="warnStatus" alt="" />
@ -1168,6 +1175,8 @@ export default {
// //
coolingInTem: "", coolingInTem: "",
coolingOutTem: "", coolingOutTem: "",
//
coolingOutWater: "",
// //
isWarning: false, isWarning: false,
@ -2501,6 +2510,8 @@ export default {
this.coolingOutTem = item.collectValue; this.coolingOutTem = item.collectValue;
} else if (item.collectName === "冷却回水温度") { } else if (item.collectName === "冷却回水温度") {
this.coolingInTem = item.collectValue; this.coolingInTem = item.collectValue;
} else if (item.collectName === "总冷却冷量计瞬时流量") {
this.coolingOutWater = item.collectValue;
} else if (item.collectName === "总冷量计瞬时流量") { } else if (item.collectName === "总冷量计瞬时流量") {
this.freezingOutWater = item.collectValue; this.freezingOutWater = item.collectValue;
} }
@ -3285,6 +3296,14 @@ export default {
font-size: 0.16rem; font-size: 0.16rem;
font-weight: bold; font-weight: bold;
} }
.coolingOutWater {
z-index: 10;
position: absolute;
top: 3.5rem;
left: 5.85rem;
font-size: 0.16rem;
font-weight: bold;
}
.freezingInTem { .freezingInTem {
z-index: 10; z-index: 10;
position: absolute; position: absolute;
@ -4127,6 +4146,12 @@ export default {
border-top: 1px solid transparent; border-top: 1px solid transparent;
border-bottom: 1px dashed #1a3f8f; border-bottom: 1px dashed #1a3f8f;
position: relative; position: relative;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
span {
white-space: nowrap;
}
.deepColor { .deepColor {
display: inline-block; display: inline-block;
margin: 0 0.1rem 0 0.05rem; margin: 0 0.1rem 0 0.05rem;
@ -4142,8 +4167,8 @@ export default {
.performance { .performance {
position: absolute; position: absolute;
top: 6.1rem !important; top: 5.7rem !important;
right: -0.6rem !important; right: -0.72rem !important;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: flex-start; align-items: flex-start;
@ -4151,7 +4176,7 @@ export default {
font-size: 0.16rem; font-size: 0.16rem;
} }
.perdformance-bg { .perdformance-bg {
width: 2.85rem; width: 3rem;
z-index: 10; z-index: 10;
display: flex; display: flex;
flex-direction: column; flex-direction: column;

8
src/views/components/aircAndWindcMeter.vue

@ -163,7 +163,7 @@ export default {
name: "风柜系统:", name: "风柜系统:",
data: [ data: [
{ value: this.chartData1, name: "运行数" }, { value: this.chartData1, name: "运行数" },
{ value: this.chartData2, name: "停止数" }, { value: this.chartData2, name: "关闭数" },
], ],
itemStyle: { itemStyle: {
color: function (params) { color: function (params) {
@ -177,7 +177,7 @@ export default {
{ {
data: [ data: [
{ value: this.chartData1, name: "运行数" }, { value: this.chartData1, name: "运行数" },
{ value: this.chartData2, name: "停止数" }, { value: this.chartData2, name: "关闭数" },
], ],
}, },
], ],
@ -268,7 +268,7 @@ export default {
name: "风柜系统:", name: "风柜系统:",
data: [ data: [
{ value: 0, name: "运行数" }, { value: 0, name: "运行数" },
{ value: 0, name: "停止数" }, { value: 0, name: "关闭数" },
], ],
itemStyle: { itemStyle: {
color: function (params) { color: function (params) {
@ -282,7 +282,7 @@ export default {
{ {
data: [ data: [
{ value: 0, name: "运行数" }, { value: 0, name: "运行数" },
{ value: 0, name: "停止数" }, { value: 0, name: "关闭数" },
], ],
}, },
], ],

26
src/views/index.vue

@ -27,26 +27,26 @@
<div class="project-left"> <div class="project-left">
<img <img
class="left-icon" class="left-icon"
src="../assets/images/project-icon2.png" src="../assets/images/project-icon3.png"
alt="" alt=""
/> />
<div class="project-name">建筑面积</div> <div class="project-name">运营地址</div>
</div>
<div class="project-right">{{ projectObj.proAddr }}</div>
</div> </div>
<div class="project-right">{{ projectObj.buildingArea }}</div>
</div> </div>
<div class="project-li">
<div class="list-con"> <div class="list-con">
<div class="project-left"> <div class="project-left">
<img <img
class="left-icon" class="left-icon"
src="../assets/images/project-icon3.png" src="../assets/images/project-icon2.png"
alt="" alt=""
/> />
<div class="project-name">运营地址</div> <div class="project-name">建筑面积</div>
</div>
<div class="project-right">{{ projectObj.proAddr }}</div>
</div> </div>
<div class="project-right">{{ projectObj.buildingArea }}</div>
</div> </div>
<div class="project-li">
<div class="list-con"> <div class="list-con">
<div class="project-left"> <div class="project-left">
<img <img
@ -117,7 +117,7 @@
</div> </div>
<div class="special-div" style="width: 39%"> <div class="special-div" style="width: 39%">
<div class="special-top"> <div class="special-top">
<div class="special-title">冷源系统</div> <div class="special-title">系统用量趋势</div>
</div> </div>
<view-energy></view-energy> <view-energy></view-energy>
</div> </div>
@ -381,8 +381,8 @@ export default {
} }
}); });
}, },
goEnergy(){ goEnergy() {
this.$router.push("/comprehensiveEnergy/systemEnergy") this.$router.push("/comprehensiveEnergy/systemEnergy");
}, },
//chartInstance //chartInstance
initChart() { initChart() {
@ -647,10 +647,10 @@ export default {
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: flex-start; align-items: center;
padding: 0.35rem; padding: 0.35rem;
.project-img { .project-img {
width: 1.4rem; width: 1.7rem;
height: 1.4rem; height: 1.4rem;
border-radius: 0.1rem; border-radius: 0.1rem;
border: solid 1px #0163a8; border: solid 1px #0163a8;

Loading…
Cancel
Save