heyang 2 år sedan
förälder
incheckning
9bb66c3316

+ 23 - 10
pages.json

@@ -1,6 +1,28 @@
 {
 	"pages": [
 		{
+			"path": "pages/earlyWarningManage/earlyWarningDetail",
+			"style": {
+				"navigationBarTitleText": "预案预警信息"
+			}
+		},
+		{
+			"path": "pages/home",//首页
+			"style": {
+				"navigationBarTitleText": "实验室安全智能监测与控制系统",
+				"navigationBarTextStyle": "white", //导航文字颜色
+				"navigationBarBackgroundColor": "#0183FA" ,//导航背景色
+				"navigationStyle": "custom"
+			}
+		},
+		/* 预警信息 */
+		{
+			"path": "pages/earlyWarningManage/videoMonitoring",
+			"style": {
+				"navigationBarTitleText": "监控信息"
+			}
+		},
+		{
 			"path": "pages/earlyWarningManage/earlyWarningArithmeticDetail",
 			"style": {
 				"navigationBarTitleText": "算法识别预警信息"
@@ -24,21 +46,12 @@
 				"navigationBarTitleText": "预案预警信息"
 			}
 		},
-        {
+		{
 			"path": "pages/earlyWarningManage/earlyWarningList",
 			"style": {
 				"navigationBarTitleText": "预警记录"
 			}
 		},
-		{
-			"path": "pages/home",//首页
-			"style": {
-				"navigationBarTitleText": "实验室安全智能监测与控制系统",
-				"navigationBarTextStyle": "white", //导航文字颜色
-				"navigationBarBackgroundColor": "#0183FA" ,//导航背景色
-				"navigationStyle": "custom"
-			}
-		},
 
 		{
 			"path": "pages/supplierWorkbench",

+ 0 - 349
pages/earlyWarningManage/earlyWarningArithmeticDetail.vue

@@ -1,349 +0,0 @@
-<!-- 算法识别信息 -->
-<template>
-  <view class="earlyWarning">
-	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
-		<!-- 预案报警 -->
-		<view class="header">多人未穿戴实验服</view>
-		<view class="site">
-			<view class="site_t">
-				<img src="@/images/Version2.2/icon_wtzg_xx.png"/>
-				<text>2023-10-1014:00</text>
-			</view>
-			<view class="site_b">
-				<img src="@/images/Version2.2/icon_wtzg_xx.png"/>
-				<text>一号实验室</text>
-				<text></text>
-				<text>一号楼二楼C区C111</text>
-			</view>
-		</view>
-		<view class="note">
-			<view class="small_title"><text></text><text>通知短信</text></view>
-			<view class="note_li" style="margin-top:20rpx;">
-				<text>曹秀康(实验室负责人)</text>
-				<view class="note_li_r"><img  src="@/images/icon_yjxx_ytz.png"/><text>已通知</text></view>
-			</view>
-			<view class="note_li">
-				<text>李秀丽(安全责任人)</text>
-				<view class="note_li_r"><img  src="@/images/icon_yjxx_ytz.png"/><text>已通知</text></view>
-			</view>
-			<view class="note_li">
-				<text>周燕(安全责任人)</text>
-				<view class="note_li_r"><img  src="@/images/icon_yjxx_ytz.png"/><text>已通知</text></view>
-			</view>
-		</view>
-		<view class="note">
-			<view class="small_title"><text></text><text>预警通知</text></view>
-			<view class="note_li" style="margin-top:20rpx;">
-				<text>语音播报</text>
-				<view class="note_li_r"><img  src="@/images/icon_yjxx_ytz.png"/><text>已通知</text></view>
-			</view>
-		</view>
-		<view class="picture">
-			<view class="small_title"><text></text><text>报警抓拍</text></view>
-			<view class="picture_b" @click="lockImg(item.uploadDtoList)">
-				<img  src="@/images/icon_yjxx_ytz.png"/>
-				<!-- <img  :src="baseUrl+imgItem.fileUrl"   v-for="(imgItem,imgIndex) in item.uploadDtoList"/> -->
-			</view>
-		</view>
-		<view class="bottom_btn">查看监控</view>
-	</scroll-view>	
-  </view>
-
-</template>
-
-<script>
-import { config } from '@/api/request/config.js'
-import {checkManageList,conditionCollegeInfo} from '@/api/index.js'
-export default {
-  name: "rectifyList",
-  components: {
-   
-  },
-  data() {
-    return {
-		//列表请求参数
-		getData:{
-			pageNum:1,
-			pageSize:20,
-		},
-		total:0,
-		
-	}
-  },
-  onLoad(option) {
-	  
-  },
-  onShow() {
-	
-  },
-  mounted(){
-	 
-	  
-  },
-  methods: {
-		
-		//滚动事件
-		scrollGet(){
-			let self=this;
-			
-		},
-		//查看图片
-		lockImg(list){
-			console.log(list)
-			if(!list[0]){
-				return
-			}
-			let urlList=[];
-			for(let i=0;i<list.length;i++){
-				urlList.push(this.baseUrl+list[i].fileUrl)
-			}
-			wx.previewImage({
-				urls: urlList, //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
-				current: '', // 当前显示图片的http链接,默认是第一个
-				success: function(res) {},
-				fail: function(res) {},
-				complete: function(res) {},
-			})
-		},
-		
-		handleClick(row,doType){
-		  let self=this;
-		  if( doType=='detail'){//详情	
-			  
-		  }
-		  
-		},
-		
-	  
-  }
-}
-</script>
-
-<style lang="stylus" scoped>
-.earlyWarning{
-	height:100%;
-	display flex;
-	padding-bottom: 30rpx;
-	box-sizing: border-box;
-	.red_color{
-		color: #D40000;
-		border: 1rpx solid #D40000;
-	}
-	.orange_color{
-		color: #FF4800;
-		border: 1rpx solid #FF4800;
-	}
-	.yellow_color{
-		color: #FFA34E;
-		border: 1rpx solid #FFA34E;
-	}
-	.info-max-box{
-		flex: 1;
-		overflow: scroll;
-	}
-	.header{
-		width: 750rpx;
-		height: 80rpx;
-		font-size: 28rpx;
-		font-family: PingFang SC-Medium, PingFang SC;
-		font-weight: 400;
-		color: #FFA34E;
-		line-height: 80rpx;
-		text-align: center;
-		background: rgba(255,163,78,0.2);
-	}
-	.site{
-		width: 690rpx;
-		height: 170rpx;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		margin:20rpx 30rpx;
-		overflow: hidden;
-		.site_t{
-			height: 40rpx;
-			display: flex;
-			justify-content: flex-start;
-			align-items: center;
-			margin-top: 32rpx;
-			>img{
-				width: 30rpx;
-				height: 30rpx;
-				margin-right: 22rpx;
-				margin-left: 30rpx;
-			}
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 28rpx;
-			}
-		}
-		.site_b{
-			height: 40rpx;
-			display: flex;
-			justify-content: flex-start;
-			align-items: center;
-			margin-top: 20rpx;
-			>img{
-				width: 30rpx;
-				height: 30rpx;
-				margin-right: 22rpx;
-				margin-left: 30rpx;
-			}
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 28rpx;
-			}
-			>text:nth-of-type(2){
-				display: inline-block;
-				width: 2rpx;
-				height: 20rpx;
-				background: #E0E0E0;
-				margin: 0 24rpx 0 28rpx;
-			}
-			>text:nth-of-type(3){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 28rpx;
-			}
-		}
-		
-	}
-	.small_title{
-		height: 90rpx;
-		display: flex;
-		justify-content: flex-start;
-		align-items: center;
-		border-bottom: 1rpx solid #E0E0E0;
-		>text:nth-of-type(1){
-			display: inline-block;
-			width: 4rpx;
-			height: 30rpx;
-			background: #0183FA;
-			margin: 0 22rpx 0 28rpx;
-		}
-		>text:nth-of-type(1){
-			font-size: 30rpx;
-			font-family: PingFang SC-Medium, PingFang SC;
-			font-weight: 400;
-			color: #333333;
-			line-height: 30rpx;
-		}
-	}
-	.basics{
-		margin-left: 30rpx;
-		width: 690rpx;
-		height: auto;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		padding-bottom: 16rpx;
-		box-sizing: border-box;
-		.basics_li{
-			display: flex;
-			justify-content: space-between;
-			margin: 0 30rpx;
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 60rpx;
-			}
-			>text:nth-of-type(2){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 60rpx;
-				flex: 1;
-				text-align: right;
-			}
-		}
-	}
-	.note{
-		margin-left: 30rpx;
-		margin-top: 20rpx;
-		width: 690rpx;
-		height: auto;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		padding-bottom: 16rpx;
-		box-sizing: border-box;
-		.note_li{
-			display: flex;
-			justify-content: space-between;
-			margin: 0 30rpx;
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 60rpx;
-			}
-			.note_li_r{
-				display: flex;
-				justify-content: flex-start;
-				align-items: center;
-				>img{
-					width: 28rpx;
-					height: 28rpx;
-					margin-right: 10rpx;
-				}
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #0183FA;
-				line-height: 60rpx;
-				
-			}
-		}
-	}
-	.picture{
-		margin-left: 30rpx;
-		width: 690rpx;
-		height: auto;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		margin-top: 20rpx;
-		.picture_b{
-			display: flex;
-			justify-content: flex-start;
-			flex-wrap: wrap;
-			padding: 40rpx 30rpx 10rpx;
-			box-sizing: border-box;
-			>img{
-				width: 180rpx;
-				height: 180rpx;
-				border-radius: 10rpx 10rpx 10rpx 10rpx;
-				margin-right: 38rpx;
-				margin-bottom: 10rpx;
-			}
-			>img:nth-of-type(3n+3){
-				margin-right: 0rpx;
-			}
-		}
-	}
-	.bottom_btn{
-		width: 690rpx;
-		height: 90rpx;
-		border-radius: 10rpx 10rpx 10rpx 10rpx;
-		opacity: 1;
-		border: 1rpx solid #0183FA;
-		font-size: 30rpx;
-		font-family: PingFang SC-Medium, PingFang SC;
-		font-weight: 400;
-		color: #0183FA;
-		line-height: 90rpx;
-		text-align: center;
-		background: #F5F5F5;
-		margin: 90rpx 30rpx 30rpx;
-		
-	}
-}
-</style>

+ 0 - 362
pages/earlyWarningManage/earlyWarningChemistryDetail.vue

@@ -1,362 +0,0 @@
-<!-- 化学品报警信息-->
-<template>
-  <view class="earlyWarning">
-	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
-		<!-- 预案报警 -->
-		<view class="header">化学品违规带离</view>
-		<view class="site">
-			<view class="site_t">
-				<img src="@/images/Version2.2/icon_wtzg_xx.png"/>
-				<text>2023-10-1014:00</text>
-			</view>
-			<view class="site_b">
-				<img src="@/images/Version2.2/icon_wtzg_xx.png"/>
-				<text>一号实验室</text>
-				<text></text>
-				<text>一号楼二楼C区C111</text>
-			</view>
-		</view>
-		<view class="basics">
-			<view class="small_title"><text></text><text>化学品信息</text></view>
-			<view class="basics_li" style="margin-top:20rpx;">
-				<text>化学品名称</text>
-				<text></text>
-			</view>
-			<view class="basics_li">
-				<text>存放位置:</text>
-				<text>3号柜化学品余量:100g</text>
-			</view>
-			<view class="basics_li">
-				<text>化学品余量:</text>
-				<text>100g</text>
-			</view>
-			<view class="basics_li">
-				<text>申领人:</text>
-				<text>曹秀康</text>
-			</view>
-			<view class="basics_li">
-				<text>申领时间:</text>
-				<text>10-10 10:00:23</text>
-			</view>
-			<view class="basics_li">
-				<text>过期时间:</text>
-				<text>10-10 10:00:23</text>
-			</view>
-		</view>
-		<view class="note">
-			<view class="small_title"><text></text><text>预警通知</text></view>
-			<view class="note_li" style="margin-top:20rpx;">
-				<text>声光报警通知</text>
-				<view class="note_li_r"><img  src="@/images/icon_yjxx_ytz.png"/><text>已通知</text></view>
-			</view>
-		</view>
-		<view class="picture">
-			<view class="small_title"><text></text><text>报警抓拍</text></view>
-			<view class="picture_b" @click="lockImg(item.uploadDtoList)">
-				<img  src="@/images/icon_yjxx_ytz.png"/>
-				<!-- <img  :src="baseUrl+imgItem.fileUrl"   v-for="(imgItem,imgIndex) in item.uploadDtoList"/> -->
-			</view>
-		</view>
-		<view class="bottom_btn">查看监控</view>
-	</scroll-view>	
-  </view>
-
-</template>
-
-<script>
-import { config } from '@/api/request/config.js'
-import {checkManageList,conditionCollegeInfo} from '@/api/index.js'
-export default {
-  name: "rectifyList",
-  components: {
-   
-  },
-  data() {
-    return {
-		//列表请求参数
-		getData:{
-			pageNum:1,
-			pageSize:20,
-		},
-		status:0,
-		total:0,
-		
-	}
-  },
-  onLoad(option) {
-	  
-  },
-  onShow() {
-	
-  },
-  mounted(){
-	 
-	  
-  },
-  methods: {
-		
-		//滚动事件
-		scrollGet(){
-			let self=this;
-			
-		},
-		//查看图片
-		lockImg(list){
-			console.log(list)
-			if(!list[0]){
-				return
-			}
-			let urlList=[];
-			for(let i=0;i<list.length;i++){
-				urlList.push(this.baseUrl+list[i].fileUrl)
-			}
-			wx.previewImage({
-				urls: urlList, //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
-				current: '', // 当前显示图片的http链接,默认是第一个
-				success: function(res) {},
-				fail: function(res) {},
-				complete: function(res) {},
-			})
-		},
-		
-		handleClick(row,doType){
-		  let self=this;
-		  if( doType=='detail'){//详情	
-			  
-		  }
-		  
-		},
-		
-	  
-  }
-}
-</script>
-
-<style lang="stylus" scoped>
-.earlyWarning{
-	height:100%;
-	display flex;
-	padding-bottom: 30rpx;
-	box-sizing: border-box;
-	.red_color{
-		color: #D40000;
-		border: 1rpx solid #D40000;
-	}
-	.orange_color{
-		color: #FF4800;
-		border: 1rpx solid #FF4800;
-	}
-	.yellow_color{
-		color: #FFA34E;
-		border: 1rpx solid #FFA34E;
-	}
-	.info-max-box{
-		flex: 1;
-		overflow: scroll;
-	}
-	.header{
-		width: 750rpx;
-		height: 80rpx;
-		font-size: 28rpx;
-		font-family: PingFang SC-Medium, PingFang SC;
-		font-weight: 400;
-		color: #FF4800;
-		line-height: 80rpx;
-		text-align: center;
-		background: rgba(255,72,0,0.2);
-	}
-	.site{
-		width: 690rpx;
-		height: 170rpx;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		margin:20rpx 30rpx;
-		overflow: hidden;
-		.site_t{
-			height: 40rpx;
-			display: flex;
-			justify-content: flex-start;
-			align-items: center;
-			margin-top: 32rpx;
-			>img{
-				width: 30rpx;
-				height: 30rpx;
-				margin-right: 22rpx;
-				margin-left: 30rpx;
-			}
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 28rpx;
-			}
-		}
-		.site_b{
-			height: 40rpx;
-			display: flex;
-			justify-content: flex-start;
-			align-items: center;
-			margin-top: 20rpx;
-			>img{
-				width: 30rpx;
-				height: 30rpx;
-				margin-right: 22rpx;
-				margin-left: 30rpx;
-			}
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 28rpx;
-			}
-			>text:nth-of-type(2){
-				display: inline-block;
-				width: 2rpx;
-				height: 20rpx;
-				background: #E0E0E0;
-				margin: 0 24rpx 0 28rpx;
-			}
-			>text:nth-of-type(3){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 28rpx;
-			}
-		}
-		
-	}
-	.small_title{
-		height: 90rpx;
-		display: flex;
-		justify-content: flex-start;
-		align-items: center;
-		border-bottom: 1rpx solid #E0E0E0;
-		>text:nth-of-type(1){
-			display: inline-block;
-			width: 4rpx;
-			height: 30rpx;
-			background: #0183FA;
-			margin: 0 22rpx 0 28rpx;
-		}
-		>text:nth-of-type(1){
-			font-size: 30rpx;
-			font-family: PingFang SC-Medium, PingFang SC;
-			font-weight: 400;
-			color: #333333;
-			line-height: 30rpx;
-		}
-	}
-	.basics{
-		margin-left: 30rpx;
-		width: 690rpx;
-		height: auto;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		padding-bottom: 16rpx;
-		box-sizing: border-box;
-		.basics_li{
-			display: flex;
-			justify-content: space-between;
-			margin: 0 30rpx;
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 60rpx;
-			}
-			>text:nth-of-type(2){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 60rpx;
-				text-align: right;
-				flex: 1;
-			}
-		}
-	}
-	.note{
-		margin-left: 30rpx;
-		margin-top: 20rpx;
-		width: 690rpx;
-		height: auto;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		padding-bottom: 16rpx;
-		box-sizing: border-box;
-		.note_li{
-			display: flex;
-			justify-content: space-between;
-			margin: 0 30rpx;
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 60rpx;
-			}
-			.note_li_r{
-				display: flex;
-				justify-content: flex-start;
-				align-items: center;
-				>img{
-					width: 28rpx;
-					height: 28rpx;
-					margin-right: 10rpx;
-				}
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #0183FA;
-				line-height: 60rpx;
-				
-			}
-		}
-	}
-	.picture{
-		margin-left: 30rpx;
-		width: 690rpx;
-		height: auto;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		margin-top: 20rpx;
-		.picture_b{
-			display: flex;
-			justify-content: flex-start;
-			flex-wrap: wrap;
-			padding: 40rpx 30rpx 10rpx;
-			box-sizing: border-box;
-			>img{
-				width: 180rpx;
-				height: 180rpx;
-				border-radius: 10rpx 10rpx 10rpx 10rpx;
-				margin-right: 38rpx;
-				margin-bottom: 10rpx;
-			}
-			>img:nth-of-type(3n+3){
-				margin-right: 0rpx;
-			}
-		}
-	}
-	.bottom_btn{
-		width: 690rpx;
-		height: 90rpx;
-		border-radius: 10rpx 10rpx 10rpx 10rpx;
-		opacity: 1;
-		border: 1rpx solid #0183FA;
-		font-size: 30rpx;
-		font-family: PingFang SC-Medium, PingFang SC;
-		font-weight: 400;
-		color: #0183FA;
-		line-height: 90rpx;
-		text-align: center;
-		background: #F5F5F5;
-		margin: 90rpx 30rpx 30rpx;
-		
-	}
-}
-</style>

+ 191 - 13
pages/earlyWarningManage/earlyWarningPlanDetail.vue

@@ -3,14 +3,35 @@
   <view class="earlyWarning">
 	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
 		<!-- 预案报警 -->
-		<view class="header">甲烷气体泄露-中风险</view>
-		<view class="site">
+		<view class="header" v-if="pageType==0">甲烷气体泄露-中风险</view>
+		<!-- 化学品 -->
+		<view class="header_tow" v-if="pageType==1">化学品违规带离</view>
+		<!-- 气瓶 -->
+		<view class="header_three" v-if="pageType==2">气瓶违规带离</view>
+		<!-- 算法识别 -->
+		<view class="header_four" v-if="pageType==3">多人未穿戴实验服</view>
+		<!-- 预案报警 -->
+		<view class="site" v-if="pageType==0">
 			<img src="@/images/Version2.2/icon_wtzg_xx.png"/>
 			<text>一号实验室</text>
 			<text></text>
 			<text>一号楼二楼C区C111</text>
 		</view>
-		<view class="basics">
+		<!-- 化学品 -->
+		<view class="site_tow" v-if="pageType==1 || pageType==2 || pageType==3">
+			<view class="site_tow_t">
+				<img src="@/images/Version2.2/icon_wtzg_xx.png"/>
+				<text>2023-10-1014:00</text>
+			</view>
+			<view class="site_tow_b">
+				<img src="@/images/Version2.2/icon_wtzg_xx.png"/>
+				<text>一号实验室</text>
+				<text></text>
+				<text>一号楼二楼C区C111</text>
+			</view>
+		</view>
+		<!-- 预案报警 -->
+		<view class="basics" v-if="pageType==0">
 			<view class="small_title"><text></text><text>风险概况</text></view>
 			<view class="basics_li" style="margin-top:20rpx;">
 				<text>发生时间:</text>
@@ -29,7 +50,59 @@
 				<text>刘然、李茶、周瑶瑶、李娇、 李雪、陈记、李玉玉</text>
 			</view>
 		</view>
-		<view class="note">
+		<!-- 化学品 -->
+		<view class="basics" v-if="pageType==1">
+			<view class="small_title"><text></text><text>化学品信息</text></view>
+			<view class="basics_li" style="margin-top:20rpx;">
+				<text>化学品名称</text>
+				<text></text>
+			</view>
+			<view class="basics_li">
+				<text>存放位置:</text>
+				<text>3号柜化学品余量:100g</text>
+			</view>
+			<view class="basics_li">
+				<text>化学品余量:</text>
+				<text>100g</text>
+			</view>
+			<view class="basics_li">
+				<text>申领人:</text>
+				<text>曹秀康</text>
+			</view>
+			<view class="basics_li">
+				<text>申领时间:</text>
+				<text>10-10 10:00:23</text>
+			</view>
+			<view class="basics_li">
+				<text>过期时间:</text>
+				<text>10-10 10:00:23</text>
+			</view>
+		</view>
+		<!-- 气瓶 -->
+		<view class="basics" v-if="pageType==2">
+			<view class="small_title"><text></text><text>气瓶信息</text></view>
+			<view class="basics_li" style="margin-top:20rpx;">
+				<text>气体名称</text>
+				<text></text>
+			</view>
+			<view class="basics_li">
+				<text>气体余量:</text>
+				<text>10L</text>
+			</view>
+			<view class="basics_li">
+				<text>气瓶规格:</text>
+				<text>100g/瓶 </text>
+			</view>
+			<view class="basics_li">
+				<text>申领人:</text>
+				<text>刘然</text>
+			</view>
+			<view class="basics_li">
+				<text>申领时间:</text>
+				<text>10-10 10:00:23</text>
+			</view>
+		</view>
+		<view class="note" v-if="pageType==0 || pageType==3">
 			<view class="small_title"><text></text><text>通知短信</text></view>
 			<view class="note_li" style="margin-top:20rpx;">
 				<text>曹秀康(实验室负责人)</text>
@@ -50,14 +123,6 @@
 				<text>语音播报</text>
 				<view class="note_li_r"><img  src="@/images/icon_yjxx_ytz.png"/><text>已通知</text></view>
 			</view>
-			<view class="note_li">
-				<text>李秀丽(安全责任人)</text>
-				<view class="note_li_r"><img  src="@/images/icon_yjxx_ytz.png"/><text>已通知</text></view>
-			</view>
-			<view class="note_li">
-				<text>周燕(安全责任人)</text>
-				<view class="note_li_r"><img  src="@/images/icon_yjxx_ytz.png"/><text>已通知</text></view>
-			</view>
 		</view>
 		<view class="picture">
 			<view class="small_title"><text></text><text>报警抓拍</text></view>
@@ -82,6 +147,7 @@ export default {
   },
   data() {
     return {
+		pageType:3,//0预案报警信息 1化学品 2气瓶  3算法识别
 		//列表请求参数
 		getData:{
 			pageNum:1,
@@ -98,7 +164,23 @@ export default {
 	
   },
   mounted(){
-	 
+	 if(this.pageType==0){
+		uni.setNavigationBarTitle({
+			title:'预案报警信息'
+		})
+	 }else if(this.pageType==1){
+		uni.setNavigationBarTitle({
+			title:'化学品预警信息'
+		}) 
+	 }else if(this.pageType==2){
+		uni.setNavigationBarTitle({
+			title:'气瓶预警信息'
+		}) 
+	 }else if(this.pageType==3){
+		uni.setNavigationBarTitle({
+			title:'算法识别预警信息'
+		}) 
+	 }
 	  
   },
   methods: {
@@ -173,6 +255,39 @@ export default {
 		text-align: center;
 		background: rgba(212,0,0,0.2);
 	}
+	.header_tow{
+		width: 750rpx;
+		height: 80rpx;
+		font-size: 28rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FF4800;
+		line-height: 80rpx;
+		text-align: center;
+		background: rgba(255,72,0,0.2);
+	}
+	.header_three{
+		width: 750rpx;
+		height: 80rpx;
+		font-size: 28rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FF4800;
+		line-height: 80rpx;
+		text-align: center;
+		background: rgba(255,72,0,0.2);
+	}
+	.header_four{
+		width: 750rpx;
+		height: 80rpx;
+		font-size: 28rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FFA34E;
+		line-height: 80rpx;
+		text-align: center;
+		background: rgba(255,163,78,0.2);
+	}
 	.site{
 		width: 690rpx;
 		height: 80rpx;
@@ -210,6 +325,69 @@ export default {
 			line-height: 28rpx;
 		}
 	}
+	.site_tow{
+		width: 690rpx;
+		height: 170rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx 20rpx 20rpx 20rpx;
+		margin:20rpx 30rpx;
+		overflow: hidden;
+		.site_tow_t{
+			height: 40rpx;
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-top: 32rpx;
+			>img{
+				width: 30rpx;
+				height: 30rpx;
+				margin-right: 22rpx;
+				margin-left: 30rpx;
+			}
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 28rpx;
+			}
+		}
+		.site_tow_b{
+			height: 40rpx;
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-top: 20rpx;
+			>img{
+				width: 30rpx;
+				height: 30rpx;
+				margin-right: 22rpx;
+				margin-left: 30rpx;
+			}
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 28rpx;
+			}
+			>text:nth-of-type(2){
+				display: inline-block;
+				width: 2rpx;
+				height: 20rpx;
+				background: #E0E0E0;
+				margin: 0 24rpx 0 28rpx;
+			}
+			>text:nth-of-type(3){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 28rpx;
+			}
+		}
+		
+	}
 	.small_title{
 		height: 90rpx;
 		display: flex;

+ 0 - 357
pages/earlyWarningManage/earlyWarningGasDetail.vue

@@ -1,357 +0,0 @@
-<!-- 气瓶报警信息 -->
-<template>
-  <view class="earlyWarning">
-	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
-		<!-- 预案报警 -->
-		<view class="header">气瓶违规带离</view>
-		<view class="site">
-			<view class="site_t">
-				<img src="@/images/Version2.2/icon_wtzg_xx.png"/>
-				<text>2023-10-1014:00</text>
-			</view>
-			<view class="site_b">
-				<img src="@/images/Version2.2/icon_wtzg_xx.png"/>
-				<text>一号实验室</text>
-				<text></text>
-				<text>一号楼二楼C区C111</text>
-			</view>
-		</view>
-		<view class="basics">
-			<view class="small_title"><text></text><text>气瓶信息</text></view>
-			<view class="basics_li" style="margin-top:20rpx;">
-				<text>气体名称</text>
-				<text></text>
-			</view>
-			<view class="basics_li">
-				<text>气体余量:</text>
-				<text>10L</text>
-			</view>
-			<view class="basics_li">
-				<text>气瓶规格:</text>
-				<text>100g/瓶 </text>
-			</view>
-			<view class="basics_li">
-				<text>申领人:</text>
-				<text>刘然</text>
-			</view>
-			<view class="basics_li">
-				<text>申领时间:</text>
-				<text>10-10 10:00:23</text>
-			</view>
-		</view>
-		<view class="note">
-			<view class="small_title"><text></text><text>预警通知</text></view>
-			<view class="note_li" style="margin-top:20rpx;">
-				<text>声光报警通知</text>
-				<view class="note_li_r"><img  src="@/images/icon_yjxx_ytz.png"/><text>已通知</text></view>
-			</view>
-		</view>
-		<view class="picture">
-			<view class="small_title"><text></text><text>报警抓拍</text></view>
-			<view class="picture_b" @click="lockImg(item.uploadDtoList)">
-				<img  src="@/images/icon_yjxx_ytz.png"/>
-				<!-- <img  :src="baseUrl+imgItem.fileUrl"   v-for="(imgItem,imgIndex) in item.uploadDtoList"/> -->
-			</view>
-		</view>
-		<view class="bottom_btn">查看监控</view>
-	</scroll-view>	
-  </view>
-
-</template>
-
-<script>
-import { config } from '@/api/request/config.js'
-import {checkManageList,conditionCollegeInfo} from '@/api/index.js'
-export default {
-  name: "rectifyList",
-  components: {
-   
-  },
-  data() {
-    return {
-		//列表请求参数
-		getData:{
-			pageNum:1,
-			pageSize:20,
-		},
-		total:0,
-		
-	}
-  },
-  onLoad(option) {
-	  
-  },
-  onShow() {
-	
-  },
-  mounted(){
-	 
-	  
-  },
-  methods: {
-		
-		//滚动事件
-		scrollGet(){
-			let self=this;
-			
-		},
-		//查看图片
-		lockImg(list){
-			console.log(list)
-			if(!list[0]){
-				return
-			}
-			let urlList=[];
-			for(let i=0;i<list.length;i++){
-				urlList.push(this.baseUrl+list[i].fileUrl)
-			}
-			wx.previewImage({
-				urls: urlList, //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
-				current: '', // 当前显示图片的http链接,默认是第一个
-				success: function(res) {},
-				fail: function(res) {},
-				complete: function(res) {},
-			})
-		},
-		
-		handleClick(row,doType){
-		  let self=this;
-		  if( doType=='detail'){//详情	
-			  
-		  }
-		  
-		},
-		
-	  
-  }
-}
-</script>
-
-<style lang="stylus" scoped>
-.earlyWarning{
-	height:100%;
-	display flex;
-	padding-bottom: 30rpx;
-	box-sizing: border-box;
-	.red_color{
-		color: #D40000;
-		border: 1rpx solid #D40000;
-	}
-	.orange_color{
-		color: #FF4800;
-		border: 1rpx solid #FF4800;
-	}
-	.yellow_color{
-		color: #FFA34E;
-		border: 1rpx solid #FFA34E;
-	}
-	.info-max-box{
-		flex: 1;
-		overflow: scroll;
-	}
-	.header{
-		width: 750rpx;
-		height: 80rpx;
-		font-size: 28rpx;
-		font-family: PingFang SC-Medium, PingFang SC;
-		font-weight: 400;
-		color: #FF4800;
-		line-height: 80rpx;
-		text-align: center;
-		background: rgba(255,72,0,0.2);
-	}
-	.site{
-		width: 690rpx;
-		height: 170rpx;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		margin:20rpx 30rpx;
-		overflow: hidden;
-		.site_t{
-			height: 40rpx;
-			display: flex;
-			justify-content: flex-start;
-			align-items: center;
-			margin-top: 32rpx;
-			>img{
-				width: 30rpx;
-				height: 30rpx;
-				margin-right: 22rpx;
-				margin-left: 30rpx;
-			}
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 28rpx;
-			}
-		}
-		.site_b{
-			height: 40rpx;
-			display: flex;
-			justify-content: flex-start;
-			align-items: center;
-			margin-top: 20rpx;
-			>img{
-				width: 30rpx;
-				height: 30rpx;
-				margin-right: 22rpx;
-				margin-left: 30rpx;
-			}
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 28rpx;
-			}
-			>text:nth-of-type(2){
-				display: inline-block;
-				width: 2rpx;
-				height: 20rpx;
-				background: #E0E0E0;
-				margin: 0 24rpx 0 28rpx;
-			}
-			>text:nth-of-type(3){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 28rpx;
-			}
-		}
-		
-	}
-	.small_title{
-		height: 90rpx;
-		display: flex;
-		justify-content: flex-start;
-		align-items: center;
-		border-bottom: 1rpx solid #E0E0E0;
-		>text:nth-of-type(1){
-			display: inline-block;
-			width: 4rpx;
-			height: 30rpx;
-			background: #0183FA;
-			margin: 0 22rpx 0 28rpx;
-		}
-		>text:nth-of-type(1){
-			font-size: 30rpx;
-			font-family: PingFang SC-Medium, PingFang SC;
-			font-weight: 400;
-			color: #333333;
-			line-height: 30rpx;
-		}
-	}
-	.basics{
-		margin-left: 30rpx;
-		width: 690rpx;
-		height: auto;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		padding-bottom: 16rpx;
-		box-sizing: border-box;
-		.basics_li{
-			display: flex;
-			justify-content: space-between;
-			margin: 0 30rpx;
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 60rpx;
-			}
-			>text:nth-of-type(2){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 60rpx;
-				flex: 1;
-				text-align: right;
-			}
-		}
-	}
-	.note{
-		margin-left: 30rpx;
-		margin-top: 20rpx;
-		width: 690rpx;
-		height: auto;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		padding-bottom: 16rpx;
-		box-sizing: border-box;
-		.note_li{
-			display: flex;
-			justify-content: space-between;
-			margin: 0 30rpx;
-			>text:nth-of-type(1){
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #333333;
-				line-height: 60rpx;
-			}
-			.note_li_r{
-				display: flex;
-				justify-content: flex-start;
-				align-items: center;
-				>img{
-					width: 28rpx;
-					height: 28rpx;
-					margin-right: 10rpx;
-				}
-				font-size: 28rpx;
-				font-family: PingFang SC-Medium, PingFang SC;
-				font-weight: 400;
-				color: #0183FA;
-				line-height: 60rpx;
-				
-			}
-		}
-	}
-	.picture{
-		margin-left: 30rpx;
-		width: 690rpx;
-		height: auto;
-		background: #FFFFFF;
-		border-radius: 20rpx 20rpx 20rpx 20rpx;
-		margin-top: 20rpx;
-		.picture_b{
-			display: flex;
-			justify-content: flex-start;
-			flex-wrap: wrap;
-			padding: 40rpx 30rpx 10rpx;
-			box-sizing: border-box;
-			>img{
-				width: 180rpx;
-				height: 180rpx;
-				border-radius: 10rpx 10rpx 10rpx 10rpx;
-				margin-right: 38rpx;
-				margin-bottom: 10rpx;
-			}
-			>img:nth-of-type(3n+3){
-				margin-right: 0rpx;
-			}
-		}
-	}
-	.bottom_btn{
-		width: 690rpx;
-		height: 90rpx;
-		border-radius: 10rpx 10rpx 10rpx 10rpx;
-		opacity: 1;
-		border: 1rpx solid #0183FA;
-		font-size: 30rpx;
-		font-family: PingFang SC-Medium, PingFang SC;
-		font-weight: 400;
-		color: #0183FA;
-		line-height: 90rpx;
-		text-align: center;
-		background: #F5F5F5;
-		margin: 90rpx 30rpx 30rpx;
-		
-	}
-}
-</style>

+ 533 - 3
pages/earlyWarningManage/videoMonitoring.vue

@@ -1,8 +1,46 @@
 <!-- 视频监控-->
 <template>
   <view class="earlyWarning">
+	<scroll-view scroll-x @scrolltolower="scrollGet"  class="header">
+		<view class="tabTitle_tow">
+			<view class="tabTitle_tow_li" @tap="tabClickTow(item,index)"  :key="index" v-for="(item,index) in tabTextTow">
+				<view :class="{on:curTabTow==index}" class="tabTitle_tow_text">{{item.name}}</view>
+				<view :class="{on:curTabTow==index}" class="tabTitle_tow_across"></view>
+			</view>
+		</view>
+	</scroll-view>
 	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<!-- 视频部分 -->
+		<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>
 		
+		<view class="broadcast">
+		  <view class="broadcast_t">语音广播<label>选择喇叭位置</label></view>
+		  <!-- 按钮部分 -->
+		  <view class="trumpet-max-box">
+		    <view @click="trumpetClick(index)" class="trumpet-for-box"
+		          :class="item.type?'trumpet-color-a':'trumpet-color-b'" v-for="(item,index) in trumpetList"
+		          :key="index">
+		      <img src="@/images/icon_sskz_zc.png" v-if="!item.type">
+		      <img src="@/images/icon_sskz_xz.png" v-if="item.type">
+		      {{item.name}}
+		    </view>
+		  </view>
+		  <view class="broadcast_m">
+		    <view class="broadcast_m_t" :class="liveType?'broadcast_m_t_back_a':'broadcast_m_t_back_b'"
+		          @longpress.stop="recordButton" @touchmove.stop="cancelButton" @touchend.stop="sendButton">
+		
+		      {{liveType?'松开发送':'按住说话'}}
+		    </view>
+		    <view class="broadcast_m_b" v-if="!liveType">按住说话,录入广播内容</view>
+		    <view class="broadcast_m_b" v-if="liveType">松开发送,向上滑动取消发送</view>
+		  </view>
+		</view>
 	</scroll-view>	
   </view>
 
@@ -10,7 +48,7 @@
 
 <script>
 import { config } from '@/api/request/config.js'
-import {checkManageList,conditionCollegeInfo} from '@/api/index.js'
+import {laboratoryInfo,getCameraByFloor,GetStartList,getDeviceListBySub} from '@/api/index.js'
 export default {
   name: "rectifyList",
   components: {
@@ -18,7 +56,17 @@ export default {
   },
   data() {
     return {
-		
+		videoCover: uni.getStorageSync('videoCover'),
+		tabTextTow:[{name:'RFID摄像头'},{name:'房间内监控1'},{name:'房间内监控2'},{name:'房间内监控3'},{name:'房间内监控3'},{name:'房间内监控3'},],
+		curTabTow:0,
+		//视频数据
+		urlList: [{}],
+		videoHardwareNUM:[], //实验室和楼道摄像头编码
+		trumpetList:[],
+		//广播相关
+		liveType: false,
+		sendLock: true, //发送锁,当为true时上锁,false时解锁发送
+		recorderManager: wx.getRecorderManager(),
 		
 	}
   },
@@ -33,14 +81,293 @@ export default {
 	  
   },
   methods: {
-		
+		//顶部tab点击
+		tabClickTow(item,index) {
+			this.curTabTow = index;
+			
+		},
 		//滚动事件
 		scrollGet(){
 			let self=this;
 			
 		},
+		videoErrorCallback(e){
+		  console.log("播放失败",e);
+		},
+		//获取实验室摄像头
+		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;
+		  }
+		},
+		//获取喇叭列表
+		async getDeviceList() {
+		  let obj = {
+		    subId: this.itemData.subjectId,
+		    floorId: this.floorId,
+		    page: 1,
+		    pageSize: 100,
+		  };
+		  const {
+		    data
+		  } = await getDeviceListBySub(obj)
+		  if (data.code == 200) {
+		    for (let i = 0; i < data.data.length; i++) {
+		      data.data[i].type = false;
+		    }
+		    this.$set(this, 'trumpetList', data.data)
+		  }
+		},
+		//点击选择喇叭
+		trumpetClick(index) {
+		  this.trumpetList[index].type = !this.trumpetList[index].type
+		},
+		//录制
+		recordButton(e) {
+		  console.log("按下")
+		  let self = this;
+		  let num = 0;
+		  for (let i = 0; i < self.trumpetList.length; i++) {
+		    if (self.trumpetList[i].type) {
+		      num++
+		    }
+		  }
+		  if (num == 0) {
+		    uni.showToast({
+		      title: '请选择喇叭',
+		      icon: "none",
+		      mask: true,
+		      duration: 2000
+		    });
+		    return
+		  }
+		  this.liveType = true;
+		  console.log('录制', e)
+		  this.startPoint = e.touches[0]; //记录长按时开始点信息,后面用于计算上划取消时手指滑动的距离。
+		  const options = {
+		    duration: 10000,
+		    sampleRate: 16000,
+		    numberOfChannels: 1,
+		    encodeBitRate: 48000,
+		    format: 'mp3',
+		    frameSize: 50
+		  }
+		  this.recorderManager.start(options); //开始录音
+		  this.recorderManager.onStart(() => {
+		    console.log('recorder start')
+		  })
+		  this.recorderManager.onError((res) => {
+		    console.log(res);
+		  })
+		  wx.showToast({
+		    title: "正在录音,上划取消发送",
+		    icon: "none",
+		    duration: 60000 //先定义个60秒,后面可以手动调用wx.hideToast()隐藏
+		  });
+		  this.sendLock = false; //长按时是不上锁的。
+		},
+		//取消
+		cancelButton(e) {
+		  console.log("移动")
+		  let self = this;
+		  let num = 0;
+		  for (let i = 0; i < self.trumpetList.length; i++) {
+		    if (self.trumpetList[i].type) {
+		      num++
+		    }
+		  }
+		  if (num == 0) {
+		    return
+		  }
+		  this.liveType = false;
+		  console.log('取消', e)
+		  let moveLenght = e.touches[e.touches.length - 1].clientY - this.startPoint.clientY; //移动距离
+		  if (Math.abs(moveLenght) > 50) {
+		    wx.showToast({
+		      title: "松开手指,取消发送",
+		      icon: "none",
+		      duration: 60000
+		    });
+		    this.sendLock = true; //触发了上滑取消发送,上锁
+		  } else {
+		    wx.showToast({
+		      title: "正在录音,上划取消发送",
+		      icon: "none",
+		      duration: 60000
+		    });
+		    this.sendLock = false; //上划距离不足,依然可以发送,不上锁
+		  }
+		},
+		//发送
+		sendButton(e) {
+		  console.log("松开")
+		  let self = this;
+		  let num = 0;
+		  for (let i = 0; i < self.trumpetList.length; i++) {
+		    if (self.trumpetList[i].type) {
 		
+		      num++
+		    }
+		  }
+		  if (num == 0) {
+		    return
+		  }
+		  this.liveType = false;
+		  console.log('发送', e)
+		  wx.hideToast(); //结束录音、隐藏Toast提示框
+		  this.recorderManager.stop(); //结束录音
+		  this.recorderManager.onStop((res) => {
+		    if (!this.sendLock) {
+		      console.log('1', this.recorderManager)
+		      this.uploadImg(res.tempFilePath);
+		    }
+		    console.log('停止录音', res.tempFilePath)
+		    console.log("sendLock", this.sendLock);
+		  })
+		},
+		//上传MP3
+		async uploadImg(tempFilePaths) {
+		  var self = this;
+		  uni.uploadFile({
+		    url: config.base_url + '/base/file/upload', //仅为示例,非真实的接口地址
+		    header: {
+		      'Authorization': uni.getStorageSync('token')
+		    },
+		    filePath: tempFilePaths,
+		    name: 'file',
+		    formData: {
+		      'user': 'test'
+		    },
+		    success: (uploadFileRes) => {
+		      let res = JSON.parse(uploadFileRes.data);
+		      if (res.code == 200) {
+		        console.log("上传成功", res)
+		        self.textParseUrlIps(config.base_url + '/' + res.data.url);
+		      } else {
+		        uni.showToast({
+		          title: res.msg,
+		          icon: "none",
+		          mask: true,
+		          duration: 2000
+		        });
+		      }
+		    },
+		    fail: err => {
+		      uni.hideLoading()
+		    },
+		    complete: () => {}
+		  });
+		},
+		//发送语音
+		async textParseUrlIps(text) {
+		  let self = this;
+		  let newList = [];
+		  for (let i = 0; i < self.trumpetList.length; i++) {
+		    if (self.trumpetList[i].type) {
+		      let obj = {
+		        sn: self.trumpetList[i].deviceSn,
+		        port: self.trumpetList[i].port,
+		        deviceIp: self.trumpetList[i].deviceIp,
+		        type: "",
+		        name: "",
+		        speed: "",
+		        params: {
+		          tid: "",
+		          vol: self.trumpetList[i].deviceVol,
+		          urls: []
+		        }
+		      };
+		      newList.push(obj);
+		    }
+		  }
+		  const {
+		    data
+		  } = await textParseUrlIps(newList, text)
+		  if (data.code == 200) {
+		    uni.showToast({
+		      title: '发送成功',
+		      icon: "none",
+		      mask: true,
+		      duration: 2000
+		    });
+		  }
+		},
 		handleClick(row,doType){
 		  let self=this;
 		  if( doType=='detail'){//详情	
@@ -60,6 +387,209 @@ export default {
 	display flex;
 	padding-bottom: 30rpx;
 	box-sizing: border-box;
+	.header{
+		width:750rpx;
+		height: 100rpx;
+		position: fixed;
+		top: 0rpx;
+		z-index: 100;
+		background: #fff;
+		.tabTitle_tow{
+			height: 100rpx;
+			 white-space: nowrap;
+			display: inline-flex;	
+			.tabTitle_tow_li{
+				
+				position: relative;
+				width:210rpx;
+				height: 100rpx;
+				text-align center;
+				padding-top: 26rpx;
+				box-sizing: border-box;
+				.tabTitle_tow_text{
+					display: inline-block;
+					font-size: 30rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 46rpx;
+					position: relative;
+					&.on{
+						color:#0183FA;
+					}
+				}
+				.tabTitle_tow_across{
+					width: 50rpx;
+					height: 4rpx;
+					background: #0183FA;
+					border-radius: 2rpx;
+					margin-left: 33%;
+					display none;
+					&.on{
+						display block;
+					}
+				}
+		
+			}
+		}
+		
+	}
+	.video-max-box {
+	  width: 690rpx;
+	  height: 420rpx;
+	  margin: 116rpx 30rpx 20rpx;
+	  video {
+	    width: 690rpx;
+	    height: 420rpx;
+	  }
+	}
+	.broadcast {
+	  width: 690rpx;
+	  background: #FFFFFF;
+	  border-radius: 20rpx;
+	  padding:22rpx 30rpx 30rpx;
+	  box-sizing: border-box;
+	  margin: 20rpx 30rpx 0;
+	
+	  .broadcast_t {
+	    font-size: 30rpx;
+	    font-family: PingFang SC;
+	    font-weight: 500;
+	    color: #333333;
+	    line-height: 30rpx;
+	
+	    >label {
+	      font-size: 24rpx;
+	      font-family: PingFang SC;
+	      font-weight: 500;
+	      color: #999999;
+	      line-height: 30rpx;
+	      margin-left: 16rpx;
+	    }
+	  }
+	
+	  .trumpet-max-box {
+	    display: flex;
+	    justify-content: flex-start;
+	    margin-top: 22rpx;
+	    flex-wrap: wrap;
+	
+	    .trumpet-for-box {
+	      display: inline-block;
+	       width: auto;
+	      height: 60rpx;
+	      line-height: 60rpx;
+	      font-size: 24rpx;
+	      text-align: center;
+	      cursor: pointer;
+	      overflow: hidden;
+	      border: 1rpx solid #E0E0E0;
+	      border-radius: 10rpx;
+	      color: #E0E0E0;
+	      display: flex;
+	      justify-content: center;
+	      margin-right: 20rpx;
+	      margin-bottom: 10rpx;
+				padding: 0 12rpx;
+			  box-sizing: border-box;
+	      >img {
+	        width: 36rpx;
+	        height: 34rpx;
+	        margin: 12rpx 20rpx 0 25rpx;
+	      }
+	    }
 	
+	    .trumpet-color-a {
+	      border: 1px solid #0183FA;
+	      color: #0183FA;
+	    }
+	
+	    .trumpet-color-b {
+	      border: 1px solid #CCCCCC;
+	      color: #999;
+	    }
+	  }
+	
+	  .broadcast_m {
+	    width: 100%;
+	
+	    .broadcast_m_t {
+	      width: 142rpx;
+	      height: 142rpx;
+	      margin: 30rpx 0 0 258rpx;
+	      position: relative;
+	      font-size: 24rpx;
+	      font-family: PingFang SC;
+	      font-weight: 500;
+	      line-height: 170rpx;
+	      text-align: center;
+	
+	      >img {
+	        width: 142rpx;
+	        height: 142rpx;
+	        position: absolute;
+	
+	      }
+	
+	      >label {
+	        width: 100%;
+	        font-size: 24rpx;
+	        font-family: PingFang SC;
+	        font-weight: 500;
+	        color: #0183FA;
+	        line-height: 24rpx;
+	        display: inline-block;
+	        text-align: center;
+	        position: absolute;
+	        top: 76rpx;
+	      }
+	
+	      /* 按下 */
+	      .press_color {
+	        color: #FFFFFF;
+	      }
+	
+	      /* 松开 */
+	      .slip_color {
+	        color: #0183FA;
+	      }
+	    }
+	
+	    .broadcast_m_t_back_a {
+	      background: url(@/images/icon_sskz_skfs.png);
+	      background-size: 100%;
+	      color: #FFFFFF;
+	    }
+	
+	    .broadcast_m_t_back_b {
+	      background: url(@/images/icon_sskz_azsh.png);
+	      background-size: 100%;
+	      color: #0183FA;
+	    }
+	
+	    .broadcast_m_b {
+	      font-size: 24rpx;
+	      font-family: PingFang SC;
+	      font-weight: 500;
+	      color: #999999;
+	      line-height: 24rpx;
+	      text-align: center;
+	      margin-top: 14rpx;
+	    }
+	  }
+	
+	  /* 疏散按钮 */
+	  .evacuation-button-box {
+	    width: 650rpx;
+	    height: 100rpx;
+	    background: #0183FA;
+	    color: #fff;
+	    text-align center;
+	    line-height: 100rpx;
+	    font-size: 28rpx;
+	    margin: 88rpx auto 0;
+	    border-radius: 20rpx;
+	  }
+	}
 }
 </style>