Compare commits

..

16 Commits

  1. 6
      .env.development
  2. 2
      .env.production
  3. 4
      package.json
  4. 29
      src/App.vue
  5. 27
      src/api/boiler/boilerRunReport.js
  6. 27
      src/api/boiler/heatingPump.js
  7. 27
      src/api/boiler/heatingRunPeport.js
  8. 10
      src/api/boiler/hotwaterBoiler.js
  9. 10
      src/api/boiler/steamBoiler.js
  10. 27
      src/api/centerairC/hostRunReport.js
  11. 1
      src/assets/icons/svg/boilerSys.svg
  12. 1
      src/assets/icons/svg/heatingPump.svg
  13. 1
      src/assets/icons/svg/hotPumpLog.svg
  14. 1
      src/assets/icons/svg/hz-icon.svg
  15. 1
      src/assets/icons/svg/meterRecord.svg
  16. BIN
      src/assets/images/alarm.png
  17. BIN
      src/assets/images/badValve.png
  18. BIN
      src/assets/images/blade1.png
  19. BIN
      src/assets/images/blade2.png
  20. BIN
      src/assets/images/boiler.png
  21. BIN
      src/assets/images/boilerWork.gif
  22. BIN
      src/assets/images/detail-line.png
  23. 0
      src/assets/images/fenggui.png
  24. BIN
      src/assets/images/fenggui2.png
  25. BIN
      src/assets/images/gasStop.png
  26. BIN
      src/assets/images/gasWork.png
  27. BIN
      src/assets/images/green-out.png
  28. BIN
      src/assets/images/heatingPump.png
  29. BIN
      src/assets/images/host-img2222.png
  30. BIN
      src/assets/images/host-img4.png
  31. BIN
      src/assets/images/host-img6.png
  32. BIN
      src/assets/images/hotWater.png
  33. BIN
      src/assets/images/meizhou.png
  34. BIN
      src/assets/images/noalarm (2).png
  35. BIN
      src/assets/images/steamHeating.png
  36. BIN
      src/assets/images/stopValve.png
  37. BIN
      src/assets/images/whiteFan.png
  38. BIN
      src/assets/images/workValve.png
  39. 4
      src/assets/styles/bigScreen.scss
  40. 22
      src/assets/styles/element-ui.scss
  41. 7
      src/assets/styles/index.scss
  42. 14
      src/assets/styles/sidebar.scss
  43. 100
      src/permission.js
  44. 210
      src/store/modules/permission.js
  45. 53
      src/utils/fullscreen.js
  46. 2
      src/utils/request.js
  47. 721
      src/views/aircAndWindc/awSysMonitor/asSysMonitorDetails.vue
  48. 3043
      src/views/aircAndWindc/awSysMonitor/components/damperMonitor.vue
  49. 1749
      src/views/aircAndWindc/awSysMonitor/components/normalMonitor.vue
  50. 1676
      src/views/aircAndWindc/awSysMonitor/index.vue
  51. 6
      src/views/alarm/alarmCode/index.vue
  52. 4
      src/views/alarm/alarmRecord/index.vue
  53. 27
      src/views/alarm/alarmRule/index.vue
  54. 25
      src/views/bigScreen/bigScreen.vue
  55. 54
      src/views/bigScreen/components/allEnergy.vue
  56. 17
      src/views/bigScreen/components/coldSysEnergy.vue
  57. 2
      src/views/bigScreen/components/timeData.vue
  58. 8
      src/views/bigScreen/components/useElect.vue
  59. 15
      src/views/bigScreen/components/waterSysEnergy.vue
  60. 1107
      src/views/boilerSys/boilerMonitor/boilerMonitorDetails.vue
  61. 20
      src/views/boilerSys/boilerMonitor/index.vue
  62. 497
      src/views/boilerSys/boilerRunReport/index.vue
  63. 1013
      src/views/boilerSys/heatingPump/heatingPumpDetails.vue
  64. 20
      src/views/boilerSys/heatingPump/index.vue
  65. 649
      src/views/boilerSys/heatingRunReport/index.vue
  66. 703
      src/views/boilerSys/hotWaterBoiler/hotWaterBoilerDetails.vue
  67. 20
      src/views/boilerSys/hotWaterBoiler/index.vue
  68. 120
      src/views/boilerSys/steamHeating/components/lineChildren.vue
  69. 20
      src/views/boilerSys/steamHeating/index.vue
  70. 1432
      src/views/boilerSys/steamHeating/steamHeatingDetails.vue
  71. 32
      src/views/centerairC/delaySwitch/index.vue
  72. 69
      src/views/centerairC/deviceStrategy/index.vue
  73. 41
      src/views/centerairC/enSourceAnalysis/components/deviceEnergy.vue
  74. 43
      src/views/centerairC/enSourceAnalysis/components/equipment.vue
  75. 11
      src/views/centerairC/enSourceAnalysis/components/machineRoom.vue
  76. 49
      src/views/centerairC/energyAnalysis/components/energyAnalysis.vue
  77. 9
      src/views/centerairC/energyAnalysis/components/qnqAnalysis.vue
  78. 9
      src/views/centerairC/energyAnalysis/components/ynyAnalysis.vue
  79. 9
      src/views/centerairC/energyAnalysis/components/ynyQnqAnalysis.vue
  80. 911
      src/views/centerairC/hostRunReport/index.vue
  81. 19
      src/views/centerairC/overview/index.vue
  82. 11
      src/views/centerairC/sysMonitor/components/hostChart.vue
  83. 8
      src/views/centerairC/sysMonitor/components/loadData.vue
  84. 1413
      src/views/centerairC/sysMonitor/hostDetails.vue
  85. 2178
      src/views/centerairC/sysMonitor/monitorCenter.vue
  86. 185
      src/views/centerairC/sysMonitor/performance.vue
  87. 430
      src/views/centerairC/temHistoryQuery/index.vue
  88. 2
      src/views/centerairC/timeSwitch/index.vue
  89. 53
      src/views/components/hotWater.vue
  90. 38
      src/views/components/viewColdSys.vue
  91. 13
      src/views/components/viewEnergy.vue
  92. 377
      src/views/comprehensiveEnergy/meterRecord/index.vue
  93. 777
      src/views/comprehensiveEnergy/systemEnergy/index.vue
  94. 6
      src/views/device/comm/index.vue
  95. 3
      src/views/device/gateway/index.vue
  96. 14
      src/views/device/gather/index.vue
  97. 12
      src/views/device/ledger/index.vue
  98. 4
      src/views/device/maintenance/index.vue
  99. 15
      src/views/device/qrCode/index.vue
  100. 39
      src/views/device/spare/index.vue
  101. Some files were not shown because too many files have changed in this diff Show More

6
.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:8080'
# 梅州云端 # 海湾酒店-云端
VUE_APP_BASE_API = 'http://106.55.173.225:8091' # VUE_APP_BASE_API = 'http://106.55.173.225:8090'
# 路由懒加载 # 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true VUE_CLI_BABEL_TRANSPILE_MODULES = true

2
.env.production

@ -7,4 +7,4 @@ ENV = 'production'
# 生产环境 # 生产环境
# VUE_APP_BASE_API = '/prod-api' # VUE_APP_BASE_API = '/prod-api'
# 后台 # 后台
VUE_APP_BASE_API = 'http://106.55.173.225:8091' VUE_APP_BASE_API = 'http://106.55.173.225:8090'

4
package.json

@ -59,8 +59,7 @@
"vue-meta": "2.4.0", "vue-meta": "2.4.0",
"vue-router": "3.4.9", "vue-router": "3.4.9",
"vuedraggable": "2.24.3", "vuedraggable": "2.24.3",
"vuex": "3.6.0", "vuex": "3.6.0"
"xlsx": "^0.18.5"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "4.4.6", "@vue/cli-plugin-babel": "4.4.6",
@ -73,7 +72,6 @@
"connect": "3.6.6", "connect": "3.6.6",
"eslint": "7.15.0", "eslint": "7.15.0",
"eslint-plugin-vue": "7.2.0", "eslint-plugin-vue": "7.2.0",
"html-webpack-plugin": "^5.6.3",
"lint-staged": "10.5.3", "lint-staged": "10.5.3",
"runjs": "4.4.2", "runjs": "4.4.2",
"sass": "1.32.13", "sass": "1.32.13",

29
src/App.vue

@ -7,37 +7,18 @@
<script> <script>
import ThemePicker from "@/components/ThemePicker"; import ThemePicker from "@/components/ThemePicker";
import { exitFullscreen, isFullscreen } from "@/utils/fullscreen";
export default { export default {
name: "App", name: "App",
components: { ThemePicker }, components: { ThemePicker },
metaInfo() { metaInfo() {
return { return {
title: title: this.$store.state.settings.dynamicTitle && this.$store.state.settings.title,
this.$store.state.settings.dynamicTitle && titleTemplate: title => {
this.$store.state.settings.title, return title ? `${title} - ${process.env.VUE_APP_TITLE}` : process.env.VUE_APP_TITLE
titleTemplate: (title) => { }
return title }
? `${title} - ${process.env.VUE_APP_TITLE}`
: process.env.VUE_APP_TITLE;
},
};
},
mounted() {
// Esc 退
window.addEventListener("keydown", this.handleKeyDown);
},
beforeDestroy() {
window.removeEventListener("keydown", this.handleKeyDown);
},
methods: {
handleKeyDown(event) {
if (event.key === "Escape" && isFullscreen()) {
exitFullscreen();
} }
},
},
}; };
</script> </script>
<style scoped> <style scoped>

27
src/api/boiler/boilerRunReport.js

@ -1,27 +0,0 @@
import request from "@/utils/request";
// 查询运行记录
export function boilerSysList(data) {
return request({
url: "/reportSteam/list",
method: "post",
data,
});
}
// 编辑运行记录
export function boilerSysEdit(data) {
return request({
url: "/reportSteam/edit",
method: "put",
data,
});
}
// 导出
export function boilerSysExport(data) {
return request({
url: "/reportSteam/export",
method: "post",
data,
responseType: "blob",
});
}

27
src/api/boiler/heatingPump.js

@ -1,27 +0,0 @@
import request from "@/utils/request";
// 采暖泵列表
export function heatPumpList(query) {
return request({
url: "/device/heatPump/list",
method: "get",
params: query,
});
}
// 采暖泵在线情况
export function heatPumpOnlineList(query) {
return request({
url: "/device/heatPump/online",
method: "get",
params: query,
});
}
// 采暖泵报警列表
export function heatPumpAlarmList(query) {
return request({
url: "/device/heatPump/alarmList",
method: "get",
params: query,
});
}

27
src/api/boiler/heatingRunPeport.js

@ -1,27 +0,0 @@
import request from "@/utils/request";
// 查询运行记录
export function boilerSysList(data) {
return request({
url: "/reportHeating/list",
method: "post",
data,
});
}
// 编辑运行记录
export function boilerSysEdit(data) {
return request({
url: "/reportHeating/edit",
method: "put",
data,
});
}
// 导出
export function boilerSysExport(data) {
return request({
url: "/reportHeating/export",
method: "post",
data,
responseType: "blob",
});
}

10
src/api/boiler/hotwaterBoiler.js

@ -1,10 +0,0 @@
import request from "@/utils/request";
// 热水锅炉设备参数列表
export function hotWaterBoiler(query) {
return request({
url: "/device/hotWaterBoiler/list",
method: "get",
params: query,
});
}

10
src/api/boiler/steamBoiler.js

@ -1,10 +0,0 @@
import request from "@/utils/request";
// 蒸汽锅炉设备参数列表
export function steamBoilerBoiler(query) {
return request({
url: "/device/steamBoiler/list",
method: "get",
params: query,
});
}

27
src/api/centerairC/hostRunReport.js

@ -1,27 +0,0 @@
import request from "@/utils/request";
// 查询运行记录
export function reportSysList(data) {
return request({
url: "/reportSys/list",
method: "post",
data,
});
}
// 编辑运行记录
export function reportSysEdit(data) {
return request({
url: "/reportSys/edit",
method: "put",
data,
});
}
// 导出
export function reportSysExport(data) {
return request({
url: "/reportSys/export",
method: "post",
data,
responseType: 'blob',
});
}

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

@ -1 +0,0 @@
<?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>

Before

Width:  |  Height:  |  Size: 2.3 KiB

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

@ -1 +0,0 @@
<?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>

Before

Width:  |  Height:  |  Size: 1.1 KiB

1
src/assets/icons/svg/hotPumpLog.svg

@ -1 +0,0 @@
<?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="1761181457603" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5548" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M670.208 223.053H193.183v0.017c-24.374 0.412-44.02 20.636-44.02 45.549 0 24.914 19.64 45.139 44.02 45.55v0.016h477.025c24.719 0 44.765-20.402 44.765-45.566 0-25.163-20.046-45.566-44.765-45.566zM395.732 439.798h-202.55v0.023c-24.374 0.406-44.02 20.635-44.02 45.543 0 24.914 19.64 45.143 44.02 45.55v0.015h202.556c24.719 0 44.76-20.395 44.76-45.565 0.001-25.164-20.04-45.566-44.766-45.566zM276.261 658.512h-83.083v0.022c-24.374 0.406-44.014 20.636-44.014 45.544 0 24.913 19.64 45.144 44.014 45.55v0.017h83.083c24.719 0 44.759-20.397 44.759-45.566 0-25.165-20.041-45.567-44.759-45.567z m0 0" p-id="5549"></path><path d="M715.201 1.954H148.93C67.141 1.954 0.84 68.257 0.84 150.043v724.501c0 81.786 66.301 148.09 148.09 148.09h241.713v-0.084c0.695 0.033 1.386 0.049 2.081 0.049 25.164 0 45.566-20.396 45.566-45.566 0-25.163-20.402-45.565-45.566-45.565-0.695 0-1.392 0.023-2.081 0.056v-0.021H148.93c-31.455 0-56.958-25.503-56.958-56.957V150.043c0-31.461 25.503-56.958 56.958-56.958h566.271c31.46 0 56.957 25.497 56.957 56.958V320.46c0 25.164 20.402 45.566 45.566 45.566 25.169 0 45.566-20.402 45.566-45.566V150.043c0.001-81.786-66.302-148.089-148.089-148.089z m0 0" p-id="5550"></path><path d="M676.148 840.226c-7.364 0-14.695-2.041-21.226-6.091-11.942-7.409-19.073-20.219-19.073-34.271V652.755c0-14.056 7.131-26.865 19.073-34.269 11.942-7.41 26.593-8.099 39.181-1.853l128.683 73.556c13.817 6.856 22.405 20.697 22.405 36.121 0 15.417-8.588 29.263-22.405 36.12l-128.683 73.557c-5.707 2.831-11.841 4.239-17.955 4.239z m0 0" p-id="5551"></path><path d="M726.854 430.13c-163.575 0-296.181 132.605-296.181 296.18s132.605 296.18 296.181 296.18c163.574 0 296.179-132.604 296.179-296.18S890.429 430.13 726.854 430.13z m0 501.227c-113.248 0-205.048-91.805-205.048-205.047s91.8-205.047 205.048-205.047c113.241 0 205.047 91.805 205.047 205.047s-91.805 205.047-205.047 205.047z m0 0" p-id="5552"></path></svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

1
src/assets/icons/svg/hz-icon.svg

@ -1 +0,0 @@
<?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="1758105515572" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7076" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M480.256 16.384C219.648 16.384 8.192 227.84 8.192 488.448c0 260.608 211.456 472.064 472.064 472.064 260.608 0 472.064-211.456 472.064-472.064 0.512-260.608-210.944-472.064-472.064-472.064z m0 881.664c-225.792 0-409.088-183.296-409.088-409.088 0-225.792 183.296-409.088 409.088-409.088 225.792 0 409.088 183.296 409.088 409.088 0.512 225.792-182.784 409.088-409.088 409.088z" p-id="7077"></path><path d="M203.264 281.088h50.688v160.256h199.68V281.088h50.688v383.488h-50.688V484.864h-199.68v179.712h-50.688V281.088zM562.176 625.664l160.768-199.68h-152.576v-40.448H778.24v40.448l-158.72 198.144h165.888l-7.68 40.448h-215.552v-38.912z" p-id="7078"></path></svg>

Before

Width:  |  Height:  |  Size: 990 B

1
src/assets/icons/svg/meterRecord.svg

@ -1 +0,0 @@
<?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="1761011231553" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2521" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M925.425633 514.798111a38.910648 38.910648 0 0 0-25.59911-9.727662 38.398666 38.398666 0 0 0-28.415013 12.543564l-138.747178 153.594662a62.973812 62.973812 0 0 0-62.973812 62.973812 38.398666 38.398666 0 0 0 0 5.631804l-28.926995 31.742897a38.398666 38.398666 0 0 0 56.830026 51.198221l24.319155-26.879066a69.373589 69.373589 0 0 0 10.239644 0 62.973812 62.973812 0 0 0 63.229802-63.229802A66.045705 66.045705 0 0 0 793.590215 716.775092l106.74829-117.243926a214.008563 214.008563 0 1 1-167.674173-80.893189 38.398666 38.398666 0 0 0 0-76.797331 291.061886 291.061886 0 1 0 192.50531 72.701474z" p-id="2522"></path><path d="M365.317097 732.902532a367.859217 367.859217 0 0 1 367.603226-367.603226 112.124104 112.124104 0 0 1 38.398666 6.655769v-207.352795a38.398666 38.398666 0 0 0-38.398666-38.398666H455.681957V63.997776A63.997776 63.997776 0 0 0 391.684181 0H64.015567A63.997776 63.997776 0 0 0 0.017791 63.997776v921.567976A38.398666 38.398666 0 0 0 38.416457 1023.964417h470.51165a366.835252 366.835252 0 0 1-143.61101-291.061885zM293.639588 793.572423H167.179982a38.398666 38.398666 0 0 1 0-76.797331h126.459606a38.398666 38.398666 0 0 1 0 76.797331z m0-255.991104H167.179982a38.398666 38.398666 0 0 1 0-76.797331h126.459606a38.398666 38.398666 0 0 1 0 76.797331z m0-255.991104H167.179982a38.398666 38.398666 0 0 1 0-76.797332h126.459606a38.398666 38.398666 0 0 1 0 76.797332z" p-id="2523"></path></svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

BIN
src/assets/images/alarm.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

BIN
src/assets/images/badValve.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

BIN
src/assets/images/blade1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

BIN
src/assets/images/blade2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

BIN
src/assets/images/boiler.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

BIN
src/assets/images/boilerWork.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 KiB

BIN
src/assets/images/detail-line.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

0
src/assets/images/fenggui1.png → src/assets/images/fenggui.png

Before

Width:  |  Height:  |  Size: 576 KiB

After

Width:  |  Height:  |  Size: 576 KiB

BIN
src/assets/images/fenggui2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 KiB

BIN
src/assets/images/gasStop.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

BIN
src/assets/images/gasWork.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

BIN
src/assets/images/heatingPump.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 KiB

BIN
src/assets/images/host-img2222.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 531 KiB

BIN
src/assets/images/host-img4.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 307 KiB

After

Width:  |  Height:  |  Size: 531 KiB

BIN
src/assets/images/host-img6.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 MiB

BIN
src/assets/images/hotWater.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

BIN
src/assets/images/meizhou.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 MiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

BIN
src/assets/images/steamHeating.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 MiB

BIN
src/assets/images/stopValve.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

BIN
src/assets/images/whiteFan.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

BIN
src/assets/images/workValve.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

4
src/assets/styles/bigScreen.scss

@ -679,6 +679,10 @@
.el-card__header { .el-card__header {
padding: 0.14rem 0.15rem 0.07rem !important; padding: 0.14rem 0.15rem 0.07rem !important;
min-height: 0.4rem !important; min-height: 0.4rem !important;
}
.el-form-item__error {
font-size: 0.12rem !important;
padding-top: 0.04rem !important;
} }
} }
@media (min-width: 2000px) { @media (min-width: 2000px) {

22
src/assets/styles/element-ui.scss

@ -1430,7 +1430,7 @@
min-width: 50px !important; min-width: 50px !important;
z-index: 0; z-index: 0;
} }
.el-input__suffix { .el-input__suffix{
z-index: 10; z-index: 10;
} }
.el-cascader__tags { .el-cascader__tags {
@ -1439,23 +1439,3 @@
align-items: center; align-items: center;
flex-wrap: nowrap; flex-wrap: nowrap;
} }
.el-table--group,
.el-table--border {
border: 1px solid #00264f !important;
}
.el-table--border .el-table__cell {
border-right: 1px solid #00264f !important;
}
.el-table--border th.el-table__cell {
border-bottom: 1px solid #00264f !important;
}
.el-table__expand-icon{
color: #fff !important;
}
.el-tag.el-tag--danger {
font-weight: bold !important;
}
.el-tag.el-tag--success{
font-weight: bold !important;
color: #03a249 !important;
}

7
src/assets/styles/index.scss

@ -775,10 +775,3 @@ table th {
} }
} }
} }
/* 手机端样式 */
@media (min-width: 0px) and (max-width: 990px) {
.app-main {
height: 100% !important;
overflow-y: hidden !important;
}
}

14
src/assets/styles/sidebar.scss

@ -116,7 +116,7 @@
} }
& .nest-menu .el-submenu > .el-submenu__title, & .nest-menu .el-submenu > .el-submenu__title,
& .nest-menu .el-menu-item { & .el-submenu .el-menu-item {
min-width: var(--base-sidebar-width) !important; min-width: var(--base-sidebar-width) !important;
padding: 0 35px !important; padding: 0 35px !important;
@ -124,9 +124,6 @@
background-color: rgba(0, 0, 0, 0.06) !important; background-color: rgba(0, 0, 0, 0.06) !important;
} }
} }
& .nest-menu .el-menu > .nest-menu .el-menu-item {
padding: 0 55px !important;
}
& .theme-dark .nest-menu .el-submenu > .el-submenu__title, & .theme-dark .nest-menu .el-submenu > .el-submenu__title,
& .theme-dark .el-submenu .el-menu-item { & .theme-dark .el-submenu .el-menu-item {
@ -331,21 +328,18 @@
} }
} }
} }
.hideSidebar .fixed-header { .hideSidebar .fixed-header{
width: calc(100% - 0.54rem) !important; width: calc(100% - 0.54rem) !important;
} }
.el-submenu__title { .el-submenu__title {
font-size: 0.14rem !important; font-size: 0.14rem !important;
height: 0.56rem !important; height: 0.56rem !important;
line-height: 0.56rem !important; line-height: 0.56rem !important;
font-size: 0.14rem !important; font-size:0.14rem !important;
padding: 0 0.2rem !important; padding: 0 0.2rem !important;
} }
#app .sidebar-container .nest-menu .el-submenu > .el-submenu__title, #app .sidebar-container .nest-menu .el-submenu > .el-submenu__title,
#app .sidebar-container .nest-menu .el-menu-item { #app .sidebar-container .el-submenu .el-menu-item {
padding: 0 0.35rem !important; padding: 0 0.35rem !important;
} }
#app .sidebar-container .nest-menu .el-menu > .nest-menu .el-menu-item {
padding: 0 0.55rem !important;
}
} }

100
src/permission.js

@ -1,87 +1,63 @@
import router from "./router"; import router from './router'
import store from "./store"; import store from './store'
import { Message } from "element-ui"; import { Message } from 'element-ui'
import NProgress from "nprogress"; import NProgress from 'nprogress'
import "nprogress/nprogress.css"; import 'nprogress/nprogress.css'
import { getToken } from "@/utils/auth"; import { getToken } from '@/utils/auth'
import { isPathMatch } from "@/utils/validate"; import { isPathMatch } from '@/utils/validate'
import { isRelogin } from "@/utils/request"; import { isRelogin } from '@/utils/request'
import {
isFullscreenSupported,
requestFullscreen,
isFullscreen,
} from "@/utils/fullscreen";
NProgress.configure({ showSpinner: false });
const whiteList = ["/login", "/register"]; NProgress.configure({ showSpinner: false })
const isWhiteList = (path) => { const whiteList = ['/login', '/register']
return whiteList.some((pattern) => isPathMatch(pattern, path));
};
let userManuallyExitedFullscreen = false;
// 监听全屏状态变化事件 const isWhiteList = (path) => {
document.addEventListener("fullscreenchange", () => { return whiteList.some(pattern => isPathMatch(pattern, path))
if (!isFullscreen()) { }
userManuallyExitedFullscreen = true;
}
});
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
NProgress.start(); NProgress.start()
if (getToken()) { if (getToken()) {
to.meta.title && store.dispatch("settings/setTitle", to.meta.title); to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
/* has token*/ /* has token*/
if (to.path === "/login") { if (to.path === '/login') {
next({ path: "/" }); next({ path: '/' })
NProgress.done(); NProgress.done()
} else if (isWhiteList(to.path)) { } else if (isWhiteList(to.path)) {
if (isFullscreenSupported() && !userManuallyExitedFullscreen) { next()
const element = document.documentElement;
requestFullscreen(element);
}
next();
} else { } else {
if (store.getters.roles.length === 0) { if (store.getters.roles.length === 0) {
isRelogin.show = true; isRelogin.show = true
// 判断当前用户是否已拉取完user_info信息 // 判断当前用户是否已拉取完user_info信息
store store.dispatch('GetInfo').then(() => {
.dispatch("GetInfo") isRelogin.show = false
.then(() => { store.dispatch('GenerateRoutes').then(accessRoutes => {
isRelogin.show = false;
store.dispatch("GenerateRoutes").then((accessRoutes) => {
// 根据roles权限生成可访问的路由表 // 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes); // 动态添加可访问路由表 router.addRoutes(accessRoutes) // 动态添加可访问路由表
next({ ...to, replace: true }); // hack方法 确保addRoutes已完成 next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
}); })
}).catch(err => {
store.dispatch('LogOut').then(() => {
Message.error(err)
next({ path: '/' })
})
}) })
.catch((err) => {
store.dispatch("LogOut").then(() => {
Message.error(err);
next({ path: "/" });
});
});
} else { } else {
if (isFullscreenSupported() && !userManuallyExitedFullscreen) { next()
const element = document.documentElement;
requestFullscreen(element);
}
next();
} }
} }
} else { } else {
// 没有token // 没有token
if (isWhiteList(to.path)) { if (isWhiteList(to.path)) {
// 在免登录白名单,直接进入 // 在免登录白名单,直接进入
next(); next()
} else { } else {
next(`/login?redirect=${encodeURIComponent(to.fullPath)}`); // 否则全部重定向到登录页 next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) // 否则全部重定向到登录页
NProgress.done(); NProgress.done()
} }
} }
}); })
router.afterEach(() => { router.afterEach(() => {
NProgress.done(); NProgress.done()
}); })

210
src/store/modules/permission.js

@ -91,89 +91,89 @@ const permission = {
// console.log("不满足条件"); // console.log("不满足条件");
} }
// 风柜 // // 风柜
const result2 = sidebarRoutes.find( // const result2 = sidebarRoutes.find(
(item) => item.name === "AircAndWindc" // (item) => item.name === "AircAndWindc"
); // );
if (result2) { // if (result2) {
// 定义要添加的多个路由对象数组 // // 定义要添加的多个路由对象数组
const additionalRoutes2 = [ // const additionalRoutes2 = [
{ // {
path: "/asSysMonitorDetails", // path: "/asSysMonitorDetails",
name: "asSysMonitorDetails", // name: "asSysMonitorDetails",
hidden: true, // hidden: true,
component: () => // component: () =>
import( // import(
"@/views/aircAndWindc/awSysMonitor/asSysMonitorDetails" // "@/views/aircAndWindc/awSysMonitor/asSysMonitorDetails"
), // ),
meta: { title: "系统监控", icon: "screen" }, // meta: { title: "系统监控", icon: "screen" },
}, // },
// 可以继续添加更多路由对象 // // 可以继续添加更多路由对象
]; // ];
// 循环添加额外的路由对象到各路由数组 // // 循环添加额外的路由对象到各路由数组
additionalRoutes2.forEach((route) => { // additionalRoutes2.forEach((route) => {
sidebarRoutes.push(route); // sidebarRoutes.push(route);
rewriteRoutes.push(route); // rewriteRoutes.push(route);
asyncRoutes.push(route); // asyncRoutes.push(route);
}); // });
} else { // } else {
// console.log("不满足条件"); // // console.log("不满足条件");
} // }
// 锅炉 // // 锅炉
const result3 = sidebarRoutes.find( // const result3 = sidebarRoutes.find(
(item) => item.name === "BoilerSys" // (item) => item.name === "BoilerSys"
); // );
if (result3) { // if (result3) {
// 定义要添加的多个路由对象数组 // // 定义要添加的多个路由对象数组
const additionalRoutes3 = [ // const additionalRoutes3 = [
{ // {
path: "/boilerMonitorDetails", // path: "/boilerMonitorDetails",
name: "boilerMonitorDetails", // name: "boilerMonitorDetails",
hidden: true, // hidden: true,
component: () => // component: () =>
import( // import(
"@/views/boilerSys/boilerMonitor/boilerMonitorDetails" // "@/views/boilerSys/boilerMonitor/boilerMonitorDetails"
), // ),
meta: { title: "锅炉监控", icon: "screen" }, // meta: { title: "锅炉监控", icon: "screen" },
}, // },
{ // {
path: "/hotWaterBoilerDetails", // path: "/hotWaterBoilerDetails",
name: "hotWaterBoilerDetails", // name: "hotWaterBoilerDetails",
hidden: true, // hidden: true,
component: () => // component: () =>
import( // import(
"@/views/boilerSys/hotWaterBoiler/hotWaterBoilerDetails" // "@/views/boilerSys/hotWaterBoiler/hotWaterBoilerDetails"
), // ),
meta: { title: "热水锅炉监控", icon: "screen" }, // meta: { title: "热水锅炉监控", icon: "screen" },
}, // },
{ // {
path: "/heatingPumpDetails", // path: "/heatingPumpDetails",
name: "heatingPumpDetails", // name: "heatingPumpDetails",
hidden: true, // hidden: true,
component: () => // component: () =>
import("@/views/boilerSys/heatingPump/heatingPumpDetails"), // import("@/views/boilerSys/heatingPump/heatingPumpDetails"),
meta: { title: "采暖泵监控", icon: "screen" }, // meta: { title: "采暖泵监控", icon: "screen" },
}, // },
{ // {
path: "/steamHeatingDetails", // path: "/steamHeatingDetails",
name: "steamHeatingDetails", // name: "steamHeatingDetails",
hidden: true, // hidden: true,
component: () => // component: () =>
import("@/views/boilerSys/steamHeating/steamHeatingDetails"), // import("@/views/boilerSys/steamHeating/steamHeatingDetails"),
meta: { title: "蒸汽采暖运行监控", icon: "screen" }, // meta: { title: "蒸汽采暖运行监控", icon: "screen" },
}, // },
// 可以继续添加更多路由对象 // // 可以继续添加更多路由对象
]; // ];
// 循环添加额外的路由对象到各路由数组 // // 循环添加额外的路由对象到各路由数组
additionalRoutes3.forEach((route) => { // additionalRoutes3.forEach((route) => {
sidebarRoutes.push(route); // sidebarRoutes.push(route);
rewriteRoutes.push(route); // rewriteRoutes.push(route);
asyncRoutes.push(route); // asyncRoutes.push(route);
}); // });
} else { // } else {
// console.log("不满足条件"); // // console.log("不满足条件");
} // }
// 热水 // 热水
const result4 = sidebarRoutes.find( const result4 = sidebarRoutes.find(
@ -202,29 +202,29 @@ const permission = {
// console.log("不满足条件"); // console.log("不满足条件");
} }
// 温度监测 // // 温度监测
const result5 = sidebarRoutes.find((item) => item.name === "TemSys"); // const result5 = sidebarRoutes.find((item) => item.name === "TemSys");
if (result5) { // if (result5) {
// 定义要添加的多个路由对象数组 // // 定义要添加的多个路由对象数组
const additionalRoutes5 = [ // const additionalRoutes5 = [
{ // {
path: "/temMonitorDeatils", // path: "/temMonitorDeatils",
name: "temMonitorDeatils", // name: "temMonitorDeatils",
hidden: true, // hidden: true,
component: () => // component: () =>
import("@/views/temSys/temMonitor/temMonitorDeatils"), // import("@/views/temSys/temMonitor/temMonitorDeatils"),
meta: { title: "温度监测", icon: "screen" }, // meta: { title: "温度监测", icon: "screen" },
}, // },
]; // ];
// 循环添加额外的路由对象到各路由数组 // // 循环添加额外的路由对象到各路由数组
additionalRoutes5.forEach((route) => { // additionalRoutes5.forEach((route) => {
sidebarRoutes.push(route); // sidebarRoutes.push(route);
rewriteRoutes.push(route); // rewriteRoutes.push(route);
asyncRoutes.push(route); // asyncRoutes.push(route);
}); // });
} else { // } else {
// console.log("不满足条件"); // // console.log("不满足条件");
} // }
commit("SET_ROUTES", rewriteRoutes); commit("SET_ROUTES", rewriteRoutes);
commit("SET_SIDEBAR_ROUTERS", constantRoutes.concat(sidebarRoutes)); commit("SET_SIDEBAR_ROUTERS", constantRoutes.concat(sidebarRoutes));

53
src/utils/fullscreen.js

@ -1,53 +0,0 @@
// 检查浏览器是否支持全屏 API
function isFullscreenSupported() {
return (
document.fullscreenEnabled ||
document.webkitFullscreenEnabled ||
document.mozFullScreenEnabled ||
document.msFullscreenEnabled
);
}
// 进入全屏模式
function requestFullscreen(element) {
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
// 退出全屏模式
function exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
// 检查当前是否处于全屏状态
function isFullscreen() {
return (
document.fullscreenElement ||
document.webkitFullscreenElement ||
document.mozFullScreenElement ||
document.msFullscreenElement
);
}
export {
isFullscreenSupported,
requestFullscreen,
exitFullscreen,
isFullscreen,
};

2
src/utils/request.js

@ -17,7 +17,7 @@ const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分 // axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API, baseURL: process.env.VUE_APP_BASE_API,
// 超时 // 超时
timeout: 15000 timeout: 10000
}) })
// request拦截器 // request拦截器

721
src/views/aircAndWindc/awSysMonitor/asSysMonitorDetails.vue

@ -1,721 +0,0 @@
<template>
<div class="monitor">
<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=""
@click="goSys"
/>
<img
class="title-right"
src="../../../assets/images/title-right.png"
alt=""
/>
<div class="sys-title" @click="goSys">空调风柜监控系统</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 class="app-container">
<div class="left-tree">
<!-- el-tree 设置一个固定的高度和滚动条 -->
<div class="tree-div">
<el-tree
ref="tree"
:data="treeData"
node-key="id"
:default-expand-all="false"
:default-expanded-keys="expandedKeys"
:auto-expand-parent="true"
icon-class="none"
@node-expand="handleNodeExpand"
@node-collapse="handleNodeCollapse"
:highlight-current="true"
@node-click="handleNodeClick"
>
<template #default="{ node }">
<span class="custom-tree-node">
<!-- 根据节点状态动态设置图标类名 -->
<div class="tree-left">
<i :class="getIconClass(node)" class="custom-tree-icon"></i>
<span class="tree-label">{{ node.label }}</span>
</div>
</span>
</template>
</el-tree>
</div>
</div>
<damper-monitor
:currentId="currentId"
:currentName="currentName"
ref="damperMonitorRef"
v-if="isShowdamper"
></damper-monitor>
<normal-monitor
:currentId="currentId"
:currentName="currentName"
ref="normalMonitorRef"
v-else
></normal-monitor>
</div>
</div>
</template>
<script>
import { runTime } from "@/api/centerairC/sysMonitor";
import { alarmRecordList } from "@/api/alarm/alarmRecord";
import { getDay } from "@/utils/datetime";
import { spaceTree } from "@/api/region";
import damperMonitor from "./components/damperMonitor.vue";
import normalMonitor from "./components/normalMonitor.vue";
export default {
components: { damperMonitor, normalMonitor },
name: "asSysMonitorDetails",
data() {
return {
currentDate: new Date(),
nowTimer: null,
isShowWarning: false, //
dayData: "", //
treeData: [],
defaultProps: {
children: "children",
label: "label",
},
deviceList: [],
expandedKeys: [],
currentId: "", //id
currentName: "", //
currentLevel: "", //
currentParentId: "", //id
backwaterObj: {}, //
airValveObj: {}, //
airValveBackObj: {}, //
waterValveObj: {}, //
startControlObj: {}, //
runStatusObj: {}, //
airSupplyObj: {}, //
pressureObj: {}, //
automaticObj: {}, //
backAirObj: {}, //
faultAlarmObj: {}, //
waterSupplyObj: {}, //
tableData: [], //
temValue: "℃", //
valvePercent: "%", //
runStatus: false, //
autoStatus: false, //
startStatus: false, //
frequency: "v",
isOpenTimeSwitch: false,
delayList: [],
currentWeekday: "",
isShowdamper: false,
};
},
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}`;
},
},
watch: {
temValue(newVal) {
let valueWithoutTem = newVal.replace(/℃/g, "");
if (valueWithoutTem === "") {
this.temValue = "℃";
} else {
this.temValue = valueWithoutTem + "℃";
}
},
valvePercent(newVal) {
// %
let valueWithoutPercent = newVal.replace(/%/g, "");
// %
if (valueWithoutPercent === "") {
this.temValue = "%";
} else {
// %
this.temValue = valueWithoutPercent + "%";
}
},
frequency(newVal) {
let valueWithoutFrequency = newVal.replace(/v/g, "");
if (valueWithoutFrequency === "") {
this.temValue = "v";
} else {
this.temValue = valueWithoutFrequency + "v";
}
},
},
created() {
const weekdays = [
"星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
];
const date = new Date();
const dayIndex = date.getDay();
this.currentWeekday = weekdays[dayIndex];
console.log("今天是星期几", this.currentWeekday);
},
mounted() {
this.requestFullscreen();
//
this.getSysBuild();
this.getAlarnStatus();
this.getDayData();
//
this.nowTimer = setInterval(() => {
this.currentDate = new Date();
}, 1000);
},
beforeDestroy() {
//
if (this.nowTimer) {
clearInterval(this.nowTimer);
}
},
methods: {
//
requestFullscreen() {
const element = document.documentElement;
console.log("全屏了吗");
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.mozRequestFullScreen) {
// Firefox
element.mozRequestFullScreen();
} else if (element.webkitRequestFullscreen) {
// Chrome, Safari and Opera
element.webkitRequestFullscreen();
} else if (element.msRequestFullscreen) {
// IE/Edge
element.msRequestFullscreen();
}
},
// 退
exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
// Firefox
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
// Chrome, Safari and Opera
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) {
// IE/Edge
document.msExitFullscreen();
}
},
//
goSys() {
// this.exitFullscreen();
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.exitFullscreen();
this.$router.push("/alarm/alarmRecord");
},
// undefined
isObjectValid(obj) {
return obj && Object.keys(obj).length > 0;
},
getSysBuild() {
spaceTree().then((res) => {
if (res.code == 200) {
//
console.log("楼栋返回值", res);
let newRes = { ...res };
if (newRes.data && newRes.data[0] && newRes.data[0].children) {
newRes.data[0].children = newRes.data[0].children.filter((item) => {
// label ""
return item.label && item.label.includes("空调风柜");
});
}
// 1 5
const targetLevel = 5;
// data[0] 1
if (newRes.data[0]) {
this.removeChildrenAfterLevel(newRes.data[0], 1, targetLevel);
}
console.log("筛选后的新结果", newRes);
this.treeData = newRes.data;
this.$nextTick(() => {
//
this.getExpandedKeys(this.treeData, 1);
if (this.treeData.length > 0) {
//
const lastLevelFirstChild = this.findLastLevelFirstChild(
this.treeData[0]
);
// this.$refs.tree.setCurrentKey(
// this.treeData[0].children[0].children[0].children[0].id
// );
// ,
this.$refs.tree.setCurrentKey(lastLevelFirstChild.id);
//
this.currentId = lastLevelFirstChild.id;
this.currentLevel = lastLevelFirstChild.level;
this.currentName = lastLevelFirstChild.label;
console.log("当前选中节点ID", this.currentId);
console.log("当前选中节点层级", this.currentLevel);
console.log("当前选中节点名称", this.currentName);
// ,getWindList()
if (
this.currentName.includes("新风阀") ||
this.currentName.includes("AHU")
) {
this.isShowdamper = true;
this.$nextTick(() => {
this.$refs.damperMonitorRef.getWindList();
});
} else {
this.isShowdamper = false;
this.$nextTick(() => {
this.$refs.normalMonitorRef.getWindList();
});
}
}
});
}
});
},
// children
removeChildrenAfterLevel(obj, currentLevel, targetLevel) {
if (currentLevel >= targetLevel) {
// children
obj.children = [];
return;
}
if (obj.children && obj.children.length > 0) {
// children
for (let i = 0; i < obj.children.length; i++) {
this.removeChildrenAfterLevel(
obj.children[i],
currentLevel + 1,
targetLevel
);
}
}
},
//
findLastLevelFirstChild(node, level = 1) {
if (!node.children || node.children.length === 0) {
return {
id: node.id,
level,
label: node.label,
};
}
return this.findLastLevelFirstChild(node.children[0], level + 1);
},
//
getExpandedKeys(nodes, level) {
nodes.forEach((node) => {
if (level <= this.currentId + 4) {
this.expandedKeys.push(node.id);
}
if (node.children) {
this.getExpandedKeys(node.children, level + 1);
}
});
},
//
getIconClass(node) {
// console.log("", node);
if (node.level === 5) {
// 5
if (node.expanded) {
return "el-icon-document-opened"; // 5
}
return "el-icon-document"; // 5
}
if (node.expanded) {
return "el-icon-folder-opened"; // 5
}
return "el-icon-folder-add"; // 5
},
handleNodeExpand(node) {
//
},
handleNodeCollapse(node) {
//
},
//
handleNodeClick(node, data) {
console.log("点击的当前节点", node, data);
if (data.level !== 5) {
console.log("不是第5层000");
// ,
this.$refs.tree.setCurrentKey(this.currentId);
console.log("当前选中节点ID", this.currentId);
console.log("当前选中节点层级", this.currentLevel);
console.log("当前选中节点名称", this.currentName);
} else {
console.log("第5层111");
this.currentId = node.id;
this.currentLevel = data.level;
this.currentName = node.label;
// ,
this.$refs.tree.setCurrentKey(this.currentId);
console.log("当前选中节点ID", this.currentId);
console.log("当前选中节点层级", this.currentLevel);
console.log("当前选中节点名称", this.currentName);
// ,getWindList()
if (
this.currentName.includes("新风阀") ||
this.currentName.includes("AHU")
) {
this.isShowdamper = true;
this.$nextTick(() => {
this.$refs.damperMonitorRef.getWindList();
});
} else {
this.isShowdamper = false;
this.$nextTick(() => {
this.$refs.normalMonitorRef.getWindList();
});
}
}
},
},
};
</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.8rem;
}
.title-right {
width: 5.04rem;
height: 0.78rem;
}
.sys-title {
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 0.28rem;
color: #ffffff;
font-weight: bold;
z-index: 100;
cursor: pointer;
}
.nowTime {
position: absolute;
top: 0.37rem;
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.39rem;
right: 4.4rem;
z-index: 10;
width: 0.35rem;
height: 0.32rem;
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.39rem;
right: 4rem;
z-index: 10;
width: 0.35rem;
height: 0.32rem;
margin: 0 0.2rem 0 0.27rem;
cursor: pointer;
}
.back-icon {
position: absolute;
top: 0.39rem;
right: 3.7rem;
z-index: 10;
width: 0.35rem;
height: 0.32rem;
cursor: pointer;
}
}
}
.app-container {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: stretch;
height: 100%;
padding: 0.3rem 0.2rem 0 0.35rem;
width: 100%;
.left-tree {
width: 256px;
padding: 15px 10px 10px 10px;
border: 1px solid #004b8c;
.tree-div {
height: 7rem;
overflow-y: auto;
}
.status {
display: flex;
flex-direction: row;
justify-content: space-between;
flex-wrap: wrap;
margin-top: 20px;
.status-li {
width: 50%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-bottom: 15px;
}
.status1,
.status2,
.status3,
.status4 {
display: flex;
flex-direction: row;
align-items: center;
margin-bottom: 5px;
}
.status1::before {
content: "";
width: 10px;
height: 10px;
border-radius: 50%;
background-color: #00d2ff;
margin-right: 5px;
}
.status2::before {
content: "";
width: 10px;
height: 10px;
border-radius: 50%;
background-color: #ff2f2f;
margin-right: 5px;
}
.status3::before {
content: "";
width: 10px;
height: 10px;
border-radius: 50%;
background-color: #ff9908;
margin-right: 5px;
}
.status4::before {
content: "";
width: 10px;
height: 10px;
border-radius: 50%;
background-color: #7398c7;
margin-right: 5px;
}
}
}
.right-monitor {
width: calc(100% - 280px);
display: flex;
flex-direction: column;
justify-content: flex-start;
}
}
.tree-container {
height: 300px; /* 设置固定高度 */
overflow-y: auto; /* 启用垂直滚动条 */
}
//
:-webkit-scrollbar {
width: 10px; /* 滚动条宽度 */
}
::-webkit-scrollbar-track {
background: transparent !important; /* 滚动条轨道背景色 */
}
.custom-tree-node {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 14px;
padding-right: 8px;
.tree-left {
.custom-tree-icon {
margin-right: 5px;
}
}
}
.highlight {
background-color: #003863 !important; /* 定义高亮的背景颜色 */
color: #ffffff !important;
font-weight: bold;
}
//
@media (min-width: 0px) and (max-width: 990px) {
.app-container {
padding: 0rem 0.2rem 0 0.35rem !important;
}
.app-container .left-tree {
width: 200px !important;
min-height: 340px !important;
padding: 0.15rem 0 !important;
}
.app-container .tree-div {
height: 300px !important;
width: 100%;
overflow-x: hidden !important;
}
.app-container .right-monitor {
width: calc(100% - 210px) !important;
}
.custom-tree-node {
font-size: 12px !important;
}
}
</style>
<style scoped>
/* 自定义高亮颜色 */
.left-tree
>>> .el-tree--highlight-current
.el-tree-node.is-current
> .el-tree-node__content {
background-color: #285b9e !important;
/* color: #f56c6c; */
color: #25f1f8;
}
/* 手机端样式 */
@media (min-width: 0px) and (max-width: 990px) {
.left-tree >>> .el-tree-node__content > .el-tree-node__expand-icon {
padding: 3px !important;
}
}
</style>

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

File diff suppressed because it is too large Load Diff

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

File diff suppressed because it is too large Load Diff

1676
src/views/aircAndWindc/awSysMonitor/index.vue

File diff suppressed because it is too large Load Diff

6
src/views/alarm/alarmCode/index.vue

@ -21,7 +21,6 @@
v-model="queryParams.status" v-model="queryParams.status"
placeholder="选择采集类别" placeholder="选择采集类别"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_collection_type" v-for="dict in dict.type.alarm_collection_type"
@ -36,7 +35,6 @@
v-model="queryParams.eventType" v-model="queryParams.eventType"
placeholder="选择事件类型" placeholder="选择事件类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_event_type" v-for="dict in dict.type.alarm_event_type"
@ -51,7 +49,6 @@
v-model="queryParams.alarmLevel" v-model="queryParams.alarmLevel"
placeholder="选择报警等级" placeholder="选择报警等级"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_level" v-for="dict in dict.type.alarm_level"
@ -229,7 +226,6 @@
v-model="form.collectionType" v-model="form.collectionType"
placeholder="请选择采集类别" placeholder="请选择采集类别"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_collection_type" v-for="dict in dict.type.alarm_collection_type"
@ -248,7 +244,6 @@
v-model="form.eventType" v-model="form.eventType"
placeholder="请选择事件类型" placeholder="请选择事件类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_event_type" v-for="dict in dict.type.alarm_event_type"
@ -264,7 +259,6 @@
v-model="form.alarmLevel" v-model="form.alarmLevel"
placeholder="请选择报警等级" placeholder="请选择报警等级"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_level" v-for="dict in dict.type.alarm_level"

4
src/views/alarm/alarmRecord/index.vue

@ -21,7 +21,6 @@
v-model="queryParams.alarmType" v-model="queryParams.alarmType"
placeholder="选择报警类型" placeholder="选择报警类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_type" v-for="dict in dict.type.alarm_type"
@ -36,7 +35,6 @@
v-model="queryParams.eventType" v-model="queryParams.eventType"
placeholder="选择事件类型" placeholder="选择事件类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_event_type" v-for="dict in dict.type.alarm_event_type"
@ -51,7 +49,6 @@
v-model="queryParams.alarmLevel" v-model="queryParams.alarmLevel"
placeholder="选择报警等级" placeholder="选择报警等级"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_level" v-for="dict in dict.type.alarm_level"
@ -74,7 +71,6 @@
v-model="queryParams.status" v-model="queryParams.status"
placeholder="选择处理状态" placeholder="选择处理状态"
clearable clearable
filterable
> >
<el-option label="未处理" value="0" /> <el-option label="未处理" value="0" />
<el-option label="已处理" value="1" /> <el-option label="已处理" value="1" />

27
src/views/alarm/alarmRule/index.vue

@ -13,7 +13,6 @@
v-model="queryParams.alarmType" v-model="queryParams.alarmType"
placeholder="选择报警类型" placeholder="选择报警类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_type" v-for="dict in dict.type.alarm_type"
@ -28,7 +27,6 @@
v-model="queryParams.eventType" v-model="queryParams.eventType"
placeholder="选择事件类型" placeholder="选择事件类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_event_type" v-for="dict in dict.type.alarm_event_type"
@ -43,7 +41,6 @@
v-model="queryParams.alarmLevel" v-model="queryParams.alarmLevel"
placeholder="选择报警等级" placeholder="选择报警等级"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_level" v-for="dict in dict.type.alarm_level"
@ -255,7 +252,6 @@
placeholder="请选择设备类型" placeholder="请选择设备类型"
clearable clearable
@change="handleDevice" @change="handleDevice"
filterable
> >
<el-option <el-option
v-for="item in devices" v-for="item in devices"
@ -273,7 +269,6 @@
placeholder="请选择设备类型" placeholder="请选择设备类型"
clearable clearable
@change="handleMeter" @change="handleMeter"
filterable
> >
<el-option <el-option
v-for="item in cpmList" v-for="item in cpmList"
@ -292,7 +287,6 @@
v-model="form.alarmType" v-model="form.alarmType"
placeholder="请选择报警类型" placeholder="请选择报警类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_type" v-for="dict in dict.type.alarm_type"
@ -320,7 +314,6 @@
v-model="form.eventType" v-model="form.eventType"
placeholder="请选择事件类型" placeholder="请选择事件类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_event_type" v-for="dict in dict.type.alarm_event_type"
@ -336,7 +329,6 @@
v-model="form.alarmLevel" v-model="form.alarmLevel"
placeholder="请选择报警等级" placeholder="请选择报警等级"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_level" v-for="dict in dict.type.alarm_level"
@ -354,7 +346,6 @@
v-model="form.triggerEvent" v-model="form.triggerEvent"
placeholder="请选择" placeholder="请选择"
clearable clearable
filterable
> >
<el-option label="开" value="0" /> <el-option label="开" value="0" />
<el-option label="关" value="1" /> <el-option label="关" value="1" />
@ -367,7 +358,6 @@
v-model="form.timePeriodSet" v-model="form.timePeriodSet"
placeholder="请选择" placeholder="请选择"
clearable clearable
filterable
> >
<el-option label="全时段" value="0" /> <el-option label="全时段" value="0" />
<el-option label="自定义时段" value="1" /> <el-option label="自定义时段" value="1" />
@ -442,12 +432,7 @@
<el-row type="flex" justify="flex-start"> <el-row type="flex" justify="flex-start">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-select <el-select v-model="form.status" placeholder="请选择" clearable>
v-model="form.status"
placeholder="请选择"
clearable
filterable
>
<el-option label="已启用" value="0" /> <el-option label="已启用" value="0" />
<el-option label="未启用" value="1" /> <el-option label="未启用" value="1" />
</el-select> </el-select>
@ -668,8 +653,7 @@ export default {
this.multiple = !selection.length; this.multiple = !selection.length;
}, },
// //
handleDevice(selectedValue, val) { handleDevice(selectedValue) {
console.log("选择设备", selectedValue);
// value label // value label
const selectedItem = this.devices.find( const selectedItem = this.devices.find(
(item) => item.id === selectedValue (item) => item.id === selectedValue
@ -684,13 +668,8 @@ export default {
// //
this.getCpmIdList(this.form.ledgerId); this.getCpmIdList(this.form.ledgerId);
} }
if (!val) {
console.log("非第一次打开弹框-选择设备类型");
// //
this.form.cpmId = ""; this.form.cpmId = "";
} else {
console.log("第一次打开弹框-默认采集点位");
}
}, },
// //
getCpmIdList(id) { getCpmIdList(id) {
@ -781,8 +760,6 @@ export default {
}; };
this.open = true; this.open = true;
this.title = "修改报警规则"; this.title = "修改报警规则";
// handleDevice
this.handleDevice(this.form.ledgerId, true);
}); });
}, },
/** 提交按钮 */ /** 提交按钮 */

25
src/views/bigScreen/bigScreen.vue

@ -10,7 +10,7 @@
class="loginD_img_down" class="loginD_img_down"
alt="" alt=""
/> />
<div class="sys-title" @click="goSys">楼宇智慧管理系统平台</div> <div class="sys-title">楼宇智慧管理系统平台</div>
<!-- <div class="day">已监测100天</div> --> <!-- <div class="day">已监测100天</div> -->
<div class="set"> <div class="set">
<img src="../../assets/images/icon_time.png" class="icon_time" alt="" /> <img src="../../assets/images/icon_time.png" class="icon_time" alt="" />
@ -52,7 +52,7 @@
<div class="special-top"> <div class="special-top">
<div class="special-title"> <div class="special-title">
<div class="title-left"> <div class="title-left">
<div>冷源系统能</div> <div>冷源系统能</div>
<time-data <time-data
v-model="sharedIndex" v-model="sharedIndex"
:currentIndex="sharedIndex" :currentIndex="sharedIndex"
@ -147,13 +147,13 @@
<div class="message-data">{{ viewMes.totalGas }}t</div> <div class="message-data">{{ viewMes.totalGas }}t</div>
<div>总蒸汽量</div> <div>总蒸汽量</div>
</div> </div>
<!-- <div class="message-li"> <div class="message-li">
<img <img
class="message-img" class="message-img"
src="../../assets/images/message-img5.png" src="../../assets/images/message-img5.png"
alt="" alt=""
/> />
<div class="message-data">{{ viewMes.eleUnitArea }}kwh/</div> <div class="message-data">{{ viewMes.eleUnitArea }}wkh/</div>
<div>面积电耗</div> <div>面积电耗</div>
</div> </div>
<div class="message-li"> <div class="message-li">
@ -162,7 +162,7 @@
src="../../assets/images/message-img7.png" src="../../assets/images/message-img7.png"
alt="" alt=""
/> />
<div class="message-data">{{ viewMes.waterUnitArea }}t/</div> <div class="message-data">{{ viewMes.waterUnitArea }}kwh</div>
<div>面积水耗</div> <div>面积水耗</div>
</div> </div>
<div class="message-li"> <div class="message-li">
@ -171,7 +171,7 @@
src="../../assets/images/message-img8.png" src="../../assets/images/message-img8.png"
alt="" alt=""
/> />
<div class="message-data">{{ viewMes.coldUnitArea }}kw/</div> <div class="message-data">{{ viewMes.coldUnitArea }}kw/lm³</div>
<div>面积冷耗</div> <div>面积冷耗</div>
</div> </div>
<div class="message-li"> <div class="message-li">
@ -180,9 +180,9 @@
src="../../assets/images/message-img9.png" src="../../assets/images/message-img9.png"
alt="" alt=""
/> />
<div class="message-data">{{ viewMes.gasUnitArea }}t/</div> <div class="message-data">{{ viewMes.gasUnitArea }}kw/lm³</div>
<div>面积汽耗</div> <div>面积汽耗</div>
</div> --> </div>
</div> </div>
</div> </div>
<div class="special-div"> <div class="special-div">
@ -394,7 +394,6 @@ export default {
background-clip: text; background-clip: text;
-webkit-background-clip: text; -webkit-background-clip: text;
color: transparent; color: transparent;
cursor: pointer;
} }
.day { .day {
position: absolute; position: absolute;
@ -490,7 +489,7 @@ export default {
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: flex-start; justify-content: flex-start;
margin: 30px 0; margin-top: 29px;
font-family: SourceHanSansCN-Regular; font-family: SourceHanSansCN-Regular;
font-size: 16px; font-size: 16px;
font-weight: normal; font-weight: normal;
@ -503,7 +502,7 @@ export default {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
width: calc(33.33% - 32px); width: calc(33.33% - 32px);
margin: 16px; margin: 0 16px;
// margin-bottom: 22px; // margin-bottom: 22px;
.message-data { .message-data {
font-family: DIN-Bold; font-family: DIN-Bold;
@ -611,11 +610,11 @@ export default {
.screen-right { .screen-right {
width: 30% !important; width: 30% !important;
.message { .message {
margin: 0.3rem 0 !important; margin-top: 0.29rem !important;
font-size: 0.16rem !important; font-size: 0.16rem !important;
.message-li { .message-li {
width: calc(33.33% - 0.32rem) !important; width: calc(33.33% - 0.32rem) !important;
margin:0.16rem !important; margin: 0 0.16rem !important;
.message-data { .message-data {
font-size: 0.2rem !important; font-size: 0.2rem !important;
margin-bottom: 0.3rem !important; margin-bottom: 0.3rem !important;

54
src/views/bigScreen/components/allEnergy.vue

@ -124,16 +124,10 @@ export default {
{ {
name: "数据详情:", name: "数据详情:",
data: [ data: [
{ value: this.energyMes.eleStandardCoal, name: "耗电量(kgce)" }, { value: this.energyMes.eleStandardCoal, name: "耗电量" },
{ { value: this.energyMes.waterStandardCoal, name: "用水量" },
value: this.energyMes.waterStandardCoal, { value: this.energyMes.coldStandardCoal, name: "产冷量" },
name: "用水量(kgce)", { value: this.energyMes.gasStandardCoal, name: "蒸汽量" },
},
{
value: this.energyMes.coldStandardCoal,
name: "产冷量(kgce)",
},
{ value: this.energyMes.gasStandardCoal, name: "蒸汽量(kgce)" },
], ],
itemStyle: { itemStyle: {
color: function (params) { color: function (params) {
@ -146,16 +140,10 @@ export default {
}, },
{ {
data: [ data: [
{ value: this.energyMes.eleStandardCoal, name: "耗电量(kgce)" }, { value: this.energyMes.eleStandardCoal, name: "耗电量" },
{ { value: this.energyMes.waterStandardCoal, name: "用水量" },
value: this.energyMes.waterStandardCoal, { value: this.energyMes.coldStandardCoal, name: "产冷量" },
name: "用水量(kgce)", { value: this.energyMes.gasStandardCoal, name: "蒸汽量" },
},
{
value: this.energyMes.coldStandardCoal,
name: "产冷量(kgce)",
},
{ value: this.energyMes.gasStandardCoal, name: "蒸汽量(kgce)" },
], ],
}, },
], ],
@ -239,10 +227,10 @@ export default {
{ {
name: "数据详情:", name: "数据详情:",
data: [ data: [
{ value: 0, name: "耗电量(kgce)" }, { value: 0, name: "耗电量" },
{ value: 0, name: "用水量(kgce)" }, { value: 0, name: "用水量" },
{ value: 0, name: "产冷量(kgce)" }, { value: 0, name: "产冷量" },
{ value: 0, name: "蒸汽量(kgce)" }, { value: 0, name: "蒸汽量" },
], ],
itemStyle: { itemStyle: {
color: function (params) { color: function (params) {
@ -255,10 +243,10 @@ export default {
}, },
{ {
data: [ data: [
{ value: 0, name: "耗电量(kgce)" }, { value: 0, name: "耗电量" },
{ value: 0, name: "用水量(kgce)" }, { value: 0, name: "用水量" },
{ value: 0, name: "产冷量(kgce)" }, { value: 0, name: "产冷量" },
{ value: 0, name: "蒸汽量(kgce)" }, { value: 0, name: "蒸汽量" },
], ],
}, },
], ],
@ -298,7 +286,7 @@ export default {
color: "#ffffff", color: "#ffffff",
}, },
textAlign: "center", textAlign: "center",
x: "23%", x: "27%",
y: "36%", // y: "36%", //
}, },
tooltip: { tooltip: {
@ -322,7 +310,7 @@ export default {
name: "数据详情:", name: "数据详情:",
type: "pie", type: "pie",
radius: ["60%", "72%"], radius: ["60%", "72%"],
center: ["24%", "44%"], center: ["28%", "44%"],
avoidLabelOverlap: false, avoidLabelOverlap: false,
label: { label: {
show: false, show: false,
@ -345,7 +333,7 @@ export default {
{ {
type: "pie", type: "pie",
radius: ["50%", "62%"], radius: ["50%", "62%"],
center: ["24%", "44%"], center: ["28%", "44%"],
avoidLabelOverlap: false, avoidLabelOverlap: false,
label: { label: {
show: false, show: false,
@ -375,7 +363,7 @@ export default {
// silent: true, // silent: true,
// center // center
radius: ["38%", "39%"], radius: ["38%", "39%"],
center: ["24%", "44%"], center: ["28%", "44%"],
label: { label: {
show: false, show: false,
}, },
@ -397,7 +385,7 @@ export default {
// silent: true, // silent: true,
// center // center
radius: ["0%", "38%"], radius: ["0%", "38%"],
center: ["24%", "44%"], center: ["28%", "44%"],
label: { label: {
show: false, show: false,
}, },

17
src/views/bigScreen/components/coldSysEnergy.vue

@ -2,8 +2,8 @@
<div class="energy_content"> <div class="energy_content">
<div class="sys_charts" ref="sys_charts"></div> <div class="sys_charts" ref="sys_charts"></div>
<div class="eer"> <div class="eer">
<div>产冷量:{{ energyMes.totalCold }}kwh</div>
<div>用电量:{{ energyMes.totalEle }}kw/h</div> <div>用电量:{{ energyMes.totalEle }}kw/h</div>
<div>产冷量:{{ energyMes.totalCold }}kwh</div>
</div> </div>
</div> </div>
</template> </template>
@ -509,21 +509,16 @@ export default {
label: { label: {
show: true, show: true,
position: "center", // position: "center", //
offset: [0, -25], // 10 offset: [0, -titleFontSize * 0.6], // 10
formatter: function () { formatter: function () {
// HTML 使 rich // HTML 使 rich
return `{line1|${that.useForm.useData}}\n{line2| EER}`; return `{line|${that.useForm.useData}}`;
}, },
rich: { rich: {
line1: { line: {
color: "#39dd4f", //
fontSize: 20, //
lineHeight: 34, //
},
line2: {
color: "#fff", // color: "#fff", //
fontSize: 14, // fontSize: titleFontSize, //
lineHeight: 24, // lineHeight: 0, //
}, },
}, },
}, },

2
src/views/bigScreen/components/timeData.vue

@ -19,7 +19,7 @@ export default {
props: ["currentIndex"], props: ["currentIndex"],
data() { data() {
return { return {
timeData2: [{ title: "日" }, { title: "月" }, { title: "年" }], timeData2: [{ title: "日" }, { title: "月" }, { title: "年" }],
timeIndex2: 0, timeIndex2: 0,
}; };
}, },

8
src/views/bigScreen/components/useElect.vue

@ -127,7 +127,6 @@ export default {
}, },
series: [ series: [
{ {
name: "用电趋势",
type: "line", type: "line",
// //
symbolSize: 8, symbolSize: 8,
@ -204,8 +203,7 @@ export default {
":" + ":" +
'<span style="color: #000000; font-weight: bold;margin-left:5px">' + '<span style="color: #000000; font-weight: bold;margin-left:5px">' +
value + value +
"kwh"; "</span><br>";
("</span><br>");
} }
return res; return res;
}, },
@ -266,7 +264,7 @@ export default {
.sys_charts { .sys_charts {
width: 100%; width: 100%;
height: 280px; height: 230px;
} }
.eer { .eer {
font-size: 18px; font-size: 18px;
@ -277,7 +275,7 @@ export default {
@media (min-width: 2000px) { @media (min-width: 2000px) {
.energy_content { .energy_content {
.sys_charts { .sys_charts {
height: 2.8rem !important; height: 2.4rem !important;
} }
.eer { .eer {
font-size: 0.18rem !important; font-size: 0.18rem !important;

15
src/views/bigScreen/components/waterSysEnergy.vue

@ -510,21 +510,16 @@ export default {
label: { label: {
show: true, show: true,
position: "center", // position: "center", //
offset: [0, -25], // 10 offset: [0, -titleFontSize * 0.6], // 10
formatter: function () { formatter: function () {
// HTML 使 rich // HTML 使 rich
return `{line1|${that.useForm.useData}}\n{line2| kwh/吨}`; return `{line|${that.useForm.useData}}`;
}, },
rich: { rich: {
line1: { line: {
color: "#39dd4f", //
fontSize: 20, //
lineHeight: 34, //
},
line2: {
color: "#fff", // color: "#fff", //
fontSize: 14, // fontSize: titleFontSize, //
lineHeight: 24, // lineHeight: 0, //
}, },
}, },
}, },

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

File diff suppressed because it is too large Load Diff

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

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

497
src/views/boilerSys/boilerRunReport/index.vue

@ -1,497 +0,0 @@
<template>
<div class="app-container">
<div class="btn-condition">
<div class="condition-left" v-show="showSearch">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
>
<el-form-item label="日期" prop="msgCode">
<el-date-picker
v-model="dayDate"
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="dateChange"
>
</el-date-picker>
</el-form-item>
</el-form>
<div class="primary-btn">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
</div>
<div class="warning-btn">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button
>
</div>
</div>
</div>
<el-table
:data="tableData"
border
style="width: 100%"
v-loading="loading"
:cell-style="tableRowStyle"
class="log_table"
>
<el-table-column prop="curTime" label="记录时间" width="110">
</el-table-column>
<el-table-column prop="runStatus" label="运行状态"> </el-table-column>
<el-table-column prop="flameIntensity" label="火焰强度">
</el-table-column>
<el-table-column prop="tempFlueGas" label="烟气温度(℃)">
</el-table-column>
<el-table-column prop="percentFlameIntensity" label="火焰百分比(%)">
</el-table-column>
<el-table-column prop="waterLevel" label="液位(%)"> </el-table-column>
<el-table-column prop="tempCur" label="蒸汽温度(℃)"> </el-table-column>
<el-table-column prop="pressCur" label="当前压力(Mpa)"> </el-table-column>
<el-table-column prop="pressSet" label="压力设定值(Mpa)">
</el-table-column>
<el-table-column prop="pressStartDiff" label="启动压差(Mpa)">
</el-table-column>
<el-table-column prop="pressShutdownDiff" label="停止压差(Mpa)">
</el-table-column>
<el-table-column prop="pressInstance" label="瞬时压力(Mpa)">
</el-table-column>
<el-table-column prop="flowInstance" label="瞬时流量(t/h)">
</el-table-column>
<el-table-column prop="flowTotal" label="累计流量(t)"> </el-table-column>
<el-table-column prop="recorder" label="巡查记录人"> </el-table-column>
<el-table-column prop="remark" label="备注"> </el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改设备台账对话框 -->
<el-dialog :title="title" :visible.sync="open" append-to-body>
<el-form ref="form" :model="form" :rules="rules">
<el-row type="flex" justify="felx-start">
<el-col :span="12">
<el-form-item label="记录时间" prop="curTime">
<el-input
v-model="form.curTime"
disabled
placeholder=""
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="运行状态" prop="runStatus">
<el-input
v-model="form.runStatus"
disabled
placeholder=""
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="火焰强度" prop="flameIntensity">
<el-input
clearable
v-model="form.flameIntensity"
placeholder="请输入"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="烟气温度℃" prop="tempFlueGas">
<el-input
clearable
v-model="form.tempFlueGas"
placeholder="请输入温度℃"
/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="火焰百分比%" prop="percentFlameIntensity">
<el-input
clearable
v-model="form.percentFlameIntensity"
placeholder="请输入百分比℃"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="液位%" prop="waterLevel">
<el-input
clearable
v-model="form.waterLevel"
placeholder="请输入液位%"
/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="蒸汽温度℃" prop="tempCur">
<el-input
clearable
v-model="form.tempCur"
placeholder="请输入温度℃"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="当前压力Mpa" prop="pressCur">
<el-input
clearable
v-model="form.pressCur"
placeholder="请输入压力Mpa"
/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="压力设定值Mpa" prop="pressSet">
<el-input
clearable
v-model="form.pressSet"
placeholder="请输入压力Mpa"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="启动压差Mpa" prop="pressStartDiff">
<el-input
clearable
v-model="form.pressStartDiff"
placeholder="请输入压差Mpa"
/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="停止压差Mpa" prop="pressShutdownDiff">
<el-input
clearable
v-model="form.pressShutdownDiff"
placeholder="请输入压差Mpa"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="瞬时压力Mpa" prop="pressInstance">
<el-input
clearable
v-model="form.pressInstance"
placeholder="请输入压力Mpa"
/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="瞬间流量(t/h)" prop="flowInstance">
<el-input
clearable
v-model="form.flowInstance"
placeholder="请输入流量(t/h)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="累计流量t" prop="flowTotal">
<el-input
clearable
v-model="form.flowTotal"
placeholder="请输入流量t"
/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="巡查人签名" prop="recorder">
<el-input
clearable
v-model="form.recorder"
placeholder="请输入"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="备注" prop="remark">
<el-input
clearable
v-model="form.remark"
placeholder="请输入备注"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
boilerSysList,
boilerSysEdit,
boilerSysExport,
} from "@/api/boiler/boilerRunReport";
export default {
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
postList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
params: {},
},
dayDate: "",
tableData: [],
//
form: {},
//
rules: {
deviceName: [
{ required: true, message: "设备名称不能为空", trigger: "blur" },
],
},
deviceRun: [
{
label: "不运行",
value: 0,
},
{
label: "运行",
value: 1,
},
],
};
},
mounted() {
this.initializeTimeDate();
this.getList();
},
methods: {
//
initializeTimeDate() {
let date = new Date(); //
//,
let year = date.getFullYear().toString();
//01
//使10'0'
let month =
date.getMonth() + 1 < 10
? "0" + (date.getMonth() + 1).toString()
: (date.getMonth() + 1).toString();
//10'0'
let day =
date.getDate() < 10
? "0" + date.getDate().toString()
: date.getDate().toString();
//
let start1 = year + "-" + month + "-01"; //
let end1 = year + "-" + month + "-" + day; //
this.dayDate = [start1, end1]; //
},
tableRowStyle({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 2 || columnIndex === 6 || columnIndex === 13) {
return "color: #fd1e00;!important;text-align:center;font-weight: bold;";
}
// return "text-align:center";
},
//
dateChange() {
// console.log("", this.timeform.time1);
if (!this.dayDate) {
this.$nextTick(() => {
this.dayDate = [];
});
}
},
/** 查询表格数据 */
getList() {
this.loading = true;
this.queryParams.params.startTime =
this.dayDate.length > 0 ? this.dayDate[0] : "";
this.queryParams.params.endTime =
this.dayDate.length > 0 ? this.dayDate[1] : "";
boilerSysList(this.queryParams).then((res) => {
console.log("列表返回", res);
if (res.code == 200 && res.rows) {
this.tableData = res.rows;
this.total = res.total;
this.loading = false;
} else {
this.tableData = [];
this.total = 0;
this.loading = false;
}
});
//
this.loading = false;
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 导出按钮操作 */
handleExport() {
this.queryParams.params.startTime =
this.dayDate.length > 0 ? this.dayDate[0] : "";
this.queryParams.params.endTime =
this.dayDate.length > 0 ? this.dayDate[1] : "";
boilerSysExport(this.queryParams).then((res) => {
console.log("导出返回", res);
if (res) {
//
// blob URL
const url = window.URL.createObjectURL(new Blob([res]));
// <a>hrefdownload
const link = document.createElement("a");
link.href = url;
link.setAttribute("download", "蒸汽机运行记录.xls"); //
//
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// blob URL
window.URL.revokeObjectURL(url);
this.$message({
type: "success",
message: "导出成功!",
});
} else {
this.$message.error("导出失败!");
}
});
// .catch((err) => {
// this.$message.error('!');
// })
},
//
cancel() {
this.open = false;
this.reset();
this.form.id = "";
},
//
reset() {
this.form = {
id: "",
curTime: "",
runStatus: "",
flameIntensity: "",
tempFlueGas: "",
percentFlameIntensity: "",
waterLevel: "",
tempCur: "",
pressCur: "",
pressSet: "",
pressStartDiff: "",
pressShutdownDiff: "",
pressInstance: "",
flowInstance: "",
flowTotal: "",
recorder: "",
remark: "",
};
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.form = Object.assign({}, row);
this.open = true;
this.title = "修改蒸汽机运行记录";
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != undefined) {
boilerSysEdit(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
console.log("新增参数", this.form);
}
}
});
},
},
};
</script>
<style scoped lang="scss">
/* 媒体查询,适配大于2000px分辨率的大屏样式 - element样式 */
@media (max-width: 2000px) {
::v-deep .el-dialog {
width: 800px !important;
}
::v-deep .print-dialog .el-dialog {
width: 1200px !important;
}
::v-deep .el-dialog .el-form-item__label {
width: 130px !important;
}
::v-deep .el-dialog .el-form-item {
display: flex;
flex-direction: row;
align-items: center;
}
::v-deep .el-dialog .el-form-item__content {
width: 220px !important;
}
}
</style>

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

File diff suppressed because it is too large Load Diff

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

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

649
src/views/boilerSys/heatingRunReport/index.vue

@ -1,649 +0,0 @@
<template>
<div class="app-container">
<div class="btn-condition">
<div class="condition-left" v-show="showSearch">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
>
<el-form-item label="日期" prop="msgCode">
<el-date-picker
v-model="dayDate"
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="dateChange"
>
</el-date-picker>
</el-form-item>
</el-form>
<div class="primary-btn">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
</div>
<div class="warning-btn">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button
>
</div>
</div>
</div>
<el-table
:data="tableData"
border
style="width: 100%"
v-loading="loading"
:cell-style="tableRowStyle"
class="log_table"
>
<el-table-column prop="curTime" label="记录时间" width="110">
</el-table-column>
<el-table-column prop="" label="1号采暖设备">
<el-table-column
prop="runStatusBoilerOne"
label="运行状态"
></el-table-column>
<el-table-column
prop="tempSetBoilerOne"
label="设定温度(℃)"
></el-table-column>
<el-table-column
prop="tempOutBoilerOne"
label="出水温度(℃)"
></el-table-column>
<el-table-column
prop="tempInBoilerOne"
label="回水温度(℃)"
></el-table-column>
<el-table-column
prop="tempWaterBoilerOne"
label="炉水温度(℃)"
></el-table-column>
<el-table-column
prop="tempFlueGasBoilerOne"
label="烟道温度(℃)"
></el-table-column>
</el-table-column>
<el-table-column prop="" label="2号采暖设备">
<el-table-column
prop="runStatusBoilerTwo"
label="运行状态"
></el-table-column>
<el-table-column
prop="tempSetBoilerTwo"
label="设定温度(℃)"
></el-table-column>
<el-table-column
prop="tempOutBoilerTwo"
label="出水温度(℃)"
></el-table-column>
<el-table-column
prop="tempInBoilerTwo"
label="回水温度(℃)"
></el-table-column>
<el-table-column
prop="tempWaterBoilerTwo"
label="炉水温度(℃)"
></el-table-column>
<el-table-column
prop="tempFlueGasBoilerTwo"
label="烟道温度(℃)"
></el-table-column>
</el-table-column>
<el-table-column prop="" label="1号采暖泵">
<el-table-column
prop="runStatusPumpOne"
label="运行状态"
></el-table-column>
<el-table-column
prop="frequencyPumpOne"
label="频率(Hz)"
></el-table-column>
</el-table-column>
<el-table-column prop="" label="2号采暖泵">
<el-table-column
prop="runStatusPumpTwo"
label="运行状态"
></el-table-column>
<el-table-column
prop="frequencyPumpTwo"
label="频率(Hz)"
></el-table-column>
</el-table-column>
<el-table-column prop="" label="3号采暖泵">
<el-table-column
prop="runStatusPumpThree"
label="运行状态"
></el-table-column>
<el-table-column
prop="frequencyPumpThree"
label="频率(Hz)"
></el-table-column>
</el-table-column>
<el-table-column prop="recorder" label="巡查记录人"> </el-table-column>
<el-table-column prop="remark" label="备注"> </el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改设备台账对话框 -->
<el-dialog :title="title" :visible.sync="open" append-to-body>
<el-form ref="form" :model="form" :rules="rules">
<el-row type="flex" justify="felx-start">
<el-col :span="12">
<el-form-item label="记录时间" prop="curTime">
<el-input
v-model="form.curTime"
disabled
placeholder=""
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="24" class="oneRowLabel">1号采暖设备</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="运 行 状 态" prop="runStatusBoilerOne">
<el-input
disabled
v-model="form.runStatusBoilerOne"
placeholder=""
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="设定温度℃" prop="tempSetBoilerOne">
<el-input
v-model="form.tempSetBoilerOne"
placeholder=""
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="出水温度℃" prop="tempOutBoilerOne">
<el-input
clearable
v-model="form.tempOutBoilerOne"
placeholder="请输入温度℃"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="回水温度℃" prop="tempInBoilerOne">
<el-input
clearable
v-model="form.tempInBoilerOne"
placeholder="请输入温度℃"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="炉水温度℃" prop="tempWaterBoilerOne">
<el-input
clearable
v-model="form.tempWaterBoilerOne"
placeholder="请输入温度℃"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="烟道温度℃" prop="tempFlueGasBoilerOne">
<el-input
clearable
v-model="form.tempFlueGasBoilerOne"
placeholder="请输入温度℃"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="24" class="oneRowLabel">2号采暖设备</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="运 行 状 态" prop="runStatusBoilerTwo">
<el-input
disabled
v-model="form.runStatusBoilerTwo"
placeholder=""
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="设定温度℃" prop="tempSetBoilerTwo">
<el-input
v-model="form.tempSetBoilerTwo"
placeholder=""
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="出水温度℃" prop="tempOutBoilerTwo">
<el-input
clearable
v-model="form.tempOutBoilerTwo"
placeholder="请输入温度℃"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="回水温度℃" prop="tempInBoilerTwo">
<el-input
clearable
v-model="form.tempInBoilerTwo"
placeholder="请输入温度℃"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="炉水温度℃" prop="tempWaterBoilerTwo">
<el-input
clearable
v-model="form.tempWaterBoilerTwo"
placeholder="请输入温度℃"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="烟道温度℃" prop="tempFlueGasBoilerTwo">
<el-input
clearable
v-model="form.tempFlueGasBoilerTwo"
placeholder="请输入温度℃"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="24" class="oneRowLabel">1号采暖泵</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="运行状态" prop="runStatusPumpOne">
<el-input
disabled
v-model="form.runStatusPumpOne"
placeholder=""
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="频率" prop="frequencyPumpOne">
<el-input
clearable
v-model="form.frequencyPumpOne"
placeholder="请输入频率Hz"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="felx-start">
<el-col :span="24" class="oneRowLabel">2号采暖泵</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="运行状态" prop="runStatusPumpTwo">
<el-input
disabled
v-model="form.runStatusPumpTwo"
placeholder=""
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="频率" prop="frequencyPumpTwo">
<el-input
clearable
v-model="form.frequencyPumpTwo"
placeholder="请输入频率Hz"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="felx-start">
<el-col :span="24" class="oneRowLabel">3号采暖泵</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="运行状态" prop="runStatusPumpThree">
<el-input
disabled
v-model="form.runStatusPumpThree"
placeholder=""
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="频率" prop="frequencyPumpThree">
<el-input
clearable
v-model="form.frequencyPumpThree"
placeholder="请输入频率Hz"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="巡查记录人" prop="recorder">
<el-input
clearable
v-model="form.recorder"
placeholder="请输入"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="备注" prop="remark">
<el-input
clearable
v-model="form.remark"
placeholder="请输入备注"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
boilerSysList,
boilerSysEdit,
boilerSysExport,
} from "@/api/boiler/heatingRunPeport";
export default {
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
postList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
params: {},
},
dayDate: "",
tableData: [],
//
form: {},
//
rules: {
deviceName: [
{ required: true, message: "设备名称不能为空", trigger: "blur" },
],
},
deviceRun: [
{
label: "不运行",
value: 0,
},
{
label: "运行",
value: 1,
},
],
};
},
mounted() {
this.initializeTimeDate();
this.getList();
},
methods: {
//
initializeTimeDate() {
let date = new Date(); //
//,
let year = date.getFullYear().toString();
//01
//使10'0'
let month =
date.getMonth() + 1 < 10
? "0" + (date.getMonth() + 1).toString()
: (date.getMonth() + 1).toString();
//10'0'
let day =
date.getDate() < 10
? "0" + date.getDate().toString()
: date.getDate().toString();
//
let start1 = year + "-" + month + "-01"; //
let end1 = year + "-" + month + "-" + day; //
this.dayDate = [start1, end1]; //
},
tableRowStyle({ row, column, rowIndex, columnIndex }) {
// 2613 0
if ([1, 2, 7, 8, 11, 13, 15, 17].includes(columnIndex)) {
const value = row[column.property]; //
console.log("column", column);
if (value === "停止") {
return {
color: "#fd1e00",
textAlign: "center",
fontWeight: "bold",
};
} else if (value === "运行" || column.label.includes("设定温度")) {
return {
color: "#00c250",
textAlign: "center",
fontWeight: "bold",
};
}
}
return {};
},
//
dateChange() {
// console.log("", this.timeform.time1);
if (!this.dayDate) {
this.$nextTick(() => {
this.dayDate = [];
});
}
},
/** 查询表格数据 */
getList() {
this.loading = true;
this.queryParams.params.startTime =
this.dayDate.length > 0 ? this.dayDate[0] : "";
this.queryParams.params.endTime =
this.dayDate.length > 0 ? this.dayDate[1] : "";
boilerSysList(this.queryParams).then((res) => {
console.log("列表返回", res);
if (res.code == 200 && res.rows) {
this.tableData = res.rows;
this.total = res.total;
this.loading = false;
} else {
this.tableData = [];
this.total = 0;
this.loading = false;
}
});
//
this.loading = false;
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 导出按钮操作 */
handleExport() {
this.queryParams.params.startTime =
this.dayDate.length > 0 ? this.dayDate[0] : "";
this.queryParams.params.endTime =
this.dayDate.length > 0 ? this.dayDate[1] : "";
boilerSysExport(this.queryParams).then((res) => {
console.log("导出返回", res);
if (res) {
//
// blob URL
const url = window.URL.createObjectURL(new Blob([res]));
// <a>hrefdownload
const link = document.createElement("a");
link.href = url;
link.setAttribute("download", "采暖系统运行记录.xls"); //
//
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// blob URL
window.URL.revokeObjectURL(url);
this.$message({
type: "success",
message: "导出成功!",
});
} else {
this.$message.error("导出失败!");
}
});
// .catch((err) => {
// this.$message.error('!');
// })
},
//
cancel() {
this.open = false;
this.reset();
this.form.id = "";
},
//
reset() {
this.form = {
id: "",
curTime: "",
runStatusBoilerOne: "",
tempOutBoilerOne: "",
tempInBoilerOne: "",
tempWaterBoilerOne: "",
tempFlueGasBoilerOne: "",
runStatusBoilerTwo: "",
tempOutBoilerTwo: "",
tempInBoilerTwo: "",
tempWaterBoilerTwo: "",
tempFlueGasBoilerTwo: "",
runStatusPumpOne: "",
frequencyPumpOne: "",
runStatusPumpTwo: "",
frequencyPumpTwo: "",
runStatusPumpThree: "",
frequencyPumpThree: "",
recorder: "",
remark: "",
};
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.form = Object.assign({}, row);
this.open = true;
this.title = "修改采暖系统运行记录";
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != undefined) {
boilerSysEdit(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
console.log("新增参数", this.form);
}
}
});
},
},
};
</script>
<style scoped lang="scss">
.oneRowLabel {
margin-left: 40px;
font-size: 15px;
font-weight: bold;
color: #02ce0d;
display: flex;
flex-direction: row;
align-items: center;
}
.oneRowLabel::before {
content: "";
display: inline-block;
width: 8px; /* 圆的直径 */
height: 8px;
border-radius: 50%; /* 使元素变成圆形 */
background-color: #02ce0d; /* 圆的颜色,这里和文字颜色保持一致 */
margin-right: 10px; /* 圆和文字之间的间距 */
vertical-align: middle; /* 使圆在垂直方向上与文字居中对齐 */
}
/* 媒体查询,适配大于2000px分辨率的大屏样式 - element样式 */
@media (max-width: 2000px) {
::v-deep .el-dialog {
width: 800px !important;
}
::v-deep .print-dialog .el-dialog {
width: 1200px !important;
}
::v-deep .el-dialog .el-form-item__label {
width: 130px !important;
}
::v-deep .el-dialog .el-form-item {
display: flex;
flex-direction: row;
align-items: center;
}
::v-deep .el-dialog .el-form-item__content {
width: 220px !important;
}
}
</style>

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

@ -1,703 +0,0 @@
<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=""
@click="goSys"
/>
<img
class="title-right"
src="../../../assets/images/title-right.png"
alt=""
/>
<div class="sys-title" @click="goSys">采暖设备监测</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 class="hotWater-div">
<div
class="hotWater-li"
v-for="(boiler, index) in hotWaterBoilerData"
:key="index"
>
<div class="special-div one">
<div class="special-top">
<div class="special-title">
<div class="title-left">
<div>{{ boiler.name }}</div>
</div>
</div>
</div>
<div class="hotWater">
<img
class="hotWater-img"
src="../../../assets/images/hotWater.png"
alt=""
/>
</div>
<div class="info">
<div class="hotWater-tem">
<div class="pump-data-li">
<div>出水温度:</div>
<div class="pump-data-text">
{{ getTemperatureData(boiler, "出水温度") }}
</div>
</div>
<div class="pump-data-li">
<div>回水温度:</div>
<div class="pump-data-text">
{{ getTemperatureData(boiler, "回水温度") }}
</div>
</div>
<div class="pump-data-li">
<div>炉水温度:</div>
<div class="pump-data-text">
{{ getTemperatureData(boiler, "炉水温度") }}
</div>
</div>
<div class="pump-data-li">
<div>烟道温度:</div>
<div class="pump-data-text">
{{ getTemperatureData(boiler, "烟道温度") }}
</div>
</div>
</div>
<div class="port-right">
<div class="port">
<div :class="['port-li', getFireSignalClass(boiler, '大火')]">
大火控制信号发出
</div>
<div :class="['port-li', getFireSignalClass(boiler, '小火')]">
小火控制信号发出
</div>
<div class="port-li port-close">燃烧机电源</div>
</div>
<div class="bad-div">
故障信息:<span class="bad-text">{{
getFaultInfo(boiler)
}}</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- <div class="hotWater-div">
<div class="hotWater-li">
<div class="special-div one">
<div class="special-top">
<div class="special-title">
<div class="title-left">
<div>1号热水锅炉</div>
</div>
</div>
</div>
<div class="hotWater">
<img
class="hotWater-img"
src="../../../assets/images/hotWater.png"
alt=""
/>
</div>
<div class="info">
<div class="hotWater-tem">
<div class="pump-data-li">
<div>出水温度:</div>
<div class="pump-data-text">29.7</div>
</div>
<div class="pump-data-li">
<div>回水温度:</div>
<div class="pump-data-text">29.7</div>
</div>
<div class="pump-data-li">
<div>炉水温度:</div>
<div class="pump-data-text">29.7</div>
</div>
<div class="pump-data-li">
<div>烟道温度:</div>
<div class="pump-data-text">29.7</div>
</div>
</div>
<div class="port-right">
<div class="port">
<div class="port-li port-open">大火控制信号发出</div>
<div class="port-li port-close">小伙控制信号发出</div>
<div class="port-li port-close">燃烧机电源</div>
</div>
<div class="bad-div">
故障信息:<span class="bad-text">炉水温度传感器故障</span>
</div>
</div>
</div>
</div>
</div>
<div class="hotWater-li">
<div class="special-div one">
<div class="special-top">
<div class="special-title">
<div class="title-left">
<div>2号热水锅炉</div>
</div>
</div>
</div>
<div class="hotWater">
<img
class="hotWater-img"
src="../../../assets/images/hotWater.png"
alt=""
/>
</div>
<div class="info">
<div class="hotWater-tem">
<div class="pump-data-li">
<div>出水温度:</div>
<div class="pump-data-text">29.7</div>
</div>
<div class="pump-data-li">
<div>回水温度:</div>
<div class="pump-data-text">29.7</div>
</div>
<div class="pump-data-li">
<div>炉水温度:</div>
<div class="pump-data-text">29.7</div>
</div>
<div class="pump-data-li">
<div>烟道温度:</div>
<div class="pump-data-text">29.7</div>
</div>
</div>
<div class="port-right">
<div class="port">
<div class="port-li port-open">大火控制信号发出</div>
<div class="port-li port-close">小伙控制信号发出</div>
<div class="port-li port-close">燃烧机电源</div>
</div>
<div class="bad-div">
故障信息:<span class="bad-text">炉水温度传感器故障</span>
</div>
</div>
</div>
</div>
</div>
</div> -->
</div>
</template>
<script>
import { runTime } from "@/api/centerairC/sysMonitor";
import { alarmRecordList } from "@/api/alarm/alarmRecord";
import { hotWaterBoiler } from "@/api/boiler/hotwaterBoiler";
import { getDay } from "@/utils/datetime";
export default {
name: "boilerMonitorDetails",
data() {
return {
loading: false,
currentDate: new Date(),
nowTimer: null,
timer: null, // ID
isShowWarning: false, //
dayData: "", //
currentWeekday: "",
//
hotWaterBoilerData: [],
};
},
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();
//
this.getHotWaterBoiler();
// 10
this.timer = setInterval(() => {
this.getAlarnStatus();
this.getDayData();
//
this.getHotWaterBoiler();
}, 10000);
},
beforeDestroy() {
//
if (this.timer) {
clearInterval(this.timer);
}
//
if (this.nowTimer) {
clearInterval(this.nowTimer);
}
},
methods: {
// Get temperature data by type (keep as is)
getTemperatureData(boiler, type) {
if (!boiler || !boiler.values) return "--";
const item = boiler.values.find(
(v) => v.otherName && v.otherName.includes(type)
);
return item && item.curValue !== null ? item.curValue : "--";
},
// Get fire signal class for individual signals
getFireSignalClass(boiler, signalType) {
if (!boiler || !boiler.values) return "port-close";
// Get fire signal values
const fire1Item = boiler.values.find(
(v) => v.otherName && v.otherName.includes("火力1")
);
const fire2Item = boiler.values.find(
(v) => v.otherName && v.otherName.includes("火力2")
);
const fire1Value =
fire1Item && fire1Item.curValue !== null ? fire1Item.curValue : 0;
const fire2Value =
fire2Item && fire2Item.curValue !== null ? fire2Item.curValue : 0;
// Determine which signal should be open based on the logic:
// : fire1=1 and fire2=1
// : fire1=1 and fire2=0
if (signalType === "大火" && fire1Value == 1 && fire2Value == 1) {
return "port-open";
} else if (signalType === "小火" && fire1Value == 1 && fire2Value == 0) {
return "port-open";
} else {
return "port-close";
}
},
// Get fire status text based on both fire signals (for other uses if needed)
getFireStatusText(boiler) {
if (!boiler || !boiler.values) return "未开机";
const fire1Item = boiler.values.find(
(v) => v.otherName && v.otherName.includes("火力1")
);
const fire2Item = boiler.values.find(
(v) => v.otherName && v.otherName.includes("火力2")
);
const fire1Value =
fire1Item && fire1Item.curValue !== null ? fire1Item.curValue : 0;
const fire2Value =
fire2Item && fire2Item.curValue !== null ? fire2Item.curValue : 0;
// If both are 0, boiler is off
if (fire1Value == 0 && fire2Value == 0) {
return "无火信号";
}
// If fire1 is 1 and fire2 is 0, small fire
else if (fire1Value == 1 && fire2Value == 0) {
return "小火控制信号发出";
}
// If both fire1 and fire2 are 1, big fire
else if (fire1Value == 1 && fire2Value == 1) {
return "大火控制信号发出";
}
// Any other case
else {
return "未开机";
}
},
// Get fault information (placeholder implementation)
// Get fault information based on fault code
getFaultInfo(boiler) {
if (!boiler || !boiler.values) return "无故障";
// Find the fault item - you might need to adjust this based on actual data structure
const faultItem = boiler.values.find(
(v) => v.otherName && v.otherName.includes("故障")
);
if (!faultItem || faultItem.curValue === null) {
return "无故障";
}
// Convert fault code to descriptive text
const faultCode = parseInt(faultItem.curValue);
switch (faultCode) {
case 0:
return "无故障";
case 1:
return "炉水温度传感器故障";
case 2:
return "出水温度传感器故障";
case 3:
return "回水温度传感器故障";
case 4:
return "锅炉水位极低";
case 5:
return "燃烧机故障";
case 6:
return "炉水超温";
case 7:
return "循环水流故障";
case 9:
return "定时时间到关机(正常关机模式)";
case 11:
return "烟道传感器故障";
case 12:
return "烟道超温故障";
case 13:
return "检漏故障";
default:
return "未知故障";
}
},
//
getHotWaterBoiler() {
let queryParams = {
systemType: "3",
type: "0",
};
hotWaterBoiler(queryParams).then((res) => {
if (res.code == 200) {
console.log("热水锅炉数据", res.rows);
if (res.rows.length > 0) {
this.hotWaterBoilerData = res.rows;
} else {
this.hotWaterBoilerData = [];
}
}
});
},
//
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.8rem;
}
.title-right {
width: 5.04rem;
height: 0.78rem;
}
.sys-title {
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 0.28rem;
color: #ffffff;
font-weight: bold;
z-index: 100;
cursor: pointer;
}
.nowTime {
position: absolute;
top: 0.37rem;
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.39rem;
right: 4.4rem;
z-index: 10;
width: 0.35rem;
height: 0.32rem;
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.39rem;
right: 4rem;
z-index: 10;
width: 0.35rem;
height: 0.32rem;
margin: 0 0.2rem 0 0.27rem;
cursor: pointer;
}
.back-icon {
position: absolute;
top: 0.39rem;
right: 3.7rem;
z-index: 10;
width: 0.35rem;
height: 0.32rem;
cursor: pointer;
}
}
.hotWater-div {
width: 100%;
padding: 0.2rem;
display: flex;
flex-direction: row;
align-content: stretch;
justify-content: space-between;
.hotWater-li {
width: 49%;
.hotWater {
width: 100%;
padding: 0.25rem 0.2rem;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
.hotWater-img {
width: 6.4rem;
height: 3.5rem;
}
}
.info {
display: flex;
flex-direction: row;
justify-content: center; /* Center content horizontally */
align-items: flex-start; /* Align to top */
width: 100%;
padding: 0 0.25rem 0.15rem 0.7rem;
gap: 0.5rem; /* Add space between elements */
.hotWater-tem {
flex: 1; /* Allow to grow */
min-width: 35%; /* Minimum width */
background: #262f58;
border-radius: 0.1rem;
font-size: 0.16rem;
display: flex;
flex-direction: column;
padding: 0.25rem 0;
.pump-data-li {
width: 100%;
padding: 0 0.4rem; /* Increase horizontal padding */
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
margin: 0.25rem 0;
.pump-data-text {
color: #05d120;
font-weight: bold;
}
}
}
.port-right {
flex: 1; /* Allow to grow */
display: flex;
flex-direction: column;
padding: 0.25rem 0.6rem; /* Increase horizontal padding */
min-width: 35%; /* Minimum width */
.port {
display: flex;
flex-direction: column;
gap: 0.3rem; /* Increase spacing between elements */
.port-li {
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: center;
width: 100%;
font-size: 0.16rem;
color: #c9c6c6;
position: relative;
padding-left: 0.3rem; /* Increase left padding for indicator */
}
.port-open::before,
.port-close::before {
content: "";
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 0.18rem; /* Slightly larger indicator */
height: 0.18rem;
border-radius: 50%;
border: 0.02rem solid white;
}
.port-open::before {
background-color: #00ff00; /* Brighter green for active */
}
.port-close::before {
background-color: #666; /* Darker gray for inactive */
}
}
.bad-div {
margin-top: 0.35rem; /* Increase spacing */
font-size: 0.16rem;
color: #db4d4d;
.bad-text {
margin-left: 0.15rem;
background: #5581c4;
border-radius: 0.15rem; /* Slightly larger radius */
padding: 0.15rem 0.2rem; /* More padding */
color: #fff;
display: inline-block; /* Better text wrapping */
}
}
}
}
}
}
}
</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

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

120
src/views/boilerSys/steamHeating/components/lineChildren.vue

@ -1,120 +0,0 @@
<template>
<div class="line-container">
<!-- 第一个圆点 -->
<div class="dot dot-start"></div>
<!-- 第一条直线 -->
<div
class="line line1"
:style="{
transform: `rotate(${angle1}deg)`,
width: lineWidth1Rem + 'rem'
}"
></div>
<!-- 中间圆点 -->
<div
class="dot dot-mid"
:style="{
top: (1 + Math.sin((angle1 * Math.PI) / 180) * lineWidth1Rem - 0.025) + 'rem',
left: (1 + Math.cos((angle1 * Math.PI) / 180) * lineWidth1Rem - 0.025) + 'rem'
}"
></div>
<!-- 第二条直线 -->
<div
class="line line2"
:style="{
top: (1 + Math.sin((angle1 * Math.PI) / 180) * lineWidth1Rem) + 'rem',
left: (1 + Math.cos((angle1 * Math.PI) / 180) * lineWidth1Rem) + 'rem',
transform: `rotate(${angle2}deg)`,
width: lineWidth2Rem + 'rem'
}"
></div>
<!-- 最后一个圆点 -->
<div
class="dot dot-end"
:style="{
top: endDotTop + 'rem',
left: endDotLeft + 'rem'
}"
></div>
</div>
</template>
<script>
export default {
props: {
// 线
angle1: {
type: Number,
default: 0
},
// 线
angle2: {
type: Number,
default: 0
},
// 线px
lineWidth1: {
type: Number,
default: 100
},
// 线px
lineWidth2: {
type: Number,
default: 100
}
},
computed: {
lineWidth1Rem() {
return this.lineWidth1 / 100;
},
lineWidth2Rem() {
return this.lineWidth2 / 100;
},
endDotTop() {
// 线 y
const firstLineEndY = 1 + Math.sin((this.angle1 * Math.PI) / 180) * this.lineWidth1Rem;
// 线线 y
const secondLineYOffset = Math.sin((this.angle2 * Math.PI) / 180) * this.lineWidth2Rem;
return firstLineEndY + secondLineYOffset - 0.025;
},
endDotLeft() {
// 线 x
const firstLineEndX = 1 + Math.cos((this.angle1 * Math.PI) / 180) * this.lineWidth1Rem;
// 线线 x
const secondLineXOffset = Math.cos((this.angle2 * Math.PI) / 180) * this.lineWidth2Rem;
return firstLineEndX + secondLineXOffset - 0.025;
}
}
};
</script>
<style scoped>
.line-container {
position: relative;
}
.line {
position: absolute;
height: 1px;
background-color: rgba(0, 255, 255, 0.5);
transform-origin: left center;
}
.line1 {
top: 1rem;
left: 1rem;
}
.dot {
position: absolute;
width: 0.05rem;
height: 0.05rem;
background-color: aqua;
border-radius: 50%;
}
.dot-start {
top: 0.97rem;
left: 0.97rem;
}
</style>

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

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

1432
src/views/boilerSys/steamHeating/steamHeatingDetails.vue

File diff suppressed because it is too large Load Diff

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

@ -85,7 +85,7 @@
</div> </div>
</div> </div>
<!-- 第一组冷却塔放在冷却泵连接处 --> <!-- 第一组冷却塔放在冷却泵连接处 -->
<div class="last closeLast" v-if="item.name === '自动关机'"> <div class="last openLast" v-if="item.name === '自动开机'">
<div class="reverse-img"> <div class="reverse-img">
<img src="../../../assets/images/yuan.png" class="yuan" alt="" /> <img src="../../../assets/images/yuan.png" class="yuan" alt="" />
<img src="../../../assets/images/yuan.png" class="yuan" alt="" /> <img src="../../../assets/images/yuan.png" class="yuan" alt="" />
@ -100,10 +100,10 @@
<div class="delay-input"> <div class="delay-input">
<el-input <el-input
size="mini" size="mini"
v-model="closeTower.curValue" v-model="openTower.curValue"
@keyup.enter.native="handleEnter(closeTower, $event)" @keyup.enter.native="handleEnter(openTower, $event)"
@input="handleInput(closeTower)" @input="handleInput(openTower)"
@focus="handleFocus('closeTower')" @focus="handleFocus('openTower')"
@blur="handleBlur()" @blur="handleBlur()"
></el-input ></el-input
>S >S
@ -117,12 +117,12 @@
class="butterflyValve" class="butterflyValve"
alt="" alt=""
/> />
<div>{{ closeTower.pointName }}</div> <div>{{ openTower.pointName }}</div>
</div> </div>
</div> </div>
</div> </div>
<!-- 第二组冷却塔放在主机连接处 --> <!-- 第二组冷却塔放在主机连接处 -->
<div class="last openLast" v-if="item.name === '自动开机'"> <div class="last closeLast" v-if="item.name === '自动关机'">
<div class="reverse-img"> <div class="reverse-img">
<img src="../../../assets/images/yuan.png" class="yuan" alt="" /> <img src="../../../assets/images/yuan.png" class="yuan" alt="" />
<img src="../../../assets/images/yuan.png" class="yuan" alt="" /> <img src="../../../assets/images/yuan.png" class="yuan" alt="" />
@ -137,10 +137,10 @@
<div class="delay-input"> <div class="delay-input">
<el-input <el-input
size="mini" size="mini"
v-model="openTower.curValue" v-model="closeTower.curValue"
@keyup.enter.native="handleEnter(openTower, $event)" @keyup.enter.native="handleEnter(closeTower, $event)"
@input="handleInput(openTower)" @input="handleInput(closeTower)"
@focus="handleFocus('openTower')" @focus="handleFocus('closeTower')"
@blur="handleBlur()" @blur="handleBlur()"
></el-input ></el-input
>S >S
@ -154,7 +154,7 @@
class="butterflyValve" class="butterflyValve"
alt="" alt=""
/> />
<div>{{ openTower.pointName }}</div> <div>{{ closeTower.pointName }}</div>
</div> </div>
</div> </div>
</div> </div>
@ -198,14 +198,14 @@ export default {
if (res.code == 200) { if (res.code == 200) {
// res.rows delayList // res.rows delayList
this.delayList = JSON.parse(JSON.stringify(res.rows)); this.delayList = JSON.parse(JSON.stringify(res.rows));
// closeTower // openTower
if (this.delayList[0] && this.delayList[0].values.length > 0) { if (this.delayList[0] && this.delayList[0].values.length > 0) {
// pop delayList values // pop delayList values
this.closeTower = { ...this.delayList[0].values.pop() }; this.openTower = { ...this.delayList[0].values.pop() };
} }
// openTower // closeTower
if (this.delayList[1] && this.delayList[1].values.length > 0) { if (this.delayList[1] && this.delayList[1].values.length > 0) {
this.openTower = { ...this.delayList[1].values.pop() }; this.closeTower = { ...this.delayList[1].values.pop() };
} }
} else { } else {
this.delayList = []; this.delayList = [];

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

@ -431,6 +431,30 @@ export default {
} }
} }
} }
</style>
<style scoped>
.policy-li >>> .el-input__inner {
background-color: #04193a;
border: 1px solid #1262db;
color: #3ef0fd;
font-weight: 700;
text-align: center;
padding: 0 0.1rem !important;
font-size: 0.16rem !important;
}
.policy-li >>> .el-radio {
margin-bottom: 5px;
}
.policy-li >>> .el-radio__label {
color: #3ef0fd;
}
.policy-li >>> .el-radio__inner {
border: 1px solid #042063;
/* background-color: transparent !important; */
}
.policy-li >>> .el-radio.is-bordered {
border: 1px solid #2c6afa;
}
@media (min-width: 1560px) and (max-width: 1670px) { @media (min-width: 1560px) and (max-width: 1670px) {
.policy { .policy {
padding: 70px 0.3rem 20px 40px !important; padding: 70px 0.3rem 20px 40px !important;
@ -445,6 +469,9 @@ export default {
.policy-li { .policy-li {
font-size: 14px !important; font-size: 14px !important;
} }
.policy-li >>> .el-input__inner {
font-size: 14px !important;
}
} }
@media (min-width: 1340px) and (max-width: 1400px) { @media (min-width: 1340px) and (max-width: 1400px) {
.policy { .policy {
@ -455,11 +482,14 @@ export default {
.policy-li { .policy-li {
font-size: 14px !important; font-size: 14px !important;
} }
.policy-li >>> .el-input__inner {
font-size: 14px !important;
}
.radio-style { .radio-style {
padding: 70px 0.3rem 20px 20px !important; padding: 70px 0.3rem 20px 20px !important;
.policy-li {
width: calc(50% - 20px) !important;
} }
.radio-style .policy-li {
width: calc(50% - 20px) !important;
} }
} }
@media (min-width: 1025px) and (max-width: 1340px) { @media (min-width: 1025px) and (max-width: 1340px) {
@ -474,8 +504,11 @@ export default {
.policy-li { .policy-li {
font-size: 14px !important; font-size: 14px !important;
} }
.policy-li >>> .el-input__inner {
font-size: 14px !important;
}
} }
@media (max-width: 1240px) { @media (max-width: 1180px) {
.policy { .policy {
width: calc(80% - 20px) !important; width: calc(80% - 20px) !important;
margin: 0 10px 25px 10px !important; margin: 0 10px 25px 10px !important;
@ -488,8 +521,11 @@ export default {
.policy-li { .policy-li {
font-size: 14px !important; font-size: 14px !important;
} }
.policy-li >>> .el-input__inner {
font-size: 14px !important;
}
} }
// 2000px /* 媒体查询,适配大于2000px分辨率的大屏样式 */
@media (min-width: 2000px) { @media (min-width: 2000px) {
.policy-flex { .policy-flex {
margin-top: 0.15rem !important; margin-top: 0.15rem !important;
@ -524,29 +560,6 @@ export default {
} }
.policy-li .el-radio { .policy-li .el-radio {
margin-bottom: 0.05rem !important; margin-bottom: 0.05rem !important;
} }
}
</style>
<style scoped>
.policy-li >>> .el-input__inner {
background-color: #04193a;
border: 1px solid #1262db;
color: #3ef0fd;
font-weight: 700;
text-align: center;
padding: 0 0.1rem !important;
}
.policy-li >>> .el-radio {
margin-bottom: 5px;
}
.policy-li >>> .el-radio__label {
color: #3ef0fd;
}
.policy-li >>> .el-radio__inner {
border: 1px solid #042063;
/* background-color: transparent !important; */
}
.policy-li >>> .el-radio.is-bordered {
border: 1px solid #2c6afa;
} }
</style> </style>

41
src/views/centerairC/enSourceAnalysis/components/deviceEnergy.vue

@ -86,7 +86,7 @@
> >
</el-option> </el-option>
</el-select> </el-select>
<!-- <el-select <el-select
style="margin-left: 0.12rem" style="margin-left: 0.12rem"
v-model="systemType" v-model="systemType"
placeholder="请选择系统类型" placeholder="请选择系统类型"
@ -98,7 +98,7 @@
:label="dict.dictLabel" :label="dict.dictLabel"
:value="dict.dictValue" :value="dict.dictValue"
/> />
</el-select> --> </el-select>
<div class="success-btn"> <div class="success-btn">
<el-button <el-button
type="success" type="success"
@ -156,7 +156,7 @@ export default {
deviceTypes: [], deviceTypes: [],
dateType: "hour", // dateType: "hour", //
timeDate: [], // timeDate: [], //
deviceTitle: "主机", deviceTitle: "冷水机组",
dayDate: [], // dayDate: [], //
monthDate: [], // monthDate: [], //
startYear: "", // startYear: "", //
@ -220,11 +220,7 @@ export default {
listData(data) listData(data)
.then((response) => { .then((response) => {
this.electType = []; this.electType = [];
// response.rows dictValue "0" "3" this.deviceTypes = response.rows;
this.deviceTypes = response.rows.filter((item) => {
const dictValue = parseInt(item.dictValue, 10);
return !isNaN(dictValue) && dictValue >= 0 && dictValue <= 3;
});
if (this.deviceTypes.length > 0) { if (this.deviceTypes.length > 0) {
this.deviceType = this.deviceTypes[0].dictValue; this.deviceType = this.deviceTypes[0].dictValue;
} }
@ -237,10 +233,7 @@ export default {
}, },
/** 初始化数据 */ /** 初始化数据 */
initData() { initData() {
Promise.all([ Promise.all([this.getDictList(), this.getList()])
// this.getDictList(),
this.getList(),
])
.then(() => { .then(() => {
this.getTableData(); this.getTableData();
}) })
@ -401,7 +394,7 @@ export default {
startTime: this.startTime, startTime: this.startTime,
endTime: this.endTime, endTime: this.endTime,
deviceType: this.deviceType, deviceType: this.deviceType,
systemType: 0, systemType: this.systemType,
}; };
console.log("查询数据参数", data); console.log("查询数据参数", data);
// this.option2.series[0].data = ["1"]; // this.option2.series[0].data = ["1"];
@ -432,11 +425,6 @@ export default {
this.option2.series[0].data = this.electData2; this.option2.series[0].data = this.electData2;
this.option2.xAxis.data = this.dateList2; this.option2.xAxis.data = this.dateList2;
this.option2.yAxis.name = "kwh";
this.option2.yAxis.nameTextStyle = {
color: "rgba(255, 255, 255, 1)",
fontSize: 12,
};
console.log("x轴", this.dateList2); console.log("x轴", this.dateList2);
console.log("折线图数据", this.electData2); console.log("折线图数据", this.electData2);
this.screenAdapter(); this.screenAdapter();
@ -512,8 +500,8 @@ export default {
show: false, // show: false, //
}, },
grid: { grid: {
top: "15%", top: "5%",
left: "5%", left: "3%",
right: "4.4%", right: "4.4%",
bottom: "20%", bottom: "20%",
containLabel: true, containLabel: true,
@ -628,12 +616,12 @@ export default {
// x // x
xAxis: { xAxis: {
axisLabel: { axisLabel: {
fontSize: titleFontSize * 1.4, fontSize: titleFontSize * 1.5,
}, },
}, },
yAxis: { yAxis: {
axisLabel: { axisLabel: {
fontSize: titleFontSize * 1.4, fontSize: titleFontSize * 1.5,
}, },
}, },
// X // X
@ -700,7 +688,7 @@ export default {
line-height: 0.07rem; line-height: 0.07rem;
letter-spacing: 0.02rem; letter-spacing: 0.02rem;
color: #1f70e9; color: #1f70e9;
margin: 0.3rem 0 0rem 0; margin: 0.3rem 0;
width: 100%; width: 100%;
text-align: center; text-align: center;
} }
@ -715,12 +703,7 @@ export default {
.main-content { .main-content {
min-height: 6.9rem; min-height: 6.9rem;
} }
.charts-table{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.charts_refs { .charts_refs {
width: 17rem; width: 17rem;
height: 4.55rem; height: 4.55rem;

43
src/views/centerairC/enSourceAnalysis/components/equipment.vue

@ -72,7 +72,6 @@
</el-date-picker> </el-date-picker>
</div> </div>
<el-select <el-select
style="margin: 0 10px"
multiple multiple
collapse-tags collapse-tags
class="elSelectDiv" class="elSelectDiv"
@ -87,7 +86,7 @@
:value="item.mtNum" :value="item.mtNum"
></el-option> ></el-option>
</el-select> </el-select>
<!-- <el-select <el-select
style="margin: 0 10px" style="margin: 0 10px"
v-model="systemType" v-model="systemType"
placeholder="请选择系统类型" placeholder="请选择系统类型"
@ -99,7 +98,7 @@
:label="dict.dictLabel" :label="dict.dictLabel"
:value="dict.dictValue" :value="dict.dictValue"
/> />
</el-select> --> </el-select>
<div class="success-btn"> <div class="success-btn">
<el-button type="success" @click="findData">查询</el-button> <el-button type="success" @click="findData">查询</el-button>
</div> </div>
@ -313,20 +312,9 @@ export default {
}; };
cpmList(data) cpmList(data)
.then((response) => { .then((response) => {
// system_type = 0 grade = 40
this.electTypes = response.rows.filter(
(item) => item.systemType === "0" && item.grade === 40
);
this.electType = []; this.electType = [];
if (this.electTypes.length > 3) { this.electTypes = response.rows;
this.electType = [
this.electTypes[0].mtNum,
this.electTypes[1].mtNum,
this.electTypes[2].mtNum,
];
} else if (this.electTypes.length > 0) {
this.electType = [this.electTypes[0].mtNum]; this.electType = [this.electTypes[0].mtNum];
}
console.log("this.electTypes", this.electTypes); console.log("this.electTypes", this.electTypes);
console.log("this.electType", this.electType); console.log("this.electType", this.electType);
this.handleSelectChange(); this.handleSelectChange();
@ -339,10 +327,7 @@ export default {
}, },
/** 初始化数据 */ /** 初始化数据 */
initData() { initData() {
Promise.all([ Promise.all([this.getDictList(), this.getList()])
// this.getDictList(),
this.getList(),
])
.then(() => { .then(() => {
this.getTableData(); this.getTableData();
this.getChartsData(); this.getChartsData();
@ -480,7 +465,7 @@ export default {
pageNum: this.pageParm.page, pageNum: this.pageParm.page,
pageSize: this.pageParm.pageSize, pageSize: this.pageParm.pageSize,
searchParams: this.selectElect, searchParams: this.selectElect,
systemType: "0", systemType: this.systemType,
}; };
console.log("查询数据参数", data); console.log("查询数据参数", data);
this.listLoading = true; this.listLoading = true;
@ -512,7 +497,7 @@ export default {
}; };
}), }),
]; ];
this.pageParm.total = res.data[3].total; this.pageParm.total = res.data.totalSize;
console.log("header", this.headers); console.log("header", this.headers);
} else { } else {
this.tableData = []; this.tableData = [];
@ -549,7 +534,7 @@ export default {
pageNum: 0, pageNum: 0,
pageSize: 10, pageSize: 10,
searchParams: this.selectElect, searchParams: this.selectElect,
systemType: "0", systemType: this.systemType,
}; };
console.log("查询数据参数", data); console.log("查询数据参数", data);
deviceAnalyze(data).then((res) => { deviceAnalyze(data).then((res) => {
@ -575,11 +560,6 @@ export default {
console.log("图表数据", this.dataArr); console.log("图表数据", this.dataArr);
this.option1.series = this.dataArr; this.option1.series = this.dataArr;
this.option1.xAxis.data = this.timeData; this.option1.xAxis.data = this.timeData;
this.option1.yAxis.name = "kwh";
this.option1.yAxis.nameTextStyle = {
color: "rgba(255, 255, 255, 1)",
fontSize: 12,
};
// //
this.chartInstance1.clear(); this.chartInstance1.clear();
this.screenAdapter(); this.screenAdapter();
@ -626,7 +606,7 @@ export default {
}, },
grid: { grid: {
top: "15%", top: "9%",
left: "3%", left: "3%",
right: "2%", right: "2%",
bottom: "25%", bottom: "25%",
@ -739,7 +719,6 @@ export default {
pageNum: 0, pageNum: 0,
pageSize: 10, pageSize: 10,
searchParams: this.selectElect, searchParams: this.selectElect,
systemType: "0",
}; };
console.log("导出数据参数", data); console.log("导出数据参数", data);
deviceAnalyzeExport(data).then((res) => { deviceAnalyzeExport(data).then((res) => {
@ -826,12 +805,6 @@ export default {
.main-content { .main-content {
min-height: 6.6rem; min-height: 6.6rem;
} }
.charts-table {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.elSelectDiv { .elSelectDiv {
margin-left: 15px; margin-left: 15px;
width: 250px; width: 250px;

11
src/views/centerairC/enSourceAnalysis/components/machineRoom.vue

@ -65,7 +65,7 @@
> >
</el-date-picker> </el-date-picker>
</div> </div>
<!-- <el-select <el-select
style="margin-left: 0.1rem" style="margin-left: 0.1rem"
v-model="systemType" v-model="systemType"
placeholder="请选择系统类型" placeholder="请选择系统类型"
@ -77,7 +77,7 @@
:label="dict.dictLabel" :label="dict.dictLabel"
:value="dict.dictValue" :value="dict.dictValue"
/> />
</el-select> --> </el-select>
<div class="success-btn" style="margin: 0 0.12rem"> <div class="success-btn" style="margin: 0 0.12rem">
<el-button type="success" @click="findData">查询</el-button> <el-button type="success" @click="findData">查询</el-button>
</div> </div>
@ -287,8 +287,7 @@ export default {
}, },
mounted() { mounted() {
this.initializeTimeDate(); this.initializeTimeDate();
// this.getDictList(); this.getDictList();
this.getTableData();
}, },
methods: { methods: {
/** 查询系统类型-字典数据列表 */ /** 查询系统类型-字典数据列表 */
@ -425,7 +424,7 @@ export default {
timeType: this.dateType, timeType: this.dateType,
startTime: this.startTime, startTime: this.startTime,
endTime: this.endTime, endTime: this.endTime,
systemType: "0", systemType: this.systemType,
}; };
console.log("查询数据参数", data); console.log("查询数据参数", data);
this.listLoading = true; this.listLoading = true;
@ -481,7 +480,7 @@ export default {
timeType: this.dateType, timeType: this.dateType,
startTime: this.startTime, startTime: this.startTime,
endTime: this.endTime, endTime: this.endTime,
systemType: "0", systemType: this.systemType,
}; };
console.log("导出数据参数", data); console.log("导出数据参数", data);
analyzeExport(data).then((res) => { analyzeExport(data).then((res) => {

49
src/views/centerairC/energyAnalysis/components/energyAnalysis.vue

@ -73,7 +73,7 @@
> >
</el-date-picker> </el-date-picker>
</div> </div>
<!-- <el-select <el-select
style="margin-left: 10px" style="margin-left: 10px"
v-model="systemType" v-model="systemType"
placeholder="请选择系统类型" placeholder="请选择系统类型"
@ -85,7 +85,7 @@
:label="dict.dictLabel" :label="dict.dictLabel"
:value="dict.dictValue" :value="dict.dictValue"
/> />
</el-select> --> </el-select>
<div class="success-btn" style="margin-left: 0.24rem"> <div class="success-btn" style="margin-left: 0.24rem">
<el-button type="success" @click="findData">查询</el-button> <el-button type="success" @click="findData">查询</el-button>
</div> </div>
@ -190,8 +190,7 @@ export default {
this.screenAdapter2(); this.screenAdapter2();
window.addEventListener("resize", this.screenAdapter2); window.addEventListener("resize", this.screenAdapter2);
window.addEventListener("resize", this.screenAdapter); window.addEventListener("resize", this.screenAdapter);
// this.getDictList(); this.getDictList();
this.getTableData();
}, },
destroyed() { destroyed() {
//mounted //mounted
@ -345,7 +344,7 @@ export default {
timeType: this.dateType, timeType: this.dateType,
startTime: this.startTime, startTime: this.startTime,
endTime: this.endTime, endTime: this.endTime,
systemType: "0", systemType: this.systemType,
}; };
console.log("查询数据参数", data); console.log("查询数据参数", data);
// this.showZoom = true // this.showZoom = true
@ -488,7 +487,7 @@ export default {
}, },
grid: { grid: {
top: "9%", top: "5%",
left: "3%", left: "3%",
right: "4.4%", right: "4.4%",
bottom: "20%", bottom: "20%",
@ -697,17 +696,6 @@ export default {
// //
screenAdapter2() { screenAdapter2() {
// console.log("checkList:", this.checkList); // console.log("checkList:", this.checkList);
//
// const selected = {
// EER: false,
// : false,
// : false,
// };
// const updatedSelected = {
// ...selected,
// [this.checkList]: true,
// };
//
const selected = { const selected = {
瞬时系统EER: false, 瞬时系统EER: false,
瞬时冷量: false, 瞬时冷量: false,
@ -717,26 +705,6 @@ export default {
...selected, ...selected,
[this.checkList]: true, [this.checkList]: true,
}; };
let unit;
// selected
for (const key in updatedSelected) {
if (updatedSelected[key]) {
switch (key) {
case "瞬时系统EER":
unit = "";
break;
case "瞬时冷量":
unit = "kwr";
break;
case "瞬时功率":
unit = "kw";
break;
default:
unit = "";
}
break;
}
}
// console.log(updatedSelected); // console.log(updatedSelected);
//,2.6 mes_ref //,2.6 mes_ref
const titleFontSize = this.$refs.charts_refs.offsetWidth / 130; const titleFontSize = this.$refs.charts_refs.offsetWidth / 130;
@ -749,9 +717,6 @@ export default {
// data: ["2021", "2022", "2023"], // data: ["2021", "2022", "2023"],
data: this.dateList2, data: this.dateList2,
}, },
yAxis: {
name: unit,
},
series: [ series: [
{ {
name: "瞬时系统EER", name: "瞬时系统EER",
@ -791,10 +756,6 @@ export default {
axisLabel: { axisLabel: {
fontSize: titleFontSize * 1.5, fontSize: titleFontSize * 1.5,
}, },
nameTextStyle: {
color: "rgba(255, 255, 255, 1)",
fontSize: titleFontSize * 1.3,
},
}, },
}; };
//.chartInstanceoptiondataoption //.chartInstanceoptiondataoption

9
src/views/centerairC/energyAnalysis/components/qnqAnalysis.vue

@ -84,7 +84,7 @@
> >
</el-date-picker> </el-date-picker>
</div> </div>
<!-- <el-select <el-select
style="margin-left: 10px" style="margin-left: 10px"
v-model="systemType" v-model="systemType"
placeholder="请选择系统类型" placeholder="请选择系统类型"
@ -96,7 +96,7 @@
:label="dict.dictLabel" :label="dict.dictLabel"
:value="dict.dictValue" :value="dict.dictValue"
/> />
</el-select> --> </el-select>
<div class="success-btn" style="margin-left: 0.24rem"> <div class="success-btn" style="margin-left: 0.24rem">
<el-button type="success" @click="findData">查询</el-button> <el-button type="success" @click="findData">查询</el-button>
</div> </div>
@ -190,8 +190,7 @@ export default {
this.initChart1(); this.initChart1();
window.addEventListener("resize", this.screenAdapter); window.addEventListener("resize", this.screenAdapter);
this.screenAdapter(); this.screenAdapter();
// this.getDictList(); this.getDictList();
this.getTableData();
}, },
destroyed() { destroyed() {
//mounted //mounted
@ -350,7 +349,7 @@ export default {
startTime: this.startTime, startTime: this.startTime,
endTime: this.endTime, endTime: this.endTime,
paramType: this.paramType, paramType: this.paramType,
systemType: "0", systemType: this.systemType,
}; };
console.log("查询数据参数", data); console.log("查询数据参数", data);
this.listLoading = true; this.listLoading = true;

9
src/views/centerairC/energyAnalysis/components/ynyAnalysis.vue

@ -84,7 +84,7 @@
> >
</el-date-picker> </el-date-picker>
</div> </div>
<!-- <el-select <el-select
style="margin-left: 10px" style="margin-left: 10px"
v-model="systemType" v-model="systemType"
placeholder="请选择系统类型" placeholder="请选择系统类型"
@ -96,7 +96,7 @@
:label="dict.dictLabel" :label="dict.dictLabel"
:value="dict.dictValue" :value="dict.dictValue"
/> />
</el-select> --> </el-select>
<div class="success-btn" style="margin-left: 0.24rem"> <div class="success-btn" style="margin-left: 0.24rem">
<el-button type="success" @click="findData">查询</el-button> <el-button type="success" @click="findData">查询</el-button>
</div> </div>
@ -190,8 +190,7 @@ export default {
this.initChart1(); this.initChart1();
window.addEventListener("resize", this.screenAdapter); window.addEventListener("resize", this.screenAdapter);
this.screenAdapter(); this.screenAdapter();
// this.getDictList(); this.getDictList();
this.getTableData();
}, },
destroyed() { destroyed() {
//mounted //mounted
@ -349,7 +348,7 @@ export default {
startTime: this.startTime, startTime: this.startTime,
endTime: this.endTime, endTime: this.endTime,
paramType: this.paramType, paramType: this.paramType,
systemType: "0", systemType: this.systemType,
}; };
console.log("查询数据参数", data); console.log("查询数据参数", data);
this.listLoading = true; this.listLoading = true;

9
src/views/centerairC/energyAnalysis/components/ynyQnqAnalysis.vue

@ -84,7 +84,7 @@
> >
</el-date-picker> </el-date-picker>
</div> </div>
<!-- <el-select <el-select
style="margin-left: 10px" style="margin-left: 10px"
v-model="systemType" v-model="systemType"
placeholder="请选择系统类型" placeholder="请选择系统类型"
@ -96,7 +96,7 @@
:label="dict.dictLabel" :label="dict.dictLabel"
:value="dict.dictValue" :value="dict.dictValue"
/> />
</el-select> --> </el-select>
<div class="success-btn" style="margin-left: 0.24rem"> <div class="success-btn" style="margin-left: 0.24rem">
<el-button type="success" @click="findData">查询</el-button> <el-button type="success" @click="findData">查询</el-button>
</div> </div>
@ -199,8 +199,7 @@ export default {
this.initChart1(); this.initChart1();
window.addEventListener("resize", this.screenAdapter); window.addEventListener("resize", this.screenAdapter);
this.screenAdapter(); this.screenAdapter();
// this.getDictList(); this.getDictList();
this.getTableData();
}, },
destroyed() { destroyed() {
//mounted //mounted
@ -337,7 +336,7 @@ export default {
startTime: this.startTime, startTime: this.startTime,
endTime: this.endTime, endTime: this.endTime,
paramType: this.paramType, paramType: this.paramType,
systemType: "0", systemType: this.systemType,
}; };
console.log("查询数据参数", data); console.log("查询数据参数", data);
this.listLoading = true; this.listLoading = true;

911
src/views/centerairC/hostRunReport/index.vue

@ -1,911 +0,0 @@
<template>
<div class="app-container">
<div class="btn-condition">
<div class="condition-left" v-show="showSearch">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
>
<el-form-item label="主机编号" prop="deviceNum">
<el-select
v-model="queryParams.deviceNum"
placeholder="请选择主机编号"
clearable
>
<el-option label="1号主机" value="1" />
<el-option label="2号主机" value="2" />
<el-option label="3号主机" value="3" />
</el-select>
</el-form-item>
<el-form-item label="日期范围" prop="timeArr">
<el-date-picker
style="width: 220px"
v-model="timeArr"
type="daterange"
unlink-panels
range-separator="~"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
@change="dateChange"
>
</el-date-picker>
</el-form-item>
</el-form>
<div class="primary-btn">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
</div>
<div class="cancel-btn">
<el-button
type="cancel"
icon="el-icon-refresh"
size="mini"
@click="resetQuery"
>重置</el-button
>
</div>
</div>
</div>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">
<div class="success-btn">
<el-button
type="success"
@click="leadingPrint"
icon="el-icon-printer"
size="mini"
>打印</el-button
>
</div>
</el-col> -->
<el-col :span="1.5">
<div class="warning-btn">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button
>
</div>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="postList" stripe>
<!-- <el-table-column label="主机id" align="center" prop="deviceNum" /> -->
<el-table-column label="时间" align="center" prop="curTime" />
<el-table-column label="蒸发器">
<el-table-column
label="冷冻水进水温度(℃)"
align="center"
prop="tempInChillerWater" />
<el-table-column
label="冷冻水出水温度(℃)"
align="center"
prop="tempOutChillerWater" />
<el-table-column label="设计流量(%)" align="center" prop="designFlow" />
<el-table-column
label="蒸发器压力(kpa)"
align="center"
prop="pressEvapSaturation" />
<el-table-column
label="蒸发器饱和温度(℃)"
align="center"
prop="tempEvapSaturation" />
<el-table-column
label="蒸发器趋近温度(℃)"
align="center"
prop="tempEvapApproaching"
/></el-table-column>
<el-table-column label="冷凝器">
<el-table-column
label="冷却水进水温度(℃)"
align="center"
prop="tempInCoolingWater"
/>
<el-table-column
label="冷却水出水温度(℃)"
align="center"
prop="tempOutCoolingWater"
/>
<el-table-column
label="冷凝器压力(kpa)"
align="center"
prop="pressCondenserSaturation"
/>
<el-table-column
label="冷凝器饱和温度(℃)"
align="center"
prop="tempCondenserSaturation"
/>
<el-table-column
label="冷凝器趋近温度(℃)"
align="center"
prop="tempCondenserApproaching"
/>
</el-table-column>
<el-table-column label="系统">
<el-table-column
label="冷冻水设定值(℃)"
align="center"
prop="setChillerWater"
/>
<el-table-column label="冷水机需求(%)" align="center" prop="setLoad" />
<el-table-column label="总电流(%)" align="center" prop="currentTotal" />
<el-table-column
label="总输入功率(kw)"
align="center"
prop="inputPowerTotal"
/>
<el-table-column
label="压缩机1_压缩比"
align="center"
prop="ratioCompOne"
/>
<el-table-column
label="压缩机2_压缩比"
align="center"
prop="ratioCompTwo"
/>
<el-table-column
label="压缩机3_压缩比"
align="center"
prop="ratioCompThree"
/>
<el-table-column label="膨胀阀开度(%)" align="center" prop="openExv" />
<el-table-column
label="运行中的压缩机数量"
align="center"
prop="runCompNum"
/>
</el-table-column>
<el-table-column label="冷冻泵">
<el-table-column
label="冷冻水泵频率(hz)"
align="center"
prop="frequencyChiller"
/>
<el-table-column
label="冷冻水出水压力(kpa)"
align="center"
prop="pressOutChillerWater"
/>
<el-table-column
label="冷冻水进水压力(kpa)"
align="center"
prop="pressInChillerWater"
/>
</el-table-column>
<el-table-column label="冷却泵">
<el-table-column
label="冷却水泵频率(hz)"
align="center"
prop="frequencyCooling"
/>
<el-table-column
label="冷却水出水压力(kpa)"
align="center"
prop="pressOutCoolingWater"
/>
<el-table-column
label="冷却水进水压力(kpa)"
align="center"
prop="pressInCoolingWater"
/>
</el-table-column>
<el-table-column label="冷却塔">
<el-table-column
label="冷却塔水泵频率(hz)"
align="center"
prop="frequencyCoolingTower"
/>
<el-table-column
label="冷却塔运行数量"
align="center"
prop="runCoolingTower"
/>
</el-table-column>
<el-table-column label="室外温度(℃)" align="center" prop="tempOutdoor" />
<el-table-column
label="室外湿度(%)"
align="center"
prop="humidityOutdoor"
/>
<el-table-column
label="恒压补水罐压力(Mpa)"
align="center"
prop="pressConstantWaterTank"
/>
<el-table-column label="巡查记录人" align="center" prop="recorder" />
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['device:ledger:edit']"
>修改</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改设备台账对话框 -->
<el-dialog :title="title" :visible.sync="open" append-to-body>
<el-form ref="form" :model="form" :rules="rules">
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="主机编号" prop="deviceNum">
<el-select
v-model="form.deviceNum"
placeholder="请选择主机编号"
disabled
>
<el-option label="1号主机" value="1" />
<el-option label="2号主机" value="2" />
<el-option label="3号主机" value="3" />
</el-select> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="设计流量(%)" prop="designFlow">
<el-input v-model="form.designFlow" placeholder="请输入流量(%)" />
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="冷冻水进水温度(℃)" prop="tempInChillerWater">
<el-input
v-model="form.tempInChillerWater"
placeholder="请输入温度(℃)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="冷冻水出水温度(℃)" prop="tempOutChillerWater">
<el-input
v-model="form.tempOutChillerWater"
placeholder="请输入温度(℃)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="蒸发器饱和温度(℃)" prop="tempEvapSaturation">
<el-input
v-model="form.tempEvapSaturation"
placeholder="请输入温度(℃)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="蒸发器趋近温度(℃)" prop="tempEvapApproaching">
<el-input
v-model="form.tempEvapApproaching"
placeholder="请输入温度(℃)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="蒸发器压力(kpa)" prop="pressEvapSaturation">
<el-input
v-model="form.pressEvapSaturation"
placeholder="请输入压力(kpa)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item
label="冷凝器压力(kpa)"
prop="pressCondenserSaturation"
>
<el-input
v-model="form.pressCondenserSaturation"
placeholder="请输入压力(kpa)"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="冷却水进水温度(℃)" prop="tempInCoolingWater">
<el-input
v-model="form.tempInCoolingWater"
placeholder="请输入温度(℃)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="冷却水出水温度(℃)" prop="tempOutCoolingWater">
<el-input
v-model="form.tempOutCoolingWater"
placeholder="请输入温度(℃)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item
label="冷凝器饱和温度(℃)"
prop="tempCondenserSaturation"
>
<el-input
v-model="form.tempCondenserSaturation"
placeholder="请输入温度(℃)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item
label="冷凝器趋近温度(℃)"
prop="tempCondenserApproaching"
>
<el-input
v-model="form.tempCondenserApproaching"
placeholder="请输入温度(℃)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="冷冻水设定值(℃)" prop="setChillerWater">
<el-input
v-model="form.setChillerWater"
placeholder="请输入温度(℃)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="冷水机需求(%)" prop="setLoad">
<el-input v-model="form.setLoad" placeholder="请输入(%)" />
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="总输入功率(kw)" prop="inputPowerTotal">
<el-input
v-model="form.inputPowerTotal"
placeholder="请输入功率(kw)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="总电流(%)" prop="currentTotal">
<el-input v-model="form.currentTotal" placeholder="请输入(%)" />
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="压缩机1_压缩比" prop="ratioCompOne">
<el-input
v-model="form.ratioCompOne"
placeholder="请输入压缩比"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="压缩机2_压缩比" prop="ratioCompTwo">
<el-input
v-model="form.ratioCompTwo"
placeholder="请输入压缩比"
/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="压缩机3_压缩比" prop="ratioCompThree">
<el-input
v-model="form.ratioCompThree"
placeholder="请输入压缩比"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="膨胀阀开度(%)" prop="openExv">
<el-input v-model="form.openExv" placeholder="请输入(%)" />
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="运行中的压缩机数量" prop="runCompNum">
<el-input
v-model="form.runCompNum"
placeholder="请输入数量"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="冷冻水泵频率(hz)" prop="frequencyChiller">
<el-input v-model="form.openExv" placeholder="请输入频率(hz)" />
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item
label="冷冻水出水压力(kpa)"
prop="pressOutChillerWater"
>
<el-input
v-model="form.pressOutChillerWater"
placeholder="请输入压力(kpa)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item
label="冷冻水进水压力(kpa)"
prop="pressInChillerWater"
>
<el-input
v-model="form.pressInChillerWater"
placeholder="请输入压力(kpa)"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item
label="冷却水出水压力(kpa)"
prop="pressOutCoolingWater"
>
<el-input
v-model="form.pressOutCoolingWater"
placeholder="请输入压力(kpa)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item
label="冷却水进水压力(kpa)"
prop="pressInCoolingWater"
>
<el-input
v-model="form.pressInCoolingWater"
placeholder="请输入压力(kpa)"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="冷却水泵频率(hz)" prop="frequencyCooling">
<el-input
v-model="form.frequencyCooling"
placeholder="请输入频率(hz)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item
label="冷却塔水泵频率(hz)"
prop="frequencyCoolingTower"
>
<el-input
v-model="form.frequencyCoolingTower"
placeholder="请输入频率(hz)"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="冷却塔运行数量" prop="runCoolingTower">
<el-input
v-model="form.runCoolingTower"
placeholder="请输入数量"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item
label="恒压补水罐压力(Mpa)"
prop="pressConstantWaterTank"
>
<el-input
v-model="form.pressConstantWaterTank"
placeholder="请输入压力(Mpa)"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="室外温度" prop="tempOutdoor">
<el-input
v-model="form.tempOutdoor"
placeholder="请输入温度(℃)"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="室外湿度(%)" prop="humidityOutdoor">
<el-input
v-model="form.humidityOutdoor"
placeholder="请输入湿度(%)"
/> </el-form-item
></el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-form-item label="巡查记录人" prop="recorder">
<el-input
v-model="form.recorder"
placeholder="请输入巡查记录人"
/> </el-form-item
></el-col>
<el-col :span="12">
<el-form-item label="备注" prop="remark">
<el-input
v-model="form.remark"
placeholder="请输入备注"
/> </el-form-item
></el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button>
</div>
</el-dialog>
<el-dialog
:visible.sync="dialogPrintVisible"
title="打印预览"
class="print-dialog"
>
<div id="report" ref="report" class="report">
<table
border="1"
style="
table-layout: fixed;
width: 100%;
border: 1px solid #e2e6f0;
margin-bottom: 35px;
"
>
<thead>
<tr>
<th rowspan="1" colspan="32">磁悬浮水冷冷水机组数据运行记录表</th>
</tr>
<tr>
<th>主机id</th>
<th>时间</th>
<th colspan="6">蒸发器</th>
<th colspan="5">冷凝器</th>
<th colspan="7">系统</th>
<th colspan="3">冷冻泵</th>
<th colspan="3">冷却泵</th>
<th colspan="2">冷却塔</th>
<th>室外温度()</th>
<th>室外湿度(%)</th>
<th>恒压补水罐压力(Mpa)</th>
<th>巡查记录人</th>
</tr>
<tr>
<th></th>
<th></th>
<th>冷冻水进水温度()</th>
<th>冷冻水出水温度()</th>
<th>设计流量(%)</th>
<th>蒸发器压力(kpa)</th>
<th>蒸发器饱和温度()</th>
<th>蒸发器趋近温度()</th>
<th>冷却水进水温度()</th>
<th>冷却水出水温度()</th>
<th>冷凝器压力(kpa)</th>
<th>冷凝器饱和温度()</th>
<th>冷凝器趋近温度()</th>
<th>冷冻水设定值()</th>
<th>冷水机需求(%)</th>
<th>总电流(%)</th>
<th>总输入功率(kw)</th>
<th>压缩机1_压缩比</th>
<th>膨胀阀开度(%)</th>
<th>运行中的压缩机数量</th>
<th>冷冻水泵频率(hz)</th>
<th>冷冻水出水压力(kpa)</th>
<th>冷冻水进水压力(kpa)</th>
<th>冷却水泵频率(hz)</th>
<th>冷却水出水压力(kpa)</th>
<th>冷却水进水压力(kpa)</th>
<th>冷却塔水泵频率(hz)</th>
<th>冷却塔运行数量</th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tr v-for="(item, index) in postList" :key="index">
<td align="center" v-for="(value, key) in item" :key="key">
{{ value }}
</td>
</tr>
</table>
<div
class="detail"
style="
display: flex;
flex-direction: row;
font-size: 14px;
justify-content: space-between;
flex-wrap: nowrap;
width: 40%;
color: #ffffff;
"
>
<div>操作员: {{ this.userName }}</div>
<div class="print-date">日期 {{ this.operationDate }}</div>
</div>
</div>
<el-row type="flex" justify="end" style="margin-top: 0.2rem">
<el-col :span="2">
<el-button type="info" @click="dialogPrintVisible = false"
>取消</el-button
>
</el-col>
<el-col :span="2" style="margin-left: 60px">
<el-button type="success" @click="surePrint">确认</el-button>
</el-col>
</el-row>
</el-dialog>
</div>
</template>
<script>
import {
reportSysList,
reportSysEdit,
reportSysExport,
} from "@/api/centerairC/hostRunReport";
import { format2, getDay } from "@/utils/datetime";
export default {
name: "ledger",
data() {
return {
timeArr: [],
//
loading: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
postList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
deviceNum: "",
params: {
startTime: "",
endTime: "",
},
},
//
form: {},
//
rules: {
deviceName: [
{ required: true, message: "设备名称不能为空", trigger: "blur" },
],
},
dialogPrintVisible: false,
userName: "", //
operationDate: getDay(0), //
titleDate: "",
};
},
created() {
this.userName = sessionStorage.getItem("userName");
this.queryParams.deviceNum = "1";
this.getList();
},
methods: {
//
dateChange() {
// console.log("", this.timeArr);
if (!this.timeArr) {
this.$nextTick(() => {
this.timeArr = [];
this.queryParams.params.startTime = "";
this.queryParams.params.endTime = "";
});
} else {
this.queryParams.params.startTime = this.timeArr[0];
this.queryParams.params.endTime = this.timeArr[1];
}
},
/** 查询设备台账列表 */
getList() {
this.loading = true;
reportSysList(this.queryParams).then((response) => {
if (response.code == 200) {
this.postList = response.rows;
this.total = response.total;
this.loading = false;
} else {
this.postList = [];
this.total = 0;
this.loading = false;
}
});
},
//
cancel() {
this.open = false;
this.reset();
this.form.id = "";
},
//
reset() {
this.form = {
id: "",
deviceNum: "",
curTime: "",
tempInChillerWater: "",
tempOutChillerWater: "",
designFlow: "",
pressEvapSaturation: "",
tempEvapSaturation: "",
tempEvapApproaching: "",
tempInCoolingWater: "",
tempOutCoolingWater: "",
pressCondenserSaturation: "",
tempCondenserSaturation: "",
tempCondenserApproaching: "",
setChillerWater: "",
setLoad: "",
currentTotal: "",
inputPowerTotal: "",
ratioCompOne: "",
openExv: "",
runCompNum: "",
frequencyChiller: "",
pressOutChillerWater: "",
pressInChillerWater: "",
frequencyCooling: "",
pressOutCoolingWater: "",
pressInCoolingWater: "",
frequencyCoolingTower: "",
runCoolingTower: "",
pressConstantWaterTank: "",
tempOutdoor: "",
humidityOutdoor: "",
recorder: "",
remark: "",
ratioCompTwo: "",
ratioCompThree: "",
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.form = Object.assign({}, row);
this.open = true;
this.title = "修改主机运行记录";
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != undefined) {
reportSysEdit(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
console.log("新增参数", this.form);
}
}
});
},
/** 导出按钮操作 */
handleExport() {
reportSysExport(this.queryParams).then((res) => {
console.log("导出返回", res);
//
// blob URL
const url = window.URL.createObjectURL(new Blob([res]));
// <a>hrefdownload
const link = document.createElement("a");
link.href = url;
link.setAttribute("download", "主机运行记录报表.xls"); //
//
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// blob URL
window.URL.revokeObjectURL(url);
this.$message({
type: "success",
message: "导出成功!",
});
});
},
//
leadingPrint() {
this.dialogPrintVisible = true;
},
//
surePrint() {
const printHTML = document.querySelector("#report").innerHTML;
//
window.document.body.innerHTML = printHTML;
window.print(); // window
window.location.reload(); //
},
},
};
</script>
<style scoped lang="scss">
/* 媒体查询,适配大于2000px分辨率的大屏样式 - element样式 */
@media (max-width: 2000px) {
::v-deep .el-dialog {
width: 800px !important;
}
::v-deep .print-dialog .el-dialog {
width: 1200px !important;
}
::v-deep .el-dialog .el-form-item__label {
width: 150px !important;
}
::v-deep .el-dialog .el-form-item {
display: flex;
flex-direction: row;
align-items: center;
}
}
@media (min-width: 2000px) {
// ::v-deep .el-dialog {
// width: 8rem !important;
// }
// ::v-deep .el-dialog .el-form-item__label {
// width: 1.5rem !important;
// }
// ::v-deep .el-dialog .el-form-item {
// display: flex;
// flex-direction: row;
// align-items: center;
// }
}
</style>

19
src/views/centerairC/overview/index.vue

@ -73,7 +73,7 @@
> >
</el-date-picker> </el-date-picker>
</div> </div>
<!-- <el-select <el-select
style="margin-left: 0.12rem" style="margin-left: 0.12rem"
v-model="systemType" v-model="systemType"
placeholder="请选择系统类型" placeholder="请选择系统类型"
@ -85,7 +85,7 @@
:label="dict.dictLabel" :label="dict.dictLabel"
:value="dict.dictValue" :value="dict.dictValue"
/> />
</el-select> --> </el-select>
<div class="success-btn"> <div class="success-btn">
<el-button <el-button
type="success" type="success"
@ -115,7 +115,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="copData" label="EER"> </el-table-column> <el-table-column prop="copData" label="EER"> </el-table-column>
</el-table> </el-table>
<div class="page"> <div class="page" >
<el-pagination <el-pagination
background background
style="width: 100%; height: 20%" style="width: 100%; height: 20%"
@ -241,9 +241,7 @@ export default {
this.initChart2(); this.initChart2();
this.screenAdapter(); this.screenAdapter();
window.addEventListener("resize", this.screenAdapter); window.addEventListener("resize", this.screenAdapter);
// this.getDictList(); this.getDictList();
this.getTableData();
this.getChartsData();
this.userName = sessionStorage.getItem("userName"); this.userName = sessionStorage.getItem("userName");
}, },
destroyed() { destroyed() {
@ -414,7 +412,7 @@ export default {
endTime: this.endTime, endTime: this.endTime,
pageNum: this.pageParm.page, pageNum: this.pageParm.page,
pageSize: this.pageParm.pageSize, pageSize: this.pageParm.pageSize,
systemType: "0", systemType: this.systemType,
}; };
console.log("查询数据参数", data); console.log("查询数据参数", data);
this.listLoading = true; this.listLoading = true;
@ -427,7 +425,7 @@ export default {
electData: res.data[1].meter[index].toString(), // electData: res.data[1].meter[index].toString(), //
copData: res.data[2].cop[index].toString(), // copData: res.data[2].cop[index].toString(), //
})); }));
this.pageParm.total = res.data[5].total; this.pageParm.total = res.data.totalSize;
} else { } else {
this.tableData = []; this.tableData = [];
} }
@ -457,7 +455,7 @@ export default {
endTime: this.endTime, endTime: this.endTime,
pageNum: 0, pageNum: 0,
pageSize: 10, pageSize: 10,
systemType: "0", systemType: this.systemType,
}; };
console.log("查询数据参数", data); console.log("查询数据参数", data);
energyInquiry(data).then((res) => { energyInquiry(data).then((res) => {
@ -887,7 +885,6 @@ export default {
endTime: this.endTime, endTime: this.endTime,
pageNum: 0, pageNum: 0,
pageSize: 10, pageSize: 10,
systemType: "0",
}; };
console.log("导出数据参数", data); console.log("导出数据参数", data);
exportData(data).then((res) => { exportData(data).then((res) => {
@ -994,7 +991,7 @@ export default {
align-items: center; align-items: center;
width: 16rem; width: 16rem;
} }
.page { .page{
margin-top: 0.22rem; margin-top: 0.22rem;
} }

11
src/views/centerairC/sysMonitor/components/hostChart.vue

@ -3,7 +3,6 @@
<div class="historyCharts" ref="chart_ref"></div> <div class="historyCharts" ref="chart_ref"></div>
</div> </div>
</template> </template>
<script> <script>
import * as echarts from "echarts"; import * as echarts from "echarts";
export default { export default {
@ -41,7 +40,6 @@ export default {
const titleStr = data[1].titleStr; const titleStr = data[1].titleStr;
// dataList // dataList
const dataList = data[3].dataList; const dataList = data[3].dataList;
// dataList // dataList
dataList.forEach((item) => { dataList.forEach((item) => {
// name title // name title
@ -57,18 +55,15 @@ export default {
let name3 = ""; let name3 = "";
let name4 = ""; let name4 = "";
let name5 = ""; let name5 = "";
data.forEach((item) => { data.forEach((item) => {
if (item.timeStr) { if (item.timeStr) {
this.bottomData = item.timeStr; this.bottomData = item.timeStr;
} }
if (item.dataList) { if (item.dataList) {
// name // name
const names = []; const names = [];
// chartData // chartData
const chartData = []; const chartData = [];
// //
let loadDataIndex = -1; let loadDataIndex = -1;
for (let i = 0; i < item.dataList.length; i++) { for (let i = 0; i < item.dataList.length; i++) {
@ -82,12 +77,10 @@ export default {
break; break;
} }
} }
// //
if (loadDataIndex !== -1) { if (loadDataIndex !== -1) {
item.dataList.splice(loadDataIndex, 1); item.dataList.splice(loadDataIndex, 1);
} }
// //
item.dataList.slice(0, 4).forEach((val, index) => { item.dataList.slice(0, 4).forEach((val, index) => {
if (val.name) { if (val.name) {
@ -95,13 +88,11 @@ export default {
names[index] = val.name; names[index] = val.name;
} }
}); });
// chartData this.chartDataX // chartData this.chartDataX
this.chartData1 = chartData[0] || ""; this.chartData1 = chartData[0] || "";
this.chartData2 = chartData[1] || ""; this.chartData2 = chartData[1] || "";
this.chartData3 = chartData[2] || ""; this.chartData3 = chartData[2] || "";
this.chartData4 = chartData[3] || ""; this.chartData4 = chartData[3] || "";
// names // names
name1 = names[0] || ""; name1 = names[0] || "";
name2 = names[1] || ""; name2 = names[1] || "";
@ -522,10 +513,10 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.historyCharts { .historyCharts {
width: 100%; width: 100%;
height: 4.4rem; height: 4.4rem;
} }
</style> </style>

8
src/views/centerairC/sysMonitor/components/loadData.vue

@ -3,7 +3,6 @@
<div class="sys_charts" ref="sys_charts"></div> <div class="sys_charts" ref="sys_charts"></div>
</div> </div>
</template> </template>
<script> <script>
import * as echarts from "echarts"; import * as echarts from "echarts";
export default { export default {
@ -29,7 +28,7 @@ export default {
let data = newVal; let data = newVal;
if (data.length > 0) { if (data.length > 0) {
data.forEach((item) => { data.forEach((item) => {
if (item.otherName === "负载") { if (item.paramType === "28") {
this.loadPercent = item.curValue; this.loadPercent = item.curValue;
} }
}); });
@ -62,7 +61,6 @@ export default {
// //
// 0.75使 // 0.75使
const threshold = maxData * 0.75; const threshold = maxData * 0.75;
// //
if (useData > threshold) { if (useData > threshold) {
return [ return [
@ -116,7 +114,6 @@ export default {
triggerEvent: true, triggerEvent: true,
}, },
], ],
legend: { legend: {
show: false, show: false,
}, },
@ -372,7 +369,6 @@ export default {
show: false, show: false,
}, },
}, },
// //
{ {
type: "gauge", type: "gauge",
@ -441,10 +437,10 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.sys_charts { .sys_charts {
width: 2rem; width: 2rem;
height: 2rem; height: 2rem;
} }
</style> </style>

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

File diff suppressed because it is too large Load Diff

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

File diff suppressed because it is too large Load Diff

185
src/views/centerairC/sysMonitor/performance.vue

@ -9,7 +9,6 @@
<img <img
class="title-center" class="title-center"
src="../../../assets/images/title-center.png" src="../../../assets/images/title-center.png"
@click="goSys"
alt="" alt=""
/> />
<img <img
@ -17,7 +16,7 @@
src="../../../assets/images/title-right.png" src="../../../assets/images/title-right.png"
alt="" alt=""
/> />
<div class="sys-title" @click="goSys">铭汉高效冷源站管理系统</div> <div class="sys-title">铭汉高效冷源站管理系统</div>
<!-- logo --> <!-- logo -->
<img src="../../../assets/images/logo-3.png" class="sys-logo" alt="" /> <img src="../../../assets/images/logo-3.png" class="sys-logo" alt="" />
<div class="nowTime">{{ formattedDate }}</div> <div class="nowTime">{{ formattedDate }}</div>
@ -398,7 +397,7 @@ import {
import { alarmRecordList } from "@/api/alarm/alarmRecord"; import { alarmRecordList } from "@/api/alarm/alarmRecord";
import titleImg from "./components/titleImg.vue"; import titleImg from "./components/titleImg.vue";
import { format } from "@/utils/datetime"; import { format } from "@/utils/datetime";
import PerformanceChart from "./components/performanceChart.vue"; import PerformanceChart from './components/performanceChart.vue';
export default { export default {
name: "sysControl", name: "sysControl",
components: { titleImg, PerformanceChart }, components: { titleImg, PerformanceChart },
@ -493,7 +492,7 @@ export default {
}, },
// //
goSys() { goSys() {
// this.exitFullscreen(); this.exitFullscreen();
this.$router.push("/"); this.$router.push("/");
}, },
// //
@ -529,7 +528,7 @@ export default {
}); });
}, },
goWarning() { goWarning() {
// this.exitFullscreen(); this.exitFullscreen();
this.$router.push("/alarm/alarmRecord"); this.$router.push("/alarm/alarmRecord");
}, },
}, },
@ -558,11 +557,11 @@ export default {
} }
.title-center { .title-center {
width: 9.46rem; width: 9.46rem;
height: 0.8rem; height: 0.69rem;
} }
.title-right { .title-right {
width: 5.04rem; width: 5.04rem;
height: 0.78rem; height: 0.61rem;
} }
.sys-title { .sys-title {
position: absolute; position: absolute;
@ -573,11 +572,10 @@ export default {
color: #ffffff; color: #ffffff;
font-weight: bold; font-weight: bold;
z-index: 100; z-index: 100;
cursor: pointer;
} }
.nowTime { .nowTime {
position: absolute; position: absolute;
top: 0.37rem; top: 0.3rem;
right: 0.6rem; right: 0.6rem;
font-size: 0.18rem; font-size: 0.18rem;
color: #ffffff; color: #ffffff;
@ -603,11 +601,11 @@ export default {
} }
.icon_warning { .icon_warning {
position: absolute; position: absolute;
top: 0.39rem; top: 0.33rem;
right: 4.4rem; right: 4.4rem;
z-index: 10; z-index: 10;
width: 0.35rem; width: 0.3rem;
height: 0.32rem; height: 0.27rem;
margin: 0 0.25rem 0 0.27rem; margin: 0 0.25rem 0 0.27rem;
cursor: pointer; cursor: pointer;
/* 添加闪烁动画 */ /* 添加闪烁动画 */
@ -623,21 +621,21 @@ export default {
} }
.icon_home { .icon_home {
position: absolute; position: absolute;
top: 0.39rem; top: 0.33rem;
right: 4rem; right: 4rem;
z-index: 10; z-index: 10;
width: 0.35rem; width: 0.3rem;
height: 0.32rem; height: 0.27rem;
margin: 0 0.2rem 0 0.27rem; margin: 0 0.2rem 0 0.27rem;
cursor: pointer; cursor: pointer;
} }
.back-icon { .back-icon {
position: absolute; position: absolute;
top: 0.39rem; top: 0.33rem;
right: 3.7rem; right: 3.7rem;
z-index: 10; z-index: 10;
width: 0.35rem; width: 0.3rem;
height: 0.32rem; height: 0.27rem;
cursor: pointer; cursor: pointer;
} }
} }
@ -671,7 +669,7 @@ export default {
height: 2.6rem; height: 2.6rem;
margin-bottom: 0.1rem; margin-bottom: 0.1rem;
} }
.host-name { .host-name{
position: absolute; position: absolute;
top: 0.8rem; top: 0.8rem;
left: 1.6rem; left: 1.6rem;
@ -716,6 +714,153 @@ export default {
flex-wrap: wrap; flex-wrap: wrap;
align-items: flex-start; align-items: flex-start;
justify-content: center; justify-content: center;
.detail-data-li {
width: 80%;
margin-right: 0.1rem;
position: relative;
color: #89acc4;
font-family: Arial, sans-serif;
letter-spacing: 0.02rem;
font-size: 0.18rem;
position: relative;
margin-bottom: 0.08rem;
border-left: 0.01rem solid #217df5;
border-right: 0.01rem solid #217df5;
background-image: radial-gradient(
circle at left top,
#217df5 0.01rem,
transparent 0.01rem
),
radial-gradient(
circle at right top,
#217df5 0.01rem,
transparent 0.01rem
),
radial-gradient(
circle at left bottom,
#217df5 0.01rem,
transparent 0.01rem
),
radial-gradient(
circle at right bottom,
#217df5 0.01rem,
transparent 0.01rem
);
background-repeat: no-repeat;
background-position: left top, right top, left bottom, right bottom;
}
.detail-data-li::before,
.detail-data-li::after {
content: "";
position: absolute;
left: 0;
right: 0;
height: 0.01rem;
background-image: linear-gradient(
to right,
#217df5 0%,
rgba(41, 128, 185, 0) 50%,
#217df5 100%
) !important;
}
.year-data {
margin-top: 0.1rem;
}
.rightDot {
position: relative;
width: 100%;
height: 100%;
z-index: 999;
}
.leftDot {
position: relative;
width: 100%;
height: 100%;
padding: 0.04rem 0.1rem;
display: flex;
flex-direction: row;
justify-content: space-between;
.dotData {
font-weight: bold;
margin: 0 0.06rem;
color: #3b80ff;
display: flex;
align-items: center;
}
.dotUnit{
width: 0.55rem;
text-align: left;
display: flex;
align-items: center;
}
}
.rightDot::before {
content: "";
position: absolute;
top: -0.03rem;
right: -0.03rem;
width: 0.06rem;
height: 0.06rem;
background-color: #217df5;
box-shadow: 0 0 0.1rem 0.02rem rgba(33, 125, 245, 0.9);
background-image: radial-gradient(
circle at 30% 30%,
rgba(255, 255, 255, 0.8) 0%,
rgba(255, 255, 255, 0) 70%
);
border-radius: 50%;
}
.rightDot::after {
content: "";
position: absolute;
bottom: -0.03rem;
right: -0.03rem;
width: 0.06rem;
height: 0.06rem;
background-color: #217df5;
box-shadow: 0 0 0.1rem 0.02rem rgba(33, 125, 245, 0.9);
background-image: radial-gradient(
circle at 30% 30%,
rgba(255, 255, 255, 0.8) 0%,
rgba(255, 255, 255, 0) 70%
);
border-radius: 50%;
}
.leftDot::before {
content: "";
position: absolute;
top: -0.03rem;
left: -0.03rem;
width: 0.06rem;
height: 0.06rem;
background-color: #217df5;
border-radius: 50%;
box-shadow: 0 0 0.1rem 0.02rem rgba(33, 125, 245, 0.9);
background-image: radial-gradient(
circle at 30% 30%,
rgba(255, 255, 255, 0.8) 0%,
rgba(255, 255, 255, 0) 70%
);
}
.leftDot::after {
content: "";
position: absolute;
bottom: -0.03rem;
left: -0.03rem;
width: 0.06rem;
height: 0.06rem;
background-color: #217df5;
box-shadow: 0 0 0.1rem 0.02rem rgba(33, 125, 245, 0.9);
background-image: radial-gradient(
circle at 30% 30%,
rgba(255, 255, 255, 0.8) 0%,
rgba(255, 255, 255, 0) 70%
);
border-radius: 50%;
}
} }
.line1 { .line1 {
position: absolute; position: absolute;
@ -728,7 +873,7 @@ export default {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
height: 3rem; height:3rem;
// background-color: #217df5; // background-color: #217df5;
} }
} }

430
src/views/centerairC/temHistoryQuery/index.vue

@ -1,430 +0,0 @@
<template>
<div class="app-container">
<div class="btn-condition">
<div class="condition-left" v-show="showSearch">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
>
<el-form-item label="日期" prop="msgCode">
<el-date-picker
style="width: auto"
v-model="monthValue"
type="month"
placeholder="选择月"
value-format="yyyy-MM"
>
</el-date-picker>
</el-form-item>
</el-form>
<div class="primary-btn">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
</div>
<div class="warning-btn">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button
>
</div>
<div class="cancel-btn">
<el-button
type="cancel"
icon="el-icon-refresh"
size="mini"
@click="resetQuery"
>重置</el-button
>
</div>
</div>
</div>
<div class="charts" ref="chart_ref"></div>
<el-table
v-loading="loading"
:data="postList"
stripe
:cell-style="tableRowStyle"
>
<el-table-column label="日期" align="center" prop="dateAndWeek" />
<el-table-column label="最高气温" align="center" prop="maxTemp" />
<el-table-column label="最低气温" align="center" prop="minTemp" />
<el-table-column label="天气" align="center" prop="weatherConditions" />
<el-table-column label="风向" align="center" prop="windDirection" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import { weatherTempData } from "@/api/centerairC/temHistory";
import * as echarts from "echarts";
export default {
name: "temHistoryQuery",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
postList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
startTime: "",
endTime: "",
},
monthValue: "",
chartInstance: null,
option: {},
};
},
created() {
//
const currentDate = new Date();
//
const year = currentDate.getFullYear();
// 0 1
const month = String(currentDate.getMonth() + 1).padStart(2, "0");
// yyyy-MM
this.monthValue = `${year}-${month}`;
},
mounted() {
this.getList();
this.initChart();
window.addEventListener("resize", this.screenAdapter);
this.screenAdapter();
this.getChartData();
},
methods: {
tableRowStyle({ row, column, rowIndex, columnIndex }) {
//
if (columnIndex === 1) {
return "color: #fd1e00;!important;text-align:center";
}
if (columnIndex === 2) {
return "color: #3390ff;!important;text-align:center";
}
if (columnIndex === 4) {
return "color: #75d148;!important;text-align:center";
}
// return "text-align:center";
},
/** 查询报警编码列表 */
getList() {
this.loading = true;
this.queryParams.startTime = this.queryParams.endTime = this.monthValue;
console.log("参数", this.queryParams);
weatherTempData(this.queryParams).then((response) => {
this.postList = response.rows;
this.total = response.total;
this.loading = false;
});
},
getChartData() {
this.loading = true;
this.queryParams.pageNum = 0;
this.queryParams.startTime = this.queryParams.endTime = this.monthValue;
console.log("图表参数", this.queryParams);
weatherTempData(this.queryParams).then((response) => {
console.log("处理值然后渲染");
if (response.rows.length > 0) {
let data = response.rows;
let timeValue = [];
let hightValue = [];
let lowValue = [];
data.forEach((element) => {
timeValue.push(element.weatherDate);
hightValue.push(element.maxTemp);
lowValue.push(element.minTemp);
});
let adapterOption = {};
adapterOption = {
xAxis: {
data: timeValue,
},
yAxis: {
name: "℃",
nameTextStyle: {
color: "rgba(255, 255, 255, 1)",
fontSize: 12,
},
},
series: [
{
data: hightValue,
//线
itemStyle: {
color: "rgb(18, 126, 226)", //线
},
lineStyle: {
color: "rgb(18, 126, 226)", //线
},
},
{
data: lowValue,
//线
itemStyle: {
color: "rgb(250, 169, 19)", //线
},
lineStyle: {
color: "rgb(250, 169, 19)", //线
},
},
],
};
//.chartInstanceoptiondataoption
this.chartInstance.setOption(adapterOption);
//resize
this.chartInstance.resize();
} else {
let adapterOption = {};
adapterOption = {
xAxis: {
data: [],
},
series: [
{
data: [],
},
{
data: [],
},
],
};
//.chartInstanceoptiondataoption
this.chartInstance.setOption(adapterOption);
//resize
this.chartInstance.resize();
}
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
this.getChartData();
},
/** 重置按钮操作 */
resetQuery() {
this.handleQuery();
},
/** 导出按钮操作 */
handleExport() {
this.queryParams.pageNum = 1;
this.queryParams.pageSize = 32;
this.queryParams.startTime = this.queryParams.endTime = this.monthValue;
console.log("参数", this.queryParams);
weatherTempData(this.queryParams).then((response) => {
if (response.code == 200) {
import("@/assets/excel/Export2Excel").then((excel) => {
var tHeader = ["日期", "最高气温", "最低气温", "天气", "风向"]; // excel
var filterVal = [
"dateAndWeek",
"maxTemp",
"minTemp",
"weatherConditions",
"windDirection",
];
const data = this.formatJson(filterVal, response.rows);
const autoWidth = true;
excel.export_json_to_excel({
header: tHeader, //
data, //
filename: "历史天气报表", //
autoWidth: true, //
});
this.$message({
type: "success",
message: "导出成功!",
});
});
} else {
this.$message.error("导出失败!");
}
});
},
//,
formatJson(filterVal, jsonData) {
return jsonData.map((v) =>
filterVal.map((j) => {
if (j === "installDate") {
return format(v[j]);
} else {
return v[j];
}
})
);
},
// 线+ + 线
screenAdapter() {
//,2.6 mes_ref
const titleFontSize = this.$refs.chart_ref.offsetWidth / 130;
//optionoption
const adapterOption = {};
//.chartInstanceoptiondataoption
this.chartInstance.setOption(adapterOption);
//resize
this.chartInstance.resize();
},
//chartInstance
initChart() {
this.chartInstance = echarts.init(this.$refs.chart_ref);
const titleFontSize = this.$refs.chart_ref.offsetWidth / 100;
this.option = {
tooltip: {
// axis x
trigger: "axis",
textStyle: {
//
fontSize: titleFontSize,
},
},
legend: {
show: false,
// textStyle: {
// //
// fontSize: 14
// }
},
grid: {
top: "10%",
left: "4%",
right: "6%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "category",
//true
boundaryGap: true,
// x
axisLabel: {
// interval: 0, //x
// rotate: 30, //x30
color: "rgba(255, 255, 255, 1)",
fontSize: titleFontSize, //x
},
axisTick: {
show: false, // 线
},
// x
axisLine: {
show: true,
lineStyle: {
color: "#365576",
},
},
splitLine: {
lineStyle: {
color: "#e2e6f0",
},
}, //x线
},
yAxis: {
min: 0,
// max:20,
// name: "kwh", // y
// name
nameTextStyle: {
color: "rgba(255, 255, 255, 1)",
fontSize: 12, //y
},
miniInterval: 5,
type: "value",
// y
axisLabel: {
color: "rgba(255, 255, 255, 1)",
fontSize: titleFontSize, //x
},
// y
axisLine: {
show: true,
lineStyle: {
color: "#365576", // y 线
},
},
//y线
// splitNumber: 10,
// y线
splitLine: {
lineStyle: {
color: "#1a3d62", // 线
type: "dashed", // 线线
},
},
},
series: [
{
type: "line",
//
symbolSize: titleFontSize * 0.5,
lineStyle: {
// 线
width: titleFontSize * 0.1,
},
symbol: "circle",
name: "最高气温",
},
{
type: "line",
//
symbolSize: titleFontSize * 0.5,
lineStyle: {
// 线
width: titleFontSize * 0.1,
},
symbol: "circle",
name: "最低气温",
},
],
};
//
this.chartInstance.setOption(this.option, true);
},
},
};
</script>
<style lang="scss" scoped>
.charts {
width: 100%;
height: 300px;
margin-bottom: 0.1rem;
}
// 2000px
@media (min-width: 2000px) {
.charts {
height: 3rem !important;
}
}
</style>

2
src/views/centerairC/timeSwitch/index.vue

@ -102,7 +102,7 @@ export default {
// console.log("child.pointName", child.pointName); // console.log("child.pointName", child.pointName);
if (child.pointName) { if (child.pointName) {
// - // -
if (child.pointName.includes(`开_`)) { if (child.pointName.includes(`开_`)) {
// console.log("-·························"); // console.log("-·························");
delayItem.delayOpenHour = child.curValue; delayItem.delayOpenHour = child.curValue;
delayItem.delayOpenHourId = child.cpmId; delayItem.delayOpenHourId = child.cpmId;

53
src/views/components/hotWater.vue

@ -1,23 +1,28 @@
<template> <template>
<div class="card-div"> <div class="card-div">
<div <div class="card-li room-temp">
class="card-li room-temp"
v-for="(item, index) in temData"
:key="index"
>
<div class="card-header"> <div class="card-header">
<h2 class="card-title">{{ item.name }}</h2> <h2 class="card-title">回水平均温度</h2>
<div class="icon"> <div class="icon">
<i class="fas fa-home"></i> <i class="fas fa-home"></i>
</div> </div>
</div> </div>
<div class="thermometer"> <div class="thermometer">
<div <div class="temprogress" :style="{ height: temData1 * 2 + '%' }"></div>
class="temprogress"
:style="{ height: item.value * 2 + '%' }"
></div>
</div> </div>
<div class="temperature">{{ item.value }}</div> <div class="temperature">{{temData1}}</div>
</div>
<div class="card-li amb-temp">
<div class="card-header">
<h2 class="card-title">供水平均温度</h2>
<div class="icon">
<i class="fas fa-home"></i>
</div>
</div>
<div class="thermometer">
<div class="temprogress" :style="{ height: temData2 * 2 + '%' }"></div>
</div>
<div class="temperature">{{temData2}}</div>
</div> </div>
</div> </div>
</template> </template>
@ -34,20 +39,18 @@ export default {
return { return {
temData1: "", temData1: "",
temData2: "", temData2: "",
temData: [],
}; };
}, },
watch: { watch: {
subData: { subData: {
immediate: true, // immediate: true, //
handler(newVal) { handler(newVal) {
console.log("检测到传过来的温度数据", this.subData); console.log("检测到传功来的数据", this.subData);
if (Object.keys(newVal).length > 0) { if (Object.keys(newVal).length > 0) {
console.log("newval", newVal); console.log("newval", newVal);
let data = newVal; let data = newVal;
this.temData1 = ""; this.temData1 = "";
this.temData2 = ""; this.temData2 = "";
this.temData = newVal;
data.forEach((item) => { data.forEach((item) => {
if (item.name.includes("回水")) { if (item.name.includes("回水")) {
this.temData1 = parseInt(item.value); this.temData1 = parseInt(item.value);
@ -68,12 +71,11 @@ export default {
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin: 0.1rem 0;
.card-li { .card-li {
width: 50%; width: 50%;
padding: 0.2rem 0;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
@ -81,6 +83,7 @@ export default {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-bottom: 0.1rem;
.card-title { .card-title {
font-size: 15px; font-size: 15px;
font-weight: 600; font-weight: 600;
@ -94,11 +97,11 @@ export default {
display: inline-block; display: inline-block;
} }
.thermometer { .thermometer {
height: 100px; height: 180px;
width: 25px; width: 40px;
background: #3d5581; background: #3d5581;
border-radius: 20px; border-radius: 20px;
margin: 0 auto 0.1rem; margin: 0 auto 0.25rem;
overflow: hidden; overflow: hidden;
box-shadow: inset 0 0 1rem rgba(0, 0, 0, 0.1); box-shadow: inset 0 0 1rem rgba(0, 0, 0, 0.1);
position: relative; position: relative;
@ -108,17 +111,13 @@ export default {
bottom: 0; bottom: 0;
width: 100%; width: 100%;
border-top-left-radius: 20px; border-top-left-radius: 20px;
border-top-right-radius: 20px; border-top-right-radius:20px;
background: linear-gradient(to top, #3498db, #2ecc71) !important; background: linear-gradient(to top, #3498db, #2ecc71) !important;
} }
} }
.card-li:nth-child(1),
.card-li:nth-child(2) {
padding-bottom: 15px;
}
} }
@media (min-width: 2000px) { @media (min-width: 2000px) {
.card-div { .card-div {
.card-li { .card-li {
.card-header { .card-header {
.card-title { .card-title {
@ -135,9 +134,9 @@ export default {
} }
.temprogress { .temprogress {
border-top-left-radius: 0.2rem !important; border-top-left-radius: 0.2rem !important;
border-top-right-radius: 0.2rem !important; border-top-right-radius:0.2rem !important;
}
} }
} }
} }
}
</style> </style>

38
src/views/components/viewColdSys.vue

@ -9,12 +9,6 @@
import * as echarts from "echarts"; import * as echarts from "echarts";
import { viewMainParams } from "@/api/index"; import { viewMainParams } from "@/api/index";
export default { export default {
props: {
subData: {
type: Array,
required: true,
},
},
data() { data() {
return { return {
chartInstance: null, chartInstance: null,
@ -42,24 +36,11 @@ export default {
}, },
}; };
}, },
watch: {
subData: {
immediate: true, //
handler(newVal) {
// console.log("", this.subData);
if (Object.keys(newVal).length > 0) {
console.log("newval", newVal);
this.$nextTick(() => {
this.echartsData();
});
}
},
},
},
mounted() { mounted() {
this.initChart(); this.initChart();
this.screenAdapter(); this.screenAdapter();
window.addEventListener("resize", this.screenAdapter); window.addEventListener("resize", this.screenAdapter);
this.getChartsData();
}, },
destroyed() { destroyed() {
//mounted //mounted
@ -460,17 +441,20 @@ export default {
this.chartInstance.resize(); this.chartInstance.resize();
}, },
// //
echartsData() { getChartsData() {
if (this.subData.length > 0) { viewMainParams().then((res) => {
console.log("系统参数返回", res);
console.log("冷源监控返回", res.rows[0]);
if (res.code == 200) {
this.useForm.maxData = 10; this.useForm.maxData = 10;
this.useForm.useData = this.subData[0].value; this.useForm.useData = res.rows[0].values[0].value;
let that = this; let that = this;
// 使 // 使
const axisLineColor = this.getAxisLineColor( const axisLineColor = this.getAxisLineColor(
this.useForm.useData, this.useForm.useData,
this.useForm.maxData this.useForm.maxData
); );
const titleFontSize = this.$refs.sys_charts.offsetWidth / 20; const titleFontSize = this.$refs.sys_charts.offsetWidth / 30;
const adapterOption = { const adapterOption = {
series: [ series: [
{ {
@ -568,6 +552,7 @@ export default {
//resize //resize
this.chartInstance.resize(); this.chartInstance.resize();
} }
});
}, },
}, },
}; };
@ -584,7 +569,7 @@ export default {
.sys_charts { .sys_charts {
width: 100%; width: 100%;
height: 150px; height: 1.6rem;
} }
.eer { .eer {
font-size: 18px; font-size: 18px;
@ -593,9 +578,6 @@ export default {
} }
// 2000px // 2000px
@media (min-width: 2000px) { @media (min-width: 2000px) {
.sys_charts {
height: 1.5rem !important;
}
.eer { .eer {
font-size: 0.18rem !important; font-size: 0.18rem !important;
margin-top: 0.25rem !important; margin-top: 0.25rem !important;

13
src/views/components/viewEnergy.vue

@ -81,12 +81,16 @@ export default {
); );
console.log("当前要渲染的数据对象", chartsObj); console.log("当前要渲染的数据对象", chartsObj);
console.log("当前要渲染的颜色对象", colorObj); console.log("当前要渲染的颜色对象", colorObj);
const titleFontSize = this.$refs.chart_ref.offsetWidth / 50; const titleFontSize = this.$refs.chart_ref.offsetWidth / 100;
let adapterOption = {}; let adapterOption = {};
// 线 // 线
adapterOption = { adapterOption = {
tooltip: { tooltip: {
trigger: "axis", trigger: "axis",
textStyle: {
//
fontSize: titleFontSize,
},
// tooltip // tooltip
formatter: function (params) { formatter: function (params) {
var res = params[0].name + "<br/>"; var res = params[0].name + "<br/>";
@ -139,9 +143,13 @@ export default {
{ {
data: chartsObj.data, data: chartsObj.data,
name: event, name: event,
//
symbolSize: titleFontSize * 0.5,
//线 //线
itemStyle: { itemStyle: {
color: colorObj.color, //线 color: colorObj.color, //线
// 线
width: titleFontSize * 0.1,
}, },
lineStyle: { lineStyle: {
color: colorObj.color, //线 color: colorObj.color, //线
@ -291,9 +299,6 @@ export default {
.right-table { .right-table {
padding: 27px 15px 35px 15px; padding: 27px 15px 35px 15px;
} }
.choice {
margin-left: 0 !important;
}
.mr20 { .mr20 {
width: 92px; width: 92px;
padding: 2px; padding: 2px;

377
src/views/comprehensiveEnergy/meterRecord/index.vue

@ -1,377 +0,0 @@
<template>
<div class="app-container">
<div class="btn-condition">
<div class="condition-left" v-show="showSearch">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
>
<el-form-item label="日期" prop="msgCode">
<el-date-picker
style="width: auto"
v-model="dayValue"
type="date"
placeholder="选择日"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-form>
<div class="primary-btn">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
</div>
<div class="warning-btn">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button
>
</div>
</div>
</div>
<div class="meter-Context">
<div class="meter-li">最低气温:{{ lowValue }}</div>
<div class="meter-li">最高气温:{{ heightValue }}</div>
<!-- <div class="meter-li">住房量:108</div> -->
</div>
<el-table
:data="tableData"
:span-method="arraySpanMethod"
:cell-style="tableRowStyle"
border
style="width: 100%"
v-loading="loading"
>
<el-table-column prop="mtType" label="名称" width="180">
<template #default="{ row, $index }">
<!-- 当是第 xx 行时显示 位置 的值 -->
<span
v-if="
$index === 15 || $index === 20 || $index === 23 || $index === 24
"
>{{ row.location }}</span
>
<!-- 否则显示名称的值 -->
<span v-else>{{ row.mtType }}</span>
</template>
</el-table-column>
<el-table-column prop="location" label="位置"> </el-table-column>
<el-table-column prop="mtNum" sortable label="编号"> </el-table-column>
<el-table-column prop="yesterdayReading" sortable label="昨日读数">
</el-table-column>
<el-table-column prop="todayReading" sortable label="今日读数">
</el-table-column>
<el-table-column prop="mtRatio" sortable label="倍率"> </el-table-column>
<el-table-column prop="total" sortable label="合计">
<template #default="{ row, $index }">
<!-- 当是第 27 行时显示 amount7费用 的值 -->
<span v-if="$index === 26">{{ row.cost }}</span>
<!-- 否则显示合计的值 -->
<span v-else>{{ row.total }}</span>
</template>
</el-table-column>
<el-table-column prop="unitPrice" sortable label="单价">
</el-table-column>
<el-table-column prop="cost" sortable label="费用"> </el-table-column>
</el-table>
<el-table
:data="tableData2"
:span-method="objectSpanMethod"
border
style="width: 100%; margin-top: 20px"
>
<el-table-column prop="mtType" label="" width="180"> </el-table-column>
<el-table-column prop="location" label="分项"> </el-table-column>
<el-table-column prop="yesterdayReading" label="昨日流量">
</el-table-column>
<el-table-column prop="todayReading" label="今日流量"> </el-table-column>
<el-table-column prop="total" label="用量"> </el-table-column>
<el-table-column prop="remake" label="备注"> </el-table-column>
</el-table>
</div>
</template>
<script>
import { weatherTempData } from "@/api/centerairC/temHistory";
import {
meterReadingsList,
meterReadingsExport,
} from "@/api/comprehensiveEnergy/meterRecord";
export default {
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
postList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 0,
pageSize: 10,
startTime: "",
endTime: "",
},
dayValue: "",
monthValue: "",
lowValue: "", //
heightValue: "", //
tableData: [],
tableData2: [],
};
},
created() {
//
const currentDate = new Date();
//
const previousDate = new Date(currentDate);
previousDate.setDate(currentDate.getDate() - 1);
//
const year = previousDate.getFullYear();
// 0 1
const month = String(previousDate.getMonth() + 1).padStart(2, "0");
//
const day = String(previousDate.getDate()).padStart(2, "0");
// yyyy-MM-dd
this.dayValue = `${year}-${month}-${day}`;
// yyyy-MM
const currentYear = currentDate.getFullYear();
const currentMonth = String(currentDate.getMonth() + 1).padStart(2, "0");
this.monthValue = `${currentYear}-${currentMonth}`;
},
mounted() {
this.getList();
},
methods: {
tableRowStyle({ row, column, rowIndex, columnIndex }) {
//
// if (columnIndex === 1) {
// return "color: #fd1e00;!important;text-align:center";
// }
// if (columnIndex === 2) {
// return "color: #3390ff;!important;text-align:center";
// }
if (
rowIndex === 15 ||
rowIndex === 20 ||
rowIndex === 23 ||
rowIndex === 24
) {
return "color: #75d148;!important;font-weight: bold;background-color: rgba(0, 71, 125, 0.4)";
}
},
// 1
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
// console.log("", row, column, rowIndex, columnIndex);
// // rowIndexx columnIndexy
// // rowIndex % 2 === 0
// if (rowIndex % 2 === 0) {
// // 0
// if (columnIndex === 0) {
// //
// return [1, 2];
// } else if (columnIndex === 1) {
// // [0, 0]
// return [0, 0];
// }
// }
if (
rowIndex === 15 ||
rowIndex === 20 ||
rowIndex === 23 ||
rowIndex === 24
) {
if (columnIndex === 0) {
// rowIndex 15 columnIndex 0 1 6
return [1, 6];
} else if (columnIndex < 6) {
// rowIndex 15 columnIndex 6
return [0, 0];
}
}
if (rowIndex === 26) {
if (columnIndex < 6) {
if (columnIndex === 0) {
//
return [1, 6];
} else {
//
return [0, 0];
}
} else if (columnIndex >= 6) {
if (columnIndex === 6) {
//
return [1, 3];
} else {
//
return [0, 0];
}
}
}
//
return [1, 1];
},
// 2
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
if (rowIndex === 0) {
return {
rowspan: 4,
colspan: 1,
};
} else {
return {
rowspan: 0,
colspan: 0,
};
}
}
},
/** 查询表格数据 */
getList() {
this.loading = true;
if (!this.dayValue) {
this.$modal.msgWarning("请选择日期!");
return;
}
let data = {
todayTimestamp: `${this.dayValue} 00:00:00`,
};
meterReadingsList(data).then((res) => {
console.log("列表返回", res);
if (res.code == 200 && res.rows) {
this.tableData = res.rows.slice(0, 25);
this.tableData2 = res.rows.slice(25, 27);
this.loading = false;
} else {
this.tableData = [];
this.tableData2 = [];
this.loading = false;
}
});
//
this.getTemValue();
},
getTemValue() {
if (this.dayValue) {
//
const parts = this.dayValue.split("-");
this.monthValue = `${parts[0]}-${parts[1]}`;
}
this.queryParams.startTime = this.queryParams.endTime = this.monthValue;
console.log("参数", this.queryParams);
weatherTempData(this.queryParams).then((response) => {
let data = response.rows;
console.log("response.rows", response.rows);
console.log("this.dayValue", this.dayValue);
if (data && data.length > 0) {
data.forEach((item) => {
if (item.dateAndWeek) {
let objectDate = item.dateAndWeek.split(" ")[0];
console.log(" objectDate", item.dateAndWeek);
if (objectDate == this.dayValue) {
this.lowValue = item.minTemp;
this.heightValue = item.maxTemp;
console.log("最低气温", this.lowValue);
console.log("最高气温", this.heightValue);
}
}
});
}
});
},
/** 搜索按钮操作 */
handleQuery() {
this.getList();
},
/** 导出按钮操作 */
handleExport() {
let data = {
todayTimestamp: `${this.dayValue} 00:00:00`,
};
console.log("导出数据参数", data);
meterReadingsExport(data).then((res) => {
console.log("导出返回", res);
if (res) {
//
// blob URL
const url = window.URL.createObjectURL(new Blob([res]));
// <a>hrefdownload
const link = document.createElement("a");
link.href = url;
link.setAttribute("download", "水电表抄表记录.xls"); //
//
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// blob URL
window.URL.revokeObjectURL(url);
this.$message({
type: "success",
message: "导出成功!",
});
} else {
this.$message.error("导出失败!");
}
});
// .catch((err) => {
// this.$message.error('!');
// })
},
},
};
</script>
<style scoped>
.app-container >>> .el-table th.el-table__cell.is-leaf,
.app-container >>> .el-table td.el-table__cell {
border-bottom: 1px solid #000000 !important;
}
.app-container >>> .el-table--border .el-table__cell {
border-right: 1px solid #000000 !important;
}
</style>
<style lang="scss" scoped>
.meter-Context {
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
border: 1px solid #000000 !important;
padding: 0 30px;
.meter-li {
line-height: 23px;
padding: 10px 0;
height: 45px;
color: #ffffff;
font-size: 14px;
margin-right: 30px;
}
}
</style>

777
src/views/comprehensiveEnergy/systemEnergy/index.vue

@ -1,777 +0,0 @@
<template>
<div class="main-body">
<div class="irregular-border">
<div class="main-content">
<div class="condition">
<div class="condition-left">
<div class="time-label">时间类型:</div>
<el-radio-group
v-model="dateType"
style="margin-right: 0.24rem"
@change="updateDateType"
>
<el-radio label="hour">小时</el-radio>
<el-radio label="day"></el-radio>
<el-radio label="month"></el-radio>
<el-radio label="year"></el-radio>
</el-radio-group>
<el-date-picker
v-model="timeDate"
:default-time="['00:00:00', '23:59:59']"
type="datetimerange"
range-separator="至"
v-if="dateType == 'hour'"
placeholder="选择日期"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
<el-date-picker
v-model="dayDate"
type="daterange"
v-if="dateType == 'day'"
:key="this.dateType"
range-separator="至"
value-format="yyyy-MM-dd"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="dateChange"
>
</el-date-picker>
<el-date-picker
v-model="monthDate"
type="monthrange"
v-if="dateType == 'month'"
:key="this.dateType"
range-separator="至"
start-placeholder="开始月份"
end-placeholder="结束月份"
value-format="yyyy-MM"
@change="dateChange"
>
</el-date-picker>
<div
class="years-div"
v-if="dateType == 'year'"
:key="this.dateType"
>
<el-date-picker
v-model="startYear"
type="year"
placeholder="选择开始年份"
style="width: 180px"
value-format="yyyy"
>
</el-date-picker>
<div class="years-word"></div>
<el-date-picker
v-model="endYear"
type="year"
placeholder="选择结束年份"
style="width: 180px"
value-format="yyyy"
>
</el-date-picker>
</div>
<div class="success-btn" style="margin-left: 0.24rem">
<el-button type="success" @click="findData">查询</el-button>
</div>
<div class="warning-btn">
<el-button type="warning" @click="goExport()">导出</el-button>
</div>
</div>
</div>
<div class="choice">
<div
class="mr20"
v-for="(item, index) in timeData2"
:key="index"
@click="handleEnter(index, $event)"
:class="{ timeStyle: currentIndex == index }"
>
{{ item.title }}
</div>
</div>
<div class="charts" ref="chart_ref"></div>
<el-table :data="tableData" stripe>
<el-table-column label="时间" align="center" prop="time" />
<el-table-column
label="总用电量(kwh)"
align="center"
prop="electValue"
/>
<el-table-column
label="总产冷量(kw)"
align="center"
prop="coldValue"
/>
<el-table-column
label="总热水补水量(t)"
align="center"
prop="hotValue"
/>
<el-table-column
label="总蒸汽流量(t)"
align="center"
prop="steamValue"
/>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getTableData"
/>
</div>
</div>
</div>
</template>
<script>
import { format2 } from "@/utils/datetime";
import * as echarts from "echarts";
import { compreReport } from "@/api/comprehensiveEnergy/systemEnergy";
export default {
data() {
return {
listLoading: false,
dateType: "hour", //
timeDate: [], //
dayDate: [], //
monthDate: [], //
startYear: "", //
endYear: "", //
startTime: "", //
endTime: "", //
//
total: 0,
//
tableData: [],
exportData: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
startTime: "",
endTime: "",
},
brokenInstanc: null,
brokenOption: {},
timeData2: [
{ title: "总用电量" },
{ title: "总产冷量" },
{ title: "总热水补水量" },
{ title: "总蒸汽流量" },
],
currentIndex: 0,
brokenData1: [],
brokenData2: [],
brokenData3: [],
brokenData4: [],
brokenTime: [],
useWater: 0,
useWaterRadio: 0,
useElect: 0,
useElectRadio: 0,
useUnit: 0,
useUnitRadio: 0,
};
},
mounted() {
this.initializeTimeDate();
this.getTableData();
this.initChart();
window.addEventListener("resize", this.screenAdapter);
this.screenAdapter();
},
destroyed() {
//
window.removeEventListener("resize", this.screenAdapter);
},
methods: {
//
initializeTimeDate() {
const start = new Date(new Date().setHours(0, 0, 0, 0));
const end = new Date(new Date().setHours(23, 59, 59, 59));
this.timeDate = [format2(start), format2(end)]; //
this.titleDate = format2(start) + "至" + format2(end);
},
//
updateDateType() {
// this.dateType = this.radio;
console.log(this.dateType);
(this.timeDate = []), //
(this.dayDate = []), //
(this.monthDate = []), //
(this.startYear = ""), //
(this.endYear = ""); //
},
//
dateChange() {
// console.log("", this.timeform.time1);
if (!this.dayDate) {
this.$nextTick(() => {
this.dayDate = [];
});
}
if (!this.monthDate) {
this.$nextTick(() => {
this.monthDate = [];
});
}
},
//
findData() {
console.log("this.dateType", this.dateType);
console.log("this.timeDate", this.timeDate);
switch (this.dateType) {
case "hour":
if (!this.timeDate) {
this.showMessage("请选择时间!", "warning");
} else {
this.titleDate =
format2(this.timeDate[0]) + "至" + format2(this.timeDate[1]);
this.getTableData();
}
break;
case "day":
if (this.dayDate.length === 0) {
this.showMessage("请选择时间!", "warning");
} else {
const newLength =
new Date(this.dayDate[1]).getTime() -
new Date(this.dayDate[0]).getTime();
const dayDiff = Math.floor(newLength / (1000 * 60 * 60 * 24));
if (dayDiff > 31) {
this.showMessage(
"最多只能选择30天区间,请重新选择再查询!",
"warning"
);
} else {
this.titleDate = this.dayDate[0] + "至" + this.dayDate[1];
this.getTableData();
}
}
break;
case "month":
if (this.monthDate.length === 0) {
this.showMessage("请选择时间!", "warning");
} else {
const [start, end] = this.monthDate;
const startDate = new Date(start);
const endDate = new Date(end);
const startYear = startDate.getFullYear();
const startMonth = startDate.getMonth();
const endYear = endDate.getFullYear();
const endMonth = endDate.getMonth();
const monthDiff =
(endYear - startYear) * 12 + (endMonth - startMonth);
if (monthDiff > 12) {
this.showMessage(
"最多只能选择12个月区间,请重新选择再查询!",
"warning"
);
} else {
this.titleDate = this.monthDate[0] + "至" + this.monthDate[1];
this.getTableData();
}
}
break;
case "year":
if (!this.startYear || !this.endYear) {
this.showMessage("请选择全年份区间!", "warning");
} else if (this.startYear > this.endYear) {
this.showMessage("结束年份要大于开始年份!", "warning");
} else {
this.titleDate = this.startYear + "至" + this.endYear;
this.getTableData();
}
break;
default:
break;
}
},
//
showMessage(message, type) {
this.$message({
message: message,
type: type,
});
},
handleEnter(index) {
this.currentIndex = index;
this.renderingBroken();
},
//
getTableData() {
if (this.dateType == "hour") {
this.startTime = format2(this.timeDate[0]);
this.endTime = format2(this.timeDate[1]);
} else if (this.dateType == "day") {
this.startTime = this.dayDate.length > 0 ? this.dayDate[0] : "";
this.endTime = this.dayDate.length > 0 ? this.dayDate[1] : "";
} else if (this.dateType == "month") {
this.startTime = this.monthDate.length > 0 ? this.monthDate[0] : "";
this.endTime = this.monthDate.length > 0 ? this.monthDate[1] : "";
} else if (this.dateType == "year") {
(this.startTime = this.startYear), (this.endTime = this.endYear);
}
let data = {
timeType: this.dateType,
startTime: this.startTime,
endTime: this.endTime,
pageNum: this.queryParams.pageNum,
pageSize: this.queryParams.pageSize,
};
console.log("查询数据参数", data);
this.listLoading = true;
compreReport(data).then((res) => {
console.log("表格返回的数据", res);
if (res.code == 200 && res.rows.length > 0) {
this.tableData = res.rows;
this.total = res.total;
} else {
this.tableData = [];
this.total = 0;
}
this.getChartData();
});
// Just to simulate the time of the request
setTimeout(() => {
this.listLoading = false;
}, 1.0 * 1000);
},
//线
getChartData() {
if ((this.total == 10)) {
//
console.log("不用请求");
this.brokenData1 = [];
this.brokenData2 = [];
this.brokenData3 = [];
this.brokenData4 = [];
this.brokenTime = [];
if (this.tableData.length > 0) {
this.exportData = this.tableData;
this.tableData.forEach((item) => {
this.brokenData1.push(item.electValue);
this.brokenData2.push(item.coldValue);
this.brokenData3.push(item.hotValue);
this.brokenData4.push(item.steamValue);
this.brokenTime.push(item.time);
});
this.renderingBroken();
} else {
this.brokenData1 = [];
this.brokenData2 = [];
this.brokenData3 = [];
this.brokenData4 = [];
this.brokenTime = [];
}
this.renderingBroken();
} else {
console.log("图表参数", this.queryParams);
if (this.dateType == "hour") {
this.startTime = format2(this.timeDate[0]);
this.endTime = format2(this.timeDate[1]);
} else if (this.dateType == "day") {
this.startTime = this.dayDate.length > 0 ? this.dayDate[0] : "";
this.endTime = this.dayDate.length > 0 ? this.dayDate[1] : "";
} else if (this.dateType == "month") {
this.startTime = this.monthDate.length > 0 ? this.monthDate[0] : "";
this.endTime = this.monthDate.length > 0 ? this.monthDate[1] : "";
} else if (this.dateType == "year") {
(this.startTime = this.startYear), (this.endTime = this.endYear);
}
let data = {
timeType: this.dateType,
startTime: this.startTime,
endTime: this.endTime,
pageNum: 1,
pageSize: this.total,
};
compreReport(data).then((res) => {
console.log("图表返回的数据", res);
this.brokenData1 = [];
this.brokenData2 = [];
this.brokenData3 = [];
this.brokenData4 = [];
this.brokenTime = [];
if (res.code == 200 && res.rows.length > 0) {
this.exportData = res.rows;
res.rows.forEach((item) => {
this.brokenData1.push(item.electValue);
this.brokenData2.push(item.coldValue);
this.brokenData3.push(item.hotValue);
this.brokenData4.push(item.steamValue);
this.brokenTime.push(item.time);
});
this.renderingBroken();
} else {
this.brokenData1 = [];
this.brokenData2 = [];
this.brokenData3 = [];
this.brokenData4 = [];
this.brokenTime = [];
}
this.renderingBroken();
});
}
},
renderingBroken() {
if (this.currentIndex === 0) {
this.brokenOption.yAxis.name = "kwh";
this.brokenOption.yAxis.nameTextStyle = {
color: "rgba(255, 255, 255, 1)",
fontSize: 12,
};
this.brokenOption.series[0].data = this.brokenData1;
this.brokenOption.series[0].itemStyle.color = "#d48e17";
this.brokenOption.series[0].areaStyle.color.colorStops = [
{
offset: 0,
color: "rgba(212, 142, 23, 0.3)", // 0%
},
{
offset: 0.8,
color: "rgba(212, 142, 23,0)", // 100%
},
];
} else if (this.currentIndex === 1) {
this.brokenOption.yAxis.name = "kw";
this.brokenOption.yAxis.nameTextStyle = {
color: "rgba(255, 255, 255, 1)",
fontSize: 12,
};
this.brokenOption.series[0].data = this.brokenData2;
this.brokenOption.series[0].itemStyle.color = "#1ab395";
this.brokenOption.series[0].areaStyle.color.colorStops = [
{
offset: 0,
color: "rgba(26, 179, 149, 0.3)", // 0%
},
{
offset: 0.8,
color: "rgba(26, 179, 149,0)", // 100%
},
];
} else if (this.currentIndex === 2) {
this.brokenOption.yAxis.name = "t";
this.brokenOption.yAxis.nameTextStyle = {
color: "rgba(255, 255, 255, 1)",
fontSize: 12,
};
this.brokenOption.series[0].data = this.brokenData3;
this.brokenOption.series[0].itemStyle.color = "#1f8dee";
this.brokenOption.series[0].areaStyle.color.colorStops = [
{
offset: 0,
color: "rgba(31, 141, 238, 0.3)", // 0%
},
{
offset: 0.8,
color: "rgba(31, 141, 238,0)", // 100%
},
];
} else if (this.currentIndex === 3) {
this.brokenOption.yAxis.name = "t";
this.brokenOption.yAxis.nameTextStyle = {
color: "rgba(255, 255, 255, 1)",
fontSize: 12,
};
this.brokenOption.series[0].data = this.brokenData4;
this.brokenOption.series[0].itemStyle.color = "#f1f524";
this.brokenOption.series[0].areaStyle.color.colorStops = [
{
offset: 0,
color: "rgba(241, 245, 36, 0.3)", // 0%
},
{
offset: 0.8,
color: "rgba(241, 245, 36,0)", // 100%
},
];
}
//
const currentIndex = this.currentIndex;
// tooltip
this.brokenOption.tooltip = {
trigger: "axis",
formatter: function (params) {
//
const data = params[0];
const month = data.name;
const value = data.value;
//
if (currentIndex === 0) {
return `${month}<br/>总用电量: ${value}`;
} else if (currentIndex === 1) {
return `${month}<br/>总产冷量: ${value} 千瓦`;
} else if (currentIndex === 2) {
return `${month}<br/>总热水补水量: ${value}`;
} else if (currentIndex === 3) {
return `${month}<br/>总蒸汽量: ${value}`;
}
},
};
this.brokenOption.xAxis.data = this.brokenTime;
this.brokenInstanc.setOption(this.brokenOption);
},
//
goExport() {
if (this.exportData) {
import("@/assets/excel/Export2Excel").then((excel) => {
// excel
var tHeader = [
"时间",
"总用电量(kwh)",
"总产冷量(kw)",
"总热水补水量(t)",
"总蒸汽流量(t)",
]; // excel
var filterVal = [
"time",
"electValue",
"coldValue",
"hotValue",
"steamValue",
];
const data = this.formatJson(filterVal, this.exportData);
const autoWidth = true;
excel.export_json_to_excel({
header: tHeader, //
data, //
filename: "系统能耗报表", //
autoWidth: true, //
});
});
this.$message({
type: "success",
message: "导出成功!",
});
} else {
this.$message.error("导出失败!");
}
},
//,
formatJson(filterVal, jsonData) {
return jsonData.map((v) =>
filterVal.map((j) => {
if (j === "perWater") {
return (v[j] * 1000).toFixed(1);
} else {
return v[j];
}
})
);
},
// 线+ + 线
screenAdapter() {
//,2.6 mes_ref
const titleFontSize = this.$refs.chart_ref.offsetWidth / 130;
//optionoption
const adapterOption = {};
//.chartInstanceoptiondataoption
this.brokenInstanc.setOption(adapterOption);
//resize
this.brokenInstanc.resize();
},
//chartInstance
initChart() {
this.brokenInstanc = echarts.init(this.$refs.chart_ref);
this.brokenOption = {
tooltip: {
trigger: "axis",
},
legend: {
show: false,
selectedMode: false, //
icon: "cricle", //
//
textStyle: {
color: "#ffff",
fontSize: 16, //
},
// left: "73%",
left: "66%",
top: "0",
//
itemGap: 5,
itemWidth: 10,
itemHeight: 5,
},
grid: {
top: "10%",
left: "3%",
right: "4%",
bottom: "5%",
containLabel: true,
},
xAxis: {
type: "category",
//true
boundaryGap: true,
// x
axisLabel: {
// interval: 0, //x
// rotate: 30, //x30
color: "rgba(255, 255, 255, 1)",
fontSize: 14, //
},
axisTick: {
show: false, // 线
},
// x
axisLine: {
show: true,
lineStyle: {
color: "#365576",
},
},
splitLine: {
lineStyle: {
color: "#e2e6f0",
},
}, //x线
data: this.brokenTime,
},
yAxis: {
min: 0,
// max:20,
// // // min:'dataMin',
// // // max:'dataMax',
// name: "kwh", // y
// name
nameTextStyle: {
color: "rgba(255, 255, 255, 1)",
fontSize: 12,
},
miniInterval: 5,
type: "value",
// y
axisLabel: {
color: "rgba(255, 255, 255, 1)",
},
// y
axisLine: {
show: true,
lineStyle: {
color: "#365576", // y 线
},
fontSize: 14, //
},
//y线
// splitNumber: 10,
// y线
splitLine: {
lineStyle: {
color: "#1a3d62", // 线
type: "dashed", // 线线
},
},
},
series: [
{
type: "line",
//
symbolSize: 8,
smooth: true,
showSymbol: false,
data: this.brokenData1,
//线
itemStyle: {
color: "#d48e17", //线
lineStyle: {
color: "#d48e17", //线
},
},
areaStyle: {
color: {
//线
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [],
},
},
},
],
};
//
this.brokenInstanc.setOption(this.brokenOption, true);
},
},
};
</script>
<style lang="scss" scoped>
.condition-left {
display: flex;
flex-direction: row;
align-items: center;
flex-wrap: wrap;
.years-div {
display: flex;
flex-direction: row;
align-items: center;
.years-word {
font-size: 14px;
margin: 0 5px;
color: #388ff3;
}
}
.time-label {
font-size: 16px;
line-height: 7px;
margin-right: 12px;
white-space: nowrap;
}
}
.main-content {
min-height: 6.6rem;
}
.choice {
margin: 20px 0;
.mr20 {
padding: 0.05rem 0.2rem;
white-space: nowrap;
width: auto;
}
}
.charts {
width: 100%;
height: 300px;
margin-bottom: 0.1rem;
}
// 2000px
@media (min-width: 2000px) {
.condition {
.condition-left {
.years-div {
.years-word {
font-size: 0.14rem !important;
margin: 0 0.05rem !important;
}
}
.time-label {
font-size: 0.16rem !important;
line-height: 0.07rem !important;
margin-right: 0.12rem !important;
}
}
}
}
</style>

6
src/views/device/comm/index.vue

@ -13,7 +13,6 @@
v-model="queryParams.mtType" v-model="queryParams.mtType"
placeholder="请选择仪表类型" placeholder="请选择仪表类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_mt_type" v-for="dict in dict.type.sys_mt_type"
@ -177,7 +176,6 @@
v-model="form.mtType" v-model="form.mtType"
placeholder="请选择仪表类型" placeholder="请选择仪表类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_mt_type" v-for="dict in dict.type.sys_mt_type"
@ -192,7 +190,6 @@
<el-form-item label="波特率" prop="baudRate"> <el-form-item label="波特率" prop="baudRate">
<el-select <el-select
clearable clearable
filterable
placeholder="请选择波特率" placeholder="请选择波特率"
v-model="form.baudRate" v-model="form.baudRate"
> >
@ -210,7 +207,6 @@
<el-form-item label="数据位" prop="dataBit"> <el-form-item label="数据位" prop="dataBit">
<el-select <el-select
clearable clearable
filterable
placeholder="请选择数据位" placeholder="请选择数据位"
v-model="form.dataBit" v-model="form.dataBit"
> >
@ -223,7 +219,6 @@
<el-form-item label="停止位" prop="stopBit"> <el-form-item label="停止位" prop="stopBit">
<el-select <el-select
clearable clearable
filterable
placeholder="请选择停止位" placeholder="请选择停止位"
v-model="form.stopBit" v-model="form.stopBit"
> >
@ -240,7 +235,6 @@
<el-form-item label="校验位" prop="parity"> <el-form-item label="校验位" prop="parity">
<el-select <el-select
clearable clearable
filterable
placeholder="请选择校验位" placeholder="请选择校验位"
v-model="form.parity" v-model="form.parity"
> >

3
src/views/device/gateway/index.vue

@ -21,7 +21,6 @@
v-model="queryParams.status" v-model="queryParams.status"
placeholder="网关状态" placeholder="网关状态"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.gateway_status" v-for="dict in dict.type.gateway_status"
@ -256,7 +255,6 @@
v-model="form.operatorType" v-model="form.operatorType"
placeholder="选择运营商" placeholder="选择运营商"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.operator_type" v-for="dict in dict.type.operator_type"
@ -272,7 +270,6 @@
v-model="form.communicationType" v-model="form.communicationType"
placeholder="选择通信方式" placeholder="选择通信方式"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.communication_type" v-for="dict in dict.type.communication_type"

14
src/views/device/gather/index.vue

@ -13,7 +13,6 @@
v-model="queryParams.mtType" v-model="queryParams.mtType"
placeholder="请选择仪表类型" placeholder="请选择仪表类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_mt_type" v-for="dict in dict.type.sys_mt_type"
@ -28,7 +27,6 @@
v-model="queryParams.systemType" v-model="queryParams.systemType"
placeholder="请选择系统类型" placeholder="请选择系统类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_type" v-for="dict in dict.type.sys_type"
@ -43,7 +41,6 @@
v-model="queryParams.paramType" v-model="queryParams.paramType"
placeholder="请选择采集参数类型" placeholder="请选择采集参数类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_param_type" v-for="dict in dict.type.sys_param_type"
@ -316,7 +313,6 @@
v-model="form.mtType" v-model="form.mtType"
placeholder="请选择仪表类型" placeholder="请选择仪表类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_mt_type" v-for="dict in dict.type.sys_mt_type"
@ -402,7 +398,6 @@
v-model="form.dataType" v-model="form.dataType"
placeholder="请选择数据类型" placeholder="请选择数据类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_data_type" v-for="dict in dict.type.sys_data_type"
@ -419,7 +414,6 @@
<el-form-item label="是否累计" prop="mtIsSum"> <el-form-item label="是否累计" prop="mtIsSum">
<el-select <el-select
clearable clearable
filterable
placeholder="请选择是否" placeholder="请选择是否"
v-model="form.mtIsSum" v-model="form.mtIsSum"
> >
@ -472,7 +466,6 @@
v-model="form.protocolType" v-model="form.protocolType"
placeholder="请选择协议类型" placeholder="请选择协议类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_protocol_type" v-for="dict in dict.type.sys_protocol_type"
@ -489,7 +482,6 @@
v-model="form.communicationType" v-model="form.communicationType"
placeholder="请选择通信类型" placeholder="请选择通信类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_communication_type" v-for="dict in dict.type.sys_communication_type"
@ -505,7 +497,6 @@
<el-form-item label="是否使用" prop="isUse"> <el-form-item label="是否使用" prop="isUse">
<el-select <el-select
clearable clearable
filterable
placeholder="请选择是否" placeholder="请选择是否"
v-model="form.isUse" v-model="form.isUse"
> >
@ -533,7 +524,6 @@
v-model="form.systemType" v-model="form.systemType"
placeholder="请选择系统类型" placeholder="请选择系统类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_type" v-for="dict in dict.type.sys_type"
@ -551,7 +541,6 @@
v-model="form.paramType" v-model="form.paramType"
placeholder="请选择参数类型" placeholder="请选择参数类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_param_type" v-for="dict in dict.type.sys_param_type"
@ -567,7 +556,6 @@
v-model="form.collectionType" v-model="form.collectionType"
placeholder="请选择采集类别" placeholder="请选择采集类别"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.alarm_collection_type" v-for="dict in dict.type.alarm_collection_type"
@ -586,7 +574,6 @@
v-model="form.terminalDeviceType" v-model="form.terminalDeviceType"
placeholder="请选择采集设备" placeholder="请选择采集设备"
clearable clearable
filterable
@change="handleDeviceType" @change="handleDeviceType"
> >
<el-option <el-option
@ -603,7 +590,6 @@
v-model="form.deviceLedgerId" v-model="form.deviceLedgerId"
placeholder="请选择设备名称" placeholder="请选择设备名称"
clearable clearable
filterable
> >
<el-option <el-option
v-for="item in ledgerList" v-for="item in ledgerList"

12
src/views/device/ledger/index.vue

@ -29,7 +29,6 @@
v-model="queryParams.deviceType" v-model="queryParams.deviceType"
placeholder="请选择设备类型" placeholder="请选择设备类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_device_type" v-for="dict in dict.type.sys_device_type"
@ -233,7 +232,6 @@
v-model="form.deviceType" v-model="form.deviceType"
placeholder="请选择设备类型" placeholder="请选择设备类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_device_type" v-for="dict in dict.type.sys_device_type"
@ -306,12 +304,7 @@
<el-row type="flex" justify="center"> <el-row type="flex" justify="center">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-select <el-select v-model="form.status" placeholder="请选择" clearable>
v-model="form.status"
placeholder="请选择"
clearable
filterable
>
<el-option label="正常" value="0" /> <el-option label="正常" value="0" />
<el-option label="停用" value="1" /> </el-select></el-form-item <el-option label="停用" value="1" /> </el-select></el-form-item
></el-col> ></el-col>
@ -321,7 +314,6 @@
v-model="form.isCollection" v-model="form.isCollection"
placeholder="请选择是否" placeholder="请选择是否"
clearable clearable
filterable
> >
<el-option label="是" value="0" /> <el-option label="是" value="0" />
<el-option label="否" value="1" /> <el-option label="否" value="1" />
@ -336,7 +328,6 @@
v-model="form.isCalcEnergy" v-model="form.isCalcEnergy"
placeholder="请选择是否" placeholder="请选择是否"
clearable clearable
filterable
> >
<el-option label="是" value="0" /> <el-option label="是" value="0" />
<el-option label="否" value="1" /> <el-option label="否" value="1" />
@ -348,7 +339,6 @@
v-model="form.systemType" v-model="form.systemType"
placeholder="请选择系统类型" placeholder="请选择系统类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.sys_type" v-for="dict in dict.type.sys_type"

4
src/views/device/maintenance/index.vue

@ -87,7 +87,6 @@
v-model="queryParams.deviceType" v-model="queryParams.deviceType"
placeholder="请选择设备类型" placeholder="请选择设备类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="item in devices" v-for="item in devices"
@ -103,7 +102,6 @@
v-model="queryParams.maintainType" v-model="queryParams.maintainType"
placeholder="请选择维保类型" placeholder="请选择维保类型"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.maintain_type" v-for="dict in dict.type.maintain_type"
@ -297,7 +295,6 @@
v-model="form.maintainType" v-model="form.maintainType"
placeholder="请选择维保类型" placeholder="请选择维保类型"
clearable clearable
filterable
:disabled="shouldDis" :disabled="shouldDis"
> >
<el-option <el-option
@ -315,7 +312,6 @@
v-model="form.deviceType" v-model="form.deviceType"
placeholder="请选择设备类型" placeholder="请选择设备类型"
clearable clearable
filterable
:disabled="shouldDis" :disabled="shouldDis"
> >
<el-option <el-option

15
src/views/device/qrCode/index.vue

@ -13,7 +13,6 @@
v-model="queryParams.status" v-model="queryParams.status"
placeholder="请选择状态" placeholder="请选择状态"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.qrcode_status" v-for="dict in dict.type.qrcode_status"
@ -223,7 +222,6 @@
v-model="form.deviceLedgerId" v-model="form.deviceLedgerId"
placeholder="请选择设备名称" placeholder="请选择设备名称"
clearable clearable
filterable
@change="handleDeviceChange" @change="handleDeviceChange"
> >
<el-option <el-option
@ -239,7 +237,6 @@
v-model="form.status" v-model="form.status"
placeholder="请选择状态" placeholder="请选择状态"
clearable clearable
filterable
> >
<el-option <el-option
v-for="dict in dict.type.qrcode_status" v-for="dict in dict.type.qrcode_status"
@ -258,7 +255,11 @@
</div> </div>
</el-dialog> </el-dialog>
<!-- 二维码预览弹框 --> <!-- 二维码预览弹框 -->
<el-dialog title="二维码预览" :visible.sync="isCodePreview" append-to-body> <el-dialog
title="二维码预览"
:visible.sync="isCodePreview"
append-to-body
>
<div class="dialog-img"> <div class="dialog-img">
<img class="qrCodeImg" :src="codePreViewUrl" alt="Base64 Image" /> <img class="qrCodeImg" :src="codePreViewUrl" alt="Base64 Image" />
</div> </div>
@ -269,7 +270,11 @@
:visible.sync="isMoreqrCode" :visible.sync="isMoreqrCode"
append-to-body append-to-body
> >
<el-form ref="qrCodeForm" :model="qrCodeForm" :rules="qrCodeForms"> <el-form
ref="qrCodeForm"
:model="qrCodeForm"
:rules="qrCodeForms"
>
<el-row type="flex" justify="center"> <el-row type="flex" justify="center">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="二维码个数" prop="qrNum"> <el-form-item label="二维码个数" prop="qrNum">

39
src/views/device/spare/index.vue

@ -123,14 +123,7 @@
<el-table-column label="备件序列号" align="center" prop="serialNum" /> <el-table-column label="备件序列号" align="center" prop="serialNum" />
<el-table-column label="备件名称" align="center" prop="spareName" /> <el-table-column label="备件名称" align="center" prop="spareName" />
<el-table-column label="规格与型号" align="center" prop="modelSpecs" /> <el-table-column label="规格与型号" align="center" prop="modelSpecs" />
<el-table-column label="设备类型" align="center" prop="deviceTypeId"> <el-table-column label="设备类型Id" align="center" prop="deviceTypeId" />
<template slot-scope="scope">
<dict-tag
:options="dict.type.sys_mt_type"
:value="scope.row.deviceTypeId"
/>
</template>
</el-table-column>
<el-table-column label="库存数量" align="center" prop="inventoryLevels" /> <el-table-column label="库存数量" align="center" prop="inventoryLevels" />
<el-table-column <el-table-column
label="最低库存" label="最低库存"
@ -215,29 +208,13 @@
/> </el-form-item /> </el-form-item
></el-col> ></el-col>
<el-col :span="12"> <el-col :span="12">
<!-- <el-form-item label="设备类型Id" prop="deviceTypeId"> <el-form-item label="设备类型Id" prop="deviceTypeId">
<el-input <el-input
v-model="form.deviceTypeId" v-model="form.deviceTypeId"
placeholder="请输入设备类型Id" placeholder="请输入设备类型Id"
clearable clearable
/> </el-form-item /> </el-form-item
> --> ></el-col>
<el-form-item label="设备类型" prop="deviceTypeId">
<el-select
v-model="form.deviceTypeId"
placeholder="请选择设备类型"
clearable
filterable
>
<el-option
v-for="dict in dict.type.sys_mt_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row type="flex" justify="center"> <el-row type="flex" justify="center">
<el-col :span="12"> <el-col :span="12">
@ -297,16 +274,6 @@ import {
export default { export default {
name: "spare", name: "spare",
dicts: [
"sys_mt_type",
"sys_type",
"sys_param_type",
"sys_data_type",
"sys_protocol_type",
"sys_communication_type",
"sys_device_type",
"alarm_collection_type",
],
data() { data() {
return { return {
timeArr: [], timeArr: [],

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save