heyang 1 年之前
父節點
當前提交
94a933a552

+ 41 - 0
README.md

@@ -0,0 +1,41 @@
+### 2.版本分支关系
+>##### 修改时务必注意版本分支关系,从底层开始迭代
+
+    ├─3.3.1-dspf (定时排风版本)-使用后台pre库
+    ├─3.3.2-dzxxp (电子信息牌版本)-使用后台pre库
+    │  ├─szdx-xcx (苏州大学-当前线上版本)-使用后台pre库
+    │  ├─szdx-xcx (化工学院-当前线上版本)-使用后台pre库
+    │  └─szdx-xcx (安全学院(文昌)-当前线上版本)-使用后台pre库
+    ├─3.3.4-kdyh (矿大优化版本)-使用后台pre库
+    │  └─kdnh-xcx (矿大环测学院-当前线上版本包含3.3.4和3.3.5)-使用后台pre库
+    │    |─nhkd-tenantry-xcx (矿大能动学院/化工学院-当前线上版本/增加了租户功能,特定租户屏蔽首页)-使用后台pre库
+    │    └─JiNanDaXue-xcx (暨南大学化学与材料学院/环境与气候研究院)-使用后台pre库
+    ├─3.3.3-aqjc (新安全检查版本-单独版本)-使用后台pre库
+    ├─3.3.3-aqjc (3.3.3全版本)-使用后台pre库
+    │  ├─3.3.5-BaoJingZhuaPai&DianHuaBaoJing (报警抓拍&电话报警版本)-使用后台pre库
+    │     ├─JiNanDaXue-HuaCai (暨南大学-化材学院-当前线上版本)-使用后台pre库
+    │     └─3.3.5&3.3.6-qiPingDingWei (包含 3.3.3 & 3.3.5 & 3.3.6 版本所有内容-增加蓝牙气瓶定位/东北大学需求相关功能)-使用后台pre库
+    │      └─dbdx-web (东北大学-当前线上版本)-使用后台pre库
+    ├─3.3.3-aqjc-temp (3.3.3单独版本/ 3.3.5-增加与我有关)-使用后台dev库
+    ├─3.3.3-aqjc-all-temp (3.3.3全版本-增加与我有关)-使用后台dev库
+    ├─3.3.7-scxjy (手持巡检仪-单独版本)-使用后台dev库
+    │
+    │
+    ├─web-v2 (当前正在开发版本)-使用后台dev库
+    ├─web-v2-pro (当前正在测试版本)-使用后台dev库
+
+
+### 2.功能标识表
+
+| 功能标识 | 功能名称 | 备注 |
+| ---- | ---- | ---- | 
+| type == 10 | 实验室危险源 | 前端生成 |
+| type == 9 | 化学品 | 前端生成 |
+| type == 8 | 化学品柜 | 前端生成 |
+| type == 7 | 培训课程 | 前端生成 |
+| type == 6 | 专项检查 | 前端生成 |
+| type == 5 | 实验室详情 | 后端生成 |
+| type == 3 | 危险源列表 | 后端生成 |
+| type == 2 | 安全制度 | 后端生成 |
+| type == 1 | MSDS说明书 | 后端生成 |
+

+ 8 - 0
api/index.js

@@ -1698,6 +1698,14 @@ export const getCameraByFloor  = (data) => {
         data: data,
     })
 };
+//获取疏散硬件
+export const sparseHardwareList  = (data) => {
+    return apiResquest({
+        url: `/laboratory/sparseHardware/list`,
+        method: 'GET',
+        data: data,
+    })
+};
 
 //获取当前用户认证头像
 export const mystudent  = (data) => {

+ 7 - 12
api/request/config.js

@@ -1,25 +1,20 @@
 const config = {
-	//base_url: 'http://192.168.1.8:8080',//林
-	//base_url: 'http://192.168.1.24:8080',//林
 	//base_url: 'http://192.168.1.9:8080',//柴
 	// base_url: 'http://192.168.1.7:8080',//刘波
 	// base_url: 'http://192.168.1.17:8080',//小飞
 	// base_url: 'http://192.168.1.20:8080',//志伟
-	// base_url: 'http://192.168.1.8:8080',//高升
+    // base_url: 'http://192.168.1.8:8080',//高升
 	// base_url: 'http://192.168.1.29:8080',//何成
-	// base_url: 'http://192.168.1.43:9800',//43服务器
+    // base_url: 'http://192.168.1.43:9800',//43服务器
 	// base_url: 'https://demo.zjznai.com/xzgd/',
 
-	//base_url: 'https://lab.zjznai.com/labNhSystem/',//43服务器高升测试
+    //base_url: 'https://lab.zjznai.com/labNhSystem/',//43服务器高升测试
 	//base_url: 'https://lab.zjznai.com/labAppTest/',//43服务器线上
     // base_url: 'https://lab.zjznai.com/appTest/',//88服务器线上
-	// base_url: 'https://lab.zjznai.com/labSystem/', //矿大地址
-	base_url: 'https://lab.zjznai.com/labSaasSystem/', //矿大化工
-
+    base_url: 'https://lab.zjznai.com/labSystem/', //矿大地址
 	// base_url: 'https://lab.zjznai.com/jdlabSystem/', //交大地址
-	// base_url: 'https://lab.zjznai.com/jndxlabSystem/', //暨大地址
-	//  base_url: 'https://lab.zjznai.com/kdwclabSystem/', //矿大文昌地址
-	//base_url: 'https://znyj.zjznai.suda.edu.cn/labSystem/', //苏大临时地址
-
+   // base_url: 'https://lab.zjznai.com/jndxlabSystem/', //暨大地址
+   //  base_url: 'https://lab.zjznai.com/kdwclabSystem/', //矿大文昌地址
+   //base_url: 'https://znyj.zjznai.suda.edu.cn/labSystem/', //苏大临时地址
 }
 export { config }

+ 94 - 48
pages/earlyWarningManage/earlyWarningDetail.vue

@@ -13,9 +13,9 @@
 		<!-- 预案报警 -->
 		<view class="site" v-if="form.warningType==4">
 			<img src="@/images/Version2.2/icon_wtzg_xx.png"/>
-			<text>{{form.subName}}</text>
-			<text></text>
-			<text>{{form.buildName}}{{form.floorName}}{{form.roomNum}}</text>
+			<view>{{form.subName}}</view>
+			<view></view>
+			<view>{{form.buildName}}{{form.floorName}}{{form.roomNum}}</view>
 		</view>
 		<!-- 化学品 -->
 		<view class="site_tow" v-if="form.warningType==2 || form.warningType==3 || form.warningType==1">
@@ -138,8 +138,9 @@
 			<view class="small_title"><text></text><text>报警抓拍</text></view>
 			<view class="picture_b" >
 				<view class="video" v-if="form.warningType!=1">
-					<video id="myvideo" class="video_t" :src="configUrl+form.recordVideo"></video>
+					<video id="myvideo" class="video_t" :bindloadedmetada="onLoadedMetadata" :src="configUrl+form.recordVideo"></video>
 					<img  class="video_b" @click="lockVideo()" src="@/images/icon_bjzp_spbof.png"/>
+					<canvas id="myCanvas" canvas-id="myCanvas"></canvas>
 				</view>
 				<view v-if="form.warningType==1" class="img" @click="lockImg(form.warningDetailList)">
 					<img v-for="item in form.warningDetailList"  :src="configUrl+item.photoUrl"/>
@@ -147,18 +148,19 @@
 			</view>
 		</view>
 		<view  class="bottom_btn" v-if="timeStatus && (form.warningSubType!=2 && form.warningSubType!=3 && form.warningSubType!=4)" @click="handleClick('','monitor')">查看监控</view>
-	</scroll-view>	
+		
+	</scroll-view>
   </view>
 
 </template>
 
 <script>
 import { config } from '@/api/request/config.js'
-import {checkManageList,conditionCollegeInfo,warningNoticeLogDetail} from '@/api/index.js'
+import {warningNoticeLogDetail} from '@/api/index.js'
 export default {
   name: "rectifyList",
   components: {
-   
+
   },
   data() {
     return {
@@ -173,12 +175,13 @@ export default {
 		form:{},
 		currentTime:'',
 		timeStatus:false,
-		
+		videoType:false,
+
 	}
   },
   onLoad(option) {
 	  let self = this;
-	  
+
 	  //先判断是否是通过点击列表进入
 	  if(option.warningId){
 		  this.warningId=option.warningId;
@@ -196,24 +199,59 @@ export default {
 			}else{
 				this.warningId = option.id;
 				uni.removeStorageSync('warningId');
-		    } 	
-		}  
+		    }
+		}
 	  }
-	 
+
   },
   onShow() {
-	
+	this.$set(this,'videoType',false);
   },
   mounted(){
-	this.getInfo(); 
-	
+	this.getInfo();
+
   },
   methods: {
-		
+		//截取封面
+		videoCover(){
+		  let video = document.getElementById('#myvideo');
+		  let canvas = document.createElement("canvas");
+		  let width = video.width; //canvas的尺寸和图片一样
+		  let height = video.height;
+		  canvas.width = width;
+		  canvas.height = height;
+		  canvas.getContext("2d").drawImage(video, 0, 0, width, height); //绘制canvas
+		  let videoImg = canvas.toDataURL('image/jpeg'); //转换为base64
+		},
+		onLoadedMetadata(e){
+			console.log(1111)
+			const duration=e.duration;
+			const width=e.videoWidth;
+			const heigth=e.videoHeight;
+			
+			const canvas=uni.createCanvasContext('myCanvas')
+			canvas.canvas.width=width;
+			canvas.canvas.height=heigth;
+			
+			canvas.drawImage('myVideo',0,0,width,heigth)
+			canvas.draw();
+			
+			const that=this;
+			
+			setTimeout(function(){
+				uni.canvasToTempFilePath({
+					canvasId:'myCanvas',
+					success:function(res) {
+						const imagePath=res.tempFilePath;
+						console.log(imagePath)
+					}
+				})
+			},1000)
+		},
 		//滚动事件
 		scrollGet(){
 			let self=this;
-			
+
 		},
 		//判断预警时间是否超过30分钟
 		compareTime (gettime){
@@ -227,7 +265,7 @@ export default {
 				console.log('预警没超过30分钟')
 				this.timeStatus=true;
 			}
-			
+
 		},
 		//查看图片
 		lockImg(list){
@@ -248,9 +286,9 @@ export default {
 		},
 		//视频全屏播放
 		lockVideo(){
-			this.videoContext = uni.createVideoContext("myvideo", this);    
-			this.videoContext.requestFullScreen({ direction: 90 });  
-			this.videoContext.play();
+			let videoContext = uni.createVideoContext("myvideo", this);
+			videoContext.requestFullScreen({ direction: 90 });
+			// this.videoContext.play();
 		},
 		//计算两个日期差值(天)
 		datedifference(sDate1, sDate2) {    //sDate1和sDate2是2006-12-18格式
@@ -270,7 +308,7 @@ export default {
 				let res=data.data
 				this.form=res;
 				if(this.form.startTime!='' && this.form.startTime!=null && this.form.endTime !=''&& this.form.endTime !=null){
-	
+
 					if(this.form.startTime.split(' ')[0] != this.form.endTime.split(' ')[0]){
 						this.form.everyDay=true;
 						this.form.everyDayNum=this.datedifference(this.form.endTime.split(' ')[0],this.form.startTime.split(' ')[0])
@@ -286,16 +324,24 @@ export default {
 				}else if(res.warningType==2){
 					uni.setNavigationBarTitle({
 						title:'化学品预警信息'
-					}) 
+					})
 				}else if(res.warningType==3){
 					uni.setNavigationBarTitle({
 						title:'气瓶预警信息'
-					}) 
+					})
 				}else if(res.warningType==4){
 					uni.setNavigationBarTitle({
 						title:'预案报警信息'
-					}) 
+					})
 				}
+				setTimeout(function(){
+					let videoplay = wx.createVideoContext('myvideo')
+					videoplay.play()
+					setTimeout(function(){
+						videoplay.pause()
+						_this.$set(_this,'videoType',true);
+					},200)
+				},1000)
 				this.compareTime(res.warningTime);
 			}
 		},
@@ -306,10 +352,10 @@ export default {
 			    url: '/pages/earlyWarningManage/videoMonitoring?subId='+this.form.subId+'&floorId='+this.form.floorId//我的实验室
 			  });
 		  }
-		  
+
 		},
-		
-	  
+
+
   }
 }
 </script>
@@ -381,40 +427,35 @@ export default {
 		background: rgba(255,163,78,0.2);
 	}
 	.site{
-		width: 690rpx;
-		height: 80rpx;
+		padding:26rpx;
 		background: #FFFFFF;
 		display: flex;
-		justify-content: flex-start;
-		align-items: center;
 		border-radius: 20rpx 20rpx 20rpx 20rpx;
 		margin:20rpx 30rpx;
 		>img{
 			width: 30rpx;
 			height: 30rpx;
-			margin-right: 22rpx;
-			margin-left: 30rpx;
+			margin:auto 22rpx auto 30rpx;
 		}
-		>text:nth-of-type(1){
+		>view:nth-of-type(1){
 			font-size: 28rpx;
 			font-family: PingFang SC-Medium, PingFang SC;
-			font-weight: 400;
+			flex:1;
 			color: #333333;
-			line-height: 28rpx;
+			line-height: 32rpx;
 		}
-		>text:nth-of-type(2){
+		>view:nth-of-type(2){
 			display: inline-block;
 			width: 2rpx;
-			height: 20rpx;
 			background: #E0E0E0;
-			margin: 0 24rpx 0 28rpx;
+			margin: 0 24rpx;
 		}
-		>text:nth-of-type(3){
+		>view:nth-of-type(3){
 			font-size: 28rpx;
 			font-family: PingFang SC-Medium, PingFang SC;
-			font-weight: 400;
+			flex:1;
 			color: #333333;
-			line-height: 28rpx;
+			line-height: 32rpx;
 		}
 	}
 	.site_tow{
@@ -478,7 +519,7 @@ export default {
 				line-height: 28rpx;
 			}
 		}
-		
+
 	}
 	.small_title{
 		height: 90rpx;
@@ -567,7 +608,7 @@ export default {
 				font-weight: 400;
 				color: #0183FA;
 				line-height: 60rpx;
-				
+
 			}
 		}
 	}
@@ -584,7 +625,12 @@ export default {
 			flex-wrap: wrap;
 			padding: 40rpx 30rpx 10rpx;
 			box-sizing: border-box;
-			
+			.videoOpacity1{
+				opacity:1;
+			}
+			.videoOpacity0{
+				opacity:0;
+			}
 			.video{
 				position: relative;
 				width: 150rpx;
@@ -621,7 +667,7 @@ export default {
 					margin-right: 0;
 				}
 			}
-			
+
 		}
 	}
 	.bottom_btn{
@@ -638,7 +684,7 @@ export default {
 		text-align: center;
 		background: #F5F5F5;
 		margin: 90rpx 30rpx 30rpx;
-		
+
 	}
 }
 </style>

+ 20 - 20
pages/earlyWarningManage/earlyWarningList.vue

@@ -27,18 +27,18 @@
 			</view>
 		</viw>
 		<img class="null-img" v-if="!dataList[0]" src="@/images/null-data-1.png">
-	</scroll-view>	
+	</scroll-view>
   </view>
 
 </template>
 
 <script>
 import { config } from '@/api/request/config.js'
-import {checkManageList,conditionCollegeInfo,warningNoticeLogList} from '@/api/index.js'
+import {warningNoticeLogList} from '@/api/index.js'
 export default {
   name: "rectifyList",
   components: {
-   
+
   },
   data() {
     return {
@@ -51,20 +51,20 @@ export default {
 		dataArr:[],//临时存储
 		total:0,
 		timeStatus:false,//判断是否超过当前时间30分钟
-		
+
 	}
   },
   onLoad(option) {
-	  
+
   },
   onShow() {
-	
+
   },
   mounted(){
-	 this.getList();  
+	 this.getList();
   },
   methods: {
-		
+
 		//滚动事件
 		scrollGet(){
 			let self=this;
@@ -73,21 +73,21 @@ export default {
 			}else{
 					setTimeout(function(){
 						self.getData.pageNum += 1;
-						self.getList(); 
+						self.getList();
 					},1000)
-						 
+
 			}
-			
+
 		},
-		
+
 		handleClick(row,doType){
 		  let self=this;
-		  if( doType=='detail'){//详情	
+		  if( doType=='detail'){//详情
 			  uni.navigateTo({
 			    url: '/pages/earlyWarningManage/earlyWarningDetail?warningId='+row.id,//安全警报
 			  });
 		  }
-		  
+
 		},
 		//排序
 		sortClass(sortData){
@@ -95,7 +95,7 @@ export default {
 		    let groups = {};
 		    array.forEach((o) => {
 		      let group = JSON.stringify(f(o));
-			  
+
 		      groups[group] = groups[group] || [];
 		      groups[group].push(o);
 		    });
@@ -118,7 +118,7 @@ export default {
 				this.total=data.data.total;
 			}
 		},
-	  
+
   }
 }
 </script>
@@ -155,7 +155,7 @@ export default {
 			font-weight: 400;
 			color: #666666;
 			line-height: 80rpx;
-		}	
+		}
 		.list_li{
 			width: 690rpx;
 			height:auto;
@@ -190,7 +190,7 @@ export default {
 					border-radius: 20rpx;
 					padding: 0 20rpx;
 					box-sizing: border-box;
-					
+
 				}
 				.list_li_t_c2{
 					font-size: 30rpx;
@@ -216,7 +216,7 @@ export default {
 			.list_li_b{
 				margin: 0 30rpx;
 				border-top: 1rpx dotted #D8D8D8;
-				
+
 				.list_li_b_t{
 					display: flex;
 					justify-content: space-between;
@@ -258,7 +258,7 @@ export default {
 					}
 				}
 			}
-		}	
+		}
 	}
 	.info-max-box{
 		flex: 1;

+ 3 - 3
pages_manage/workbench/laboratory/laboratoryInfo.vue

@@ -345,7 +345,7 @@ export default {
 	if(this.itemData.subAddrr.floorId){
 		this.getDeviceListBySub();
 	}
-	
+
 
   },
   onShow(){
@@ -911,8 +911,8 @@ export default {
 	        }
 	        this.$set(this, 'trumpetList', data.data)
 	      }
-		  
-		  
+
+
 	    },
 	//点击选择喇叭
 	    trumpetClick(index) {

+ 13 - 13
pages_manage/workbench/receiveCasuallyPat/casuallyPatInfo.vue

@@ -42,9 +42,9 @@
 			    <view class="img-max-box">
 			        <view class="img-box" v-for="(item,index) in formData.handleImg" :key="index">
 			            <img class="img-data" :src="baseUrl+item" @click="clickImg(item)">
-			            <img class="position-img" src="@/pages_manage/images/icon_ssp_closure.png" v-if="newData.handleStatus==0" @click="delImg(index)">
+			            <img class="position-img" src="@/images/icon_ssp_closure.png" v-if="newData.handleStatus==0" @click="delImg(index)">
 			        </view>
-			        <img class="add-button" src="@/pages_manage/images/icon_07.png" @click="selectImage" v-if="newData.handleStatus==0">
+			        <img class="add-button" src="@/images/icon_07.png" @click="selectImage" v-if="newData.handleStatus==0">
 			    </view>
 			</view>
         </view>
@@ -70,16 +70,16 @@
         onLoad(option) {
             this.itemData = JSON.parse(decodeURIComponent(option.item));
             console.log("this.itemData",this.itemData)
-
+		
             this.getPhotonote();
 			if(this.itemData.isApply==2){
 				this.readNnreadFun();
 			}
-
+			
         },
         methods: {
 			//已读未读
-
+		
 			async readNnreadFun() {
 			    let self = this;
 			    const {data} = await groupListRead({messageId:this.itemData.messageId})
@@ -90,7 +90,7 @@
 					 this.getPhotonote();
 			    }
 			},
-
+			    
             clickButton(){
                 let self = this;
                 if(self.newData.handleStatus == 0){
@@ -142,9 +142,9 @@
 						this.formData.handleDescribe=data.data.handleDescribe;
 						this.formData.handleImg=data.data.handleImg.split(',');
 					}
-
+					
                     this.newData.imgList = data.data.imgUrl.split(",");
-
+					
                 }
             },
 			// 图片上传
@@ -177,7 +177,7 @@
 			        mask: true
 			    });
 			    uni.uploadFile({
-			        url: config.base_url+'/base/file/upload', //仅为示例,非真实的接口地址
+			        url: config.base_url+'/file/upload', //仅为示例,非真实的接口地址
 			        header:{'Authorization':uni.getStorageSync('token')},
 			        filePath: tempFilePaths,
 			        name: 'file',
@@ -188,7 +188,7 @@
 			            let res = JSON.parse(uploadFileRes.data);
 						if(res.code == 200){
 							self.formData.handleImg.push(res.data.url);
-
+			              
 						}else{
 							uni.showToast({
 								title: res.msg,
@@ -277,8 +277,8 @@
 			 .input-box{
                  height:auto;
                  //display flex;
-
-
+			
+                 
                  .left-box{
                      width:180rpx;
                      line-height:80rpx;
@@ -331,7 +331,7 @@
                 }
             }
         }
-
+                
 		}
         .bottom-button-box{
             width: 550rpx;

+ 1 - 0
pages_manage/workbench/receiveCasuallyPat/receiveCasuallyPat.vue

@@ -69,6 +69,7 @@
             },
             //滚动事件
             scrollGet(){
+                console.log("股东了");
                 if(this.getData.getType){
                     this.getData.page += 1;
                     this.getList();