heyang пре 1 година
родитељ
комит
d14541959b
45 измењених фајлова са 13501 додато и 0 уклоњено
  1. 605 0
      hs_err_pid36656.log
  2. 1240 0
      pages_safetyExamine/dangerManage/dangerDetail.vue
  3. 540 0
      pages_safetyExamine/dangerManage/dangerList.vue
  4. 633 0
      pages_safetyExamine/dangerManage/dangerManage.vue
  5. 1263 0
      pages_safetyExamine/examineManage/examineAdd.vue
  6. 935 0
      pages_safetyExamine/examineManage/examineAddTow.vue
  7. 716 0
      pages_safetyExamine/examineManage/examineDetail.vue
  8. 899 0
      pages_safetyExamine/examineManage/examineList.vue
  9. BIN
      pages_safetyExamine/images/icon_04.png
  10. BIN
      pages_safetyExamine/images/icon_06.png
  11. BIN
      pages_safetyExamine/images/icon_06_1.png
  12. BIN
      pages_safetyExamine/images/icon_aqjc_sm.png
  13. BIN
      pages_safetyExamine/images/icon_aqjc_ss.png
  14. BIN
      pages_safetyExamine/images/icon_aqjc_ssp.png
  15. BIN
      pages_safetyExamine/images/icon_bfhx_sq.png
  16. BIN
      pages_safetyExamine/images/icon_bfhx_xq.png
  17. BIN
      pages_safetyExamine/images/icon_cg.png
  18. BIN
      pages_safetyExamine/images/icon_djc_wj.png
  19. BIN
      pages_safetyExamine/images/icon_djcsys.png
  20. BIN
      pages_safetyExamine/images/icon_fjgk_sc.png
  21. BIN
      pages_safetyExamine/images/icon_jcjh_cy.png
  22. BIN
      pages_safetyExamine/images/icon_ksjc_yysr.png
  23. BIN
      pages_safetyExamine/images/icon_rl.png
  24. BIN
      pages_safetyExamine/images/icon_ssp_ry.png
  25. BIN
      pages_safetyExamine/images/icon_xyxc_aqyh.png
  26. BIN
      pages_safetyExamine/images/icon_xyxc_qx.png
  27. BIN
      pages_safetyExamine/images/icon_xyxc_sm.png
  28. BIN
      pages_safetyExamine/images/icon_xyxc_sys.png
  29. BIN
      pages_safetyExamine/images/icon_xyxc_syszc.png
  30. BIN
      pages_safetyExamine/images/icon_xyxc_xy.png
  31. BIN
      pages_safetyExamine/images/icon_xyxc_xyxc.png
  32. BIN
      pages_safetyExamine/images/icon_xyxcgl_jhwks.png
  33. BIN
      pages_safetyExamine/images/icon_xzwt_xz.png
  34. BIN
      pages_safetyExamine/images/icon_ywc.png
  35. 333 0
      pages_safetyExamine/inforSign.vue
  36. 897 0
      pages_safetyExamine/patrolPlan/patrolPlanAdd.vue
  37. 348 0
      pages_safetyExamine/patrolPlan/patrolPlanAddLab.vue
  38. 283 0
      pages_safetyExamine/patrolPlan/patrolPlanAddMember.vue
  39. 877 0
      pages_safetyExamine/patrolPlan/patrolPlanDetail.vue
  40. 1538 0
      pages_safetyExamine/patrolPlan/patrolPlanEdit.vue
  41. 431 0
      pages_safetyExamine/patrolPlan/patrolPlanList.vue
  42. 639 0
      pages_safetyExamine/snapshotManage/snapshotAdd.vue
  43. 552 0
      pages_safetyExamine/snapshotManage/snapshotDetail.vue
  44. 390 0
      pages_safetyExamine/snapshotManage/snapshotList.vue
  45. 382 0
      replay_pid36656.log

Разлика између датотеке није приказан због своје велике величине
+ 605 - 0
hs_err_pid36656.log


Разлика између датотеке није приказан због своје велике величине
+ 1240 - 0
pages_safetyExamine/dangerManage/dangerDetail.vue


+ 540 - 0
pages_safetyExamine/dangerManage/dangerList.vue

@@ -0,0 +1,540 @@
+<!-- 安全检查-安全隐患 -->
+<template>
+  <view class="examine">
+	<view class="header">
+		<view class="tabTitle_tow">
+			<view class="tabTitle_tow_li" @tap="tabClickTow(index)"  :key="index" v-for="(item,index) in tabTextTow">
+				<view :class="{on:curTabTow==index}" class="tabTitle_tow_text">{{item}}</view>
+			    <view :class="{on:curTabTow==index}" class="tabTitle_tow_across"></view>
+			</view>
+		</view>
+		<view class="lab_title">
+			<picker @change="collegeChange" :value="collegeIndex" :range="collegeArray" class="lab_title_l">
+				<view class="lab_title_l_n">
+					<view>{{getData.deptName?getData.deptName:'选择学院'}}</view>
+					<img src="@/pages_safetyExamine/images/icon_06.png">
+				</view>
+			</picker>
+			<view class="lab_title_r">
+				<view class="lab_title_r_btn" @click="searchBtn">
+					<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+				</view>
+				<input type="text" v-model="getData.searchValue" placeholder="实验室/房间号" maxlength="50" placeholder-style="color: #CCCCCC;font-size:22rpx;">
+				<view class="clear" @click="clearBtn">清除</view>
+			</view>
+		</view>
+	</view>
+	
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view class="list_three">
+			<view class="list_three_li" v-for="(item,index) in  dataList" :key="index" @click="handleClick(item,'detail')">
+				<view class="list_three_li_t">
+					<view class="list_three_li_t_l">
+						<img v-if="item.checkRange==1" src="@/pages_safetyExamine/images/icon_xyxc_qx.png"/>
+						<img v-if="item.checkRange==2" src="@/pages_safetyExamine/images/icon_xyxc_xy.png"/>
+						<img v-if="item.checkRange==3" src="@/pages_safetyExamine/images/icon_xyxc_sys.png"/>
+						<text></text>
+					</view>
+					<view class="list_three_li_t_c">{{item.subRoom}}</view>
+					<view class="list_three_li_t_c2" v-if="item.overdueStatus==1">已逾期</view>
+					<view class="list_three_li_t_r"></view>
+				</view>
+				<view class="list_three_li_m">
+					<view class="list_three_li_m_t">{{item.title}}</view>
+					<view class="list_three_li_m_b">
+						<text class="green_color" v-if="item.rectifyStatus==1">已完成</text>
+						<text class="blue_color" v-if="item.rectifyStatus==2">待整改</text>
+						<text class="orange_color" v-if="item.rectifyStatus==3">待复核</text>
+						<text class="gray_color" v-if="item.rectifyStatus==4">暂无法整改</text>
+						<text>{{item.hazardType==1?'校院巡查':'实验室自查'}}</text>
+						<text>{{item.collegeName}}</text>
+					</view>
+				</view>
+				<view class="list_three_li_b">整改期限:{{item.rectifyDeadline}}</view>
+			</view>
+		</view>
+		<img class="null-img" v-if="!dataList[0]" src="@/images/null-data-1.png">
+	</scroll-view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import {checkHazardAppList,conditionCollegeInfo} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		pageType:0,
+		//列表请求参数
+		getData:{
+		 pageNum:1,
+		 pageSize:20,
+		 hazardType:'1',//1是院校巡查,2是实验室自查
+		 rectifyStatus:'',//1已完成 2待整改 3待复核 4 暂无法整改
+		 searchValue:'',
+		},
+		tabTextTow:['全部','待整改','待复核','已完成','暂无法整改'],
+		curTabTow:0,
+		form:{
+			name:'',
+			type:'校院巡查',
+			startTime:'',
+			endTime:'',
+			inspectScope:[],
+			tiemQuickList:[],
+			scopeIndex:'',
+			seleteListLab:[],
+			patrolIndex:'',
+			seleteListMember:[],
+		},
+		collegeList:[{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},],
+		collegeIndex :0,
+		collegeArray:[],
+		dataList:[],
+	}
+  },
+  onLoad(option) {
+	 if(option.form){
+		this.form=JSON.parse(decodeURIComponent(option.form)); 
+	 }
+	 if(option.pageType==1){
+		  uni.setNavigationBarTitle({
+				title:'校院巡查隐患'
+		  })
+		  this.getData.hazardType=option.pageType;
+	 }else if(option.pageType==2){
+		  uni.setNavigationBarTitle({
+				title:'实验室自查隐患'
+		  })
+		  this.getData.hazardType=option.pageType;
+	 }
+  },
+  onShow() {
+	  
+  },
+  mounted(){
+	  this.getList();
+	  this.conditionCollegeInfo();
+  },
+  methods: {
+		//顶部tab点击
+		tabClickTow(index) {
+			this.curTabTow = index;
+			this.getData.pageNum=1;
+			this.getData.searchValue='';
+			this.getData.deptId='';
+			this.getData.deptName='';
+			this.dataList=[];
+			if(index==0){
+				this.getData.rectifyStatus='';
+			}else if(index==1){//待整改
+				this.getData.rectifyStatus=2;
+			}else if(index==2){//待复核
+				this.getData.rectifyStatus=3;
+			}else if(index==3){//已完成
+				this.getData.rectifyStatus=1;
+			}else if(index==4){//暂无法整改
+				this.getData.rectifyStatus=4;
+			}
+			this.getList()
+		},
+		//选择学院
+		collegeChange(e){
+			this.collegeIndex = e.target.value;
+			this.getData.deptId=this.collegeList[e.target.value].deptId
+			this.getData.deptName=this.collegeList[e.target.value].deptName
+			this.dataList=[];
+			this.getList(); 
+		},
+		//实验室搜索
+		searchBtn(){
+			this.dataList=[];
+			this.getList();
+		},
+		//清除
+		clearBtn(){
+			  this.getData.pageNum=1;
+			  this.collegeIndex=0;
+			  this.getData.deptId='';
+			  this.getData.deptName='';
+			  this.getData.searchValue='';
+			  this.dataList=[];
+			  this.getList();
+		},
+		//滚动事件
+		scrollGet(){
+			let self=this;
+			if(self.total/self.getData.pageSize<=self.getData.pageNum){
+			    console.log('没有更多数据!')
+			}else{
+					setTimeout(function(){
+						self.getData.pageNum += 1;
+						self.getList(); 
+					},1000)
+						 
+			}
+			
+		},
+	    //查询学院列表
+	    async conditionCollegeInfo(){
+	    	let _this = this;
+	    	const {data} = await conditionCollegeInfo();
+	    	if(data.code == 200){
+	    		data.data.forEach(function(item){
+	    			item.type=false;
+	    		})
+	    		_this.collegeList=data.data;
+	    		
+	    		//检查管理
+	    		for(let i=0;i<data.data.length;i++){
+	    			_this.collegeArray.push(data.data[i].deptName)
+	    		}
+	    	}
+	    },
+	    handleClick(row,doType){
+	      let self=this;
+	      if( doType=='subBtn'){//	
+	      
+	      }else if(doType=='detail'){//详情
+	    	  uni.redirectTo({
+	    	  	 url: '/pages_safetyExamine/dangerManage/dangerDetail?item='+encodeURIComponent(JSON.stringify(row))
+	    	  })
+	      }
+	      
+	    },
+	    async getList(){
+	    	let self = this;
+	    	const {data} = await checkHazardAppList(this.getData);
+	    	if(data.code==200){
+	    		this.dataList=[...this.dataList,...data.data.records]
+	    		this.total=data.data.total;
+	    	}
+	    },
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	// padding: 0 30rpx;
+	// box-sizing: border-box;
+	padding-bottom: 20rpx;
+	box-sizing: border-box;
+	.blue_color{
+		color: #0183FA;
+		border: 1rpx solid #0183FA;
+	}
+	.red_color{
+		color: #FF4545;
+		border: 1rpx solid #FF4545;
+	}
+	.green_color{
+		color: #1FA50D;
+		border: 1rpx solid #1FA50D;
+	}
+	.orange_color{
+		color: #FA8E1B;
+		border: 1rpx solid #FA8E1B;
+	}
+	.gray_color{
+		color: #A2A2A2;
+		border: 1rpx solid #A2A2A2;
+	}
+	.null-img{
+		display block
+		width:276rpx;
+		height:321rpx;
+		margin:100rpx 0 0 274rpx;
+	}
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		
+		padding: 220rpx 0rpx 0;
+		box-sizing: border-box;
+	}
+	/* 切换按钮 */
+	.header{
+		width:100%;
+		position: fixed;
+		top: 0rpx;
+		z-index: 100;
+		.tabTitle_tow{
+			width:100%;
+			height: 100rpx;
+			background: #fff;
+			display flex;
+			justify-content: flex-start;
+			align-items: center;
+			border-bottom: 1rpx solid #E0E0E0;
+			.tabTitle_tow_li{
+				position: relative;
+				width:152rpx;
+				text-align center;
+				.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: 50rpx;
+					display none;
+					&.on{
+						display block;
+					}
+				}
+		
+			}
+		}
+		.lab_title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			padding: 20rpx 30rpx;
+			box-sizing: border-box;
+			display: flex;
+			justify-content: flex-start;
+			
+			.lab_title_l{
+				width: 250rpx;
+				height: 60rpx;
+				margin-right: 20rpx;
+				.lab_title_l_n{
+					width: 250rpx;
+					height: 60rpx;
+					border-radius: 10rpx;
+					border: 1rpx solid #E0E0E0;
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					>view{
+						flex:1;
+						line-height:60rpx;
+						margin-left:20rpx;
+						color: #999999;
+						font-size:28rpx;
+						white-space: nowrap;
+						overflow: hidden;
+						text-overflow: ellipsis;
+					}
+					>img{
+						width: 14rpx;
+						height: 8rpx;
+						margin-right: 30rpx;
+					}
+				}
+			}
+			.lab_title_r{
+				width: 420rpx;
+				height: 60rpx;
+				position:relative;
+				border-radius: 10rpx;
+				border: 1rpx solid #E0E0E0;
+				.lab_title_r_btn{
+					width: 60rpx;
+					height: 60rpx
+					position: absolute;
+					top: 0rpx;
+					left:0rpx;
+					z-index: 100;
+					>img{
+						width: 20rpx;
+						height: 20rpx;
+						position: absolute;
+						top: 20rpx;
+						left: 24rpx;
+					}
+				}
+				>input{
+					width: 274rpx;
+					height: 60rpx;
+					position: absolute;
+					top: 0rpx;
+					left: 60rpx;
+				}
+				.clear{
+					width: 60rpx;
+					height: 60rpx;
+					position: absolute;
+					top: 0rpx;
+					right:20rpx;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #0183FA;
+					line-height: 60rpx;
+				}
+			}
+		}
+		
+	}
+	.list_three{
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		.list_three_li{
+			position: relative;
+			width: 690rpx;
+			height: 320rpx;
+			background: #fff;
+			border-radius: 10rpx;
+			overflow: hidden;
+			margin-bottom: 20rpx;
+			.list_three_li_t{
+				width: 100%;
+				position: absolute;
+				left: 0;
+				top: 0;
+				.list_three_li_t_l{
+					>img{
+						width: 70rpx;
+						height: 70rpx;
+					}
+					>text{
+						position: absolute;
+						left: -15rpx;
+						top: 76rpx;
+						display: inline-block;
+						width: 30rpx;
+						height: 30rpx;
+						background: #F5F5F5;
+						border-radius: 15rpx;
+					}
+				}
+				.list_three_li_t_c{
+					width: 630rpx;
+					height: 110rpx;
+					position: absolute;
+					left: 30rpx;
+					top: 0;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 110rpx;
+					border-bottom: 1rpx dashed #D8D8D8;
+					overflow: hidden;
+					text-overflow:ellipsis;
+					white-space: nowrap;
+					padding-right: 60rpx;
+					box-sizing: border-box;
+				}
+				.list_three_li_t_c2{
+					position: absolute;
+					right: 20rpx;
+					top: 38rpx;
+					width: 120rpx;
+					height: 40rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #FF5757;
+					line-height: 40rpx;
+					border: 1rpx solid #FF5757;
+					border-radius: 6rpx;
+					text-align: center;
+				}
+				.list_three_li_t_r{
+					position: absolute;
+					right:-15rpx;
+					top: 76rpx;
+					width: 30rpx;
+					height: 30rpx;
+					background:#F5F5F5;
+					border-radius: 15rpx;
+				}
+			}
+			.list_three_li_m{
+				position: absolute;
+				top: 110rpx;
+				left: 0;
+				width: 690rpx;
+				height: 158rpx;
+				padding-left: 30rpx;
+				box-sizing: border-box;
+				.list_three_li_m_t{
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #666666;
+					line-height: 40rpx;
+					margin-top:22rpx;
+					overflow: hidden;
+					text-overflow:ellipsis;
+					white-space: nowrap;
+				}
+				.list_three_li_m_b{
+					margin-top:26rpx;
+					>text:nth-of-type(1){
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						line-height: 40rpx;
+						border-radius: 6rpx;
+						padding: 0 20rpx;
+						margin-right: 14rpx;
+					}
+					>text:nth-of-type(2){
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #0183FA;
+						line-height: 40rpx;
+						padding: 0 8rpx;
+						border-radius: 6rpx;
+						background: rgba(1,131,250,0.1);
+						margin-right: 24rpx;
+					}
+					>text:nth-of-type(3){
+						display: inline-block;
+						width: 280rpx;
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 26rpx;
+						overflow: hidden;
+						text-overflow:ellipsis;
+						white-space: nowrap;
+						
+					}
+				}
+			}
+			.list_three_li_b{
+				height: 60rpx;
+				width: 100%;
+				position: absolute;
+				top: 258rpx;
+				left: 0;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 60rpx;
+				padding-left: 28rpx;
+				box-sizing: border-box;
+			}
+			
+		}
+	}
+	
+}
+</style>

+ 633 - 0
pages_safetyExamine/dangerManage/dangerManage.vue

@@ -0,0 +1,633 @@
+<!-- 安全检查-安全隐患 -->
+<template>
+  <view class="examine">
+	<view class="header">
+		<view class="tabTitle" v-if="pageType==0">
+			<view class="tabTitle_li" @tap="tabClick(index)"  :key="index" v-for="(item,index) in tabText">
+				<view :class="{on:curTab==index}" class="tabTitle_text">{{item}}</view>
+			    <view :class="{on:curTab==index}" class="tabTitle_across"></view>
+			</view>
+		</view>
+		<view class="tabTitle_tow">
+			<view class="tabTitle_tow_li" @tap="tabClickTow(index)"  :key="index" v-for="(item,index) in tabTextTow">
+				<view :class="{on:curTabTow==index}" class="tabTitle_tow_text">{{item}}</view>
+			    <view :class="{on:curTabTow==index}" class="tabTitle_tow_across"></view>
+			</view>
+		</view><strong></strong>
+		<view class="lab_title">
+			<picker @change="collegeChange" :value="collegeIndex" :range="collegeArray" class="lab_title_l">
+				<view class="lab_title_l_n">
+					<view>{{getData.deptName?getData.deptName:'选择学院'}}</view>
+					<img src="@/pages_safetyExamine/images/icon_06.png">
+				</view>
+			</picker>
+			<view class="lab_title_r">
+				<view class="lab_title_r_btn" @click="searchBtn">
+					<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+				</view>
+				<input type="text" v-model="getData.searchValue" placeholder="实验室/房间号" maxlength="50" placeholder-style="color: #CCCCCC;font-size:22rpx;">
+				<view class="clear" @click="clearBtn">清除</view>
+			</view>
+		</view>
+	</view>
+	
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view class="list_three">
+			<view class="list_three_li" v-for="(item,index) in  dataList" :key="index" @click="handleClick(item,'detail')">
+				<view class="list_three_li_t">
+					<view class="list_three_li_t_l">
+						<img v-if="item.checkRange==1" src="@/pages_safetyExamine/images/icon_xyxc_qx.png"/>
+						<img v-if="item.checkRange==2" src="@/pages_safetyExamine/images/icon_xyxc_xy.png"/>
+						<img v-if="item.checkRange==3" src="@/pages_safetyExamine/images/icon_xyxc_sys.png"/>
+						<text></text>
+					</view>
+					<view class="list_three_li_t_c">{{item.subRoom}}</view>
+					<view class="list_three_li_t_c2" v-if="item.overdueStatus==1">已逾期</view>
+					<view class="list_three_li_t_r"></view>
+				</view>
+				<view class="list_three_li_m">
+					<view class="list_three_li_m_t">{{item.title}}</view>
+					<view class="list_three_li_m_b">
+						<text class="green_color" v-if="item.rectifyStatus==1">已完成</text>
+						<text class="blue_color" v-if="item.rectifyStatus==2">待整改</text>
+						<text class="orange_color" v-if="item.rectifyStatus==3">待复核</text>
+						<text class="gray_color" v-if="item.rectifyStatus==4">暂无法整改</text>
+						<text>{{item.hazardType==1?'校院巡查':'实验室自查'}}</text>
+						<text>{{item.collegeName}}</text>
+					</view>
+				</view>
+				<view class="list_three_li_b">整改期限:{{item.rectifyDeadline}}</view>
+			</view>
+		</view>
+		<img class="null-img" v-if="!dataList[0]" src="@/images/null-data-1.png">
+	</scroll-view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import {checkHazardAppList,conditionCollegeInfo} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		pageType:0,
+		//列表请求参数
+		getData:{
+			pageNum:1,
+			pageSize:20,
+		    hazardType:'1',//1是院校巡查,2是实验室自查
+			rectifyStatus:'',//1已完成 2待整改 3待复核 4 暂无法整改
+			searchValue:'',
+		},
+		tabText:['校院巡查隐患','实验室自查隐患'],
+		curTab:0,
+		tabTextTow:['全部','待整改','待复核','已完成','暂无法整改'],
+		curTabTow:0,
+		form:{
+			name:'',
+			type:'校院巡查',
+			startTime:'',
+			endTime:'',
+			inspectScope:[],
+			tiemQuickList:[],
+			scopeIndex:'',
+			seleteListLab:[],
+			patrolIndex:'',
+			seleteListMember:[],
+		},
+		collegeList:[{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},],
+		collegeIndex :0,
+		collegeArray:[],
+		dataList:[],
+	}
+  },
+  onLoad(option) {
+	 if(option.form){
+		this.form=JSON.parse(decodeURIComponent(option.form)); 
+		console.log(this.form)
+	 }
+	 if(option.pageType==1){
+	 		  uni.setNavigationBarTitle({
+	 				title:'校院巡查隐患'
+	 		  })
+	 }else if(option.pageType==2){
+	 		  uni.setNavigationBarTitle({
+	 				title:'实验室自查隐患'
+	 		  })
+	 }
+  },
+  onShow() {
+	  
+  },
+  mounted(){
+	  this.getList();
+	  this.conditionCollegeInfo();
+  },
+  methods: {
+		tabClick(index) {
+			this.curTab = index;
+			this.getData.pageNum=1;
+			this.getData.searchValue='';
+			this.getData.deptId='';
+			this.getData.deptName='';
+			this.getData.rectifyStatus='';
+			this.curTabTow=0;
+			this.dataList=[];
+			if(index==0){//校院
+				this.getData.hazardType=1;
+			}else if(index==1){//实验室
+				this.getData.hazardType=2;
+			}
+			this.getList()
+		},
+		//顶部tab点击
+		tabClickTow(index) {
+			this.curTabTow = index;
+			this.getData.pageNum=1;
+			this.getData.searchValue='';
+			this.getData.deptId='';
+			this.getData.deptName='';
+			this.dataList=[];
+			if(index==0){
+				this.getData.rectifyStatus='';
+			}else if(index==1){//待整改
+				this.getData.rectifyStatus=2;
+			}else if(index==2){//待复核
+				this.getData.rectifyStatus=3;
+			}else if(index==3){//已完成
+				this.getData.rectifyStatus=1;
+			}else if(index==4){//暂无法整改
+				this.getData.rectifyStatus=4;
+			}
+			this.getList()
+		},
+		//选择学院
+		collegeChange(e){
+			this.collegeIndex = e.target.value;
+			this.getData.deptId=this.collegeList[e.target.value].deptId
+			this.getData.deptName=this.collegeList[e.target.value].deptName
+			this.dataList=[];
+			this.getList(); 
+		},
+		//实验室搜索
+		searchBtn(){
+			this.dataList=[];
+			this.getList();
+		},
+		//清除
+		clearBtn(){
+			  this.getData.pageNum=1;
+			  this.collegeIndex=0;
+			  this.getData.deptId='';
+			  this.getData.deptName='';
+			  this.getData.searchValue='';
+			  this.dataList=[];
+			  this.getList();
+		},
+		//滚动事件
+		scrollGet(){
+			let self=this;
+			if(self.total/self.getData.pageSize<=self.getData.pageNum){
+			    console.log('没有更多数据!')
+			}else{
+					setTimeout(function(){
+						self.getData.pageNum += 1;
+						self.getList(); 
+					},1000)
+						 
+			}
+			
+		},
+		//查询学院列表
+		async conditionCollegeInfo(){
+			let _this = this;
+			const {data} = await conditionCollegeInfo();
+			if(data.code == 200){
+				data.data.forEach(function(item){
+					item.type=false;
+				})
+				_this.collegeList=data.data;
+				
+				//检查管理
+				for(let i=0;i<data.data.length;i++){
+					_this.collegeArray.push(data.data[i].deptName)
+				}
+			}
+		},
+	    handleClick(row,doType){
+		  let self=this;
+		  if( doType=='subBtn'){//	
+		  
+		  }else if(doType=='detail'){//详情
+			  uni.redirectTo({
+			  	 url: '/pages_safetyExamine/dangerManage/dangerDetail?item='+encodeURIComponent(JSON.stringify(row))
+			  })
+		  }
+		  
+	    },
+		async getList(){
+			let self = this;
+			const {data} = await checkHazardAppList(this.getData);
+			if(data.code==200){
+				this.dataList=[...this.dataList,...data.data.records]
+				this.total=data.data.total;
+			}
+		},
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	// padding: 0 30rpx;
+	// box-sizing: border-box;
+	padding-bottom: 20rpx;
+	box-sizing: border-box;
+	.null-img{
+		display block
+		width:276rpx;
+		height:321rpx;
+		margin:100rpx 0 0 274rpx;
+	}
+	.blue_color{
+		color: #0183FA;
+		border: 1rpx solid #0183FA;
+	}
+	.red_color{
+		color: #FF4545;
+		border: 1rpx solid #FF4545;
+	}
+	.green_color{
+		color: #1FA50D;
+		border: 1rpx solid #1FA50D;
+	}
+	.orange_color{
+		color: #FA8E1B;
+		border: 1rpx solid #FA8E1B;
+	}
+	.gray_color{
+		color: #A2A2A2;
+		border: 1rpx solid #A2A2A2;
+	}
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		
+		padding: 220rpx 0rpx 0;
+		box-sizing: border-box;
+	}
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		
+		padding: 340rpx 0rpx 0;
+		box-sizing: border-box;
+	}
+	/* 切换按钮 */
+	.header{
+		width:100%;
+		position: fixed;
+		top: 0rpx;
+		z-index: 100;
+		.tabTitle{
+			width:100%;
+			height: 100rpx;
+			background: #fff;
+			display flex;
+			justify-content: center;
+			align-items: center;
+			margin-bottom:20rpx;
+			.tabTitle_li{
+				position: relative;
+				width:372rpx;
+				text-align center;
+				.tabTitle_text{
+					display: inline-block;
+					font-size: 30rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 46rpx;
+					position: relative;
+					>text{
+						position:absolute;
+						min-width: 30rpx;
+						min-height: 30rpx;
+						border-radius:54%;
+						background: #E80000;
+						font-size: 18rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #FFFFFF;
+						text-align: center;
+						line-height: 30rpx;
+						margin-left: 6rpx;
+						padding:2rpx;
+						box-sizing: border-box;
+					}
+					&.on{
+						color:#0183FA;
+					}
+				}
+				.tabTitle_across{
+					width: 50rpx;
+					height: 4rpx;
+					background: #0183FA;
+					border-radius: 2rpx;
+					margin-left 162rpx;
+					display none;
+					&.on{
+						display block;
+					}
+				}
+		
+			}
+			.tabTitle_li:nth-of-type(1)::after{
+				content: '';
+				position: absolute;
+				top: 0rpx;
+				right:  0rpx;
+				width: 1rpx;
+				height: 50rpx;
+				background: #E0E0E0;
+			}
+		}
+		.tabTitle_tow{
+			width:100%;
+			height: 100rpx;
+			background: #fff;
+			display flex;
+			justify-content: flex-start;
+			align-items: center;
+			border-bottom: 1rpx solid #E0E0E0;
+			.tabTitle_tow_li{
+				position: relative;
+				width:152rpx;
+				text-align center;
+				.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: 50rpx;
+					display none;
+					&.on{
+						display block;
+					}
+				}
+		
+			}
+		}
+		.lab_title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			padding: 20rpx 30rpx;
+			box-sizing: border-box;
+			display: flex;
+			justify-content: flex-start;
+			
+			.lab_title_l{
+				width: 250rpx;
+				height: 60rpx;
+				margin-right: 20rpx;
+				.lab_title_l_n{
+					width: 250rpx;
+					height: 60rpx;
+					border-radius: 10rpx;
+					border: 1rpx solid #E0E0E0;
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					>view{
+						flex:1;
+						line-height:60rpx;
+						margin-left:20rpx;
+						color: #999999;
+						font-size:28rpx;
+						white-space: nowrap;
+						overflow: hidden;
+						text-overflow: ellipsis;
+					}
+					>img{
+						width: 14rpx;
+						height: 8rpx;
+						margin-right: 30rpx;
+					}
+				}
+			}
+			.lab_title_r{
+				width: 420rpx;
+				height: 60rpx;
+				position:relative;
+				border-radius: 10rpx;
+				border: 1rpx solid #E0E0E0;
+				.lab_title_r_btn{
+					width: 60rpx;
+					height: 60rpx
+					position: absolute;
+					top: 0rpx;
+					left:0rpx;
+					z-index: 100;
+					>img{
+						width: 20rpx;
+						height: 20rpx;
+						position: absolute;
+						top: 20rpx;
+						left: 24rpx;
+					}
+				}
+				>input{
+					width: 274rpx;
+					height: 60rpx;
+					position: absolute;
+					top: 0rpx;
+					left: 60rpx;
+				}
+				.clear{
+					width: 60rpx;
+					height: 60rpx;
+					position: absolute;
+					top: 0rpx;
+					right:20rpx;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #0183FA;
+					line-height: 60rpx;
+				}
+			}
+		}
+		
+	}
+	.list_three{
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		.list_three_li{
+			position: relative;
+			width: 690rpx;
+			height: 320rpx;
+			background: #fff;
+			border-radius: 10rpx;
+			overflow: hidden;
+			margin-bottom: 20rpx;
+			.list_three_li_t{
+				width: 100%;
+				position: absolute;
+				left: 0;
+				top: 0;
+				.list_three_li_t_l{
+					>img{
+						width: 70rpx;
+						height: 70rpx;
+					}
+					>text{
+						position: absolute;
+						left: -15rpx;
+						top: 76rpx;
+						display: inline-block;
+						width: 30rpx;
+						height: 30rpx;
+						background: #F5F5F5;
+						border-radius: 15rpx;
+					}
+				}
+				.list_three_li_t_c{
+					width: 630rpx;
+					height: 110rpx;
+					position: absolute;
+					left: 30rpx;
+					top: 0;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 110rpx;
+					border-bottom: 1rpx dashed #D8D8D8;
+					overflow: hidden;
+					text-overflow:ellipsis;
+					white-space: nowrap;
+					padding-right: 60rpx;
+					box-sizing: border-box;
+				}
+				.list_three_li_t_c2{
+					position: absolute;
+					right: 20rpx;
+					top: 38rpx;
+					width: 120rpx;
+					height: 40rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #FF5757;
+					line-height: 40rpx;
+					border: 1rpx solid #FF5757;
+					border-radius: 6rpx;
+					text-align: center;
+				}
+				.list_three_li_t_r{
+					position: absolute;
+					right:-15rpx;
+					top: 76rpx;
+					width: 30rpx;
+					height: 30rpx;
+					background:#F5F5F5;
+					border-radius: 15rpx;
+				}
+			}
+			.list_three_li_m{
+				position: absolute;
+				top: 110rpx;
+				left: 0;
+				width: 690rpx;
+				height: 158rpx;
+				padding-left: 30rpx;
+				box-sizing: border-box;
+				.list_three_li_m_t{
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #666666;
+					line-height: 40rpx;
+					margin-top:22rpx;
+					overflow: hidden;
+					text-overflow:ellipsis;
+					white-space: nowrap;
+				}
+				.list_three_li_m_b{
+					margin-top:26rpx;
+					>text:nth-of-type(1){
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						line-height: 40rpx;
+						border-radius: 6rpx;
+						padding: 0 20rpx;
+						margin-right: 14rpx;
+					}
+					>text:nth-of-type(2){
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #0183FA;
+						line-height: 40rpx;
+						padding: 0 8rpx;
+						border-radius: 6rpx;
+						background: rgba(1,131,250,0.1);
+						margin-right: 24rpx;
+					}
+					>text:nth-of-type(3){
+						display: inline-block;
+						width: 290rpx;
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 26rpx;
+						overflow: hidden;
+						text-overflow:ellipsis;
+						white-space: nowrap;
+						
+					}
+				}
+			}
+			.list_three_li_b{
+				height: 60rpx;
+				width: 100%;
+				position: absolute;
+				top: 258rpx;
+				left: 0;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 60rpx;
+				padding-left: 28rpx;
+				box-sizing: border-box;
+			}
+			
+		}
+	}
+	
+}
+</style>

Разлика између датотеке није приказан због своје велике величине
+ 1263 - 0
pages_safetyExamine/examineManage/examineAdd.vue


+ 935 - 0
pages_safetyExamine/examineManage/examineAddTow.vue

@@ -0,0 +1,935 @@
+<!-- 开始检查 -->
+<template>
+    <view id="startChecking">
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+			<viwe class="list">
+				<view class="title">不符合项</view>
+				<view class="check-for-big-box" v-for="(item,index) in form.checkHazardDtoList" :key="index">
+					<view class="grade">
+						<view class="grade_l">隐患等级:</view>
+						<picker @change="gradeChange(item,$event)" :value="gradeIndex" :range="gradeArray" class="scope_r">
+							<view class="grade_r">
+								<view>{{item.hazardLevel==2?'一般隐患':(item.hazardLevel==1?'重大隐患':(item.hazardLevel==3?'管理问题':''))}}</view>
+								<img src="@/pages_safetyExamine/images/icon_06.png">
+							</view>
+						</picker>
+					</view>
+					<view class="project" v-if="checkOptionList.length>0">
+						<view class="project_l">检查项目:</view>
+						<uni-data-picker :ellipsis="false" :localdata="checkOptionList[0]" :map="{text:'name',value:'id'}"
+						popup-title="请选择所属目录" @change="(e)=>onchange(e,index)" @nodeclick="onnodeclick()"
+						ref="uniDataPicker" :addType="true" :addIndex="index">
+							<view  class="project_r">{{item.hazardCheckName?item.hazardCheckName:'请选择检查项'}}</view>
+						</uni-data-picker>
+					</view>
+					<view class="point">
+						<view class="point_l">检查要点:</view>
+						<textarea class="point_r" type="text" v-model="item.hazardCheckPoint" maxlength="50" placeholder="未查到此项检查要点,可在此输入添加" placeholder-style="font-size:28rpx;color:#999;"></textarea>
+					</view>
+					<view class="check-for-input-max-box">
+						<view class="left-title-p">隐患描述:</view>
+						<textarea type="text" v-model="item.hazardDescribe" maxlength="50" placeholder="请输入隐患描述" placeholder-style="font-size:28rpx;color:#999;"></textarea>
+					</view>
+					<view class="check-for-img-max-box">
+						<view class="left-title-p">隐患照片(最多上传5张):</view>
+						<view class="right-img-box">
+							<view class="img-box" v-for="(imgItem,imgIndex) in item.uploadDtoList" :key="imgIndex">
+								<img class="img-data" :src="configURL+imgItem.fileUrl">
+								<img class="position-img" src="@/pages_manage/images/icon_ssp_closure.png" @click="delImg(index,imgIndex)">
+							</view>
+							<img class="add-button" src="@/pages_manage/images/icon_07.png" @click="selectImage(item)" v-if="item.uploadDtoList.length<5">
+						</view>
+					</view>
+				   <view class="voice">
+					   <view class="voice_t">
+						   <view class="voice_t_l">语音备注:</view>
+						   <img class="voice_t_r" src="@/pages_safetyExamine/images/icon_ksjc_yysr.png" @longpress.stop="recordButton(item,$event)" @touchmove.stop="cancelButton"  @touchend.stop="sendButton(item,$event)">
+					   </view>
+					   <view class="voice_b" v-for="(voiceItem,voiceIndex) in item.voiceRemark" :key="voiceIndex">
+						   <view class="voice_b_l" @tap="voicePlay(voiceItem.url)"><img class="add-button" src="@/pages_manage/images/icon_yyt.png"/>{{voiceItem.times}}″</view>
+						   <img class="voice_b_r" src="@/pages_manage/images/Version2.3/icon_sczl_sc.png" @tap="voiceDele(index,voiceIndex)"/>
+					   </view>
+				   </view>
+					<view class="check-for-big-box-position-img-box" v-if="form.checkHazardDtoList.length>1" @click="delDetailsList(index)">
+						<img src="@/pages_manage/images/icon_ssp_closure.png">
+					</view>
+				</view>
+				<view class="add-for-item-p" @click="addDanger()">+ 新增隐患项</view>      
+			</viwe>
+		</scroll-view>
+		<view class="bottom_btn">
+			<view class="bottom_btn_li"  @click="goMinButton(index)" v-for="(item,index) in  bottomBtnList" :key="index">{{item}}</view>
+		</view>  
+	</view>
+</template>
+
+<script>
+	const myaudio  = uni.createInnerAudioContext();
+    import { config } from '@/api/request/config.js'
+    import {checkOptionListNew,treeDepselect,checkManageUpdate,checkManageAdd} from '@/api/index.js'
+    export default {
+        name: "startChecking",
+        data() {
+            return {
+
+				configURL:config.base_url,
+				id:"",
+                //页面子状态
+                minPageType:1,
+				//临时存储隐患信息ID
+				hiddenDangerIdList:[],
+				//数据
+				form:{
+					id:'',
+					checkPlanId:'',
+					manageStatus:'',//保存1  提交2
+					subIds:'',//实验室
+					subjectName:'',
+					title:'',//计划标题
+					deptId:'',//学院
+					collegeName:'',
+					buildId:'',//楼栋
+					buildName:'',
+					checkType:'',// 检查类型(1校院巡查 2实验室自查)  
+					checkResult:'1',// 检查结果 0不符合 1符合 
+					rectifyDeadline:'',//整改期限
+					rectifyNotice:'1',//整改通知(1整改告知书 2整改通知书)
+					roomNumber:'',//房间号
+					checkHazardDtoList:[
+						{
+							voiceRemark:[],//语音备忘存储
+							hazardLevel:2,//隐患等级
+							hazardCheckCode:'', //检查项目code序号 
+							hazardCheckName:'', //检查项目名称 
+							hazardCheckPro:'', //最后一级的id  
+							hazardCheckPoint:'',// 检查要点  
+							hazardDescribe:'', //隐患描述 
+							uploadDtoList:[],//隐患照片
+						}
+					],
+				},
+                inspectionUnit:"",
+                inspectionUnitArray:[],
+				inspectionUnitArrayData:[],
+                //搜索回调列表
+                searchList:[],
+				searchNullType:true,
+				//检查项
+				checkOptionList:[],
+				//新增检查项
+				openIndex:"",
+				open:false,
+				jcxSstkMs:[],
+				jcxSstkNum:'',
+				//临时数据组
+				temporaryIdList:[],
+				//添加项 目录
+				uniPicker:"请选择所属目录",
+				//滑动记录
+				startPoint:{},
+				liveType:false,
+				sendLock: true, //发送锁,当为true时上锁,false时解锁发送
+				recorderManager : wx.getRecorderManager(),
+				temporaryData:[],
+				gradeIndex :0,
+				gradeArray:['一般隐患','重大隐患','管理问题'],
+				bottomBtnList:['上一步','保存','提交'],
+				currentDate:'',//当前时间
+				
+            }
+        },
+        onLoad(option) {
+			//获取当前日期
+			this.currentDate=this.getNowFormatDate()
+			if(option.form){
+				this.form=JSON.parse(decodeURIComponent(option.form)); 
+			}
+        },
+        onShow() {
+			this.getCheckOptionList();
+        },
+        methods: {
+			//获取当前日期函数
+			getNowFormatDate() {
+			  let date = new Date(),
+			    year = date.getFullYear(), //获取完整的年份(4位)
+			    month = date.getMonth() + 1, //获取当前月份(0-11,0代表1月)
+			    strDate = date.getDate() // 获取当前日(1-31)
+			  if (month < 10) month = `0${month}` // 如果月份是个位数,在前面补0
+			  if (strDate < 10) strDate = `0${strDate}` // 如果日是个位数,在前面补0
+			 
+			  return `${year}-${month}-${strDate}`
+			},
+			//隐患等级
+			gradeChange(item,e){
+				console.log(item)
+				console.log(e.target.value)
+				if(e.target.value==0){
+					item.hazardLevel=2
+				}else if(e.target.value==1){
+					item.hazardLevel=1
+				}else if(e.target.value==2){
+					item.hazardLevel=3
+				}
+				
+			},
+			//语音备忘播放
+			async voicePlay(item){
+				console.log(myaudio.src)
+				 myaudio.src = config.base_url+item;
+				 myaudio.play();
+			},
+			//语音备忘删除
+			async voiceDele(index,voiceIndex){
+				let self = this;
+				uni.showModal({
+				  title: '',
+				  cancelColor:'#999999',
+				  confirmColor:'#FF6E6E',
+				  content: '确定删除此语音吗?',
+				  success (res) {
+				    if (res.confirm) {
+				      console.log('用户点击确定')
+					  self.form.checkHazardDtoList[index].voiceRemark.splice(voiceIndex,1);
+					  self.$forceUpdate();
+				    } else if (res.cancel) {
+				      console.log('用户点击取消')
+
+				    }
+				  }
+				})
+
+			},
+			//录制
+			recordButton(item,e){
+				console.log("按下")
+				let self = this;
+				if(item.voiceRemark.length>=5){
+					uni.showToast({
+						title: '语音备忘最多只能上传5条',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				this.liveType=true;
+				console.log('录制',e)
+				this.startPoint = e.touches[0];//记录长按时开始点信息,后面用于计算上划取消时手指滑动的距离。
+				const options = {
+					duration: 60000,
+					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;
+
+			    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(item,e){
+				console.log("松开")
+				let self = this;
+
+			    this.liveType=false;
+				console.log('发送',e)
+				wx.hideToast();//结束录音、隐藏Toast提示框
+				this.recorderManager.stop();//结束录音
+				this.recorderManager.onStop((res) => {
+
+					if(!this.sendLock){
+
+						this.uploadVoice(item,res.duration,res.tempFilePath);
+					}
+					console.log('停止录音', res.tempFilePath)
+					console.log("sendLock",this.sendLock);
+				})
+			},
+			//上传MP3
+			async uploadVoice(item,times,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)
+							console.log(item)
+							let seconds = Math.round((parseInt(times) % (1000 * 60)) / 1000);
+							item.voiceRemark.push({'times':seconds,'url':res.data.url})
+							console.log(JSON.stringify(self.voice))
+							//self.textParseUrlIps(res.data.url);
+							// self.newData.imgList.push(res.data.url);
+						}else{
+							uni.showToast({
+								title: res.msg,
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+			        },
+			        fail: err => {
+						uni.hideLoading()
+					},
+			        complete: () => {
+			        }
+			    });
+			},
+			
+			
+            /**************************检查项***************************/
+			
+			//获取检查项
+			async getCheckOptionList() {
+				const {data} = await checkOptionListNew();
+				if(data.code == 200){
+					let list = this.getTreeData(data.data);
+					//this.checkOptionList.push(JSON.parse(JSON.stringify(list)));
+					this.checkOptionList.push(JSON.parse(JSON.stringify(list)));
+					console.log(this.checkOptionList)
+				}
+			},
+			getTreeData(data){
+			  for(var i=0;i<data.length>0;i++){
+				if(data[i].children == null||data[i].children.length<=0){
+				  // children若为空数组,则将children设为undefined
+				  data[i].children = undefined;
+				}else {
+				  // children若不为空数组,则继续 递归调用 本方法
+				  this.getTreeData(data[i].children);
+				}
+			  }
+			  return data;
+			},
+			/**************************搜索项***************************/
+			//搜索特定检查项
+			async searchClick(text,index){
+				console.log("搜索text",text);
+				console.log("搜索index",index);
+				const {data} = await checkOptionListNew({'searchValue':text});
+				if(data.code == 200){
+					if(data.data[0]){
+						// let list = JSON.parse(JSON.stringify(this.checkOptionList));
+						// list[index] = this.getTreeData(data.data);
+						// this.$set(this,'checkOptionList',JSON.parse(JSON.stringify(list)))
+						
+						
+						let list = [];
+						list[0]=this.getTreeData(data.data)
+						this.$set(this,'checkOptionList',JSON.parse(JSON.stringify(list)))
+						
+						console.log(this.checkOptionList)
+						
+						this.$refs.uniDataPicker[index].show();
+					}else{
+						uni.showToast({
+							title: '未找到相关检查项',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+					}
+				}
+			},
+			//重置检查项
+			async resetClick(index){
+				console.log("重置index",index);
+				const {data} = await checkOptionListNew();
+				if(data.code == 200){
+					let list = [];
+					list[0] = this.getTreeData(data.data);
+					this.$set(this,'checkOptionList',JSON.parse(JSON.stringify(list)))
+					this.$refs.uniDataPicker[index].show();
+				}
+			},
+			
+			//选中固有检查项(新)
+			onchange(e,index) {
+				let self = this;
+				//hazardCheckCode:'', //检查项目code序号
+				//hazardCheckName:'', //检查项目名称 
+				//hazardCheckPro:'', //最后一级的id 
+				 
+				if(this.getTreeName(this.checkOptionList[0],e.detail.value[e.detail.value.length-1].value).level==3){
+					let jcxSstkNum=this.getTreeName(this.checkOptionList[0],e.detail.value[e.detail.value.length-1].value).code
+					this.$set(this.form.checkHazardDtoList[index],'hazardCheckPro',e.detail.value[e.detail.value.length-1].value);
+					this.$set(this.form.checkHazardDtoList[index],'hazardCheckCode',jcxSstkNum);
+					this.$set(this.form.checkHazardDtoList[index],'hazardCheckName',e.detail.value[e.detail.value.length-1].text);
+					this.$set(this.form.checkHazardDtoList[index],'hazardCheckPoint',this.getTreeName(this.checkOptionList[0],e.detail.value[e.detail.value.length-1].value).mainPoint);
+					
+				}else{
+					uni.showToast({
+						title: '暂无数据',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}
+			},
+			  //根据id查找元素
+			getTreeName(list,id){
+			   let _this=this
+			  for (let i = 0; i < list.length; i++) {
+				let a=list[i]
+				if(a.id===id){
+				  return a
+				}else{
+				  if(a.children && a.children.length>0){
+					let res=_this.getTreeName(a.children,id)
+					if(res){
+					  return res
+					}
+				  }
+				}
+			  }
+			},
+			onnodeclick(node) {
+				
+			},
+            // 图片上传
+            selectImage(item) {
+                let self = this;
+                if(item.uploadDtoList.length>4){
+                    uni.showToast({
+                        title: '最多上传5张图片',
+                        icon:"none",
+                        mask:true,
+                        duration: 2000
+                    });
+                    return
+                }
+                wx.chooseImage({
+                    count: 1,
+                    sizeType: ["original", "compressed"],
+                    sourceType: ["album", "camera"],
+                    success: function(res) {
+                        let tempFilePaths = res.tempFilePaths[0];
+                        self.uploadImg(tempFilePaths,item);
+                    }
+                });
+            },
+            async uploadImg(tempFilePaths,item){
+                var self = this;
+                uni.showLoading({
+                    title: '上传中',
+                    mask: true
+                });
+                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){
+							item.uploadDtoList.push({'fileUrl':res.data.url,'fileName':res.data.name});
+							console.log(res.data.url)
+						}else{
+							uni.showToast({
+								title: res.msg,
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+                    },
+                    fail: err => {},
+                    complete: () => {
+                        uni.hideLoading()
+                    }
+                });
+            },
+            //删除图片
+            delImg(index,minIndex){
+                this.form.checkHazardDtoList[index].uploadDtoList.splice(minIndex,1);
+				this.$forceUpdate();
+			},
+            //添加隐患
+            addDanger(){
+				if(this.form.checkHazardDtoList.length>19){
+					uni.showToast({
+						title: '最多添加20个隐患',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				let obj = {
+					voiceRemark:[],//语音备忘存储
+					hazardLevel:2,//隐患等级
+					hazardCheckCode:'', //检查项目code序号 
+					hazardCheckName:'', //检查项目名称 
+					hazardCheckPro:'', //最后一级的id  
+					hazardCheckPoint:'',// 检查要点  
+					hazardDescribe:'', //隐患描述 
+					uploadDtoList:[],//隐患照片
+				}
+				this.form.checkHazardDtoList.push(obj);
+				this.getCheckOptionList();
+				this.$forceUpdate();
+            },
+			//删除隐患
+			delDetailsList(index){
+				this.hiddenDangerIdList.push(this.form.checkHazardDtoList[index].id)
+				this.form.checkHazardDtoList.splice(index,1);
+				this.$forceUpdate();
+			},
+            //子页面切换
+            goMinButton(index){
+				let self = this;
+				if(index == 0){
+					uni.redirectTo({
+					    url: '/pages_safetyExamine/examineManage/examineAdd?form='+encodeURIComponent(JSON.stringify(this.form))
+					});
+				}else if(index == 1 || index == 2){
+					this.form.manageStatus=index;//1保存 2提交
+					for(let i=0;i<self.form.checkHazardDtoList.length;i++){
+						let num = i+1;
+						if(!self.form.checkHazardDtoList[i].hazardCheckName){
+							uni.showToast({
+								title: '第'+num+'未选择隐患项',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+							return
+						}else if(!self.form.checkHazardDtoList[i].hazardDescribe && self.form.checkHazardDtoList[i].voiceRemark.length<=0){
+							uni.showToast({
+								title: '请输入第'+num+'项隐患描述!',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+							return
+						}else if(self.form.checkHazardDtoList[i].uploadDtoList.length<=0){
+							uni.showToast({
+								title: '请输入第'+num+'项隐患图片!',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+							return
+						}
+					}
+					
+					this.submitForm();
+				}
+            },
+			//提交
+			async submitForm(){
+				let self = this;
+				let obj=JSON.parse(JSON.stringify(self.form));
+				//语音备注JSON对象转字符串
+				for(let i=0;i<obj.checkHazardDtoList.length;i++){
+					if(obj.checkHazardDtoList[i].voiceRemark){
+						obj.checkHazardDtoList[i].voiceRemark=JSON.stringify(obj.checkHazardDtoList[i].voiceRemark)
+					}
+				}
+				if(self.form.id){
+					const {data} = await checkManageUpdate(obj);
+					if(data.code == 200){
+						uni.showToast({
+							title: '提交成功',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						uni.redirectTo({
+						    url: '/pages_safetyExamine/examineManage/examineList?pageType='+this.form.checkType
+						});
+					}
+				}else{
+					const {data} = await checkManageAdd(obj);
+					if(data.code == 200){
+						uni.showToast({
+							title: '提交成功',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						uni.redirectTo({
+						    url: '/pages_safetyExamine/examineManage/examineList?pageType='+this.form.checkType
+						});
+					}
+				}
+			  },
+			
+            
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #startChecking{
+		height:100%;
+		.info-max-box{
+			flex: 1;
+			overflow: scroll;
+			padding: 20rpx 0rpx 128rpx;
+			box-sizing: border-box;
+		}
+		.list{
+			.title{
+				width: 690rpx;
+				height: 100rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx;
+				margin: 20rpx 30rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 100rpx;
+				padding-left: 24rpx;
+				box-sizing: border-box;
+			}
+			.check-for-big-box{
+				width 690rpx;
+				//padding-top:30rpx;
+				margin:0 30rpx 20rpx;
+				background #fff
+				border-radius:20rpx;
+				overflow hidden
+				position relative;
+				padding:30rpx;
+				box-sizing border-box;
+				/* 隐患等级 */
+				.grade{
+					display: flex;
+					justify-content: flex-start;
+					.grade_l{
+						width: 158rpx;
+						text-align: left;
+						font-size: 30rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 80rpx;
+					}
+					.grade_r{
+						width: 480rpx;
+						height: 80rpx;
+						border-radius: 10rpx;
+						border: 1rpx solid #E0E0E0;
+						display: flex;
+						justify-content: flex-start;
+						align-items: center;
+						padding-left: 20rpx;
+						box-sizing: border-box;
+						>view{
+							flex:1;
+							line-height:80rpx;
+							font-size: 30rpx;
+							font-family: PingFang SC-Medium, PingFang SC;
+							font-weight: 400;
+							color: #333333;
+							line-height: 80rpx;
+						}
+						>img{
+							width: 14rpx;
+							height: 8rpx;
+							margin-right: 30rpx;
+						}
+					}
+				}
+				/* 检查项目 */
+				.project{
+					.project_l{
+						width: 158rpx;
+						text-align: left;
+						font-size: 30rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 80rpx;
+						margin-top: 24rpx;
+					}
+					.project_r{
+						width: 630rpx;
+						min-height: 80rpx;
+						border-radius: 10rpx;
+						border: 1rpx solid #E0E0E0;
+						display: flex;
+						justify-content: flex-start;
+						align-items: center;
+						padding-left: 20rpx;
+						box-sizing: border-box;
+					}
+				}
+				/* 检查要点 */
+				.point{
+					.point_l{
+						width: 158rpx;
+						text-align: left;
+						font-size: 30rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 80rpx;
+					}
+					.point_r{
+						width: 630rpx;
+						height: 158rpx;
+						border-radius: 20rpx 20rpx 20rpx 20rpx;
+						opacity: 1;
+						border: 1rpx solid #E0E0E0;
+						padding: 20rpx 14rpx;
+						box-sizing: border-box;
+						font-size: 30rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 34rpx;
+					}
+				}
+				/* 隐患描述 */
+				.check-for-input-max-box{
+					.left-title-p{
+						width:150rpx;
+						line-height:80rpx;
+						text-align right
+						font-size:30rpx;
+					}
+					textarea{
+						width: 630rpx;
+						height: 158rpx;
+						border-radius: 20rpx 20rpx 20rpx 20rpx;
+						border: 1rpx solid #E0E0E0;
+						padding: 20rpx 14rpx;
+						box-sizing: border-box;
+						font-size: 30rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 34rpx;
+					}
+				}
+				/* 隐患照片 */
+				.check-for-img-max-box{
+					.left-title-p{
+						width: 100%;
+						text-align: left;
+						font-size: 30rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 80rpx;
+					}
+					.right-img-box{
+						.img-box{
+							display inline-block;
+							height:200rpx;
+							width:200rpx;
+							position relative
+							margin:0 14rpx 20rpx 0;
+							border-radius 10rpx;
+							overflow hidden;
+							.img-data{
+								height:200rpx;
+								width:200rpx;
+							}
+							.position-img{
+								position absolute
+								right:0;
+								top:0;
+								width:36rpx;
+								height:36rpx;
+							}
+						}
+						.img-box:nth-of-type(3n+3){
+							margin-right: 0rpx;
+						}
+						.add-button{
+							 margin:0 20rpx 20rpx 0;
+							border-radius 10rpx;
+							overflow hidden;
+							display inline-block
+							height:200rpx;
+							width:200rpx;
+						}
+					}
+				}
+				
+				/* 语音备注 */
+				.voice{
+					.voice_t{
+						height: 80rpx;
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						.voice_t_l{
+							font-size: 30rpx;
+							font-family: PingFang SC-Medium, PingFang SC;
+							font-weight: 400;
+							color: #333333;
+							line-height: 80rpx;
+						}
+						.voice_t_r{
+							width: 170rpx;
+							height: 50rpx;
+						}
+					}
+					.voice_b{
+						display flex;
+						justify-content flex-start;
+						align-items center;
+						margin-bottom :30rpx;
+						.voice_b_l{
+							width: 400rpx;
+							height: 40rpx;
+							background:rgba(88,175,255,0.3);
+							border-radius: 10rpx;
+							display flex;
+							justify-content flex-start;
+							align-items center;
+							>img{
+								width: 18rpx;
+								height: 24rpx;
+								margin-left:16rpx;
+								margin-right :20rpx;
+							}
+						}
+						.voice_b_r{
+							width: 28rpx;
+							height: 28rpx;
+							margin-left:20rpx;
+						}
+					}
+				}
+				.check-for-button-max-box{
+					display flex
+					margin-top:30rpx;
+					margin-bottom:20rpx;
+					.left-title-p{
+						width:150rpx;
+						line-height:88rpx;
+						text-align right
+						font-size:30rpx;
+					}
+					.button-text-p{
+						border:1rpx solid #E0E0E0;
+						width:440rpx;
+						height:80rpx;
+						border-radius:10rpx;
+						line-height :80rpx;
+						color: #A2A2A2
+						padding:0 20rpx;
+						font-size:28rpx;
+						display:block;
+						overflow:hidden;
+						text-overflow:ellipsis;
+						white-space:nowrap;
+					}
+				}
+				.check-for-big-box-position-img-box{
+					position absolute
+					top:0;
+					right:0;
+					width:60rpx;
+					height:60rpx;
+					img{
+						width:36rpx;
+						height:36rpx;
+						margin:12rpx;
+					}
+				}
+			}
+			/* 添加隐患项 */
+			.add-for-item-p{
+				width:690rpx;
+				height:100rpx;	
+				border:4rpx dashed #0183FA;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #0183FA;
+				line-height: 100rpx;
+				text-align center;
+				border-radius:20rpx;
+				margin:40rpx auto 100rpx;
+		    }
+		}
+		.bottom_btn{
+			width: 690rpx;
+			height: 90rpx;
+			background: #0183FA;
+			border-radius: 10rpx 10rpx 10rpx 10rpx;
+			display: flex;
+			justify-content: flex-start;
+			position: fixed;
+			left: 30rpx;
+			bottom: 20rpx;
+			.bottom_btn_li{
+				flex: 1;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 90rpx;
+				text-align: center;
+				position: relative;
+			}
+			.bottom_btn_li::after{
+				content:'';
+				position: absolute;
+				top: 20rpx;
+				right:0rpx;
+				width: 1rpx;
+				height: 60rpx;
+				background: #D8D8D8;
+			}
+			.bottom_btn_li:nth-of-type(3)::after{
+				display: none;
+			}
+		}
+	}
+
+</style>

+ 716 - 0
pages_safetyExamine/examineManage/examineDetail.vue

@@ -0,0 +1,716 @@
+<!-- 安全检查-检查详情 -->
+<template>
+  <view class="examine">
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view class="basics">
+			<view class="basics_li">
+				<text>学院:</text>
+				<text>{{infoData.collegeName}}</text>
+			</view>
+			<view class="basics_li">
+				<text>实验室:</text>
+				<text>{{infoData.subjectName}}-{{infoData.roomNumber}}</text>	
+			</view>
+			<view class="basics_li">
+				<text>楼栋:</text>
+				<text>{{infoData.buildName?infoData.buildName:'-'}}</text>
+			</view>
+			<view class="basics_li">
+				<text>检查类型:</text>
+				<text>{{infoData.checkType==1?'校园巡查':(infoData.checkType==2?'实验室自查':'')}}</text>
+			</view>
+			<view class="basics_li">
+				<text>检查范围:</text>
+				<text>{{infoData.checkRange==1?'全校':(infoData.checkRange==2?'学院':'实验室')}}</text>
+			</view>
+			<view class="basics_li" >
+				<text>计划标题:</text>
+				<text>{{infoData.title}}</text>
+			</view>
+			<view class="demand" style="border:none;">
+				<text>检查要求:</text>
+				<text>{{infoData.checkDemand?infoData.checkDemand:''}}</text>
+			</view>
+		</view>
+		<view class="attachment" v-if="infoData.isAttachment==1">
+			<view class="attachment_t">
+				<text>材料附件</text>
+				<text>点击文件标题查看</text>
+			</view>
+			<view class="attachment_li" v-for="item in attachmentList">
+				<img src="@/pages_safetyExamine/images/icon_djc_wj.png"/>
+				<text  @click="attachmentPreview(item)">{{item.fileName}}</text>
+				<!-- <img class="attachment_li_del" src="@/images/Version3.3.3/icon_fjgk_sc.png"/> -->
+			</view>
+		</view>
+		<view class="basics" v-if="manageStatus==2">
+			<view class="basics_li">
+				<text>检查结果:</text>
+				<text>{{infoData.checkResult==0?'不符合':(infoData.checkResult==1?'符合':'')}}</text>
+			</view>
+			<view class="basics_li" v-if="infoData.checkResult==0">
+				<text>整改期限:</text>
+				<text>{{infoData.rectifyDeadline}}</text>	
+			</view>	
+			<view class="basics_li" v-if="infoData.checkResult==0">
+				<text>整改通知:</text>
+				<text style="color: #0183FA;" @click="rectifyInform">{{infoData.rectifyNotice == 1?'整改告知书':(infoData.rectifyNotice == 2?'整改通知书':'')}}</text>
+			</view>
+			<view class="basics_li">
+				<text>检查者:</text>
+				<text>{{infoData.checkUser}}</text>
+			</view>
+			<view class="basics_li" style="border:none;">
+				<text>检查时间:</text>
+				<text>{{infoData.checkTime}}</text>
+			</view>
+		</view>
+		<view class="inconformity" @click="inconformityFun()" v-if="manageStatus==2 && infoData.checkResult==0">不符合项<img v-if="inconformityStatus" src="@/pages_safetyExamine/images/icon_bfhx_xq.png"/><img v-if="!inconformityStatus" src="@/pages_safetyExamine/images/icon_bfhx_sq.png"/></view>
+		<view v-for="(item,index) in infoData.checkHazardDtoList" v-if="manageStatus==2 && infoData.checkResult==0">
+			<view class="danger">
+				<view class="sort">{{index+1}}</view>
+				<view class="grade" :style="item.switch?'border-bottom: 1rpx solid #D8D8D8;':'border:none;'">
+					<text>第{{index+1}}项隐患</text>
+					<text style="color: #0183FA;" @click="dangerItem(item)">{{item.rectifyStatus==1?'已完成':(item.rectifyStatus==2?'待整改':(item.rectifyStatus==3?'待复核':(item.rectifyStatus==4?'暂无法整改':'')))}} >></text>
+				</view>
+				<view v-if="item.switch">
+					<view class="grade">
+						<text>隐患等级:</text>
+						<text>{{item.hazardLevel==2?'一般隐患':(item.hazardLevel==1?'重大隐患':(item.hazardLevel==3?'管理问题':''))}}</text>
+					</view>
+					<view class="project">
+						<view class="project_t">检查项目:</view>
+						<view class="project_b">{{item.hazardCheckProStr}}</view>
+						<view class="project_b2" v-if="item.hazardCheckCount>0">此检查项在当前实验室累计出现{{item.hazardCheckCount}}次隐患</view>
+					</view>
+					<view class="project">
+						<view class="project_t">检查要点:</view>
+						<view class="project_b">{{item.hazardCheckPoint}}</view>
+					</view>
+					<view class="project">
+						<view class="project_t">隐患描述:</view>
+						<view class="project_b">{{item.hazardDescribe}}</view>
+					</view>
+					<view class="picture">
+						<view class="picture_t">隐患照片</view>
+						<view class="picture_b" @click="lockImg(item.uploadDtoList)">
+							<img  :src="baseUrl+imgItem.fileUrl"   v-for="(imgItem,imgIndex) in item.uploadDtoList"/>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="pack_up" @click="switchFun(item)">{{item.switch?'收起':'展开'}}<img v-if="item.switch" src="@/pages_safetyExamine/images/icon_06_1.png"/><img v-if="!item.switch" src="@/pages_safetyExamine/images/icon_06.png"/></view>
+		</view>
+	</scroll-view>
+	<view class="report" @click="rectifyReport" v-if="manageStatus==2 && infoData.checkResult==0">整改报告</view>	
+	<view class="bottom_btn" v-if="manageStatus==0 && isSelfData==1" @click="handleClick('','startInspect')">开始检查</view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import {checkSign,queryDeptSignByUserId,findCheckManage,findByPlanIdAttachment} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		baseUrl:config.base_url,
+		manageStatus:0,//0 待检查 1 检查中 2已检查
+		pageType:0,
+		inconformityStatus:false,
+		infoData:{},
+		isSelfData:'',
+		attachmentList:[],
+	}
+  },
+  onLoad(option) {
+	 if(option.id){
+	 	this.id=option.id
+	 	this.findCheckManage()
+	 }
+	 if(option.manageStatus){//检查状态
+		 this.manageStatus=option.manageStatus;
+	 }
+	 if(option.isSelfData){//0没有权限 1 有权限 
+	 		 this.isSelfData=option.isSelfData;
+	 }
+	 
+	 if(option.manageStatus==0 || option.manageStatus==1){
+		uni.setNavigationBarTitle({
+			title:'待检查'
+		})
+	 }else if(option.manageStatus==2){
+	 	uni.setNavigationBarTitle({
+	 		title:'已检查'
+	 	})
+	 }
+  },
+  onShow() {
+	  
+  },
+  mounted(){
+	  
+  },
+  methods: {
+		
+		//滚动事件
+		scrollGet(){
+			
+		},
+		//开展检查
+		handleClick(row,doType){
+			if(doType=='startInspect'){
+				uni.navigateTo({
+				    url: '/pages_safetyExamine/examineManage/examineAdd?id='+this.id
+				});
+			}
+		},
+		//根据计划id查询附件列表
+		async findByPlanIdAttachment(){
+			let _this = this;
+			const {data} = await findByPlanIdAttachment({checkPlanId:this.infoData.checkPlanId});
+			if(data.code == 200){
+				_this.attachmentList=data.data;
+			}
+		},
+		//详情
+		async findCheckManage(){
+			let _this = this;
+			const {data} = await findCheckManage({id:this.id});
+			if(data.code == 200){
+				
+				data.data.checkHazardDtoList.forEach(function(item){
+					item.switch=false;
+				})
+				this.infoData=data.data;
+				
+				if(data.data.isAttachment==1){//0没有附件 1有附件
+					this.findByPlanIdAttachment()
+				}
+				
+			}
+		},
+		//附件查看
+		attachmentPreview(item){
+			uni.showLoading({
+				title: '下载中'
+			});
+			wx.downloadFile({
+				url: config.base_url+item.fileUrl,
+				header: {
+					Authorization: uni.getStorageSync('token')
+				},
+				success: function (res) {
+					uni.hideLoading();
+					const filePath = res.tempFilePath
+					wx.openDocument({
+					  filePath: filePath,
+					  success: function (res) {
+						console.log('打开文档成功')
+					  }
+					})
+				},
+				fail: function (res){
+					uni.hideLoading();
+					uni.showToast({
+						title: '下载失败',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}
+			})
+		},
+		//查看图片
+		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) {},
+			})
+		},
+		//隐患项跳转详情
+		dangerItem(row){
+			uni.navigateTo({
+				 url: '/pages_safetyExamine/dangerManage/dangerDetail?item='+encodeURIComponent(JSON.stringify(row))
+			})
+		},
+		//隐患项收起展开
+	    inconformityFun(){
+			this.inconformityStatus=!this.inconformityStatus;
+			if(this.inconformityStatus){
+				this.infoData.checkHazardDtoList.forEach(function(item){
+					item.switch=true;
+				})
+			}else{
+				this.infoData.checkHazardDtoList.forEach(function(item){
+					item.switch=false;
+				})
+			}
+		},
+		//隐患小项收起展开
+		switchFun(item){
+			item.switch=!item.switch
+		},
+		//整改通知
+		rectifyInform(){//rectifyNotice 整改通知(1整改告知书 2整改通知书)
+			if(this.infoData.rectifyNotice==1){//1整改告知书
+				this.genReport(this.infoData.id)
+			}else if(this.infoData.rectifyNotice==2){//2整改通知书
+				this.genNotice(this.infoData.id)
+			}
+		},
+		//整改报告
+		rectifyReport(){
+			uni.showLoading({
+				title: '下载中'
+			});
+			wx.downloadFile({
+				url: config.base_url+'/zd-security/checkRectify/genReport/' + this.infoData.id,
+				header: {
+					Authorization: uni.getStorageSync('token')
+				},
+				success: function (res) {
+					const fileManager = wx.getFileSystemManager()
+					const filePath = wx.env.USER_DATA_PATH + '/(整改报告).docx'
+					fileManager.saveFile({
+						tempFilePath: res.tempFilePath,
+						filePath,
+						success: () => {
+							uni.hideLoading();
+							wx.openDocument({
+							filePath: filePath,
+							showMenu: true,
+							fileType: 'docx'
+							})
+						},
+						fail: function (res){
+							uni.hideLoading();
+							uni.showToast({
+								title: '下载失败',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+					})
+				},
+				fail: function (res){
+					uni.hideLoading();
+					uni.showToast({
+						title: '下载失败',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}
+			})
+		},
+		//整改通知书
+		genNotice(id){
+			uni.showLoading({
+				title: '下载中'
+			});
+			wx.downloadFile({
+				url: config.base_url+'/zd-security/checkManage/getRectifyAdviceNote/' + id,
+				header: {
+					Authorization: uni.getStorageSync('token')
+				},
+				success: function (res) {
+					const fileManager = wx.getFileSystemManager()
+					const filePath = wx.env.USER_DATA_PATH + '/(整改通知书).docx'
+					fileManager.saveFile({
+						tempFilePath: res.tempFilePath,
+						filePath,
+						success: () => {
+							uni.hideLoading();
+							wx.openDocument({
+							filePath: filePath,
+							showMenu: true,
+							fileType: 'docx'
+							})
+						},
+						fail: function (res){
+							uni.hideLoading();
+							uni.showToast({
+								title: '下载失败',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+					})
+				},
+				fail: function (res){
+					uni.hideLoading();
+					uni.showToast({
+						title: '下载失败',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}
+			})
+		},
+		//整改告知书
+		genReport(id){
+			uni.showLoading({
+				title: '下载中'
+			});
+			wx.downloadFile({
+				url: config.base_url+'/zd-security/checkManage/getRectifyNotification/' + id,
+				header: {
+					Authorization: uni.getStorageSync('token')
+				},
+				success: function (res) {
+					const fileManager = wx.getFileSystemManager()
+					const filePath = wx.env.USER_DATA_PATH + '/整改报告.docx'
+					fileManager.saveFile({
+						tempFilePath: res.tempFilePath,
+						filePath,
+						success: () => {
+							uni.hideLoading();
+							wx.openDocument({
+								filePath: filePath,
+								showMenu: true,
+								fileType: 'docx'
+							})
+						},
+						fail: function (res){
+							uni.hideLoading();
+							uni.showToast({
+								title: '下载失败',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+					})
+				},
+				fail: function (res){
+					uni.hideLoading();
+					uni.showToast({
+						title: '下载失败',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}
+			})
+		},
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		padding-bottom: 140rpx;
+	}
+	.basics{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		padding: 30rpx 30rpx 32rpx;
+		box-sizing: border-box;
+		margin: 20rpx 30rpx ;
+		.basics_li{
+			height: 80rpx;
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1rpx solid #D8D8D8;
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 80rpx;
+				width: 140rpx;
+			}
+			>text:nth-of-type(2){
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				text-align: right;
+				white-space: nowrap;
+			    overflow: hidden;
+			    text-overflow: ellipsis;
+			}
+		}
+		.demand{
+			>text{
+				display: block;
+			}
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 70rpx;
+				width: 140rpx;
+			}
+			>text:nth-of-type(2){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 40rpx;
+				text-align: left;
+			}
+		}
+	}
+	.attachment{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		margin: 20rpx 30rpx 0;
+		padding-bottom: 32rpx;
+		box-sizing: border-box;
+		.attachment_t{
+			border-bottom: 1rpx solid #D8D8D8;
+			>text:nth-of-type(1){
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 110rpx;
+				margin-left: 28rpx;
+			}
+			>text:nth-of-type(2){
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #999999;
+				line-height: 110rpx;
+				margin-left: 24rpx;
+			}
+		}
+		.attachment_li{
+			height: 40rpx;
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-top: 32rpx;
+			>img{
+				width: 30rpx;
+				height: 26rpx;
+				margin-right: 20rpx;
+				margin-left: 50rpx;
+			}
+			>text{
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #0183FA;
+				line-height: 40rpx;
+				white-space: nowrap;
+				overflow: hidden;
+				text-overflow: ellipsis;
+			}
+			.attachment_li_del{
+				width: 30rpx;
+				height: 30rpx;
+			}
+		}
+	}
+	.inconformity{
+		width: 690rpx;
+		height: 100rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx 20rpx 20rpx 20rpx;
+		margin: 20rpx 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #333333;
+		line-height: 100rpx;
+		text-align: center;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		>img{
+			width: 30rpx;
+			height: 26rpx;
+			margin-left: 20rpx;
+		}
+	}
+	.danger{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		padding: 15rpx 30rpx 15rpx;
+		box-sizing: border-box;
+		margin: 20rpx 30rpx ;
+		position: relative;
+		.sort{
+			width: 40rpx;
+			height: 40rpx;
+			background: #0183FA;
+			border-radius: 20rpx 0rpx 10rpx 0rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #FFFFFF;
+			line-height: 40rpx;
+			text-align: center;
+			position: absolute;
+			left: 0;
+			top: 0;
+		}
+		.danger_title{
+			font-size: 30rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #333333;
+			line-height:80rpx;
+			border-bottom: 1rpx solid #D8D8D8;
+		}
+		.grade{
+			height: 80rpx;
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1rpx solid #D8D8D8;
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 80rpx;
+				width: 140rpx;
+			}
+			>text:nth-of-type(2){
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				text-align: right;
+			}
+		}
+		.project{
+			.project_t{
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+			}
+			.project_b{
+				min-height: 158rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 40rpx;
+				padding: 20rpx 14rpx;
+				box-sizing: border-box;
+				background: #F5F5F5;
+				border-radius: 20rpx 20rpx 20rpx 20rpx;
+			}
+			.project_b2{
+				font-size: 26rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 26rpx;
+				margin-top: 14rpx;
+				text-align: right;
+			}
+		}
+		.picture{
+			.picture_t{
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+			}
+			.picture_b{
+				display: flex;
+				justify-content: flex-start;
+				flex-wrap: wrap;
+				>img{
+					width: 200rpx;
+					height: 200rpx;
+					border-radius: 10rpx 10rpx 10rpx 10rpx;
+					margin-right: 14rpx;
+					margin-bottom: 10rpx;
+				}
+				>img:nth-of-type(3n+3){
+					margin-right: 0rpx;
+				}
+			}
+		}
+	}
+	.pack_up{
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #666666;
+		line-height: 140rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		>img{
+			width: 14rpx;
+			height: 8rpx;
+			margin-left: 22rpx;
+		}
+	}
+	.report{
+		width: 153rpx;
+		height: 50rpx;
+		background: #0183FA;
+		border-radius: 25rpx 0rpx 0rpx 25rpx;
+		font-size: 26rpx;
+		font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 50rpx;
+		position: fixed;
+		top: 180rpx;
+		right: 0;
+		text-align: center;
+	}
+	.bottom_btn{
+		position: fixed;
+		bottom: 26rpx;
+		left: 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 90rpx;
+		width: 690rpx;
+		height: 90rpx;
+		background: #0183FA;
+		border-radius: 20rpx;
+		text-align: center;
+		
+	}
+}
+</style>

+ 899 - 0
pages_safetyExamine/examineManage/examineList.vue

@@ -0,0 +1,899 @@
+<!-- 安全检查-校院巡查管理 -->
+<template>
+  <view class="examine">
+	<view class="header">
+		<view class="tabTitle_tow">
+			<view class="tabTitle_tow_li" @tap="tabClickTow(index)"  :key="index" v-for="(item,index) in tabTextTow">
+				<view :class="{on:curTabTow==index}" class="tabTitle_tow_text">{{item}}</view>
+			    <view :class="{on:curTabTow==index}" class="tabTitle_tow_across"></view>
+			</view>
+		</view>
+		<view class="lab_title">
+			<picker @change="collegeChange" :value="collegeIndex" :range="collegeArray" class="lab_title_l">
+				<view class="lab_title_l_n">
+					<view>{{getData.deptName?getData.deptName:'选择学院'}}</view>
+					<img src="@/pages_safetyExamine/images/icon_06.png">
+				</view>
+			</picker>
+			<view class="lab_title_r">
+				<view class="lab_title_r_btn" @click="searchBtn">
+					<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+				</view>
+				<input type="text" v-model="getData.searchValue" placeholder="计划标题/实验室/房间号" maxlength="50" placeholder-style="color: #CCCCCC;font-size:22rpx;">
+				<view class="clear" @click="clearBtn">清除</view>
+			</view>
+		</view>
+	</view>
+	
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view class="list_three">
+			<view class="list_three_li" v-for="(item,index) in  dataList" :key="index">
+				<view class="list_three_li_t">
+					<view class="list_three_li_t_l">
+						<img v-if="item.checkRange==1" src="@/pages_safetyExamine/images/icon_xyxc_qx.png"/>
+						<img v-if="item.checkRange==2" src="@/pages_safetyExamine/images/icon_xyxc_xy.png"/>
+						<img v-if="item.checkRange==3" src="@/pages_safetyExamine/images/icon_xyxc_sys.png"/>
+						<text></text>
+					</view>
+					<view class="list_three_li_t_c">{{item.subjectName}}-{{item.roomNumber}}</view>
+					<view class="list_three_li_t_c2"  v-if="item.isOverdue==1">已逾期</view>
+					<view class="list_three_li_t_r"></view>
+				</view>
+				<view class="list_three_li_m">
+					<view class="list_three_li_m_t">{{item.title}}</view>
+					<view class="list_three_li_m_b">
+						<text class="blue_color" v-if="item.manageStatus==0">待检查</text>
+						<text class="red_color" v-if="item.manageStatus==1">检查中</text>
+						<text class="green_color" v-if="item.manageStatus==2">已检查</text>
+						<text>{{item.checkType==1?'校院巡查':'实验室自查'}}</text>
+						<text>{{item.collegeName}}</text>
+					</view>
+				</view>
+				<!-- 开始检查 -->
+				<view v-if="buttonHide && item.isSelfData==1">
+					<view v-if="item.manageStatus==0 && item.notStarted" class="list_three_li_b" @click="handleClick(item,'add')">开始检查</view>
+					<view v-if="item.manageStatus==1 && item.notStarted" class="list_three_li_b" @click="handleClick(item,'edit')">编辑</view>
+					<view v-if="!item.notStarted" class="list_three_li_b_tow"><img src="@/pages_safetyExamine/images/icon_xyxcgl_jhwks.png"/>计划未开始</view>
+					<view v-if="item.manageStatus==2 && item.notStarted" class="list_three_li_b_three">
+						<img src="@/pages_safetyExamine/images/icon_djcsys.png"/>
+						<text>整改进度:</text>
+						<text v-if="item.checkResult==0" @click="handleClick(item,'detail')">{{item.rectifySchedule}}</text>
+						<text v-if="item.checkResult==1" @click="handleClick(item,'detail')">已完成</text>
+						<text v-if="item.isEndProcess==1" class="report" @click="handleClick(item,'download')">整改报告</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<img class="null-img" v-if="!dataList[0]" src="@/images/null-data-1.png">
+	</scroll-view>	
+	<view class="bottom_btn" @click="handleClick('','startInspect')">开始检查</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 {
+		pageType:0,
+		//列表请求参数
+		getData:{
+			pageNum:1,
+			pageSize:20,
+			isSelf: 0,//是否本人查询
+		    checkType:'',//检查类型(0全部1校院巡查2实验室自查)
+			manageStatus:-1,//管理状态(-1全部 0待检查,1检查中,2已检查)
+			searchValue:'',
+		},
+		tabTextTow:['全部','待检查','检查中','已检查'],
+		curTabTow:0,
+		form:{
+			name:'',
+			type:'校院巡查',
+			startTime:'',
+			endTime:'',
+			inspectScope:[],
+			tiemQuickList:[],
+			scopeIndex:'',
+			seleteListLab:[],
+			patrolIndex:'',
+			seleteListMember:[],
+		},
+		collegeList:[],
+		collegeIndex :0,
+		collegeArray:[],
+		dataList:[],
+		currentDate:'',
+		myApplyGentle:'',//自查身份 校院巡查管理 里操作按钮隐藏 
+		applyGentle:'',//检查组身份 实验室自查管理 里操作按钮隐藏
+		buttonHide:false,//判断按钮显示隐藏
+	}
+  },
+  onLoad(option) {
+	  this.myApplyGentle=uni.getStorageSync('gentleIdentifierData').myApplyGentle
+	  this.applyGentle=uni.getStorageSync('gentleIdentifierData').applyGentle
+	  
+	 if(option.pageType==1){
+	 		  this.getData.checkType=option.pageType
+	 		  uni.setNavigationBarTitle({
+	 		  		title:'校院巡查管理'
+	 		  })
+			  if(this.myApplyGentle && !this.applyGentle){
+				  this.buttonHide=false
+			  }if(!this.myApplyGentle && !this.applyGentle){
+				  this.buttonHide=false
+			  }else{
+				  this.buttonHide=true;
+			  }
+			  
+	 }else if(option.pageType==2){
+	 		   this.getData.checkType=option.pageType
+	 		  uni.setNavigationBarTitle({
+	 		  		title:'实验室自查管理'
+	 		  })
+			  if(!this.myApplyGentle && this.applyGentle){
+			  		this.buttonHide=false
+			  }if(!this.myApplyGentle && !this.applyGentle){
+				  this.buttonHide=false
+			  }else{
+			  		this.buttonHide=true;
+			  }
+	 }
+  },
+  onShow() {
+	
+  },
+  mounted(){
+	  //获取当前日期
+	  this.currentDate=this.getNowFormatDate() 
+	  this.getList(); 
+	  this.conditionCollegeInfo();
+	  
+  },
+  methods: {
+		//顶部tab点击
+		tabClickTow(index) {
+			this.curTabTow = index;
+			this.getData.pageNum=1;
+			this.dataList=[];
+			if(index==0){
+				this.getData.manageStatus=-1;
+			}else if(index==1){
+				this.getData.manageStatus=0;
+			}else if(index==2){
+				this.getData.manageStatus=1;
+			}else if(index==3){
+				this.getData.manageStatus=2;
+			}
+			this.getList()
+		},
+		//选择学院
+		collegeChange(e){
+			this.collegeIndex = e.target.value;
+			this.getData.deptId=this.collegeList[e.target.value].deptId
+			this.getData.deptName=this.collegeList[e.target.value].deptName
+			this.dataList=[];
+			this.getList(); 
+		},
+		//实验室搜索
+		searchBtn(){
+			this.dataList=[];
+			this.getList();
+		},
+		//清除
+		clearBtn(){
+			  this.getData.pageNum=1;
+			  this.collegeIndex=0;
+			  this.getData.deptId='';
+			  this.getData.deptName='';
+			  this.getData.searchValue='';
+			  this.dataList=[];
+			  this.getList();
+		},
+		//滚动事件
+		scrollGet(){
+			let self=this;
+			if(self.total/self.getData.pageSize<=self.getData.pageNum){
+			    console.log('没有更多数据!')
+			}else{
+					setTimeout(function(){
+						self.getData.pageNum += 1;
+						self.getList(); 
+					},1000)
+						 
+			}
+			
+		},
+		//查询学院列表
+		async conditionCollegeInfo(){
+			let _this = this;
+			const {data} = await conditionCollegeInfo();
+			if(data.code == 200){
+				data.data.forEach(function(item){
+					item.type=false;
+				})
+				_this.collegeList=data.data;
+				
+				//检查管理
+				for(let i=0;i<data.data.length;i++){
+					_this.collegeArray.push(data.data[i].deptName)
+				}
+			}
+		},
+	    handleClick(row,doType){
+		  let self=this;
+		  if( doType=='add'){//开始检查	
+			  uni.redirectTo({
+			      url: '/pages_safetyExamine/examineManage/examineAdd?id='+row.id
+			  });
+		  }else if(doType=='edit'){
+			  uni.redirectTo({
+			      url: '/pages_safetyExamine/examineManage/examineAdd?id='+row.id
+			  });
+		  }else if(doType=='detail'){
+			  uni.redirectTo({
+			      url: '/pages_safetyExamine/examineManage/examineDetail?id='+row.id+'&manageStatus='+row.manageStatus
+			  });
+		  }else if(doType=='startInspect'){//开始检查
+			  uni.redirectTo({
+			      url: '/pages_safetyExamine/examineManage/examineAdd'
+			  });
+		  }else if(doType=='download'){//整改报告下载rectifyNotice 整改通知(1整改告知书 2整改通知书)
+			  this.rectifyReport(row.id)
+		  }
+		  
+	    },
+		//整改报告
+		rectifyReport(id){
+			uni.showLoading({
+				title: '下载中'
+			});
+			wx.downloadFile({
+				url: config.base_url+'/zd-security/checkRectify/genReport/' + id,
+				header: {
+					Authorization: uni.getStorageSync('token')
+				},
+				success: function (res) {
+					const fileManager = wx.getFileSystemManager()
+					const filePath = wx.env.USER_DATA_PATH + '/(整改报告).docx'
+					fileManager.saveFile({
+						tempFilePath: res.tempFilePath,
+						filePath,
+						success: () => {
+							uni.hideLoading();
+							wx.openDocument({
+							filePath: filePath,
+							showMenu: true,
+							fileType: 'docx'
+							})
+						},
+						fail: function (res){
+							uni.hideLoading();
+							uni.showToast({
+								title: '下载失败',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+					})
+				},
+				fail: function (res){
+					uni.hideLoading();
+					uni.showToast({
+						title: '下载失败',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}
+			})
+		},
+		//整改通知书
+		genNotice(id){
+			uni.showLoading({
+				title: '下载中'
+			});
+			wx.downloadFile({
+				url: config.base_url+'/zd-security/checkManage/getRectifyAdviceNote/' + id,
+				header: {
+					Authorization: uni.getStorageSync('token')
+				},
+				success: function (res) {
+					const fileManager = wx.getFileSystemManager()
+					const filePath = wx.env.USER_DATA_PATH + '/(整改通知书).docx'
+					fileManager.saveFile({
+						tempFilePath: res.tempFilePath,
+						filePath,
+						success: () => {
+							uni.hideLoading();
+							wx.openDocument({
+							filePath: filePath,
+							showMenu: true,
+							fileType: 'docx'
+							})
+						},
+						fail: function (res){
+							uni.hideLoading();
+							uni.showToast({
+								title: '下载失败',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+					})
+				},
+				fail: function (res){
+					uni.hideLoading();
+					uni.showToast({
+						title: '下载失败',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}
+			})
+		},
+		//整改告知书
+		genReport(id){
+			uni.showLoading({
+				title: '下载中'
+			});
+			wx.downloadFile({
+				url: config.base_url+'/zd-security/checkManage/getRectifyNotification/' + id,
+				header: {
+					Authorization: uni.getStorageSync('token')
+				},
+				success: function (res) {
+					const fileManager = wx.getFileSystemManager()
+					const filePath = wx.env.USER_DATA_PATH + '/整改报告.docx'
+					fileManager.saveFile({
+						tempFilePath: res.tempFilePath,
+						filePath,
+						success: () => {
+							uni.hideLoading();
+							wx.openDocument({
+								filePath: filePath,
+								showMenu: true,
+								fileType: 'docx'
+							})
+						},
+						fail: function (res){
+							uni.hideLoading();
+							uni.showToast({
+								title: '下载失败',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+					})
+				},
+				fail: function (res){
+					uni.hideLoading();
+					uni.showToast({
+						title: '下载失败',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}
+			})
+		},
+		//获取当前日期函数
+		getNowFormatDate() {
+		  let date = new Date(),
+		    year = date.getFullYear(), //获取完整的年份(4位)
+		    month = date.getMonth() + 1, //获取当前月份(0-11,0代表1月)
+		    strDate = date.getDate() // 获取当前日(1-31)
+		  if (month < 10) month = `0${month}` // 如果月份是个位数,在前面补0
+		  if (strDate < 10) strDate = `0${strDate}` // 如果日是个位数,在前面补0
+		 
+		  return `${year}-${month}-${strDate}`
+		},
+		//是否可以开始检查
+		compareTime(date1){
+		        if(!date1){
+				   return false
+			    } else {
+				   const oDate1 = new Date(date1);
+				   const oDate2 = new Date(this.currentDate)
+					   
+				   if(oDate1.getTime() <= oDate2.getTime()){
+					   return true; //可以开始
+				   } else {
+					   return false; //不能开始
+				   }
+			    }   
+		},
+		async getList(){
+			let self = this;
+			const {data} = await checkManageList(this.getData);
+			if(data.code==200){
+				//判断计划是否开始
+				data.data.records.forEach(function(item){
+					item.notStarted=self.compareTime(item.cycleStartTime)
+				})
+				this.dataList=[...this.dataList,...data.data.records]
+				this.total=data.data.total;
+			}
+		},
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	// padding: 0 30rpx;
+	// box-sizing: border-box;
+	padding-bottom: 126rpx;
+	box-sizing: border-box;
+	.blue_color{
+		color: #0183FA;
+		border: 1rpx solid #0183FA;
+	}
+	.red_color{
+		color: #FF4545;
+		border: 1rpx solid #FF4545;
+	}
+	.green_color{
+		color: #1FA50D;
+		border: 1rpx solid #1FA50D;
+	}
+	.null-img{
+		display block
+		width:276rpx;
+		height:321rpx;
+		margin:100rpx 0 0 274rpx;
+	}
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		
+		padding: 220rpx 0rpx 0;
+		box-sizing: border-box;
+	}
+	/* 切换按钮 */
+	.header{
+		width:100%;
+		position: fixed;
+		top: 0rpx;
+		z-index: 100;
+		.tabTitle_tow{
+			width:100%;
+			height: 100rpx;
+			background: #fff;
+			display flex;
+			justify-content: flex-start;
+			align-items: center;
+			border-bottom: 1rpx solid #E0E0E0;
+			.tabTitle_tow_li{
+				position: relative;
+				width:146rpx;
+				text-align center;
+				.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: 46rpx;
+					display none;
+					&.on{
+						display block;
+					}
+				}
+		
+			}
+		}
+		.lab_title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			padding: 20rpx 30rpx;
+			box-sizing: border-box;
+			display: flex;
+			justify-content: flex-start;
+			
+			.lab_title_l{
+				width: 250rpx;
+				height: 60rpx;
+				margin-right: 20rpx;
+				.lab_title_l_n{
+					width: 250rpx;
+					height: 60rpx;
+					border-radius: 10rpx;
+					border: 1rpx solid #E0E0E0;
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					>view{
+						flex:1;
+						line-height:60rpx;
+						margin-left:20rpx;
+						color: #999999;
+						font-size:28rpx;
+						white-space: nowrap;
+						overflow: hidden;
+						text-overflow: ellipsis;
+					}
+					>img{
+						width: 14rpx;
+						height: 8rpx;
+						margin-right: 30rpx;
+					}
+				}
+			}
+			.lab_title_r{
+				width: 420rpx;
+				height: 60rpx;
+				position:relative;
+				border-radius: 10rpx;
+				border: 1rpx solid #E0E0E0;
+				.lab_title_r_btn{
+					width: 60rpx;
+					height: 60rpx
+					position: absolute;
+					top: 0rpx;
+					left:0rpx;
+					z-index: 100;
+					>img{
+						width: 20rpx;
+						height: 20rpx;
+						position: absolute;
+						top: 20rpx;
+						left: 24rpx;
+					}
+				}
+				>input{
+					width: 274rpx;
+					height: 60rpx;
+					position: absolute;
+					top: 0rpx;
+					left: 60rpx;
+				}
+				.clear{
+					width: 60rpx;
+					height: 60rpx;
+					position: absolute;
+					top: 0rpx;
+					right:20rpx;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #0183FA;
+					line-height: 60rpx;
+				}
+			}
+		}
+		
+	}
+	.list_three{
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		.list_three_li{
+			position: relative;
+			width: 690rpx;
+			/* height: 360rpx; */
+			height: auto;
+			background: #fff;
+			border-radius: 10rpx;
+			overflow: hidden;
+			margin-bottom: 20rpx;
+			.list_three_li_t{
+				width: 100%;
+				height: 110rpx;
+				position: relative;
+				left: 0;
+				top: 0;
+				.list_three_li_t_l{
+					>img{
+						width: 70rpx;
+						height: 70rpx;
+					}
+					>text{
+						position: absolute;
+						left: -15rpx;
+						top: 76rpx;
+						display: inline-block;
+						width: 30rpx;
+						height: 30rpx;
+						background: #F5F5F5;
+						border-radius: 15rpx;
+					}
+				}
+				.list_three_li_t_c{
+					width: 630rpx;
+					height: 110rpx;
+					position: absolute;
+					left: 30rpx;
+					top: 0;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 110rpx;
+					border-bottom: 1rpx dashed #D8D8D8;
+					overflow: hidden;
+					text-overflow:ellipsis;
+					white-space: nowrap;
+					padding-right: 120rpx;
+					box-sizing: border-box;
+				}
+				.list_three_li_t_c2{
+					position: absolute;
+					right: 20rpx;
+					top: 38rpx;
+					width: 120rpx;
+					height: 40rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #FF5757;
+					line-height: 40rpx;
+					border: 1rpx solid #FF5757;
+					border-radius: 6rpx;
+					text-align: center;
+				}
+				.list_three_li_t_r{
+					position: absolute;
+					right:-15rpx;
+					top: 76rpx;
+					width: 30rpx;
+					height: 30rpx;
+					background:#F5F5F5;
+					border-radius: 15rpx;
+				}
+			}
+			.list_three_li_m{
+				// position: absolute;
+				// top: 110rpx;
+				// left: 0;
+				width: 690rpx;
+				height: 158rpx;
+				padding-left: 30rpx;
+				box-sizing: border-box;
+				.list_three_li_m_t{
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #666666;
+					line-height: 40rpx;
+					margin-top:22rpx;
+				}
+				.list_three_li_m_b{
+					margin-top:26rpx;
+					>text:nth-of-type(1){
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						line-height: 40rpx;
+						border-radius: 6rpx;
+						padding: 0 20rpx;
+						margin-right: 14rpx;
+					}
+					>text:nth-of-type(2){
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #0183FA;
+						line-height: 40rpx;
+						padding: 0 8rpx;
+						border-radius: 6rpx;
+						background: rgba(1,131,250,0.1);
+						margin-right: 24rpx;
+					}
+					>text:nth-of-type(3){
+						display: inline-block;
+						width: 350rpx;
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 26rpx;
+						overflow: hidden;
+						text-overflow:ellipsis;
+						white-space: nowrap;
+						
+					}
+				}
+			}
+			.list_three_li_b{
+				height: 80rpx;
+				width: 100%;
+				// position: absolute;
+				// top: 278rpx;
+				// left: 0;
+				border-top: 1rpx solid #E0E0E0;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #0183FA;
+				line-height: 80rpx;
+				text-align: center;
+			}
+			.list_three_li_b_tow{
+				height: 80rpx;
+				width: 100%;
+				// position: absolute;
+				// top: 278rpx;
+				// left: 0;
+				border-top: 1rpx solid #E0E0E0;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #0183FA;
+				line-height: 80rpx;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				>img{
+					width: 28rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+			}
+			.list_three_li_b_three{
+				height: 80rpx;
+				// position: absolute;
+				// top: 278rpx;
+				// left: 0;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				width: 100%;
+				border-top: 1rpx solid #E0E0E0;
+				>img{
+					width: 24rpx;
+					height: 30rpx;
+					margin-right: 26rpx;
+					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){
+					flex:1;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #0183FA;
+					line-height: 28rpx;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+				}
+				.report{
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #0183FA;
+					line-height: 28rpx;
+					margin-right: 40rpx;
+				}
+			}
+		}
+	}
+	.bottom_btn{
+		position: fixed;
+		bottom: 26rpx;
+		left: 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 90rpx;
+		width: 690rpx;
+		height: 90rpx;
+		background: #0183FA;
+		border-radius: 20rpx;
+		text-align: center;
+		
+	}
+	/* 指纹采集 */
+	.shade {
+	  height: 100%;
+	  width: 100%;
+	  position: fixed;
+	  display: flex;
+	  flex-direction: column;
+	  z-index: 10;
+	  background: rgba(0, 0, 0, 0.2);
+	  .null-box {
+		flex: 1;
+	  }
+	  .shade_n {
+		  position: absolute;
+		  bottom: 0;
+		  left: 0;
+		  width: 750rpx;
+		  height: 560rpx;
+		  background: #FFFFFF;
+		  border-radius: 20rpx 20rpx 0rpx 0rpx;
+		  .shade_n_title{
+			  height: 100rpx;
+			  padding: 0 30rpx;
+			  box-sizing: border-box;
+			  display: flex;
+			  justify-content:space-between;
+			  border-bottom: 1rpx solid #E0E0E0;
+			  >text:nth-of-type(1){
+				  font-size: 30rpx;
+				  font-family: PingFang SC-Medium, PingFang SC;
+				  font-weight: 400;
+				  color: #333333;
+				  line-height: 100rpx;
+			  }
+			  >text:nth-of-type(2){
+				  font-size: 30rpx;
+				  font-family: PingFang SC-Medium, PingFang SC;
+				  font-weight: 400;
+				  color: #0183FA;
+				  line-height: 100rpx;
+				  
+			  }
+		  }
+		  .shade_n_b{
+			  height: 460rpx;
+			  padding: 0 30rpx;
+			  box-sizing: border-box;
+			  overflow-y: auto;
+			  .shade_n_b_li{
+				   display: flex;
+				   justify-content:space-between;
+				   align-items: center;
+				   height: 80rpx;
+				   border-bottom: 1rpx solid #E0E0E0;
+				 >text{
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					line-height: 80rpx;
+					overflow: hidden;
+					text-overflow:ellipsis;
+					white-space: nowrap;
+				 }
+				 >img{
+					 width: 24rpx;
+					 height: 16rpx;
+					 margin-right: 14rpx;
+				 } 
+			  }
+			  .color_A{
+				  color: #333333;
+			  }
+			  .color_B{
+				  color: #0183FA;
+			  }
+			  
+			 
+		  }
+	  }
+	}
+}
+</style>

BIN
pages_safetyExamine/images/icon_04.png


BIN
pages_safetyExamine/images/icon_06.png


BIN
pages_safetyExamine/images/icon_06_1.png


BIN
pages_safetyExamine/images/icon_aqjc_sm.png


BIN
pages_safetyExamine/images/icon_aqjc_ss.png


BIN
pages_safetyExamine/images/icon_aqjc_ssp.png


BIN
pages_safetyExamine/images/icon_bfhx_sq.png


BIN
pages_safetyExamine/images/icon_bfhx_xq.png


BIN
pages_safetyExamine/images/icon_cg.png


BIN
pages_safetyExamine/images/icon_djc_wj.png


BIN
pages_safetyExamine/images/icon_djcsys.png


BIN
pages_safetyExamine/images/icon_fjgk_sc.png


BIN
pages_safetyExamine/images/icon_jcjh_cy.png


BIN
pages_safetyExamine/images/icon_ksjc_yysr.png


BIN
pages_safetyExamine/images/icon_rl.png


BIN
pages_safetyExamine/images/icon_ssp_ry.png


BIN
pages_safetyExamine/images/icon_xyxc_aqyh.png


BIN
pages_safetyExamine/images/icon_xyxc_qx.png


BIN
pages_safetyExamine/images/icon_xyxc_sm.png


BIN
pages_safetyExamine/images/icon_xyxc_sys.png


BIN
pages_safetyExamine/images/icon_xyxc_syszc.png


BIN
pages_safetyExamine/images/icon_xyxc_xy.png


BIN
pages_safetyExamine/images/icon_xyxc_xyxc.png


BIN
pages_safetyExamine/images/icon_xyxcgl_jhwks.png


BIN
pages_safetyExamine/images/icon_xzwt_xz.png


BIN
pages_safetyExamine/images/icon_ywc.png


+ 333 - 0
pages_safetyExamine/inforSign.vue

@@ -0,0 +1,333 @@
+<!-- 安全信息牌 -->
+<template>
+  <view class="examine">
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view class="header">
+			<view class="header_l">
+				<text>{{itemData.typeName}}</text>
+				<text></text>
+				<text>{{itemData.levelName}}</text>
+			</view>
+			<view class="header_r">{{itemData.deptName}}-{{itemData.room}}</view>
+		</view>
+		<view  class="basics">
+			<view class="grade">
+				<text>责任单位:</text>
+				<text>{{itemData.deptName}}</text>
+			</view>
+			<view class="grade">
+				<text>实验室负责人:</text>
+				<text >{{itemData.adminName}}-{{itemData.adminPhone?itemData.adminPhone:'未填写'}}</text>
+			</view>
+			<view class="duty">
+				<view class="duty_l">安全责任人:</view>
+				<view class="duty_r">
+					<text>{{itemData.safeUserNameAdminPhone}}</text>
+				</view>
+			</view>
+		</view>
+		<view class="category" v-if="item.privateList.length>0 && item.classifyType==1" v-for="(item,index) in  itemData.classifyList">
+			<view class="title" :style="'background:'+item.showColour">{{item.classifyName}}</view>
+			<view class="category_li" v-for="(item2,index2) in item.privateList" :key="index2"><text></text><text>{{item2.infoName}}</text></view>
+		</view>
+		<view class="category" v-if="item.privateList.length>0 && item.classifyType==2" v-for="(item,index) in  itemData.classifyList">
+			<view class="title">{{item.classifyName}}</view>
+			<view class="identify_img" @click="lockImg(item.privateList)">
+				<img :src="baseUrl+item2.infoContent" v-for="(item2,index2) in item.privateList" :key="index2"/>
+			</view>
+		</view>
+		<view class="category" v-if="item.privateList.length>0 && item.isSpecial==2" v-for="(item,index) in  itemData.classifyList">
+			<view class="title">{{item.classifyName}}</view>
+			<view class="telephone_li" v-for="(item3,index3) in item.privateList" :key="index3">{{item3.infoContent}}</view>
+		</view>
+		
+	</scroll-view>
+	<view  class="bottom_btn" @click="handleClick('start')">开展检查</view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import { getSelectInfoByRoom,getInforSign} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		baseUrl:config.base_url,
+		pageType:2,
+		id:'',
+		itemData:{},
+	}
+  },
+  onLoad(option) {
+	 if(option.subId){
+	 	this.id=option.subId;
+	 }
+  },
+  onShow() {
+	  
+  },
+  mounted(){
+	  this.getInforSign()
+	  console.log(uni.getStorageSync('saoCodeId'))
+  },
+  methods: {
+		//滚动事件
+		scrollGet(){},
+		//查询详情
+		async getInforSign(){
+		  let self = this;
+		  let id = uni.getStorageSync('saoCodeId');
+		  const {data} = await getInforSign(id);
+		  if(data.code == 200){
+		    this.itemData = data.data;
+			console.log(this.itemData)
+		  }
+		},
+		//查看图片
+		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].infoContent)
+			}
+			wx.previewImage({
+				urls: urlList, //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+				current: '', // 当前显示图片的http链接,默认是第一个
+				success: function(res) {},
+				fail: function(res) {},
+				complete: function(res) {},
+			})
+		},
+	    handleClick(doType){
+		  let self=this;
+		  if(doType=='start'){//提交
+			  uni.navigateTo({
+			      url: '/pages_safetyExamine/examineManage/examineAdd?id='+ uni.getStorageSync('saoCodeId')
+			  });
+		  }
+	    },
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	box-sizing: border-box;
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		padding-bottom: 128rpx;
+		box-sizing: border-box;
+	}
+	.header{
+		width: 690rpx;
+		height: 100rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx 20rpx 20rpx 20rpx;
+		margin: 20rpx 30rpx;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		display: flex;
+		justify-content: flex-start;
+		align-items: center;
+		.header_l{
+			width: auto;
+			height: 60rpx;
+			background: #FFFFFF;
+			border-radius: 50rpx 50rpx 50rpx 50rpx;
+			opacity: 1;
+			border: 1rpx solid #DF4848;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-right: 26rpx;
+			
+			>text:nth-of-type(1){
+				font-size: 24rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #DF4848;
+				line-height: 60rpx;
+			}
+			>text:nth-of-type(2){
+				display: inline-block;
+				width: 0rpx;
+				height: 19rpx;
+				opacity: 1;
+				border: 1rpx solid #A2A2A2;
+				margin: 0 10rpx;
+			}
+			>text:nth-of-type(3){
+				font-size: 24rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #DF4848;
+				line-height: 60rpx;
+			}
+		}
+		.header_r{
+			font-size: 30rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #333333;
+			line-height: 60rpx;
+			flex: 1;
+			white-space: nowrap;
+			overflow: hidden;
+			text-overflow: ellipsis;
+		}
+	}
+	.basics{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		padding: 0rpx 30rpx;
+		box-sizing: border-box;
+		margin: 20rpx 30rpx ;
+		.grade{
+			height: 100rpx;
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1rpx solid #D8D8D8;
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 100rpx;
+			}
+			>text:nth-of-type(2){
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 100rpx;
+				text-align: right;
+			}
+		}
+		.duty{
+			display: flex;
+			justify-content: space-between;
+			padding: 20rpx 0rpx;
+			box-sizing: border-box;
+			.duty_l{
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 60rpx;
+			}
+			.duty_r{
+				flex: 1;
+				>text{
+					display: block;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #666666;
+					line-height: 60rpx;
+					text-align: right;
+				}
+			}
+		}
+		
+	}
+	.category{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		margin: 20rpx 30rpx ;
+		padding-bottom: 20rpx;
+		box-sizing: border-box;
+		.title{
+			width: 690rpx;
+			height: 80rpx;
+			background: #133E93;
+			border-radius: 10rpx 10rpx 0rpx 0rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #FFFFFF;
+			line-height: 80rpx;
+			text-align: center;
+			margin-bottom:20rpx;
+		}
+		.category_li{
+			margin-left: 34rpx;
+			display: flex;
+			justify-content: flex-start;
+			>text:nth-of-type(1){
+				display: inline-block;
+				width: 20rpx;
+				height: 20rpx;
+				border-radius: 50%;
+				background: #D8D8D8;
+				margin-right: 14rpx;
+				margin-top: 20rpx;
+			}
+			>text:nth-of-type(2){
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 60rpx;
+			}
+		}
+		/* 安全警示标识 */
+		.identify_img{
+			display: flex;
+			justify-content: flex-start;
+			flex-wrap:wrap;
+			margin-left: 34rpx;
+			>img{
+				width: 67rpx;
+				height: 90rpx;
+				margin-right: 24rpx;
+				margin-bottom: 20rpx;
+			}
+		}
+		/* 紧急报警电话 */
+		.telephone_li{
+			flex: 1;
+			font-size: 28rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #333333;
+			line-height: 60rpx;
+			margin-left: 34rpx;
+		}
+	}
+	/* 待整改 */
+		
+    .bottom_btn{
+		position: fixed;
+		bottom: 26rpx;
+		left: 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 90rpx;
+		width: 690rpx;
+		height: 90rpx;
+		background: #0183FA;
+		border-radius: 20rpx;
+		text-align: center;
+		
+	}
+}
+</style>

+ 897 - 0
pages_safetyExamine/patrolPlan/patrolPlanAdd.vue

@@ -0,0 +1,897 @@
+<!-- 安全检查-发起巡查计划 -->
+<template>
+  <view class="examine">
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view class="basics">
+			<view class="title">
+				<view class="title_t">计划标题</view>
+				<textarea class="title_b" type="text" v-model="form.title" maxlength="200" placeholder="请输入检查计划标题" placeholder-style="color:#999999;font-size:30rpx;"></textarea>
+			</view>
+			<view class="type">
+				<view class="type_l">检查类型</view>
+				<input class="type_r" type="text" v-model="form.checkTypeName" placeholder="" disabled maxlength="20">
+			</view>
+			<view class="period">		
+				<view class="period_l">检查周期</view>
+				<view class="period_r">
+					<picker mode="date" @change="startChange(form,$event)">
+						<input class="picker-text"  disabled type="text" v-model="form.cycleStartTime" placeholder="开始时间">
+					</picker>
+					<view>至</view>
+					<picker mode="date"  @change="endChange(form,$event)">
+						<input class="picker-text2" disabled type="text" v-model="form.cycleEndTime" placeholder="结束时间">
+					</picker>
+				</view>
+			</view>
+			<view class="tiem_quick">
+				<view @click="tiemQuick(index)" :class="item.type?'tiem_quick_a':'tiem_quick_b'" v-for="(item,index) in tiemQuickList">{{item.name}}</view>
+			</view>
+			<view class="scope">
+				<view class="scope_l">检查范围</view>
+				<picker @change="scopeChange" :value="scopeIndex" :range="scopeArray" class="scope_r">
+					<view class="scope_r_n">
+						<view>{{form.checkRange?(form.checkRange==1?'全校':(form.checkRange==2?'学院':'实验室')):'选择检查范围'}}</view>
+						<img src="@/pages_safetyExamine/images/icon_06.png">
+					</view>
+				</picker>
+			</view>
+			<view class="scope_btn" v-if="scopeIndex==1 || scopeIndex==2" @click="collegeOrLab()">{{scopeIndex==1?'选择学院':'选择实验室'}}</view>
+			<view class="scope_text" v-if="scopeIndex==0 || scopeIndex==1">已选择<text>{{form.collegeNum}}</text>个学院,共<text>{{form.subjectNum}}</text>间实验室</view>
+			<view class="scope_text" v-if="scopeIndex==2">已选择<text>{{form.subjectNum}}</text>间实验室</view>
+			<view class="title">
+				<view class="title_t">检查要求</view>
+				<textarea class="title_b" type="text" v-model="form.checkDemand" maxlength="200" placeholder="请输入检查要求" placeholder-style="color:#999999;font-size:30rpx;"></textarea>
+			</view>
+		</view>
+		<view class="patrol_group" v-if="form.checkType==1">
+			<view class="patrol">
+				<view class="patrol_l">巡查组</view>
+				<view class="patrol_r_n" @click="patrolChange">
+					<view>{{form.checkGroupName?form.checkGroupName:'请选择巡查组'}}</view>
+					<img src="@/pages_safetyExamine/images/icon_06.png">
+				</view>
+			</view>
+			<view class="list">
+				<view class="list_title"><img src="@/pages_safetyExamine/images/icon_jcjh_cy.png">成员</view>
+				<view class="list_header"><text>工号</text><text>姓名</text></view>
+				<view class="list_li" v-for="(item,index) in form.checkMemberDtoList"><text>{{item.jobNum}}</text><text>{{item.name}}</text></view>
+				<view class="list_bottom" v-if="form.checkMemberDtoList.length==0">无数据</view>
+			</view>
+		</view>
+	</scroll-view>	
+	<view class="bottom_btn" @click="submitForm()">保存</view>
+	 <!-- 选择学院-->
+	<view class="shade" v-if="dialogVisible">
+		<view class="null-box" @click="dialogClose()"></view>
+		<view class="shade_n">
+			<view class="shade_n_title"><text>选择学院</text><text @click="collegeConfirm">确定</text></view>
+			<view class="shade_n_b">
+				<view class="shade_n_b_li" v-for="(item,index) in  collegeList" :key="index" @click="collegeSelete(index)">
+					<text :class="item.type?'color_B':'color_A'">{{item.deptName}}</text>
+					<img v-if="item.type" src="@/pages_safetyExamine/images/icon_xzwt_xz.png">
+				</view>
+			</view>
+		</view>
+	</view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import { checkPlanAdd,conditionCollegeInfo,getAllSubNum,isSCollege} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		pageType:0,
+		//列表请求参数
+		getData:{
+		 pageNum:1,
+		 pageSize:20,
+		},
+		form:{
+			title:'',
+			checkType:'1',//1校院巡查 2实验室自查
+			checkTypeName:'校院巡查',//1校院巡查 2实验室自查
+			cycleStartTime:'',
+			cycleEndTime:'',
+			checkRange:'',//检查范围 1全校 2学院 3实验室
+			checkLevel:'',//巡查组层级
+			seleteListMember:[],//临时存储选中巡查组
+			checkMemberDtoList:[],//巡查组成员
+			collegeIds:'',//学院id组
+			collegeNum:0,//学院数量
+			subIds:'',//实验室id组
+			subjectNum:0,//实验室数量
+			checkDemand:'',//检查要求
+			tiemQuickList:[],
+			scopeIndex:'',//0 全校 1学院 2实验室
+			seleteListLab:[],
+			groupDataType:'',//巡查组状态 院级/校级
+		},
+		tiemQuickList:[{name:'本月',type:false},{name:'本季度',type:false},{name:'全年',type:false}],
+		scopeIndex:0,
+		scopeArray:['全校','学院','实验室'],
+		dialogVisible:false,
+		collegeList:[]
+	  
+	}
+  },
+  onLoad(option) {
+	  
+	 if(option.form){
+		this.form=JSON.parse(decodeURIComponent(option.form)); 
+		this.tiemQuickList=this.form.tiemQuickList//时间快捷
+		this.scopeIndex=this.form.scopeIndex//检查范围
+		console.log(this.form)
+	 }
+	 if(option.pageType){
+		 if(option.pageType==1){//校院巡查
+			 this.form.checkType=option.pageType;
+			 this.form.checkTypeName='校院巡查';
+			 uni.setNavigationBarTitle({
+			 		title:'发起巡查计划'
+			 })
+		 }else if(option.pageType==2){//实验室自查
+			  this.form.checkType=option.pageType;
+			  this.form.checkTypeName='实验室自查';
+			  uni.setNavigationBarTitle({
+			  		title:'发起自查计划'
+			  })
+		 }
+	 }
+  },
+  onShow() {
+	  
+  },
+  mounted(){
+	  this.isSCollege();
+  },
+  methods: {
+		//滚动事件
+		scrollGet(){
+		},
+		//顶部tab点击
+		tabClick(index) {
+			this.curTab = index;
+		},
+	    //开始时间选中事件
+		startChange(form,e){
+			if(new Date(e.target.value).getTime()>new Date(form.cycleEndTime).getTime()){
+				 uni.showToast({
+					title: '结束时间不能小于开始时间',
+					icon:"none",
+					mask:true,
+					duration: 2000
+				});
+			}else{
+				form.cycleStartTime=e.target.value
+			}
+		},
+	    //结束时间选中事件
+		endChange(form,e){
+			if(new Date(form.cycleStartTime).getTime()>new Date(e.target.value).getTime()){
+				 uni.showToast({
+					title: '结束时间不能小于开始时间',
+					icon:"none",
+					mask:true,
+					duration: 2000
+				});
+			}else{
+				form.cycleEndTime=e.target.value
+			}
+		},
+		//检查周期快捷
+		tiemQuick(index){
+			this.tiemQuickList[index].type = !this.tiemQuickList[index].type
+			let _this = this;
+			if (_this.tiemQuickList[index].type == true) {
+				_this.tiemQuickList.forEach(function(item2) {
+				  if (item2.name == _this.tiemQuickList[index].name) {
+					item2.type = true
+				  } else {
+					item2.type = false
+				  }
+				})
+				//快捷本月-本季度-全年
+				_this.timeSlotChange(_this.tiemQuickList[index].name)
+			}else{
+				console.log('取消选中')
+				_this.form.cycleStartTime='';
+				_this.form.cycleEndTime='';
+			}
+			
+		},
+		//查询当前用户是否是院级
+		async isSCollege(){
+			let _this = this;
+			const {data} = await isSCollege();
+			if(data.code == 200){
+				if(data.data.userFlg){
+					// 院级
+					this.$set(this,'scopeArray',['学院','实验室']);
+					this.form.groupDataType=2;
+				}else{
+					// 校级
+					this.$set(this,'scopeArray',['全校','学院','实验室']);
+					this.form.groupDataType=0;
+				}
+			}
+		},
+		//检查范围
+		scopeChange(e){
+			let _this=this;
+			console.log(this.scopeArray[e.target.value])
+			if(this.scopeArray[e.target.value]=='全校'){
+				_this.scopeIndex=0;
+				_this.form.checkRange=1;
+			}else if(this.scopeArray[e.target.value]=='学院'){
+				_this.scopeIndex=1;
+				_this.form.checkRange=2;
+			}else if(this.scopeArray[e.target.value]=='实验室'){
+				_this.scopeIndex=2;
+				_this.form.checkRange=3;
+			}
+			if(this.form.subjectNum>0){
+				uni.showModal({
+					content: '重新选择会删除现有选择的实验室,是否重选?',
+					cancelColor:"#999",
+					confirmColor:"#0183FA",
+					success: function (res) {
+					  if (res.confirm) {
+						
+						_this.form.collegeIds ='';
+						_this.form.collegeNum =0;
+						_this.form.subIds ='';
+						_this.form.subjectNum =0;
+						
+						if(_this.scopeIndex==0){//全校
+						   _this.getAllSubNum();
+						}else if(_this.scopeIndex==1){//选择学院
+							_this.conditionCollegeInfo();
+						}else if(_this.scopeIndex==2){
+							console.log('选择实验室')
+						}
+						
+					  } else if (res.cancel) {
+						  
+					  }
+					}
+				});
+			}else{
+				if(_this.scopeIndex==0){//全校
+				   _this.getAllSubNum();
+				}else if(_this.scopeIndex==1){//选择学院
+					_this.conditionCollegeInfo();
+				}else if(_this.scopeIndex==2){
+					console.log('选择实验室')
+				}
+			}
+			
+			
+		},
+		timeSlotChange (val) {
+			  let _this=this;	
+		      let cycleStartTime, cycleEndTime;
+		      let now = new Date(); //当前日期 
+		      let nowDayOfWeek = now.getDay(); //今天本周的第几天 
+		      let nowDay = now.getDate(); //当前日 
+		      let nowMonth = now.getMonth(); //当前月 
+		      let nowYear = now.getFullYear(); //当前年 
+		      let jd=Math.ceil((nowMonth + 1) / 3)
+		      switch (val) {
+		        case "本周":
+		          cycleStartTime = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek)
+		          cycleEndTime = new Date(nowYear, nowMonth, nowDay + 6 - nowDayOfWeek)
+		          break;
+		        case "本月":
+		          cycleStartTime = new Date(nowYear, nowMonth, 1)
+		          cycleEndTime = new Date(nowYear, nowMonth + 1, 0)
+		          break;
+		        case "本季度":
+		          cycleStartTime = new Date(nowYear, (jd-1)*3, 1)
+		          cycleEndTime = new Date(nowYear, jd*3, 0)
+		          break
+		          case "全年":
+		          cycleStartTime = new Date(nowYear, 0, 1)
+		          cycleEndTime = new Date(nowYear, 11, 31)
+		          break
+		      }
+			  _this.form.cycleStartTime=_this.formatDateTime(cycleStartTime)
+			  _this.form.cycleEndTime=_this.formatDateTime(cycleEndTime)
+		},
+		// 中国标准时间 转换成 年月日
+		 formatDateTime (date) {
+		  var y = date.getFullYear();
+		  var m = date.getMonth() + 1;
+		  m = m < 10 ? ('0' + m) : m;
+		  var d = date.getDate();
+		  d = d < 10 ? ('0' + d) : d;
+		  var h = date.getHours();
+		  var minute = date.getMinutes();
+		  minute = minute < 10 ? ('0' + minute) : minute;
+		  // return y + '-' + m + '-' + d+' '+h+':'+minute;
+		  return y + '-' + m + '-' + d
+		},
+		//巡查组
+		patrolChange(){
+			this.form.tiemQuickList=this.tiemQuickList//检查周期快捷存储
+			this.form.scopeIndex=this.scopeIndex//检查范围
+			uni.redirectTo({
+			    url: '/pages_safetyExamine/patrolPlan/patrolPlanAddMember?form='+encodeURIComponent(JSON.stringify(this.form))+'&pageType=1'
+			});
+		},
+		//选择学院或者实验室
+		collegeOrLab(){
+			console.log(this.scopeIndex)
+			if(this.scopeIndex==1){//学院
+				this.dialogVisible=true;
+			}else if(this.scopeIndex==2){//实验室
+			    this.form.tiemQuickList=this.tiemQuickList//检查周期快捷存储
+			    this.form.scopeIndex=this.scopeIndex//检查范围
+				uni.redirectTo({
+				    url: '/pages_safetyExamine/patrolPlan/patrolPlanAddLab?form='+encodeURIComponent(JSON.stringify(this.form))+'&pageType=1'
+				});
+			}
+		},
+		//选择学院弹窗关闭
+		dialogClose(){
+		   this.dialogVisible=false;
+	    },
+		
+		//选择学院确定
+		collegeConfirm(){
+			let _this=this;
+			this.dialogVisible=false;
+			let list=[];
+			let collegeIds=[];
+			let subjectNum=0;
+			_this.collegeList.forEach(function(item){
+				if(item.type==true){
+					list.push(item)
+					collegeIds.push(item.deptId);
+					subjectNum+=item.subNum;
+				}
+			})
+			_this.form.collegeIds=collegeIds.join(',');
+			_this.form.subjectNum=subjectNum;
+			_this.form.collegeNum=list.length;
+		},
+		//学院选择
+		collegeSelete(index){
+			this.collegeList[index].type = !this.collegeList[index].type
+		},
+		//查询学院列表
+		async conditionCollegeInfo(){
+			let _this = this;
+			const {data} = await conditionCollegeInfo();
+			if(data.code == 200){
+				data.data.forEach(function(item){
+					item.type=false;
+				})
+				_this.collegeList=data.data;
+			}
+		},
+		//查询全校学院和实验室数量
+		async getAllSubNum(){
+			let _this = this;
+			const {data} = await getAllSubNum();
+			if(data.code == 200){
+				this.form.collegeNum=data.data.collegeCount
+				this.form.subjectNum=data.data.subCount
+			}
+		},
+		
+	    handleClick(doType){
+		  let self=this;
+		  
+		  if( doType=='subBtn'){//	
+			  console.log(11)
+		  }
+		  
+	    },
+		//巡查计划-添加
+		async submitForm(){
+			let _this = this;
+			if(!_this.form.title){
+				uni.showToast({
+				    title: '请输入计划标题',
+				    icon:"none",
+				    mask:true,
+				    duration: 2000
+				});
+				return;
+			}
+			if(!_this.form.cycleStartTime || !_this.form.cycleEndTime){
+				uni.showToast({
+				    title: '请选择计划周期',
+				    icon:"none",
+				    mask:true,
+				    duration: 2000
+				});
+				return;
+			}
+			if(!_this.form.checkRange){
+				uni.showToast({
+				    title: '请选择检查范围',
+				    icon:"none",
+				    mask:true,
+				    duration: 2000
+				});
+				return;
+			}
+			if(_this.form.checkRange==2 && _this.form.subjectNum==0){
+				uni.showToast({
+				    title: '请选择学院',
+				    icon:"none",
+				    mask:true,
+				    duration: 2000
+				});
+				return;
+			}
+			if(_this.form.checkRange==3 && _this.form.subjectNum==0){
+				uni.showToast({
+				    title: '请选择实验室',
+				    icon:"none",
+				    mask:true,
+				    duration: 2000
+				});
+				return;
+			}
+			if( _this.form.checkType==1 &&_this.form.checkMemberDtoList.length<=0){
+				uni.showToast({
+				    title: '请选择巡查组',
+				    icon:"none",
+				    mask:true,
+				    duration: 2000
+				});
+				return;
+			}
+			
+			
+			const {data} = await checkPlanAdd(_this.form);
+			if(data.code == 200){
+			    uni.showToast({
+			        title: '提交成功',
+			        icon:"none",
+			        mask:true,
+			        duration: 2000
+			    });
+				uni.redirectTo({
+					url: '/pages_safetyExamine/patrolPlan/patrolPlanList?pageType='+this.form.checkType
+				});
+			   
+			}
+		},
+		
+		
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	// padding: 0 30rpx;
+	// box-sizing: border-box;
+	padding-bottom: 126rpx;
+	box-sizing: border-box;
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		
+		padding: 0 30rpx;
+		box-sizing: border-box;
+	}
+	.basics{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		margin-top: 20rpx;
+		padding: 60rpx 26rpx 32rpx;
+		box-sizing: border-box;
+		.title{
+			.title_t{
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 42rpx;
+				margin-bottom: 12rpx;
+			}
+			.title_b{
+				width: 636rpx;
+				height: 150rpx;
+				border-radius: 10rpx;
+				opacity: 1;
+				border: 1rpx solid #E0E0E0;
+				padding: 26rpx 23rpx;
+				box-sizing: border-box;
+			}
+		}
+		.type{
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-top: 20rpx;
+			.type_l{
+				width: 146rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 42rpx;
+				text-align: left;
+			}
+			.type_r{
+				width: 490rpx;
+				height: 80rpx;
+				border-radius: 10rpx;
+				padding-left:22rpx;
+				box-sizing: border-box;
+                background: #F5F5F5;				
+			}
+		}
+		.period{
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-top: 26rpx;
+			.period_l{
+				width: 146rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 42rpx;
+				text-align: left;
+			}
+			.period_r{
+				width: 490rpx;
+				height: 80rpx;
+				border-radius: 10rpx;
+				border: 1rpx solid #E0E0E0;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				.picker-text{
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #999999;
+					line-height: 80rpx;
+					width: 230rpx;
+					text-align: center;
+				}
+				.picker-text2{
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #999999;
+					line-height: 80rpx;
+					width: 230rpx;
+					text-align: center;
+				}
+			}
+		}
+		.tiem_quick{
+			margin-left: 146rpx;
+			display: flex;
+			justify-content: flex-start;
+			margin-top: 20rpx;
+			>view{
+				width: 130rpx;
+				height: 80rpx;
+				opacity: 1;
+				border: 1rpx solid #E0E0E0;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				line-height: 80rpx;
+				text-align: center;
+			}
+			>view:nth-of-type(1){
+				border-radius: 10rpx 0rpx 0rpx 10rpx;
+			}
+			>view:nth-of-type(3){
+				border-radius: 0rpx 10rpx 10rpx 0rpx;
+			}
+			.tiem_quick_a{
+				background: #0183FA;
+				color: #FFFFFF;
+				
+			}
+			.tiem_quick_b{
+				background: #F5F5F5;
+				color: #333333;
+			}
+		}
+		.scope{
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-top: 26rpx;
+			.scope_l{
+				width: 146rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 42rpx;
+				text-align: left;
+			}
+			.scope_r{
+				flex: 1;
+				.scope_r_n{
+					width: 490rpx;
+					height: 80rpx;
+					border-radius: 10rpx;
+					border: 1rpx solid #E0E0E0;
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					>view{
+						flex:1;
+						line-height:80rpx;
+						margin-left:20rpx;
+						color: #999999;
+						font-size:28rpx;
+					}
+					>img{
+						width: 14rpx;
+						height: 8rpx;
+						margin-right: 30rpx;
+					}
+				}
+			}
+		}
+		.scope_btn{
+			display: inline-block;
+			background: #0183FA;
+			border-radius: 10rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #FFFFFF;
+			line-height: 80rpx;
+			text-align: center;
+			padding: 0 16rpx;
+			box-sizing: border-box;
+			margin-top: 40rpx;
+			margin-left: 146rpx;
+		}
+		.scope_text{
+			margin-left: 146rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #333333;
+			margin-top: 32rpx;
+			line-height: 42rpx;
+			>text{
+				color: #0183FA;
+			}
+		}
+	}
+	.patrol_group{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		margin-top: 20rpx;
+		padding: 40rpx 30rpx 64rpx;
+		box-sizing: border-box;
+		.patrol{
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-top: 26rpx;
+			.patrol_l{
+				width: 146rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 42rpx;
+				text-align: left;
+			}
+			.patrol_r_n{
+				width: 490rpx;
+				height: 80rpx;
+				border-radius: 10rpx;
+				border: 1rpx solid #E0E0E0;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view{
+					flex:1;
+					line-height:80rpx;
+					margin-left:20rpx;
+					color: #999999;
+					font-size:28rpx;
+				}
+				>img{
+					width: 14rpx;
+					height: 8rpx;
+					margin-right: 30rpx;
+				}
+			}
+		}
+		.list{
+			margin-top: 42rpx;
+			.list_title{
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				height: 80rpx;
+				background: #F5F5F5;
+				border-radius: 10rpx 10rpx 0rpx 0rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				>img{
+					width: 30rpx;
+					height: 30rpx;
+					margin: 0 20rpx;
+				}
+			}
+			.list_header{
+				display: flex;
+				justify-content: flex-start;
+				>text{
+					flex: 1;
+					height: 80rpx;
+					background: #F5F5F5;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 80rpx;
+					text-align: center;
+					border: 1rpx solid #E0E0E0;
+				}
+				>text:nth-of-type(1){
+					border-right: none;
+				}
+			}
+			.list_li{
+				display: flex;
+				justify-content: flex-start;
+				>text{
+					flex: 1;
+					height: 80rpx;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 80rpx;
+					text-align: center;
+					border: 1rpx solid #E0E0E0;
+				}
+				>text:nth-of-type(1){
+					border-right: none;
+					border-top: none;
+				}
+				>text:nth-of-type(2){
+					border-top: none;
+				}
+			}
+			.list_bottom{
+				flex: 1;
+				height: 80rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #999999;
+				line-height: 80rpx;
+				text-align: center;
+				border: 1rpx solid #E0E0E0;
+				border-top: none;
+			}
+		}
+	}
+	.bottom_btn{
+		position: fixed;
+		bottom: 26rpx;
+		left: 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 90rpx;
+		width: 690rpx;
+		height: 90rpx;
+		background: #0183FA;
+		border-radius: 20rpx;
+		text-align: center;
+		
+	}
+	/* 指纹采集 */
+	.shade {
+	  height: 100%;
+	  width: 100%;
+	  position: fixed;
+	  display: flex;
+	  flex-direction: column;
+	  z-index: 10;
+	  background: rgba(0, 0, 0, 0.2);
+	  .null-box {
+		flex: 1;
+	  }
+	  .shade_n {
+		  position: absolute;
+		  bottom: 0;
+		  left: 0;
+		  width: 750rpx;
+		  height: 560rpx;
+		  background: #FFFFFF;
+		  border-radius: 20rpx 20rpx 0rpx 0rpx;
+		  .shade_n_title{
+			  height: 100rpx;
+			  padding: 0 30rpx;
+			  box-sizing: border-box;
+			  display: flex;
+			  justify-content:space-between;
+			  border-bottom: 1rpx solid #E0E0E0;
+			  >text:nth-of-type(1){
+				  font-size: 30rpx;
+				  font-family: PingFang SC-Medium, PingFang SC;
+				  font-weight: 400;
+				  color: #333333;
+				  line-height: 100rpx;
+			  }
+			  >text:nth-of-type(2){
+				  font-size: 30rpx;
+				  font-family: PingFang SC-Medium, PingFang SC;
+				  font-weight: 400;
+				  color: #0183FA;
+				  line-height: 100rpx;
+				  
+			  }
+		  }
+		  .shade_n_b{
+			  height: 460rpx;
+			  padding: 0 30rpx;
+			  box-sizing: border-box;
+			  overflow-y: auto;
+			  .shade_n_b_li{
+				   display: flex;
+				   justify-content:space-between;
+				   align-items: center;
+				   height: 80rpx;
+				   border-bottom: 1rpx solid #E0E0E0;
+				 >text{
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					line-height: 80rpx;
+					overflow: hidden;
+					text-overflow:ellipsis;
+					white-space: nowrap;
+				 }
+				 >img{
+					 width: 24rpx;
+					 height: 16rpx;
+					 margin-right: 14rpx;
+				 } 
+			  }
+			  .color_A{
+				  color: #333333;
+			  }
+			  .color_B{
+				  color: #0183FA;
+			  }
+			  
+			 
+		  }
+	  }
+	}
+}
+</style>

+ 348 - 0
pages_safetyExamine/patrolPlan/patrolPlanAddLab.vue

@@ -0,0 +1,348 @@
+<!-- 安全检查-发起巡查计划-选择实验室 -->
+<template>
+  <view class="examine">
+	  <view class="lab_title">
+		<picker @change="collegeChange" :value="collegeIndex" :range="collegeArray" class="lab_title_l">
+			<view class="lab_title_l_n">
+				<view>{{getData.deptName?getData.deptName:'选择学院'}}</view>
+				<img src="@/pages_safetyExamine/images/icon_06.png">
+			</view>
+		</picker>
+		<view class="lab_title_r">
+			<view class="lab_title_r_btn" @click="searchBtn">
+				<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+			</view>
+			<input type="text" v-model="getData.searchValue" placeholder="请输入实验室名称" maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
+			<view class="clear" @click="clearBtn">清除</view>
+		</view>
+	  </view>
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view>
+			
+			<view class="list">
+				<view class="list_li" v-for="(item,index) in  dataList" :key="index" @click="labSelete(index)">
+					<text :class="item.type?'color_B':'color_A'">{{item.subjectName}}-{{item.roomNumber}}</text>
+					<img v-if="item.type" src="@/pages_safetyExamine/images/icon_xzwt_xz.png">
+				</view>
+			</view>
+		</view>
+	</scroll-view>	
+	<view class="bottom_btn" @click="submitForm">保存</view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import {conditionCollegeInfo,conditionSubjectInfo} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+	  pageType:0,
+      //列表请求参数
+      getData:{
+        pageNum:1,
+        pageSize:20,
+		deptId:'',//学院id
+		deptName:'',
+		searchValue:'',
+		selectedSubIds:[],
+		subIds:[],
+      },
+	  total:0,
+	  collegeIndex :0,
+	  collegeArray:[],
+	  collegeList:[],
+	  dataList:[],
+	  seleteListLab:[],//临时存储选中的 
+	  form:{},
+	}
+  },
+  onLoad(option) {
+      this.form=JSON.parse(decodeURIComponent(option.form));
+	  if(this.form.seleteListLab.length>0){
+		  this.seleteListLab=this.form.seleteListLab;
+	  }
+	  if(option.pageType){//pageType=1添加页面进入2编辑页面进入
+	  	 this.pageType=option.pageType
+	  }
+  },
+  onShow() {
+      
+  },
+  mounted(){
+	  this.conditionCollegeInfo();
+	  this.getList(); 
+  },
+  methods: {
+	  //滚动事件
+	  scrollGet(){
+		  let self=this;
+	      if(self.total/self.getData.pageSize<=self.getData.pageNum){
+	          console.log('没有更多数据!')
+	      }else{
+			  setTimeout(function(){
+				  self.getData.pageNum += 1;
+				  self.getList(); 
+			  },1000)
+			 
+		  }
+	  },
+	  //选择学院
+	  collegeChange(e){
+		  this.collegeIndex = e.target.value;
+		  this.getData.deptId=this.collegeList[e.target.value].deptId
+		  this.getData.deptName=this.collegeList[e.target.value].deptName
+		  this.getData.pageNum=1;
+		  this.dataList=[];
+		  this.getList();
+	  },
+	  //点击选择实验室
+	  labSelete(index){
+	  	this.dataList[index].type = !this.dataList[index].type
+		
+		if(this.dataList[index].type){//判断是选中还是取消
+			if(this.seleteListLab.length>0){
+				if(this.seleteListLab.findIndex((item)=>item.subId===this.dataList[index].subId) ==-1){//等于-1说明数组里没有当前选中元素,可以添加
+					this.seleteListLab.push(this.dataList[index])
+				}
+			}else{
+				this.seleteListLab.push(this.dataList[index])
+			}
+		}else{
+			this.seleteListLab.splice(this.seleteListLab.indexOf(this.dataList[index]),1);
+		}
+	  },
+	  //实验室搜索
+	  searchBtn(){
+		  this.dataList=[];
+		  this.getList();
+	  },
+	  //清除
+	  clearBtn(){
+		  this.getData.pageNum=1;
+		  this.collegeIndex=0;
+		  this.getData.deptId='';
+		  this.getData.deptName='';
+		  this.getData.searchValue='';
+		  this.dataList=[];
+		  this.getList();
+	  },
+	  handleClick(doType){
+		  let self=this;
+		  if( doType=='subBtn'){//保存数据
+			
+		  }
+	  },
+	  //实验室-保存
+	  async submitForm(){
+	  	let _this = this;
+		let subIds=[];
+		this.$set(this.form,'subjectNum', this.seleteListLab.length)
+		this.$set(this.form,'seleteListLab', this.seleteListLab)
+		if(this.seleteListLab.length>0){
+			this.seleteListLab.forEach(function(item){
+				subIds.push(item.subId)
+			})
+			this.$set(this.form,'subIds', subIds.join(','))
+		}
+		if(this.pageType==1){
+			uni.redirectTo({
+				url: '/pages_safetyExamine/patrolPlan/patrolPlanAdd?form='+encodeURIComponent(JSON.stringify(this.form))
+			});
+		}else if(this.pageType==2){
+			uni.redirectTo({
+				url: '/pages_safetyExamine/patrolPlan/patrolPlanEdit?form='+encodeURIComponent(JSON.stringify(this.form))
+			});
+		}
+		
+	  		
+	  },
+	 
+	  //查询学院列表
+	  async conditionCollegeInfo(){
+	  	let _this = this;
+	  	const {data} = await conditionCollegeInfo();
+	  	if(data.code == 200){
+			
+			for(let i=0;i<data.data.length;i++){
+				_this.collegeArray.push(data.data[i].deptName)
+			}
+			_this.collegeList=data.data;
+			console.log()
+	  	}
+	  },
+	  async getList(){
+	      let _this = this;
+	      const {data} = await conditionSubjectInfo(_this.getData);
+	      if(data.code==200){
+			  data.rows.forEach(function(item){
+				  item.type=false;
+			  })
+			  this.dataList=[...this.dataList,...data.rows]
+			  _this.total=data.total;
+			  if(this.seleteListLab.length>0){//如果有选中的数据
+			  		for(let i=0;i<this.dataList.length;i++){
+			  			if(this.seleteListLab.findIndex((item)=>item.subId===this.dataList[i].subId) !=-1){//不等于-1说明数组里有当前元素,可以改为选中
+			  				this.dataList[i].type=true;
+			  			}else{
+			  					  
+			  			}
+			  		}
+			  }
+		  }
+      }
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		padding: 120rpx 0rpx 30rpx;
+		box-sizing: border-box;
+	}
+	.lab_title{
+		width: 750rpx;
+		height: 100rpx;
+		background: #FFFFFF;
+		position: fixed;
+		top: 0;
+		padding: 10rpx 30rpx;
+		box-sizing: border-box;
+		display: flex;
+		justify-content: flex-start;
+		
+		.lab_title_l{
+			width: 250rpx;
+			height: 80rpx;
+			margin-right: 20rpx;
+			.lab_title_l_n{
+				width: 250rpx;
+				height: 80rpx;
+				border-radius: 10rpx;
+				border: 1rpx solid #E0E0E0;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view{
+					flex:1;
+					line-height:80rpx;
+					margin-left:20rpx;
+					color: #999999;
+					font-size:28rpx;
+			        white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+				}
+				>img{
+					width: 14rpx;
+					height: 8rpx;
+					margin-right: 30rpx;
+				}
+			}
+		}
+		.lab_title_r{
+			width: 420rpx;
+			height: 80rpx;
+			position:relative;
+			border-radius: 10rpx;
+			border: 1rpx solid #E0E0E0;
+			.lab_title_r_btn{
+				width: 60rpx;
+				height: 80rpx
+				position: absolute;
+				top: 0rpx;
+				left:0rpx;
+				>img{
+					width: 20rpx;
+					height: 20rpx;
+					position: absolute;
+					top: 30rpx;
+					left: 24rpx;
+				}
+			}
+			>input{
+				width: 274rpx;
+				height: 80rpx;
+				position: absolute;
+				top: 0rpx;
+				left: 60rpx;
+			}
+			.clear{
+				width: 60rpx;
+				height: 80rpx
+				position: absolute;
+				top: 0rpx;
+				right:20rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #0183FA;
+				line-height: 80rpx;
+			}
+		}
+	}
+	.list{
+		background: #FFFFFF;
+		border-radius: 20rpx 20rpx 0rpx 0rpx;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		margin: 0 30rpx;
+		.list_li{
+			display: flex;
+			justify-content:space-between;
+			align-items: center;
+			height: 80rpx;
+			border-bottom: 1rpx solid #E0E0E0;
+			>text{
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				line-height: 80rpx;
+				overflow: hidden;
+				text-overflow:ellipsis;
+				white-space: nowrap;
+			}
+			>img{
+				width: 24rpx;
+				height: 16rpx;
+				margin-right: 14rpx;
+			} 
+		}
+		.list_li:last-child{
+			border: none;
+		}
+		.color_A{
+			color: #333333;
+		}
+		.color_B{
+			color: #0183FA;
+		}
+	}
+	.bottom_btn{
+		position: fixed;
+		bottom: 26rpx;
+		left: 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 90rpx;
+		width: 690rpx;
+		height: 90rpx;
+		background: #0183FA;
+		border-radius: 20rpx;
+		text-align: center;
+		
+	}
+}
+</style>

+ 283 - 0
pages_safetyExamine/patrolPlan/patrolPlanAddMember.vue

@@ -0,0 +1,283 @@
+<!-- 安全检查-发起巡查计划-巡查组 -->
+<template>
+  <view class="examine">
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view>
+			<view class="lab_title">
+				<view class="lab_title_n">
+					<view class="lab_title_r_btn" @click="searchBtn">
+						<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+					</view>
+					<input type="text" v-model="getData.groupName" placeholder="请输入巡查组名称" maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
+				</view>
+			</view>
+			<view class="list">
+				<view class="list_li" v-for="(item,index) in  dataList" :key="index" @click="labSelete(index)">
+					<text :class="item.type?'color_B':'color_A'">{{item.groupName}}</text>
+					<img v-if="item.type" src="@/pages_safetyExamine/images/icon_xzwt_xz.png">
+				</view>
+			</view>
+		</view>
+	</scroll-view>	
+	<view class="bottom_btn" @click="submitForm">保存</view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import { checkGroupList,checkGroupDetail} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+	  pageType:0,
+      //列表请求参数
+      getData:{
+		checkLevel:'0',
+		groupName:'',
+		checkLevel:'',
+		
+		
+      },
+	  total:0,
+	  dataList:[],
+	  seleteListMember:[],//临时存储选中巡查组
+	  checkMemberDtoList:[],//临时存储选中的 
+	  form:{},
+	}
+  },
+  onLoad(option) {
+	  if(option.form){
+		  this.form=JSON.parse(decodeURIComponent(option.form));
+		  if(this.form.seleteListMember.length>0){
+		  	 this.seleteListMember=this.form.seleteListMember;
+		  }
+		  this.getData.checkLevel=this.form.groupDataType
+	  }
+	  if(option.pageType){//pageType=1添加页面进入2编辑页面进入
+		  this.pageType=option.pageType
+	  }
+  },
+  onShow() {
+      this.getList(); 
+  },
+  mounted(){
+	  
+  },
+  methods: {
+	  //滚动事件
+	  scrollGet(){
+		  let self=this;
+	      if(self.total<=self.getData.pageNum){
+	          console.log('没有更多数据!')
+	      }else{
+			  setTimeout(function(){
+				  self.getData.pageNum += 1;
+				  self.getList(); 
+			  },1000)
+			 
+		  }
+	  },
+	  //点击选择实验室
+	  labSelete(index){
+		let _this = this;
+	  	this.dataList[index].type = !this.dataList[index].type
+		if (_this.dataList[index].type == true) {
+			_this.dataList.forEach(function(item2) {
+			  if (item2.id == _this.dataList[index].id) {
+				item2.type = true
+			  } else {
+				item2.type = false
+			  }
+			})
+		}
+		if(this.dataList[index].type){//判断是选中还是取消
+			this.seleteListMember.push(this.dataList[index])
+		}else{
+			this.seleteListMember=[];
+		}
+	  },
+	  //实验室搜索
+	  searchBtn(){
+		  this.dataList=[];
+		  this.getList();
+	  },
+	  handleClick(doType){
+		  let self=this;
+		  if( doType=='subBtn'){//保存数据
+			  
+		  }
+	  },
+	  //巡查组-保存
+	  async submitForm(){
+	  	let _this = this;
+		let id=this.seleteListMember[0].id
+		this.form.checkMemberDtoList=[];
+		
+		this.$set(this.form,'checkGroupId',this.seleteListMember[0].id)
+		this.$set(this.form,'checkGroupName',this.seleteListMember[0].groupName)
+	  	const {data} = await checkGroupDetail({id:id,selectEnable:'1'});
+	  	if(data.code == 200){
+			let obj={};
+			for(let i=0;i<data.data.checkGroupMemberList.length;i++){
+				 obj={
+					"deptId":data.data.checkGroupMemberList[i].deptId,
+					"deptName":data.data.checkGroupMemberList[i].deptName,
+					"enable":data.data.checkGroupMemberList[i].enable,
+					"jobNum":data.data.checkGroupMemberList[i].jobNum,
+					"name":data.data.checkGroupMemberList[i].name,
+					"userId":data.data.checkGroupMemberList[i].userId,
+					"userType":data.data.checkGroupMemberList[i].userType
+				}
+				this.form.checkMemberDtoList.push(obj)	
+			}
+			
+			
+			
+			if(this.pageType==1){
+				uni.redirectTo({
+				    url: '/pages_safetyExamine/patrolPlan/patrolPlanAdd?form='+encodeURIComponent(JSON.stringify(this.form))
+				});
+			}else if(this.pageType==2){
+				uni.redirectTo({
+				    url: '/pages_safetyExamine/patrolPlan/patrolPlanEdit?form='+encodeURIComponent(JSON.stringify(this.form))
+				});
+			}
+			
+	  	}
+		
+	  },
+	  
+	  async getList(){
+		 
+	      let _this = this;
+	      const {data} = await checkGroupList(_this.getData);
+	      if(data.code==200){
+			  
+			  if(data.data){
+				  data.data.forEach(function(item){
+					  item.type=false
+				  })
+			  }
+			  this.dataList=[...this.dataList,...data.data]	
+			  //如果有选中的数据
+			  if(this.seleteListMember.length>0){
+					for(let i=0;i<this.dataList.length;i++){
+						if(this.seleteListMember[0].id==this.dataList[i].id){
+							this.dataList[i].type=true;
+						}
+					}
+			  }
+			  this.total=data.data.total;
+		  }
+      }
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		padding: 120rpx 0rpx 30rpx;
+		box-sizing: border-box;
+	}
+	.lab_title{
+		width: 750rpx;
+		height: 100rpx;
+		background: #FFFFFF;
+		position: fixed;
+		top: 0;
+		padding: 10rpx 30rpx;
+		box-sizing: border-box;
+		.lab_title_n{
+			width: 690rpx;
+			height: 80rpx;
+			position:relative;
+			border-radius: 10rpx;
+			border: 1rpx solid #E0E0E0;
+			.lab_title_r_btn{
+				width: 60rpx;
+				height: 80rpx
+				position: absolute;
+				top: 0rpx;
+				left:0rpx;
+				>img{
+					width: 20rpx;
+					height: 20rpx;
+					position: absolute;
+					top: 30rpx;
+					left: 24rpx;
+				}
+			}
+			>input{
+				width: 360rpx;
+				height: 80rpx;
+				position: absolute;
+				top: 0rpx;
+				left: 60rpx;
+			}
+		}
+	}
+	.list{
+		background: #FFFFFF;
+		border-radius: 20rpx 20rpx 0rpx 0rpx;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		margin: 0 30rpx;
+		.list_li{
+			display: flex;
+			justify-content:space-between;
+			align-items: center;
+			height: 80rpx;
+			border-bottom: 1rpx solid #E0E0E0;
+			>text{
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				line-height: 80rpx;
+				overflow: hidden;
+				text-overflow:ellipsis;
+				white-space: nowrap;
+			}
+			>img{
+				width: 24rpx;
+				height: 16rpx;
+				margin-right: 14rpx;
+			} 
+		}
+		.list_li:last-child{
+			border: none;
+		}
+		.color_A{
+			color: #333333;
+		}
+		.color_B{
+			color: #0183FA;
+		}
+	}
+	.bottom_btn{
+		position: fixed;
+		bottom: 26rpx;
+		left: 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 90rpx;
+		width: 690rpx;
+		height: 90rpx;
+		background: #0183FA;
+		border-radius: 20rpx;
+		text-align: center;
+		
+	}
+}
+</style>

+ 877 - 0
pages_safetyExamine/patrolPlan/patrolPlanDetail.vue

@@ -0,0 +1,877 @@
+<!-- 安全检查-发起巡查计划 -->
+<template>
+  <view class="examine">
+	<view class="tabTitle">
+		<view class="tabTitle_li" @tap="tabClick(index)"  :key="index" v-for="(item,index) in tabText">
+			<view :class="{on:curTab==index}" class="tabTitle_text">{{item}}</view>
+		    <view :class="{on:curTab==index}" class="tabTitle_across"></view>
+		</view>
+	</view>
+	<view class="header" v-if="pageType==1">
+		<view class="line"></view>
+		<view class="tabTitle_tow">
+			<view class="tabTitle_tow_li" @tap="tabClickTow(index)"  :key="index" v-for="(item,index) in tabTextTow">
+				<view :class="{on:curTabTow==index}" class="tabTitle_tow_text">{{item}}</view>
+			    <view :class="{on:curTabTow==index}" class="tabTitle_tow_across"></view>
+			</view>
+		</view>
+		<view class="lab_title">
+			<picker @change="collegeChange" :value="collegeIndex" :range="collegeArray" class="lab_title_l">
+				<view class="lab_title_l_n">
+					<view>{{collegeArray[collegeIndex]}}</view>
+					<img src="@/pages_safetyExamine/images/icon_06.png">
+				</view>
+			</picker>
+			<view class="lab_title_r">
+				<view class="lab_title_r_btn" @click="searchBtn">
+					<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+				</view>
+				<input type="text" v-model="getData.name" placeholder="请输入实验室名称" maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
+			</view>
+		</view>
+	</view>
+	
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view v-if="pageType==0" style="padding: 0 30rpx;box-sizing: border-box;">
+			<view class="delay_inspect" >
+				<view class="delay_inspect_l" v-if="inspectState==0">待检查实验室:<text>22间</text></view>
+				<view class="delay_inspect_r" v-if="inspectState==0">未开始</view>
+				<view class="delay_inspect_l" v-if="inspectState==1">检查进度:<text>待检查2/检查中2/已检查1</text></view>
+				<view class="delay_inspect_r_tow" v-if="inspectState==1">进行中</view>
+			</view>
+			<view class="basics">
+				<view class="basics_li">
+					<text>计划标题:</text>
+					<text>2023年度4月份安全检查</text>
+				</view>
+				<view class="basics_li">
+					<text>检查类型:</text>
+					<text>校院巡查</text>
+				</view>
+				<view class="basics_li">
+					<text>检查周期:</text>
+					<text>2023-04-01至2023-04-01</text>
+				</view>
+				<view class="basics_li" style="border:none;">
+					<text>检查范围:</text>
+					<text>全校</text>
+				</view>
+				<view class="scope_text">已选择<text>{{form.inspectScope.length}}</text>个学院,共<text>0</text>间实验室</view>
+			</view>
+			
+			<view class="attachment">
+				<view class="attachment_t">
+					<text>材料附件</text>
+					<text>点击文件标题查看</text>
+				</view>
+				<view class="attachment_li">
+					<img src="@/pages_safetyExamine/images/icon_djc_wj.png"/>
+					<text>文件标题文件标题</text>
+					<img class="attachment_li_del" src="@/pages_safetyExamine/images/icon_fjgk_sc.png"/>
+				</view>
+			</view>
+			<view class="patrol_group">
+				<view class="patrol">
+					<view class="patrol_l">巡查组:</view>
+					<view class="patrol_r">校级巡查组</view>
+				</view>
+				<view class="list">
+					<view class="list_title"><img src="@/pages_safetyExamine/images/icon_jcjh_cy.png">成员</view>
+					<view class="list_header"><text>工号</text><text>姓名</text></view>
+					<view class="list_li"><text>12345678</text><text>刘洋</text></view>
+					<view class="list_li"><text>12345678</text><text>刘洋</text></view>
+					<view class="list_li"><text>12345678</text><text>刘洋</text></view>
+					<view class="list_bottom">无数据</view>
+				</view>
+			</view>
+		</view>
+		<view v-if="pageType==1">
+			<view class="list_three">
+				<view class="list_three_li" v-for="(item,index) in  dataList" :key="index">
+					<view class="list_three_li_t">
+						<view class="list_three_li_t_l">
+							<img v-if="item.checkRange==1" src="@/pages_safetyExamine/images/icon_xyxc_qx.png"/>
+							<img v-if="item.checkRange==2" src="@/pages_safetyExamine/images/icon_xyxc_xy.png"/>
+							<img v-if="item.checkRange==3" src="@/pages_safetyExamine/images/icon_xyxc_sys.png"/>
+							<text></text>
+						</view>
+						<view class="list_three_li_t_c">实验室名称-房间号</view>
+						<view class="list_three_li_t_c2">已逾期</view>
+						<view class="list_three_li_t_r"></view>
+					</view>
+					<view class="list_three_li_m">
+						<view class="list_three_li_m_t">计划标题计划标题计划标题计划标题计划标题计划...</view>
+						<view class="list_three_li_m_b">
+							<text class="blue_color">未开始</text>
+							<text>校院巡查</text>
+							<text>环境与测绘学院</text>
+						</view>
+					</view>
+					<view class="list_three_li_b">
+						<img src="@/pages_safetyExamine/images/icon_djcsys.png"/>
+						<text>整改进度:</text>
+						<text>待检查22/待复核1/已完成/暂无法整改</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+	
+	</scroll-view>	
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import { } from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		pageType:0,
+		//列表请求参数
+		getData:{
+		 pageNum:1,
+		 pageSize:20,
+		},
+		inspectState:0,//检查状态 0 未开始 1进行中
+		tabText:['检查计划','检查管理'],
+		curTab:0,
+		tabTextTow:['全部','未开始','进行中','已结束'],
+		curTabTow:0,
+		form:{
+			name:'',
+			type:'校院巡查',
+			startTime:'',
+			endTime:'',
+			inspectScope:[],
+			tiemQuickList:[],
+			scopeIndex:'',
+			seleteListLab:[],
+			patrolIndex:'',
+			seleteListMember:[],
+		},
+		collegeIndex :0,
+		collegeArray:['选择学院','学院名称1','学院名称2','学院名称3',],
+		dataList:[{name:'计划标题计划标题计划标题计划标题',},{name:'计划标题计划标题计划标题计划标题',},{name:'计划标题计划标题计划标题计划标题',},{name:'计划标题计划标题计划标题计划标题',},{name:'计划标题计划标题计划标题计划标题',}],
+	}
+  },
+  onLoad(option) {
+	 if(option.form){
+		this.form=JSON.parse(decodeURIComponent(option.form)); 
+		console.log(this.form)
+	 }
+  },
+  onShow() {
+	  
+  },
+  mounted(){
+	  
+  },
+  methods: {
+		//顶部tab点击
+		tabClick(index) {
+			this.curTab = index;
+			this.pageType = index;
+		},
+		//顶部tab点击
+		tabClickTow(index) {
+			this.curTabTow = index;
+		},
+		//选择学院
+		collegeChange(e){
+			this.collegeIndex = e.target.value;
+			this.dataList=[];
+			this.getList();  
+		},
+		//实验室搜索
+		searchBtn(){
+			this.dataList=[];
+			this.getList();
+		},
+		//滚动事件
+		scrollGet(){
+			let self=this;
+			if(self.total<=self.getData.pageNum){
+			    console.log('没有更多数据!')
+			}else{
+					setTimeout(function(){
+						self.getData.pageNum += 1;
+						self.getList(); 
+					},1000)
+						 
+			}
+		},
+	    handleClick(doType){
+		  let self=this;
+		  
+		  
+	    },
+		async getList(){
+				  let list=[{name:'实验室名称-房间号',type:false,id:4},{name:'实验室名称-房间号',type:false,id:5}]
+				  this.total=5;
+				  this.dataList=[...this.dataList,...list]
+				
+				  
+		 //    let self = this;
+		 //    let obj = {
+		 //        pageNum:this.getData.page,
+		 //        pageSize:this.getData.pageSize,
+		 //    };
+		 //    const {data} = await groupList(obj);
+		 //    if(data.code==200){
+					 //  this.total=data.total;
+					 //  this.dataList=[...this.dataList,...data.data]
+				  // }
+		},
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	// padding: 0 30rpx;
+	// box-sizing: border-box;
+	padding-bottom: 30rpx;
+	box-sizing: border-box;
+	.blue_color{
+		color: #0183FA;
+		border: 1rpx solid #0183FA;
+	}
+	.red_color{
+		color: #FF4545;
+		border: 1rpx solid #FF4545;
+	}
+	.green_color{
+		color: #1FA50D;
+		border: 1rpx solid #1FA50D;
+	}
+	/* 切换按钮 */
+	.tabTitle{
+		width:100%;
+		height: 100rpx;
+		background: #fff;
+		display flex;
+		justify-content: center;
+		align-items: center;
+		position: fixed;
+		top: 0;
+		z-index: 100;
+		box-shadow: 0rpx 3rpx 8rpx 0rpx rgba(0,0,0,0.16);
+		.tabTitle_li{
+			position: relative;
+			width:372rpx;
+			text-align center;
+			.tabTitle_text{
+				display: inline-block;
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 46rpx;
+				position: relative;
+				>text{
+					position:absolute;
+					min-width: 30rpx;
+					min-height: 30rpx;
+					border-radius:54%;
+					background: #E80000;
+					font-size: 18rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #FFFFFF;
+					text-align: center;
+					line-height: 30rpx;
+					margin-left: 6rpx;
+					padding:2rpx;
+					box-sizing: border-box;
+				}
+				&.on{
+					color:#0183FA;
+				}
+			}
+			.tabTitle_across{
+				width: 50rpx;
+				height: 4rpx;
+				background: #0183FA;
+				border-radius: 2rpx;
+				margin-left 162rpx;
+				display none;
+				&.on{
+					display block;
+				}
+			}
+	
+		}
+		.tabTitle_li:nth-of-type(1)::after{
+			content: '';
+			position: absolute;
+			top: 0rpx;
+			right:  0rpx;
+			width: 1rpx;
+			height: 50rpx;
+			background: #E0E0E0;
+		}
+	}
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		
+	}
+	/* 检查计划---------------------------------------------------------------------------------- */
+	.delay_inspect{
+		width: 690rpx;
+		height: 100rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		.delay_inspect_l{
+			font-size: 28rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #333333;
+			line-height: 100rpx;
+			>text{
+				color: #0183FA;
+			}
+		}
+		.delay_inspect_r{
+			font-size: 26rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #0183FA;
+			line-height: 40rpx;
+			width: 120rpx;
+			height: 40rpx;
+			border-radius: 6rpx;
+			text-align: center;
+			border: 1rpx solid #0183FA;
+		}
+		.delay_inspect_r_tow{
+			font-size: 26rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #FF4545;
+			line-height: 40rpx;
+			width: 120rpx;
+			height: 40rpx;
+			border-radius: 6rpx;
+			text-align: center;
+			border: 1rpx solid rgba(255,69,69,0.898);
+		}
+	}
+	
+	.basics{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		margin-top: 20rpx;
+		padding: 30rpx 30rpx 32rpx;
+		box-sizing: border-box;
+		.basics_li{
+			height: 80rpx;
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1rpx solid #D8D8D8;
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 80rpx;
+				width: 140rpx;
+			}
+			>text:nth-of-type(2){
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				text-align: right;
+			}
+		}
+		.scope_text{
+			width: 100%;
+			font-size: 26rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #999999;
+			line-height: 36rpx;
+			text-align: right;
+			>text{
+				color: #0183FA;
+			}
+		}
+	}
+	.attachment{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		margin-top: 20rpx;
+		padding-bottom: 32rpx;
+		box-sizing: border-box;
+		.attachment_t{
+			border-bottom: 1rpx solid #D8D8D8;
+			>text:nth-of-type(1){
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 110rpx;
+				margin-left: 28rpx;
+			}
+			>text:nth-of-type(2){
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #999999;
+				line-height: 110rpx;
+				margin-left: 24rpx;
+			}
+		}
+		.attachment_li{
+			height: 40rpx;
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-top: 32rpx;
+			>img{
+				width: 30rpx;
+				height: 26rpx;
+				margin-right: 20rpx;
+				margin-left: 50rpx;
+			}
+			>text{
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #0183FA;
+				line-height: 40rpx;
+				white-space: nowrap;
+				overflow: hidden;
+				text-overflow: ellipsis;
+			}
+			.attachment_li_del{
+				width: 30rpx;
+				height: 30rpx;
+			}
+		}
+	}
+	.patrol_group{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		margin-top: 20rpx;
+		padding: 40rpx 30rpx 64rpx;
+		box-sizing: border-box;
+		.patrol{
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-top: 26rpx;
+			.patrol_l{
+				width: 146rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 42rpx;
+				text-align: left;
+			}
+			.patrol_r{
+				flex: 1;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 42rpx;
+				text-align: right;
+			}
+		}
+		.list{
+			margin-top: 42rpx;
+			.list_title{
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				height: 80rpx;
+				background: #F5F5F5;
+				border-radius: 10rpx 10rpx 0rpx 0rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				>img{
+					width: 30rpx;
+					height: 30rpx;
+					margin: 0 20rpx;
+				}
+			}
+			.list_header{
+				display: flex;
+				justify-content: flex-start;
+				>text{
+					flex: 1;
+					height: 80rpx;
+					background: #F5F5F5;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 80rpx;
+					text-align: center;
+					border: 1rpx solid #E0E0E0;
+				}
+				>text:nth-of-type(1){
+					border-right: none;
+				}
+			}
+			.list_li{
+				display: flex;
+				justify-content: flex-start;
+				>text{
+					flex: 1;
+					height: 80rpx;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 80rpx;
+					text-align: center;
+					border: 1rpx solid #E0E0E0;
+				}
+				>text:nth-of-type(1){
+					border-right: none;
+					border-top: none;
+				}
+				>text:nth-of-type(2){
+					border-top: none;
+				}
+			}
+			.list_bottom{
+				flex: 1;
+				height: 80rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #999999;
+				line-height: 80rpx;
+				text-align: center;
+				border: 1rpx solid #E0E0E0;
+				border-top: none;
+			}
+		}
+	}
+	/* 检查管理----------------------------------------------------------------------------------- */
+	/* 切换按钮 */
+	.header{
+		width:100%;
+		position: fixed;
+		top: 100rpx;
+		z-index: 100;
+		.line{
+			width: 100%;
+			height: 20rpx;
+			background: #F5F5F5;
+		}
+		.tabTitle_tow{
+			width:100%;
+			height: 100rpx;
+			background: #fff;
+			display flex;
+			justify-content: flex-start;
+			align-items: center;
+			border-bottom: 1rpx solid #E0E0E0;
+			.tabTitle_tow_li{
+				position: relative;
+				width:146rpx;
+				text-align center;
+				.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: 46rpx;
+					display none;
+					&.on{
+						display block;
+					}
+				}
+		
+			}
+		}
+		.lab_title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			padding: 20rpx 30rpx;
+			box-sizing: border-box;
+			display: flex;
+			justify-content: flex-start;
+			
+			.lab_title_l{
+				width: 250rpx;
+				height: 60rpx;
+				margin-right: 20rpx;
+				.lab_title_l_n{
+					width: 250rpx;
+					height: 60rpx;
+					border-radius: 10rpx;
+					border: 1rpx solid #E0E0E0;
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					>view{
+						flex:1;
+						line-height:60rpx;
+						margin-left:20rpx;
+						color: #999999;
+						font-size:28rpx;
+					}
+					>img{
+						width: 14rpx;
+						height: 8rpx;
+						margin-right: 30rpx;
+					}
+				}
+			}
+			.lab_title_r{
+				width: 420rpx;
+				height: 60rpx;
+				position:relative;
+				border-radius: 10rpx;
+				border: 1rpx solid #E0E0E0;
+				.lab_title_r_btn{
+					width: 60rpx;
+					height: 60rpx
+					position: absolute;
+					top: 0rpx;
+					left:0rpx;
+					>img{
+						width: 20rpx;
+						height: 20rpx;
+						position: absolute;
+						top: 20rpx;
+						left: 24rpx;
+					}
+				}
+				>input{
+					width: 360rpx;
+					height: 60rpx;
+					position: absolute;
+					top: 0rpx;
+					left: 60rpx;
+				}
+			}
+		}
+		
+	}
+	.list_three{
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		margin-top: 340rpx;
+		.list_three_li{
+			position: relative;
+			width: 690rpx;
+			height: 360rpx;
+			background: #fff;
+			border-radius: 10rpx;
+			overflow: hidden;
+			margin-bottom: 20rpx;
+			.list_three_li_t{
+				width: 100%;
+				position: absolute;
+				left: 0;
+				top: 0;
+				.list_three_li_t_l{
+					>img{
+						width: 70rpx;
+						height: 70rpx;
+					}
+					>text{
+						position: absolute;
+						left: -15rpx;
+						top: 76rpx;
+						display: inline-block;
+						width: 30rpx;
+						height: 30rpx;
+						background: #F5F5F5;
+						border-radius: 15rpx;
+					}
+				}
+				.list_three_li_t_c{
+					width: 630rpx;
+					height: 110rpx;
+					position: absolute;
+					left: 30rpx;
+					top: 0;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 110rpx;
+					border-bottom: 1rpx dashed #D8D8D8;
+					overflow: hidden;
+					text-overflow:ellipsis;
+					white-space: nowrap;
+					padding-right: 60rpx;
+					box-sizing: border-box;
+				}
+				.list_three_li_t_c2{
+					position: absolute;
+					right: 20rpx;
+					top: 38rpx;
+					width: 120rpx;
+					height: 40rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #FF5757;
+					line-height: 40rpx;
+					border: 1rpx solid #FF5757;
+					border-radius: 6rpx;
+					text-align: center;
+				}
+				.list_three_li_t_r{
+					position: absolute;
+					right:-15rpx;
+					top: 76rpx;
+					width: 30rpx;
+					height: 30rpx;
+					background:#F5F5F5;
+					border-radius: 15rpx;
+				}
+			}
+			.list_three_li_m{
+				position: absolute;
+				top: 110rpx;
+				left: 0;
+				width: 690rpx;
+				height: 158rpx;
+				padding-left: 30rpx;
+				box-sizing: border-box;
+				.list_three_li_m_t{
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #666666;
+					line-height: 40rpx;
+					margin-top:22rpx;
+				}
+				.list_three_li_m_b{
+					margin-top:26rpx;
+					>text:nth-of-type(1){
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						line-height: 40rpx;
+						border-radius: 6rpx;
+						padding: 0 20rpx;
+						margin-right: 14rpx;
+					}
+					>text:nth-of-type(2){
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #0183FA;
+						line-height: 40rpx;
+						padding: 0 8rpx;
+						border-radius: 6rpx;
+						background: rgba(1,131,250,0.1);
+						margin-right: 24rpx;
+					}
+					>text:nth-of-type(3){
+						display: inline-block;
+						width: 380rpx;
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 26rpx;
+						overflow: hidden;
+						text-overflow:ellipsis;
+						white-space: nowrap;
+						
+					}
+				}
+			}
+			.list_three_li_b{
+				height: 80rpx;
+				position: absolute;
+				top: 278rpx;
+				left: 0;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				border-top: 1rpx solid #E0E0E0;
+				>img{
+					width: 24rpx;
+					height: 30rpx;
+					margin-right: 26rpx;
+					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){
+					flex:1;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #0183FA;
+					line-height: 28rpx;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+				}
+			}
+		}
+	}
+	.bottom_btn{
+		position: fixed;
+		bottom: 26rpx;
+		left: 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 90rpx;
+		width: 690rpx;
+		height: 90rpx;
+		background: #0183FA;
+		border-radius: 20rpx;
+		text-align: center;
+		
+	}
+}
+</style>

Разлика између датотеке није приказан због своје велике величине
+ 1538 - 0
pages_safetyExamine/patrolPlan/patrolPlanEdit.vue


+ 431 - 0
pages_safetyExamine/patrolPlan/patrolPlanList.vue

@@ -0,0 +1,431 @@
+<!-- 安全检查-发起巡查计划 -->
+<template>
+  <view class="examine">
+	  <view class="tabTitle">
+		<view class="tabTitle_li" @tap="tabClick(index)"  :key="index" v-for="(item,index) in tabText">
+			<view :class="{on:curTab==index}" class="tabTitle_text">{{item}}</view>
+			<view :class="{on:curTab==index}" class="tabTitle_across"></view>
+		</view>
+	  </view>
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view>
+			<view class="search">
+				<view class="search_btn"  @click="searchBtn">
+					<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+				</view>
+				<input type="text" v-model="getData.searchValue" placeholder="计划标题" maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
+			</view>
+			<view class="list">
+				<view class="list_li" v-for="(item,index) in  dataList" :key="index" @click="handleClick(item,'edit')">
+					<view class="list_li_t">
+						<view class="list_li_t_l">
+							<img v-if="item.checkRange==1" src="@/pages_safetyExamine/images/icon_xyxc_qx.png"/>
+							<img v-if="item.checkRange==2" src="@/pages_safetyExamine/images/icon_xyxc_xy.png"/>
+							<img v-if="item.checkRange==3" src="@/pages_safetyExamine/images/icon_xyxc_sys.png"/>
+							<text></text>
+						</view>
+						<view class="list_li_t_c">{{item.title}}</view>
+						<view class="list_li_t_c2" v-if="item.isOverdue==1">已逾期</view>
+						<view class="list_li_t_r"></view>
+					</view>
+					<view class="list_li_m">
+						<view class="list_li_m_t">计划周期:{{item.cycleStartTime}}至{{item.cycleEndTime}}</view>
+						<view class="list_li_m_b">
+							<text class="blue_color" v-if="item.checkStatus==1">未开始</text>
+							<text class="red_color" v-if="item.checkStatus==2">进行中</text>
+							<text class="green_color" v-if="item.checkStatus==3">已结束</text>
+							<text>{{item.checkType==1?'校院巡查':'实验室自查'}}</text>
+						</view>
+					</view>
+					<view class="list_li_b">
+						<img src="@/pages_safetyExamine/images/icon_djcsys.png"/>
+						<text v-if="item.checkStatus==1">待检查实验室:</text>
+						<text v-if="item.checkStatus==1">{{item.subjectNum}}间</text>
+						<text v-if="item.checkStatus==2 || item.checkStatus==3">检查进度:</text>
+						<text v-if="item.checkStatus==2 || item.checkStatus==3">{{item.checkSchedule}}间</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<img class="null-img" v-if="!dataList[0]" src="@/images/null-data-1.png">
+	</scroll-view>	
+	<view class="bottom_btn" @click="handleClick('','subBtn')">{{subBtnTitle}}</view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import {checkPlanList} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+	  pageType:0,
+      //列表请求参数
+      getData:{
+        pageNum:1,
+        pageSize:20,
+		searchValue:'',
+		checkType:'',
+      },
+	  total:0,
+	  tabText:['全部','未开始','进行中','已结束'],
+	  curTab:0,
+	  dataList:[],
+	  subBtnTitle:'发起巡查计划',
+    }
+  },
+  onLoad(option) {
+	  console.log(option.pageType)
+	  if(option.pageType==1){
+		  this.getData.checkType=option.pageType
+		  uni.setNavigationBarTitle({
+		  		title:'校院巡查计划'
+		  })
+		  this.subBtnTitle='发起巡查计划';
+	  }else if(option.pageType==2){
+		   this.getData.checkType=option.pageType
+		  uni.setNavigationBarTitle({
+		  		title:'实验室自查计划'
+		  })
+		  this.subBtnTitle='发起自查计划';
+	  }
+		
+  },
+  onShow() {
+      this.getList(); 
+  },
+  mounted(){
+	  
+  },
+  methods: {
+	  //滚动事件
+	  scrollGet(){
+		  let self=this;
+	      if(self.total/self.getData.pageSize<=self.getData.pageNum){
+	          console.log('没有更多数据!')
+	      }else{
+			  setTimeout(function(){
+				  self.getData.pageNum += 1;
+				  self.getList(); 
+			  },1000)
+			 
+		  }
+	  },
+	  //实验室搜索
+	  searchBtn(){
+		  console.log(1)
+		  this.dataList=[];
+		  this.getList();
+	  },
+	  //顶部tab点击
+	  tabClick(index) {
+	  	this.curTab = index;
+		this.getData.pageNum=1;
+		this.dataList=[];
+		this.getData.checkStatus=index;
+		this.getList()
+	  },
+	  handleClick(row,doType){
+		  let self=this;
+		  
+		  if( doType=='subBtn'){//发起巡查计划	
+			 uni.redirectTo({
+			     url: '/pages_safetyExamine/patrolPlan/patrolPlanAdd?pageType='+this.getData.checkType
+			 });
+		  }else if(doType=='edit'){//编辑
+			  uni.redirectTo({
+			      url: '/pages_safetyExamine/patrolPlan/patrolPlanEdit?pageType='+row.checkType+'&id='+row.id
+			  });
+		  }
+		  
+	  },
+	  async getList(){
+		  let self = this;
+		  const {data} = await checkPlanList(this.getData);
+		  if(data.code==200){
+			  this.dataList=[...this.dataList,...data.data.records]
+			  this.total=data.data.total;
+		  }
+      }
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	.null-img{
+		display block
+		width:276rpx;
+		height:321rpx;
+		margin:100rpx 0 0 274rpx;
+	}
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		padding-bottom: 128rpx;
+		padding-top: 100rpx;
+	}
+	.blue_color{
+		color: #0183FA;
+		border: 1rpx solid #0183FA;
+	}
+	.red_color{
+		color: #FF4545;
+		border: 1rpx solid #FF4545;
+	}
+	.green_color{
+		color: #1FA50D;
+		border: 1rpx solid #1FA50D;
+	}
+	/* 切换按钮 */
+	.tabTitle{
+		width:100%;
+		height: 100rpx;
+		background: #fff;
+		display flex;
+		justify-content: flex-start;
+		align-items: center;
+		position: fixed;
+		top: 0;
+		z-index: 100;
+		.tabTitle_li{
+			position: relative;
+			width:146rpx;
+			text-align center;
+			.tabTitle_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_across{
+				width: 50rpx;
+				height: 4rpx;
+				background: #0183FA;
+				border-radius: 2rpx;
+				margin-left: 46rpx;
+				display none;
+				&.on{
+					display block;
+				}
+			}
+	
+		}
+	}
+	.search{
+		width: 750rpx;
+		height: 100rpx;
+		background: #FFFFFF;
+		padding: 20rpx 30rpx;
+		box-sizing: border-box;
+		position: relative;
+		margin-top: 20rpx;
+		.search_btn{
+			width: 70rpx;
+			height: 60rpx;
+			position: absolute;
+			top: 20rpx;
+			left: 30rpx;
+			z-index: 200;
+			>img{
+				width: 20rpx;
+				height: 20rpx;
+				position: absolute;
+				top: 20rpx;
+				left: 24rpx;
+			}
+		}
+		
+		>input{
+			position: absolute;
+			top: 20rpx;
+			left: 30rpx;
+			width: 690rpx;
+			height: 60rpx;
+			border-radius: 50rpx;
+			opacity: 1;
+			border: 1rpx solid #E0E0E0;
+			padding-left: 74rpx;
+			box-sizing: border-box;
+		}
+	}
+	.list{
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		margin-top: 20rpx;
+		.list_li{
+			position: relative;
+			width: 690rpx;
+			height: 360rpx;
+			background: #fff;
+			border-radius: 10rpx;
+			overflow: hidden;
+			margin-bottom: 20rpx;
+			.list_li_t{
+				width: 100%;
+				position: absolute;
+				left: 0;
+				top: 0;
+				.list_li_t_l{
+					>img{
+						width: 70rpx;
+						height: 70rpx;
+					}
+					>text{
+						position: absolute;
+						left: -15rpx;
+						top: 76rpx;
+						display: inline-block;
+						width: 30rpx;
+						height: 30rpx;
+						background: #F5F5F5;
+						border-radius: 15rpx;
+					}
+				}
+				.list_li_t_c{
+					width: 570rpx;
+					height: 110rpx;
+					position: absolute;
+					left: 30rpx;
+					top: 0;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 110rpx;
+					border-bottom: 1rpx dashed #D8D8D8;
+					overflow: hidden;
+					text-overflow:ellipsis;
+					white-space: nowrap;
+					padding-right: 60rpx;
+					box-sizing: border-box;
+				}
+				.list_li_t_c2{
+					position: absolute;
+					right: 20rpx;
+					top: 38rpx;
+					width: 120rpx;
+					height: 40rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #FF5757;
+					line-height: 40rpx;
+					border: 1rpx solid #FF5757;
+					border-radius: 6rpx;
+					text-align: center;
+				}
+				.list_li_t_r{
+					position: absolute;
+					right:-15rpx;
+					top: 76rpx;
+					width: 30rpx;
+					height: 30rpx;
+					background:#F5F5F5;
+					border-radius: 15rpx;
+				}
+			}
+			.list_li_m{
+				position: absolute;
+				top: 110rpx;
+				left: 0;
+				width: 690rpx;
+				height: 168rpx;
+				border-bottom: 1rpx solid #E0E0E0;
+				padding-left: 30rpx;
+				box-sizing: border-box;
+				.list_li_m_t{
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #666666;
+					line-height: 40rpx;
+					margin-top:22rpx;
+				}
+				.list_li_m_b{
+					margin-top:26rpx;
+					>text:nth-of-type(1){
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						line-height: 40rpx;
+						border-radius: 6rpx;
+						padding: 0 20rpx;
+						margin-right: 14rpx;
+					}
+					>text:nth-of-type(2){
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #0183FA;
+						line-height: 40rpx;
+						padding: 0 8rpx;
+						border-radius: 6rpx;
+						background: rgba(1,131,250,0.1);
+					}
+				}
+			}
+			.list_li_b{
+				height: 80rpx;
+				position: absolute;
+				top: 278rpx;
+				left: 0;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>img{
+					width: 24rpx;
+					height: 30rpx;
+					margin-right: 26rpx;
+					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){
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #0183FA;
+					line-height: 28rpx;
+				}
+			}
+		}
+	}
+	
+	.bottom_btn{
+		position: fixed;
+		bottom: 26rpx;
+		left: 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 90rpx;
+		width: 690rpx;
+		height: 90rpx;
+		background: #0183FA;
+		border-radius: 20rpx;
+		text-align: center;
+		
+	}
+	
+}
+</style>

+ 639 - 0
pages_safetyExamine/snapshotManage/snapshotAdd.vue

@@ -0,0 +1,639 @@
+<!-- 随手拍-添加 -->
+<template>
+  <view class="examine">
+	  <view class="header"  @click="handleClick('manage')">
+	  	<text>随手拍管理</text>
+	  	<img src="@/pages_safetyExamine/images/icon_04.png">
+	  </view>
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		
+		<view class="basics">
+			<view class="basics_li">
+				<view class="basics_li_l">学院</view>
+				<picker @change="collegeChange" :value="collegeIndex" :range="collegeArray" class="scope_r">
+					<view class="basics_li_r college_r">
+						<view>{{form.deptName?form.deptName:'选择学院'}}</view>
+						<img src="@/pages_safetyExamine/images/icon_06.png">
+					</view>
+				</picker>
+			</view>
+			<view class="basics_li">
+				<view class="basics_li_l">实验室</view>
+				<view class="basics_li_r lab_r">
+					<input class="picker-text" @click="popupClick(1)" type="text" disabled v-model="form.subName" placeholder="请输入实验室关键词查询" placeholder-style="font-size: 30rpx;color:#333;">
+					<view class="img-box" @click.stop="saoCode">
+						<img src="@/pages_safetyExamine/images/icon_aqjc_sm.png">
+					</view>
+				</view>
+			</view>
+			<view class="check-for-input-max-box">
+				<view class="left-title-p">隐患描述:</view>
+				<textarea type="text" v-model="form.hazardDescribe" maxlength="50" placeholder="请输入隐患描述" placeholder-style="font-size:28rpx;color:#999;"></textarea>
+			</view>
+			<view class="check-for-img-max-box">
+				<view class="left-title-p">隐患照片(最多上传5张):</view>
+				<view class="right-img-box">
+					<view class="img-box" v-for="(imgUrl,imgIndex) in form.imgDtoList" :key="imgIndex">
+						<img class="img-data" :src="configURL+imgUrl.fileUrl">
+						<img class="position-img" src="@/pages_manage/images/icon_ssp_closure.png" @click="delImg(imgIndex)">
+					</view>
+					<img class="add-button" src="@/pages_manage/images/icon_07.png" @click="selectImage()" v-if="form.imgDtoList.length<5">
+				</view>
+			</view>
+		</view>
+		<view class="record" ><text  @click="handleClick('self')">随手拍上报记录</text></view>
+	</scroll-view>
+	<!-- 房间选择弹出层 -->
+	<view class="popup-max-box" v-if="popupType">
+		<view class="popup-null" @click="popupClick(2)"></view>
+		<view class="popup-big-box">
+			<view class="popup-input-box">
+				<input type="text" maxlength="10" v-model="room" placeholder="请输入关键字">
+				<view @click="buildBySub">搜索</view>
+			</view>
+			<view class="popup-for-max-box">
+				<view class="popup-for-null" v-if="!roomList[0]">暂无数据</view>
+				<view class="popup-for-box" v-for="(item,index) in roomList" :key="index">
+					<view class="name-p">{{item.name}} ({{item.room}})</view>
+					<view class="button-p" @click="popupClickItem(item)">确定</view>
+				</view>
+			</view>
+		</view>
+	</view>	
+	<view class="bottom_btn" @click="submitForm()">提交</view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import { buildBySub,conditionCollegeInfo,checkClapAdd,subjectList,getUserCollegCheck,listDepartments} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		configURL:config.base_url,
+		pageType:0,
+		//列表请求参数
+		getData:{
+		 pageNum:1,
+		 pageSize:20,
+		},
+		form:{
+			deptId:'',
+			deptName:'',
+			subId:'',
+			subName:'',
+			hazardDescribe:'',
+			imgDtoList:[],
+		},
+		collegeIndex :0,
+		collegeArray:[],
+		categoryIndex :0,
+		collegeList:[],
+		categoryArray:['校级巡查','院级巡查'],
+		planIndex :0,
+		planArray:['请选择巡查计划标题','2023年3月份校级督导检查','2023年4月份校级督导检查'],
+		resultIndex :0,
+		resultArray:['不符合','符合'],
+		informIndex:0,
+		informArray:['整改告知书','整改通知书'],
+		
+		
+		//房间弹层 状态
+		popupType:false,
+		//房间搜索字段
+		room:"",
+		roomList:[],
+		
+	}
+  },
+  onLoad(option) {
+	 
+  },
+  onShow() {
+	  
+  },
+  mounted(){
+	  this.listDepartments();
+	 // this.getUserCollegCheck();
+  },
+  methods: {
+		//滚动事件
+		scrollGet(){},
+	    handleClick(doType){
+		  let self=this;
+		  if( doType=='manage'){//随手拍管理
+			  uni.redirectTo({
+			      url: '/pages_safetyExamine/snapshotManage/snapshotList?pageType=1'
+			  });
+		  }else if(doType=='self'){//随手拍上报记录
+			  uni.redirectTo({
+			      url: '/pages_safetyExamine/snapshotManage/snapshotList?pageType=2'
+			  });
+		  }else if(doType=='subBtn'){//提交
+			  
+		  }
+		  
+	    },
+		collegeChange(e){
+			this.collegeIndex = e.target.value;
+			 this.form.deptId=this.collegeList[e.target.value].deptId
+			 this.form.deptName=this.collegeList[e.target.value].deptName
+		},
+		// 图片上传
+		selectImage() {
+		    let self = this;
+		    if(this.form.imgDtoList.length>4){
+		        uni.showToast({
+		            title: '最多上传5张图片',
+		            icon:"none",
+		            mask:true,
+		            duration: 2000
+		        });
+		        return
+		    }
+		    wx.chooseImage({
+		        count: 5,
+		        sizeType: ["original", "compressed"],
+		        sourceType: ["album", "camera"],
+		        success: function(res) {
+		            //let tempFilePaths = res.tempFilePaths[0];
+		            self.uploadImg(res.tempFilePaths);
+		        }
+		    });
+		},
+		async uploadImg(tempFilePaths){
+		    var self = this;
+		    uni.showLoading({
+		        title: '上传中',
+		        mask: true
+		    });
+			for(let i=0;i<tempFilePaths.length;i++){
+				console.log(tempFilePaths[i])
+				uni.uploadFile({
+				    url: config.base_url+'/base/file/upload', //仅为示例,非真实的接口地址
+				    header:{'Authorization':uni.getStorageSync('token')},
+				    filePath: tempFilePaths[i],
+				    name: 'file',
+				    formData: {
+				        'user': 'test'
+				    },
+				    success: (uploadFileRes) => {
+				        let res = JSON.parse(uploadFileRes.data);
+						console.log(res.data)
+						if(res.code == 200){
+							this.form.imgDtoList.push({'fileUrl':res.data.url,'fileName':res.data.name});
+						}else{
+							uni.showToast({
+								title: res.msg,
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+				    },
+				    fail: err => {},
+				    complete: () => {
+				        uni.hideLoading()
+				    }
+				});
+			}
+		    
+		},
+		//删除图片
+		delImg(minIndex){
+		    this.form.imgDtoList.splice(minIndex,1);
+			this.$forceUpdate();
+		},
+		//搜索房间弹层开关
+		popupClick(type){
+			if(type == 1){
+				this.room = "";
+				this.roomList = [];
+				this.popupType = true;
+				this.buildBySub();
+			}else if(type == 2){
+				this.popupType = false;
+			}
+		},
+		//搜索房间接口
+		async buildBySub(){
+			let self = this;
+			const {data} = await buildBySub({'searchValue':this.room,'deptId':this.form.deptId});
+			if(data.code==200){
+				if(data.data[0]){
+					this.roomList = data.data;
+				}else{
+					uni.showToast({
+						title: '未找到相关实验室',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}
+			}
+		},
+		//确认搜索房间
+		popupClickItem(item){
+			console.log(item)
+			this.$set(this.form,"subId",item.id)
+			this.$set(this.form,"subName",item.name)
+			this.$set(this.form,"deptId",item.deptId)
+			for(let i=0;i<this.collegeList.length;i++){
+				if(item.deptId==this.collegeList[i].deptId){
+					this.$set(this.form,"deptName",this.collegeList[i].deptName)
+				}
+			}
+			this.popupType = false;
+		},
+		//调用摄像头
+		saoCode(){
+			let self = this;
+			uni.scanCode({
+				onlyFromCamera: true,
+				success: function (res) {
+					if(res.result.indexOf("code") != -1 && res.result.indexOf("-") != -1 && res.result.indexOf("&") != -1){
+						let codeRoom = "";
+						let newList = res.result.split("?")[1].split("&")
+						let list = newList[0].split("=")[1].split("-")
+						codeRoom = list[1];
+						if(codeRoom){
+							self.roomList = [];
+							self.room = codeRoom;
+							self.buildBySub();
+							self.popupType = true;
+						}else{
+							uni.showToast({
+								title: '请扫描正确的二维码',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+					}else{
+						uni.showToast({
+							title: '请扫描正确的二维码',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+					}
+				}
+			});
+		},
+		
+		//查询用户身份信息
+		async getUserCollegCheck(){
+			let _this = this;
+			const {data} = await getUserCollegCheck();
+			if(data.code == 200){
+				this.form.deptId=data.data.dept.deptId;
+				this.form.deptName=data.data.dept.deptName;
+				
+			}
+		},
+		//查询学院列表
+		async listDepartments(){
+			let _this = this;
+			const {data} = await listDepartments();
+			if(data.code == 200){
+					
+				for(let i=0;i<data.data.length;i++){
+					_this.collegeArray.push(data.data[i].deptName)
+				}
+				_this.collegeList=data.data;
+				
+			}
+		},
+		//添加
+		async submitForm(){
+			let _this = this;
+			if(!this.form.deptId){
+				uni.showToast({
+					title: '请选择学院!',
+					icon:"none",
+					mask:true,
+					duration: 2000
+				});
+				return
+			}
+			if(!this.form.subId){
+				uni.showToast({
+					title: '请选择实验室!',
+					icon:"none",
+					mask:true,
+					duration: 2000
+				});
+				return
+			}
+			if(this.form.imgDtoList.length==0){
+				uni.showToast({
+					title: '请上传隐患照片!',
+					icon:"none",
+					mask:true,
+					duration: 2000
+				});
+				return
+			}
+			const {data} = await checkClapAdd(_this.form);
+			if(data.code == 200){
+			    uni.showToast({
+			        title: '提交成功',
+			        icon:"none",
+			        mask:true,
+			        duration: 2000
+			    });
+				uni.redirectTo({
+					  url: '/pages_safetyExamine/snapshotManage/snapshotList?pageType=2'
+				});
+			   
+			}
+		},
+		
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	box-sizing: border-box;
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		padding: 120rpx 0rpx 128rpx;
+		box-sizing: border-box;
+	}
+	.header{
+		width: 749rpx;
+		height: 100rpx;
+		background: #FFFFFF;
+		padding:0 40rpx 0 30rpx;
+		box-sizing: border-box;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		position: fixed;
+		left: 0;
+		top: 0;
+		>text{
+			font-size: 30rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #333333;
+			line-height: 42rpx;
+		}
+		>img{
+			width: 8rpx;
+			height: 14rpx;
+		}
+	}
+	.basics{
+		margin: 0 30rpx;
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		padding: 30rpx 28rpx 30rpx;
+		box-sizing: border-box;
+		.basics_li{
+			display: flex;
+			justify-content: flex-start;
+			margin-bottom: 24rpx;
+			.basics_li_l{
+				width: 146rpx;
+				text-align: left;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+			}
+			.basics_li_r{
+				width: 486rpx;
+				height: 80rpx;
+				border-radius: 10rpx;
+				opacity: 1;
+				border: 1rpx solid #E0E0E0;
+				padding-left: 20rpx;
+				box-sizing: border-box;
+				
+				
+			}
+			/* 学院 */
+			.college_r{
+				width: 486rpx;
+				height: 80rpx;
+				border-radius: 10rpx;
+				border: 1rpx solid #E0E0E0;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view{
+					flex:1;
+					line-height:80rpx;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 80rpx;
+				}
+				>img{
+					width: 14rpx;
+					height: 8rpx;
+					margin-right: 30rpx;
+				}
+			}
+			/* 实验室 */
+			.lab_r{
+				width: 486rpx;
+				height: 80rpx;
+				display: flex;
+				justify-content: flex-start;
+				.picker-text{
+					width: 438rpx;
+					height: 80rpx;
+				}
+				.img-box{
+					width: 48rpx;
+					>img{
+						width:30rpx;
+						height:28rpx;
+						margin:26rpx 18rpx 0 0;
+					}
+				}
+			}
+		}
+		/* 隐患描述 */
+		.check-for-input-max-box{
+			.left-title-p{
+				width:150rpx;
+				line-height:80rpx;
+				text-align right
+				font-size:30rpx;
+			}
+			textarea{
+				width: 630rpx;
+				height: 158rpx;
+				border-radius: 20rpx 20rpx 20rpx 20rpx;
+				border: 1rpx solid #E0E0E0;
+				padding: 20rpx 14rpx;
+				box-sizing: border-box;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 34rpx;
+			}
+		}
+		/* 隐患照片 */
+		.check-for-img-max-box{
+			.left-title-p{
+				width: 100%;
+				text-align: left;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+			}
+			.right-img-box{
+				.img-box{
+					display inline-block;
+					height:200rpx;
+					width:200rpx;
+					position relative
+					margin:0 14rpx 20rpx 0;
+					border-radius 10rpx;
+					overflow hidden;
+					.img-data{
+						height:200rpx;
+						width:200rpx;
+					}
+					.position-img{
+						position absolute
+						right:0;
+						top:0;
+						width:36rpx;
+						height:36rpx;
+					}
+				}
+				.img-box:nth-of-type(3n+3){
+					margin-right: 0rpx;
+				}
+				.add-button{
+					 margin:0 0rpx 20rpx 0;
+					border-radius 10rpx;
+					overflow hidden;
+					display inline-block
+					height:200rpx;
+					width:200rpx;
+				}
+			}
+		}
+	}
+	.record{
+		overflow: hidden;
+		>text{
+			display: block;
+			width: 220rpx;
+			height: 40rpx;
+			background: #E0E0E0;
+			border-radius: 60rpx 60rpx 60rpx 60rpx;
+			margin: 122rpx 0 90rpx 266rpx;
+			font-size: 26rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #0183FA;
+			line-height: 40rpx;
+			text-align: center;
+		}
+	}
+	.popup-max-box{
+		z-index:10;
+		height:100%;
+		width:100%;
+		position fixed;
+		background rgba(0,0,0,0.2)
+		display flex;
+		flex-direction column
+		.popup-null{
+			flex:1;
+		}
+		.popup-big-box{
+			border-top-left-radius:20rpx;
+			border-top-right-radius:20rpx;
+			background #fff
+			.popup-input-box{
+				padding:30rpx 20rpx;
+				display:flex;
+				input{
+					flex:1;
+					height:70rpx;
+					border:1rpx solid #e0e0e0;
+					border-radius:10rpx;
+					margin-right:20rpx;
+					padding:0 20rpx;
+				}
+				view{
+					background #0183FA
+					color:#fff;
+					border-radius:10rpx;
+					width:140rpx;
+					line-height:70rpx;
+					text-align center;
+					font-size:28rpx;
+				}
+			}
+			.popup-for-max-box{
+				margin:0 20rpx 30rpx;
+				height:600rpx;
+				overflow-y scroll;
+				.popup-for-null{
+					line-height:100rpx;
+					text-align center
+					color:#999;
+				}
+				.popup-for-box{
+					display:flex;
+					padding:10px 0;
+					.name-p{
+						flex:1;
+						line-height:60rpx;
+					}
+					.button-p{
+						background #0183FA
+						color:#fff;
+						text-align center
+						width:100rpx;
+						line-height:60rpx;
+						height:60rpx;
+						border-radius:10rpx;
+					}
+				}
+			}
+		}
+	}
+	.bottom_btn{
+		position: fixed;
+		bottom: 26rpx;
+		left: 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 90rpx;
+		width: 690rpx;
+		height: 90rpx;
+		background: #0183FA;
+		border-radius: 20rpx;
+		text-align: center;
+		
+	}
+}
+</style>

+ 552 - 0
pages_safetyExamine/snapshotManage/snapshotDetail.vue

@@ -0,0 +1,552 @@
+<!-- 随手拍-详情 -->
+<template>
+  <view class="examine">
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view  class="basics">
+			<view class="grade">
+				<text>学院:</text>
+				<text>{{item.deptName}}</text>
+			</view>
+			<view class="grade">
+				<text>实验室:</text>
+				<text>{{item.subName}}</text>
+			</view>
+			<view class="project">
+				<view class="project_t">隐患描述:</view>
+				<view class="project_b">{{item.hazardDescribe}}</view>
+			</view>
+			<view class="picture">
+				<view class="picture_t">隐患照片:</view>
+				<view class="picture_b" @click="lockImg(item.yhDtoList)">
+					<img  :src="baseUrl+item.fileUrl" v-for="(item,index) in item.yhDtoList"/>
+				</view>
+			</view>
+			<view class="grade">
+				<text>上报时间:</text>
+				<text>{{item.createTime}}</text>
+			</view>
+			<view class="grade" style="border:none;">
+				<text>上报人:</text>
+				<text >{{item.createName}}</text>
+			</view>
+		</view>
+		<!-- 待整改 -->
+		<view v-if="rectifyStatus==0 && item.rectifyGentle">
+			<view class="await">
+				<view class="result">
+					<view class="result_l">整改结果</view>
+					<view class="result_r"> 
+						<view v-for="(item,index) in resultArray" :key="index" @click="tabClick(index)">
+							<text :class="resultIndex==index?'checked':'result_r_l' "></text>
+							<text class="result_r_r">{{item}}</text>
+						</view>
+					</view>
+				</view>
+				<view class="describe">
+					<view class="describe_l">{{describeTitle}}:</view>
+					<textarea class="describe_r" type="text" v-model="form.rectifyDescribe" maxlength="50" placeholder="请输入描述内容" placeholder-style="font-size:28rpx;color:#999;"></textarea>
+				</view>
+				<view class="check-for-img-max-box">
+					<view class="left-title-p">隐患照片(最多上传5张):</view>
+					<view class="right-img-box">
+						<view class="img-box" v-for="(imgUrl,imgIndex) in form.imgDtoList" :key="imgIndex">
+							<img class="img-data" :src="baseUrl+imgUrl.fileUrl">
+							<img class="position-img" src="@/pages_manage/images/icon_ssp_closure.png" @click="delImg(imgIndex)">
+						</view>
+						<img class="add-button" src="@/pages_manage/images/icon_07.png" @click="selectImage()" v-if="form.imgDtoList.length<5">
+					</view>
+				</view>
+			</view>
+		</view>
+		<!-- 隐患整改 -->
+		<view  class="basics"  v-if="rectifyStatus==1 || rectifyStatus==2">
+			<view class="small_title">隐患整改</view>
+			<view class="grade">
+				<text>整改结果:</text>
+				<text style="color: #0183FA;">{{item.rectifyStatus==1?'已整改':'暂无法整改'}}</text>
+			</view>
+			<view class="project">
+				<view class="project_t">整改措施:</view>
+				<view class="project_b">{{item.rectifyDescribe}}</view>
+			</view>
+			<view class="picture">
+				<view class="picture_t">上传照片:</view>
+				<view class="picture_b" @click="lockImg(item.zgDtoList)">
+					<img  :src="baseUrl+item.fileUrl" v-for="(item,index) in item.zgDtoList"/>
+				</view>
+			</view>
+			<view class="grade">
+				<text>整改时间:</text>
+				<text>{{item.rectifyTime}}</text>
+			</view>
+			<view class="grade" style="border:none;">
+				<text>整改人:</text>
+				<text >{{item.rectifyPeople}}</text>
+			</view>
+		</view>
+	</scroll-view>
+	<view v-if="rectifyStatus==0 && item.rectifyGentle" class="bottom_btn" @click="submitForm()">提交</view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import { getSelectInfoByRoom,checkClapById,checkClapRectify} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		baseUrl:config.base_url,
+		id:'',
+		rectifyStatus:'',//整改状态,0是待整改,1是已整改,2是暂无法整改
+		pageType:0,
+		form:{
+			id:'',
+			rectifyStatus:1,//0待整改 1已整改 2暂无法整改
+			rectifyDescribe:'',
+			imgDtoList:[],
+		},
+		item:{},
+		describeTitle:'整改措施',
+		resultIndex:0,
+		resultArray:['已整改','暂无法整改'],
+	}
+  },
+  onLoad(option) {
+	  console.log(option.id)
+	  if(option.id){
+		this.id=option.id
+	  }
+	  if(option.pageType){
+	  	this.pageType=option.pageType
+	  }
+	  if(option.rectifyStatus){
+		  this.rectifyStatus=option.rectifyStatus
+		  if(option.rectifyStatus==0){
+			  uni.setNavigationBarTitle({
+			  	 title:'待整改'
+			  })
+		  }else if(option.rectifyStatus==1){
+			  uni.setNavigationBarTitle({
+			  	 title:'已整改'
+			  })
+		  }else if(option.rectifyStatus==2){
+			  uni.setNavigationBarTitle({
+			  	 title:'暂无法整改'
+			  })
+		  }
+	  }
+	
+	 
+  },
+  onShow() {
+	  
+  },
+  mounted(){
+	  this.checkClapById();
+  },
+  methods: {
+		//整改结果
+		tabClick(index) {
+			this.resultIndex = index;
+			if(index==0){
+				this.describeTitle='整改措施';
+				this.form.rectifyStatus=1;
+			}else if(index==1){
+				this.describeTitle='原因描述';
+				this.form.rectifyStatus=2;
+			}
+		},
+		//滚动事件
+		scrollGet(){},
+	    handleClick(doType){
+		  let self=this;
+		  if(doType=='subBtn'){//提交
+			  
+		  }
+		  
+	    },
+		//查看图片
+		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) {},
+			})
+		},
+		
+		// 图片上传
+		selectImage() {
+		    let self = this;
+		    if(this.form.imgDtoList.length>4){
+		        uni.showToast({
+		            title: '最多上传5张图片',
+		            icon:"none",
+		            mask:true,
+		            duration: 2000
+		        });
+		        return
+		    }
+		    wx.chooseImage({
+		        count: 1,
+		        sizeType: ["original", "compressed"],
+		        sourceType: ["album", "camera"],
+		        success: function(res) {
+		            let tempFilePaths = res.tempFilePaths[0];
+		            self.uploadImg(tempFilePaths);
+		        }
+		    });
+		},
+		async uploadImg(tempFilePaths){
+		    var self = this;
+		    uni.showLoading({
+		        title: '上传中',
+		        mask: true
+		    });
+		    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){
+						this.form.imgDtoList.push({'fileUrl':res.data.url,'fileName':res.data.name});
+						console.log(res.data.url)
+					}else{
+						uni.showToast({
+							title: res.msg,
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+					}
+		        },
+		        fail: err => {},
+		        complete: () => {
+		            uni.hideLoading()
+		        }
+		    });
+		},
+		//删除图片
+		delImg(minIndex){
+		     this.form.imgDtoList.splice(minIndex,1);
+			this.$forceUpdate();
+		},
+		//随手拍详情
+		async checkClapById(){
+			let _this = this;
+			const {data} = await checkClapById({id:this.id});
+			if(data.code == 200){
+					_this.item=data.data;
+					_this.form.id=data.data.id;
+			
+			}
+		},
+		//提交
+		async submitForm(){
+			let _this = this;
+			const {data} = await checkClapRectify(_this.form);
+			if(data.code == 200){
+			    uni.showToast({
+			        title: '提交成功',
+			        icon:"none",
+			        mask:true,
+			        duration: 2000
+			    }); 
+				uni.redirectTo({
+					url: '/pages_safetyExamine/snapshotManage/snapshotList?pageType='+this.pageType
+				});
+			   
+			}
+		},
+		
+		
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	box-sizing: border-box;
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		padding-bottom: 128rpx;
+		box-sizing: border-box;
+	}
+	.basics{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		padding: 30rpx 30rpx 32rpx;
+		box-sizing: border-box;
+		margin: 20rpx 30rpx ;
+		.small_title{
+			font-size: 30rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #333333;
+			line-height: 80rpx;
+			border-bottom: 1rpx solid #D8D8D8;
+		}
+		.grade{
+			height: 80rpx;
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1rpx solid #D8D8D8;
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 80rpx;
+				width: 140rpx;
+			}
+			>text:nth-of-type(2){
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				text-align: right;
+			}
+		}
+		.project{
+			.project_t{
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+			}
+			.project_b{
+				min-height: 158rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 40rpx;
+				padding: 20rpx 14rpx;
+				box-sizing: border-box;
+				background: #F5F5F5;
+				border-radius: 20rpx 20rpx 20rpx 20rpx;
+			}
+			.project_b2{
+				font-size: 26rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 26rpx;
+				margin-top: 14rpx;
+				text-align: right;
+			}
+		}
+		.picture{
+			.picture_t{
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+			}
+			.picture_b{
+				display: flex;
+				justify-content: flex-start;
+				flex-wrap: wrap;
+				>img{
+					width: 200rpx;
+					height: 200rpx;
+					border-radius: 10rpx 10rpx 10rpx 10rpx;
+					margin-right: 14rpx;
+					margin-bottom: 10rpx;
+				}
+				>img:nth-of-type(3n+3){
+					margin-right: 0rpx;
+				}
+			}
+		}
+	}
+	/* 待整改 */
+	.await{
+		width: 690rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		padding: 30rpx 30rpx 32rpx;
+		box-sizing: border-box;
+		margin: 20rpx 30rpx ;
+		/* 整改结果 */
+		.result{
+			display: flex;
+			justify-content: flex-start;
+			border-bottom: 1rpx solid #D8D8D8;
+			.result_l{
+				width: 146rpx;
+				text-align: left;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+			}
+			.result_r{
+				width: 486rpx;
+				height: 80rpx;
+				padding-left: 20rpx;
+				box-sizing: border-box;
+				display: flex;
+				justify-content: flex-end;
+				align-items: center;
+				>view{
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					margin-right: 24rpx;
+					.result_r_l{
+						display: inline-block;
+						width: 30rpx;
+						height: 30rpx;
+						border-radius: 50%;
+						border: 1rpx solid #E0E0E0;
+						margin-right: 14rpx;
+					}
+					.result_r_r{
+						font-size: 30rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 80rpx;
+					}
+					.checked{
+						display: inline-block;
+						width: 30rpx;
+						height: 30rpx;
+						border-radius: 50%;
+						border: 1rpx solid #0183FA;
+						margin-right: 14rpx;
+						position: relative;
+					}
+					.checked::after{
+						content: '';
+						position: absolute;
+						top: 5rpx;
+						left:5rpx;
+						width: 20rpx;
+						height: 20rpx;
+						border-radius: 50%;
+						background: #0183FA;
+					}
+				}
+			}
+		}
+		/* 原因描述 */
+		.describe{
+			.describe_l{
+				width: 158rpx;
+				text-align: left;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+			}
+			.describe_r{
+				width: 630rpx;
+				height: 158rpx;
+				border-radius: 20rpx 20rpx 20rpx 20rpx;
+				opacity: 1;
+				border: 1rpx solid #E0E0E0;
+				padding: 20rpx 14rpx;
+				box-sizing: border-box;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 34rpx;
+			}
+		}
+		/* 上传照片 */
+		.check-for-img-max-box{
+			.left-title-p{
+				width: 100%;
+				text-align: left;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+			}
+			.right-img-box{
+				.img-box{
+					display inline-block;
+					height:200rpx;
+					width:200rpx;
+					position relative
+					margin:0 14rpx 20rpx 0;
+					border-radius 10rpx;
+					overflow hidden;
+					.img-data{
+						height:200rpx;
+						width:200rpx;
+					}
+					.position-img{
+						position absolute
+						right:0;
+						top:0;
+						width:36rpx;
+						height:36rpx;
+					}
+				}
+				.img-box:nth-of-type(3n+3){
+					margin-right: 0rpx;
+				}
+				.add-button{
+					margin:0 0rpx 20rpx 0;
+					border-radius 10rpx;
+					overflow hidden;
+					display inline-block
+					height:200rpx;
+					width:200rpx;
+				}
+			}
+		}
+}	
+    .bottom_btn{
+		position: fixed;
+		bottom: 26rpx;
+		left: 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 90rpx;
+		width: 690rpx;
+		height: 90rpx;
+		background: #0183FA;
+		border-radius: 20rpx;
+		text-align: center;
+		
+	}
+}
+</style>

+ 390 - 0
pages_safetyExamine/snapshotManage/snapshotList.vue

@@ -0,0 +1,390 @@
+<!-- 随手拍-列表 -->
+<template>
+  <view class="examine">
+	<view class="header">
+		<view class="tabTitle_tow">
+			<view class="tabTitle_tow_li" @tap="tabClickTow(index)"  :key="index" v-for="(item,index) in tabTextTow">
+				<view :class="{on:curTabTow==index}" class="tabTitle_tow_text">{{item}}</view>
+			    <view :class="{on:curTabTow==index}" class="tabTitle_tow_across"></view>
+			</view>
+		</view>
+	</view>
+	
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view class="list_three">
+			<view class="list_three_li" v-for="(item,index) in  dataList" :key="index" @click="handleClick(item,'detail')">
+				<view class="list_three_li_t">
+					<view class="list_three_li_t_l"></view>
+					<view class="list_three_li_t_c">{{item.subName}}</view>
+					<view class="list_three_li_t_r"></view>
+				</view>
+				<view class="list_three_li_m">
+					<view class="list_three_li_m_t">{{item.hazardDescribe}}</view>
+					<view class="list_three_li_m_b">
+						<text class="blue_color" v-if="item.rectifyStatus==0">待整改</text>
+						<text class="green_color" v-if="item.rectifyStatus==1">已整改</text>
+						<text class="orange_color" v-if="item.rectifyStatus==2">暂无法整改</text>
+						<text>{{item.deptName}}</text>
+					</view>
+				</view>
+				<view class="list_three_li_b">
+					<view class="list_three_li_b_l">
+						<img src="@/pages_safetyExamine/images/icon_ssp_ry.png"/>
+						<text>上报人:{{item.createName}}</text>
+					</view>
+					<view class="list_three_li_b_r">{{item.timeFlag}}</view>
+				</view>
+			</view>
+		</view>
+		<img class="null-img" v-if="!dataList[0]" src="@/images/null-data-1.png">
+	</scroll-view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import {checkClapList,checkClapMylist} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		pageType:0,
+		//列表请求参数
+		getData:{
+		 pageNum:1,
+		 pageSize:20,
+		 rectifyStatus:0,
+		},
+		tabTextTow:['待整改','已整改','暂无法整改'],
+		curTabTow:0,
+		form:{
+			name:'',
+			type:'校院巡查',
+			startTime:'',
+			endTime:'',
+			inspectScope:[],
+			tiemQuickList:[],
+			scopeIndex:'',
+			seleteListLab:[],
+			patrolIndex:'',
+			seleteListMember:[],
+		},
+		collegeList:[{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},{name:'学院名称',type:false},],
+		collegeIndex :0,
+		collegeArray:['选择学院','学院名称1','学院名称2','学院名称3',],
+		dataList:[],
+	}
+  },
+  onLoad(option) {
+	 if(option.form){
+		this.form=JSON.parse(decodeURIComponent(option.form)); 
+		console.log(this.form)
+	 }
+	 if(option.pageType){
+		 this.pageType=option.pageType
+		if(option.pageType==1){
+		  uni.setNavigationBarTitle({
+				title:'随手拍管理'
+		  })
+		}else if(option.pageType==2){
+		  uni.setNavigationBarTitle({
+				title:'随手拍上报记录'
+		  })
+		} 
+	 }
+	 
+  },
+  onShow() {
+	  
+  },
+  mounted(){
+	 this.getList()
+  },
+  methods: {
+		//顶部tab点击
+		tabClickTow(index) {
+			this.dataList=[];
+			this.curTabTow = index;
+			this.getData.pageNum=1;
+			this.getData.rectifyStatus=index;
+			this.getList()
+		},
+		
+		//滚动事件
+		scrollGet(){
+			let self=this;
+			if(self.total/self.getData.pageSize<=self.getData.pageNum){
+			    console.log('没有更多数据!')
+			}else{
+					setTimeout(function(){
+						self.getData.pageNum += 1;
+						self.getList(); 
+					},1000)
+						 
+			}
+		},
+	    handleClick(item,doType){
+		  let self=this;
+		  if( doType=='subBtn'){//	
+		  
+		  }else if(doType=='detail'){//详情
+			  uni.redirectTo({
+			  	 url: '/pages_safetyExamine/snapshotManage/snapshotDetail?id='+item.id+'&rectifyStatus='+this.getData.rectifyStatus+'&pageType='+this.pageType
+			  })
+		  }
+		  
+	    },
+		async getList(){
+		    let _this = this;
+			if(this.pageType==1){//随手拍管理
+				const {data} = await checkClapList(this.getData);
+				if(data.code==200){
+					  this.total=data.data.total;
+					  this.dataList=[...this.dataList,...data.data.records]
+				}
+			}else if(this.pageType==2){//随手拍记录
+				const {data} = await checkClapMylist(this.getData);
+				if(data.code==200){
+					  this.total=data.data.total;
+					  this.dataList=[...this.dataList,...data.data.records]
+				}
+			}
+		   
+		},
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	// padding: 0 30rpx;
+	// box-sizing: border-box;
+	padding-bottom: 20rpx;
+	box-sizing: border-box;
+	.blue_color{
+		color: #0183FA;
+		border: 1rpx solid #0183FA;
+	}
+	.red_color{
+		color: #FF4545;
+		border: 1rpx solid #FF4545;
+	}
+	.green_color{
+		color: #1FA50D;
+		border: 1rpx solid #1FA50D;
+	}
+	.orange_color{
+		color: #FA8E1B;
+		border: 1rpx solid #FA8E1B;
+	}
+	.gray_color{
+		color: #A2A2A2;
+		border: 1rpx solid #A2A2A2;
+	}
+	.null-img{
+		display block
+		width:276rpx;
+		height:321rpx;
+		margin:100rpx 0 0 274rpx;
+	}
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		
+		padding: 120rpx 0rpx 0;
+		box-sizing: border-box;
+	}
+	/* 切换按钮 */
+	.header{
+		width:100%;
+		position: fixed;
+		top: 0rpx;
+		z-index: 100;
+		.tabTitle_tow{
+			width:100%;
+			height: 100rpx;
+			background: #fff;
+			display flex;
+			justify-content: flex-start;
+			align-items: center;
+			border-bottom: 1rpx solid #E0E0E0;
+			.tabTitle_tow_li{
+				flex:1;
+				position: relative;
+				text-align center;
+				.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: 38%;
+					display none;
+					&.on{
+						display block;
+					}
+				}
+		
+			}
+		}
+	}
+	.list_three{
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		.list_three_li{
+			position: relative;
+			width: 690rpx;
+			height: 336rpx;
+			background: #fff;
+			border-radius: 10rpx;
+			overflow: hidden;
+			margin-bottom: 20rpx;
+			.list_three_li_t{
+				width: 100%;
+				position: absolute;
+				left: 0;
+				top: 0;
+				.list_three_li_t_l{
+					position: absolute;
+					left: -15rpx;
+					top: 76rpx;
+					display: inline-block;
+					width: 30rpx;
+					height: 30rpx;
+					background: #F5F5F5;
+					border-radius: 15rpx;
+				}
+				.list_three_li_t_c{
+					width: 630rpx;
+					height: 110rpx;
+					position: absolute;
+					left: 30rpx;
+					top: 0;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 110rpx;
+					border-bottom: 1rpx dashed #D8D8D8;
+					overflow: hidden;
+					text-overflow:ellipsis;
+					white-space: nowrap;
+					padding-right: 60rpx;
+					box-sizing: border-box;
+				}
+				.list_three_li_t_r{
+					position: absolute;
+					right:-15rpx;
+					top: 76rpx;
+					width: 30rpx;
+					height: 30rpx;
+					background:#F5F5F5;
+					border-radius: 15rpx;
+				}
+			}
+			.list_three_li_m{
+				position: absolute;
+				top: 110rpx;
+				left: 0;
+				width: 690rpx;
+				height: 158rpx;
+				padding-left: 30rpx;
+				box-sizing: border-box;
+				.list_three_li_m_t{
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #666666;
+					line-height: 40rpx;
+					margin-top:22rpx;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+				}
+				.list_three_li_m_b{
+					margin-top:26rpx;
+					>text:nth-of-type(1){
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						line-height: 40rpx;
+						border-radius: 6rpx;
+						padding: 0 20rpx;
+						box-sizing: border-box;
+						margin-right: 14rpx;
+					}
+					>text:nth-of-type(2){
+						display: inline-block;
+						width: 380rpx;
+						font-size: 26rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 26rpx;
+						overflow: hidden;
+						text-overflow:ellipsis;
+						white-space: nowrap;
+					}
+				}
+			}
+			.list_three_li_b{
+				height: 76rpx;
+				width: 100%;
+				position: absolute;
+				top: 258rpx;
+				left: 0;
+				padding:0 30rpx;
+				box-sizing: border-box;
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				.list_three_li_b_l{
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					
+					>img{
+						width: 28rpx;
+						height: 30rpx;
+						margin-right: 14rpx;
+					}
+					>text{
+						font-size: 28rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #666666;
+						line-height: 76rpx;
+					}
+				}
+				.list_three_li_b_r{
+					font-size: 24rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #999999;
+					line-height: 76rpx;
+				}
+			}
+			
+		}
+	}
+	
+}
+</style>

+ 382 - 0
replay_pid36656.log

@@ -0,0 +1,382 @@
+JvmtiExport can_access_local_variables 0
+JvmtiExport can_hotswap_or_post_breakpoint 0
+JvmtiExport can_post_on_exceptions 0
+# 112 ciObject found
+instanceKlass java/lang/ProcessEnvironment$EntryComparator
+instanceKlass java/lang/ProcessEnvironment$NameComparator
+instanceKlass git4idea/GitAppUtil
+instanceKlass java/lang/PublicMethods$Key
+instanceKlass java/lang/PublicMethods$MethodList
+instanceKlass git4idea/http/GitAskPassApp
+instanceKlass git4idea/GitExternalApp
+instanceKlass sun/security/util/Debug
+instanceKlass java/security/SecureClassLoader$DebugHolder
+instanceKlass java/security/Permissions$1
+instanceKlass java/security/PermissionCollection
+instanceKlass java/security/SecureClassLoader$1
+instanceKlass java/security/SecureClassLoader$CodeSourceKey
+instanceKlass java/util/zip/Checksum$1
+instanceKlass java/util/zip/CRC32
+instanceKlass java/util/zip/Checksum
+instanceKlass sun/nio/ByteBuffered
+instanceKlass java/lang/Package$VersionInfo
+instanceKlass java/lang/NamedPackage
+instanceKlass jdk/internal/loader/Resource
+instanceKlass java/util/zip/ZipEntry
+instanceKlass java/util/jar/JarFile$1
+instanceKlass jdk/internal/util/jar/JarIndex
+instanceKlass java/nio/Bits$1
+instanceKlass jdk/internal/misc/JavaNioAccess$BufferPool
+instanceKlass java/nio/Bits
+instanceKlass sun/nio/ch/DirectBuffer
+instanceKlass jdk/internal/perf/PerfCounter$CoreCounters
+instanceKlass jdk/internal/perf/Perf
+instanceKlass jdk/internal/perf/Perf$GetPerfAction
+instanceKlass jdk/internal/perf/PerfCounter
+instanceKlass java/util/zip/ZipUtils
+instanceKlass java/util/zip/ZipFile$Source$End
+instanceKlass sun/invoke/util/Wrapper$Format
+instanceKlass java/lang/invoke/MethodTypeForm
+instanceKlass java/lang/invoke/MethodType$ConcurrentWeakInternSet
+instanceKlass java/lang/Void
+instanceKlass java/lang/invoke/VarForm
+instanceKlass java/lang/invoke/VarHandleGuards
+instanceKlass jdk/internal/util/Preconditions$1
+instanceKlass java/util/function/BiFunction
+instanceKlass java/lang/invoke/VarHandle$1
+instanceKlass java/lang/invoke/VarHandles
+instanceKlass sun/invoke/util/VerifyAccess
+instanceKlass java/lang/invoke/MethodHandles$Lookup
+instanceKlass java/security/Permission
+instanceKlass java/security/Guard
+instanceKlass java/lang/invoke/MemberName$Factory
+instanceKlass java/lang/invoke/MethodHandles
+instanceKlass java/util/concurrent/atomic/AtomicBoolean
+instanceKlass java/io/RandomAccessFile$2
+instanceKlass jdk/internal/misc/JavaIORandomAccessFileAccess
+instanceKlass java/io/RandomAccessFile
+instanceKlass java/io/DataInput
+instanceKlass java/io/DataOutput
+instanceKlass java/nio/file/attribute/FileTime
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$CompletionStatus
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$AclInformation
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$Account
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$DiskFreeSpace
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$VolumeInformation
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$QueryDirectoryInformation
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$FirstStream
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$FirstFile
+instanceKlass java/util/Enumeration
+instanceKlass java/util/ArrayDeque$DeqIterator
+instanceKlass java/lang/ClassLoader$NativeLibrary
+instanceKlass java/lang/ClassLoader$2
+instanceKlass java/lang/StringCoding$StringEncoder
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$1
+instanceKlass sun/nio/fs/WindowsNativeDispatcher
+instanceKlass sun/nio/fs/NativeBuffer$Deallocator
+instanceKlass sun/nio/fs/NativeBuffer
+instanceKlass sun/nio/fs/NativeBuffers
+instanceKlass sun/nio/fs/WindowsFileAttributes
+instanceKlass java/nio/file/attribute/DosFileAttributes
+instanceKlass sun/nio/fs/AbstractBasicFileAttributeView
+instanceKlass sun/nio/fs/DynamicFileAttributeView
+instanceKlass sun/nio/fs/WindowsFileAttributeViews
+instanceKlass sun/nio/fs/Util
+instanceKlass java/nio/file/attribute/BasicFileAttributeView
+instanceKlass java/nio/file/attribute/FileAttributeView
+instanceKlass java/nio/file/attribute/AttributeView
+instanceKlass java/nio/file/Files
+instanceKlass java/nio/file/CopyOption
+instanceKlass java/nio/file/attribute/BasicFileAttributes
+instanceKlass sun/nio/fs/WindowsPath
+instanceKlass java/nio/file/Path
+instanceKlass java/nio/file/Watchable
+instanceKlass java/net/URI$Parser
+instanceKlass sun/nio/fs/WindowsPathParser$Result
+instanceKlass sun/nio/fs/WindowsPathParser
+instanceKlass java/util/Arrays$ArrayItr
+instanceKlass java/nio/file/FileSystem
+instanceKlass java/nio/file/OpenOption
+instanceKlass java/nio/file/spi/FileSystemProvider
+instanceKlass sun/nio/fs/DefaultFileSystemProvider
+instanceKlass java/nio/file/FileSystems$DefaultFileSystemHolder$1
+instanceKlass java/nio/file/FileSystems$DefaultFileSystemHolder
+instanceKlass java/nio/file/FileSystems
+instanceKlass java/util/zip/ZipFile$Source$Key
+instanceKlass java/util/zip/ZipFile$Source
+instanceKlass jdk/internal/misc/InnocuousThread$2
+instanceKlass jdk/internal/misc/InnocuousThread$3
+instanceKlass jdk/internal/ref/CleanerFactory$1$1
+instanceKlass java/lang/ref/Cleaner$Cleanable
+instanceKlass jdk/internal/ref/CleanerImpl
+instanceKlass java/lang/ref/Cleaner$1
+instanceKlass java/lang/ref/Cleaner
+instanceKlass jdk/internal/ref/CleanerFactory$1
+instanceKlass java/util/concurrent/ThreadFactory
+instanceKlass jdk/internal/ref/CleanerFactory
+instanceKlass java/util/zip/ZipFile$CleanableResource
+instanceKlass java/util/zip/ZipCoder
+instanceKlass java/lang/Runtime$Version
+instanceKlass java/util/jar/JavaUtilJarAccessImpl
+instanceKlass jdk/internal/misc/JavaUtilJarAccess
+instanceKlass sun/nio/cs/ThreadLocalCoders$Cache
+instanceKlass sun/nio/cs/ThreadLocalCoders
+instanceKlass jdk/internal/loader/FileURLMapper
+instanceKlass jdk/internal/loader/URLClassPath$JarLoader$1
+instanceKlass java/util/zip/ZipFile$1
+instanceKlass jdk/internal/misc/JavaUtilZipFileAccess
+instanceKlass java/util/zip/ZipFile
+instanceKlass java/util/zip/ZipConstants
+instanceKlass jdk/internal/loader/URLClassPath$Loader
+instanceKlass jdk/internal/loader/URLClassPath$3
+instanceKlass java/security/PrivilegedExceptionAction
+instanceKlass sun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar
+instanceKlass sun/util/locale/InternalLocaleBuilder
+instanceKlass sun/util/locale/LocaleUtils
+instanceKlass sun/util/locale/BaseLocale$Key
+instanceKlass sun/util/locale/BaseLocale
+instanceKlass sun/util/locale/LocaleObjectCache
+instanceKlass java/util/Locale
+instanceKlass sun/net/util/URLUtil
+instanceKlass sun/launcher/LauncherHelper
+instanceKlass jdk/internal/module/IllegalAccessLogger
+instanceKlass jdk/internal/module/ModuleBootstrap$2
+instanceKlass jdk/internal/module/IllegalAccessLogger$Builder
+instanceKlass java/lang/ModuleLayer$Controller
+instanceKlass java/util/HashMap$HashIterator
+instanceKlass jdk/internal/module/ServicesCatalog$ServiceProvider
+instanceKlass java/util/concurrent/CopyOnWriteArrayList
+instanceKlass java/util/Collections$UnmodifiableCollection$1
+instanceKlass java/util/Collections$UnmodifiableCollection
+instanceKlass java/util/ArrayList$Itr
+instanceKlass java/util/ImmutableCollections$ListItr
+instanceKlass java/util/ListIterator
+instanceKlass java/lang/ModuleLayer
+instanceKlass jdk/internal/module/ModuleLoaderMap$Mapper
+instanceKlass java/util/function/Function
+instanceKlass jdk/internal/module/ModuleLoaderMap
+instanceKlass java/util/ImmutableCollections$Set12$1
+instanceKlass java/util/ImmutableCollections$MapN$MapNIterator
+instanceKlass java/util/AbstractMap$1$1
+instanceKlass java/lang/module/ResolvedModule
+instanceKlass java/lang/module/Configuration
+instanceKlass java/util/ImmutableCollections$SetN$SetNIterator
+instanceKlass jdk/internal/loader/BuiltinClassLoader$LoadedModule
+instanceKlass jdk/internal/util/Preconditions
+instanceKlass java/util/Deque
+instanceKlass java/util/Queue
+instanceKlass sun/net/util/IPAddressUtil
+instanceKlass java/net/URLStreamHandler
+instanceKlass sun/net/www/ParseUtil
+instanceKlass java/io/ExpiringCache$Entry
+instanceKlass java/net/URL$3
+instanceKlass jdk/internal/misc/JavaNetURLAccess
+instanceKlass java/net/URL$DefaultFactory
+instanceKlass java/net/URLStreamHandlerFactory
+instanceKlass jdk/internal/loader/URLClassPath
+instanceKlass java/security/Principal
+instanceKlass java/security/ProtectionDomain$Key
+instanceKlass java/security/ProtectionDomain$JavaSecurityAccessImpl
+instanceKlass jdk/internal/misc/JavaSecurityAccess
+instanceKlass java/lang/ClassLoader$ParallelLoaders
+instanceKlass jdk/internal/loader/AbstractClassLoaderValue
+instanceKlass jdk/internal/module/ServicesCatalog
+instanceKlass jdk/internal/loader/BootLoader
+instanceKlass java/util/Optional
+instanceKlass jdk/internal/module/ModuleBootstrap$Counters
+instanceKlass jdk/internal/module/SystemModuleFinders$SystemModuleFinder
+instanceKlass java/lang/module/ModuleFinder
+instanceKlass jdk/internal/module/SystemModuleFinders$3
+instanceKlass jdk/internal/module/ModuleHashes$HashSupplier
+instanceKlass java/util/KeyValueHolder
+instanceKlass jdk/internal/module/SystemModuleFinders$2
+instanceKlass java/util/function/Supplier
+instanceKlass java/lang/module/ModuleReference
+instanceKlass jdk/internal/module/ModuleResolution
+instanceKlass java/util/Collections$UnmodifiableMap
+instanceKlass jdk/internal/module/ModuleHashes$Builder
+instanceKlass jdk/internal/module/ModuleHashes
+instanceKlass jdk/internal/module/ModuleTarget
+instanceKlass java/lang/Enum
+instanceKlass java/lang/module/ModuleDescriptor$Version
+instanceKlass java/lang/module/ModuleDescriptor$Provides
+instanceKlass java/lang/module/ModuleDescriptor$Opens
+instanceKlass java/lang/module/ModuleDescriptor$Exports
+instanceKlass java/lang/module/ModuleDescriptor$Requires
+instanceKlass jdk/internal/module/Builder
+instanceKlass jdk/internal/module/SystemModules$default
+instanceKlass jdk/internal/module/SystemModules
+instanceKlass jdk/internal/module/SystemModulesMap
+instanceKlass java/net/URI$1
+instanceKlass jdk/internal/misc/JavaNetUriAccess
+instanceKlass java/net/URI
+instanceKlass jdk/internal/module/SystemModuleFinders
+instanceKlass jdk/internal/module/ArchivedModuleGraph
+instanceKlass jdk/internal/module/ModulePatcher
+instanceKlass java/util/ImmutableCollections
+instanceKlass java/lang/module/ModuleDescriptor$1
+instanceKlass jdk/internal/misc/JavaLangModuleAccess
+instanceKlass java/lang/module/ModuleDescriptor
+instanceKlass jdk/internal/module/ModuleBootstrap
+instanceKlass java/lang/CharacterData
+instanceKlass java/lang/invoke/MethodHandleStatics
+instanceKlass java/io/ExpiringCache
+instanceKlass java/io/FileSystem
+instanceKlass java/io/DefaultFileSystem
+instanceKlass java/io/File
+instanceKlass java/lang/System$2
+instanceKlass jdk/internal/misc/JavaLangAccess
+instanceKlass sun/io/Win32ErrorMode
+instanceKlass jdk/internal/misc/OSEnvironment
+instanceKlass java/lang/Integer$IntegerCache
+instanceKlass jdk/internal/misc/Signal$NativeHandler
+instanceKlass java/util/Hashtable$Entry
+instanceKlass jdk/internal/misc/Signal
+instanceKlass java/lang/Terminator$1
+instanceKlass jdk/internal/misc/Signal$Handler
+instanceKlass java/lang/Terminator
+instanceKlass java/nio/charset/CoderResult
+instanceKlass java/lang/Readable
+instanceKlass java/nio/ByteOrder
+instanceKlass java/nio/Buffer$1
+instanceKlass jdk/internal/misc/JavaNioAccess
+instanceKlass java/nio/charset/CharsetEncoder
+instanceKlass sun/nio/cs/ArrayEncoder
+instanceKlass sun/security/action/GetPropertyAction
+instanceKlass java/io/Writer
+instanceKlass java/io/OutputStream
+instanceKlass java/io/Flushable
+instanceKlass java/io/FileDescriptor$1
+instanceKlass jdk/internal/misc/JavaIOFileDescriptorAccess
+instanceKlass java/io/FileDescriptor
+instanceKlass java/lang/VersionProps
+instanceKlass jdk/internal/util/StaticProperty
+instanceKlass java/util/concurrent/ConcurrentHashMap$MapEntry
+instanceKlass java/util/concurrent/ConcurrentHashMap$Traverser
+instanceKlass java/lang/reflect/Array
+instanceKlass java/util/Collections$SynchronizedCollection
+instanceKlass java/util/List
+instanceKlass java/util/RandomAccess
+instanceKlass java/util/Collections
+instanceKlass java/util/concurrent/ConcurrentHashMap$CollectionView
+instanceKlass java/util/Properties$EntrySet
+instanceKlass java/lang/StringCoding$Result
+instanceKlass java/nio/charset/CodingErrorAction
+instanceKlass java/nio/charset/CharsetDecoder
+instanceKlass sun/nio/cs/ArrayDecoder
+instanceKlass sun/nio/cs/DelegatableDecoder
+instanceKlass java/lang/StringUTF16
+instanceKlass sun/nio/cs/DoubleByte
+instanceKlass java/lang/StringCoding$StringDecoder
+instanceKlass java/lang/ThreadLocal$ThreadLocalMap
+instanceKlass java/lang/StringCoding
+instanceKlass java/util/HashMap$Node
+instanceKlass jdk/internal/reflect/Reflection
+instanceKlass java/lang/Class$1
+instanceKlass java/lang/reflect/ReflectAccess
+instanceKlass jdk/internal/reflect/LangReflectAccess
+instanceKlass java/lang/reflect/Modifier
+instanceKlass java/lang/Class$Atomic
+instanceKlass java/lang/Class$ReflectionData
+instanceKlass java/nio/charset/StandardCharsets
+instanceKlass sun/nio/cs/HistoricallyNamedCharset
+instanceKlass java/lang/Math
+instanceKlass java/util/Arrays
+instanceKlass java/lang/ThreadLocal
+instanceKlass java/nio/charset/spi/CharsetProvider
+instanceKlass java/nio/charset/Charset
+instanceKlass java/lang/StringLatin1
+instanceKlass jdk/internal/misc/VM
+instanceKlass jdk/internal/misc/SharedSecrets
+instanceKlass java/lang/ref/Reference$1
+instanceKlass jdk/internal/misc/JavaLangRefAccess
+instanceKlass java/lang/ref/ReferenceQueue$Lock
+instanceKlass java/lang/ref/ReferenceQueue
+instanceKlass jdk/internal/reflect/ReflectionFactory
+instanceKlass java/util/concurrent/locks/LockSupport
+instanceKlass java/util/concurrent/ConcurrentHashMap$Node
+instanceKlass java/util/Map$Entry
+instanceKlass java/util/concurrent/ConcurrentHashMap$CounterCell
+instanceKlass java/util/concurrent/locks/ReentrantLock
+instanceKlass java/util/concurrent/locks/Lock
+instanceKlass java/lang/Runtime
+instanceKlass java/util/concurrent/ConcurrentMap
+instanceKlass java/util/AbstractMap
+instanceKlass java/security/cert/Certificate
+instanceKlass jdk/internal/reflect/ReflectionFactory$GetReflectionFactoryAction
+instanceKlass java/security/PrivilegedAction
+instanceKlass java/util/Objects
+instanceKlass java/util/AbstractCollection
+instanceKlass java/util/Set
+instanceKlass java/util/Collection
+instanceKlass java/lang/Iterable
+instanceKlass java/security/AccessController
+instanceKlass java/lang/String$CaseInsensitiveComparator
+instanceKlass java/util/Comparator
+instanceKlass java/io/ObjectStreamField
+instanceKlass java/util/Iterator
+instanceKlass java/lang/Number
+instanceKlass java/lang/Character
+instanceKlass java/lang/Boolean
+instanceKlass java/util/concurrent/locks/AbstractOwnableSynchronizer
+instanceKlass java/lang/LiveStackFrame
+instanceKlass java/lang/StackFrameInfo
+instanceKlass java/lang/StackWalker$StackFrame
+instanceKlass java/lang/StackStreamFactory$AbstractStackWalker
+instanceKlass java/lang/StackWalker
+instanceKlass java/nio/Buffer
+instanceKlass java/lang/StackTraceElement
+instanceKlass java/security/CodeSource
+instanceKlass jdk/internal/loader/ClassLoaders
+instanceKlass java/util/jar/Manifest
+instanceKlass java/net/URL
+instanceKlass java/io/InputStream
+instanceKlass java/io/Closeable
+instanceKlass java/lang/AutoCloseable
+instanceKlass jdk/internal/module/Modules
+instanceKlass jdk/internal/misc/Unsafe
+instanceKlass java/lang/AbstractStringBuilder
+instanceKlass java/lang/Appendable
+instanceKlass java/lang/AssertionStatusDirectives
+instanceKlass java/lang/invoke/MethodHandleNatives$CallSiteContext
+instanceKlass java/lang/invoke/CallSite
+instanceKlass java/lang/invoke/MethodType
+instanceKlass java/lang/invoke/LambdaForm
+instanceKlass java/lang/invoke/MethodHandleNatives
+instanceKlass java/lang/invoke/ResolvedMethodName
+instanceKlass java/lang/invoke/MemberName
+instanceKlass java/lang/invoke/VarHandle
+instanceKlass java/lang/invoke/MethodHandle
+instanceKlass jdk/internal/reflect/CallerSensitive
+instanceKlass java/lang/annotation/Annotation
+instanceKlass jdk/internal/reflect/FieldAccessor
+instanceKlass jdk/internal/reflect/ConstantPool
+instanceKlass jdk/internal/reflect/ConstructorAccessor
+instanceKlass jdk/internal/reflect/MethodAccessor
+instanceKlass jdk/internal/reflect/MagicAccessorImpl
+instanceKlass java/lang/reflect/Parameter
+instanceKlass java/lang/reflect/Member
+instanceKlass java/lang/reflect/AccessibleObject
+instanceKlass java/lang/Module
+instanceKlass java/util/Dictionary
+instanceKlass java/util/Map
+instanceKlass java/lang/ThreadGroup
+instanceKlass java/lang/Thread$UncaughtExceptionHandler
+instanceKlass java/lang/Thread
+instanceKlass java/lang/Runnable
+instanceKlass java/lang/ref/Reference
+instanceKlass java/security/AccessControlContext
+instanceKlass java/security/ProtectionDomain
+instanceKlass java/lang/SecurityManager
+instanceKlass java/lang/Throwable
+instanceKlass java/lang/System
+instanceKlass java/lang/ClassLoader
+instanceKlass java/lang/Cloneable
+instanceKlass java/lang/Class
+instanceKlass java/lang/reflect/Type
+instanceKlass java/lang/reflect/GenericDeclaration
+instanceKlass java/lang/reflect/AnnotatedElement
+instanceKlass java/lang/String
+instanceKlass java/lang/CharSequence
+instanceKlass java/lang/Comparable
+instanceKlass java/io/Serializable