whx преди 3 месеца
родител
ревизия
b92a02c0d0
променени са 75 файла, в които са добавени 371 реда и са изтрити 256 реда
  1. BIN
      virgo.wzfrontend/console/public/assets/kongtiao.png
  2. 178 174
      virgo.wzfrontend/console/src/components/common/noticeBoard/device.vue
  3. 25 6
      virgo.wzfrontend/console/src/components/work/bim/modelDetail/monitor.vue
  4. 30 14
      virgo.wzfrontend/console/src/components/work/bim/operationModels.vue
  5. 4 4
      virgo.wzfrontend/console/src/components/work/common/bimModel.vue
  6. 23 10
      virgo.wzfrontend/console/src/components/work/common/threeModel.vue
  7. 4 4
      virgo.wzfrontend/console/src/components/work/property/propertyFlowForm.vue
  8. 67 0
      virgo.wzfrontend/console/src/httpApi/property.js
  9. 3 7
      virgo.wzfrontend/console/src/uitls/controls.js
  10. BIN
      virgo.wzfrontend/src/main/resources/static/console/assets/kongtiao.png
  11. 1 1
      virgo.wzfrontend/src/main/resources/static/console/index.html
  12. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/103.9910c679.css
  13. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/css/1663.3b69ce8e.css
  14. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/2209.aa0edd61.css
  15. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/3800.de042a42.css
  16. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/3935.731e3995.css
  17. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/5641.c727902a.css
  18. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/8012.de042a42.css
  19. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/8031.04af11d1.css
  20. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/8695.9910c679.css
  21. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/9234.04af11d1.css
  22. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/9797.aa0edd61.css
  23. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/css/9923.3b69ce8e.css
  24. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/103-legacy.25dca646.js
  25. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1200.93462853.js
  26. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1200.a3e0e8cc.js
  27. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1361.6449cadd.js
  28. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1663.531d5015.js
  29. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1996.af3cf650.js
  30. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2047.0053df9f.js
  31. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2193-legacy.7a77086e.js
  32. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/2277-legacy.64c2cd17.js
  33. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2379-legacy.8252b080.js
  34. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2379.55c1f32d.js
  35. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2433-legacy.38463986.js
  36. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/257-legacy.d42f66bd.js
  37. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2693.2130d83f.js
  38. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2803-legacy.ad1eb8ff.js
  39. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/2845.2851c22a.js
  40. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/307-legacy.1e51a26c.js
  41. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/307.03c90085.js
  42. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/31-legacy.2cd4bdcd.js
  43. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/31.37b85521.js
  44. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3509.da957923.js
  45. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3788-legacy.00036af9.js
  46. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/3800-legacy.af199609.js
  47. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/3836-legacy.5233ae5a.js
  48. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/3935-legacy.6d2d67f0.js
  49. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/3935.4acfacbe.js
  50. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/4776.5f340195.js
  51. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/5013-legacy.c2f0fd24.js
  52. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/5013.2dd67b88.js
  53. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/524.15d19b89.js
  54. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/5521-legacy.aa669996.js
  55. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/5521.bdb0aeb5.js
  56. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/5567-legacy.8d80ea18.js
  57. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/5567.d00eb59e.js
  58. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/5641.2d86573e.js
  59. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7104-legacy.697eb6c8.js
  60. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/7104-legacy.9852564c.js
  61. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7927-legacy.568e4fda.js
  62. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/7927-legacy.5f91d708.js
  63. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/7972.554a5bfe.js
  64. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/7972.d5658d55.js
  65. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/8012.63bef804.js
  66. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/8031-legacy.0f6bb6dd.js
  67. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/861-legacy.2df1a16c.js
  68. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/8695.fc84d88d.js
  69. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/9234.55ab9648.js
  70. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/9797.9ad381cf.js
  71. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/9923-legacy.6046f350.js
  72. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/app-legacy.a433ca90.js
  73. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/app-legacy.c94e2172.js
  74. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/app.21369c1a.js
  75. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/app.cb62fc62.js

BIN
virgo.wzfrontend/console/public/assets/kongtiao.png


+ 178 - 174
virgo.wzfrontend/console/src/components/common/noticeBoard/device.vue

@@ -6,31 +6,31 @@
 					<div class="organization-information-list">
 						<div class="item">
 							<div class="key">设备名称</div>
-							<div class="value">1号水泵</div>
+							<div class="value">{{detail.name}}</div>
 						</div>
 						<div class="item">
 							<div class="key">设备编码</div>
-							<div class="value">YX20250108001</div>
+							<div class="value">{{detail.deviceNumber}}</div>
 						</div>
 						<div class="item">
-							<div class="key">所属部门</div>
-							<div class="value">运维部</div>
+							<div class="key">资产编码</div>
+							<div class="value">{{detail.designNumber}}</div>
 						</div>
 						<div class="item">
-							<div class="key">设备位置</div>
-							<div class="value">1号楼-1F</div>
+							<div class="key">厂家</div>
+							<div class="value">{{detail.manufacturer}}</div>
 						</div>
 						<div class="item">
-							<div class="key">生产厂家</div>
-							<div class="value">上海水泵生产厂家</div>
+							<div class="key">联系人</div>
+							<div class="value">{{detail.liaison}}</div>
 						</div>
 						<div class="item">
 							<div class="key">联系方式</div>
-							<div class="value">李工-17601274604</div>
+							<div class="value">{{detail.liaisonPhone}}</div>
 						</div>
 						<div class="item">
 							<div class="key">进场时间</div>
-							<div class="value">2023-03-15</div>
+							<div class="value">{{detail.entryTime}}</div>
 						</div>
 					</div>
 				</box>
@@ -38,107 +38,27 @@
 			<div class="left-bottom">
 				<box label="全生命周期">
 					<div class="device-flow-list">
-						<div class="device-flow-item">
+						<div class="device-flow-item" v-for="(item,index) in deviceCount" :key="index">
 							<div class="device-flow-title">
-								<span class="title-name">采购</span>
+								<span class="title-name">{{item.name}}</span>
 								<div class="flow-tag">
 									<span class="text">合格</span>
-									<span class="number alibaba color-green">10</span>
+									<span class="number alibaba color-green">
+										{{item.eligibleNumber}}
+									</span>
 								</div>
 								<div class="flow-tag">
 									<span class="text">整改中</span>
-									<span class="number alibaba color-purple">3</span>
+									<span class="number alibaba color-purple">
+										{{item.correctionNumber}}
+									</span>
 								</div>
 							</div>
 							<div class="device-flow-document">
-								<div class="document">设备流程文档名称.pdf</div>
-							</div>
-						</div>
-						<div class="device-flow-item">
-							<div class="device-flow-title">
-								<span class="title-name">进场</span>
-								<div class="flow-tag">
-									<span class="text">合格</span>
-									<span class="number alibaba color-green">10</span>
-								</div>
-								<div class="flow-tag">
-									<span class="text">整改中</span>
-									<span class="number alibaba color-purple">3</span>
-								</div>
-							</div>
-							<div class="device-flow-document">
-								<div class="document">设备流程文档名称.pdf</div>
-							</div>
-						</div>
-						<div class="device-flow-item">
-							<div class="device-flow-title">
-								<span class="title-name">安装</span>
-								<div class="flow-tag">
-									<span class="text">合格</span>
-									<span class="number alibaba color-green">10</span>
-								</div>
-								<div class="flow-tag">
-									<span class="text">整改中</span>
-									<span class="number alibaba color-purple">3</span>
-								</div>
-							</div>
-							<div class="device-flow-document">
-								<div class="document">设备流程文档名称.pdf</div>
-								<div class="document">设备流程文档名称.pdf</div>
-								<div class="document">设备流程文档名称.pdf</div>
-							</div>
-						</div>
-						<div class="device-flow-item">
-							<div class="device-flow-title">
-								<span class="title-name">运维</span>
-								<div class="flow-tag">
-									<span class="text">合格</span>
-									<span class="number alibaba color-green">10</span>
-								</div>
-								<div class="flow-tag">
-									<span class="text">整改中</span>
-									<span class="number alibaba color-purple">3</span>
-								</div>
-							</div>
-							<div class="device-flow-document">
-								<div class="document">设备流程文档名称.pdf</div>
-							</div>
-						</div>
-						<div class="device-flow-item">
-							<div class="device-flow-title">
-								<span class="title-name">保养</span>
-								<div class="flow-tag">
-									<span class="text">合格</span>
-									<span class="number alibaba color-green">10</span>
-								</div>
-								<div class="flow-tag">
-									<span class="text">整改中</span>
-									<span class="number alibaba color-purple">3</span>
-								</div>
-							</div>
-							<div class="device-flow-document">
-								<div class="document">设备流程文档名称.pdf</div>
-								<div class="document">设备流程文档名称.pdf</div>
-								<div class="document">设备流程文档名称.pdf</div>
-							</div>
-						</div>
-						<div class="device-flow-item">
-							<div class="device-flow-title">
-								<span class="title-name">维修</span>
-								<div class="flow-tag">
-									<span class="text">合格</span>
-									<span class="number alibaba color-green">10</span>
-								</div>
-								<div class="flow-tag">
-									<span class="text">整改中</span>
-									<span class="number alibaba color-purple">3</span>
+								<div class="document" v-for="(node,index) in item.list">
+									{{$dayjs(node.date).format('YYYY-MM-DD')}}
 								</div>
 							</div>
-							<div class="device-flow-document">
-								<div class="document">设备流程文档名称.pdf</div>
-								<div class="document">设备流程文档名称.pdf</div>
-								<div class="document">设备流程文档名称.pdf</div>
-							</div>
 						</div>
 					</div>
 				</box>
@@ -151,11 +71,15 @@
 						<div class="device-list">
 							<div class="device-item">
 								<span>设备状态</span>
-								<span class="color-green state">在线</span>
+								<span :class="'state ' + (detail.state === 3 ?'color-red' : 'color-green')">
+									{{detail.state === 3?'故障':'在线'}}
+								</span>
 							</div>
 							<div class="device-item">
 								<span>运行状态</span>
-								<span class="color-green state">开启</span>
+								<span :class="'state ' + (detail.state === 1 ?'color-green' : 'color-gray')">
+									{{detail.state === 1?'开启':'关闭'}}
+								</span>
 							</div>
 						</div>
 						<div class="device-test">
@@ -164,7 +88,7 @@
 								<div class="test-content">
 									<div class="name">传感器数量</div>
 									<div class="number">
-										<span class="const alibaba">3</span>
+										<span class="const alibaba">{{sensorData.totalNumber}}</span>
 										<span class="unit">个</span>
 									</div>
 								</div>
@@ -174,7 +98,7 @@
 								<div class="test-content">
 									<div class="name">开启数量</div>
 									<div class="number">
-										<span class="const alibaba">3</span>
+										<span class="const alibaba">{{sensorData.openNumber}}</span>
 										<span class="unit">个</span>
 									</div>
 								</div>
@@ -184,7 +108,7 @@
 								<div class="test-content">
 									<div class="name">故障数量</div>
 									<div class="number">
-										<span class="const alibaba">0</span>
+										<span class="const alibaba">{{sensorData.faultNumber}}</span>
 										<span class="unit">个</span>
 									</div>
 								</div>
@@ -194,11 +118,17 @@
 				</box>
 			</div>
 			<div class="center-bottom">
-				<box label="设备模型">
-					<three-model
-						url="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/f1e6fc9ca6ed46e79ba18d0a3f1b73dc"
-						:type="1">
+				<box label="设备展示">
+					<three-model :modelId="detail.modelBindContent" :type="1" v-if="detail.modelBindType === 2">
 					</three-model>
+					<div class="center-img" v-else>
+						<play-video :ref="detail.deviceSerialNumber"
+							:sourceUrl="`ezopen://open.ys7.com/${detail.deviceSerialNumber}/1.live`" template="simple"
+							v-if="sign.id === 1 ">
+						</play-video>
+						<img src="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/d8f0a8b4bd2043dfb8058d92763e57b0"
+							alt="aa.png" v-else />
+					</div>
 				</box>
 			</div>
 		</div>
@@ -216,59 +146,15 @@
 			<div class="right-bottom">
 				<box label="告警记录">
 					<div class="alarm-record">
-						<div class="record-item">
-							<div class="number">
-								01
-							</div>
-							<div class="value">
-								<div class="hui-ellipsis">xxx设备在xxx时间发生报警,请尽快查看并处理。</div>
-							</div>
-							<div class="state color-red">
-								报警中
-							</div>
-						</div>
-						<div class="record-item">
-							<div class="number">
-								02
-							</div>
-							<div class="value">
-								<div class="hui-ellipsis">xxx设备在xxx时间发生报警,请尽快查看并处理。</div>
-							</div>
-							<div class="state color-blue">
-								已处理
-							</div>
-						</div>
-						<div class="record-item">
-							<div class="number">
-								03
-							</div>
-							<div class="value">
-								<div class="hui-ellipsis">xxx设备在xxx时间发生报警,请尽快查看并处理。</div>
-							</div>
-							<div class="state color-red">
-								报警中
-							</div>
-						</div>
-						<div class="record-item">
-							<div class="number">
-								04
-							</div>
-							<div class="value">
-								<div class="hui-ellipsis">xxx设备在xxx时间发生报警,请尽快查看并处理。</div>
-							</div>
-							<div class="state color-blue">
-								已处理
-							</div>
-						</div>
-						<div class="record-item">
-							<div class="number">
-								05
-							</div>
+						<div class="record-item" v-for="(item,index) in alarmData" :key="index">
+							<div class="number">{{index+1}}</div>
 							<div class="value">
-								<div class="hui-ellipsis">xxx设备在xxx时间发生报警,请尽快查看并处理。</div>
+								<div class="hui-ellipsis">{{item.info}}</div>
 							</div>
-							<div class="state color-blue">
-								已处理
+							<div class="state">
+								<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>
 							</div>
 						</div>
 					</div>
@@ -281,22 +167,128 @@
 <script>
 	import box from '@/components/common/noticeBoard/box'
 	import threeModel from '@/components/work/common/threeModel'
+	import playVideo from '@/components/common/playVideo.vue'
+	import {
+		getDeviceById,
+		getDeviceCount,
+		getFlowList,
+		getDeviceSensorCount,
+		getDeviceLiveData,
+		getDeviceAlarm,
+		getDeviceHistory
+	} from '@/httpApi/property'
 	export default {
+		props: ['detailId'],
 		data() {
 			return {
-				optionData: []
+				detail: {},
+				deviceCount: [],
+				sensorData: {
+					totalNumber: 0,
+					faultNumber: 0,
+					openNumber: 0
+				},
+				alarmData: [],
+				signList: [{
+					id: 1,
+					name: '摄像头',
+					iconPath: './assets/shexiangtou.png'
+				}, {
+					id: 2,
+					name: '门禁',
+					iconPath: './assets/menjin.png'
+				}, {
+					id: 3,
+					name: '停车',
+					iconPath: './assets/car.png'
+				}, {
+					id: 4,
+					name: '照明',
+					iconPath: './assets/zhaoming.png'
+				}],
+				sign: {}
 			}
 		},
-		created() {},
-		mounted() {
+		created() {
 			this.$nextTick(() => {
 				this.init();
-				this.chart(this.$refs.chart1, ['3:00', '6:00', '9:00', '12:00', '15:00', '18:00', '21:00',
-					'24:00'
-				], [3, 4, 2, 5, 6, 4, 7, 3])
 			})
 		},
 		methods: {
+			init() {
+				this.initDetail();
+				this.initFlowCount();
+				this.initSensor();
+				this.initLive();
+				this.initHistory();
+				this.initAlarm();
+			},
+			initDetail() {
+				getDeviceById(this.detailId).then(res => {
+					if (res.state) {
+						this.detail = res.data;
+						if (this.detail.modelBindType === 3 && this.detail.modelBindContent && this.detail
+							.modelBindPosition) {
+							this.sign = this.signList.find(node => node.id == this.detail.modelBindContent);
+						}
+					}
+				})
+			},
+			initFlowCount() {
+				getDeviceCount(this.detailId).then(res => {
+					if (res.state) {
+						let obj = res.data;
+						this.deviceCount = this.$device.type.map(node => {
+							let arrObj = obj[node.id] || {
+								eligibleNumber: 0,
+								correctionNumber: 0,
+								list: []
+							}
+							return Object.assign(node, arrObj);
+						});
+					}
+				})
+			},
+			initSensor() {
+				getDeviceSensorCount(this.detailId).then(res => {
+					if (res.state) this.sensorData = res.data;
+				})
+			},
+			initLive() {
+				getDeviceLiveData(this.detailId).then(res => {
+					if (res.state) {
+						let list = res.data,
+							x = [],
+							data = [];
+						for (let i = 0; i < list.length; i++) {
+							x.push(this.dayjs(list[i]).format('HH:mm'));
+							data.push(list[i].data);
+						}
+						this.chart(this.$refs.chart1, x, data)
+					}
+				})
+			},
+			initHistory() {
+				getDeviceHistory(this.detailId).then(res => {
+					if (res.state) {
+						let list = res.data,
+							x = [],
+							data = [],
+							maxData = 0;
+						for (let i = 0; i < list.length; i++) {
+							x.push(list[i].dataKay);
+							data.push(list[i].dataValue);
+							if (list[i].dataValue > maxData) maxData = list[i].dataValue;
+						}
+						this.chart2(this.$refs.chart2, x, data, data.map(() => maxData));
+					}
+				})
+			},
+			initAlarm() {
+				getDeviceAlarm(this.detailId).then(res => {
+					if (res.state) this.alarmData = res.data;
+				})
+			},
 			chart(elem, x, data) {
 				let chart = echarts.init(elem);
 				let option = {
@@ -397,8 +389,8 @@
 				};
 				chart.setOption(option);
 			},
-			init() {
-				let myChart = echarts.init(this.$refs.chart2);
+			chart2(elem, x, data, maxData) {
+				let myChart = echarts.init(elem);
 				// option
 				let option = {
 					grid: {
@@ -410,7 +402,7 @@
 					},
 					color: 'rgba(33,104,206,1)',
 					xAxis: {
-						data: ['01', '02', '03', '04', '05', '06'],
+						data: x,
 						axisLabel: {
 							lineStyle: {
 								color: 'rgba(255,255,255,.1)'
@@ -459,7 +451,7 @@
 						showAllSymbol: true,
 						symbol: 'emptyCircle',
 						symbolSize: 15,
-						data: [3, 2, 3, 4, 7, 6]
+						data: data
 					}, {
 						name: 'bar',
 						type: 'bar',
@@ -476,7 +468,7 @@
 								}
 							])
 						},
-						data: [3, 2, 3, 4, 7, 6]
+						data: data
 					}, {
 						name: 'line',
 						type: 'bar',
@@ -498,7 +490,7 @@
 							])
 						},
 						z: -12,
-						data: [7, 7, 7, 7, 7, 7]
+						data: maxData
 					}, {
 						name: 'dotted',
 						type: 'pictorialBar',
@@ -510,7 +502,7 @@
 						symbolSize: [12, 4],
 						symbolMargin: 1,
 						z: -10,
-						data: [7, 7, 7, 7, 7, 7]
+						data: maxData
 					}]
 				};
 				myChart.setOption(option);
@@ -518,7 +510,8 @@
 		},
 		components: {
 			box,
-			threeModel
+			threeModel,
+			playVideo
 		}
 	}
 </script>
@@ -813,6 +806,17 @@
 			flex: 1;
 			height: 0;
 			margin-top: 15px;
+
+			.center-img {
+				width: 100%;
+				height: 100%;
+
+				img {
+					width: 100%;
+					height: 100%;
+					object-fit: cover;
+				}
+			}
 		}
 	}
 

+ 25 - 6
virgo.wzfrontend/console/src/components/work/bim/modelDetail/monitor.vue

@@ -2,7 +2,9 @@
 	<div class="monitor-model-detail user-list">
 		<div class="user-item">
 			<div class="user-key">设备名称</div>
-			<div class="user-value">{{detail.name}}</div>
+			<div class="user-value color-blue" style="cursor: pointer;" @click="$emit('clickName','2')">
+				{{detail.name}}
+			</div>
 		</div>
 		<div class="user-item">
 			<div class="user-key">设备类型</div>
@@ -28,7 +30,7 @@
 			<div class="user-key">型号</div>
 			<div class="user-value">{{detail.deviceModel}}</div>
 		</div>
-		<div class="user-item-image" style="height: 150px;">
+		<div class="user-item-image" style="height: 150px;" v-if="type === 'monitor'">
 			<play-video :ref="detail.deviceSerialNumber"
 				:sourceUrl="`ezopen://open.ys7.com/${detail.deviceSerialNumber}/1.live`" template="simple">
 			</play-video>
@@ -36,6 +38,14 @@
 				<i class="iconfont huifont-shuzhuangcaidanxiala"></i>
 			</div>
 		</div>
+		<div class="user-item" v-if="type === 'lighting'">
+			<div class="user-key">照明操作</div>
+			<div class="user-value">
+				<el-switch v-model="detail.state" active-color="#13ce66" :active-value="1" :inactive-value="0"
+					@change="changeLight">
+				</el-switch>
+			</div>
+		</div>
 		<div class="video-toggle" v-if="isVideo">
 			<div class="title">
 				<div class="title-icon"><i></i></div>
@@ -55,16 +65,17 @@
 
 <script>
 	import playVideo from '@/components/common/playVideo.vue'
+	import {
+		updateDevice
+	} from '@/httpApi/property'
 	export default {
-		props: ['detail'],
+		props: ['detail', 'type'],
 		data() {
 			return {
 				isVideo: false,
 			}
 		},
-		created() {
-			console.log(this.detail);
-		},
+		created() {},
 		methods: {
 			clickVideo() {
 				if (!this.$refs[this.detail.deviceSerialNumber]) return;
@@ -77,6 +88,14 @@
 				}
 				this.$refs.playVideo.destroy();
 			},
+			changeLight() {
+				updateDevice({
+					id: this.detail.id,
+					state: this.detail.state
+				}).then(res => {
+					if (res.state) this.$message.success('操作成功');
+				})
+			}
 		},
 		components: {
 			playVideo

+ 30 - 14
virgo.wzfrontend/console/src/components/work/bim/operationModels.vue

@@ -17,7 +17,9 @@
 				<organization v-if="type === 'organizationDetail'" :detail="detail" @clickName="clickName">
 				</organization>
 				<house v-else-if="type === 'roomDetail'" :detail="detail"></house>
-				<monitor v-else-if="type === 'monitor'" :detail="detail"></monitor>
+				<device v-else-if="type === 'monitor' || type === 'lighting' || type === 'airConditioning'"
+					:detail="detail" :type="type" @clickName="clickName">
+				</device>
 			</div>
 		</div>
 		<el-dialog :close-on-click-modal="false" :title="noticeBoardType === '1' ? '企业看板':'设备看板'"
@@ -44,7 +46,7 @@
 	import noticeBoard from '@/components/work/common/noticeBoard'
 	import organization from '@/components/work/bim/modelDetail/organization'
 	import house from '@/components/work/bim/modelDetail/house'
-	import monitor from '@/components/work/bim/modelDetail/monitor'
+	import device from '@/components/work/bim/modelDetail/device'
 	export default {
 		props: ['target'],
 		data() {
@@ -65,6 +67,14 @@
 					id: 2,
 					name: '监控',
 					type: 'monitor'
+				}, {
+					id: 3,
+					name: '照明',
+					type: 'lighting'
+				}, {
+					id: 4,
+					name: '空调',
+					type: 'airConditioning'
 				}],
 				pathNode: {
 					id: 1,
@@ -73,19 +83,19 @@
 				signList: [{
 					id: 1,
 					name: '摄像头',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/370f04b711094bebbf7623371678b426'
+					iconPath: './assets/shexiangtou.png'
 				}, {
 					id: 2,
 					name: '门禁',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/2585f3b800b34181b6b36044ab517447'
+					iconPath: './assets/menjin.png'
 				}, {
 					id: 3,
 					name: '停车',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/1326f380e5c542c085899bde868358a8'
+					iconPath: './assets/car.png'
 				}, {
 					id: 4,
 					name: '照明',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/a8ad1d0f82bf453c8c972fcad32bf50e'
+					iconPath: './assets/zhaoming.png'
 				}]
 			}
 		},
@@ -125,7 +135,7 @@
 			noticeBoard,
 			organization,
 			house,
-			monitor
+			device
 		},
 		methods: {
 			selectItem(item) {
@@ -134,7 +144,9 @@
 				this.drapShow = false;
 				this.clearAll();
 				if (item.id === 1) this.setFloor();
-				if (item.id === 2) this.getDeviceList('monitor')
+				if (item.id === 2) this.getDeviceList('monitor');
+				if (item.id === 3) this.getDeviceList('lighting');
+				if (item.id === 4) this.getDeviceList('airConditioning');
 			},
 			clearAll() {
 				if (!this.bimViewer) return;
@@ -199,10 +211,17 @@
 			operationDevice() {
 				let list = this.deviceList.filter(node => node.projectItemTargetId === this.item.id &&
 					node.type === 1);
+				console.log(list);
 				for (let i = 0; i < list.length; i++) {
 					if (list[i].modelBindType) {
-						if (list[i].modelBindType === 3 && list[i].modelBindContent && list[i].modelBindPosition) {
-							let item = this.signList.find(node => node.id == list[i].modelBindContent);
+						if ((list[i].modelBindType === 2 || list[i].modelBindType === 3) && list[i].modelBindContent &&
+							list[i].modelBindPosition) {
+							let item = list[i].modelBindType === 3 ? this.signList.find(node => node.id == list[i]
+								.modelBindContent) : {
+								id: 5,
+								name: '空调',
+								iconPath: './assets/kongtiao.png'
+							};
 							let position = JSON.parse(list[i].modelBindPosition);
 							this.bimViewer.add3DMaker('image', position, item.iconPath, (data) => {
 								let id = data.id.split('-')[1];
@@ -213,9 +232,6 @@
 						}
 					}
 				}
-			},
-			clickMark() {
-
 			},
 			changeTarget(data) {
 				this.clearFloor();
@@ -254,7 +270,7 @@
 					family: "基本墙",
 					levelName: "标高 1"
 				}], "#afa6ab");
-
+				// this.bimViewer.setView('Top');
 			},
 			initFloor() {
 				for (var i = 0; i < this.roomList.length; i++) {

+ 4 - 4
virgo.wzfrontend/console/src/components/work/common/bimModel.vue

@@ -34,19 +34,19 @@
 				signList: [{
 					id: 1,
 					name: '摄像头',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/370f04b711094bebbf7623371678b426'
+					iconPath: './assets/shexiangtou.png'
 				}, {
 					id: 2,
 					name: '门禁',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/2585f3b800b34181b6b36044ab517447'
+					iconPath: './assets/menjin.png'
 				}, {
 					id: 3,
 					name: '停车',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/1326f380e5c542c085899bde868358a8'
+					iconPath: './assets/car.png'
 				}, {
 					id: 4,
 					name: '照明',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/a8ad1d0f82bf453c8c972fcad32bf50e'
+					iconPath: './assets/zhaoming.png'
 				}]
 			}
 		},

+ 23 - 10
virgo.wzfrontend/console/src/components/work/common/threeModel.vue

@@ -6,20 +6,33 @@
 
 <script>
 	import threeControls from '@/uitls/threeControls';
+	import {
+		get3DModelDetail
+	} from '@/httpApi/property'
 	export default {
-		props: ['url', 'type'],
+		props: ['url', 'type', 'modelId'],
 		data() {
 			return {
 				threeObj: null,
-				imgUrl: ''
+				imgUrl: '',
+				imgType: ''
 			}
 		},
-		created() {
-			console.log('create');
-			if (this.url) this.init();
+		created() {
+			if (this.url) {
+				this.imgUrl = this.url;
+				this.imgType = this.type;
+				this.init();
+			}
+			if (this.modelId) get3DModelDetail(this.modelId).then(res => {
+				if (res.state) {
+					this.imgUrl = res.data.address;
+					this.imgType = res.data.type;
+					this.init();
+				}
+			})
 		},
 		beforeDestroy() {
-			console.log("销毁");
 			this.destroyThreejs();
 		},
 		methods: {
@@ -29,11 +42,11 @@
 						container: document.getElementById('threeModel')
 					});
 					// threeObj.setAxisHelper();
-					if (this.type == 1) {
-						this.threeObj.loaderGLTF(this.url);
+					if (this.imgType == 1) {
+						this.threeObj.loaderGLTF(this.imgUrl);
 
-					} else if (this.type == 2) {
-						this.threeObj.loaderFBX(this.url);
+					} else if (this.imgType == 2) {
+						this.threeObj.loaderFBX(this.imgUrl);
 					}
 					// threeObj.setState();
 					this.threeObj.OrbitControls();

+ 4 - 4
virgo.wzfrontend/console/src/components/work/property/propertyFlowForm.vue

@@ -163,19 +163,19 @@
 				signList: [{
 					id: 1,
 					name: '摄像头',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/370f04b711094bebbf7623371678b426'
+					iconPath: './assets/shexiangtou.png'
 				}, {
 					id: 2,
 					name: '门禁',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/2585f3b800b34181b6b36044ab517447'
+					iconPath: './assets/menjin.png'
 				}, {
 					id: 3,
 					name: '停车',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/1326f380e5c542c085899bde868358a8'
+					iconPath: './assets/car.png'
 				}, {
 					id: 4,
 					name: '照明',
-					iconPath: 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/a8ad1d0f82bf453c8c972fcad32bf50e'
+					iconPath: './assets/zhaoming.png'
 				}],
 				position: {
 					x: '',

+ 67 - 0
virgo.wzfrontend/console/src/httpApi/property.js

@@ -208,6 +208,18 @@ export function updateDevice(data) {
 		data: data
 	})
 }
+/* 
+ * 获取设备详情
+ * 
+ * 
+ */
+export function getDeviceById(id) {
+	console.log(id);
+	return request({
+		url: `/api/operateDevice/${id}`,
+		method: 'get'
+	})
+}
 /* 
  * 仓库列表
  * 
@@ -347,4 +359,59 @@ export function insertCoding(data) {
 		method: 'post',
 		data: data
 	})
+}
+/* 
+ * 获取设备全生命周期
+ * 
+ * 
+ */
+export function getDeviceCount(id) {
+	return request({
+		url: `/api/operateFlowData/count/${id}`,
+		method: 'get'
+	})
+}
+/* 
+ * 获取传感器数据
+ * 
+ * 
+ */
+export function getDeviceSensorCount(id) {
+	return request({
+		url: `/api/test/deviceSensor/count/${id}`,
+		method: 'get'
+	})
+}
+/* 
+ * 获取设备实时数据
+ * 
+ * 
+ */
+export function getDeviceLiveData(id) {
+	return request({
+		url: `/api/test/deviceLiveData/${id}`,
+		method: 'get'
+	})
+}
+/* 
+ * 获取设备报警列表
+ * 
+ * 
+ */
+export function getDeviceAlarm(id) {
+	return request({
+		url: `/api/test/giveAlarm/${id}`,
+		method: 'get'
+	})
+}
+/* 
+ * 获取设备历史走势
+ * 
+ * 
+ */
+export function getDeviceHistory(id) {
+	return request({
+		url: `/api/test/deviceLiveData/history/${id}`,
+		method: 'get'
+	})
 }

+ 3 - 7
virgo.wzfrontend/console/src/uitls/controls.js

@@ -691,13 +691,9 @@ class bimView {
 				let fbxId = extObjMng.getObjectIdByName("robot" + i);
 				// 将构件移至初始位置
 				extObjMng.translate(fbxId, new THREE.Vector3(position.x, position.y, position.z));
-				extObjMng.scale(fbxId, new THREE.Vector3(240, 400, 240));
-				extObjMng.rotateX(fbxId, Math.PI);
-				extObjMng.rotateZ(fbxId, i < 5 ? -Math.PI / 4 : Math.PI / 4);
-				extObjMng.offsetY(fbxId, -11600)
-				extObjMng.overrideColor({
-					ids: [fbxId]
-				}, new Glodon.Web.Graphics.Color("#28e991", 0.3))
+				// extObjMng.scale(fbxId, new THREE.Vector3(240, 400, 240));
+				// extObjMng.rotateX(fbxId, Math.PI);
+				// extObjMng.rotateZ(fbxId, i < 5 ? -Math.PI / 4 : Math.PI / 4);
 				viewer3D.render();
 			});
 		}

BIN
virgo.wzfrontend/src/main/resources/static/console/assets/kongtiao.png


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/index.html


virgo.wzfrontend/src/main/resources/static/console/static/css/257.9910c679.css → virgo.wzfrontend/src/main/resources/static/console/static/css/103.9910c679.css


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/css/1663.3b69ce8e.css


virgo.wzfrontend/src/main/resources/static/console/static/css/2047.aa0edd61.css → virgo.wzfrontend/src/main/resources/static/console/static/css/2209.aa0edd61.css


virgo.wzfrontend/src/main/resources/static/console/static/css/3788.de042a42.css → virgo.wzfrontend/src/main/resources/static/console/static/css/3800.de042a42.css


virgo.wzfrontend/src/main/resources/static/console/static/css/5013.731e3995.css → virgo.wzfrontend/src/main/resources/static/console/static/css/3935.731e3995.css


virgo.wzfrontend/src/main/resources/static/console/static/css/524.c727902a.css → virgo.wzfrontend/src/main/resources/static/console/static/css/5641.c727902a.css


virgo.wzfrontend/src/main/resources/static/console/static/css/4776.de042a42.css → virgo.wzfrontend/src/main/resources/static/console/static/css/8012.de042a42.css


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/css/8031.04af11d1.css


virgo.wzfrontend/src/main/resources/static/console/static/css/3509.9910c679.css → virgo.wzfrontend/src/main/resources/static/console/static/css/8695.9910c679.css


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/css/9234.04af11d1.css


virgo.wzfrontend/src/main/resources/static/console/static/css/2193.aa0edd61.css → virgo.wzfrontend/src/main/resources/static/console/static/css/9797.aa0edd61.css


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/css/9923.3b69ce8e.css


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/103-legacy.25dca646.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1200.93462853.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1200.a3e0e8cc.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1361.6449cadd.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1663.531d5015.js


virgo.wzfrontend/src/main/resources/static/console/static/js/1996.00615eda.js → virgo.wzfrontend/src/main/resources/static/console/static/js/1996.af3cf650.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2047.0053df9f.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2193-legacy.7a77086e.js


virgo.wzfrontend/src/main/resources/static/console/static/js/2277-legacy.1c82d686.js → virgo.wzfrontend/src/main/resources/static/console/static/js/2277-legacy.64c2cd17.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2379-legacy.8252b080.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2379.55c1f32d.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2433-legacy.38463986.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/257-legacy.d42f66bd.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2693.2130d83f.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2803-legacy.ad1eb8ff.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/2845.2851c22a.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/307-legacy.1e51a26c.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/307.03c90085.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/31-legacy.2cd4bdcd.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/31.37b85521.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3509.da957923.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3788-legacy.00036af9.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/3800-legacy.af199609.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/3836-legacy.5233ae5a.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/3935-legacy.6d2d67f0.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/3935.4acfacbe.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/4776.5f340195.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/5013-legacy.c2f0fd24.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/5013.2dd67b88.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/524.15d19b89.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/5521-legacy.aa669996.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/5521.bdb0aeb5.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/5567-legacy.8d80ea18.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/5567.d00eb59e.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/5641.2d86573e.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7104-legacy.697eb6c8.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/7104-legacy.9852564c.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7927-legacy.568e4fda.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/7927-legacy.5f91d708.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/7972.554a5bfe.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/7972.d5658d55.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/8012.63bef804.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/8031-legacy.0f6bb6dd.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/861-legacy.2df1a16c.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/8695.fc84d88d.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/9234.55ab9648.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/9797.9ad381cf.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/9923-legacy.6046f350.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/app-legacy.a433ca90.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/app-legacy.c94e2172.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/app.21369c1a.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/app.cb62fc62.js