| 
					
				 | 
			
			
				@@ -108,12 +108,14 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					</view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				</view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				<!-- 视频部分 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<view class="video-max-box" v-if="urlList[0]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<video v-for="(item,index) in urlList" :key="index" ref="videoRef" :src="item.url" :poster="videoCover" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						:custom-cache='false' :autoplay="true" :controls="true" :enable-danmu="false" :muted="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						:show-fullscreen-btn="true" :show-center-play-btn="false" :show-play-btn="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						@error="videoErrorCallback"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					</video> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<!-- <view class="video-max-box"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</view> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<view class="device-type"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<view @click="getVideo()"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<img src="@/pages_manage/images/icon_xq_spjk.png"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<view>视频监控</view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<img src="@/pages_manage/images/icon_wdwg_gd.png"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				</view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				<view class="bottom-button-box"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					<view class="voice" @click="shadeTypeClick()">语音广播</view> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -158,10 +160,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	import $mqtt from '@/utils/mqtt.min.js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		textParseUrlIps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		laboratoryInfo, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		getCameraByFloor, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		getDeviceListBySub, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		GetStartList, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		firedeviceStatus, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		firedeviceStart, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		firedeviceCancel, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -210,8 +209,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				floorId: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				//实验室 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				fjListArray: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				//视频数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				urlList: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				//接收参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				subId: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				subName: "", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -318,7 +315,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			backButton() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				let self = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.$set(this, 'pageType', 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.$set(this, 'urlList', []); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.laboratoryBigViewGetBuildByBigView(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			//结束预案 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -344,6 +340,26 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//获取视频数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			getVideo(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (!controlsRestrictVerify('subVideo')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					uni.showToast({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						title: '没有相关操作权限,请联系管理员', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						icon: "none", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						mask: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						duration: 2000 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let obj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					type:5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					floorId:this.floorId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					subId:this.subId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				uni.navigateTo({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						url: '/pages_manage/views/laboratory/videoPlayer?item='+encodeURIComponent(JSON.stringify(obj)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			async closeRiskPlan() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				console.log('this.groupId',this.groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				const { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -520,89 +536,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				}]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				getApp().appMqttOn(1, list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			//获取实验室摄像头 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			async laboratoryInfo() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				let _this = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				const { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} = await laboratoryInfo(_this.itemData.subjectId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (data.code == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					let list = data.data[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					list.labHardwareVOList.forEach(function(item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						if (item.hardwareTypeEnum.enumName == 'VIDEO_MONITOR') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							console.log(item.hardwareNUM) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							_this.videoHardwareNUM.push(item.hardwareNUM) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					this.getCameraByFloor(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			//获取楼层摄像头列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			async getCameraByFloor() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				let _this = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				const { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} = await getCameraByFloor({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					floorId: this.floorId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (data.code == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (data.data[0]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						let list = _this.videoHardwareNUM.concat(data.data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						let qc = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						for (var i = 0; i < list.length - 1; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							for (var j = i + 1; j < list.length; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								if (list[i] === list[j]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									list.splice(j, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									j--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.GetStartList(list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.GetStartList(_this.videoHardwareNUM); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			async GetStartList(rows) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				console.log(rows) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				let self = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (!rows[0]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				let list = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				for (let i = 0; i < rows.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					list = list + rows[i] + "," 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				let obj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					page: "1", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					count: "100", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					deviceIds: list, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				const { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} = await GetStartList(obj) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (data.code == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					let list = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					for (let i = 0; i < data.data.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						let text = uni.getStorageSync('cameraUrl'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						let url = data.data[i].hls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						url = url.split("rtp/"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						let newUrl = text + 'rtp/' + url[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						let obj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							name: "楼道监控" + (i + 1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							id: data.data[i].deviceID, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							url: newUrl, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							videoContext: wx.createVideoContext(data.data[i].deviceID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						list.push(obj) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					this.urlList = list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			//点击选择喇叭 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			trumpetClick(index) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.trumpetList[index].type = !this.trumpetList[index].type 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -814,9 +747,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.$set(this, 'pageType', 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.getDeviceList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				//this.laboratoryInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.getRedisEvacuation(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			//执行疏散 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			async lineEvacuate() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1965,5 +1896,61 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			margin: 50rpx auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			border-radius: 20rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.device-type { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-top:20rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			border-radius:20rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			background: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			padding: 24rpx 20rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			justify-content: flex-start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			flex-wrap: wrap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			>view { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//width: 356rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				height: 60rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				justify-content: flex-start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				padding-left: 10rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				padding-right: 10rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				>img:nth-of-type(1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					width: 42rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					height: 42rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					margin-right: 12rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				>view { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					font-family: PingFang SC; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					font-weight: 500; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					font-size: 30rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					color: #222222; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					line-height: 60rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					width: 560rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				>img:nth-of-type(2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					width: 24rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					height: 22rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			>view:nth-child(2n) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				border-right: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				padding-left: 20rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			>view:nth-last-child(1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				border-bottom: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			>view:nth-last-child(2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				border-bottom: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </style> 
			 |