Browse Source

添加蒸汽锅炉监测、采暖泵监测静态页面

meizhou
selia-zx 4 days ago
parent
commit
97f715ea6b
  1. 4
      .env.development
  2. 1
      src/assets/icons/svg/boilerSys.svg
  3. 1
      src/assets/icons/svg/heatingPump.svg
  4. BIN
      src/assets/images/alarm.png
  5. BIN
      src/assets/images/badValve.png
  6. BIN
      src/assets/images/blade1.png
  7. BIN
      src/assets/images/blade2.png
  8. BIN
      src/assets/images/boiler.png
  9. BIN
      src/assets/images/boilerWork.gif
  10. BIN
      src/assets/images/green-out.png
  11. BIN
      src/assets/images/heatingPump.png
  12. BIN
      src/assets/images/noalarm (2).png
  13. BIN
      src/assets/images/stopValve.png
  14. BIN
      src/assets/images/whiteFan.png
  15. BIN
      src/assets/images/workValve.png
  16. 47
      src/store/modules/permission.js
  17. 1272
      src/views/boilerSys/boilerMonitor/boilerMonitorDetails.vue
  18. 20
      src/views/boilerSys/boilerMonitor/index.vue
  19. 1009
      src/views/boilerSys/heatingPump/heatingPumpDetails.vue
  20. 20
      src/views/boilerSys/heatingPump/index.vue
  21. 269
      src/views/boilerSys/hotWaterBoiler/hotWaterBoilerDetails.vue
  22. 20
      src/views/boilerSys/hotWaterBoiler/index.vue
  23. 130
      src/views/hotWater/waterControl/index.vue

4
.env.development

@ -7,9 +7,9 @@ ENV = 'development'
# 开发环境
# 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:8080'
# 梅州云端
# 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

1
src/assets/icons/svg/boilerSys.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1757379307805" class="icon" viewBox="0 0 1335 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1517" xmlns:xlink="http://www.w3.org/1999/xlink" width="260.7421875" height="200"><path d="M1233.548986 825.047188V692.461449C1293.801739 651.456928 1335.652174 562.176 1335.652174 458.722319c0-137.676058-73.935768-250.078609-167.179131-257.335652v-0.415537l-165.917681-25.822608V115.533913h-56.750376v50.665739L810.889275 139.664696V75.790841h-60.697971v54.494608L514.285449 87.010319V0h-66.337391v76.636754l-105.768812-16.458203v0.296811c60.549565 8.221681 103.231072 167.045565 96.048232 359.780174-7.182841 192.734609-61.677449 347.863188-122.672232 351.573334l87.188406-2.849392v40.158609l-159.016811 8.102956v66.841971l370.554434-30.660637 1.409855 25.555478-195.628521 13.341681 23.240348 11.353044v113.975652l861.792463-106.733449v-84.027363l-34.934724-4.541217-36.61171 2.700985z m-553.360696-32.218898v-34.489507l160.975768-6.678261v32.085333l-160.975768 9.082435zM528.517565 204.503188l27.870609-13.623652v-0.845913l1.409855 0.148406 0.430377-0.148406v0.281971l147.737971 23.552v295.787594l-145.91258-4.11084-31.551072 3.546898V204.503188z m-53.099594 600.791189l8.310725-39.179131 125.19513-4.11084 2.122203 36.478145-135.642899 6.826666z m204.770319 38.882319l269.148753-24.976696v-40.870957l-43.52742 2.270609 4.927073-31.22458 231.824695-14.766376 15.909102 93.822145-478.133797 42.859594-0.148406-27.098899z m-406.854493-73.579595c-56.008348-2.122203-97.458087-133.179362-99.980985-302.955594l-35.008928-2.700985c-21.563362 8.934029-17.066667 54.895304-17.066667 54.895304H0c0-138.150957 105.160348-144.814377 105.160348-144.814377l70.848927 1.27629c12.184116-180.134957 65.402435-319.280232 123.785276-316.994782 62.033623 2.404174 106.421797 163.528348 99.135072 359.973101-7.271884 196.429913-63.562203 353.740058-125.595826 351.321043zM250.227014 320.853333c-11.620174 0-21.696928 22.973217-26.742724 56.869102l30.942609 0.712348-0.281971 92.620058-30.245102-1.27629c4.897391 32.204058 14.988986 54.168116 26.327188 54.168116 16.384 0 29.681159-45.516058 29.68116-101.539247 0-56.023188-13.297159-101.554087-29.68116-101.554087z" fill="" p-id="1518"></path></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

1
src/assets/icons/svg/heatingPump.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1757380960233" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3007" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M428.8 704h153.6c236.8-134.4 57.6-339.2 25.6-358.4 12.8 25.6 12.8 64-6.4 76.8-38.4-128-121.6-160-121.6-160 12.8 70.4-38.4 147.2-83.2 204.8 0-25.6-6.4-44.8-19.2-70.4-6.4 44.8-44.8 89.6-51.2 140.8-19.2 64 6.4 115.2 102.4 166.4z m0 0" fill="" p-id="3008"></path><path d="M1024 76.8H512c-57.6 0-115.2 12.8-166.4 32-51.2 25.6-102.4 57.6-140.8 96-38.4 38.4-70.4 83.2-96 140.8-19.2 51.2-32 108.8-32 166.4 0 57.6 12.8 115.2 32 166.4 6.4 19.2 12.8 32 25.6 51.2H0v217.6h512c57.6 0 115.2-12.8 166.4-32s96-51.2 140.8-96c38.4-38.4 70.4-83.2 96-140.8 25.6-51.2 32-108.8 32-166.4 0-76.8-19.2-153.6-57.6-217.6H1024V76.8M460.8 896H51.2v-115.2h185.6c-12.8-12.8-32-32-44.8-51.2-38.4-64-64-134.4-64-217.6 0-211.2 172.8-384 384-384h460.8v115.2h-179.2l32 38.4C870.4 352 896 428.8 896 512c0 211.2-172.8 384-384 384h-51.2z m0 0" fill="" p-id="3009"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/assets/images/alarm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
src/assets/images/badValve.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
src/assets/images/blade1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
src/assets/images/blade2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
src/assets/images/boiler.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

BIN
src/assets/images/boilerWork.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

BIN
src/assets/images/green-out.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

BIN
src/assets/images/heatingPump.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

BIN
src/assets/images/noalarm (2).png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
src/assets/images/stopValve.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
src/assets/images/whiteFan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
src/assets/images/workValve.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

47
src/store/modules/permission.js

@ -40,6 +40,7 @@ const permission = {
const rewriteRoutes = filterAsyncRouter(rdata, false, true);
const asyncRoutes = filterDynamicRoutes(dynamicRoutes);
rewriteRoutes.push({ path: "*", redirect: "/404", hidden: true });
// 有中央空调
// 如果动态的路由有中央空调-系统监控-系统监测页面,那就添加一个hidden为true非Layout的大屏页面
const result = checkRouteArray(
sidebarRoutes,
@ -119,6 +120,52 @@ const permission = {
// console.log("不满足条件");
}
// 锅炉
const result3 = sidebarRoutes.find(
(item) => item.name === "BoilerSys"
);
if (result3) {
// 定义要添加的多个路由对象数组
const additionalRoutes3 = [
{
path: "/boilerMonitorDetails",
name: "boilerMonitorDetails",
hidden: true,
component: () =>
import(
"@/views/boilerSys/boilerMonitor/boilerMonitorDetails"
),
meta: { title: "锅炉监控", icon: "screen" },
},
{
path: "/hotWaterBoilerDetails",
name: "hotWaterBoilerDetails",
hidden: true,
component: () =>
import(
"@/views/boilerSys/hotWaterBoiler/hotWaterBoilerDetails"
),
meta: { title: "热水锅炉监控", icon: "screen" },
},
{
path: "/heatingPumpDetails",
name: "heatingPumpDetails",
hidden: true,
component: () =>
import("@/views/boilerSys/heatingPump/heatingPumpDetails"),
meta: { title: "采暖泵监控", icon: "screen" },
},
// 可以继续添加更多路由对象
];
// 循环添加额外的路由对象到各路由数组
additionalRoutes3.forEach((route) => {
sidebarRoutes.push(route);
rewriteRoutes.push(route);
asyncRoutes.push(route);
});
} else {
// console.log("不满足条件");
}
commit("SET_ROUTES", rewriteRoutes);
commit("SET_SIDEBAR_ROUTERS", constantRoutes.concat(sidebarRoutes));
commit("SET_DEFAULT_ROUTES", sidebarRoutes);

1272
src/views/boilerSys/boilerMonitor/boilerMonitorDetails.vue

File diff suppressed because it is too large Load Diff

20
src/views/boilerSys/boilerMonitor/index.vue

@ -0,0 +1,20 @@
<template>
<div></div>
</template>
<script>
export default {
created() {
this.toPage();
},
methods: {
toPage() {
console.log("需要跳转的")
//
this.$router.push("/boilerMonitorDetails")
},
},
};
</script>
<style></style>

1009
src/views/boilerSys/heatingPump/heatingPumpDetails.vue

File diff suppressed because it is too large Load Diff

20
src/views/boilerSys/heatingPump/index.vue

@ -0,0 +1,20 @@
<template>
<div></div>
</template>
<script>
export default {
created() {
this.toPage();
},
methods: {
toPage() {
console.log("需要跳转的")
//
this.$router.push("/heatingPumpDetails")
},
},
};
</script>
<style></style>

269
src/views/boilerSys/hotWaterBoiler/hotWaterBoilerDetails.vue

@ -0,0 +1,269 @@
<template>
<div class="monitor" v-loading="loading">
<div class="monitor-top">
<img
class="title-left"
src="../../../assets/images/title-left.png"
alt=""
/>
<img
class="title-center"
src="../../../assets/images/title-center.png"
alt=""
/>
<img
class="title-right"
src="../../../assets/images/title-right.png"
alt=""
/>
<div class="sys-title">热水锅炉监测</div>
<!-- logo -->
<img src="../../../assets/images/logo-3.png" class="sys-logo" alt="" />
<div class="nowTime">{{ formattedDate }}</div>
<div class="monitor-time">已监测时长:{{ dayData }}</div>
<img
class="icon_warning"
src="../../../assets/images/warning.png"
title="报警记录"
@click="goWarning"
v-if="isShowWarning"
alt=""
/>
<img
class="icon_home"
src="../../../assets/images/icon_home.png"
title="首页"
@click="goSys"
alt=""
/>
<img
class="back-icon"
src="../../../assets/images/back-icon.png"
title="返回"
@click="goBack"
alt=""
/>
</div>
</div>
</template>
<script>
import { runTime } from "@/api/centerairC/sysMonitor";
import { alarmRecordList } from "@/api/alarm/alarmRecord";
import { getDay } from "@/utils/datetime";
export default {
name: "boilerMonitorDetails",
data() {
return {
loading: false,
currentDate: new Date(),
nowTimer: null,
isShowWarning: false, //
dayData: "", //
currentWeekday: "",
};
},
computed: {
formattedDate() {
const year = this.currentDate.getFullYear();
const month = String(this.currentDate.getMonth() + 1).padStart(2, "0");
const day = String(this.currentDate.getDate()).padStart(2, "0");
const hours = String(this.currentDate.getHours()).padStart(2, "0");
const minutes = String(this.currentDate.getMinutes()).padStart(2, "0");
const seconds = String(this.currentDate.getSeconds()).padStart(2, "0");
const weekDays = [
"星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
];
const weekDay = weekDays[this.currentDate.getDay()];
return `${year}${month}${day}${hours}:${minutes}:${seconds} ${weekDay}`;
},
},
created() {
const weekdays = [
"星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
];
const date = new Date();
const dayIndex = date.getDay();
this.currentWeekday = weekdays[dayIndex];
console.log("今天是星期几", this.currentWeekday);
},
mounted() {
this.getAlarnStatus();
this.getDayData();
},
beforeDestroy() {
//
if (this.nowTimer) {
clearInterval(this.nowTimer);
}
},
methods: {
//
goSys() {
this.$router.push("/");
},
//
goBack() {
window.history.go(-2);
},
//
getDayData() {
runTime().then((res) => {
if (res.code == 200) {
this.dayData = res.data.runTime;
}
});
},
//
getAlarnStatus() {
let data = {
pageNum: 1,
pageSize: 10,
status: "0",
};
let timeArr = [getDay(0), getDay(0)];
alarmRecordList(this.addDateRange(data, timeArr)).then((res) => {
if (res.code == 200 && res.rows.length > 0) {
this.isShowWarning = true;
} else {
this.isShowWarning = false;
}
});
},
goWarning() {
this.$router.push("/alarm/alarmRecord");
},
},
};
</script>
<style lang="scss" scoped>
.monitor {
width: 100%;
min-height: 100vh;
background-color: black;
color: #fff;
.monitor-top {
width: 100%;
display: flex;
flex-direction: row;
align-items: flex-start;
justify-content: space-between;
flex-wrap: nowrap;
padding: 0.1rem 0.2rem;
position: relative;
.title-left {
width: 3.41rem;
height: 0.8rem;
}
.title-center {
width: 9.46rem;
height: 0.69rem;
}
.title-right {
width: 5.04rem;
height: 0.61rem;
}
.sys-title {
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 0.28rem;
color: #ffffff;
font-weight: bold;
z-index: 100;
}
.nowTime {
position: absolute;
top: 0.3rem;
right: 0.6rem;
font-size: 0.18rem;
color: #ffffff;
font-weight: bold;
z-index: 100;
}
.sys-logo {
width: 1.8rem;
height: 0.5rem;
position: absolute;
top: 0.26rem;
left: 0.8rem;
z-index: 10;
}
.monitor-time {
position: absolute;
top: 0.44rem;
left: 4.2rem;
z-index: 10;
font-size: 0.18rem;
color: #ffffff;
font-weight: bold;
}
.icon_warning {
position: absolute;
top: 0.33rem;
right: 4.4rem;
z-index: 10;
width: 0.3rem;
height: 0.27rem;
margin: 0 0.25rem 0 0.27rem;
cursor: pointer;
/* 添加闪烁动画 */
animation: blink 1s infinite;
}
@keyframes blink {
100% {
opacity: 1;
}
50% {
opacity: 0;
}
}
.icon_home {
position: absolute;
top: 0.33rem;
right: 4rem;
z-index: 10;
width: 0.3rem;
height: 0.27rem;
margin: 0 0.2rem 0 0.27rem;
cursor: pointer;
}
.back-icon {
position: absolute;
top: 0.33rem;
right: 3.7rem;
z-index: 10;
width: 0.3rem;
height: 0.27rem;
cursor: pointer;
}
}
}
</style>
<style scoped>
.special-div .special-title {
padding-left: 0.36rem !important;
font-size: 0.2rem !important;
line-height: 0.23rem !important;
background-size: 1.4rem 0.35rem !important;
background-position: 0px -0.03rem !important;
}
.special-div .special-top {
padding: 0.04rem 0.26rem 0.04rem 0px;
min-height: 0.37rem;
}
</style>

20
src/views/boilerSys/hotWaterBoiler/index.vue

@ -0,0 +1,20 @@
<template>
<div></div>
</template>
<script>
export default {
created() {
this.toPage();
},
methods: {
toPage() {
console.log("需要跳转的")
//
this.$router.push("/hotWaterBoilerDetails")
},
},
};
</script>
<style></style>

130
src/views/hotWater/waterControl/index.vue

@ -461,15 +461,10 @@
</div>
</div>
</div>
<!-- 高区中厨中区裙楼 -->
<!-- 中厨裙楼 -->
<div
class="monitor-flex-left"
v-if="
activeName === '裙楼' ||
activeName === '中厨' ||
activeName === '高区' ||
activeName === '中区'
"
v-if="activeName === '裙楼' || activeName === '中厨'"
>
<div class="control-top">
<img
@ -587,6 +582,127 @@
</div> -->
</div>
</div>
<!-- 高区中区 -->
<div
class="monitor-flex-left"
v-if="activeName === '高区' || activeName === '中区'"
>
<div class="control-top">
<img
class="monitor-img2"
src="../../../assets/images/startpum.png"
/>
<div class="monitor-words">
<div class="words-li">
<div class="ash" style="letter-spacing: 8px">一键启动:</div>
<div class="white">
<el-switch
style="display: block"
v-model="item.openSwitch"
active-color="#13ce66"
active-text="开启"
inactive-text="停止"
@change="handleAllStart(item)"
>
</el-switch>
</div>
</div>
<!-- <div class="words-li">
<div class="ash">停止:</div>
<div class="white">
<el-switch
style="display: block"
v-model="item.closeSwitch"
active-color="#13ce66"
active-text=""
inactive-text=""
@change="handleAllEnd(item)"
>
</el-switch>
</div>
</div> -->
</div>
</div>
<div class="control-bottom">
<div class="words-li words-li3">
<div class="ash">供水温度:</div>
<div class="white">{{ item.temp }}</div>
</div>
<div class="words-li words-li4">
<div class="ash">供水温度设定:</div>
<el-input
v-model="item.tempSet"
size="mini"
@keyup.enter.native="
handleEnter(
item,
item.tempSet,
item.tempSetId,
'供水温度设定',
'℃'
)
"
@input="handleInput(item)"
@blur="handleBlur()"
></el-input>
<div class="white"></div>
</div>
<div class="words-li words-li3">
<div class="ash">供水压力</div>
<div class="white">{{ item.pressure }}bar</div>
</div>
<div class="words-li words-li4">
<div class="ash">温度偏差值:</div>
<el-input
v-model="item.diffValueSet"
@keyup.enter.native="
handleEnter(
item,
item.diffValueSet,
item.diffValueSetId,
'温度偏差值',
'℃'
)
"
@input="handleInput(item)"
@blur="handleBlur()"
size="mini"
></el-input>
<div class="white"></div>
</div>
<div class="words-li words-li3">
<div class="ash">故障信息:</div>
<el-tag
size="mini"
v-if="item.alarmStatus === '无故障'"
type="success"
>{{ item.alarmStatus }}</el-tag
>
<el-tag size="mini" v-else type="danger">{{
item.alarmStatus
}}</el-tag>
</div>
<div class="words-li words-li4">
<div class="ash">补水延时时间设定:</div>
<el-input
v-model="item.delayTimeSet"
@keyup.enter.native="
handleEnter(
item,
item.delayTimeSet,
item.delayTimeSetId,
'补水延时时间设定',
'S'
)
"
@input="handleInput(item)"
@blur="handleBlur()"
size="mini"
></el-input>
<div class="white">S</div>
</div>
</div>
</div>
</div>
</div>
</div>

Loading…
Cancel
Save