whx hace 5 meses
padre
commit
eaa131baa8
Se han modificado 100 ficheros con 2418 adiciones y 2299 borrados
  1. 41 14
      virgo.wzfrontend/console/src/components/work/common/model.vue
  2. 0 63
      virgo.wzfrontend/console/src/components/work/common/selectSpace.vue
  3. 2 1
      virgo.wzfrontend/console/src/components/work/common/testAlarm.vue
  4. 168 0
      virgo.wzfrontend/console/src/components/work/energy/analysis/chartItem.vue
  5. 416 674
      virgo.wzfrontend/console/src/components/work/energy/analysis/hvac.vue
  6. 145 0
      virgo.wzfrontend/console/src/components/work/energy/ventilate/basementItem.vue
  7. 12 0
      virgo.wzfrontend/console/src/httpApi/test.js
  8. 1296 1097
      virgo.wzfrontend/console/src/views/work/energy/analysis.vue
  9. 68 221
      virgo.wzfrontend/console/src/views/work/energy/ventilate/basement.vue
  10. 63 51
      virgo.wzfrontend/console/src/views/work/energy/ventilate/vrv/freshair.vue
  11. 79 66
      virgo.wzfrontend/console/src/views/work/energy/ventilate/vrv/indoor3d.vue
  12. 63 50
      virgo.wzfrontend/console/src/views/work/energy/ventilate/vrv/vrv.vue
  13. 1 1
      virgo.wzfrontend/console/src/views/work/energy/water/supply/lowcarbon.vue
  14. 1 1
      virgo.wzfrontend/console/src/views/work/iot/security/infrared.vue
  15. 1 1
      virgo.wzfrontend/src/main/resources/static/console/index.html
  16. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/1706.64ad472f.css
  17. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/2363.eb2d7c9e.css
  18. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/4265.7c138caa.css
  19. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/5503.eb2d7c9e.css
  20. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/6049.b37dfbb0.css
  21. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/css/1171.9ac836aa.css
  22. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/6613.b37dfbb0.css
  23. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/6615.77e8716b.css
  24. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/css/8551.9ac836aa.css
  25. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/7250.92603bb6.css
  26. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/7312.92603bb6.css
  27. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/7920.64ad472f.css
  28. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/css/6789.3f5e8527.css
  29. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/css/4937.3f5e8527.css
  30. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/9955.77e8716b.css
  31. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1000.3a50f88f.js
  32. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1037-legacy.d66a4a21.js
  33. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1171-legacy.d47d7284.js
  34. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1216-legacy.807de6da.js
  35. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1216.54f76e13.js
  36. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1706-legacy.627edf2d.js
  37. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2033.a48c5cd9.js
  38. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3889-legacy.a1d59be1.js
  39. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2453.f209666b.js
  40. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/252-legacy.97b77e5e.js
  41. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/252.f00ab650.js
  42. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2590-legacy.bced8100.js
  43. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/260.33b7b1e3.js
  44. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2623-legacy.167f7326.js
  45. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2759-legacy.6d9a09e6.js
  46. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/287-legacy.e097aa3f.js
  47. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3911.0b7e3ec8.js
  48. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3319-legacy.68e94cad.js
  49. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3319.32045ae8.js
  50. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3475-legacy.5ce3f859.js
  51. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7342-legacy.71b219b0.js
  52. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/3845-legacy.12457ba1.js
  53. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3845-legacy.bc0fac55.js
  54. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3028.9f281c30.js
  55. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/4027.f4bc0839.js
  56. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/4135-legacy.d4f76eaa.js
  57. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/4265-legacy.e22e1d2a.js
  58. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/4265.d112fe79.js
  59. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/4755-legacy.08d709b7.js
  60. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/4827.3639d7e7.js
  61. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/483.8f093d7c.js
  62. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/4937-legacy.4d34c5a1.js
  63. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/4985-legacy.dd8579fe.js
  64. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/5139.ff493710.js
  65. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/5257-legacy.09c0d7a1.js
  66. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/532-legacy.de90105e.js
  67. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/6957.6c3d4617.js
  68. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/5545-legacy.3271dea5.js
  69. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/5644.bd8105be.js
  70. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/5749.a5f7824c.js
  71. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/596.e7ce1ac3.js
  72. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/6049.08bf8874.js
  73. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/6338-legacy.74787098.js
  74. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/6418-legacy.fc500b03.js
  75. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/6613-legacy.59678bdf.js
  76. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/6615.5cc325a7.js
  77. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/6720-legacy.e5567015.js
  78. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/6742.d4251088.js
  79. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/6789.69c2dc8a.js
  80. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/6849-legacy.8ca1dbb4.js
  81. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/6849.6ea406d2.js
  82. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/6946-legacy.28c50718.js
  83. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7099-legacy.83c1abf4.js
  84. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7110.82779782.js
  85. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/7224.dd068aeb.js
  86. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7236.c9424c3d.js
  87. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/7250-legacy.16004e5e.js
  88. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/7312.82992234.js
  89. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/7342-legacy.b8062ab9.js
  90. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7470-legacy.e85ea5f1.js
  91. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7528.263c9bb4.js
  92. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7870.ea8d1eb6.js
  93. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/7920.dd46b223.js
  94. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/8184-legacy.ec060df1.js
  95. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/8223.c5c1ea6a.js
  96. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/8261-legacy.399df7a6.js
  97. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/8261.4a84f6b2.js
  98. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/8261.c919280a.js
  99. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/8446.2ac826d7.js
  100. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/8551.e845b494.js

+ 41 - 14
virgo.wzfrontend/console/src/components/work/common/model.vue

@@ -784,26 +784,26 @@
 				indoor3dState: {
 					"name": "persp",
 					"position": {
-						"x": 11658.573918811275,
-						"y": 109615.01844866596,
-						"z": -7550.849760091395
+						"x": -22128.504146307874,
+						"y": 52853.71988895382,
+						"z": 89193.34115485626
 					},
 					"target": {
-						"x": -60631.35578088926,
-						"y": 115786.40800342792,
-						"z": -4155.901049188884
+						"x": 30641.13155446061,
+						"y": 52676.22527061965,
+						"z": 11069.293323625228
 					},
 					"up": {
-						"x": 0.04657189366175897,
-						"y": -0.0039795186629758665,
-						"z": 0.9989070137665311
+						"x": 0.8286658555571681,
+						"y": -0.0027938419937244595,
+						"z": 0.55973662938977
 					},
-					"near": 5.777222038555463,
-					"far": 15132.909918547548,
-					"zoom": 18.53458882058911,
+					"near": 39036.529841904565,
+					"far": 115087.4975594089,
+					"zoom": 1.0299624234908134,
 					"version": 1,
 					"fov": 45,
-					"aspect": 2.133676092544987,
+					"aspect": 1.6274768824306474,
 					"coordinateSystem": "world"
 				},
 				modeRender: false,
@@ -1264,7 +1264,34 @@
 						html: `<div class="tips-14 success">多联机1</div>`,
 					}, data => {})
 				} else if (this.type === 'indoor3d') {
-					this.bimViewer.setCameraState(this.indoor3dState);
+					this.bimViewer.setCameraState(this.indoor3dState);
+					this.bimViewer.HideOthers();
+					this.bimViewer.hideComponentsByObjectData([{
+						"family": "TJ双扇平开门",
+						"levelName": "A_4F(14.500)"
+					}, {
+						"family": "单扇推拉门",
+						"levelName": "A_4F(14.500)"
+					}, {
+						"family": "TJ单扇平开门",
+						"levelName": "A_4F(14.500)"
+					}, {
+						"family": "TJ子母门",
+						"levelName": "A_4F(14.500)"
+					}])
+					this.bimViewer.overrideComponentsColorByObjectData([{
+						"family": "楼板",
+						"levelName": "A_4F(14.500)"
+					}, {
+						"family": "幕墙",
+						"levelName": "A_4F(14.500)"
+					}, {
+						"family": "基本墙",
+						"levelName": "A_4F(14.500)"
+					}, {
+						"family": "常规模型 39",
+						"levelName": "A_4F(14.500)"
+					}])
 				}
 			},
 			successFunc(res) {

+ 0 - 63
virgo.wzfrontend/console/src/components/work/common/selectSpace.vue

@@ -1,63 +0,0 @@
-<template>
-	<div class="hui-left-tree">
-		<div class="hui-left-tree-title">
-			<svg-icon name="zhuangshi" width="16" height="20"></svg-icon>
-			<span class="hui-left-tree-sub">空间列表</span>
-		</div>
-		<div class="hui-left-tree-content">
-			<el-collapse v-model="activeName">
-				<el-collapse-item v-for="item in treeData" :key="item.id" :name="item.id">
-					<template slot="title">
-						<i class="iconfont huifont-shuzhuangcaidantubiao"></i>
-						<span class="el-collapse-name">{{item.name}}</span>
-					</template>
-					<div>
-						<el-tree :data="item.projectItemTargetList" :props="defaultProps" @node-click="selectItem">
-							<div :class="'tree-node' + (data.id == nowItem.id ? ' active':'')"
-								slot-scope="{ node, data }">
-								<span class="tree-node-label">{{ node.label }}</span>
-							</div>
-						</el-tree>
-					</div>
-				</el-collapse-item>
-			</el-collapse>
-		</div>
-	</div>
-</template>
-
-<script>
-	import {
-		getProjectDetailById,
-	} from '@/httpApi/space'
-	export default {
-		data() {
-			return {
-				treeData: [],
-				nowItem: {},
-				defaultProps: {
-					label: 'name'
-				},
-				activeName: [],
-			}
-		},
-		created() {
-			this.initList();
-		},
-		methods: {
-			initList() {
-				getProjectDetailById(this.$store.getters.project.id).then(res => {
-					if (res.state) {
-						this.treeData = res.data.projectItemList;
-						this.activeName = this.treeData.map(node => node.id);
-					}
-				})
-			},
-			selectItem(item) {
-				if (item.projectItemTargetId) this.nowItem = item;
-			},
-		},
-	}
-</script>
-
-<style>
-</style>

+ 2 - 1
virgo.wzfrontend/console/src/components/work/common/testAlarm.vue

@@ -83,7 +83,8 @@
 		methods: {
 			init(option) {
 				//type 1.周界报警设备 2.周界报警 3.电子巡查设备 4.消防设备 5.消防设备报警 6.消防通道 7.易燃易爆品设备 8.易燃易爆品报警9.化学用品设备 10.化学用品报警11.废气污染物设备 12.废气污染物报警 13.环境设备
-				//type 14.供配电 15.电梯机房 16.电梯 17.冷源设备 18.冷源设备试试监控 19.给排水-生活 20.给排水-消防  21.给排水-排水 22.给排水-绿色低碳23.给排水-报警信息
+				//type 14.供配电 15.电梯机房 16.电梯 17.冷源设备 18.冷源设备试试监控 19.给排水-生活 20.给排水-消防  21.给排水-排水 22.给排水-绿色低碳23.给排水-报警信息 24.多联机25.多联机报警信息 26.新风管道 27.新风管道-报警
+				//type 28.室内三维 29.室内三维-报警 30.地下室
 				let postData = {
 					type: this.type,
 					projectId: this.$store.getters.project.id

+ 168 - 0
virgo.wzfrontend/console/src/components/work/energy/analysis/chartItem.vue

@@ -0,0 +1,168 @@
+<template>
+	<div class="charts-item">
+		<div class="hvac-electricity-box">
+			<div class="hvac-chart-title">
+				<span class="label">{{title}}</span>
+			</div>
+			<div :ref="'chart'+_uid" class="hvac-chart-box"></div>
+		</div>
+		<div class="hvac-pie">
+			<div ref="chart10" class="pie-chart"></div>
+			<div class="chart-legend">
+				<div class="legend-item" v-for="(item,index) in list" :key="index">
+					<span class="legend-bage" :style="'background:'+item.color+';'"></span>
+					<span class="legend-label">{{item.name}}</span>
+					<span class="legend-label">
+						<span class="alibaba">{{item[type]}}</span>
+						<span class="unit">kwh</span>
+					</span>
+				</div>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script>
+	export default {
+		props: ['title', 'list', 'type'],
+		data() {
+			return {
+
+			}
+		},
+		created() {
+			this.$nextTick(() => {
+				this.init();
+			})
+		},
+		methods: {
+			init() {
+				if (this.list.length == 0) return;
+				let all = 0;
+				let data = this.list.map(node => {
+					all += Number(node[this.type])
+					return {
+						name: node.name,
+						value: Number(node[this.type])
+					}
+				})
+				let num = (data[0].value / all) * 100;
+				this.charts(this.$refs['chart' + this._uid], data[0].name, Math.round(num * 100) / 100, this.list.map(
+					node => node.color), data);
+			},
+			charts(elem, title, len, color, data) {
+				let chart = echarts.init(elem);
+				let option = {
+					title: {
+						text: ("{name|" + title + "}" + "\n{percent|" + len + "}{name|%}"),
+						left: 'center',
+						top: 'center',
+						textStyle: {
+							rich: {
+								name: {
+									color: "rgba(255,255,255,0.6)",
+									fontSize: 12,
+									lineHeight: 16
+								},
+								percent: {
+									color: "#fff",
+									fontSize: 16,
+									lineHeight: 20,
+									fontFamily: 'alibabaMedium'
+								},
+							}
+						}
+					},
+					color: color,
+					series: [{
+						type: 'pie',
+						center: ['50%', '50%'],
+						radius: ['60%', '90%'],
+						avoidLabelOverlap: false,
+						itemStyle: {
+							borderColor: '#0E131C',
+							borderWidth: 5
+						},
+						label: {
+							show: false,
+							position: 'center'
+						},
+						emphasis: {
+							label: {
+								show: true,
+								formatter: (params) => {
+									return ("{name|" + params.name + "}" + "\n{percent|" +
+										params.percent.toFixed(2) + "}{name|%}");
+								},
+								rich: {
+									name: {
+										color: "rgba(255,255,255,0.6)",
+										fontSize: 12,
+										lineHeight: 16
+									},
+									percent: {
+										color: "#fff",
+										fontSize: 16,
+										lineHeight: 20,
+										fontFamily: 'alibabaMedium'
+									},
+								}
+							},
+						},
+						labelLine: {
+							show: false
+						},
+						data: data
+					}]
+				};
+				chart.setOption(option);
+				// 高亮时
+				chart.on('highlight', (e) => {
+					chart.setOption({
+						title: {
+							show: false
+						}
+					});
+				});
+				// 取消高亮时
+				chart.on('downplay', (e) => {
+					chart.setOption({
+						title: {
+							show: true
+						}
+					});
+				});
+				// 鼠标移入数据时
+				chart.on('mouseover', {
+					componentType: 'series',
+					seriesType: 'pie'
+				}, (params) => {
+					chart.setOption({
+						title: {
+							show: false
+						}
+					});
+				});
+				// 鼠标移出数据时
+				chart.on('mouseout', {
+					componentType: 'series',
+					seriesType: 'pie'
+				}, (params) => {
+					chart.setOption({
+						title: {
+							show: true
+						}
+					});
+				});
+			},
+		},
+		watch: {
+			type() {
+				this.init();
+			}
+		},
+	}
+</script>
+
+<style>
+</style>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 416 - 674
virgo.wzfrontend/console/src/components/work/energy/analysis/hvac.vue


+ 145 - 0
virgo.wzfrontend/console/src/components/work/energy/ventilate/basementItem.vue

@@ -0,0 +1,145 @@
+<template>
+	<div class="co-item">
+		<div class="co-title">{{list.name}}</div>
+		<div class="co-label">
+			<div class="co-icon">
+				<i class="iconfont huifont-eryanghuatan"></i>
+			</div>
+			<span class="label">实时CO浓度</span>
+			<span class="number alibaba color-cyan">{{list.node[0].column1}}</span>
+			<span class="unit">ppm</span>
+		</div>
+		<div :ref="'chart'+_uid" class="co-chart"></div>
+	</div>
+</template>
+
+<script>
+	export default {
+		props: ['list'],
+		created() {
+			this.$nextTick(() => {
+				this.init();
+			})
+		},
+		methods: {
+			init() {
+				let x = [],
+					data = [];
+				for (let i = 0; i < this.list.node.length; i++) {
+					x.push(this.$dayjs(this.list.node[i].date).format('MM/DD'));
+					data.push(this.list.node[i].column1);
+				}
+				this.chart(this.$refs['chart' + this._uid], data, x);
+			},
+			chart(elem, data, x) {
+				let chart = echarts.init(elem);
+				let option = {
+					tooltip: {
+						show: true,
+						trigger: 'axis',
+						formatter: function() {
+							return ''
+						},
+						backgroundColor: 'rgba(255,255,255,0)',
+						borderWidth: 0,
+						padding: 0,
+						axisPointer: {
+							lineStyle: {
+								type: 'solid',
+								color: '#4E5561',
+							}
+						}
+					},
+					grid: {
+						left: '20',
+						top: '35',
+						right: '20',
+						bottom: '15',
+						containLabel: true
+					},
+					color: ['#AFB9CC'],
+					xAxis: {
+						type: 'category',
+						data: x,
+						axisLabel: {
+							margin: 4,
+							color: '#D0DEEE',
+							fontSize: 10
+						},
+						boundaryGap: false,
+						axisLine: {
+							lineStyle: {
+								color: '#6C8097'
+							}
+						},
+						axisTick: {
+							show: false
+						}
+					},
+					yAxis: {
+						name: '当日趋势',
+						type: 'value',
+						nameTextStyle: {
+							color: '#D0DEEE',
+							fontSize: 10,
+							align: 'center',
+						},
+						axisLabel: {
+							margin: 10,
+							color: '#D0DEEE',
+							fontSize: 10
+						},
+						splitLine: {
+							show: true,
+							lineStyle: {
+								color: 'rgba(108,128,151,0.3)',
+								type: 'dashed'
+							}
+						}
+					},
+					series: [{
+						data: data,
+						type: 'line',
+						symbolSize: 6,
+						areaStyle: {
+							color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+									offset: 0,
+									color: 'rgba(175,185,204,0.15)'
+								},
+								{
+									offset: 1,
+									color: 'rgba(175,185,204,0)'
+								}
+							])
+						},
+						z: 99
+					}, {
+						data: data,
+						type: 'line',
+						showSymbol: false,
+						label: {
+							show: true,
+							color: '#D0DEEE'
+						},
+						areaStyle: {
+							color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+									offset: 0,
+									color: 'rgba(175,185,204,0.15)'
+								},
+								{
+									offset: 1,
+									color: 'rgba(175,185,204,0)'
+								}
+							])
+						},
+						z: 99
+					}]
+				};
+				chart.setOption(option);
+			}
+		},
+	}
+</script>
+
+<style>
+</style>

+ 12 - 0
virgo.wzfrontend/console/src/httpApi/test.js

@@ -354,4 +354,16 @@ export function updateEnergyDeviceState(state, data) {
 		method: 'post',
 		data: data
 	})
+}
+/* 
+ * 获取用能分析数据
+ * 
+ * 
+ */
+export function getEnergyAnalysis(data) {
+	return request({
+		url: `/api/test/energyAnalysis/get`,
+		method: 'post',
+		data: data
+	})
 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1296 - 1097
virgo.wzfrontend/console/src/views/work/energy/analysis.vue


+ 68 - 221
virgo.wzfrontend/console/src/views/work/energy/ventilate/basement.vue

@@ -1,11 +1,11 @@
 <template>
 	<div class="yui-tree-box">
-		<select-space></select-space>
+		<project-item-tree @treeclick="treeclick" iconfontClass="el-icon-place"></project-item-tree>
 		<div class="hui-tree-content">
 			<div class="basement box-background">
 				<div class="basement-box">
 					<div class="basement-center">
-						<test-alarm></test-alarm>
+						<test-alarm ref="testAlarm" :type="30"></test-alarm>
 						<div class="bim-box">
 							<model type="basement" fileId="10000786668082"></model>
 						</div>
@@ -17,65 +17,19 @@
 									风机柜控制
 								</div>
 							</div>
-							<div class="light-list">
-								<div class="light-item">
-									<div class="item-box">
-										<div class="light-top">
-											<i class="iconfont huifont-fengdiangui"></i>
-											<el-switch v-model="value1">
-											</el-switch>
-										</div>
-										<div class="label hui-ellipsis">
-											风机柜1
-										</div>
-									</div>
-								</div>
-								<div class="light-item">
-									<div class="item-box">
-										<div class="light-top">
-											<i class="iconfont huifont-fengdiangui"></i>
-											<el-switch v-model="value1">
-											</el-switch>
-										</div>
-										<div class="label hui-ellipsis">
-											风机柜2
-										</div>
-									</div>
-								</div>
-								<div class="light-item">
-									<div class="item-box">
-										<div class="light-top">
-											<i class="iconfont huifont-fengdiangui"></i>
-											<el-switch v-model="value1">
-											</el-switch>
-										</div>
-										<div class="label hui-ellipsis">
-											风机柜3
-										</div>
-									</div>
-								</div>
-								<div class="light-item">
-									<div class="item-box">
-										<div class="light-top">
-											<i class="iconfont huifont-fengdiangui"></i>
-											<el-switch v-model="value1">
-											</el-switch>
-										</div>
-										<div class="label hui-ellipsis">
-											风机柜4
-										</div>
-									</div>
-								</div>
-								<div class="light-item">
+							<div class="light-list hui-no-tips" v-if="windList.length === 0">
+								<empty width="40" description="暂无风柜机"></empty>
+							</div>
+							<div class="light-list" v-else>
+								<div class="light-item" v-for="(item,index) in windList" :key="index">
 									<div class="item-box">
 										<div class="light-top">
 											<i class="iconfont huifont-fengdiangui"></i>
-											<el-switch v-model="value1">
+											<el-switch v-model="item.state" :active-value="1" :inactive-value="2"
+												@change="value=>changeDoor(value,item)">
 											</el-switch>
 										</div>
-										<div class="label hui-ellipsis">
-											风机柜5
-										</div>
+										<div class="label hui-ellipsis">{{item.name}}</div>
 									</div>
 								</div>
 							</div>
@@ -86,49 +40,11 @@
 									CO传感器
 								</div>
 							</div>
-							<div class="co-list">
-								<div class="co-item">
-									<div class="co-title">
-										CO传感器1
-									</div>
-									<div class="co-label">
-										<div class="co-icon">
-											<i class="iconfont huifont-eryanghuatan"></i>
-										</div>
-										<span class="label">实时CO浓度</span>
-										<span class="number alibaba color-cyan">0.4</span>
-										<span class="unit">ppm</span>
-									</div>
-									<div ref="chart1" class="co-chart"></div>
-								</div>
-								<div class="co-item">
-									<div class="co-title">
-										CO传感器1
-									</div>
-									<div class="co-label">
-										<div class="co-icon">
-											<i class="iconfont huifont-eryanghuatan"></i>
-										</div>
-										<span class="label">实时CO浓度</span>
-										<span class="number alibaba color-cyan">0.4</span>
-										<span class="unit">ppm</span>
-									</div>
-									<div ref="chart2" class="co-chart"></div>
-								</div>
-								<div class="co-item">
-									<div class="co-title">
-										CO传感器1
-									</div>
-									<div class="co-label">
-										<div class="co-icon">
-											<i class="iconfont huifont-eryanghuatan"></i>
-										</div>
-										<span class="label">实时CO浓度</span>
-										<span class="number alibaba color-cyan">0.4</span>
-										<span class="unit">ppm</span>
-									</div>
-									<div ref="chart3" class="co-chart"></div>
-								</div>
+							<div class="co-list hui-no-tips" v-if="windList.length === 0">
+								<empty width="100" description="暂无CO传感器"></empty>
+							</div>
+							<div class="co-list" v-else>
+								<basement-item v-for="(item,index) in list" :key="index" :list="item"></basement-item>
 							</div>
 						</div>
 					</div>
@@ -140,144 +56,75 @@
 
 <script>
 	import testAlarm from '@/components/work/common/testAlarm'
-	import selectSpace from '@/components/work/common/selectSpace'
+	import projectItemTree from '@/components/common/projectItemTree'
 	import model from '@/components/work/common/model'
+	import basementItem from '@/components/work/energy/ventilate/basementItem'
+	import {
+		getEnergyDeviceList,
+		updateEnergyDevice
+	} from '@/httpApi/test'
 	export default {
 		data() {
 			return {
-				value1: true
+				option: null,
+				windList: [],
+				list: []
 			}
 		},
 		created() {
-			this.$nextTick(() => {
-				this.chart(this.$refs.chart1, [1, 3, 2, 6, 1]);
-				this.chart(this.$refs.chart2, [1, 3, 2, 6, 1]);
-				this.chart(this.$refs.chart3, [1, 3, 2, 6, 1]);
-			})
+			this.init();
 		},
 		components: {
 			testAlarm,
-			selectSpace,
-			model
+			projectItemTree,
+			model,
+			basementItem
 		},
 		methods: {
-			initList() {
-				getProjectTreeList(this.$store.getters.project.id).then(res => {
+			init(option) {
+				let postData = {
+					type: 12,
+					projectId: this.$store.getters.project.id
+				}
+				this.option = option;
+				if (option) postData = Object.assign(postData, option);
+				getEnergyDeviceList(postData).then(res => {
 					if (res.state) {
-						this.treeData = roomList(res.data.projectItemList, 'room');
-						this.activeName = this.treeData.map(node => node.id);
+						this.windList = res.data.filter(node => node.column3 === '风机柜');
+						let data = res.data.filter(node => node.column3 === 'CO传感器');
+						let obj = {},list = [];
+						for (let i = 0; i < data.length; i++) {
+							if(!obj[data[i].name]){
+								obj[data[i].name] = 1;
+								list.push({
+									name:data[i].name,
+									node:[]
+								})
+							}
+							list.find(node=>node.name === data[i].name).node.push(data[i])
+						}
+						this.list = list;
 					}
 				})
 			},
-			selectItem(item) {
-				if (item.projectItemTargetId) this.nowItem = item;
-			},
-			chart(elem, data) {
-				let chart = echarts.init(elem);
-				let option = {
-					tooltip: {
-						show: true,
-						trigger: 'axis',
-						formatter: function() {
-							return ''
-						},
-						backgroundColor: 'rgba(255,255,255,0)',
-						borderWidth: 0,
-						padding: 0,
-						axisPointer: {
-							lineStyle: {
-								type: 'solid',
-								color: '#4E5561',
-							}
-						}
-					},
-					grid: {
-						left: '20',
-						top: '35',
-						right: '20',
-						bottom: '15',
-						containLabel: true
-					},
-					color: ['#AFB9CC'],
-					xAxis: {
-						type: 'category',
-						data: ['安装', '保养', '维修', '巡检', '拆除'],
-						axisLabel: {
-							margin: 4,
-							color: '#D0DEEE',
-							fontSize: 10
-						},
-						boundaryGap: false,
-						axisLine: {
-							lineStyle: {
-								color: '#6C8097'
-							}
-						},
-						axisTick: {
-							show: false
-						}
-					},
-					yAxis: {
-						name: '当日趋势',
-						type: 'value',
-						nameTextStyle: {
-							color: '#D0DEEE',
-							fontSize: 10,
-							align: 'center',
-						},
-						axisLabel: {
-							margin: 10,
-							color: '#D0DEEE',
-							fontSize: 10
-						},
-						splitLine: {
-							show: true,
-							lineStyle: {
-								color: 'rgba(108,128,151,0.3)',
-								type: 'dashed'
-							}
-						}
-					},
-					series: [{
-						data: data,
-						type: 'line',
-						symbolSize: 6,
-						areaStyle: {
-							color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-									offset: 0,
-									color: 'rgba(175,185,204,0.15)'
-								},
-								{
-									offset: 1,
-									color: 'rgba(175,185,204,0)'
-								}
-							])
-						},
-						z: 99
-					}, {
-						data: data,
-						type: 'line',
-						showSymbol: false,
-						label: {
-							show: true,
-							color: '#D0DEEE'
-						},
-						areaStyle: {
-							color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-									offset: 0,
-									color: 'rgba(175,185,204,0.15)'
-								},
-								{
-									offset: 1,
-									color: 'rgba(175,185,204,0)'
-								}
-							])
-						},
-						z: 99
-					}]
-				};
-				chart.setOption(option);
+			treeclick(item) {
+				let obj = item.id ? {
+					projectItemTargetId: item.id
+				} : {}
+				if (this.$refs.testAlarm) this.$refs.testAlarm.init(obj);
+				this.init(obj);
 			},
+			changeDoor(value, item) {
+				updateEnergyDevice({
+					id: item.id,
+					state: value
+				}).then(res => {
+					if (res.state) {
+						this.$message.success('操作成功');
+						this.init(this.option);
+					}
+				})
+			}
 		},
 	}
 </script>
@@ -351,7 +198,7 @@
 
 		.basement-title {
 			padding: 20px 20px 0 20px;
-			margin-bottom: 12px;
+			margin-bottom: 10px;
 		}
 
 		.basement-box {

+ 63 - 51
virgo.wzfrontend/console/src/views/work/energy/ventilate/vrv/freshair.vue

@@ -1,11 +1,11 @@
 <template>
 	<div class="yui-tree-box">
-		<select-space></select-space>
+		<project-item-tree @treeclick="treeclick" iconfontClass="el-icon-place"></project-item-tree>
 		<div class="hui-tree-content">
 			<div class="freshair box-background">
 				<div class="freshair-box">
 					<div class="freshair-center">
-						<test-alarm></test-alarm>
+						<test-alarm ref="testAlarm" :type="26"></test-alarm>
 						<div class="bim-box">
 							<model type="freshair" fileId="10000786668082"></model>
 						</div>
@@ -21,7 +21,7 @@
 							<div class="alarm-table-box hui-flex">
 								<div class="alarm-title">
 									<div class="hui-chart-title">
-										新风系统报警
+										新风管道报警
 									</div>
 									<div class="alarm-tr">
 										<span class="tr-100">设备名称</span>
@@ -29,46 +29,18 @@
 										<span class="tr-50">状态</span>
 									</div>
 								</div>
-								<div class="alarm-table hui-flex-box">
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备1</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备2</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-green">已处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备3</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-green">已处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备4</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
+								<div class="hui-flex-box hui-no-tips" v-if="list.length === 0">
+									<empty width="100" description="暂无报警记录"></empty>
+								</div>
+								<div class="alarm-table hui-flex-box" v-else>
+									<div class="alarm-tr" v-for="(item,index) in list" :key="index">
+										<span class="tr-100 hui-ellipsis">{{item.deviceName}}</span>
+										<span class="tr-130">{{item.date}}</span>
+										<span class="tr-50 tr-center">
+											<span class="color-red" v-if="!item.state">报警中</span>
+											<span class="color-blue" v-else-if="item.state === 1">处理中</span>
+											<span class="color-green" v-else-if="item.state === 2">已处理</span>
+										</span>
 									</div>
 								</div>
 							</div>
@@ -81,25 +53,65 @@
 </template>
 
 <script>
-	import selectSpace from '@/components/work/common/selectSpace'
+	import projectItemTree from '@/components/common/projectItemTree'
 	import testAlarm from '@/components/work/common/testAlarm'
 	import model from '@/components/work/common/model'
+	import {
+		getDeviceAlarmList
+	} from '@/httpApi/test'
 	export default {
 		data() {
-			return {}
+			return {
+				list: [],
+				type: 27
+			}
 		},
 		created() {
-			this.$nextTick(() => {
-				this.chart(this.$refs.chart1, [1, 3, 2, 6, 1])
-			})
+			this.init();
 		},
 		components: {
 			testAlarm,
-			selectSpace,
+			projectItemTree,
 			model
 		},
 		methods: {
-			chart(elem, data) {
+			init(option) {
+				let postData = {
+					type: this.type,
+					projectId: this.$store.getters.project.id
+				}
+				if (option) postData = Object.assign(postData, option);
+				getDeviceAlarmList(postData).then(res => {
+					if (res.state) {
+						this.list = res.data;
+						let obj = {},
+							list = [];
+						for (let i = 0; i < this.list.length; i++) {
+							if (!obj[this.list[i].deviceId]) {
+								obj[this.list[i].deviceId] = 1;
+								list.push({
+									id: this.list[i].deviceId,
+									name: this.list[i].deviceName,
+									value: 0,
+								})
+							}
+							list.find(node => node.id == this.list[i].deviceId).value++;
+						}
+						this.$nextTick(() => {
+							this.chart(this.$refs.chart1, list.map(node => node.value), list.map(node =>
+								node.name))
+						})
+					}
+				})
+			},
+			treeclick(item) {
+				let obj = item.id ? {
+					projectItemTargetId: item.id
+				} : {}
+				if (this.$refs.testAlarm) this.$refs.testAlarm.init(obj);
+				this.init(obj);
+			},
+			chart(elem, data, x) {
 				let chart = echarts.init(elem);
 				let option = {
 					tooltip: {
@@ -128,7 +140,7 @@
 					color: ['#1978E5'],
 					xAxis: {
 						type: 'category',
-						data: ['安装', '保养', '维修', '巡检', '拆除'],
+						data: x,
 						axisLabel: {
 							margin: 4,
 							color: '#D0DEEE',

+ 79 - 66
virgo.wzfrontend/console/src/views/work/energy/ventilate/vrv/indoor3d.vue

@@ -1,27 +1,27 @@
 <template>
 	<div class="yui-tree-box">
-		<select-space></select-space>
+		<project-item-tree @treeclick="treeclick" iconfontClass="el-icon-place"></project-item-tree>
 		<div class="hui-tree-content">
-			<div class="indool3d box-background">
-				<div class="indool3d-box">
-					<div class="indool3d-center">
-						<test-alarm></test-alarm>
-						<div class="bim-box">
-							<model type="indoor3d" fileId="10000815010702"></model>
+			<div class="indoor3d box-background">
+				<div class="indoor3d-box">
+					<div class="indoor3d-center">
+						<test-alarm ref="testAlarm" :type="28"></test-alarm>
+						<div class="bim-box">
+							<model type="indoor3d" fileId="10000892771892"></model>
 						</div>
 					</div>
-					<div class="indool3d-right">
-						<div class="indool3d-chart hui-flex">
+					<div class="indoor3d-right">
+						<div class="indoor3d-chart hui-flex">
 							<div class="hui-chart-title">
 								统计分析
 							</div>
 							<div ref="chart1" class="hui-flex-box"></div>
 						</div>
-						<div class="indool3d-list">
+						<div class="indoor3d-list">
 							<div class="alarm-table-box hui-flex">
 								<div class="alarm-title">
 									<div class="hui-chart-title">
-										设备告
+										室内三维报
 									</div>
 									<div class="alarm-tr">
 										<span class="tr-100">设备名称</span>
@@ -29,46 +29,18 @@
 										<span class="tr-50">状态</span>
 									</div>
 								</div>
-								<div class="alarm-table hui-flex-box">
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备1</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备2</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-green">已处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备3</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-green">已处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备4</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
+								<div class="hui-flex-box hui-no-tips" v-if="list.length === 0">
+									<empty width="100" description="暂无报警记录"></empty>
+								</div>
+								<div class="alarm-table hui-flex-box" v-else>
+									<div class="alarm-tr" v-for="(item,index) in list" :key="index">
+										<span class="tr-100 hui-ellipsis">{{item.deviceName}}</span>
+										<span class="tr-130">{{item.date}}</span>
+										<span class="tr-50 tr-center">
+											<span class="color-red" v-if="!item.state">报警中</span>
+											<span class="color-blue" v-else-if="item.state === 1">处理中</span>
+											<span class="color-green" v-else-if="item.state === 2">已处理</span>
+										</span>
 									</div>
 								</div>
 							</div>
@@ -81,25 +53,66 @@
 </template>
 
 <script>
-	import selectSpace from '@/components/work/common/selectSpace'
-	import testAlarm from '@/components/work/common/testAlarm'
+	import projectItemTree from '@/components/common/projectItemTree'
+	import testAlarm from '@/components/work/common/testAlarm'
 	import model from '@/components/work/common/model'
+	import {
+		getDeviceAlarmList
+	} from '@/httpApi/test'
 	export default {
 		data() {
-			return {}
+			return {
+				list: [],
+				type: 29
+			}
 		},
 		created() {
-			this.$nextTick(() => {
-				this.chart(this.$refs.chart1, [1, 3, 2, 6, 1])
-			})
+			this.init();
 		},
 		components: {
 			testAlarm,
-			selectSpace,
+			projectItemTree,
 			model
 		},
 		methods: {
-			chart(elem, data) {
+			init(option) {
+				let postData = {
+					type: this.type,
+					projectId: this.$store.getters.project.id
+				}
+				if (option) postData = Object.assign(postData, option);
+				getDeviceAlarmList(postData).then(res => {
+					if (res.state) {
+						this.list = res.data;
+						let obj = {},
+							list = [];
+						for (let i = 0; i < this.list.length; i++) {
+							if (!obj[this.list[i].deviceId]) {
+								obj[this.list[i].deviceId] = 1;
+								list.push({
+									id: this.list[i].deviceId,
+									name: this.list[i].deviceName,
+									value: 0,
+								})
+							}
+							list.find(node => node.id == this.list[i].deviceId).value++;
+						}
+						this.$nextTick(() => {
+							this.chart(this.$refs.chart1, list.map(node => node.value), list.map(
+								node =>
+								node.name))
+						})
+					}
+				})
+			},
+			treeclick(item) {
+				let obj = item.id ? {
+					projectItemTargetId: item.id
+				} : {}
+				if (this.$refs.testAlarm) this.$refs.testAlarm.init(obj);
+				this.init(obj);
+			},
+			chart(elem, data, x) {
 				let chart = echarts.init(elem);
 				let option = {
 					tooltip: {
@@ -128,7 +141,7 @@
 					color: ['#1978E5'],
 					xAxis: {
 						type: 'category',
-						data: ['安装', '保养', '维修', '巡检', '拆除'],
+						data: x,
 						axisLabel: {
 							margin: 4,
 							color: '#D0DEEE',
@@ -204,13 +217,13 @@
 </script>
 
 <style lang="scss">
-	.indool3d {
+	.indoor3d {
 		width: 100%;
 		height: 100%;
 		padding: 20px;
 		overflow: auto;
 
-		.indool3d-box {
+		.indoor3d-box {
 			width: 100%;
 			height: 100%;
 			min-width: 1100px;
@@ -218,7 +231,7 @@
 			display: flex;
 		}
 
-		.indool3d-center {
+		.indoor3d-center {
 			flex: 1;
 			width: 0;
 			height: 100%;
@@ -226,7 +239,7 @@
 			flex-direction: column;
 		}
 
-		.indool3d-right {
+		.indoor3d-right {
 			height: 100%;
 			width: 350px;
 			margin-left: 12px;
@@ -234,13 +247,13 @@
 			flex-direction: column;
 		}
 
-		.indool3d-chart {
+		.indoor3d-chart {
 			height: 306px;
 			background: rgba(0, 4, 10, 0.3);
 			padding: 20px;
 		}
 
-		.indool3d-list {
+		.indoor3d-list {
 			margin-top: 12px;
 			background: rgba(0, 4, 10, 0.3);
 			flex: 1;

+ 63 - 50
virgo.wzfrontend/console/src/views/work/energy/ventilate/vrv/vrv.vue

@@ -1,11 +1,11 @@
 <template>
 	<div class="yui-tree-box">
-		<select-space></select-space>
+		<project-item-tree @treeclick="treeclick" iconfontClass="el-icon-place"></project-item-tree>
 		<div class="hui-tree-content">
 			<div class="vrv box-background">
 				<div class="vrv-box">
 					<div class="vrv-center">
-						<test-alarm></test-alarm>
+						<test-alarm ref="testAlarm" :type="24"></test-alarm>
 						<div class="bim-box">
 							<model type="vrv" fileId="10000786668082"></model>
 						</div>
@@ -29,46 +29,18 @@
 										<span class="tr-50">状态</span>
 									</div>
 								</div>
-								<div class="alarm-table hui-flex-box">
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备1</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备2</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-green">已处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备3</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-green">已处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备4</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
-									</div>
-									<div class="alarm-tr">
-										<span class="tr-100 hui-ellipsis">设备5</span>
-										<span class="tr-130">2024-01-12 12:14:10</span>
-										<span class="tr-50 color-red">未处理</span>
+								<div class="hui-flex-box hui-no-tips" v-if="list.length === 0">
+									<empty width="100" description="暂无报警记录"></empty>
+								</div>
+								<div class="alarm-table hui-flex-box" v-else>
+									<div class="alarm-tr" v-for="(item,index) in list" :key="index">
+										<span class="tr-100 hui-ellipsis">{{item.deviceName}}</span>
+										<span class="tr-130">{{item.date}}</span>
+										<span class="tr-50 tr-center">
+											<span class="color-red" v-if="!item.state">报警中</span>
+											<span class="color-blue" v-else-if="item.state === 1">处理中</span>
+											<span class="color-green" v-else-if="item.state === 2">已处理</span>
+										</span>
 									</div>
 								</div>
 							</div>
@@ -81,25 +53,66 @@
 </template>
 
 <script>
-	import selectSpace from '@/components/work/common/selectSpace'
+	import projectItemTree from '@/components/common/projectItemTree'
 	import testAlarm from '@/components/work/common/testAlarm'
 	import model from '@/components/work/common/model'
+	import {
+		getDeviceAlarmList
+	} from '@/httpApi/test'
 	export default {
 		data() {
-			return {}
+			return {
+				list: [],
+				type: 25
+			}
 		},
 		created() {
-			this.$nextTick(() => {
-				this.chart(this.$refs.chart1, [1, 3, 2, 6, 1])
-			})
+			this.init();
 		},
 		components: {
 			testAlarm,
-			selectSpace,
+			projectItemTree,
 			model
 		},
 		methods: {
-			chart(elem, data) {
+			init(option) {
+				let postData = {
+					type: this.type,
+					projectId: this.$store.getters.project.id
+				}
+				if (option) postData = Object.assign(postData, option);
+				getDeviceAlarmList(postData).then(res => {
+					if (res.state) {
+						this.list = res.data;
+						let obj = {},
+							list = [];
+						for (let i = 0; i < this.list.length; i++) {
+							if (!obj[this.list[i].deviceId]) {
+								obj[this.list[i].deviceId] = 1;
+								list.push({
+									id: this.list[i].deviceId,
+									name: this.list[i].deviceName,
+									value: 0,
+								})
+							}
+							list.find(node => node.id == this.list[i].deviceId).value++;
+						}
+						this.$nextTick(() => {
+							this.chart(this.$refs.chart1, list.map(node => node.value), list.map(
+								node =>
+								node.name))
+						})
+					}
+				})
+			},
+			treeclick(item) {
+				let obj = item.id ? {
+					projectItemTargetId: item.id
+				} : {}
+				if (this.$refs.testAlarm) this.$refs.testAlarm.init(obj);
+				this.init(obj);
+			},
+			chart(elem, data, x) {
 				let chart = echarts.init(elem);
 				let option = {
 					tooltip: {
@@ -128,7 +141,7 @@
 					color: ['#1978E5'],
 					xAxis: {
 						type: 'category',
-						data: ['安装', '保养', '维修', '巡检', '拆除'],
+						data: x,
 						axisLabel: {
 							margin: 4,
 							color: '#D0DEEE',

+ 1 - 1
virgo.wzfrontend/console/src/views/work/energy/water/supply/lowcarbon.vue

@@ -7,7 +7,7 @@
 					<div class="lowcarbon-center">
 						<test-alarm ref="testAlarm" :type="22"></test-alarm>
 						<div class="bim-box">
-							<!-- <model type="firefighting" fileId="10000815010702"></model> -->
+							<model type="firefighting" fileId="10000815010702"></model>
 						</div>
 					</div>
 					<div class="lowcarbon-right">

+ 1 - 1
virgo.wzfrontend/console/src/views/work/iot/security/infrared.vue

@@ -77,7 +77,7 @@
 		methods: {
 			init(option) {
 				let postData = {
-					type: this.type, //1-周界报警
+					type: this.type,
 					projectId: this.$store.getters.project.id
 				}
 				if (option) postData = Object.assign(postData, option);

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/index.html


virgo.wzfrontend/src/main/resources/static/console/static/css/6946.64ad472f.css → virgo.wzfrontend/src/main/resources/static/console/static/css/1706.64ad472f.css


virgo.wzfrontend/src/main/resources/static/console/static/css/3889.eb2d7c9e.css → virgo.wzfrontend/src/main/resources/static/console/static/css/2363.eb2d7c9e.css


virgo.wzfrontend/src/main/resources/static/console/static/css/9952.7c138caa.css → virgo.wzfrontend/src/main/resources/static/console/static/css/4265.7c138caa.css


virgo.wzfrontend/src/main/resources/static/console/static/css/6957.eb2d7c9e.css → virgo.wzfrontend/src/main/resources/static/console/static/css/5503.eb2d7c9e.css


virgo.wzfrontend/src/main/resources/static/console/static/css/7236.b37dfbb0.css → virgo.wzfrontend/src/main/resources/static/console/static/css/6049.b37dfbb0.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/css/1171.9ac836aa.css


virgo.wzfrontend/src/main/resources/static/console/static/css/7470.b37dfbb0.css → virgo.wzfrontend/src/main/resources/static/console/static/css/6613.b37dfbb0.css


virgo.wzfrontend/src/main/resources/static/console/static/css/2759.77e8716b.css → virgo.wzfrontend/src/main/resources/static/console/static/css/6615.77e8716b.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/css/8551.9ac836aa.css


virgo.wzfrontend/src/main/resources/static/console/static/css/3319.92603bb6.css → virgo.wzfrontend/src/main/resources/static/console/static/css/7250.92603bb6.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/css/7312.92603bb6.css


virgo.wzfrontend/src/main/resources/static/console/static/css/9864.64ad472f.css → virgo.wzfrontend/src/main/resources/static/console/static/css/7920.64ad472f.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/css/6789.3f5e8527.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/css/4937.3f5e8527.css


virgo.wzfrontend/src/main/resources/static/console/static/css/9979.77e8716b.css → virgo.wzfrontend/src/main/resources/static/console/static/css/9955.77e8716b.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1000.3a50f88f.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1037-legacy.d66a4a21.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1171-legacy.d47d7284.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1216-legacy.807de6da.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1216.54f76e13.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1706-legacy.627edf2d.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2033.a48c5cd9.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3889-legacy.a1d59be1.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2453.f209666b.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/252-legacy.97b77e5e.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/252.f00ab650.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2590-legacy.bced8100.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/260.33b7b1e3.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2623-legacy.167f7326.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2759-legacy.6d9a09e6.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/287-legacy.e097aa3f.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3911.0b7e3ec8.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3319-legacy.68e94cad.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3319.32045ae8.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3475-legacy.5ce3f859.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7342-legacy.71b219b0.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/3845-legacy.12457ba1.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3845-legacy.bc0fac55.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3028.9f281c30.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/4027.f4bc0839.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/4135-legacy.d4f76eaa.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/4265-legacy.e22e1d2a.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/4265.d112fe79.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/4755-legacy.08d709b7.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/4827.3639d7e7.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/483.8f093d7c.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/4937-legacy.4d34c5a1.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/4985-legacy.dd8579fe.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/5139.ff493710.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/5257-legacy.09c0d7a1.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/532-legacy.de90105e.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/6957.6c3d4617.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/5545-legacy.3271dea5.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/5644.bd8105be.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/5749.a5f7824c.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/596.e7ce1ac3.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/6049.08bf8874.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/6338-legacy.74787098.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/6418-legacy.fc500b03.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/6613-legacy.59678bdf.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/6615.5cc325a7.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/6720-legacy.e5567015.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/6742.d4251088.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/6789.69c2dc8a.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/6849-legacy.8ca1dbb4.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/6849.6ea406d2.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/6946-legacy.28c50718.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7099-legacy.83c1abf4.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7110.82779782.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/7224.dd068aeb.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7236.c9424c3d.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/7250-legacy.16004e5e.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/7312.82992234.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/7342-legacy.b8062ab9.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7470-legacy.e85ea5f1.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7528.263c9bb4.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7870.ea8d1eb6.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/7920.dd46b223.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/8184-legacy.ec060df1.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/8223.c5c1ea6a.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/8261-legacy.399df7a6.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/8261.4a84f6b2.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/8261.c919280a.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/8446.2ac826d7.js


+ 0 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/8551.e845b494.js


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio