Procházet zdrojové kódy

合并了2025/1/3西农现场分支内容(修改了现场提出的问题)

dedsudiyu před 6 měsíci
rodič
revize
038676b261
52 změnil soubory, kde provedl 4799 přidání a 2215 odebrání
  1. 9 1
      api/commonality/permission.js
  2. 6 5
      api/request/config.js
  3. 167 164
      pages.json
  4. binární
      pages/images/dataBoard/dataBoard-icon1.png
  5. binární
      pages/images/dataBoard/dataBoard-icon4.png
  6. binární
      pages/images/newImage/img_bg_sjmb@1x.png
  7. 1 1
      pages/views/home/home.vue
  8. 2 1
      pages/views/login/login.vue
  9. 9 0
      pages/views/pupilPage/pupilHome.vue
  10. 1 1
      pages/views/teacherPage/laboratoryList.vue
  11. 25 10
      pages_basics/views/earlyWarningManage/earlyWarningDetail.vue
  12. 541 570
      pages_basics/views/earlyWarningManage/videoMonitoring.vue
  13. 18 6
      pages_basics/views/gradingControl/gradingControl.vue
  14. 21 12
      pages_basics/views/gradingControl/gradingControlAdd.vue
  15. 27 11
      pages_basics/views/gradingControl/gradingControlDetail.vue
  16. 55 18
      pages_basics/views/gradingControl/gradingControlFinish.vue
  17. 1 1
      pages_manage/views/emergencyEvacuationBig.vue
  18. 158 110
      pages_manage/views/laboratory/safetyCardScan.vue
  19. 417 0
      pages_manage/views/laboratory/scanCodeCheck.vue
  20. 1 1
      pages_manage/views/laboratory/voiceBroadcast.vue
  21. 10 1
      pages_safetyCheck/api/index.js
  22. 167 68
      pages_safetyCheck/component/checkItemModule.vue
  23. binární
      pages_safetyCheck/images/icon_aqjc_anquanjiancha.png
  24. binární
      pages_safetyCheck/images/icon_aqjc_baocun.png
  25. binární
      pages_safetyCheck/images/icon_aqjc_bianji.png
  26. binární
      pages_safetyCheck/images/icon_aqjc_fucha.png
  27. binární
      pages_safetyCheck/images/icon_aqjc_jiancha.png
  28. binární
      pages_safetyCheck/images/icon_aqjc_luyin.png
  29. binární
      pages_safetyCheck/images/icon_aqjc_noYinhuan.png
  30. binární
      pages_safetyCheck/images/icon_aqjc_paizhao.png
  31. binární
      pages_safetyCheck/images/icon_aqjc_saoma.png
  32. binární
      pages_safetyCheck/images/icon_aqjc_shiyanshi.png
  33. binární
      pages_safetyCheck/images/icon_aqjc_suishoupai.png
  34. binární
      pages_safetyCheck/images/icon_aqjc_tijiao.png
  35. binární
      pages_safetyCheck/images/icon_aqjc_yinhuan.png
  36. binární
      pages_safetyCheck/images/icon_aqjc_zhenggai.png
  37. binární
      pages_safetyCheck/images/img_banner@1x.png
  38. 251 315
      pages_safetyCheck/views/inspectManage/conductInspections.vue
  39. 5 2
      pages_safetyCheck/views/inspectManage/hiddenDangerRecord.vue
  40. 86 23
      pages_safetyCheck/views/inspectManage/inspectAdd.vue
  41. 349 218
      pages_safetyCheck/views/inspectManage/inspectList.vue
  42. 299 106
      pages_safetyCheck/views/itemsManage/hiddenDangerItems.vue
  43. 538 312
      pages_safetyCheck/views/itemsManage/hiddenDangerItemsDetail.vue
  44. 126 9
      pages_safetyCheck/views/itemsManage/hiddenDangerRectification.vue
  45. 19 9
      pages_safetyCheck/views/planDetail.vue
  46. 95 30
      pages_safetyCheck/views/safetyCheck.vue
  47. 417 0
      pages_safetyCheck/views/scanCodeCheck.vue
  48. 672 0
      pages_safetyCheck/views/snapshotManage/laboratorySearch.vue
  49. 55 42
      pages_safetyCheck/views/snapshotManage/snapshotDetail.vue
  50. 14 5
      pages_safetyCheck/views/snapshotManage/snapshotItems.vue
  51. 200 122
      pages_safetyCheck/views/snapshotManage/snapshotList.vue
  52. 37 41
      pages_safetyCheck/views/snapshotManage/snapshotRectification.vue

+ 9 - 1
api/commonality/permission.js

@@ -18,4 +18,12 @@ export const systemSubjectGetListByPower = (data) => {
 		method: 'POST',
 		data: { ...data }
 	})
-};
+};
+//根据权限查询实验室列表
+export const laboratorySubRelInfoSelectInfoByPage = (data) => {
+	return apiResquest({
+		url: `/laboratory/subRelInfo/selectInfoByPage`,
+		method: 'POST',
+		data: { ...data }
+	})
+};

+ 6 - 5
api/request/config.js

@@ -7,21 +7,22 @@ const config = {
 	// base_url: 'http://192.168.1.17:8080',//小飞
 	// base_url: 'http://192.168.1.43/api',//小飞
 	// base_url: 'http://192.168.1.20:8080',//志伟
-	 base_url: 'http://192.168.1.39:8080',//高升
+	// base_url: 'http://192.168.1.39:8080',//高升
 	// base_url: 'http://192.168.1.29:8080',//何成
 	// base_url: 'https://demo.zjznai.com/xzgd/',
 	// base_url: 'https://lab.zjznai.com/labNhSystem/',//43服务器高升测试
 	// base_url: 'https://lab.zjznai.com/labTest/',//1.8外网
 	// base_url: 'https://lab.zjznai.com/labAppTest/',//43服务器线上
-	 //base_url: 'https://lab.zjznai.com/appTest/',//88服务器线上
+	// base_url: 'https://lab.zjznai.com/appTest/',//88服务器线上
 	// base_url: 'https://lab.zjznai.com/labSystem/', //矿大地址
 	// base_url: 'https://lab.zjznai.com/jdlabSystem/', //交大地址
 	// base_url: 'https://lab.zjznai.com/jndxlabSystem/', //暨大地址
 	// base_url: 'https://lab.zjznai.com/api/', //暨大化材
 	// base_url: 'https://lab.zjznai.com/kdwclabSystem/', //矿大文昌地址
-	// base_url: 'https://znyj.zjznai.suda.edu.cn/labSystem/', //苏大临时地址
-	// base_url: 'https://labcontrol.nwafu.edu.cn/api/', //西北农林
-	// base_url: 'https://lab.zjznai.com/labapp/', //43测试
+    //base_url: 'https://znyj.zjznai.suda.edu.cn/labSystem/', //苏大临时地址
+	base_url: 'https://labcontrol.nwafu.edu.cn/api/', //西北农林
+	// base_url: 'http://172.16.0.65/api/', //西北农林
+	//base_url: 'https://lab.zjznai.com/labapp/', //43测试
 }
 export {
 	config

+ 167 - 164
pages.json

@@ -1,15 +1,5 @@
 {
 	"pages": [
-
-		{
-			"path": "pages/views/login/login", //登录
-			"style": {
-				"navigationBarTitleText": "",
-				"navigationBarTextStyle": "white", //导航文字颜色
-				"navigationStyle": "custom" //关闭原生导航
-			}
-		},
-
 		{
 			"path": "pages/views/home/home", //首页
 			"style": {
@@ -20,6 +10,14 @@
 			}
 		},
 		{
+				"path": "pages/views/login/login", //登录
+				"style": {
+					"navigationBarTitleText": "",
+					"navigationBarTextStyle": "white", //导航文字颜色
+					"navigationStyle": "custom" //关闭原生导航
+				}
+			},
+		{
 			"path": "pages/views/dataBoard/dataBoard",
 			"style": {
 				"navigationBarTitleText": "",
@@ -201,7 +199,7 @@
 				{
 					"path": "views/gradingControl/gradingControl", //分级管控
 					"style": {
-						"navigationBarTitleText": "分级管控"
+						"navigationBarTitleText": "管控工作"
 					}
 				},
 				{
@@ -236,170 +234,170 @@
 				}
 			]
 		},
-		{
-			/* 供应商端分包 */
-			"root": "pages_supplier", //分包根路径
-			"name": "supplier", //分包名字可写可不写
-			"pages": [
-				/* 待办事项 */
-				{
-					"path": "views/backlogManage/backlogManage",
-					"style": {
-						"navigationBarTitleText": "待办清单"
-					}
-				},
-				{
-					"path": "views/backlogManage/backlogManageAirDetail",
-					"style": {
-						"navigationBarTitleText": "配送申请"
-					}
-				},
-				{
-					"path": "views/backlogManage/backlogManageRecycleDetail",
-					"style": {
-						"navigationBarTitleText": "回收申请"
-					}
-				},
-				{
-					"path": "views/backlogManage/backlogManageIssueDetail",
-					"style": {
-						"navigationBarTitleText": "货品问题"
-					}
-				},
+		// {
+		// 	/* 供应商端分包 */
+		// 	"root": "pages_supplier", //分包根路径
+		// 	"name": "supplier", //分包名字可写可不写
+		// 	"pages": [
+		// 		/* 待办事项 */
+		// 		{
+		// 			"path": "views/backlogManage/backlogManage",
+		// 			"style": {
+		// 				"navigationBarTitleText": "待办清单"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/backlogManage/backlogManageAirDetail",
+		// 			"style": {
+		// 				"navigationBarTitleText": "配送申请"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/backlogManage/backlogManageRecycleDetail",
+		// 			"style": {
+		// 				"navigationBarTitleText": "回收申请"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/backlogManage/backlogManageIssueDetail",
+		// 			"style": {
+		// 				"navigationBarTitleText": "货品问题"
+		// 			}
+		// 		},
 
-				/* 气瓶管理 */
-				{
-					"path": "views/gasManage/gasManageDetail",
-					"style": {
-						"navigationBarTitleText": "气瓶详情"
-					}
-				},
-				{
-					"path": "views/gasManage/gasManageAdd",
-					"style": {
-						"navigationBarTitleText": "新增气瓶"
-					}
-				},
-				{
-					"path": "views/gasManage/gasManage",
-					"style": {
-						"navigationBarTitleText": "气瓶管理"
-					}
-				},
-				/* 运输车辆 */
-				{
-					"path": "views/transportCar/transportCar",
-					"style": {
-						"navigationBarTitleText": "运输车辆管理"
-					}
-				},
-				{
-					"path": "views/transportCar/transportCarDetail",
-					"style": {
-						"navigationBarTitleText": "查看运输车辆"
-					}
-				},
-				{
-					"path": "views/transportCar/transportCarAdd",
-					"style": {
-						"navigationBarTitleText": "新增运输车辆"
-					}
-				},
+		// 		/* 气瓶管理 */
+		// 		{
+		// 			"path": "views/gasManage/gasManageDetail",
+		// 			"style": {
+		// 				"navigationBarTitleText": "气瓶详情"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/gasManage/gasManageAdd",
+		// 			"style": {
+		// 				"navigationBarTitleText": "新增气瓶"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/gasManage/gasManage",
+		// 			"style": {
+		// 				"navigationBarTitleText": "气瓶管理"
+		// 			}
+		// 		},
+		// 		/* 运输车辆 */
+		// 		{
+		// 			"path": "views/transportCar/transportCar",
+		// 			"style": {
+		// 				"navigationBarTitleText": "运输车辆管理"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/transportCar/transportCarDetail",
+		// 			"style": {
+		// 				"navigationBarTitleText": "查看运输车辆"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/transportCar/transportCarAdd",
+		// 			"style": {
+		// 				"navigationBarTitleText": "新增运输车辆"
+		// 			}
+		// 		},
 
 
 
 
-				/* 运输人员 */
-				{
-					"path": "views/transportPerson/transportPersonDetail",
-					"style": {
-						"navigationBarTitleText": "查看运输人员"
-					}
-				},
-				{
-					"path": "views/transportPerson/transportPersonAdd",
-					"style": {
-						"navigationBarTitleText": "新增运输人员"
-					}
-				},
-				{
-					"path": "views/transportPerson/transportPerson",
-					"style": {
-						"navigationBarTitleText": "运输人员管理"
-					}
-				},
-				/* 供气回收记录 */
-				{
-					"path": "views/gasRecycle/gasRecycleAirDetail",
-					"style": {
-						"navigationBarTitleText": "配送申请"
-					}
-				},
-				{
-					"path": "views/gasRecycle/gasRecycleRecycleDetail",
-					"style": {
-						"navigationBarTitleText": "回收申请"
-					}
-				},
-				{
-					"path": "views/gasRecycle/gasRecycleIssueDetail",
-					"style": {
-						"navigationBarTitleText": "货品问题"
-					}
-				},
-				{
-					"path": "views/gasRecycle/gasRecycle",
-					"style": {
-						"navigationBarTitleText": "供气回收记录"
-					}
-				},
+		// 		/* 运输人员 */
+		// 		{
+		// 			"path": "views/transportPerson/transportPersonDetail",
+		// 			"style": {
+		// 				"navigationBarTitleText": "查看运输人员"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/transportPerson/transportPersonAdd",
+		// 			"style": {
+		// 				"navigationBarTitleText": "新增运输人员"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/transportPerson/transportPerson",
+		// 			"style": {
+		// 				"navigationBarTitleText": "运输人员管理"
+		// 			}
+		// 		},
+		// 		/* 供气回收记录 */
+		// 		{
+		// 			"path": "views/gasRecycle/gasRecycleAirDetail",
+		// 			"style": {
+		// 				"navigationBarTitleText": "配送申请"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/gasRecycle/gasRecycleRecycleDetail",
+		// 			"style": {
+		// 				"navigationBarTitleText": "回收申请"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/gasRecycle/gasRecycleIssueDetail",
+		// 			"style": {
+		// 				"navigationBarTitleText": "货品问题"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/gasRecycle/gasRecycle",
+		// 			"style": {
+		// 				"navigationBarTitleText": "供气回收记录"
+		// 			}
+		// 		},
 
 
 
-				/* 个人中心 */
+		// 		/* 个人中心 */
 
-				{
-					"path": "views/mine/changePassword",
-					"style": {
-						"navigationBarTitleText": "修改密码"
-					}
-				},
-				{
-					"path": "views/mine/mine",
-					"style": {
-						"navigationBarTitleText": "资料信息"
-					}
-				},
+		// 		{
+		// 			"path": "views/mine/changePassword",
+		// 			"style": {
+		// 				"navigationBarTitleText": "修改密码"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/mine/mine",
+		// 			"style": {
+		// 				"navigationBarTitleText": "资料信息"
+		// 			}
+		// 		},
 
-				/* 注册 */
+		// 		/* 注册 */
 
-				{
-					"path": "views/register/forgotPassword", //忘记密码
-					"style": {
-						"navigationBarTitleText": "密码重置申请"
-					}
-				},
-				{
-					"path": "views/register/registerSuccess", //注册
-					"style": {
-						"navigationBarTitleText": "申请入驻"
-					}
-				},
+		// 		{
+		// 			"path": "views/register/forgotPassword", //忘记密码
+		// 			"style": {
+		// 				"navigationBarTitleText": "密码重置申请"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/register/registerSuccess", //注册
+		// 			"style": {
+		// 				"navigationBarTitleText": "申请入驻"
+		// 			}
+		// 		},
 
-				{
-					"path": "views/register/register", //注册
-					"style": {
-						"navigationBarTitleText": "注册"
-					}
-				},
-				{
-					"path": "views/register/registerTow", //注册
-					"style": {
-						"navigationBarTitleText": "注册"
-					}
-				}
-			]
-		},
+		// 		{
+		// 			"path": "views/register/register", //注册
+		// 			"style": {
+		// 				"navigationBarTitleText": "注册"
+		// 			}
+		// 		},
+		// 		{
+		// 			"path": "views/register/registerTow", //注册
+		// 			"style": {
+		// 				"navigationBarTitleText": "注册"
+		// 			}
+		// 		}
+		// 	]
+		// },
 		{
 			/* 学生端分包 */
 			"root": "pages_student", //分包根路径
@@ -1012,7 +1010,12 @@
 						"navigationBarTitleText": "随手拍整改项"
 					}
 				},
-
+				{
+					"path": "views/snapshotManage/laboratorySearch",
+					"style": {
+						"navigationBarTitleText": "搜索实验室"
+					}
+				},
 				{
 					"path": "views/snapshotManage/snapshotRectification",
 					"style": {

binární
pages/images/dataBoard/dataBoard-icon1.png


binární
pages/images/dataBoard/dataBoard-icon4.png


binární
pages/images/newImage/img_bg_sjmb@1x.png


+ 1 - 1
pages/views/home/home.vue

@@ -34,7 +34,7 @@
 				uni.removeStorageSync('userId');
 				uni.removeStorageSync('userType');
 				uni.redirectTo({
-					url: '/pages/login/login',
+					url: '/pages/views/login/login',
 				});
 			}
 		},

+ 2 - 1
pages/views/login/login.vue

@@ -200,13 +200,14 @@
 				});
 				if (data.code == 200) {
 					let obj = JSON.parse(data.data.configValue)
-					console.log('obj', obj)
 					//文件预览地址
 					uni.setStorageSync('filePreviewUrl', 'https://' + obj.fileExtranetUrl)
 					//小程序视频地址
 					uni.setStorageSync('cameraExtranetAgent', 'https://' + obj.cameraExtranetAgent)
 					//MQTT地址
 					uni.setStorageSync('mqttUrl', Decrypt(obj.mqttExtranetUrl))
+					//MQTT地址-内网
+					uni.setStorageSync('mqttIntranetUrl', Decrypt(obj.mqttIntranetUrl))
 					//MQTT账号
 					uni.setStorageSync('mqttUser', Decrypt(obj.mqttExtranetUser))
 					//MQTT密码

+ 9 - 0
pages/views/pupilPage/pupilHome.vue

@@ -14,6 +14,10 @@
 				<img class="button-img" src="@/pages/images/newImage/icon_sy_aqzr@1x.png">
 				<view class="button-name">安全准入</view>
 			</view>
+			<view class="button-min" @click="goPage('hierarchicalControlPupil')">
+				<img class="button-img" src="@/pages/images/newImage/icon_sy_fjgk@1x.png">
+				<view class="button-name">分级管控</view>
+			</view>
 			<view class="button-min" @click="goPage('securityCheck')">
 				<img class="button-img" src="@/pages/images/newImage/icon_sy_aqjc@1x.png">
 				<view class="button-name">安全检查</view>
@@ -117,6 +121,11 @@
 					uni.navigateTo({
 						url: "/pages_student/views/accessApplication/safeAccess",
 					});
+				}else if (type == 'hierarchicalControlPupil') {
+					//分级管控
+					uni.navigateTo({
+						url: "/pages_basics/views/gradingControl/gradingControl",
+					});
 				} else if (type == 'securityCheck') {
 					//安全检查
 					uni.navigateTo({

+ 1 - 1
pages/views/teacherPage/laboratoryList.vue

@@ -2,7 +2,7 @@
 <template>
 	<view id="laboratoryList">
 		<view class='top-search-value-max-box'>
-			<view class='top-search-value-box'>
+			<view class='top-search-value-box' @click="searchValueClick()">
 				<img src="@/pages/images/newImage/icon_sys_ss@1x.png">
 				<input class="input-box" v-model="queryParams.searchValue" 
 							 maxlength="10" placeholder="搜索实验室/房间号"

+ 25 - 10
pages_basics/views/earlyWarningManage/earlyWarningDetail.vue

@@ -1,7 +1,7 @@
 <!-- 预案报警信息 -->
 <template>
 	<view class="earlyWarning">
-		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		
 			<!-- 预案报警 -->
 			<view class="header" v-if="form.warnType==4">{{form.eventName}} - {{form.riskPlanLevel ==1?'低风险':(form.riskPlanLevel ==2?'中风险':(form.riskPlanLevel ==3?'较高风险':(form.riskPlanLevel ==4?'高风险':'')))}}</view>
 			<!-- 化学品 -->
@@ -198,21 +198,21 @@
 				</view>
 			</view>
 			<!-- 报警抓拍 -->
-			<view v-if="(form.warnType==1&&form.chemicalWarnType==1&&form.snapImg[0]) || (form.warnType!=1&&form.snapImg[0])"
+			<view v-if="(form.warnType==1&&form.chemicalWarnType==1&&form.recordPhoto[0]) || (form.warnType!=1&&form.recordPhoto[0])"
 				class="picture">
 				<view class="small_title"><text></text><text>报警抓拍</text></view>
 				<view class="picture_b">
 					<view class="img">
-						<img v-for="(item,index) in form.snapImg" @click="lockImg(form.snapImg)" :key="index"
-							:src="configUrl+item" />
+						<img v-for="(item,index) in form.recordPhoto" @click="lockImg(form.recordPhoto)" :key="index"
+							:src="item" />
 					</view>
 				</view>
 			</view>
 			<!-- 查看监控 -->
 			<view class="bottom_btn"
-				v-if="(form.warnType==1&&form.chemicalWarnType==1&&form.snapVideo[0]) || (form.warnType!=1&&form.snapVideo[0])"
+				v-if="(form.warnType==1&&form.chemicalWarnType==1&&form.recordVideo[0]) || (form.warnType!=1&&form.recordVideo[0])"
 				@click="handleClick('','monitor')">查看监控</view>
-		</scroll-view>
+		
 	</view>
 
 </template>
@@ -252,6 +252,7 @@
 			}
 		},
 		onLoad(option) {
+			console.log('短信',option)
 			let self = this;
 			if (!uni.getStorageSync('token')) {
 				if (option.noticeId) {
@@ -260,6 +261,9 @@
 				} else if (option.eventId) {
 					uni.setStorageSync('warningId', option.eventId);
 					uni.setStorageSync('warnType', '4');
+				}else if (option.id) {
+					uni.setStorageSync('warningId', option.id);
+					uni.setStorageSync('warnType', '4');
 				}
 				uni.redirectTo({
 					url: '/pages/views/login/login',
@@ -271,6 +275,9 @@
 				} else if (option.eventId) {
 					this.warningId = option.eventId
 					this.warnType = '4';
+				}else if (option.id) {
+					this.warningId = option.id
+					this.warnType = '4';
 				} else if (uni.getStorageSync('warningId')) {
 					this.warningId = uni.getStorageSync('warningId');
 					this.warnType = uni.getStorageSync('warnType');
@@ -435,6 +442,9 @@
 					data.data.warnType = 4;
 					data.data.eventStartTime = parseTime(data.data.eventStartTime, "{y}-{m}-{d} {h}:{i}:{s}");
 					data.data.eventEndTime = data.data.eventEndTime?parseTime(data.data.eventEndTime, "{h}:{i}:{s}"):null;
+					if(data.data.recordPhoto){
+						data.data.recordPhoto=data.data.recordPhoto.split(',')
+					}
 					let list = [];
 					data.data.messageLogVoList.forEach((item) => {
 						let minList = item.nickRoleName.split(',');
@@ -453,9 +463,16 @@
 			handleClick(row, doType) {
 				let self = this;
 				if (doType == 'monitor') { //监控
-					uni.navigateTo({
+					/* uni.navigateTo({
 						url: '/pages_basics/views/earlyWarningManage/videoMonitoring?subId=' + this.form.subId + '&floorId=' +
 							this.form.floorId //我的实验室
+					}); */
+					let obj = {
+						type:4,
+						subId:this.form.subId
+					}
+					uni.navigateTo({
+							url: '/pages_manage/views/laboratory/videoPlayer?item='+encodeURIComponent(JSON.stringify(obj))
 					});
 				}
 
@@ -468,11 +485,9 @@
 
 <style lang="stylus" scoped>
 	.earlyWarning {
-		height: 100%;
-		display flex;
 		padding-bottom: 30rpx;
 		box-sizing: border-box;
-
+	
 		.red_color {
 			color: #D40000;
 			border: 1rpx solid #D40000;

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 541 - 570
pages_basics/views/earlyWarningManage/videoMonitoring.vue


+ 18 - 6
pages_basics/views/gradingControl/gradingControl.vue

@@ -17,12 +17,12 @@
 							<view class="list_li_b_t_t">
 								<view class="list_li_b_t_t_n">
 									<view class="list_li_b_t_t_l"
-										:class="[item2.ruleType== '日管控' ? 'purple': '', item2.ruleType=='周管控'? 'blue': '',item2.ruleType=='月管控'? 'orange': '',item2.ruleType=='年管控'? 'green': '',]">
+										:class="[item2.ruleType== '日管控' ? 'purple': '', item2.ruleType=='周管控'? 'blue': '',item2.ruleType=='月管控'? 'orange': '',item2.ruleType=='季度管控'? 'lightBlue ': '',item2.ruleType=='半年管控'? 'deepPurple  ': '',item2.ruleType=='年管控'? 'green': '',]">
 										{{item2.ruleType}}
 									</view>
 									<view class="list_li_b_t_t_c">{{item2.ruleName}}</view>
 									<view class="list_li_b_t_t_r" v-if="item2.isExpired==1">(过期未完成)</view>
-									<view class="list_li_b_t_t_rr">{{item2.endDate}}</view>
+									<view class="list_li_b_t_t_rr">{{item2.endDateTow}}</view>
 								</view>
 							</view>
 							<view class="list_li_b_t_b">{{item2.ruleRemark}}</view>
@@ -32,7 +32,7 @@
 			</view>
 			<view class="get-null-box" v-if="infoList.length==0">暂无更多数据</view>
 		</scroll-view>
-		<view class="bottom-button-box" @click="goSafeAccess">完成记录</view>
+		<view class="bottom-button-box" @click="goSafeAccess">执行记录</view>
 	</view>
 </template>
 
@@ -88,9 +88,9 @@
 					data
 				} = await gradingControl(obj)
 				if (data.code == 200) {
-					data.data.forEach(function(item){
-						item.detailList.forEach(function(item2){
-							item2.endDate=parseTime(item2.endDate, "{y}-{m}-{d} {h}:{i}:{s}");
+					data.data.forEach(function(item) {
+						item.detailList.forEach(function(item2) {
+							item2.endDateTow = parseTime(item2.endDate, "{y}-{m}-{d}");
 						})
 					})
 
@@ -245,6 +245,18 @@
 									background: rgba(250, 136, 1, 0.2);
 								}
 
+								/* 季管控 */
+								.lightBlue {
+									color: #81d3f8;
+									background: rgba(129, 211, 248, 0.2);
+								}
+
+								/* 半年管控 */
+								.deepPurple {
+									color: #6565f1;
+									background: rgba(101, 101, 241, 0.2);
+								}
+
 								/* 年管控 */
 								.green {
 									color: #11BA25;

+ 21 - 12
pages_basics/views/gradingControl/gradingControlAdd.vue

@@ -17,12 +17,12 @@
 							<view class="list_li_b_t_t">
 								<view class="list_li_b_t_t_n">
 									<view class="list_li_b_t_t_l"
-										:class="[control.ruleType== '日管控' ? 'purple': '', control.ruleType=='周管控'? 'blue': '',control.ruleType=='月管控'? 'orange': '',control.ruleType=='年管控'? 'green': '',]">
+										:class="[control.ruleType== '日管控' ? 'purple': '', control.ruleType=='周管控'? 'blue': '',control.ruleType=='月管控'? 'orange': '',control.ruleType=='季管控'? 'lightBlue ': '',control.ruleType=='半年管控'? 'deepPurple  ': '',control.ruleType=='年管控'? 'green': '',]">
 										{{control.ruleType}}
 									</view>
 									<view class="list_li_b_t_t_c">{{control.ruleName}}</view>
 									<view class="list_li_b_t_t_r" v-if="control.isExpired==1">(过期未完成)</view>
-									<view class="list_li_b_t_t_rr">{{control.endDate}}</view>
+									<view class="list_li_b_t_t_rr">{{control.endDateTow}}</view>
 								</view>
 							</view>
 						</view>
@@ -117,30 +117,26 @@
 				if (item.type == 'png' || item.type == 'jpg' || item.type == 'jpeg' || item.type == 'gif') {
 					//查看图片
 					wx.previewImage({
-						urls: [config.base_url + item.url], //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+						urls: [item.url], //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
 						current: '', // 当前显示图片的http链接,默认是第一个
 						success: function(res) {},
 						fail: function(res) {},
 						complete: function(res) {},
 					})
-				} else if (item.type == 'pdf' || item.type == 'doc' || item.type == 'docx') {
+				} else if (item.type == 'pdf' || item.type == 'xlsx' || item.type == 'docx') {
 					uni.showLoading({
 						title: '下载中'
 					});
+					console.log(item)
 					//下载文档
 					wx.downloadFile({
-						url: config.base_url + item.url,
+						url:item.url,
 						header: {
 							Authorization: uni.getStorageSync('token')
 						},
 						success: function(res) {
-							console.log("resresresresresres", res)
 							const fileManager = wx.getFileSystemManager()
-							console.log('wx.env.USER_DATA_PATH', wx.env.USER_DATA_PATH);
-							console.log('item.name', item.name);
-							console.log('item.type', item.type);
 							const filePath = wx.env.USER_DATA_PATH + '/' + item.name
-							console.log('filePath', filePath);
 							fileManager.saveFile({
 								tempFilePath: res.tempFilePath,
 								filePath,
@@ -261,9 +257,10 @@
 
 
 						if (text != 'png' && text != 'jpg' && text != 'jpeg' && text != 'gif' && text != 'pdf' &&
-							text != 'doc' && text != 'docx') {
+							text != 'xlsx' &&
+							text != 'docx') {
 							uni.showToast({
-								title: '仅支持png/jpg/jpeg/gif/pdf/doc/docx类型的文件上传',
+								title: '仅支持png/jpg/jpeg/gif/pdf/xlsx/docx类型的文件上传',
 								icon: "none",
 								mask: true,
 								duration: 2000
@@ -527,6 +524,18 @@
 									background: rgba(250, 136, 1, 0.2);
 								}
 
+								/* 季管控 */
+								.lightBlue {
+									color: #81d3f8;
+									background: rgba(129, 211, 248, 0.2);
+								}
+
+								/* 半年管控 */
+								.deepPurple {
+									color: #6565f1;
+									background: rgba(101, 101, 241, 0.2);
+								}
+
 								/* 年管控 */
 								.green {
 									color: #11BA25;

+ 27 - 11
pages_basics/views/gradingControl/gradingControlDetail.vue

@@ -16,9 +16,9 @@
 						<view class="list_li_b_t">
 							<view class="list_li_b_t_t">
 								<view class="list_li_b_t_t_n">
-									<view class="list_li_b_t_t_l"
-										:class="[item2.ruleType== '日管控' ? 'purple': '', item2.ruleType=='周管控'? 'blue': '',item2.ruleType=='月管控'? 'orange': '',item2.ruleType=='年管控'? 'green': '',]">
-										{{item2.ruleType}}
+									<view class="list_li_b_t_t_l" :class="[infoList.ruleType== '日管控' ? 'purple': '', infoList.ruleType=='周管控'? 'blue': '',infoList.ruleType=='月管控'? 'orange': '',infoList.ruleType=='季度管控'? 'lightBlue ': '',infoList.ruleType=='半年管控'? 'deepPurple  ': '',
+infoList.ruleType=='年管控'? 'green': '',]">
+										{{infoList.ruleType}}
 									</view>
 									<view class="list_li_b_t_t_c">{{infoList.ruleName}}</view>
 								</view>
@@ -31,7 +31,7 @@
 							<view class="list_li_b_t_b" style="display: flex;" v-if="infoList.status == 0">
 								<label style="width:200rpx;">指定执行人员:</label>
 								<view style="flex:1;word-wrap:break-word;word-break:break-all;overflow: hidden;">
-									{{infoList.allUserName}}
+									{{infoList.allUserName?infoList.allUserName:''}}
 								</view>
 							</view>
 							<view class="list_li_b_t_b" style="display: flex;" v-if="infoList.status == 2"><label
@@ -54,7 +54,7 @@
 									@click="lookItem(item)">
 									<img src="@/pages_basics/images/icon_pdf.png" v-if="item.type == 'pdf'" />
 									<img src="@/pages_basics/images/icon_word.png"
-										v-if="item.type == 'doc' || item.type == 'docx'" />
+										v-if="item.type == 'docx'" />
 									<img :src="item.url"
 										v-if="item.type == 'png' || item.type == 'jpg' || item.type == 'jpeg' || item.type == 'gif'" />
 									<view class="list_li_b_b4_r_r">{{item.name}}</view>
@@ -130,20 +130,19 @@
 						fail: function(res) {},
 						complete: function(res) {},
 					})
-				} else if (item.type == 'pdf' || item.type == 'doc' || item.type == 'docx') {
+				} else if (item.type == 'pdf' || item.type == 'xlsx' || item.type == 'docx') {
 					uni.showLoading({
 						title: '下载中'
 					});
 					//下载文档
 					wx.downloadFile({
-						url: item.url,
+						url:item.url,
 						header: {
 							Authorization: uni.getStorageSync('token')
 						},
 						success: function(res) {
-							console.log("resresresresresres", res)
 							const fileManager = wx.getFileSystemManager()
-							const filePath = wx.env.USER_DATA_PATH + '/' + item.name + '.docx'
+							const filePath = wx.env.USER_DATA_PATH + '/' + item.name
 							fileManager.saveFile({
 								tempFilePath: res.tempFilePath,
 								filePath,
@@ -211,8 +210,13 @@
 					data
 				} = await gradingControlDetail(this.id)
 				if (data.code == 200) {
-					data.data.endDate = parseTime(data.data.endDate, "{y}-{m}-{d} {h}:{i}:{s}");
-					data.data.detail.createTime = parseTime(data.data.detail.createTime, "{y}-{m}-{d} {h}:{i}:{s}");
+					if(data.data.endDate){
+						data.data.endDate = parseTime(data.data.endDate, "{y}-{m}-{d} {h}:{i}:{s}");
+					}
+					
+					if(data.data.detail){
+						data.data.detail.createTime = parseTime(data.data.detail.createTime, "{y}-{m}-{d} {h}:{i}:{s}");
+					}
 					this.infoList = data.data
 					listName = data.data.detail.imgName.split(",")
 					listUrl = data.data.detail.imgUrl.split(",")
@@ -377,6 +381,18 @@
 									background: rgba(250, 136, 1, 0.2);
 								}
 
+								/* 季管控 */
+								.lightBlue {
+									color: #81d3f8;
+									background: rgba(129, 211, 248, 0.2);
+								}
+
+								/* 半年管控 */
+								.deepPurple {
+									color: #6565f1;
+									background: rgba(101, 101, 241, 0.2);
+								}
+
 								/* 年管控 */
 								.green {
 									color: #11BA25;

+ 55 - 18
pages_basics/views/gradingControl/gradingControlFinish.vue

@@ -3,7 +3,7 @@
 	<view id="accessQualification">
 		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
 			<view class="list">
-				<view class="list_li" v-for="(item,index) in infoList" :key="index">
+				<view class="list_li" v-for="(item,index) in dataList" :key="index">
 					<view class="list_li_t">
 						<!-- <view class="list_li_t_l" :style="'color:'+item.levelColor+';border-color:'+item.levelColor">{{item.levelName}}</view> -->
 						<view class="list_li_t_c">{{item.subName}}</view>
@@ -16,7 +16,7 @@
 							<view class="list_li_b_t_t">
 								<view class="list_li_b_t_t_n">
 									<view class="list_li_b_t_t_l"
-										:class="[item2.ruleType== '日管控' ? 'purple': '', item2.ruleType=='周管控'? 'blue': '',item2.ruleType=='月管控'? 'orange': '',item2.ruleType=='年管控'? 'green': '',]">
+										:class="[item2.ruleType== '日管控' ? 'purple': '', item2.ruleType=='周管控'? 'blue': '',item2.ruleType=='月管控'? 'orange': '',item2.ruleType=='季度管控'? 'lightBlue ': '',item2.ruleType=='半年管控'? 'deepPurple  ': '',item2.ruleType=='年管控'? 'green': '',]">
 										{{item2.ruleType}}
 									</view>
 									<view class="list_li_b_t_t_c">{{item2.ruleName}}</view>
@@ -34,7 +34,7 @@
 					</view>
 				</view>
 			</view>
-			<view class="get-null-box" v-if="infoList.length==0">暂无更多数据</view>
+			<view class="get-null-box" v-if="getDataType">暂无更多数据</view>
 		</scroll-view>
 
 	</view>
@@ -50,7 +50,13 @@
 	export default {
 		data() {
 			return {
-				infoList: [],
+				queryParams: {
+					page: 1,
+					pageSize: 20,
+				},
+				total: 0,
+				getDataType: null,
+				dataList: [],
 			}
 		},
 		onLoad() {
@@ -65,13 +71,11 @@
 
 			//清除
 			clearData() {
-				this.infoList = [];
+				this.dataList = [];
 
 			},
 			//去详情页
 			goPageInfo(item) {
-				console.log(11)
-				console.log(item)
 				uni.navigateTo({
 					url: '/pages_basics/views/gradingControl/gradingControlDetail?item=' + encodeURIComponent(JSON
 						.stringify(item))
@@ -81,26 +85,44 @@
 			scrollGet() {
 				this.getList();
 			},
+			//滚动事件
+			scrollGet() {
+				let self = this;
+				if (self.total / self.queryParams.pageSize <= self.queryParams.page) {
+					this.$set(this, 'getDataType', true);
+				} else {
+					this.queryParams.page += 1;
+					this.$nextTick(() => {
+						this.getList();
+					})
+				}
+			},
 
-
-			//获取列表数据
 			async getList() {
 				let self = this;
-				let obj = {
-
-				}
 				const {
 					data
-				} = await gradingControlFinish(obj)
+				} = await gradingControlFinish(this.queryParams);
 				if (data.code == 200) {
-					data.data.forEach(function(item){
-						item.detailList.forEach(function(item2){
-							item2.endDate=parseTime(item2.endDate, "{y}-{m}-{d} {h}:{i}:{s}");
+					data.data.records.forEach(function(item) {
+						item.detailList.forEach(function(item2) {
+							item2.endDate = parseTime(item2.endDate, "{y}-{m}-{d}");
 						})
 					})
-					self.infoList = data.data;
+					if (self.queryParams.page == 1) {
+						this.dataList = data.data.records;
+						this.total = data.data.total;
+						if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+							this.$set(this, 'getDataType', true);
+						}
+					} else {
+						this.dataList = [...this.dataList, ...data.data.records]
+						this.total = data.data.total;
+						if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+							this.$set(this, 'getDataType', true);
+						}
+					}
 				}
-
 			},
 		}
 	}
@@ -247,6 +269,7 @@
 									background: rgba(172, 32, 224, 0.2);
 								}
 
+
 								/* 周管控 */
 								.blue {
 									color: #0183FA;
@@ -259,6 +282,20 @@
 									background: rgba(250, 136, 1, 0.2);
 								}
 
+								/* 季管控 */
+								.lightBlue {
+									color: #81d3f8;
+									background: rgba(129, 211, 248, 0.2);
+								}
+
+								/* 半年管控 */
+								.deepPurple {
+									color: #6565f1;
+									background: rgba(101, 101, 241, 0.2);
+								}
+
+
+
 								/* 年管控 */
 								.green {
 									color: #11BA25;

+ 1 - 1
pages_manage/views/emergencyEvacuationBig.vue

@@ -670,7 +670,7 @@
 						let res = JSON.parse(uploadFileRes.data);
 						if (res.code == 200) {
 							console.log("上传成功", res)
-							let url = 'http://'+config.base_url.split('://')[1]+ '/' +res.data.url
+							let url = 'http://'+uni.getStorageSync('mqttIntranetUrl').split(':')[0]+'/'+res.data.url
 							self.iotAppSpeakerPlayVoice(url);
 						} else {
 							uni.showToast({

+ 158 - 110
pages_manage/views/laboratory/safetyCardScan.vue

@@ -20,15 +20,23 @@
 		</view>
 		<view class="safetyCard" v-if="pageType==0">
 			<view class="lab-info">
-				<view class="lab-info-t">
-					<view>{{newData.levelName}}</view>
-					<view>{{newData.typeName}}</view>
-					<view>{{newData.subName}}({{newData.roomNum}})</view>
-				</view>
-				<view class="lab-info-b">
-					<img src="@/pages_safetyCheck/images/icon_sys_xz@1x.png">
-					{{newData.buildName}}{{newData.floorName}}
+				<img class="lab-info-l" src="@/pages_safetyCheck/images/icon_aqjc_shiyanshi.png">
+				<view class="lab-info-c">
+					<view class="lab-info-c-t">
+						<view class="lab-info-c-t-l">{{newData.subName}}</view>
+						<view class="lab-info-c-t-r"
+							:style="'border:1rpx solid '+newData.levelColor+';background:'+newData.levelColorTow+';'">
+							<text
+								:style="'border-right:1rpx solid '+newData.levelColor+';color:'+newData.levelColor+';'">{{newData.levelName?newData.levelName:''}}</text>
+							<text
+								:style="'color:'+newData.levelColor+';'">{{newData.typeName?newData.typeName:''}}</text>
+						</view>
+					</view>
+					<view class="lab-info-c-b">
+						{{newData.roomNum?newData.roomNum:'-'}}房间&{{newData.buildName}}
+					</view>
 				</view>
+				<view class="lab-info-r">{{newData.subArea}}㎡</view>
 			</view>
 			<view class="liability-unit">
 				<view>学院单位</view>
@@ -83,9 +91,13 @@
 			</view>
 		</view>
 		<view class="position-button-box" v-if="pageType == 0">
-			<view class="position-button-p-1" @click="goPage('securityCheck')">安全检查</view>
-			<view class="position-button-p-2" @click="goPage('snapshot')">随手拍</view>
+			<img class="position-button-p-1" @click="goPage('securityCheck',true)"
+				src="@/pages_safetyCheck/images/icon_aqjc_anquanjiancha.png">
+			<img class="position-button-p-2" @click="goPage('snapshot','')"
+				src="@/pages_safetyCheck/images/icon_aqjc_suishoupai.png">
 		</view>
+		<!-- 安全检查 -->
+		<scanCodeCheck v-if="securityCheck" :subjectData="subjectData"></scanCodeCheck>
 		<!-- 物联控制 -->
 		<iotControl ref="iotControl" v-if="pageType == 1" :subjectData="subjectData"></iotControl>
 		<!-- 进出记录 -->
@@ -115,6 +127,9 @@
 		airConditioning
 	} from '@/pages_manage/views/laboratory/airConditioning.vue'
 	import {
+		scanCodeCheck
+	} from '@/pages_manage/views/laboratory/scanCodeCheck.vue'
+	import {
 		config
 	} from '@/api/request/config.js'
 	import {
@@ -127,6 +142,7 @@
 			accessRecord,
 			voiceBroadcast,
 			airConditioning,
+			scanCodeCheck,
 		},
 		data() {
 			return {
@@ -160,8 +176,8 @@
 				conditioningPage: false,
 				// 空调弹窗
 				airConditioningData: null,
-				saoCodeType:false,
-
+				securityCheck: false,
+				form: {},
 			}
 		},
 		// 父页面
@@ -180,6 +196,9 @@
 					newData.labInfoBrandModels[i].showType = true;
 				}
 			}
+			if (newData.levelColor) {
+				newData.levelColorTow = this.hexToRgb(newData.levelColor, 0.2)
+			}
 			this.$nextTick(() => {
 				this.$set(this, 'newData', newData);
 				this.$set(this, 'subjectData', newData);
@@ -188,29 +207,40 @@
 
 		},
 		onShow() {
-
+			this.$set(this, 'securityCheck', false)
 		},
 		mounted() {
 
 		},
 		methods: {
+			//十六进制颜色值和RGB格式转换
+			hexToRgb(hex, opacity = 1) {
+				// 去除#号
+				var color = hex.replace("#", "");
+				// 分割成红、绿、蓝三部分的16进制字符串
+				var red = parseInt(color.substring(0, 2), 16);
+				var green = parseInt(color.substring(2, 4), 16);
+				var blue = parseInt(color.substring(4, 6), 16);
+				return `RGB(${red}, ${green}, ${blue},${opacity})`;
+			},
 			//拨打电话
-			callPhone(tel){
+			callPhone(tel) {
 				uni.makePhoneCall({
 					phoneNumber: tel
 				})
 			},
-			goVideoPage(){
+			goVideoPage() {
 				console.log('视频')
 				let obj = {
-					type:4,
-					subId:this.newData.subId
+					type: 4,
+					subId: this.newData.subId
 				}
 				uni.navigateTo({
-						url: '/pages_manage/views/laboratory/videoPlayer?item='+encodeURIComponent(JSON.stringify(obj))
+					url: '/pages_manage/views/laboratory/videoPlayer?item=' + encodeURIComponent(JSON.stringify(
+						obj))
 				});
 			},
-			getIotControlData(){
+			getIotControlData() {
 				this.$refs['iotControl'].iotAppHardwareFindByType();
 			},
 			buttonClick(type, row) {
@@ -241,7 +271,8 @@
 				} else if (type == 'adminShowType') {
 					this.$set(this.newData, 'adminShowType', !this.newData.adminShowType);
 				} else if (type == 'list') {
-					this.$set(this.newData.labInfoBrandModels[index], 'showType', !this.newData.labInfoBrandModels[index].showType);
+					this.$set(this.newData.labInfoBrandModels[index], 'showType', !this.newData.labInfoBrandModels[index]
+						.showType);
 				}
 			},
 			//顶部tab点击
@@ -250,7 +281,7 @@
 					this.$set(this, 'pageType', index);
 				}
 			},
-			goPage(type){
+			goPage(type, status) {
 				if (!pageRestrictVerify(type)) {
 					uni.showToast({
 						title: '没有相关权限,请联系管理员',
@@ -259,27 +290,31 @@
 						duration: 2000
 					});
 					return
-				}
-				if (type == 'securityCheck') {
-					//安全检查
-					uni.navigateTo({
-						url: "/pages_safetyCheck/views/safetyCheck",
-					});
-					/* if(this.identityData){
-						
-					}else{
-						uni.showToast({
-							mask: true,
-							icon: "none",
-							position: "center",
-							title: '您不是校/院级管理员或督导组成员,无法使用该功能.',
-							duration: 2000
-						});
-					} */
+				} else if (type == 'securityCheck') {
+					if (status) {
+						this.$set(this, "securityCheck", true)
+					} else {
+						this.$set(this, "securityCheck", false)
+					}
 				} else if (type == 'snapshot') {
-					//随手拍
+					console.log(111)
+					console.log(this.newData)
+					this.$set(this.form, "subId", this.newData.subId)
+					this.$set(this.form, "subName", this.newData.subName)
+					this.$set(this.form, "subRoom", this.newData.roomNum)
+					this.$set(this.form, "deptId", this.newData.deptId)
+					this.$set(this.form, "deptName", this.newData.deptName)
+					this.$set(this.form, "buildId", this.newData.buildId)
+					this.$set(this.form, "buildName", this.newData.buildName)
+					this.$set(this.form, "floorId", this.newData.floorId)
+					this.$set(this.form, "floorName", this.newData.floorName)
+					this.$set(this.form, "typeId", this.newData.typeId)
+					this.$set(this.form, "classTypeNames", this.newData.typeName)
+					this.$set(this.form, "levelId", this.newData.levelId)
+					this.$set(this.form, "classLevelName", this.newData.levelName)
 					uni.navigateTo({
-						url: "/pages_safetyCheck/views/snapshotManage/snapshotList",
+						url: '/pages_safetyCheck/views/snapshotManage/snapshotList?form=' +
+							encodeURIComponent(JSON.stringify(this.form))
 					});
 				}
 			},
@@ -289,7 +324,7 @@
 
 <style lang="stylus" scoped>
 	.safetyCardScan {
-		height:100%;
+		height: 100%;
 
 		#fontColor-A {
 			color: #00DEDE;
@@ -304,7 +339,7 @@
 		}
 
 		.header {
-			height:192rpx;
+			height: 192rpx;
 			width: 100%;
 			// position: fixed;
 			// top: 0rpx;
@@ -392,71 +427,91 @@
 		/* 安全信息牌 */
 		.safetyCard {
 			padding-bottom: 150rpx;
+
 			.lab-info {
 				background: #FFFFFF;
+				display: flex;
+				justify-content: space-between;
 
-				.lab-info-t {
-					width: 750rpx;
+				.lab-info-l {
+					width: 80rpx;
 					height: 80rpx;
-					border-bottom: 2rpx dashed #E0E0E0;
-					display: flex;
-					justify-content: flex-start;
-					align-items: center;
-					padding: 0 30rpx;
-					box-sizing: border-box;
+					background: #0183FA;
+					border-radius: 10rpx 10rpx 10rpx 10rpx;
+					margin-left: 30rpx;
+					margin-top: 30rpx;
+				}
 
-					>view:nth-of-type(1) {
-						width: 100rpx;
-						height: 60rpx;
-						background: #FF0000;
-						border-radius: 50rpx 50rpx 50rpx 50rpx;
-						font-size: 30rpx;
-						color: #FFFFFF;
-						line-height: 60rpx;
-						text-align: center;
-					}
+				.lab-info-c {
+					width: 500rpx;
+					margin: 24rpx 30rpx 0 20rpx;
 
-					>view:nth-of-type(2) {
-						width: 130rpx;
-						height: 60rpx;
-						border-radius: 50rpx 50rpx 50rpx 50rpx;
-						border: 2rpx solid #FF8C00;
-						font-size: 30rpx;
-						color: #FF8C00;
-						line-height: 60rpx;
-						text-align: center;
-						margin: 0 30rpx 0 10rpx;
+					.lab-info-c-t {
+						display: flex;
+						justify-content: space-between;
+
+						.lab-info-c-t-l {
+							font-size: 30rpx;
+							color: #333333;
+							line-height: 42rpx;
+							text-align: left;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+						}
+
+						.lab-info-c-t-r {
+							display: flex;
+							justify-content: flex-start;
+							background: rgba(255, 0, 0, 0.2);
+							border-radius: 10rpx 10rpx 10rpx 10rpx;
+							border: 2rpx solid #FF0000;
+							width: 200rpx;
+							height: 40rpx;
+							margin-left: 10rpx;
+
+							>text {
+								display: inline-block;
+								flex: 1;
+								text-align: center;
+								font-size: 24rpx;
+								color: #FF0000;
+								line-height: 40rpx;
+								text-align: center;
+								overflow: hidden;
+								text-overflow: ellipsis;
+								white-space: nowrap;
+							}
+
+							>text:nth-of-type(1) {
+								border-right: 2rpx solid #FF0000;
+							}
+
+							>text:nth-of-type(2) {}
+						}
 					}
 
-					>view:nth-of-type(3) {
+					.lab-info-c-b {
 						font-size: 30rpx;
-						color: #333333;
+						color: #666666;
 						line-height: 42rpx;
 						text-align: left;
+						margin-top: 10rpx;
 						overflow: hidden;
 						text-overflow: ellipsis;
 						white-space: nowrap;
 					}
 				}
 
-				.lab-info-b {
-					height: 80rpx;
-					padding: 0 30rpx;
-					box-sizing: border-box;
-					display: flex;
-					justify-content: flex-start;
-					align-items: center;
-
-					>img {
-						width: 34rpx;
-						height: 34rpx;
-						margin-right: 12rpx;
-					}
-
-					font-size: 30rpx;
-					color: #333333;
-					line-height: 42rpx;
-					text-align: left;
+				.lab-info-r {
+					width: 100rpx;
+					height: 150rpx;
+					background: rgba(1, 131, 250, 0.2);
+					border-radius: 0rpx 0rpx 0rpx 0rpx;
+					font-size: 28rpx;
+					color: #0183FA;
+					line-height: 150rpx;
+					text-align: center;
 				}
 			}
 
@@ -682,30 +737,23 @@
 
 		.position-button-box {
 			position: fixed;
-			bottom: 25rpx;
-			left: 30rpx;
-			width: 690rpx;
-			height: 100rpx;
+			bottom: 40rpx;
 			display: flex;
-			color: #fff;
-			overflow: hidden;
-			border-radius: 50rpx;
+			justify-content: center;
 
-			.position-button-p-1 {
-				width: 345rpx;
-				line-height: 100rpx;
-				font-size: 30rpx;
-				text-align: center;
-				background-color: #FF8C00;
+			>img {
+				width: 160rpx;
+				height: 160rpx;
 			}
 
-			.position-button-p-2 {
-				width: 345rpx;
-				line-height: 100rpx;
-				font-size: 30rpx;
-				text-align: center;
-				background-color: #0183FA;
+			.position-button-p-1 {
+				margin-left: 174rpx;
+				margin-right: 120rpx;
 			}
+
+			.position-button-p-2 {}
 		}
+
+
 	}
-</style>
+</style>

+ 417 - 0
pages_manage/views/laboratory/scanCodeCheck.vue

@@ -0,0 +1,417 @@
+<template>
+	<view class="shade">
+		<view class="null-box" @click="dialogClose()"></view>
+		<view class="shade_n">
+			<view class="title">
+				<view>{{dialogTtile}}</view>
+				<!-- <img src="@/pages_safetyCheck/images/icon_06.png"> -->
+			</view>
+			<view class="batch">
+				<view class="batch-li" @click="batchClick(item)" v-for="(item,index) in batchList">
+					<view class="batch-li-l">
+						<text v-if="dialogStatus==0">{{item.planTitle}}</text>
+						<text v-if="dialogStatus==1">{{item.checkName}}</text>
+					</view>
+					<view class="batch-li-r">
+						<img src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		securityAppCheckPlanAppTitleList,
+		securityAppCheckManageList,
+		securityAppCheckSetOptionList,
+	} from '@/pages_safetyCheck/api/index.js'
+	import {
+		config
+	} from '@/api/request/config.js'
+	export default {
+		name: "iotControl",
+		props: {
+			subjectData: {},
+		},
+		data() {
+			return {
+				baseUrl: config.base_url,
+				newData:{},
+				dialogTtile: '',
+				dialogStatus: 0, //0计划 1批次 2实验室
+				batchList: [],
+				queryParams: {
+					page: 1,
+					pageSize: 100,
+					checkCategory: '', //1校院巡查 2学院自查
+					subId: '',
+				},
+				checkPlanSetVoList: null,
+				form: {},
+				OptionListArr:[],//临时存储检查项
+				planId:'',
+				planTitle:'',
+				checkTypeName:'',
+				crossCheck:'',
+			}
+		},
+		created() {
+			
+		},
+		mounted() {
+			if(uni.getStorageSync('identityData')){
+				if(uni.getStorageSync('identityData').type=='collegeAdmin'){
+					this.queryParams.checkCategory=2
+				}else if(uni.getStorageSync('identityData').type=='schoolAdmin'){
+					this.queryParams.checkCategory=1
+				}
+			}
+			this.$set(this, 'newData', this.subjectData);
+			console.log(this.subjectData)
+			this.$set(this.queryParams, 'subId', this.subjectData.subId);
+			this.securityAppCheckPlanAppTitleList();
+		},
+		methods: {
+			dialogClose() {
+				this.dialogStatus = 0;
+				this.$parent.goPage('securityCheck',false);
+				
+				
+			},
+			//十六进制颜色值和RGB格式转换
+			hexToRgb(hex, opacity = 1) {
+				// 去除#号
+				var color = hex.replace("#", "");
+				// 分割成红、绿、蓝三部分的16进制字符串
+				var red = parseInt(color.substring(0, 2), 16);
+				var green = parseInt(color.substring(2, 4), 16);
+				var blue = parseInt(color.substring(4, 6), 16);
+				return `RGB(${red}, ${green}, ${blue},${opacity})`;
+			},
+			batchClick(row) {
+				let self = this;
+				if (this.dialogStatus == 0) { //计划点击
+					this.$set(this, 'planId', row.planId);
+					this.$set(this, 'planTitle', row.planTitle);
+					this.$set(this, 'checkTypeName', row.checkTypeName);
+					this.$set(this, 'crossCheck', row.crossCheck);
+					if (row.checkPlanSetVoList.length == 1) {
+						//如果只有1个检查批次不弹窗
+						let planSetId = row.checkPlanSetVoList[0].planSetId
+						self.checkPlanSetVoList = row.checkPlanSetVoList[0];
+						self.securityAppCheckManageList(planSetId)
+					} else if (row.checkPlanSetVoList.length == 0) {
+						this.dialogStatus = 0;
+						this.$parent.goPage('securityCheck',false);
+						uni.showToast({
+							title: '该实验室暂无检查计划!',
+							icon: "none",
+							mask: true,
+							duration: 2000
+						});
+						return
+					} else {
+						this.$set(this, 'batchList', row.checkPlanSetVoList);
+						this.dialogStatus = 1;
+						this.dialogTtile = '批次';
+						this.$parent.goPage('securityCheck',true);
+			
+					}
+				} else if (this.dialogStatus == 1) { //批次点击
+					/* this.dialogStatus = 2;
+					this.dialogTtile = '实验室'; */
+					let planSetId = row.planSetId
+					self.checkPlanSetVoList = row;
+					this.securityAppCheckManageList(planSetId)
+				}
+			},
+			//查询计划
+			async securityAppCheckPlanAppTitleList() {
+				this.queryParams.subId = this.newData.subId;
+				this.queryParams.checkStatus = 0;
+				let self = this;
+				const {
+					data
+				} = await securityAppCheckPlanAppTitleList(this.queryParams);
+				if (data.code == 200) {
+					//循环过滤掉当前计划中批次中已经检查完成的
+					data.data.records.forEach(function(item, index) {
+						let list = [];
+						item.checkPlanSetVoList.forEach(function(item2) {
+							if (item2.checkSetProgress != 100) {
+								list.push(item2)
+							}
+						})
+						item.checkPlanSetVoList = list
+					})
+					let list2 = []
+					list2 = data.data.records.filter(function(item) {
+						return item.checkPlanSetVoList.length != 0
+					});
+					data.data.records = list2
+			
+					if (data.data.records.length == 1) { //一个计划
+						this.$set(this, 'planId', data.data.records[0].planId);
+						this.$set(this, 'planTitle', data.data.records[0].planTitle);
+						this.$set(this, 'checkTypeName', data.data.records[0].checkTypeName);
+						this.$set(this, 'crossCheck', data.data.records[0].crossCheck);
+						if (data.data.records[0].checkPlanSetVoList.length == 1) { //1个批次
+							let planSetId = data.data.records[0]
+							if (data.data.records[0].checkPlanSetVoList[0]) { //一个批次
+								let planSetId = data.data.records[0].checkPlanSetVoList[0].planSetId
+								self.checkPlanSetVoList = data.data.records[0].checkPlanSetVoList[0];
+								self.securityAppCheckManageList(planSetId)
+							}
+						} else if (data.data.records[0].checkPlanSetVoList.length == 0) {
+							this.dialogStatus = 0;
+							this.$parent.goPage('securityCheck',false);
+							uni.showToast({
+								title: '该实验室暂无检查计划!',
+								icon: "none",
+								mask: true,
+								duration: 2000
+							});
+							return
+						} else { //多个批次
+							this.dialogStatus = 1;
+							this.batchList = data.data.records[0].checkPlanSetVoList;
+							this.$parent.goPage('securityCheck',true);
+							this.dialogTtile = '批次';
+						}
+			
+					} else if (data.data.records.length==0) {
+						this.dialogStatus = 0;
+						this.$parent.goPage('securityCheck',false);
+						uni.showToast({
+							title: '该实验室暂无检查计划!',
+							icon: "none",
+							mask: true,
+							duration: 2000
+						});
+						return
+					} else { //多个计划
+						this.batchList = data.data.records;
+						this.$parent.goPage('securityCheck',true);
+						this.dialogTtile = '计划标题';
+					}
+				}
+			},
+			//检查任务-在此结果里对比实验室Id判断是否有实验室
+			async securityAppCheckManageList(planSetId) {
+				let self = this;
+				let obj = {
+					page: 1,
+					pageSize: 20,
+					planSetId: planSetId,
+					subId: self.newData.subId,
+				}
+				const {
+					data
+				} = await securityAppCheckManageList(obj);
+				if (data.code == 200) {
+					//this.shadeList = data.data.records;
+					if (data.data.records[0]) {
+						let manageId = data.data.records[0].manageId;
+						self.securityAppCheckSetOptionList(data.data.records[0],0);
+					} else {
+						self.dialogStatus = 0;
+						this.$parent.goPage('securityCheck',false);
+						uni.showToast({
+							title: '该实验室暂无检查计划!',
+							icon: "none",
+							mask: true,
+							duration: 2000
+						});
+						return
+					}
+			
+				}
+			},
+			//查询检查项
+			async securityAppCheckSetOptionList(item,checkStatus) {
+				let self = this;
+				let upData = item;
+				let obj = {
+					page: 1,
+					pageSize: 20,
+					checkStatus: checkStatus,
+					manageId: upData.manageId,
+				}
+				const {
+					data
+				} = await securityAppCheckSetOptionList(obj);
+				if (data.code == 200 && checkStatus==0) {//先查询待检查数据
+					if (data.data.records[0]) {
+						let infoData = {};
+						infoData.pageType = 0;
+						infoData.itemsStatus = 0;
+						infoData.subName = upData.subName;
+						infoData.checkPlanSetVoList = self.checkPlanSetVoList;
+						infoData.planId = self.planId;
+						infoData.planTitle = self.planTitle;
+						infoData.checkTypeName = self.checkTypeName;
+						infoData.crossCheck = self.crossCheck;
+						
+						infoData.roomNum = upData.roomNum;
+						infoData.subId = data.data.records[0].subId;
+						infoData.manageId = data.data.records[0].manageId;
+						infoData.setOptionId = data.data.records[0].setOptionId;
+						infoData.hazardCheckPro = data.data.records[0].hazardCheckPro;
+						infoData.checkCategory = data.data.records[0].checkCategory;
+						uni.navigateTo({
+							url: '/pages_safetyCheck/views/inspectManage/conductInspections?infoData=' +
+								encodeURIComponent(
+									JSON
+									.stringify(infoData))
+						});
+					} else {
+						self.securityAppCheckSetOptionList(item,2);
+						
+					}
+				}else if (data.code == 200 && checkStatus==2) {//查询检查中数据
+					if (data.data.records[0]) {
+						let infoData = {};
+						infoData.pageType = 0;
+						infoData.itemsStatus = 0;
+						infoData.subName = upData.subName;
+						infoData.checkPlanSetVoList = self.checkPlanSetVoList;
+						infoData.planId = self.planId;
+						infoData.planTitle = self.planTitle;
+						infoData.checkTypeName = self.checkTypeName;
+						infoData.crossCheck = self.crossCheck;
+						infoData.roomNum = upData.roomNum;
+						infoData.subId = data.data.records[0].subId;
+						infoData.manageId = data.data.records[0].manageId;
+						infoData.setOptionId = data.data.records[0].setOptionId;
+						infoData.hazardCheckPro = data.data.records[0].hazardCheckPro;
+						infoData.checkCategory = data.data.records[0].checkCategory;
+						uni.navigateTo({
+							url: '/pages_safetyCheck/views/inspectManage/conductInspections?infoData=' +
+								encodeURIComponent(
+									JSON
+									.stringify(infoData))
+						});
+					} else {
+						self.dialogStatus = 0;
+						this.$parent.goPage('securityCheck',false);
+						uni.showToast({
+							title: '该实验室暂无检查工作!',
+							icon: "none",
+							mask: true,
+							duration: 2000
+						});
+						return;
+					}
+				}
+			},
+
+
+		},
+		onHide() {
+		
+		},
+		beforeDestroy() {
+			
+		},
+	}
+</script>
+
+<style lang="stylus" scoped>
+	.shade {
+		height: 100%;
+		width: 100%;
+		position: fixed;
+		display: flex;
+		flex-direction: column;
+		z-index: 200;
+		background: rgba(0, 0, 0, 0.2);
+		top: 0;
+	
+		.null-box {
+			flex: 1;
+		}
+	
+		.shade_n {
+			position: absolute;
+			bottom: 0;
+			left: 0;
+			width: 750rpx;
+			height: 466rpx;
+			background: #FFFFFF;
+			border-radius: 20rpx 20rpx 0rpx 0rpx;
+			overflow-y: auto;
+	
+			.title {
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				padding: 0 50rpx 0 284rpx;
+				box-sizing: border-box;
+				border-bottom: 1rpx solid #E0E0E0;
+	
+				>view {
+					font-size: 30rpx;
+					color: #3D3D3D;
+					line-height: 90rpx;
+					text-align: left;
+				}
+	
+				>img {
+					width: 24rpx;
+					height: 12rpx;
+				}
+			}
+	
+			.batch {
+				padding: 0 30rpx;
+				box-sizing: border-box;
+	
+				.batch-li {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					border-bottom: 1rpx solid #E0E0E0;
+					padding: 20rpx 0 16rpx 0rpx;
+					box-sizing: border-box;
+	
+					.batch-li-l {
+						>text:nth-of-type(1) {
+							display: block;
+							font-size: 30rpx;
+							color: #333333;
+							line-height: 42rpx;
+							text-align: left;
+						}
+	
+						>text:nth-of-type(2) {
+							display: block;
+							font-size: 28rpx;
+							color: #666666;
+							line-height: 39rpx;
+							text-align: left;
+							margin-top: 6rpx;
+						}
+					}
+	
+					.batch-li-r {
+						font-size: 28rpx;
+						color: #666666;
+						line-height: 39rpx;
+						text-align: left;
+						display: flex;
+						justify-content: flex-start;
+						align-items: center;
+	
+						>img {
+							width: 24rpx;
+							height: 24rpx;
+							margin-left: 9rpx;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 1 - 1
pages_manage/views/laboratory/voiceBroadcast.vue

@@ -206,7 +206,7 @@
 				  let res = JSON.parse(uploadFileRes.data);
 				  if (res.code == 200) {
 					console.log("上传成功", res)
-					let url = 'http://'+config.base_url.split('://')[1]+ '/' +res.data.url
+					let url = 'http://'+uni.getStorageSync('mqttIntranetUrl').split(':')[0]+'/'+res.data.url
 					self.iotAppSpeakerPlayVoice(url);
 				  } else {
 					uni.showToast({

+ 10 - 1
pages_safetyCheck/api/index.js

@@ -72,6 +72,15 @@ export const securityAppCheckPlanTitleList = (data) => {
        data: { ...data }
     })
 };
+//安全检查-校级检查/学院自查列表
+export const securityAppCheckPlanAppTitleList = (data) => {
+    return apiResquest({
+        url: '/security/appCheckPlan/appTitleList',
+       method: 'POST',
+       data: { ...data }
+    })
+};
+
 //获取分级列表
 export const laboratoryLevelConfigGetWebLevelTitleList = (data) => {
 	return apiResquest({
@@ -197,7 +206,7 @@ export const securityAppCheckPlanCheckInfo = (data) => {
 //开始检查-保存草稿-详情
 export const securityDraftFindBySetOptionId = (data) => {
     return apiResquest({
-        url: '/security/draft/findBySetOptionId',
+        url: '/security/appDraft/findBySetOptionId',
        method: 'GET',
        data: { ...data }
     })

+ 167 - 68
pages_safetyCheck/component/checkItemModule.vue

@@ -62,6 +62,7 @@
 	},
  -->
 <template>
+	<scroll-view scroll-y style="overflow-y: scroll;">
 	<view class="checkItemModule">
 		<!-- 标签选项卡 -->
 		<view class="checkItemModule-title-box">
@@ -84,16 +85,39 @@
 						<uni-icons color="#A2A2A2" type="search" size="20"></uni-icons>
 					</view>
 					<input type="text" v-model="searchValue" placeholder="搜索检查项" name="search" @confirm='getSearchValue'
-						confirm-type='search' maxlength="50" placeholder-style="color: #666;font-size:24rpx;">
-					<view class="left-icons" @click="delSearchValue()">
+						confirm-type='search' @input="theBlur" maxlength="50"
+						placeholder-style="color: #666;font-size:24rpx;">
+					<view v-if="searchValue" class="left-icons" @click="delSearchValue()">
 						<uni-icons color="#0183FA" type="clear" size="20"></uni-icons>
 					</view>
 				</view>
 				<view class="out-button" @click="outButton()">取消</view>
 			</view>
 			<view class="input-for-max-box">
-				<view class="for-box" @click="checkItemButton(item)" v-for="(item,index) in dataList" :key="index">
-					{{item.hazardCheckCode}}{{item.hazardCheckName}}
+				<view class="for-box" v-for="(item,index) in dataList" :key="index" v-if="optionData.infoType==0">
+					<view class="for-box-n" v-html="brightenKeyword(item.hazardCheckCode1,item.hazardCheckName1,searchValue)">
+						{{item.hazardCheckCode1}}{{item.hazardCheckName1}}
+					</view>
+					<view class="for-box-n" v-html="brightenKeyword(item.hazardCheckCode2,item.hazardCheckName2,searchValue)">
+						{{item.hazardCheckCode2}}{{item.hazardCheckName2}}
+					</view>
+					<view v-for="(item2,index2) in item.data">
+						<view  class="for-box-n" v-html="brightenKeyword(item2.hazardCheckCode,item2.hazardCheckName,searchValue)">
+							{{item2.hazardCheckCode}}{{item2.hazardCheckName}}
+						</view>
+						<view class="for-box-n" @click="checkItemButton(item2,item3)"
+							v-for="(item3,index3) in item2.hazardCheckPointList" v-html="brightenKeyword('',item3,searchValue)">
+							{{item3}}
+						</view>
+					</view>
+					
+				</view>
+				
+				<view class="for-box" @click="checkItemButton(item,'')" v-for="(item,index) in dataList" :key="index"
+					v-if="optionData.infoType==1 || optionData.infoType==2">
+					<view class="for-box-n">
+						{{item.hazardCheckCode}}{{item.hazardCheckName}}
+					</view>
 				</view>
 			</view>
 		</view>
@@ -105,12 +129,24 @@
 				<view v-if="levelListThree" @click="cascadeButton(3)">三级检查</view>
 			</view>
 			<view class="check-for-max-box">
-				<view v-for="(item,index) in checkList" :key="index" @click="cascadeItemButton(item)">
-				{{item.hazardCheckCode?item.hazardCheckCode:item.code}} {{item.hazardCheckName?item.hazardCheckName:item.name}}
+				<view v-if="!levelListThree" v-for="(item,index) in checkList" :key="index" @click="cascadeItemButton(item,item2)">
+					<view>{{item.hazardCheckCode?item.hazardCheckCode:item.code}}
+						{{item.hazardCheckName?item.hazardCheckName:item.name}}
+					</view>
 				</view>
+				<view v-for="(item,index) in checkList" :key="index" v-if="levelListThree">
+					<view>{{item.hazardCheckCode?item.hazardCheckCode:item.code}}
+						{{item.hazardCheckName?item.hazardCheckName:item.name}}
+					</view>
+					<view  v-for="(item2,index2) in item.hazardCheckPointList" @click="checkItemButton(item,item2)">
+						{{item2}}
+					</view>
+				</view>
+
 			</view>
 		</view>
 	</view>
+	</scroll-view>
 </template>
 
 <script>
@@ -136,11 +172,11 @@
 				//输入搜索返回列表
 				dataList: [],
 				//一级-级联数据
-				levelListOne:null,
+				levelListOne: null,
 				//二级-级联数据
-				levelListTwo:null,
+				levelListTwo: null,
 				//三级-级联数据
-				levelListThree:null,
+				levelListThree: null,
 				//级联列表
 				checkList: [],
 			}
@@ -150,14 +186,17 @@
 		},
 		mounted() {
 			this.$set(this, 'optionData', JSON.parse(JSON.stringify(this.propsData)));
-			console.log('optionData',this.optionData)
+			console.log('检查项列表',this.optionData)
 			this.$nextTick(() => {
 				this.securityCheckOptionSelAllList();
 			})
 		},
 		methods: {
+			theBlur(e) {
+				this.searchValue = e.target.value
+			},
 			//输入框查询
-			getSearchValue(){
+			getSearchValue() {
 				if (this.optionData.infoType == 0) {
 					//检查
 					this.securityAppCheckSetOptionList();
@@ -188,31 +227,47 @@
 				}
 			},
 			//级联等级点击
-			cascadeButton(type){
-				if(type == 1){
-					this.$set(this,'levelListTwo',null);
-					this.$set(this,'levelListThree',null);
-					this.$set(this,'checkList',this.levelListOne.children);
-				}else if(type == 2){
-					this.$set(this,'levelListThree',null);
-					this.$set(this,'checkList',this.levelListTwo.children);
+			cascadeButton(type) {
+				if (type == 1) {
+					this.$set(this, 'levelListTwo', null);
+					this.$set(this, 'levelListThree', null);
+					this.$set(this, 'checkList', this.levelListOne.children);
+				} else if (type == 2) {
+					this.$set(this, 'levelListThree', null);
+					this.$set(this, 'checkList', this.levelListTwo.children);
 				}
 			},
 			//级联检查项选中
-			cascadeItemButton(item){
-				if(item.level == 1){
-					this.$set(this,'levelListTwo',item);
-					this.$set(this,'checkList',item.children);
-				}else if(item.level == 2){
-					this.$set(this,'levelListThree',item);
-					this.$set(this,'checkList',item.children);
-				}else if(item.level == 3){
-					this.checkItemButton(item);
+			cascadeItemButton(item) {
+				if (item.level == 1) {
+					this.$set(this, 'levelListTwo', item);
+					this.$set(this, 'checkList', item.children);
+				} else if (item.level == 2) {
+					this.$set(this, 'levelListThree', item);
+					if (item.children[0]) {
+						item.children.forEach(function(item) {
+							if (item.hazardCheckPoint) {
+								item.hazardCheckPointList = item.hazardCheckPoint.split('#')
+							}
+						})
+					}
+					this.$set(this, 'checkList', item.children);
+				} else if (item.level == 3) {
+					this.checkItemButton(item, item2);
+
 				}
 			},
 			//选中检查项
-			checkItemButton(item) {
-				this.$parent.checkItemModuleButton('submit',item);
+			checkItemButton(item, item2) {
+				this.$parent.checkItemModuleButton('submit', item, item2);
+			},
+			//高亮
+			brightenKeyword(code,val, editKeyword) {
+				const Reg = new RegExp(editKeyword);
+				if (val) {
+					const res = code+ val.replace(Reg, `<span style="color: #0183FA;">${editKeyword }</span>`);
+					return res;
+				}
 			},
 			//基础检查项检查
 			async securityCheckOptionSelAllList() {
@@ -223,11 +278,11 @@
 				if (data.code == 200) {
 					let maxList = this.getCascaderData(JSON.parse(JSON.stringify(data.data)), 2)
 					this.$nextTick(() => {
-						if(this.optionData.infoType == 0){
+						if (this.optionData.infoType == 0) {
 							this.securityAppCheckSetOptionList(maxList);
-						}else if(this.optionData.infoType == 1){
+						} else if (this.optionData.infoType == 1) {
 							this.securityAppCheckSetOptionGetReviewList(maxList);
-						}else if(this.optionData.infoType == 2){
+						} else if (this.optionData.infoType == 2) {
 							this.securityAppCheckDangerGetCheckDangerSubId(maxList);
 						}
 					})
@@ -241,18 +296,49 @@
 				} = await securityAppCheckSetOptionList({
 					manageId: this.optionData.manageId,
 					checkStatus: this.optionData.checkType,
-					searchValue: this.searchValue	
+					searchValue: this.searchValue
 				});
 				if (data.code == 200) {
 					//级联数据
 					if (maxList) {
 						let minList = JSON.parse(JSON.stringify(data.data))
-						this.cascadeData(maxList,minList);
+						this.cascadeData(maxList, minList);
+					}
+					if(this.optionData.editStatus){
+						data.data.unshift(this.optionData.editItem);
+					}
+					if (data.data[0]) {
+						data.data.forEach(function(item) {
+							if (item.hazardCheckPoint) {
+								item.hazardCheckPointList = item.hazardCheckPoint.split('#')
+							}
+						})
 					}
+					
 					//查询数据
-					this.$set(this,'dataList',JSON.parse(JSON.stringify(data.data)));
+					let map = new Map();
+					for (let item of data.data) {
+					    let hazardCheckCode2 = item.hazardCheckCode2;
+					    if (!map.has(hazardCheckCode2)) {
+					        map.set(hazardCheckCode2, {
+					            hazardCheckCode2: hazardCheckCode2,
+					            hazardCheckName2: item.hazardCheckName2,
+					            hazardCheckCode1: item.hazardCheckCode1,
+					            hazardCheckName1: item.hazardCheckName1,
+					            data: [item]
+					        });
+					    } else {
+					        map.get(hazardCheckCode2).data.push(item);
+					    }
+					}
+					let finalResult = Array.from(map.values());
+					this.$set(this, 'dataList', finalResult);
+					
+					
 				}
 			},
+			
+			
 			/********************** 复查相关查询 **********************/
 			async securityAppCheckSetOptionGetReviewList(maxList) {
 				let self = this;
@@ -269,10 +355,10 @@
 					//级联数据
 					if (maxList) {
 						let minList = JSON.parse(JSON.stringify(data.data.records))
-						this.cascadeData(maxList,minList);
+						this.cascadeData(maxList, minList);
 					}
 					//查询数据
-					this.$set(this,'dataList',JSON.parse(JSON.stringify(data.data.records)));
+					this.$set(this, 'dataList', JSON.parse(JSON.stringify(data.data.records)));
 				}
 			},
 			/********************** 整改相关查询 **********************/
@@ -290,15 +376,16 @@
 				if (data.code == 200) {
 					//级联数据
 					if (maxList) {
+						
 						let minList = JSON.parse(JSON.stringify(data.data.records))
-						this.cascadeData(maxList,minList);
+						this.cascadeData(maxList, minList);
 					}
 					//查询数据
-					this.$set(this,'dataList',JSON.parse(JSON.stringify(data.data.records)));
+					this.$set(this, 'dataList', JSON.parse(JSON.stringify(data.data.records)));
 				}
 			},
 			/********************** 处理级联数据 **********************/
-			cascadeData(maxList,minList) {
+			cascadeData(maxList, minList) {
 				for (let i = 0; i < maxList.length; i++) {
 					for (let o = 0; o < maxList[i].children.length; o++) {
 						for (let x = 0; x < minList.length; x++) {
@@ -313,11 +400,16 @@
 						}
 					}
 				}
-				let list = this.getCascaderData(JSON.parse(JSON.stringify(maxList)),3)
-				this.$nextTick(()=>{
-					this.$set(this,'levelListOne',JSON.parse(JSON.stringify({level:0,children:list})));
-					this.$set(this,'checkList',JSON.parse(JSON.stringify(list)));
+				let list = this.getCascaderData(JSON.parse(JSON.stringify(maxList)), 3)
+				this.$nextTick(() => {
+					this.$set(this, 'levelListOne', JSON.parse(JSON.stringify({
+						level: 0,
+						children: list
+					})));
+					this.$set(this, 'checkList', JSON.parse(JSON.stringify(list)));
 				})
+				
+				
 			},
 			/********************** 检查项格式处理 **********************/
 			getCascaderData(list, type) {
@@ -377,8 +469,8 @@
 <style lang="stylus" scoped>
 	.checkItemModule {
 		position: fixed;
-		top:0;
-		left:0;
+		top: 0;
+		left: 0;
 		height: 100%;
 		width: 100%;
 		flex: 1;
@@ -391,7 +483,7 @@
 			display: flex;
 			height: 100rpx;
 			background-color: #FFFFFF;
-			border-bottom:1rpx solid #dedede;
+			border-bottom: 1rpx solid #dedede;
 
 			.checkItemModule-title-p {
 				width: 140rpx;
@@ -402,7 +494,7 @@
 					text-align: center;
 					font-size: 29rpx;
 					line-height: 30rpx;
-					margin:35rpx 0 20rpx 0;
+					margin: 35rpx 0 20rpx 0;
 				}
 
 				>view:nth-child(2) {
@@ -477,12 +569,14 @@
 				background-color: #fff;
 
 				.for-box {
-					margin: 0 21rpx;
-					font-size: 29rpx;
-					line-height: 40rpx;
-					padding: 20rpx 0;
-					background-color: #fff;
-					border-bottom: 1rpx solid #E0E0E0;
+					.for-box-n {
+						margin: 0 21rpx;
+						font-size: 32rpx;
+						line-height: 40rpx;
+						padding: 20rpx 0;
+						background-color: #fff;
+						border-bottom: 1rpx solid #E0E0E0;
+					}
 				}
 			}
 		}
@@ -498,15 +592,17 @@
 				display: flex;
 				background-color: #fff;
 				border-bottom: 1rpx solid #E0E0E0;
-				>view{
-					width:200rpx;
-					line-height:70rpx;
+
+				>view {
+					width: 200rpx;
+					line-height: 70rpx;
 					text-align: center;
-					color:#333;
-					font-size:29rpx;
+					color: #333;
+					font-size: 29rpx;
 				}
-				.checkView{
-					color:#0183FA;
+
+				.checkView {
+					color: #0183FA;
 				}
 			}
 
@@ -516,13 +612,16 @@
 				flex-direction: column;
 				overflow-y: scroll;
 				background-color: #fff;
-				>view{
-					font-size:25rpx;
-					line-height:70rpx;
-					margin:0 21rpx;
-					border-bottom:1px solid #dedede;
+
+				>view {
+					>view {
+						font-size: 32rpx;
+						line-height: 70rpx;
+						margin: 0 21rpx;
+						border-bottom: 1px solid #dedede;
+					}
 				}
 			}
 		}
 	}
-</style>
+</style>

binární
pages_safetyCheck/images/icon_aqjc_anquanjiancha.png


binární
pages_safetyCheck/images/icon_aqjc_baocun.png


binární
pages_safetyCheck/images/icon_aqjc_bianji.png


binární
pages_safetyCheck/images/icon_aqjc_fucha.png


binární
pages_safetyCheck/images/icon_aqjc_jiancha.png


binární
pages_safetyCheck/images/icon_aqjc_luyin.png


binární
pages_safetyCheck/images/icon_aqjc_noYinhuan.png


binární
pages_safetyCheck/images/icon_aqjc_paizhao.png


binární
pages_safetyCheck/images/icon_aqjc_saoma.png


binární
pages_safetyCheck/images/icon_aqjc_shiyanshi.png


binární
pages_safetyCheck/images/icon_aqjc_suishoupai.png


binární
pages_safetyCheck/images/icon_aqjc_tijiao.png


binární
pages_safetyCheck/images/icon_aqjc_yinhuan.png


binární
pages_safetyCheck/images/icon_aqjc_zhenggai.png


binární
pages_safetyCheck/images/img_banner@1x.png


+ 251 - 315
pages_safetyCheck/views/inspectManage/conductInspections.vue

@@ -2,40 +2,20 @@
 <template>
 	<view class="inspectAdd">
 		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
-			<view class="tip">{{optionData.checkPlanSetVoList.checkName}}</view>
-			<view class="items">
-				<view class="items-t" @click="checkItemModuleButton('open')">
-					<view class="items-t-r">{{newData.hazardCheckCode}} {{newData.hazardCheckName}}</view>
-					<img class="items-t-img" src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
-				</view>
-				<view class="items-b">< {{newData.hazardCheckCode2}} {{newData.hazardCheckName2}} <</view>
-			</view>
-			<view class="items-number">此检查项在当前实验室累计出现<text>{{hazardCheckNum}}</text>次隐患</view>
 			<view class="list">
-				<view class="list-li">
-					<view>检查要点</view>
-					<view>
-						<img src="@/pages_safetyCheck/images/icon_06.png">
-					</view>
-				</view>
-				<view class="hidden-content">{{newData.hazardCheckPoint}}
-				</view>
-				<view class="radio_group">
-					<view class="radio" v-for="(item,index) in radioList" :key="index" @click="radioClick(item)">
-						<img v-if="!item.checked" src="@/pages_safetyCheck/images/icon_aqjc_5.png">
-						<img v-if="item.checked" src="@/pages_safetyCheck/images/icon_aqjc_6.png">
-						<text>{{item.name}}</text>
-					</view>
+				<view class="list-li srearch">
+					<view class="srearch-l">{{newData.subName?newData.subName:'实验室名称'}}</view>
+					<!-- <img class="srearch-r" src="@/pages_safetyCheck/images/icon_wd_gd@1x.png"> -->
 				</view>
-				<view class="list-li" v-if="!form.checkFlag">
-					<view>检查隐患</view>
+				<view class="list-li" style="margin-bottom: 20rpx;border:none;">
 					<view>
-						<img src="@/pages_safetyCheck/images/icon_06.png">
+						{{newData.roomNum?newData.roomNum:''}}房间&{{newData.buildName?newData.buildName:'楼栋'}}&{{newData.deptName?newData.deptName:'学院单位'}}
 					</view>
 				</view>
-				<textarea v-if="!form.checkFlag" class="describe" type="text" v-model="form.hazardDescribe"
-					maxlength="200" placeholder="请填写隐患描述" placeholder-style="font-size:24rpx;color:#999;"></textarea>
-				<view v-if="!form.checkFlag" class="check-for-img-max-box">
+				<view class="list-li">
+					<view>现场照片</view>
+				</view>
+				<view v-if="form.photoList[0]" class="check-for-img-max-box">
 					<view class="left-title-p"></view>
 					<view class="right-img-box">
 						<view class="img-box" v-for="(imgUrl,imgIndex) in form.photoList" :key="imgIndex">
@@ -43,14 +23,36 @@
 							<img class="position-img" src="@/pages_safetyCheck/images/icon_ssp_closure.png"
 								@click="delImg(imgIndex)">
 						</view>
-						<img class="add-button" src="@/pages_safetyCheck/images/img_ssp_pz@1x.png"
-							@click="selectImage()" v-if="form.photoList.length<6">
+						<!-- <img class="add-button" src="@/pages_safetyCheck/images/img_ssp_pz@1x.png"
+							@click="selectImage()" v-if="form.photoList.length<6"> -->
+					</view>
+				</view>
+				<view class="list-li" @click="checkItemModuleButton('open')" style="border-bottom: none;">
+					<view> {{newData.hazardCheckCode?newData.hazardCheckCode:''}}
+						{{newData.hazardCheckName?newData.hazardCheckName:'检查项'}}
+					</view>
+					<view style="color: #0183FA;">
+						<img src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
 					</view>
 				</view>
+				<view class="hazardCheckNum" @click="hiddenDangerClick()">
+					<img class="hazardCheckNum-l" src="@/pages_safetyCheck/images/icon_aqjc_yinhuan.png">
+					<view class="hazardCheckNum-r">{{'已连续出现'+hazardCheckNum+'次隐患'}} </view>
+				</view>
+				<view class="list-li" v-if="!form.checkFlag">
+					<view>隐患描述</view>
+					<view></view>
+				</view>
+				<view class="describe">
+					<textarea v-if="!form.checkFlag && !checkItemModuleType" cursor-spacing="40" class="describe-n" type="text"
+						v-model="form.hazardDescribe" maxlength="200" placeholder="请填写隐患描述"
+						placeholder-style="font-size:24rpx;color:#999;"></textarea>
+				</view>
+
 			</view>
 			<view class="voice">
 				<view class="voice_t">
-					<view class="voice_t_t" v-if="!form.voiceList[0]">语音备注:(选填)</view>
+					<view class="voice_t_t" v-if="!form.voiceList[0]"><text>语音备注:</text><text>按住话筒录音</text></view>
 					<view class="voice_t_b" v-if="form.voiceList[0]">语音备注:({{form.voiceList.length}})</view>
 				</view>
 				<view class="voice_b" v-if="form.voiceList[0]" v-for="(voiceItem,voiceIndex) in form.voiceList"
@@ -62,31 +64,38 @@
 					<img class="voice_b_r" src="@/pages_safetyCheck/images/icon_yybz_sc.png"
 						@tap="voiceDele('',voiceIndex)" />
 				</view>
-				<view class="voice-btn">
+				<!-- <view class="voice-btn">
 					<img class="voice_t_r" src="@/pages_safetyCheck/images/icon_sskz_azsh.png"
 						@longpress.stop="recordButton(item,$event)" @touchmove.stop="cancelButton"
 						@touchend.stop="sendButton(item,$event)" />
 					<text>按住说话</text>
-				</view>
+				</view> -->
 			</view>
 		</scroll-view>
 		<checkItemModule :propsData="propsData" v-if="checkItemModuleType"></checkItemModule>
-		<view class="sub-btn">
+		<!-- <view class="sub-btn">
 			<view @click="submitForm(1)">保存草稿</view>
 			<view @click="submitForm(2)">提交</view>
+		</view> -->
+		<view class="sub-btn" v-if="!checkItemModuleType">
+			<img @longpress.stop="recordButton(item,$event)" @touchmove.stop="cancelButton"
+				@touchend.stop="sendButton(item,$event)" src="@/pages_safetyCheck/images/icon_aqjc_luyin.png" />
+			<img @click="selectImage()" src="@/pages_safetyCheck/images/icon_aqjc_paizhao.png" />
+			<img @click="submitForm(2)" src="@/pages_safetyCheck/images/icon_aqjc_tijiao.png" />
 		</view>
+		<view v-if="!checkItemModuleType" class="inspectRecord"  @click="inspectRecordClick()">检查记录</view>
 	</view>
 
 </template>
 
 <script>
+	const myaudio = uni.createInnerAudioContext();
 	import {
 		config
 	} from '@/api/request/config.js'
 	import {
 		securityAppCheckPlanCheckInfo,
 		securityAppCheckSetOptionCheckCommit,
-		securityDraftFindBySetOptionId,
 		securityAppCheckPhotoGetCheckNumBySub,
 	} from '@/pages_safetyCheck/api/index.js'
 	import {
@@ -118,32 +127,25 @@
 					},
 				],
 				pageType: '',
-				itemsStatus: '',
-				setOptionId: '', //检查项id
-				manageId: '', //检查管理id
-				subId: '',
-				hazardCheckPro: '',
-				hazardCheckNum: 0,
 				sendLock: true, //发送锁,当为true时上锁,false时解锁发送
 				recorderManager: wx.getRecorderManager(),
 				optionData: null,
 				//检查项组件数据
 				checkItemModuleType: false,
 				propsData: {},
+				hazardCheckNum:0,
 			}
 		},
 		onLoad(option) {
 			let optionData = JSON.parse(decodeURIComponent(option.infoData));
+			console.log('开展检查',optionData)
 			uni.setNavigationBarTitle({
-				title: optionData.subName + '(' + (optionData.pageType == 0 ? optionData.roomNum : optionData
-					.subRoom) + ')'
+				title: optionData.subName + '(' + (optionData.pageType == 0 ? (optionData.roomNum ? optionData
+					.roomNum : '-') : (optionData
+					.subRoom ? optionData
+					.subRoom : '-')) + ')'
 			})
 			this.$set(this, 'pageType', optionData.pageType);
-			this.$set(this, 'itemsStatus', optionData.itemsStatus);
-			this.$set(this, 'setOptionId', optionData.setOptionId);
-			this.$set(this, 'manageId', optionData.manageId);
-			this.$set(this, 'subId', optionData.subId);
-			this.$set(this, 'hazardCheckPro', optionData.hazardCheckPro);
 			this.$set(this, 'optionData', optionData);
 
 		},
@@ -152,76 +154,83 @@
 		},
 		mounted() {
 			if (this.pageType == 0) {
-				//检查
-				if (this.itemsStatus == 0 || this.itemsStatus == 1) {
-					//开始检查-提交的详情
-					this.securityAppCheckPlanCheckInfo();
-				} else if (this.itemsStatus == 2) {
-					//保存草稿详情
-					this.securityDraftFindBySetOptionId();
-
-
-				}
+				this.securityAppCheckPlanCheckInfo();
+				this.securityAppCheckPhotoGetCheckNumBySub();
 			}
-			this.securityAppCheckPhotoGetCheckNumBySub();
 		},
 		methods: {
+			//折叠展开
+			inspectDot() {
+				
+				this.newData.inspectDot = !this.newData.inspectDot
+			},
+			//检查记录
+			inspectRecordClick(){
+				let infoData = this.optionData;
+				infoData.curTabTow=1;//已检查
+				uni.navigateTo({
+					url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' +
+						encodeURIComponent(JSON
+							.stringify(infoData))
+				});
+			},
 			//获取提交详情
 			async securityAppCheckPlanCheckInfo() {
 				let obj = {
-					setOptionId: this.setOptionId,
-					manageId: this.manageId,
+					setOptionId: this.optionData.setOptionId,
+					manageId: this.optionData.manageId,
 				}
 				const {
 					data
 				} = await securityAppCheckPlanCheckInfo(obj);
 				if (data.code == 200) {
+					data.data.inspectDot = true;
 					this.$set(this, 'newData', data.data);
 					//编辑的时候
 					this.$set(this.form, 'checkFlag', data.data.checkFlag ? data.data.checkFlag : false);
-					this.$set(this.form, 'hazardDescribe', data.data.hazardDescribe ? data.data.hazardDescribe : '');
+					if(data.data.hazardDescribe){
+						this.$set(this.form, 'hazardDescribe', data.data.hazardDescribe);
+					}else{
+						let list=[];
+						list=data.data.hazardCheckPoint.split('#');
+						this.$set(this.form, 'hazardDescribe', list[0]);
+					}
 					this.$set(this.form, 'photoList', data.data.photoList ? data.data.photoList : []);
 					this.$set(this.form, 'voiceList', data.data.voiceList ? data.data.voiceList : []);
 
 				}
 			},
-			//获取草稿详情
-			async securityDraftFindBySetOptionId() {
-				let obj = {
-					setOptionId: this.setOptionId,
-				}
-				const {
-					data
-				} = await securityDraftFindBySetOptionId(obj);
-				if (data.code == 200) {
-					//编辑的时候
-					this.$set(this, 'newData', data.data);
-					this.$set(this.newData, 'checkPlanSetVoList', this.optionData.checkPlanSetVoList);
-					this.$set(this.form, 'checkFlag', data.data.checkFlag ? data.data.checkFlag : false);
-					this.$set(this.form, 'hazardDescribe', data.data.hazardDescribe ? data.data.hazardDescribe : '');
-					this.$set(this.form, 'photoList', data.data.photoList ? data.data.photoList : []);
-					this.$set(this.form, 'voiceList', data.data.voiceList ? data.data.voiceList : []);
-				}
-			},
-			//获取检查项在当前实验室出现的次数
-			async securityAppCheckPhotoGetCheckNumBySub() {
-				let obj = {
-					subId: this.subId,
-					hazardCheckPro: this.hazardCheckPro,
-				}
-				const {
-					data
-				} = await securityAppCheckPhotoGetCheckNumBySub(obj);
-				if (data.code == 200) {
-					this.$set(this, 'hazardCheckNum', data.data);
-
+			hiddenDangerClick(row) {
+				if(!this.hiddenDangerRecordStatus){
+					let infoData = this.optionData;
+					infoData.subName=this.newData.subName;
+					infoData.roomNum=this.newData.roomNum;
+					infoData.hiddenDangerRecordStatus = true;//判断是否跳转隐患列表
+					uni.navigateTo({
+						url: '/pages_safetyCheck/views/inspectManage/hiddenDangerRecord?infoData=' +
+							encodeURIComponent(JSON.stringify(infoData))
+					});
 				}
 			},
-			checkItemModuleButton(type, item) {
+			checkItemModuleButton(type, item,keyPoint) {
 				if (type == 'open') {
 					let obj = {
 						infoType: this.pageType,
 						checkType: 0,
+						editStatus:this.optionData.editStatus,
+						editItem:{
+							hazardCheckName:this.newData.hazardCheckName,
+							hazardCheckName1:this.newData.hazardCheckName1,
+							hazardCheckName2:this.newData.hazardCheckName2,
+							hazardCheckCode:this.newData.hazardCheckCode,
+							hazardCheckCode1:this.newData.hazardCheckCode1,
+							hazardCheckCode2:this.newData.hazardCheckCode2,
+							hazardCheckPoint:this.newData.hazardCheckPoint,
+							hazardCheckPro:this.newData.hazardCheckPro,
+							hazardCheckPro1:this.newData.hazardCheckPro1,
+							hazardCheckPro2:this.newData.hazardCheckPro2,
+							setOptionId:this.newData.setOptionId,
+						}
 					}
 					if (this.pageType == 0) {
 						//检查
@@ -239,9 +248,19 @@
 					this.$set(this.newData, 'hazardCheckCode2', item.hazardCheckCode2);
 					this.$set(this.newData, 'hazardCheckName2', item.hazardCheckName2);
 					this.$set(this.newData, 'hazardCheckPoint', item.hazardCheckPoint);
-					this.$set(this, 'hazardCheckPro', item.hazardCheckPro);
-					this.securityAppCheckPhotoGetCheckNumBySub();
+					this.$set(this.form, 'hazardDescribe', keyPoint);
+					this.$set(this.optionData, 'setOptionId', item.setOptionId);
+					this.$set(this.optionData, 'hazardCheckPro', item.hazardCheckPro);
 					this.$set(this, 'checkItemModuleType', false);
+					this.securityAppCheckPhotoGetCheckNumBySub();
+					//编辑的时候
+					if(this.optionData.editStatus){
+						if(this.optionData.setOptionId!=this.newData.setOptionId){
+							this.$set(this.form, 'photoList', []);
+							this.$set(this.form, 'voiceList', []);
+						}
+						
+					}
 				}
 			},
 			//提交
@@ -268,43 +287,29 @@
 				}
 				let obj = {
 					checkFlag: this.form.checkFlag,
-					checkStatus: status == 1 ? 2 : 1,
+					checkStatus: 1,
 					hazardDescribe: this.form.hazardDescribe,
-					setOptionId: this.setOptionId,
+					setOptionId: this.optionData.setOptionId,
 					photoList: this.form.photoList,
 					voiceList: this.form.voiceList,
 				}
+				if(this.optionData.editStatus){
+					if(this.optionData.setOptionId!=this.newData.setOptionId){
+						obj.delSetOptionId=this.newData.setOptionId;
+					}
+				}
 				const {
 					data
 				} = await securityAppCheckSetOptionCheckCommit(obj);
 				if (data.code == 200) {
-					if (status == 1) {
-						uni.showToast({
-							title: '保存成功!',
-							icon: "none",
-							mask: true,
-							duration: 2000
-						});
-					} else if (status == 2) {
-						uni.showToast({
-							title: '提交成功!',
-							icon: "none",
-							mask: true,
-							duration: 2000
-						});
-					}
-					let infoData = {
-						setOptionId: this.setOptionId,
-						manageId: this.manageId,
-						subId: this.subId,
-						hazardCheckPro: this.hazardCheckPro,
-						pageType: this.pageType,
-						itemsStatus: status == 1 ? 2 : 0,
-						checkPlanSetVoList: this.optionData.checkPlanSetVoList,
-						subName: this.optionData.subName,
-						roomNum: this.optionData.roomNum,
-						subRoom: this.optionData.subRoom,
-					};
+					uni.showToast({
+						title: '提交成功!',
+						icon: "none",
+						mask: true,
+						duration: 2000
+					});
+					
+					let infoData = this.optionData;
 					uni.redirectTo({
 						url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItemsDetail?infoData=' +
 							encodeURIComponent(JSON
@@ -312,6 +317,20 @@
 					});
 				}
 			},
+			//获取检查项在当前实验室出现的次数
+			async securityAppCheckPhotoGetCheckNumBySub() {
+				let obj = {
+					subId: this.optionData.subId,
+					hazardCheckPro: this.optionData.hazardCheckPro,
+				}
+				const {
+					data
+				} = await securityAppCheckPhotoGetCheckNumBySub(obj);
+				if (data.code == 200) {
+					this.$set(this, 'hazardCheckNum', data.data);
+			
+				}
+			},
 			//滚动事件
 			scrollGet() {},
 			//单选按钮
@@ -335,6 +354,7 @@
 			/******图片上传******/
 			selectImage() {
 				let self = this;
+				let photoMaxNun = 0;
 				if (this.form.photoList.length > 5) {
 					uni.showToast({
 						title: '最多上传6张图片',
@@ -344,8 +364,9 @@
 					});
 					return
 				}
+				photoMaxNun = 6 - this.form.photoList.length;
 				wx.chooseImage({
-					count: 6,
+					count: photoMaxNun,
 					sizeType: ["original", "compressed"],
 					sourceType: ["album", "camera"],
 					success: function(res) {
@@ -560,21 +581,8 @@
 		height: 100%;
 		display flex;
 		box-sizing: border-box;
-		padding-bottom: 160rpx;
+		padding-bottom: 230rpx;
 		box-sizing: border-box;
-
-		#bgColor-A {
-			color: #FFD400;
-		}
-
-		#bgColor-B {
-			color: #FF8C00;
-		}
-
-		#bgColor-C {
-			color: #E11608;
-		}
-
 		.tip {
 			width: 750rpx;
 			height: 80rpx;
@@ -585,140 +593,44 @@
 			line-height: 80rpx;
 			text-align: center;
 		}
-
-
-		.items {
-			width: 690rpx;
-			min-height: 165rpx;
-			background: #FFFFFF;
+		
+		.list {
+			width: 750rpx;
+			margin: 20rpx 0rpx 0;
 			border-radius: 20rpx 20rpx 20rpx 20rpx;
-			margin: 20rpx 0 0 30rpx;
+			overflow: hidden;
 
-			.items-li {
+			.list-li {
 				display: flex;
 				justify-content: space-between;
 				align-items: center;
 				padding: 0 30rpx;
 				box-sizing: border-box;
 				border-bottom: 1rpx solid #E0E0E0;
+				background: #fff;
 
 				>view:nth-of-type(1) {
 					font-size: 30rpx;
 					color: #333333;
-					line-height: 80rpx;
-					text-align: left;
-				}
-
-				>view:nth-of-type(2) {
-					font-size: 28rpx;
-					color: #666666;
-					line-height: 80rpx;
-					text-align: left;
-					display: flex;
-					justify-content: space-between;
-					align-items: center;
-				}
-			}
-
-			.items-t {
-				border-bottom: 1rpx solid #E0E0E0;
-				height: 80rpx;
-				display: flex;
-				justify-content: flex-start;
-				align-items: center;
-				padding: 0 30rpx;
-				box-sizing: border-box;
-
-				.items-t-l {
-					width: 175rpx;
-					height: 50rpx;
-					background: #E11608;
-					border-radius: 50rpx 50rpx 50rpx 50rpx;
-					font-size: 30rpx;
-					color: #FFFFFF;
-					line-height: 50rpx;
-					text-align: center;
-					margin-right: 14rpx;
-				}
-
-				.items-t-r {
-					font-size: 30rpx;
-					color: #333333;
-					line-height: 42rpx;
+					line-height: 100rpx;
 					text-align: left;
 					overflow: hidden;
 					text-overflow: ellipsis;
 					white-space: nowrap;
-					flex: 1;
-				}
-
-				.items-t-img {
-					width: 24rpx;
-					height: 24rpx;
-					margin-left: 76rpx;
-					margin-right: 34rpx;
-				}
-			}
-
-			.items-b {
-				padding: 0 30rpx;
-				box-sizing: border-box;
-				height: 80rpx;
-				font-size: 28rpx;
-				color: #666666;
-				line-height: 80rpx;
-				text-align: left;
-			}
-		}
-
-		.items-number {
-			font-size: 24rpx;
-			color: #3D3D3D;
-			line-height: 34rpx;
-			text-align: right;
-			margin: 20rpx 60rpx 0 0;
-
-			>text {
-				font-size: 24rpx;
-				color: #FF0000;
-				line-height: 34rpx;
-				text-align: right;
-			}
-		}
-
-		.list {
-			width: 690rpx;
-			margin: 20rpx 30rpx 0;
-			background: #FFFFFF;
-			border-radius: 20rpx 20rpx 20rpx 20rpx;
-
-			.list-li {
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				padding: 0 30rpx;
-				box-sizing: border-box;
-				border-bottom: 1rpx solid #E0E0E0;
-
-				>view:nth-of-type(1) {
-					font-size: 30rpx;
-					color: #333333;
-					line-height: 80rpx;
-					text-align: left;
 				}
 
 				>view:nth-of-type(2) {
 					font-size: 28rpx;
 					color: #666666;
-					line-height: 80rpx;
+					line-height: 100rpx;
 					text-align: left;
 					display: flex;
 					justify-content: space-between;
 					align-items: center;
 
 					>img {
-						width: 24rpx;
-						height: 12rpx;
+						width: 30rpx;
+						height: 30rpx;
 						margin-left: 10rpx;
 					}
 				}
@@ -760,18 +672,27 @@
 			}
 
 			.describe {
-				width: 636rpx;
-				height: 120rpx;
-				border-radius: 10rpx 10rpx 10rpx 10rpx;
-				border: 1rpx solid #E0E0E0;
-				margin: 20rpx 0 0 28rpx;
-				padding: 12rpx 16rpx;
-				box-sizing: border-box;
+				width: 750rpx;
+				background: #fff;
+				overflow: hidden;
+			
+				.describe-n {
+					width: 690rpx;
+					min-height: 180rpx;
+					border-radius: 10rpx 10rpx 10rpx 10rpx;
+					border: 1rpx solid #E0E0E0;
+					margin: 40rpx;
+					padding: 22rpx;
+					box-sizing: border-box;
+					background: #F5F5F5;
+				}
 			}
 
 			.check-for-img-max-box {
-				margin: 20px 28rpx;
-
+				padding: 20px 28rpx;
+				box-sizing: border-box;
+				background: #fff;
+				border-bottom: 2rpx solid #E0E0E0;
 				.left-title-p {
 					width: 100%;
 					text-align: left;
@@ -824,48 +745,55 @@
 			.list-li:last-of-type {
 				border: none;
 			}
-
-			.radio_group {
+			.hazardCheckNum{
+				border-bottom: 2rpx solid #E0E0E0;
+				padding: 30rpx 40rpx 34rpx 40rpx;
+				box-sizing: border-box;
+				background: #fff;
 				display: flex;
 				justify-content: flex-end;
-				padding: 32rpx 30rpx 22rpx 30rpx;
-				box-sizing: border-box;
-				border-bottom: 1rpx solid #E0E0E0;
-
-				.radio {
-					display: flex;
-					justify-content: flex-start;
-					align-items: center;
+				align-items: center;
+				.hazardCheckNum-l{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 18rpx;
+				}
+				.hazardCheckNum-r{
+					font-size: 28rpx;
+					color: #FF5900;
+					line-height: 40rpx;
+					text-align: left;
+				}
+				
+			}
+		}
 
-					>img {
-						width: 30rpx;
-						height: 30rpx;
-						margin-right: 34rpx;
-					}
+		.srearch {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
 
-					>text {
-						font-size: 30rpx;
-						color: #333333;
-						line-height: 42rpx;
-						text-align: left;
-					}
-				}
+			.srearch-l {
+				font-size: 30rpx;
+				color: #333333;
+				line-height: 100rpx;
+				text-align: left;
+			}
 
-				.radio:nth-of-type(1) {
-					margin-right: 54rpx;
-				}
+			.srearch-r {
+				width: 30rpx;
+				height: 30rpx;
+				margin-right: 0rpx;
 			}
 		}
 
 		/* 语音备注 */
 		.voice {
-			width: 690rpx;
+			width: 750rpx;
 			min-height: 100rpx;
 			background: #FFFFFF;
 			border-radius: 20rpx 20rpx 20rpx 20rpx;
-			margin: 0rpx 30rpx;
-			padding: 0 30rpx;
-			box-sizing: border-box;
+			
 			overflow: hidden;
 
 			.voice_t {
@@ -873,15 +801,23 @@
 				display: flex;
 				justify-content: space-between;
 				align-items: center;
-
+				padding: 0 30rpx;
+				box-sizing: border-box;
+				border-top: 2rpx solid #E0E0E0;
 				.voice_t_t {
 					width: 100%;
-					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: space-between;
+					>text:nth-of-type(1) {
+						font-size: 30rpx;
+						color: #333333;
+						line-height: 100rpx;
+					}
+					>text:nth-of-type(2) {
+						font-size: 28rpx;
+						color: #999999;
+						line-height: 100rpx;
+					}
 				}
 
 				.voice_t_b {
@@ -900,7 +836,8 @@
 				justify-content flex-start;
 				align-items center;
 				margin-bottom: 20rpx;
-
+				padding: 0 30rpx;
+				box-sizing: border-box;
 				.voice_b_l {
 					width: 400rpx;
 					height: 40rpx;
@@ -958,31 +895,30 @@
 
 	.sub-btn {
 		display: flex;
-		justify-content: center;
+		justify-content: space-between;
 		position: fixed;
-		left: 30rpx;
 		bottom: 30rpx;
+		width: 750rpx;
+		padding: 0 46rpx;
+		box-sizing: border-box;
 
-		>view:nth-of-type(1) {
-			width: 345rpx;
-			height: 100rpx;
-			background: #FF8C00;
-			border-radius: 50rpx 0rpx 0rpx 50rpx;
-			font-size: 30rpx;
-			color: #FFFFFF;
-			line-height: 100rpx;
-			text-align: center;
-		}
-
-		>view:nth-of-type(2) {
-			width: 345rpx;
-			height: 100rpx;
-			background: #0183FA;
-			border-radius: 0rpx 50rpx 50rpx 0rpx;
-			font-size: 30rpx;
-			color: #FFFFFF;
-			line-height: 100rpx;
-			text-align: center;
+		>img {
+			width: 160rpx;
+			height: 160rpx;
 		}
 	}
+	.inspectRecord{
+		position: fixed;
+		top: 118rpx;
+		right: 0;
+		z-index: 200;
+		width: 160rpx;
+		height: 60rpx;
+		background: #0183FA;
+		border-radius: 50rpx 0rpx 0rpx 50rpx;
+		font-size: 30rpx;
+		color: #FFFFFF;
+		line-height: 60rpx;
+		text-align: center;
+	}
 </style>

+ 5 - 2
pages_safetyCheck/views/inspectManage/hiddenDangerRecord.vue

@@ -60,8 +60,9 @@
 		onLoad(option) {
 			let optionData = JSON.parse(decodeURIComponent(option.infoData));
 			uni.setNavigationBarTitle({
-				title: optionData.subName + '(' + (optionData.pageType == 0 ? optionData.roomNum : optionData
-					.subRoom) + ')'
+				title: optionData.subName + '(' + (optionData.pageType == 0 ? (optionData.roomNum?optionData.roomNum:'-') : (optionData
+					.subRoom?optionData
+					.subRoom:'-')) + ')'
 			})
 			this.$set(this, 'optionData', optionData);
 		},
@@ -91,6 +92,8 @@
 					//检查时间
 					infoData.checkPlanSetVoList.planId=row.planId;
 					infoData.checkPlanSetVoList.planSetId=row.planSetId;
+					infoData.manageId=row.manageId;
+					infoData.setOptionId=row.setOptionId;
 					infoData.subId=row.subId;
 					infoData.hazardCheckPro=row.hazardCheckPro;
 					uni.navigateTo({

+ 86 - 23
pages_safetyCheck/views/inspectManage/inspectAdd.vue

@@ -7,33 +7,38 @@
 				<view class="items-t">
 					<view class="items-t-r">{{newData.hazardCheckCode}} {{newData.hazardCheckName}}</view>
 				</view>
-				<view class="items-b">< {{newData.hazardCheckCode2}} {{newData.hazardCheckName2}} <</view>
+				<view class="items-b">< {{newData.hazardCheckCode2}} {{newData.hazardCheckName2}} <
+					{{newData.hazardCheckCode1}} {{newData.hazardCheckName1}}
+				</view>
 			</view>
 			<view class="items-number">此检查项在当前实验室累计出现<text>{{hazardCheckNum}}</text>次隐患</view>
 			<view class="list">
-				<view class="list-li">
+				<!-- <view class="list-li" v-if="newData.hazardCheckName!=''" @click="inspectDot()">
 					<view>检查要点</view>
 					<view>
-						<img src="@/pages_safetyCheck/images/icon_06.png">
+						<img v-if="!newData.inspectDot" src="@/pages_safetyCheck/images/icon_06.png">
+						<img v-if="newData.inspectDot" src="@/pages_safetyCheck/images/icon_06_1.png">
 					</view>
 				</view>
-				<view class="hidden-content">{{newData.hazardCheckPoint}}
+				<view class="hidden-content" v-if="newData.hazardCheckName!='' && newData.inspectDot">
+					{{newData.hazardCheckPoint}}
 				</view>
-				<view class="radio_group">
+				<view class="radio_group" v-if="newData.inspectDot">
 					<view class="radio" v-for="(item,index) in radioList" :key="index" @click="radioClick(item)">
 						<img v-if="!item.checked" src="@/pages_safetyCheck/images/icon_aqjc_5.png">
 						<img v-if="item.checked" src="@/pages_safetyCheck/images/icon_aqjc_6.png">
 						<text>{{item.name}}</text>
 					</view>
-				</view>
+				</view> -->
 				<view class="list-li" v-if="!form.checkFlag">
 					<view>检查隐患</view>
 					<view>
-						<img src="@/pages_safetyCheck/images/icon_06.png">
+						<!-- <img src="@/pages_safetyCheck/images/icon_06.png"> -->
 					</view>
 				</view>
-				<textarea v-if="!form.checkFlag" class="describe" type="text" v-model="form.hazardDescribe"
-					maxlength="200" placeholder="请填写隐患描述" placeholder-style="font-size:24rpx;color:#999;"></textarea>
+				<textarea v-if="!form.checkFlag" class="describe" cursor-spacing="40" type="text"
+					v-model="form.hazardDescribe" maxlength="200" placeholder="请填写隐患描述"
+					placeholder-style="font-size:24rpx;color:#999;"></textarea>
 				<view v-if="!form.checkFlag" class="check-for-img-max-box">
 					<view class="left-title-p"></view>
 					<view class="right-img-box">
@@ -69,10 +74,11 @@
 				</view>
 			</view>
 		</scroll-view>
-		<view class="sub-btn">
+		<view class="sub-btn" v-if="newData.checkStatus !=1 && newData.checkSetProgress !=100">
 			<view @click="submitForm(1)">保存草稿</view>
 			<view @click="submitForm(2)">提交</view>
 		</view>
+		<view class="sub-btn-tow" v-if="newData.checkStatus ==1 && newData.checkSetProgress !=100" @click="submitForm(2)">提交</view>
 	</view>
 
 </template>
@@ -129,8 +135,10 @@
 			let optionData = JSON.parse(decodeURIComponent(option.infoData));
 			console.log('新增', optionData)
 			uni.setNavigationBarTitle({
-				title: optionData.subName + '(' + (optionData.pageType == 0 ? optionData.roomNum : optionData
-					.subRoom) + ')'
+				title: optionData.subName + '(' + (optionData.pageType == 0 ? (optionData.roomNum ? optionData
+					.roomNum : '-') : (optionData
+					.subRoom ? optionData
+					.subRoom : '-')) + ')'
 			})
 			this.$set(this, 'pageType', optionData.pageType);
 			this.$set(this, 'itemsStatus', optionData.itemsStatus);
@@ -147,20 +155,27 @@
 		},
 		mounted() {
 			if (this.pageType == 0) {
-				//检查
-				if (this.itemsStatus == 0 || this.itemsStatus == 1) {
+				
+				if(this.optionData.checkDraftVo){//检查中,已检查
+					if(this.optionData.checkDraftVo.checkStatus==2){//检查中
+						//保存草稿详情
+						this.securityDraftFindBySetOptionId();
+					}else{
+						//开始检查-提交的详情
+						this.securityAppCheckPlanCheckInfo();
+					}
+				}else{//待见擦汗
 					//开始检查-提交的详情
 					this.securityAppCheckPlanCheckInfo();
-				} else if (this.itemsStatus == 2) {
-					//保存草稿详情
-					this.securityDraftFindBySetOptionId();
-
-
 				}
 			}
 			this.securityAppCheckPhotoGetCheckNumBySub();
 		},
 		methods: {
+			//折叠展开
+			inspectDot() {
+				this.newData.inspectDot = !this.newData.inspectDot
+			},
 			hiddenDangerClick(row) {
 				if (!this.hiddenDangerRecordStatus) {
 					let infoData = this.optionData;
@@ -181,10 +196,25 @@
 					data
 				} = await securityAppCheckPlanCheckInfo(obj);
 				if (data.code == 200) {
+					data.data.inspectDot = true;
 					this.$set(this, 'newData', data.data);
 					//编辑的时候
 					this.$set(this.form, 'checkFlag', data.data.checkFlag ? data.data.checkFlag : false);
-					this.$set(this.form, 'hazardDescribe', data.data.hazardDescribe ? data.data.hazardDescribe : '');
+					if (data.data.checkFlag) {
+						this.radioList[0].checked = true
+						this.radioList[1].checked = false
+					} else {
+						this.radioList[0].checked = false
+						this.radioList[1].checked = true
+					}
+
+					if (data.data.hazardDescribe) {
+						this.$set(this.form, 'hazardDescribe', data.data.hazardDescribe);
+					} else {
+						let list = [];
+						list = data.data.hazardCheckPoint.split('#');
+						this.$set(this.form, 'hazardDescribe', list[0]);
+					}
 					this.$set(this.form, 'photoList', data.data.photoList ? data.data.photoList : []);
 					this.$set(this.form, 'voiceList', data.data.voiceList ? data.data.voiceList : []);
 
@@ -200,10 +230,24 @@
 				} = await securityDraftFindBySetOptionId(obj);
 				if (data.code == 200) {
 					//编辑的时候
+					data.data.inspectDot = true;
 					this.$set(this, 'newData', data.data);
 					this.$set(this.newData, 'checkPlanSetVoList', this.optionData.checkPlanSetVoList);
 					this.$set(this.form, 'checkFlag', data.data.checkFlag ? data.data.checkFlag : false);
-					this.$set(this.form, 'hazardDescribe', data.data.hazardDescribe ? data.data.hazardDescribe : '');
+					if (data.data.checkFlag) {
+						this.radioList[0].checked = true
+						this.radioList[1].checked = false
+					} else {
+						this.radioList[0].checked = false
+						this.radioList[1].checked = true
+					}
+					if (data.data.hazardDescribe) {
+						this.$set(this.form, 'hazardDescribe', data.data.hazardDescribe);
+					} else {
+						let list = [];
+						list = data.data.hazardCheckPoint.split('#');
+						this.$set(this.form, 'hazardDescribe', list[0]);
+					}
 					this.$set(this.form, 'photoList', data.data.photoList ? data.data.photoList : []);
 					this.$set(this.form, 'voiceList', data.data.voiceList ? data.data.voiceList : []);
 				}
@@ -245,6 +289,9 @@
 						});
 						return
 					}
+				} else {
+					this.$set(this.form, 'hazardDescribe', '');
+					this.$set(this.form, 'photoList', []);
 				}
 				let obj = {
 					checkFlag: this.form.checkFlag,
@@ -305,6 +352,7 @@
 			/******图片上传******/
 			selectImage() {
 				let self = this;
+				let photoMaxNun = 0;
 				if (this.form.photoList.length > 5) {
 					uni.showToast({
 						title: '最多上传6张图片',
@@ -314,8 +362,9 @@
 					});
 					return
 				}
+				photoMaxNun = 6 - this.form.photoList.length;
 				wx.chooseImage({
-					count: 6,
+					count: photoMaxNun,
 					sizeType: ["original", "compressed"],
 					sourceType: ["album", "camera"],
 					success: function(res) {
@@ -720,7 +769,7 @@
 
 			.describe {
 				width: 636rpx;
-				height: 120rpx;
+				height: 180rpx;
 				border-radius: 10rpx 10rpx 10rpx 10rpx;
 				border: 1rpx solid #E0E0E0;
 				margin: 20rpx 0 0 28rpx;
@@ -948,4 +997,18 @@
 			text-align: center;
 		}
 	}
+
+	.sub-btn-tow {
+		position: fixed;
+		left: 30rpx;
+		bottom: 30rpx;
+		width: 690rpx;
+		height: 100rpx;
+		background: #0183FA;
+		border-radius: 50rpx 50rpx 50rpx 50rpx;
+		font-size: 29rpx;
+		color: #FFFFFF;
+		line-height: 100rpx;
+		text-align: center;
+	}
 </style>

+ 349 - 218
pages_safetyCheck/views/inspectManage/inspectList.vue

@@ -20,53 +20,59 @@
 					@click="tabClickTow(index)">{{item}}</view>
 			</view>
 			<view>
+				<view class="level">
+					<view class="level-li"
+						:style="levelId==item.levelId?'border:1rpx solid '+item.levelColor+';background:'+item.levelColorTow+';':'levelColor-B'"
+						@click="levelClick(item.levelId)" v-for="(item,index) in levelList">{{item.levelName}}</view>
+					<view class="level-r" v-if="tabIndexTow == 0">
+						<view :class="manageStatus == 0 ?'level-r-B':'level-r-A'" @click="checkFlagChange(0)">未完成</view>
+						<view :class="manageStatus == 2 ?'level-r-B':'level-r-A'" @click="checkFlagChange(2)">已完成</view>
+					</view>
+				</view>
 				<view class="srearch">
-					<picker @change="deptChange" :value="deptData.index" :range="deptData.list" :range-key="'deptName'">
-						<view class="college">
-							<view>{{deptData.name?deptData.name:'学院'}}</view>
-							<img src="@/pages_safetyCheck/images/icon_06.png">
-						</view>
-					</picker>
-					<view class="srearch-n">
+					<view class="srearch-n" @click="srearchClick()">
 						<view class="srearch-l">
 							<img src="@/pages_safetyCheck/images/icon_aqjc_ss.png">
 						</view>
-						<input class="srearch-c" type="text" @confirm="carriageReturnRequest" v-model="searchValue"
-							placeholder="实验室/房间号" />
-						<view class="srearch-r" @click="saoCode()">
-							<img src="@/pages_safetyCheck/images/icon_aqjc_sm.png">
-						</view>
+						<input class="srearch-c" type="text" v-model="searchValue" placeholder="搜索实验室" disabled />
 					</view>
 				</view>
-				<view class="level">
-					<view class="level-li" :id="levelId==item.levelId?'levelColor-A':'levelColor-B'"
-						@click="levelClick(item.levelId)" v-for="(item,index) in levelList">{{item.levelName}}</view>
-				</view>
+
 			</view>
-			<view class="hidden">
-				<view class="hidden-li" @click="listClick(item)" v-for="(item,index) in dataList">
-					<img class="hidden-li-l" src="@/pages_safetyCheck/images/icon_sys_xz@1x.png">
-					<view class="hidden-li-c">{{item.subName}}</view>
-					<view class="hidden-li-r" :class="item.manageStatus == 2?'manageClass':''" v-if="tabIndexTow==0">
-						{{item.manageStatus == 2?'已检查':'待检查'+item.unCheckCount+'项'}}
-						<img v-if="item.manageStatus != 2" src="@/pages_safetyCheck/images/icon_ssp_gd@1x.png">
-						<img v-if="item.manageStatus == 2" src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
-					</view>
-					<view class="hidden-li-r" :class="item.manageStatus == 2?'manageClass':''" v-if="tabIndexTow==1">
-						{{item.overCheck?'已复查':'待复查'+item.stayExamineCheckNum+'项'}}
-						<img src="@/pages_safetyCheck/images/icon_ssp_gd@1x.png">
+			<view class="list">
+				<view class="list-li" @click="listClick(item)" v-for="(item,index) in dataList">
+					<view class="list-li-t">
+						<img class="list-li-t-l" src="@/pages_safetyCheck/images/icon_aqjc_shiyanshi.png">
+						<view class="list-li-t-c">{{item.subName}}</view>
+						<view class="list-li-t-r"
+							:style="'border:1rpx solid '+item.classLevelColor+';background:'+item.classLevelColorTow+';'">
+							<text
+								:style="'border-right:1rpx solid '+item.classLevelColor+';color:'+item.classLevelColor+';'">{{item.classLevelName?item.classLevelName:''}}</text>
+							<text
+								:style="'color:'+item.classLevelColor+';'">{{item.classTypeNames?item.classTypeNames:''}}</text>
+						</view>
 					</view>
-					<view class="hidden-li-r" :class="item.manageStatus == 2?'manageClass':''" v-if="tabIndexTow==2">
-						{{item.overCheck?'已整改':'待整改'+item.stayExamineCheckNum+'项'}}
-						<img src="@/pages_safetyCheck/images/icon_ssp_gd@1x.png">
+					<view class="list-li-b">
+						<view class="list-li-b-t">
+							<img src="@/pages/images/icon_sy_zc@1x.png">
+							{{tabIndexTow==0?(item.roomNum?item.roomNum:'-'):(item.subRoom?item.subRoom:'-')}}房间&{{item.buildName}}
+						</view>
+						<view class="list-li-b-b">
+							<view class="list-li-b-b-l">
+								<img src="@/pages/images/icon_sy_zc@1x.png">
+								{{item.deptName}}
+							</view>
+							<view :class="item.manageStatus==2?'finished':'notFinished'" v-if="tabIndexTow==0">
+								{{item.manageStatus==2?'已完成':'未完成'}}
+							</view>
+						</view>
 					</view>
+
 				</view>
-				<!-- <view class="get-data-p" v-if="!getDataType">
-					<img class="get-data-img" src="@/pages_safetyCheck/images/icon_aqjc_sl.png">
-					<view class="get-data-text">上拉加载</view>
-				</view> -->
 				<view class="get-data-null-p" v-if="getDataType">- 没有更多数据 -</view>
 			</view>
+			<img v-if="tabIndexTow==0" class="saoCode" @click="saoCode()"
+				src="@/pages_safetyCheck/images/icon_aqjc_saoma.png">
 		</scroll-view>
 	</view>
 </template>
@@ -84,6 +90,7 @@
 		securityAppCheckManageList,
 		securityAppCheckDangerGetCheckDangerSubList,
 		securityAppCheckDangerReviewSubList,
+		securityAppCheckSetOptionList,
 	} from '@/pages_safetyCheck/api/index.js'
 	export default {
 		name: "snapshotList",
@@ -112,7 +119,7 @@
 				//级别
 				levelList: [],
 				levelId: null,
-				optionData:null,
+				optionData: null,
 				//实验室/房间号
 				searchValue: '',
 				subId: '',
@@ -125,11 +132,11 @@
 				dataList: [],
 				total: 0,
 				getDataType: false,
+				manageStatus: null,
 			}
 		},
 		onLoad(option) {
 			let optionData = JSON.parse(decodeURIComponent(option.infoData))
-			console.log(optionData)
 			uni.setNavigationBarTitle({
 				title: optionData.checkPlanSetVoList.checkName
 			})
@@ -174,6 +181,16 @@
 				this.$set(this.queryParams, 'page', 1);
 				this.getList();
 			},
+			//符合/不符合
+			checkFlagChange(type) {
+				if (this.manageStatus == type) {
+					this.$set(this, 'manageStatus', null);
+				} else {
+					this.$set(this, 'manageStatus', type);
+				}
+				this.$set(this.queryParams, 'page', 1);
+				this.getList()
+			},
 			//查询类型切换
 			tabClickTow(index) {
 				this.$set(this.queryParams, 'page', 1);
@@ -193,6 +210,17 @@
 					this.getList();
 				})
 			},
+			//实验室搜索框跳转
+			srearchClick() {
+				let infoData = this.optionData;
+				infoData.pageType = this.tabIndexTow;
+				infoData.laboratoryStatus = this.tabIndexTow;
+				infoData.tabIndexTow = this.tabIndexTow;
+				uni.navigateTo({
+					url: '/pages_safetyCheck/views/snapshotManage/laboratorySearch?form=' + encodeURIComponent(
+						JSON.stringify(infoData))
+				});
+			},
 			//计划详情
 			planClick() {
 				let infoData = {
@@ -238,6 +266,50 @@
 					}
 				}
 			},
+
+			//查询检查项
+			async securityAppCheckSetOptionList(item) {
+				let self = this;
+				let upData = item;
+				let obj = {
+					page: 1,
+					pageSize: 20,
+					checkStatus: '0',
+					manageId: upData.manageId,
+				}
+				const {
+					data
+				} = await securityAppCheckSetOptionList(obj);
+				if (data.code == 200) {
+					if (data.data.records[0]) {
+						let infoData = self.optionData;
+						infoData.pageType = self.tabIndexTow;;
+						infoData.itemsStatus = 0;
+						infoData.subName = upData.subName;
+						infoData.roomNum = upData.roomNum;
+						infoData.subId = data.data.records[0].subId;
+						infoData.manageId = data.data.records[0].manageId;
+						infoData.setOptionId = data.data.records[0].setOptionId;
+						infoData.hazardCheckPro = data.data.records[0].hazardCheckPro;
+						uni.navigateTo({
+							url: '/pages_safetyCheck/views/inspectManage/conductInspections?infoData=' +
+								encodeURIComponent(
+									JSON
+									.stringify(infoData))
+						});
+					} else {
+						self.dialogStatus = 0;
+						self.dialogVisible = false;
+						uni.showToast({
+							title: '该实验室暂无检查项!',
+							icon: "none",
+							mask: true,
+							duration: 2000
+						});
+						return
+					}
+				}
+			},
 			/******调用摄像头******/
 			saoCode() {
 				let self = this;
@@ -275,15 +347,16 @@
 					} = await securityAppCheckManageList(obj);
 					if (data.code == 200) {
 						if (data.data.records[0]) {
+							this.securityAppCheckSetOptionListTow(data.data.records[0], 0)
 							//跳转检查项列表页面
-							let infoData = data.data.records[0];
+							/* let infoData = data.data.records[0];
 							infoData.pageType = this.tabIndexTow;
 							infoData.checkPlanSetVoList = this.optionData.checkPlanSetVoList;
 							uni.navigateTo({
 								url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' +
 									encodeURIComponent(
 										JSON.stringify(infoData))
-							});
+							}); */
 						} else {
 							//未找到数据提示
 							uni.showToast({
@@ -301,7 +374,7 @@
 						data
 					} = await securityAppCheckDangerReviewSubList(obj);
 					if (data.code == 200) {
-						if (data.data[0] && data.data[0].stayExamineCheckNum !=0) {
+						if (data.data[0] && data.data[0].stayExamineCheckNum != 0) {
 							//跳转检查项列表页面
 							let infoData = data.data[0];
 							infoData.pageType = this.tabIndexTow;
@@ -324,6 +397,7 @@
 				} else if (this.tabIndexTow == 2) {
 					//整改计划
 					obj.planId = this.optionData.planId;
+					obj.userId = uni.getStorageSync('userId');
 					const {
 						data
 					} = await securityAppCheckDangerGetCheckDangerSubList(obj);
@@ -350,6 +424,46 @@
 					}
 				}
 			},
+			async securityAppCheckSetOptionListTow(item, checkStatus) {
+				let self = this;
+				let upData = item;
+				let obj = {
+					page: 1,
+					pageSize: 20,
+					checkStatus: checkStatus,
+					manageId: upData.manageId,
+				}
+				this.inspectRemporaryList = [];
+				const {
+					data
+				} = await securityAppCheckSetOptionList(obj);
+				if (data.code == 200 && checkStatus == 0) { //先查询待检查数据
+					if (data.data.records[0]) {
+						let infoData = self.optionData;
+						infoData.pageType = 0;
+						infoData.subName = upData.subName;
+						infoData.roomNum = upData.roomNum;
+						infoData.subId = data.data.records[0].subId;
+						infoData.manageId = data.data.records[0].manageId;
+						infoData.setOptionId = data.data.records[0].setOptionId;
+						infoData.hazardCheckPro = data.data.records[0].hazardCheckPro;
+						infoData.checkCategory = data.data.records[0].checkCategory;
+						uni.navigateTo({
+							url: '/pages_safetyCheck/views/inspectManage/conductInspections?infoData=' +
+								encodeURIComponent(
+									JSON
+									.stringify(infoData))
+						});
+					} else {
+						uni.showToast({
+							title: '该实验室暂无检查工作!',
+							icon: "none",
+							mask: true,
+							duration: 2000
+						});
+					}
+				}
+			},
 			//学院选择
 			deptChange(e) {
 				let self = this;
@@ -387,12 +501,16 @@
 			},
 			//获取分级
 			async laboratoryLevelConfigGetWebLevelTitleList() {
+				let self = this;
 				const {
 					data
 				} = await laboratoryLevelConfigGetWebLevelTitleList({});
 				if (data.code == 200) {
-					data.data.forEach(function(item){
-						item.levelName=item.levelName.split('/')[0]
+					data.data.forEach(function(item) {
+						item.levelName = item.levelName.split('/')[0]
+						if (item.levelColor) {
+							item.levelColorTow = self.hexToRgb(item.levelColor, 0.2)
+						}
 					})
 					this.$set(this, 'levelList', data.data);
 				}
@@ -406,17 +524,30 @@
 			//检查任务
 			async getList() {
 				let self = this;
+
 				let obj = JSON.parse(JSON.stringify(this.queryParams));
 				obj.planSetId = this.planSetId;
 				obj.deptId = this.deptData.id ? this.deptData.id : '';
 				obj.searchValue = this.searchValue ? this.searchValue : '';
 				obj.levelId = this.levelId ? this.levelId : '';
+				if (this.manageStatus == 0 || this.manageStatus == 2) {
+					obj.manageStatus = this.manageStatus;
+				} else {
+					obj.manageStatus = '';
+				}
 				if (this.tabIndexTow == 0) {
 					//检查计划
 					const {
 						data
 					} = await securityAppCheckManageList(obj);
 					if (data.code == 200) {
+
+						data.data.records.forEach(function(item) {
+							if (item.classLevelColor) {
+								item.classLevelColorTow = self.hexToRgb(item.classLevelColor, 0.2)
+							}
+
+						})
 						if (self.queryParams.page == 1) {
 							this.dataList = data.data.records;
 							this.total = data.data.total;
@@ -430,6 +561,7 @@
 								this.$set(this, 'getDataType', true);
 							}
 						}
+
 					}
 				} else if (this.tabIndexTow == 1) {
 					//复查计划
@@ -459,6 +591,7 @@
 				} else if (this.tabIndexTow == 2) {
 					//整改计划
 					obj.planId = this.optionData.planId;
+					obj.userId = uni.getStorageSync('userId');
 					const {
 						data
 					} = await securityAppCheckDangerGetCheckDangerSubList(obj);
@@ -483,10 +616,16 @@
 
 				}
 			},
-
-
-
-
+			//十六进制颜色值和RGB格式转换
+			hexToRgb(hex, opacity = 1) {
+				// 去除#号
+				var color = hex.replace("#", "");
+				// 分割成红、绿、蓝三部分的16进制字符串
+				var red = parseInt(color.substring(0, 2), 16);
+				var green = parseInt(color.substring(2, 4), 16);
+				var blue = parseInt(color.substring(4, 6), 16);
+				return `RGB(${red}, ${green}, ${blue},${opacity})`;
+			},
 		}
 	}
 </script>
@@ -599,7 +738,6 @@
 			background: #FFFFFF;
 			border-radius: 0rpx 0rpx 0rpx 0rpx;
 			overflow: hidden;
-			margin-top: 20rpx;
 			display: flex;
 			display: flex;
 			justify-content: space-between;
@@ -611,7 +749,7 @@
 				width: 200rpx;
 				height: 60rpx;
 				border-radius: 50rpx 50rpx 50rpx 50rpx;
-				border: 1rpx solid #E0E0E0;
+				border: 2rpx solid #E0E0E0;
 				font-size: 24rpx;
 				color: #333333;
 				line-height: 60rpx;
@@ -641,10 +779,10 @@
 			}
 
 			.srearch-n {
-				width: 480rpx;
+				width: 690rpx;
 				height: 60rpx;
 				border-radius: 50rpx 50rpx 50rpx 50rpx;
-				border: 1rpx solid #E0E0E0;
+				border: 2rpx solid #E0E0E0;
 				display: flex;
 				justify-content: flex-start;
 				align-items: center;
@@ -690,15 +828,16 @@
 			background: #FFFFFF;
 			display: flex;
 			justify-content: flex-start;
-			padding: 0 30rpx;
+			padding: 30rpx 30rpx 0;
 			box-sizing: border-box;
+			margin-top: 20rpx;
 
 			.level-li {
 				width: 100rpx;
 				height: 50rpx;
 				background: #F5F5F5;
 				border-radius: 50rpx 50rpx 50rpx 50rpx;
-				border: 1rpx solid #E0E0E0;
+				border: 2rpx solid #E0E0E0;
 				margin-right: 10rpx;
 				font-size: 24rpx;
 				color: #333333;
@@ -706,6 +845,41 @@
 				text-align: center;
 			}
 
+			.level-r {
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				margin: 0 20rpx 0 30rpx;
+
+				.level-r-A {
+					border-radius: 50rpx 50rpx 50rpx 50rpx;
+					border: 1rpx solid #E0E0E0;
+					width: 100rpx;
+					height: 60rpx;
+					background: #E0E0E0;
+					font-weight: normal;
+					font-size: 24rpx;
+					color: #333333;
+					line-height: 60rpx;
+					text-align: center;
+					margin-right: 10rpx;
+				}
+
+				.level-r-B {
+					border-radius: 50rpx 50rpx 50rpx 50rpx;
+					border: 1rpx solid #0183FA;
+					width: 100rpx;
+					height: 60rpx;
+					background: #0183FA;
+					font-weight: normal;
+					font-size: 24rpx;
+					color: #FFFFFF;
+					line-height: 60rpx;
+					text-align: center;
+					margin-right: 10rpx;
+				}
+			}
+
 			#levelColor-A {
 				background: rgba(255, 0, 0, 0.2);
 				color: #FF0000;
@@ -715,204 +889,153 @@
 			#levelColor-B {
 				background: #F5F5F5;
 				color: #333333;
-				border: 1rpx solid #E0E0E0;
+				border: 2rpx solid #E0E0E0;
 			}
 
 		}
 
 		.list {
-			width: 690rpx;
-			min-height: 765rpx;
-			background: #FFFFFF;
-			border-radius: 20rpx 20rpx 20rpx 20rpx;
-			margin: 20rpx 0 0 30rpx;
+			width: 750rpx;
+			padding: 0 30rpx;
+			box-sizing: border-box;
 
 			.list-li {
-				display: flex;
-				justify-content: space-between;
-				border-bottom: 1rpx solid #E0E0E0;
-				padding: 0 22rpx 0 28rpx;
+				width: 690rpx;
+				min-height: 240rpx;
+				background: #FFFFFF;
+				border-radius: 10rpx 10rpx 10rpx 10rpx;
+				padding: 0 30rpx;
 				box-sizing: border-box;
+				margin-top: 20rpx;
 
-				>view:nth-of-type(1) {
-					font-size: 30rpx;
-					color: #333333;
-					line-height: 80rpx;
-					text-align: left;
-				}
-
-				>view:nth-of-type(2) {
-					font-size: 28rpx;
-					color: #666666;
-					line-height: 80rpx;
-					text-align: left;
+				.list-li-t {
 					display: flex;
 					justify-content: flex-start;
 					align-items: center;
+					height: 90rpx;
+					border-bottom: 2rpx dashed #D8D8D8;
 
-					>img {
-						width: 24rpx;
-						height: 24rpx;
-						margin-left: 8rpx;
-					}
-				}
-
-				.project_r {
-					width: 510rpx;
-					min-height: 80rpx;
-					display: flex;
-					justify-content: flex-end;
-					align-items: center;
-					padding-left: 20rpx;
-					box-sizing: border-box;
-					color: #666;
-				}
-
-			}
-
-			.describe {
-				width: 636rpx;
-				height: 120rpx;
-				border-radius: 10rpx 10rpx 10rpx 10rpx;
-				border: 1rpx solid #E0E0E0;
-				margin: 20rpx 0 0 28rpx;
-				padding: 12rpx 16rpx;
-				box-sizing: border-box;
-			}
-
-			.check-for-img-max-box {
-				margin: 20px 28rpx;
-
-				.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: 150rpx;
-						width: 150rpx;
-						position relative;
-						margin: 0 14rpx 20rpx 0;
-						border-radius 10rpx;
-						overflow hidden;
-
-						.img-data {
-							height: 150rpx;
-							width: 150rpx;
-						}
-
-						.position-img {
-							position absolute;
-							right: 0;
-							top: 0;
-							width: 36rpx;
-							height: 36rpx;
-						}
+					.list-li-t-l {
+						width: 40rpx;
+						height: 40rpx;
+						margin-right: 16rpx;
 					}
 
-					.img-box:nth-of-type(3n+3) {
-						margin-right: 0rpx;
+					.list-li-t-c {
+						width: 264rpx;
+						font-size: 30rpx;
+						color: #333333;
+						line-height: 30rpx;
+						text-align: left;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
+						margin-right: 24rpx;
 					}
 
-					.add-button {
-						margin: 0 0rpx 20rpx 0;
-						border-radius 10rpx;
-						overflow hidden;
-						display inline-block;
-						height: 150rpx;
-						width: 150rpx;
+					.list-li-t-r {
+						display: flex;
+						justify-content: flex-start;
+						border-radius: 10rpx 10rpx 10rpx 10rpx;
+						width: 200rpx;
+						height: 40rpx;
+						margin-left: 10rpx;
+
+						>text {
+							display: inline-block;
+							flex: 1;
+							text-align: center;
+							font-size: 24rpx;
+							line-height: 40rpx;
+							text-align: center;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+						}
 					}
 				}
-			}
-		}
-
-		/* 隐患整改 */
-		.hidden {
-			box-sizing: border-box;
-			margin: 20rpx 0;
 
-			.hidden-li:nth-child(1) {
-				border-top: none;
-			}
+				.list-li-b {
+					overflow: hidden;
 
-			.hidden-li {
-				padding: 0 30rpx;
-				height: 80rpx;
-				background: #FFFFFF;
-				border-top: 1rpx solid #E0E0E0;
-				display: flex;
-				justify-content: flex-start;
-				align-items: center;
+					.list-li-b-t {
+						display: flex;
+						justify-content: flex-start;
+						align-items: center;
 
-				.hidden-li-l {
-					width: 34rpx;
-					height: 34rpx;
-				}
-
-				.hidden-li-c {
-					font-size: 28rpx;
-					color: #333333;
-					line-height: 30rpx;
-					text-align: left;
-					flex: 1;
-					overflow: hidden;
-					text-overflow: ellipsis;
-					white-space: nowrap;
-					margin: 0 84rpx 0 12rpx;
-				}
+						>img {
+							width: 28rpx;
+							height: 26rpx;
+							margin-right: 16rpx;
+						}
 
-				.hidden-li-r {
-					font-size: 28rpx;
-					color: #0183FA;
-					line-height: 80rpx;
-					text-align: left;
-					display: flex;
-					justify-content: flex-start;
-					align-items: center;
+						font-size: 28rpx;
+						color: #666666;
+						line-height: 30rpx;
+						text-align: left;
+						margin-top: 32rpx;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
 
-					>img {
-						width: 24rpx;
-						height: 24rpx;
 					}
-				}
-
-				.manageClass {
-					color: #009c1f !important;
-				}
-			}
 
-			.hidden-li:last-of-type {
-				border: none;
-			}
+					.list-li-b-b {
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						margin-top: 20rpx;
+
+						.list-li-b-b-l {
+							display: flex;
+							justify-content: flex-start;
+							align-items: center;
+
+							>img {
+								width: 28rpx;
+								height: 26rpx;
+								margin-right: 16rpx;
+							}
 
-			.get-data-p {
-				height: 100rpx;
-				text-align: center;
+							font-size: 28rpx;
+							color: #666666;
+							line-height: 30rpx;
+							text-align: left;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+						}
 
-				.get-data-img {
-					width: 30rpx;
-					height: 30rpx;
-					margin: 0 auto;
-					margin-top: 15rpx;
-				}
+						.finished {
+							width: 110rpx;
+							height: 40rpx;
+							background: rgba(1, 131, 250, 0.2);
+							border-radius: 20rpx 20rpx 20rpx 20rpx;
+							font-size: 24rpx;
+							color: #0183FA;
+							line-height: 40rpx;
+							text-align: center;
+						}
 
-				.get-data-text {
-					text-align: center;
+						.notFinished {
+							width: 110rpx;
+							height: 40rpx;
+							background: #E0E0E0;
+							border-radius: 20rpx 20rpx 20rpx 20rpx;
+							font-size: 24rpx;
+							color: #666666;
+							line-height: 40rpx;
+							text-align: center;
+						}
+					}
 				}
 			}
+		}
 
-			.get-data-null-p {
-				height: 100rpx;
-				line-height: 100rpx;
-				text-align: center;
-			}
+		.get-data-null-p {
+			height: 100rpx;
+			line-height: 100rpx;
+			text-align: center;
 		}
 
 		#color-A {
@@ -926,5 +1049,13 @@
 		#color-C {
 			color: #16B531;
 		}
+
+		.saoCode {
+			position: fixed;
+			left: 288rpx;
+			bottom: 20rpx;
+			width: 160rpx;
+			height: 160rpx;
+		}
 	}
 </style>

+ 299 - 106
pages_safetyCheck/views/itemsManage/hiddenDangerItems.vue

@@ -4,7 +4,7 @@
 		<view class="header">
 			<view class="lotName" :class="pageType != 0?'lotNameOne':''" v-if="lotName">{{lotName}}</view>
 			<view class="line"></view>
-			<view class="tabTitle_tow">
+			<view class="tabTitle_tow" :style="pageType==0?'width:320rpx;':'width:520rpx;'">
 				<view class="tabTitle_tow_li" @tap="tabClickTow(item.value)" :key="index"
 					v-for="(item,index) in tabTextTow">
 					<view :class="{on:curTabTow==item.value}" class="tabTitle_tow_text">{{item.label}}</view>
@@ -13,14 +13,9 @@
 			</view>
 			<view class="line"></view>
 			<view class="search">
-				<view class="search-l" v-if="pageType == 0 && curTabTow != 0 && curTabTow != 2">
-					<view :class="checkFlag == 1 ?'search-B':'search-A'" @click="checkFlagChange(1)">符合</view>
-					<view :class="checkFlag == 0 ?'search-B':'search-A'" @click="checkFlagChange(0)">不符合</view>
-				</view>
-				<view class="search-r" :class="(pageType == 0 && curTabTow == 0 || curTabTow == 2)||(pageType != 0) ?'search-r-margin':''"
-					@click="checkItemModuleButton('open')">
+				<view class="search-r search-r-margin" @click="checkItemModuleButton('open')">
 					<img src="@/pages_safetyCheck/images/icon_aqjc_ss.png">
-					{{newData.hazardCheckCode?newData.hazardCheckCode:''}}{{newData.hazardCheckName?newData.hazardCheckName:'搜索检查项'}}
+					搜索检查项
 				</view>
 			</view>
 			<view class="line"></view>
@@ -30,7 +25,7 @@
 				<view class="total"
 					:class="curTabTow == 0?'total-color-1':(curTabTow == 2?'total-color-3':(curTabTow == 1?'total-color-2':''))"
 					v-if="pageType == 0">
-					{{curTabTow == 0?'待检查共'+total+'项':(curTabTow == 2?'检查中草稿箱共'+total+'项':(curTabTow == 1?'已检查共'+total+'项':''))}}
+					{{curTabTow == 0?'待检查共'+total+'项':(curTabTow == 1?'已检查共'+total+'项':'')}}
 				</view>
 				<view class="total"
 					:class="curTabTow == 0?'total-color-1':(curTabTow == 1?'total-color-2':(curTabTow == 2?'total-color-3':''))"
@@ -74,12 +69,17 @@
 				<view class="get-data-text">上拉加载</view>
 			</view>
 			<view class="get-data-null-p" v-if="getDataType">- 没有更多数据 -</view>
+			
 		</scroll-view>
 		<checkItemModule :propsData="propsData" v-if="checkItemModuleType"></checkItemModule>
-		<view class="sub-btn" v-if="pageType==0 && (curTabTow==0 || curTabTow==2) && total !=0">
-			<view @click="submitBtn(1)">开展检查</view>
-			<view @click="submitBtn(2)">检查完成</view>
+		<!-- 	<view class="sub-btn" @click="submitBtn(1)" v-if="pageType==0 && inspectRemporary">开展检查</view> -->
+
+		<view class="subBtn">
+			<img @click="saoCode()" v-if="pageType==0" src="@/pages_safetyCheck/images/icon_aqjc_saoma.png">
+			<img @click="submitBtn(1)" v-if="pageType==0 && inspectRemporary" style="margin-left: 184rpx;"
+				src="@/pages_safetyCheck/images/icon_aqjc_jiancha.png" />
 		</view>
+
 	</view>
 
 </template>
@@ -93,6 +93,9 @@
 		securityAppCheckDangerReviewList,
 		securityAppCheckDangerGetCheckDangerSubId,
 		securityAppCheckSetOptionFinishCheck,
+		securityAppCheckDangerGetCheckDangerSubList,
+		securityAppCheckDangerReviewSubList,
+		securityAppCheckManageList,
 	} from '@/pages_safetyCheck/api/index.js'
 	import {
 		checkItemModule
@@ -112,7 +115,7 @@
 					imgDtoList: [],
 				},
 				lotName: null,
-				newData: {
+				optionData: {
 
 				},
 				dialogVisible: false,
@@ -130,32 +133,35 @@
 				//检查项组件数据
 				checkItemModuleType: false,
 				propsData: {},
+				inspectRemporary: false, //待检查
+				inspectRemporaryList: [], //待检查
+				optionData: {},
 			}
 		},
 		onLoad(option) {
 			let optionData = JSON.parse(decodeURIComponent(option.infoData));
-			console.log('检查项列表',optionData)
+			console.log('检查项列表', optionData)
 			uni.setNavigationBarTitle({
-				title: optionData.subName + '(' + (optionData.pageType == 0 ? optionData.roomNum : optionData
-					.subRoom) + ')'
+				title: optionData.subName + '(' + (optionData.pageType == 0 ? (optionData.roomNum ? optionData
+					.roomNum : '-') : (optionData
+					.subRoom ? optionData
+					.subRoom : '-')) + ')'
 			})
 			this.$set(this, 'pageType', optionData.pageType);
 			this.$set(this, 'lotName',
-				optionData.pageType == 0 ? optionData.checkPlanSetVoList.checkName : (
-					optionData.checkPlanSetVoList.overdueUnrectify ? '整改期限' + optionData.checkPlanSetVoList
-					.checkStartTime +
-					'(逾期未完成整改关闭实验室)' : '整改期限' + optionData.checkPlanSetVoList.checkStartTime));
+				optionData.pageType == 0 ? optionData.checkPlanSetVoList.checkName : 
+				(optionData.checkPlanSetVoList.overdueUnrectify ? '整改期限' + optionData.checkPlanSetVoList.rectifyDeadline +'(逾期未完成整改关闭实验室)' : '整改期限' + optionData.checkPlanSetVoList.rectifyDeadline));
 			this.$set(this, 'tabTextTow',
-				optionData.pageType == 0 ? [{
+				optionData.pageType == 0 ? (optionData.manageStatus == 2 ? [{
+					value: '1',
+					label: '已检查'
+				}] : [{
 					value: '0',
 					label: '待检查'
 				}, {
-					value: '2',
-					label: '检查中'
-				}, {
 					value: '1',
 					label: '已检查'
-				}] : (
+				}]) : (
 					optionData.pageType == 1 ? [{
 						value: '0',
 						label: '待复查'
@@ -177,9 +183,23 @@
 							label: '暂无法整改'
 						}] : []
 					)))
-			this.$set(this, 'curTabTow', optionData.pageType == 0 ? '0' : (optionData.pageType == 1 ? '0' : (optionData
-				.pageType == 2 ? '2' : '')));
-			this.$set(this, 'newData', optionData);
+			if (optionData.pageType == 0) {
+				if (optionData.manageStatus == 2) {
+					this.$set(this, 'curTabTow', '1');
+				}else{
+					this.$set(this, 'curTabTow', 
+					optionData.pageType == 0 ? (optionData.curTabTow == 1 ? '1' : '0') : (
+						optionData.pageType == 1 ? '0' : (
+						optionData.pageType == 2 ? '2' : '')));
+				}
+			} else {
+				this.$set(this, 'curTabTow', 
+				optionData.pageType == 0 ? (optionData.curTabTow == 1 ? '1' : '0') : (
+					optionData.pageType == 1 ? '0' : (
+					optionData.pageType == 2 ? '2' : '')));
+			}
+
+			this.$set(this, 'optionData', optionData);
 			this.$nextTick(() => {
 				this.getList()
 			})
@@ -188,7 +208,13 @@
 
 		},
 		mounted() {
-
+			if (this.optionData.pageType == 0) {
+				if (this.optionData.manageStatus == 2) {
+					this.securityAppCheckSetOptionList(this.optionData, 1)
+				} else {
+					this.securityAppCheckSetOptionList(this.optionData, 0)
+				}
+			}
 		},
 		methods: {
 			//滚动事件
@@ -205,6 +231,7 @@
 			},
 			//顶部tab点击
 			tabClickTow(value) {
+				console.log(this.curTabTow)
 				this.$set(this, 'checkFlag', null);
 				this.$set(this.queryParams, 'page', 1);
 				this.$set(this, 'curTabTow', value);
@@ -238,12 +265,15 @@
 					}
 					if (this.pageType == 0) {
 						//检查
-						obj.manageId = this.newData.manageId
+						obj.manageId = this.optionData.manageId
+						if (this.optionData.manageStatus == 2) {
+							obj.checkType = 1
+						}
 					} else if (this.pageType != 0) {
 						//复查/整改
-						obj.planId = this.newData.checkPlanSetVoList.planId;
-						obj.planSetId = this.newData.checkPlanSetVoList.planSetId;
-						obj.subId = this.newData.subId;
+						obj.planId = this.optionData.checkPlanSetVoList.planId;
+						obj.planSetId = this.optionData.checkPlanSetVoList.planSetId;
+						obj.subId = this.optionData.subId;
 					}
 					this.$set(this, 'propsData', obj);
 					this.$set(this, 'checkItemModuleType', true);
@@ -254,28 +284,138 @@
 					this.itemsClick(item);
 				}
 			},
+			/******调用摄像头******/
+			saoCode() {
+				let self = this;
+				uni.scanCode({
+					onlyFromCamera: true,
+					success: function(res) {
+						let list = res.result.split("?")[1].split("&");
+						let codeData = {};
+						list.forEach((item) => {
+							codeData[item.split("=")[0]] = item.split("=")[1];
+						})
+						if (codeData.code) {
+
+							self.saoList(codeData.subId);
+						} else {
+							uni.showToast({
+								title: '请扫描正确的二维码',
+								icon: "none",
+								mask: true,
+								duration: 2000
+							});
+						}
+					}
+				});
+			},
+			//扫一扫查询数据
+			async saoList(subId) {
+				let obj = {
+					planSetId: this.optionData.checkPlanSetVoList.planSetId,
+					subId: subId,
+				}
+				if (this.pageType == 0) {
+					//检查计划
+					const {
+						data
+					} = await securityAppCheckManageList(obj);
+					if (data.code == 200) {
+						if (data.data.records[0]) {
+							this.securityAppCheckSetOptionListTow(data.data.records[0], 0)
+							//跳转检查项列表页面
+							/* let infoData = data.data.records[0];
+							infoData.pageType = this.tabIndexTow;
+							infoData.checkPlanSetVoList = this.optionData.checkPlanSetVoList;
+							uni.navigateTo({
+								url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' +
+									encodeURIComponent(
+										JSON.stringify(infoData))
+							}); */
+						} else {
+							//未找到数据提示
+							uni.showToast({
+								title: '未找到该实验室与本计划批次关联的数据',
+								icon: "none",
+								mask: true,
+								duration: 2000
+							});
+						}
+					}
+				} else if (this.pageType == 1) {
+					//复查计划
+					obj.planId = this.optionData.checkPlanSetVoList.planId;
+					obj.userId = uni.getStorageSync('userId');
+					const {
+						data
+					} = await securityAppCheckDangerReviewSubList(obj);
+					if (data.code == 200) {
+						if (data.data[0] && data.data[0].stayExamineCheckNum != 0) {
+							//跳转检查项列表页面
+							let infoData = data.data[0];
+							infoData.pageType = this.pageType;
+							infoData.checkPlanSetVoList = this.optionData.checkPlanSetVoList;
+							uni.navigateTo({
+								url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' +
+									encodeURIComponent(
+										JSON.stringify(infoData))
+							});
+						} else {
+							//未找到数据提示
+							uni.showToast({
+								title: '未找到该实验室与本计划批次关联的数据',
+								icon: "none",
+								mask: true,
+								duration: 2000
+							});
+						}
+					}
+				} else if (this.pageType == 2) {
+					//整改计划
+					obj.planId = this.optionData.checkPlanSetVoList.planId;
+					obj.userId = uni.getStorageSync('userId');
+					const {
+						data
+					} = await securityAppCheckDangerGetCheckDangerSubList(obj);
+					if (data.code == 200) {
+						if (data.data[0]) {
+							//跳转检查项列表页面
+							let infoData = data.data[0];
+							infoData.pageType = this.tabIndexTow;
+							infoData.checkPlanSetVoList = this.optionData.checkPlanSetVoList;
+							uni.navigateTo({
+								url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' +
+									encodeURIComponent(
+										JSON.stringify(infoData))
+							});
+						} else {
+							//未找到数据提示
+							uni.showToast({
+								title: '未找到该实验室与本计划批次关联的数据',
+								icon: "none",
+								mask: true,
+								duration: 2000
+							});
+						}
+					}
+				}
+			},
 			//检查项选中
 			itemsClick(row) {
-				let infoData = this.newData;
+				let infoData = this.optionData;
 				infoData.pageType = this.pageType;
+				infoData.checkDraftVo = row.checkDraftVo;
 				infoData.itemsStatus = this.curTabTow;
 				infoData.setOptionId = row.setOptionId;
 				infoData.hazardCheckPro = row.hazardCheckPro;
-				/* infoData.checkCategory = this.newData.checkCategory;
-				infoData.checkPlanSetVoList = this.newData.checkPlanSetVoList; */
+				/* infoData.checkCategory = this.optionData.checkCategory;
+				infoData.checkPlanSetVoList = this.optionData.checkPlanSetVoList; */
 				if (this.pageType == 0 && this.curTabTow == 0) {
 					//待检查
 					uni.redirectTo({
-						url: '/pages_safetyCheck/views/inspectManage/inspectAdd?infoData=' + encodeURIComponent(
-							JSON
-							.stringify(infoData))
-					});
-				}
-				if (this.pageType == 0 && this.curTabTow == 2) {
-					//检查中
-					uni.redirectTo({
-						url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItemsDetail?infoData=' +
-							encodeURIComponent(JSON
+						url: '/pages_safetyCheck/views/inspectManage/conductInspections?infoData=' +
+							encodeURIComponent(
+								JSON
 								.stringify(infoData))
 					});
 				}
@@ -332,8 +472,8 @@
 
 			},
 			hiddenDangerClick(row) {
-				let infoData = this.newData;
-				infoData.hazardCheckPro = row.hazardCheckPro; 
+				let infoData = this.optionData;
+				infoData.hazardCheckPro = row.hazardCheckPro;
 				infoData.pageType = this.pageType;
 				infoData.itemsStatus = this.curTabTow;
 				infoData.hiddenDangerRecordStatus = true; //判断是否跳转隐患列表
@@ -342,15 +482,22 @@
 						encodeURIComponent(JSON.stringify(infoData))
 				});
 			},
+
 			//
 			async getList() {
 				let self = this;
 				let obj = JSON.parse(JSON.stringify(this.queryParams))
 				if (this.pageType == 0) {
 					//检查任务
-					obj.manageId = this.newData.manageId;
-					obj.checkStatus = this.curTabTow;
+					obj.manageId = this.optionData.manageId;
 					obj.checkFlag = this.checkFlag;
+					if (this.optionData.pageType == 0) {
+						if (this.optionData.manageStatus == 2) {
+							obj.checkStatus = 1
+						} else {
+							obj.checkStatus = this.curTabTow;
+						}
+					}
 					const {
 						data
 					} = await securityAppCheckSetOptionList(obj);
@@ -368,12 +515,13 @@
 								this.$set(this, 'getDataType', true);
 							}
 						}
+
 					}
 				} else if (this.pageType == 1) {
 					//复查验证
-					obj.planId = this.newData.checkPlanSetVoList.planId;
-					obj.planSetId = this.newData.checkPlanSetVoList.planSetId;
-					obj.subId = this.newData.subId;
+					obj.planId = this.optionData.checkPlanSetVoList.planId;
+					obj.planSetId = this.optionData.checkPlanSetVoList.planSetId;
+					obj.subId = this.optionData.subId;
 					obj.appReviewStatus = this.curTabTow;
 					obj.pageFlag = true;
 					const {
@@ -396,9 +544,9 @@
 					}
 				} else if (this.pageType == 2) {
 					//隐患整改
-					obj.planId = this.newData.checkPlanSetVoList.planId;
-					obj.planSetId = this.newData.checkPlanSetVoList.planSetId;
-					obj.subId = this.newData.subId;
+					obj.planId = this.optionData.checkPlanSetVoList.planId;
+					obj.planSetId = this.optionData.checkPlanSetVoList.planSetId;
+					obj.subId = this.optionData.subId;
 					obj.rectifyStatus = this.curTabTow;
 					obj.pageFlag = true;
 					const {
@@ -421,43 +569,87 @@
 					}
 				}
 			},
+			//查询当前实验室检查项
+			async securityAppCheckSetOptionList(item, checkStatus) {
+				let self = this;
+				let upData = item;
+				let obj = {
+					page: 1,
+					pageSize: 20,
+					checkStatus: checkStatus,
+					manageId: upData.manageId,
+				}
+				this.inspectRemporaryList = [];
+				const {
+					data
+				} = await securityAppCheckSetOptionList(obj);
+				if (data.code == 200 && checkStatus == 0) { //先查询待检查数据
+					if (data.data.records[0]) {
+						self.inspectRemporary = true;
+						this.inspectRemporaryList = JSON.parse(JSON.stringify(data.data.records))
+					}
+				}
+			},
+			//查询扫码进入的实验室检查项
+			async securityAppCheckSetOptionListTow(item, checkStatus) {
+				let self = this;
+				let upData = item;
+				let obj = {
+					page: 1,
+					pageSize: 20,
+					checkStatus: checkStatus,
+					manageId: upData.manageId,
+				}
+				this.inspectRemporaryList = [];
+				const {
+					data
+				} = await securityAppCheckSetOptionList(obj);
+				if (data.code == 200 && checkStatus == 0) { //先查询待检查数据
+					if (data.data.records[0]) {
+						let infoData = self.optionData;
+						infoData.pageType = 0;
+						infoData.subName = upData.subName;
+						infoData.roomNum = upData.roomNum;
+						infoData.subId = data.data.records[0].subId;
+						infoData.manageId = data.data.records[0].manageId;
+						infoData.setOptionId = data.data.records[0].setOptionId;
+						infoData.hazardCheckPro = data.data.records[0].hazardCheckPro;
+						infoData.checkCategory = data.data.records[0].checkCategory;
+						uni.navigateTo({
+							url: '/pages_safetyCheck/views/inspectManage/conductInspections?infoData=' +
+								encodeURIComponent(
+									JSON
+									.stringify(infoData))
+						});
+					} else {
+						uni.showToast({
+							title: '该实验室暂无检查工作!',
+							icon: "none",
+							mask: true,
+							duration: 2000
+						});
+					}
+				}
+			},
 			//检查完成
 			async submitBtn(status) {
 				if (status == 1) {
 					//开展检查
-
-					let infoData = this.dataList[0];
+					let infoData = this.inspectRemporaryList[0];
 					infoData.pageType = this.pageType;
 					infoData.itemsStatus = this.curTabTow;
-					infoData.checkCategory = this.newData.checkCategory;
-					infoData.checkPlanSetVoList = this.newData.checkPlanSetVoList;
-					infoData.subName = this.newData.subName;
-					infoData.roomNum = this.newData.roomNum;
-					infoData.subRoom = this.newData.subRoom;
+					infoData.checkCategory = this.optionData.checkCategory;
+					infoData.checkPlanSetVoList = this.optionData.checkPlanSetVoList;
+					infoData.subName = this.optionData.subName;
+					infoData.roomNum = this.optionData.roomNum;
+					infoData.subRoom = this.optionData.subRoom;
 					uni.redirectTo({
 						url: '/pages_safetyCheck/views/inspectManage/conductInspections?infoData=' +
 							encodeURIComponent(
 								JSON
 								.stringify(infoData))
 					});
-				} else if (status == 2) {
-					//检查完成
-					let obj = {
-						manageId: this.newData.manageId,
-					}
-					const {
-						data
-					} = await securityAppCheckSetOptionFinishCheck(obj);
-					if (data.code == 200) {
-						let infoData = this.newData;
-						uni.redirectTo({
-							url: '/pages_safetyCheck/views/inspectManage/inspectList?infoData=' +
-								encodeURIComponent(JSON
-									.stringify(infoData))
-						});
-					}
 				}
-
 			},
 
 		}
@@ -508,7 +700,7 @@
 			}
 
 			.tabTitle_tow {
-				width: 520rpx;
+				width: 320rpx;
 				height: 80rpx;
 
 				display flex;
@@ -688,17 +880,17 @@
 
 					>view:nth-of-type(2) {
 						flex: 1;
-						font-size: 24rpx;
+						font-size: 28rpx;
 						color: #3D3D3D;
-						line-height: 34rpx;
+						line-height: 40rpx;
 						text-align: left;
 					}
 				}
 
 				.list-li-b {
-					font-size: 24rpx;
+					font-size: 28rpx;
 					color: #3D3D3D;
-					line-height: 24rpx;
+					line-height: 40rpx;
 					text-align: right;
 
 					>text {
@@ -731,34 +923,35 @@
 			text-align: center;
 		}
 
-		.sub-btn {
+		.subBtn {
 			display: flex;
 			justify-content: center;
 			position: fixed;
-			left: 30rpx;
 			bottom: 30rpx;
+			width: 750rpx;
+			padding: 0 46rpx;
+			box-sizing: border-box;
 
-			>view:nth-of-type(1) {
-				width: 345rpx;
-				height: 100rpx;
-				background: #FF8C00;
-				border-radius: 50rpx 0rpx 0rpx 50rpx;
-				font-size: 30rpx;
-				color: #FFFFFF;
-				line-height: 100rpx;
-				text-align: center;
+			>img {
+				width: 160rpx;
+				height: 160rpx;
 			}
+		}
 
-			>view:nth-of-type(2) {
-				width: 345rpx;
-				height: 100rpx;
-				background: #0183FA;
-				border-radius: 0rpx 50rpx 50rpx 0rpx;
-				font-size: 30rpx;
-				color: #FFFFFF;
-				line-height: 100rpx;
-				text-align: center;
-			}
+		.sub-btn {
+			display: flex;
+			justify-content: center;
+			position: fixed;
+			left: 30rpx;
+			bottom: 30rpx;
+			width: 690rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 50rpx 50rpx 50rpx 50rpx;
+			font-size: 30rpx;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
 		}
 	}
 </style>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 538 - 312
pages_safetyCheck/views/itemsManage/hiddenDangerItemsDetail.vue


+ 126 - 9
pages_safetyCheck/views/itemsManage/hiddenDangerRectification.vue

@@ -2,7 +2,7 @@
 <template>
 	<view class="snapshotDetail">
 		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
-			<view class="tip">整改期限{{optionData.checkPlanSetVoList.checkStartTime}}(逾期未完成整改关闭实验室)</view>
+			<view class="tip">整改期限{{optionData.checkPlanSetVoList.rectifyDeadline}}{{optionData.checkPlanSetVoList.overdueUnrectify?'(逾期未完成整改关闭实验室)':''}}</view>
 			<view class="items" v-if="newData.hazardCheckName!=''">
 				<view class="items-t">
 					<view class="items-t-r">{{newData.hazardCheckCode}} {{newData.hazardCheckName}}</view>
@@ -14,7 +14,7 @@
 			<view class="items-number" v-if="newData.hazardCheckName!=''" @click="hiddenDangerClick()">
 				此检查项在当前实验室累计出现<text>{{hazardCheckNum}}</text>次隐患</view>
 			<view class="list">
-				<view class="list-li" v-if="newData.hazardCheckName!=''" @click="inspectDot()">
+				<!-- <view class="list-li" v-if="newData.hazardCheckName!=''" @click="inspectDot()">
 					<view>检查要点</view>
 					<view>
 						<img v-if="!newData.inspectDot" src="@/pages_safetyCheck/images/icon_06.png">
@@ -22,7 +22,7 @@
 					</view>
 				</view>
 				<view v-if="newData.hazardCheckName!='' && newData.inspectDot" class="hidden-content">{{newData.hazardCheckPoint}}
-				</view>
+				</view> -->
 				<view class="list-li" @click="checkCollapse()">
 					<view>检查隐患</view>
 					<view :id="newData.checkFlag?'fontColor-B':'fontColor-A'">
@@ -37,14 +37,28 @@
 					<view class="photo" @click="lockImg(newData.yhDtoList)">
 						<img v-for="(item,index) in newData.yhDtoList" :src="baseUrl+item.fileUrl">
 					</view>
-					<view class="list-li">
+					<!-- <view class="list-li">
 						<view>姓名:</view>
 						<view>{{newData.checkUserName}}</view>
-					</view>
+					</view> -->
 					<view class="list-li">
 						<view>检查时间</view>
 						<view>{{newData.checkTime}}</view>
 					</view>
+					<view class="voice">
+						<view class="voice_t">
+							<view class="voice_t_t" v-if="!newData.voiceList[0]"><text>语音备注:</text><text></text></view>
+							<view class="voice_t_b" v-if="newData.voiceList[0]">语音备注:({{newData.voiceList.length}})
+							</view>
+						</view>
+						<view class="voice_b" v-if="newData.voiceList[0]"
+							v-for="(voiceItem,voiceIndex) in newData.voiceList" :key="voiceIndex">
+							<view class="voice_b_l" @tap="voicePlay(voiceItem.fileUrl)">
+								<img class="add-button" src="@/pages_safetyCheck/images//icon_yybz_yy.png" />
+								{{voiceItem.fileLength}}″
+							</view>
+						</view>
+					</view>
 				</view>
 				<view v-if="pageType==1 || pageType==2" v-for="(item,index) in newData.checkRectifyVoList" :key="index">
 					<view class="list-li" v-if="item.rectifyTime" @click="rectifyCollapse(item)">
@@ -142,6 +156,7 @@
 </template>
 
 <script>
+	const myaudio = uni.createInnerAudioContext();
 	import {
 		parseTime
 	} from '@/component/public.js'
@@ -193,6 +208,11 @@
 			this.securityAppCheckPhotoGetCheckNumBySub();
 		},
 		methods: {
+			//语音备忘播放
+			async voicePlay(item) {
+				myaudio.src = config.base_url + item;
+				myaudio.play();
+			},
 			//详情
 			async securityAppCheckDangerGetCheckProDetail() {
 				let self=this;
@@ -208,7 +228,7 @@
 				} = await securityAppCheckDangerGetCheckProDetail(obj);
 				if (data.code == 200) {
 					uni.setNavigationBarTitle({
-						title: data.data.subName + '(' + data.data.roomNum + ')'
+						title: data.data.subName+'(' + data.data.roomNum + ')'
 					})
 					data.data.checkCollapse=false;
 					data.data.inspectDot=false;
@@ -240,6 +260,7 @@
 						})
 					}
 					this.$set(this, 'newData', data.data);
+					this.$set(this.newData, 'voiceList', data.data.voiceList ? data.data.voiceList : []);
 
 				}
 			},
@@ -343,7 +364,8 @@
 			},
 			/******图片上传******/
 			selectImage() {
-				let self = this;
+				let self=this;
+				let photoMaxNun = 0;
 				if (this.form.imgDtoList.length > 5) {
 					uni.showToast({
 						title: '最多上传6张图片',
@@ -353,8 +375,9 @@
 					});
 					return
 				}
+				photoMaxNun = 6 - this.form.imgDtoList.length;
 				wx.chooseImage({
-					count: 6,
+					count: photoMaxNun,
 					sizeType: ["original", "compressed"],
 					sourceType: ["album", "camera"],
 					success: function(res) {
@@ -857,7 +880,101 @@
 		}
 
 	}
-
+	/* 语音备注 */
+	.voice {
+		width: 690rpx;
+		min-height: 100rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx 20rpx 20rpx 20rpx;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		overflow: hidden;
+	
+		.voice_t {
+			height: 100rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+	
+			.voice_t_t {
+				width: 100%;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 100rpx;
+			}
+	
+			.voice_t_b {
+				width: 100%;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 100rpx;
+				text-align: left;
+			}
+		}
+	
+		.voice_b {
+			display flex;
+			justify-content flex-start;
+			align-items center;
+			margin-bottom: 20rpx;
+	
+			.voice_b_l {
+				width: 400rpx;
+				height: 40rpx;
+				background: #0183FA;
+				border-radius: 10rpx;
+				display flex;
+				justify-content flex-start;
+				align-items center;
+				font-size: 24rpx;
+				color: #FFFFFF;
+				line-height: 30rpx;
+				text-align: left;
+	
+				>img {
+					width: 20rpx;
+					height: 20rpx;
+					margin-left: 16rpx;
+					margin-right: 20rpx;
+				}
+			}
+	
+			.voice_b_r {
+				width: 28rpx;
+				height: 28rpx;
+				margin-left: 20rpx;
+			}
+		}
+	
+		.voice-btn {
+			width: 150rpx;
+			height: 150rpx;
+			position: fixed;
+			right: 24rpx;
+			bottom: 176rpx;
+	
+			>img {
+				width: 150rpx;
+				height: 150rpx;
+				position: absolute;
+			}
+	
+			>text {
+				font-size: 24rpx;
+				color: #999999;
+				line-height: 30rpx;
+				text-align: center;
+				position: absolute;
+				top: 84rpx;
+				left: 26rpx;
+			}
+		}
+	}
+	
 	.sub-btn {
 		display: flex;
 		justify-content: center;

+ 19 - 9
pages_safetyCheck/views/planDetail.vue

@@ -5,7 +5,8 @@
 			<view class="title">
 				<view class="title-t">{{newData.planTitle}}</view>
 				<view class="title-b">
-					<view v-if="newData.checkCategory">{{newData.checkCategory==1?'校院巡查':(newData.checkCategory==2?'学院自查':'')}}
+					<view v-if="newData.checkCategory">
+						{{newData.checkCategory==1?'校院巡查':(newData.checkCategory==2?'学院自查':'')}}
 					</view>
 					<view v-if="newData.checkTypeName">{{newData.checkTypeName}}</view>
 					<view v-if="newData.crossCheck==1">交叉互检</view>
@@ -99,8 +100,9 @@
 			attachmentClick(row) {
 				let infoData = row;
 				uni.navigateTo({
-					url: '/pages_safetyCheck/views/materialAttachments?infoData=' + encodeURIComponent(JSON.stringify(
-						infoData))
+					url: '/pages_safetyCheck/views/materialAttachments?infoData=' + encodeURIComponent(JSON
+						.stringify(
+							infoData))
 				});
 			},
 			async securityAppCheckPlanFindCheckPlan() {
@@ -128,12 +130,13 @@
 		overflow: hidden;
 
 		.info-max-box {
-			padding:0 30rpx;
+			padding: 0 30rpx;
 			overflow-y: scroll;
+
 			.title {
 				width: 689rpx;
 				background: #FFFFFF;
-				border-radius:20rpx;
+				border-radius: 20rpx;
 				padding: 20rpx 30rpx;
 				box-sizing: border-box;
 
@@ -169,9 +172,11 @@
 				border-radius: 20rpx 20rpx 20rpx 20rpx;
 				margin-top: 20rpx;
 				overflow: hidden;
-				.content-li:nth-child(1){
-					border-top:none;
+
+				.content-li:nth-child(1) {
+					border-top: none;
 				}
+
 				.content-li {
 					height: 80rpx;
 					border-top: 1rpx solid #E0E0E0;
@@ -185,6 +190,7 @@
 						color: #333333;
 						line-height: 80rpx;
 						text-align: left;
+						width: 200rpx;
 					}
 
 					>view:nth-of-type(2) {
@@ -192,13 +198,16 @@
 						color: #666666;
 						line-height: 80rpx;
 						text-align: right;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
 					}
 				}
 
 				.content-li-tow {
 					padding: 0 30rpx;
 					box-sizing: border-box;
-					margin-bottom:20rpx;
+					margin-bottom: 20rpx;
 
 					>view:nth-of-type(1) {
 						font-size: 30rpx;
@@ -208,6 +217,7 @@
 					}
 
 					>view:nth-of-type(2) {
+						word-break: break-all;
 						padding: 20rpx;
 						box-sizing: border-box;
 						width: 630rpx;
@@ -340,4 +350,4 @@
 			}
 		}
 	}
-</style>
+</style>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 95 - 30
pages_safetyCheck/views/safetyCheck.vue


+ 417 - 0
pages_safetyCheck/views/scanCodeCheck.vue

@@ -0,0 +1,417 @@
+<template>
+	<view class="shade">
+		<view class="null-box" @click="dialogClose()"></view>
+		<view class="shade_n">
+			<view class="title">
+				<view>{{dialogTtile}}</view>
+				<!-- <img src="@/pages_safetyCheck/images/icon_06.png"> -->
+			</view>
+			<view class="batch">
+				<view class="batch-li" @click="batchClick(item)" v-for="(item,index) in batchList">
+					<view class="batch-li-l">
+						<text v-if="dialogStatus==0">{{item.planTitle}}</text>
+						<text v-if="dialogStatus==1">{{item.checkName}}</text>
+					</view>
+					<view class="batch-li-r">
+						<img src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		securityAppCheckPlanAppTitleList,
+		securityAppCheckManageList,
+		securityAppCheckSetOptionList,
+	} from '@/pages_safetyCheck/api/index.js'
+	import {
+		config
+	} from '@/api/request/config.js'
+	export default {
+		name: "iotControl",
+		props: {
+			subjectData: {},
+		},
+		data() {
+			return {
+				baseUrl: config.base_url,
+				newData:{},
+				dialogTtile: '',
+				dialogStatus: 0, //0计划 1批次 2实验室
+				batchList: [],
+				queryParams: {
+					page: 1,
+					pageSize: 100,
+					checkCategory: '', //1校院巡查 2学院自查
+					subId: '',
+				},
+				checkPlanSetVoList: null,
+				form: {},
+				OptionListArr:[],//临时存储检查项
+				planId:'',
+				planTitle:'',
+				checkTypeName:'',
+				crossCheck:'',
+			}
+		},
+		created() {
+			
+		},
+		mounted() {
+			if(uni.getStorageSync('identityData')){
+				if(uni.getStorageSync('identityData').type=='collegeAdmin'){
+					this.queryParams.checkCategory=2
+				}else if(uni.getStorageSync('identityData').type=='schoolAdmin'){
+					this.queryParams.checkCategory=1
+				}
+			}
+			this.$set(this, 'newData', this.subjectData);
+			console.log(this.subjectData)
+			this.$set(this.queryParams, 'subId', this.subjectData.subId);
+			this.securityAppCheckPlanAppTitleList();
+		},
+		methods: {
+			dialogClose() {
+				this.dialogStatus = 0;
+				this.$parent.goPage('securityCheck',false);
+				
+				
+			},
+			//十六进制颜色值和RGB格式转换
+			hexToRgb(hex, opacity = 1) {
+				// 去除#号
+				var color = hex.replace("#", "");
+				// 分割成红、绿、蓝三部分的16进制字符串
+				var red = parseInt(color.substring(0, 2), 16);
+				var green = parseInt(color.substring(2, 4), 16);
+				var blue = parseInt(color.substring(4, 6), 16);
+				return `RGB(${red}, ${green}, ${blue},${opacity})`;
+			},
+			batchClick(row) {
+				let self = this;
+				if (this.dialogStatus == 0) { //计划点击
+					this.$set(this, 'planId', row.planId);
+					this.$set(this, 'planTitle', row.planTitle);
+					this.$set(this, 'checkTypeName', row.checkTypeName);
+					this.$set(this, 'crossCheck', row.crossCheck);
+					if (row.checkPlanSetVoList.length == 1) {
+						//如果只有1个检查批次不弹窗
+						let planSetId = row.checkPlanSetVoList[0].planSetId
+						self.checkPlanSetVoList = row.checkPlanSetVoList[0];
+						self.securityAppCheckManageList(planSetId)
+					} else if (row.checkPlanSetVoList.length == 0) {
+						this.dialogStatus = 0;
+						this.$parent.goPage('securityCheck',false);
+						uni.showToast({
+							title: '该实验室暂无检查计划!',
+							icon: "none",
+							mask: true,
+							duration: 2000
+						});
+						return
+					} else {
+						this.$set(this, 'batchList', row.checkPlanSetVoList);
+						this.dialogStatus = 1;
+						this.dialogTtile = '批次';
+						this.$parent.goPage('securityCheck',true);
+			
+					}
+				} else if (this.dialogStatus == 1) { //批次点击
+					/* this.dialogStatus = 2;
+					this.dialogTtile = '实验室'; */
+					let planSetId = row.planSetId
+					self.checkPlanSetVoList = row;
+					this.securityAppCheckManageList(planSetId)
+				}
+			},
+			//查询计划
+			async securityAppCheckPlanAppTitleList() {
+				this.queryParams.subId = this.newData.subId;
+				this.queryParams.checkStatus = 0;
+				let self = this;
+				const {
+					data
+				} = await securityAppCheckPlanAppTitleList(this.queryParams);
+				if (data.code == 200) {
+					//循环过滤掉当前计划中批次中已经检查完成的
+					data.data.records.forEach(function(item, index) {
+						let list = [];
+						item.checkPlanSetVoList.forEach(function(item2) {
+							if (item2.checkSetProgress != 100) {
+								list.push(item2)
+							}
+						})
+						item.checkPlanSetVoList = list
+					})
+					let list2 = []
+					list2 = data.data.records.filter(function(item) {
+						return item.checkPlanSetVoList.length != 0
+					});
+					data.data.records = list2
+			
+					if (data.data.records.length == 1) { //一个计划
+						this.$set(this, 'planId', data.data.records[0].planId);
+						this.$set(this, 'planTitle', data.data.records[0].planTitle);
+						this.$set(this, 'checkTypeName', data.data.records[0].checkTypeName);
+						this.$set(this, 'crossCheck', data.data.records[0].crossCheck);
+						if (data.data.records[0].checkPlanSetVoList.length == 1) { //1个批次
+							let planSetId = data.data.records[0]
+							if (data.data.records[0].checkPlanSetVoList[0]) { //一个批次
+								let planSetId = data.data.records[0].checkPlanSetVoList[0].planSetId
+								self.checkPlanSetVoList = data.data.records[0].checkPlanSetVoList[0];
+								self.securityAppCheckManageList(planSetId)
+							}
+						} else if (data.data.records[0].checkPlanSetVoList.length == 0) {
+							this.dialogStatus = 0;
+							this.$parent.goPage('securityCheck',false);
+							uni.showToast({
+								title: '该实验室暂无检查计划!',
+								icon: "none",
+								mask: true,
+								duration: 2000
+							});
+							return
+						} else { //多个批次
+							this.dialogStatus = 1;
+							this.batchList = data.data.records[0].checkPlanSetVoList;
+							this.$parent.goPage('securityCheck',true);
+							this.dialogTtile = '批次';
+						}
+			
+					} else if (data.data.records.length==0) {
+						this.dialogStatus = 0;
+						this.$parent.goPage('securityCheck',false);
+						uni.showToast({
+							title: '该实验室暂无检查计划!',
+							icon: "none",
+							mask: true,
+							duration: 2000
+						});
+						return
+					} else { //多个计划
+						this.batchList = data.data.records;
+						this.$parent.goPage('securityCheck',true);
+						this.dialogTtile = '计划标题';
+					}
+				}
+			},
+			//检查任务-在此结果里对比实验室Id判断是否有实验室
+			async securityAppCheckManageList(planSetId) {
+				let self = this;
+				let obj = {
+					page: 1,
+					pageSize: 20,
+					planSetId: planSetId,
+					subId: self.newData.subId,
+				}
+				const {
+					data
+				} = await securityAppCheckManageList(obj);
+				if (data.code == 200) {
+					//this.shadeList = data.data.records;
+					if (data.data.records[0]) {
+						let manageId = data.data.records[0].manageId;
+						self.securityAppCheckSetOptionList(data.data.records[0],0);
+					} else {
+						self.dialogStatus = 0;
+						this.$parent.goPage('securityCheck',false);
+						uni.showToast({
+							title: '该实验室暂无检查计划!',
+							icon: "none",
+							mask: true,
+							duration: 2000
+						});
+						return
+					}
+			
+				}
+			},
+			//查询检查项
+			async securityAppCheckSetOptionList(item,checkStatus) {
+				let self = this;
+				let upData = item;
+				let obj = {
+					page: 1,
+					pageSize: 20,
+					checkStatus: checkStatus,
+					manageId: upData.manageId,
+				}
+				const {
+					data
+				} = await securityAppCheckSetOptionList(obj);
+				if (data.code == 200 && checkStatus==0) {//先查询待检查数据
+					if (data.data.records[0]) {
+						let infoData = {};
+						infoData.pageType = 0;
+						infoData.itemsStatus = 0;
+						infoData.subName = upData.subName;
+						infoData.checkPlanSetVoList = self.checkPlanSetVoList;
+						infoData.planId = self.planId;
+						infoData.planTitle = self.planTitle;
+						infoData.checkTypeName = self.checkTypeName;
+						infoData.crossCheck = self.crossCheck;
+						
+						infoData.roomNum = upData.roomNum;
+						infoData.subId = data.data.records[0].subId;
+						infoData.manageId = data.data.records[0].manageId;
+						infoData.setOptionId = data.data.records[0].setOptionId;
+						infoData.hazardCheckPro = data.data.records[0].hazardCheckPro;
+						infoData.checkCategory = data.data.records[0].checkCategory;
+						uni.navigateTo({
+							url: '/pages_safetyCheck/views/inspectManage/conductInspections?infoData=' +
+								encodeURIComponent(
+									JSON
+									.stringify(infoData))
+						});
+					} else {
+						self.securityAppCheckSetOptionList(item,2);
+						
+					}
+				}else if (data.code == 200 && checkStatus==2) {//查询检查中数据
+					if (data.data.records[0]) {
+						let infoData = {};
+						infoData.pageType = 0;
+						infoData.itemsStatus = 0;
+						infoData.subName = upData.subName;
+						infoData.checkPlanSetVoList = self.checkPlanSetVoList;
+						infoData.planId = self.planId;
+						infoData.planTitle = self.planTitle;
+						infoData.checkTypeName = self.checkTypeName;
+						infoData.crossCheck = self.crossCheck;
+						infoData.roomNum = upData.roomNum;
+						infoData.subId = data.data.records[0].subId;
+						infoData.manageId = data.data.records[0].manageId;
+						infoData.setOptionId = data.data.records[0].setOptionId;
+						infoData.hazardCheckPro = data.data.records[0].hazardCheckPro;
+						infoData.checkCategory = data.data.records[0].checkCategory;
+						uni.navigateTo({
+							url: '/pages_safetyCheck/views/inspectManage/conductInspections?infoData=' +
+								encodeURIComponent(
+									JSON
+									.stringify(infoData))
+						});
+					} else {
+						self.dialogStatus = 0;
+						this.$parent.goPage('securityCheck',false);
+						uni.showToast({
+							title: '该实验室暂无检查工作!',
+							icon: "none",
+							mask: true,
+							duration: 2000
+						});
+						return;
+					}
+				}
+			},
+
+
+		},
+		onHide() {
+		
+		},
+		beforeDestroy() {
+			
+		},
+	}
+</script>
+
+<style lang="stylus" scoped>
+	.shade {
+		height: 100%;
+		width: 100%;
+		position: fixed;
+		display: flex;
+		flex-direction: column;
+		z-index: 200;
+		background: rgba(0, 0, 0, 0.2);
+		top: 0;
+	
+		.null-box {
+			flex: 1;
+		}
+	
+		.shade_n {
+			position: absolute;
+			bottom: 0;
+			left: 0;
+			width: 750rpx;
+			height: 466rpx;
+			background: #FFFFFF;
+			border-radius: 20rpx 20rpx 0rpx 0rpx;
+			overflow-y: auto;
+	
+			.title {
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				padding: 0 50rpx 0 284rpx;
+				box-sizing: border-box;
+				border-bottom: 1rpx solid #E0E0E0;
+	
+				>view {
+					font-size: 30rpx;
+					color: #3D3D3D;
+					line-height: 90rpx;
+					text-align: left;
+				}
+	
+				>img {
+					width: 24rpx;
+					height: 12rpx;
+				}
+			}
+	
+			.batch {
+				padding: 0 30rpx;
+				box-sizing: border-box;
+	
+				.batch-li {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					border-bottom: 1rpx solid #E0E0E0;
+					padding: 20rpx 0 16rpx 0rpx;
+					box-sizing: border-box;
+	
+					.batch-li-l {
+						>text:nth-of-type(1) {
+							display: block;
+							font-size: 30rpx;
+							color: #333333;
+							line-height: 42rpx;
+							text-align: left;
+						}
+	
+						>text:nth-of-type(2) {
+							display: block;
+							font-size: 28rpx;
+							color: #666666;
+							line-height: 39rpx;
+							text-align: left;
+							margin-top: 6rpx;
+						}
+					}
+	
+					.batch-li-r {
+						font-size: 28rpx;
+						color: #666666;
+						line-height: 39rpx;
+						text-align: left;
+						display: flex;
+						justify-content: flex-start;
+						align-items: center;
+	
+						>img {
+							width: 24rpx;
+							height: 24rpx;
+							margin-left: 9rpx;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 672 - 0
pages_safetyCheck/views/snapshotManage/laboratorySearch.vue

@@ -0,0 +1,672 @@
+<!-- 实验室搜索 -->
+<template>
+	<view class="hiddenDangerItemsSearch">
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+			<view class="header">
+				<view class="search">
+					<view class="search-r">
+						<img src="@/pages_safetyCheck/images/icon_aqjc_ss.png" @click="searchBtn">
+						<input type="text" v-model="queryParams.searchValue" placeholder="学院单位、实验室名称或房间号" name="search"
+							@confirm='searchBtn' confirm-type='search' maxlength="50"
+							placeholder-style="color: #333333;font-size:24rpx;">
+						<view v-if="queryParams.searchValue" class="left-icons" @click="delSearchValue()">
+							<uni-icons color="#0183FA" type="clear" size="20"></uni-icons>
+						</view>
+					</view>
+					<view class="cancel" @click="cancelBtn()">取消</view>
+				</view>
+			</view>
+			<view class="list">
+				<view class="list-li" @click="listClick(item)" v-for="(item,index) in dataList">
+					<view class="list-li-t">
+						<img class="list-li-t-l" src="@/pages_safetyCheck/images/icon_aqjc_shiyanshi.png">
+						<view class="list-li-t-c">{{item.subName}}</view>
+						<view class="list-li-t-r" :style="'border:1rpx solid '+item.classLevelColor+';background:'+item.classLevelColorTow+';'">
+							<text
+								:style="'border-right:1rpx solid '+item.classLevelColor+';color:'+item.classLevelColor+';'">{{item.classLevelName?item.classLevelName:''}}</text>
+							<text
+								:style="'color:'+item.classLevelColor+';'">{{item.classTypeNames?item.classTypeNames:''}}</text>
+						</view>
+					</view>
+					<view class="list-li-b">
+						<view class="list-li-b-t">
+							<img src="@/pages/images/icon_sy_zc@1x.png">
+							{{(laboratoryStatus==0 || laboratoryStatus==3)?(item.roomNum?item.roomNum:'-'):(item.subRoom?item.subRoom:'-')}}房间&{{item.buildName}}
+						</view>
+						<view class="list-li-b-b">
+							<view class="list-li-b-b-l">
+								<img src="@/pages/images/icon_sy_zc@1x.png">
+								{{item.deptName}}
+							</view>
+							<view  :class="item.manageStatus==2?'finished':'notFinished'" v-if="laboratoryStatus==0">
+								{{item.manageStatus==2?'已完成':'未完成'}}</view>
+						</view>
+					</view>
+			
+				</view>
+				<view class="get-data-null-p" v-if="getDataType">- 没有更多数据 -</view>
+			</view>
+			<!-- <view class="lab">
+				<view class="lab-info" @click="listClick(item)" v-for="(item,index) in dataList">
+					<img v-if="laboratoryStatus!=0" class="lab-info-l"
+						src="@/pages_safetyCheck/images/icon_aqjc_shiyanshi.png">
+					<view :class="item.manageStatus==2?'finished':'notFinished'" v-if="laboratoryStatus==0">
+						{{item.manageStatus==2?'已完成':'未完成'}}
+					</view>
+					<view class="lab-info-c">
+						<view class="lab-info-c-t">
+							<view class="lab-info-c-t-l">{{item.subName}}</view>
+							<view class="lab-info-c-t-r"
+								:style="'border:1rpx solid '+item.levelColor+';background:'+item.levelColorTow+';'">
+								<text
+									:style="'border-right:1rpx solid '+item.levelColor+';color:'+item.levelColor+';'">{{item.levelName?item.levelName:''}}</text>
+								<text :style="'color:'+item.levelColor+';'">{{item.typeName?item.typeName:''}}</text>
+							</view>
+						</view>
+						<view class="lab-info-c-b">
+							<text
+								v-if="laboratoryStatus==0">{{item.roomNum?item.roomNum:'-'}}房间&{{item.buildName}}</text>
+							<text
+								v-if="laboratoryStatus==1 || laboratoryStatus==2">{{item.subRoom?item.subRoom:'-'}}房间&{{item.buildName}}</text>
+							<text>{{item.deptName}}</text>
+						</view>
+					</view>
+				</view>
+			</view> -->
+			
+
+		</scroll-view>
+	</view>
+
+</template>
+
+<script>
+	import {
+		config
+	} from '@/api/request/config.js'
+
+	import {
+		laboratorySubRelInfoSelectInfoByPage,
+	} from '@/api/commonality/permission.js'
+	import {
+		securityCheckOptionList,
+		laboratorySubRelInfoGetRelList,
+		securityAppCheckManageList,
+		securityAppCheckDangerReviewSubList,
+		securityAppCheckDangerGetCheckDangerSubList,
+	} from '@/pages_safetyCheck/api/index.js'
+	export default {
+		name: "hiddenDangerItemsSearch",
+		components: {
+
+		},
+		data() {
+			return {
+				baseUrl: config.base_url,
+				pageType: 1,
+				checkOptionList: [],
+				dataList: [],
+				searchValue: '',
+				form: {}, //接收上个页面传过来的参数
+				getDataType: false,
+				// 查询参数
+				queryParams: {
+					page: 1,
+					pageSize: 20,
+					searchValue: '',
+					subId: '',
+				},
+				total: 0,
+				laboratoryStatus: 0, // 0检查任务1复查验证2隐患整改 3从随手拍页面进入
+
+			}
+		},
+		onLoad(option) {
+			if (option.form) {
+				this.form = JSON.parse(decodeURIComponent(option.form));
+				console.log(this.form)
+				if (this.form.subId) {
+					this.queryParams.subId = this.form.subId
+				}
+				if (this.form.laboratoryStatus) {
+					this.laboratoryStatus = this.form.laboratoryStatus
+				}
+			}
+		},
+		onShow() {
+
+		},
+		mounted() {
+			this.getList();
+		},
+		methods: {
+			//滚动事件
+			scrollGet() {
+				let self = this;
+				if (self.total / self.queryParams.pageSize <= self.queryParams.page) {
+					this.$set(this, 'getDataType', true);
+				} else {
+					this.queryParams.page += 1;
+					this.$nextTick(() => {
+						this.getList();
+					})
+				}
+			},
+			//实验室搜索
+			searchBtn() {
+				this.dataList = [];
+				this.getList();
+			},
+			//清除输入框内容
+			delSearchValue() {
+				if (this.queryParams.searchValue) {
+					this.$set(this.queryParams, 'searchValue', '');
+					this.$set(this, 'dataList', []);
+					this.getList();
+				}
+			},
+			//级联等级
+			//取消
+			cancelBtn() {
+				let self = this;
+				/* self.queryParams.searchValue = '';
+				self.dataList = [];
+				self.getList(); */
+
+				if (this.form.laboratoryStatus == 0 || this.form.laboratoryStatus == 1 || this.form.laboratoryStatus ==
+					2) {
+					uni.redirectTo({
+						url: '/pages_safetyCheck/views/inspectManage/inspectList?infoData=' +
+							encodeURIComponent(
+								JSON.stringify(this.form))
+					});
+
+				} else if (this.form.laboratoryStatus == 3) { //从计划实验室列表返回
+					uni.redirectTo({
+						url: '/pages_safetyCheck/views/snapshotManage/snapshotList?form=' +
+							encodeURIComponent(JSON.stringify(this.form))
+					});
+
+				}
+
+
+			},
+			//十六进制颜色值和RGB格式转换
+			hexToRgb(hex, opacity = 1) {
+				// 去除#号
+				var color = hex.replace("#", "");
+				// 分割成红、绿、蓝三部分的16进制字符串
+				var red = parseInt(color.substring(0, 2), 16);
+				var green = parseInt(color.substring(2, 4), 16);
+				var blue = parseInt(color.substring(4, 6), 16);
+				return `RGB(${red}, ${green}, ${blue},${opacity})`;
+			},
+			listClick(item) {
+				if (this.form.laboratoryStatus == 0 || this.form.laboratoryStatus == 1 || this.form.laboratoryStatus ==
+					2) {
+					let infoData = {
+						...item,
+						...this.form
+					};
+					uni.redirectTo({
+						url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' +
+							encodeURIComponent(
+								JSON.stringify(infoData))
+					});
+				} else if (this.form.laboratoryStatus == 3) { //从计划实验室列表返回
+					this.$set(this.form, "subId", item.subId)
+					this.$set(this.form, "subName", item.subName)
+					this.$set(this.form, "subRoom", item.roomNum)
+					this.$set(this.form, "deptId", item.deptId)
+					this.$set(this.form, "deptName", item.deptName)
+					this.$set(this.form, "buildId", item.buildId)
+					this.$set(this.form, "buildName", item.buildName)
+					this.$set(this.form, "floorId", item.floorId)
+					this.$set(this.form, "floorName", item.floorName)
+					this.$set(this.form, "typeId", item.typeId)
+					this.$set(this.form, "classTypeNames", item.classTypeNames)
+					this.$set(this.form, "levelId", item.levelId)
+					this.$set(this.form, "classLevelName", item.classLevelName)
+					uni.redirectTo({
+						url: '/pages_safetyCheck/views/snapshotManage/snapshotList?form=' +
+							encodeURIComponent(JSON.stringify(this.form))
+					});
+				}
+
+
+			},
+
+			//搜索房间接口
+			async getList() {
+				let self = this;
+				let obj = JSON.parse(JSON.stringify(this.queryParams));
+				if (this.laboratoryStatus == 0) {
+					obj.planSetId = this.form.checkPlanSetVoList.planSetId;
+					obj.planId = this.form.checkPlanSetVoList.planId;
+					//检查计划
+					const {
+						data
+					} = await securityAppCheckManageList(obj);
+					if (data.code == 200) {
+
+						data.data.records.forEach(function(item) {
+							if (item.classLevelColor) {
+								item.classLevelColorTow = self.hexToRgb(item.classLevelColor, 0.2)
+							}
+
+						})
+						if (self.queryParams.page == 1) {
+							this.dataList = data.data.records;
+							this.total = data.data.total;
+							if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+								this.$set(this, 'getDataType', true);
+							}
+						} else {
+							this.dataList = [...this.dataList, ...data.data.records]
+							this.total = data.data.total;
+							if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+								this.$set(this, 'getDataType', true);
+							}
+						}
+
+					}
+				} else if (this.laboratoryStatus == 1) {
+					obj.planSetId = this.form.checkPlanSetVoList.planSetId;
+					obj.planId = this.form.checkPlanSetVoList.planId;
+					obj.userId = uni.getStorageSync('userId');
+					const {
+						data
+					} = await securityAppCheckDangerReviewSubList(obj);
+					if (data.code == 200) {
+						this.dataList = data.data;
+						this.$set(this, 'getDataType', true);
+					}
+				} else if (this.laboratoryStatus == 2) {
+					obj.planSetId = this.form.checkPlanSetVoList.planSetId;
+					obj.planId = this.form.checkPlanSetVoList.planId;
+					obj.userId = uni.getStorageSync('userId');
+					const {
+						data
+					} = await securityAppCheckDangerGetCheckDangerSubList(obj);
+					if (data.code == 200) {
+						this.dataList = data.data;
+						this.$set(this, 'getDataType', true);
+					}
+				} else if (this.laboratoryStatus == 3) {
+					const {
+						data
+					} = await laboratorySubRelInfoSelectInfoByPage(this.queryParams);
+					if (data.code == 200) {
+						if (data.data.records[0]) {
+							data.data.records.forEach(function(item) {
+								if (item.levelColor) {
+									item.classTypeNames = item.typeName
+									item.classLevelName = item.levelName
+									item.classLevelColor = item.levelColor
+									item.classLevelColorTow = self.hexToRgb(item.levelColor, 0.2)
+								}
+
+							})
+							if (self.queryParams.page == 1) {
+								this.dataList = data.data.records;
+								this.total = data.data.total;
+								if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+									this.$set(this, 'getDataType', true);
+								}
+							} else {
+								this.dataList = [...this.dataList, ...data.data.records]
+								this.total = data.data.total;
+								if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+									this.$set(this, 'getDataType', true);
+								}
+							}
+						} else {
+							uni.showToast({
+								title: '未找到相关实验室',
+								icon: "none",
+								mask: true,
+								duration: 2000
+							});
+						}
+					}
+				}
+
+			},
+
+		}
+	}
+</script>
+
+<style lang="stylus" scoped>
+	.hiddenDangerItemsSearch {
+		height: 100%;
+		display flex;
+		overflow: hidden;
+
+		.info-max-box {}
+
+		#totalColor-A {
+			color: #0183FA;
+			background: rgba(1, 131, 250, 0.2);
+		}
+
+		#totalColor-B {
+			color: #16B531;
+			background: rgba(22, 181, 49, 0.2);
+		}
+
+		#totalColor-C {
+			color: #FF8C00;
+			background: rgba(255, 140, 0, 0.2);
+		}
+
+		.header {
+			width: 100%;
+			position: fixed;
+			top: 0rpx;
+			z-index: 100;
+			background: #fff;
+
+			.search {
+				width: 750rpx;
+				height: 100rpx;
+				background: #FFFFFF;
+				border-radius: 0rpx 0rpx 0rpx 0rpx;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+
+				.search-r {
+					width: 610rpx;
+					height: 60rpx;
+					background: #FFFFFF;
+					border-radius: 50rpx 50rpx 50rpx 50rpx;
+					border: 1rpx solid #E0E0E0;
+					font-size: 24rpx;
+					color: #999999;
+					line-height: 60rpx;
+					text-align: left;
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					padding: 0 20rpx;
+					box-sizing: border-box;
+
+					>img {
+						width: 30rpx;
+						height: 30rpx;
+						margin-right: 20rpx;
+					}
+
+					>input {
+						width: 500rpx;
+					}
+				}
+			}
+
+			.cancel {
+				font-size: 28rpx;
+				color: #0183FA;
+				line-height: 30rpx;
+				text-align: left;
+				margin-left: 18rpx;
+			}
+		}
+
+		.list {
+			width: 750rpx;
+			padding: 0 30rpx;
+			box-sizing: border-box;
+			margin-top: 120rpx;
+		
+			.list-li {
+				width: 690rpx;
+				min-height: 240rpx;
+				background: #FFFFFF;
+				border-radius: 10rpx 10rpx 10rpx 10rpx;
+				padding: 0 30rpx;
+				box-sizing: border-box;
+				margin-top: 20rpx;
+				.list-li-t {
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					height: 90rpx;
+					border-bottom: 2rpx dashed #D8D8D8;
+		
+					.list-li-t-l {
+						width: 40rpx;
+						height: 40rpx;
+						margin-right: 16rpx;
+					}
+		
+					.list-li-t-c {
+						width: 264rpx;
+						font-size: 30rpx;
+						color: #333333;
+						line-height: 30rpx;
+						text-align: left;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
+						margin-right: 24rpx;
+					}
+		
+					.list-li-t-r {
+						display: flex;
+						justify-content: flex-start;
+						border-radius: 10rpx 10rpx 10rpx 10rpx;
+						width: 200rpx;
+						height: 40rpx;
+						margin-left: 10rpx;
+		
+						>text {
+							display: inline-block;
+							flex: 1;
+							text-align: center;
+							font-size: 24rpx;
+							line-height: 40rpx;
+							text-align: center;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+						}
+					}
+				}
+		
+				.list-li-b {
+					overflow: hidden;
+					.list-li-b-t {
+						display: flex;
+						justify-content: flex-start;
+						align-items: center;
+		
+						>img {
+							width: 28rpx;
+							height: 26rpx;
+							margin-right: 16rpx;
+						}
+		
+						font-size: 28rpx;
+						color: #666666;
+						line-height: 30rpx;
+						text-align: left;
+						margin-top: 32rpx;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
+		
+					}
+		
+					.list-li-b-b {
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						margin-top: 20rpx;
+		
+						.list-li-b-b-l {
+							display: flex;
+							justify-content: flex-start;
+							align-items: center;
+		
+							>img {
+								width: 28rpx;
+								height: 26rpx;
+								margin-right: 16rpx;
+							}
+		
+							font-size: 28rpx;
+							color: #666666;
+							line-height: 30rpx;
+							text-align: left;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+						}
+		
+						.finished {
+							width: 110rpx;
+							height: 40rpx;
+							background: rgba(1,131,250,0.2);
+							border-radius: 20rpx 20rpx 20rpx 20rpx;
+							font-size: 24rpx;
+							color: #0183FA;
+							line-height: 40rpx;
+							text-align: center;
+						}
+		
+						.notFinished {
+							width: 110rpx;
+							height: 40rpx;
+							background: #E0E0E0;
+							border-radius: 20rpx 20rpx 20rpx 20rpx;
+							font-size: 24rpx;
+							color: #666666;
+							line-height: 40rpx;
+							text-align: center;
+						}
+					}
+				}
+			}
+		}
+		.get-data-null-p {
+			height: 100rpx;
+			line-height: 100rpx;
+			text-align: center;
+		}
+		.lab {
+			margin-top: 120rpx;
+
+			.lab-info {
+				background: #FFFFFF;
+				display: flex;
+				justify-content: space-between;
+				border: 2rpx dashed #D8D8D8;
+
+
+				.lab-info-l {
+					width: 80rpx;
+					height: 80rpx;
+					background: #0183FA;
+					border-radius: 10rpx 10rpx 10rpx 10rpx;
+					margin-left: 30rpx;
+					margin-top: 30rpx;
+					margin-bottom: 42rpx;
+				}
+
+				.finished {
+					width: 90rpx;
+					height: 90rpx;
+					background: #0183FA;
+					border-radius: 100rpx 100rpx 100rpx 100rpx;
+					font-size: 24rpx;
+					color: #FFFFFF;
+					line-height: 90rpx;
+					text-align: center;
+					margin-left: 30rpx;
+					margin-top: 30rpx;
+					margin-bottom: 32rpx;
+				}
+
+				.notFinished {
+					width: 90rpx;
+					height: 90rpx;
+					background: #E0E0E0;
+					border-radius: 100rpx 100rpx 100rpx 100rpx;
+					font-size: 24rpx;
+					color: #999999;
+					line-height: 90rpx;
+					text-align: center;
+					margin-left: 30rpx;
+					margin-top: 30rpx;
+					margin-bottom: 32rpx;
+				}
+
+				.lab-info-c {
+					margin: 24rpx 30rpx 0 20rpx;
+					flex: 1;
+
+					.lab-info-c-t {
+						display: flex;
+						justify-content: space-between;
+
+						.lab-info-c-t-l {
+							font-size: 30rpx;
+							color: #333333;
+							line-height: 42rpx;
+							text-align: left;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+						}
+
+						.lab-info-c-t-r {
+							display: flex;
+							justify-content: flex-start;
+							border-radius: 10rpx 10rpx 10rpx 10rpx;
+							width: 180rpx;
+							height: 40rpx;
+							margin-left: 10rpx;
+
+							>text {
+								display: inline-block;
+								flex: 1;
+								text-align: center;
+								font-size: 24rpx;
+								line-height: 40rpx;
+								text-align: center;
+							}
+						}
+					}
+
+					.lab-info-c-b {
+						margin-top: 16rpx;
+						display: flex;
+						justify-content: space-between;
+
+						>text {
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+						}
+						>text:nth-of-type(1) {
+							font-size: 30rpx;
+							color: #666666;
+							line-height: 30rpx;
+							text-align: left;
+						}
+
+						>text:nth-of-type(2) {
+							font-size: 30rpx;
+							color: #666666;
+							line-height: 30rpx;
+							text-align: left;
+						}
+					}
+				}
+			}
+
+		}
+
+	}
+</style>

+ 55 - 42
pages_safetyCheck/views/snapshotManage/snapshotDetail.vue

@@ -5,44 +5,39 @@
 			<view class="items" v-if="inspectionItems==0">
 				<view class="items-li">
 					<view>实验室</view>
-					<view>{{newData.subName}}({{newData.subRoom}})</view>
+					<view>{{newData.subName}}({{newData.subRoom?newData.subRoom:''}})</view>
 				</view>
 				<view class="items-li">
 					<view>学院单位</view>
 					<view>{{newData.deptName}}</view>
 				</view>
-				<view class="items-t" v-if="newData.hazardCheckName!=''">
-					<view class="items-t-r">{{newData.hazardCheckCode}} {{newData.hazardCheckName}}</view>
+				<view class="items-li">
+					<view>安全类别</view>
+					<view>{{newData.hazardCheckName}}</view>
 				</view>
-				<view class="items-b" v-if="newData.hazardCheckName!=''">< {{newData.hazardCheckCode2}} {{newData.hazardCheckName2}} < {{newData.hazardCheckCode1}} {{newData.hazardCheckName1}}</view>
 			</view>
-			<view class="items-number" v-if="newData.hazardCheckName!=''">此检查项在当前实验室累计出现<text>{{newData.hazardCheckNum}}</text>次隐患</view>
+
 			<view class="list">
-				<view class="list-li" v-if="newData.hazardCheckName!=''">
-					<view>检查要点</view>
-					<view>
-						<img src="@/pages_safetyCheck/images/icon_06.png">
-					</view>
-				</view>
-				<view v-if="newData.hazardCheckName!=''" class="hidden-content">{{newData.hazardCheckPoint}}
-				</view>
-				<view class="list-li">
+				<view class="list-li" v-if="newData.hazardDescribe">
 					<view>检查隐患</view>
 				</view>
-				<view class="hidden-content">{{newData.hazardDescribe}}
+				<view class="hidden-content" v-if="newData.hazardDescribe">{{newData.hazardDescribe}}
 				</view>
-				<view class="photo">
+				<view class="photo" v-if="newData.yhDtoList[0]">
 					<img v-for="(item,index) in newData.yhDtoList" :src="baseUrl+item.fileUrl">
 				</view>
 				<view class="list-li" @click="rectifyCollapse()">
 					<view>隐患整改</view>
-					<view :id="newData.rectifyStatus==0?'fontColor-A':(newData.rectifyStatus==1?'fontColor-B':'fontColor-C')">
+					<view
+						:id="newData.rectifyStatus==0?'fontColor-A':(newData.rectifyStatus==1?'fontColor-B':'fontColor-C')">
 						{{newData.rectifyStatus==0?'待整改':(newData.rectifyStatus==1?'已整改':'暂无法整改')}}
 						<img src="@/pages_safetyCheck/images/icon_06.png">
 					</view>
 				</view>
 				<view v-if="newData.rectifyCollapse && newData.rectifyTime">
-					<view class="hidden-content" v-if="newData.rectifyStatus==1 || newData.rectifyStatus==2">{{newData.rectifyDescribe}}
+					<view class="hidden-content"
+						v-if="(newData.rectifyStatus==1 || newData.rectifyStatus==2) && newData.rectifyDescribe">
+						{{newData.rectifyDescribe}}
 					</view>
 					<view class="photo" v-if="newData.rectifyStatus==1 || newData.rectifyStatus==2">
 						<img v-for="(item,index) in newData.zgDtoList" :src="baseUrl+item.fileUrl">
@@ -66,7 +61,8 @@
 				</view> -->
 			</view>
 		</scroll-view>
-		<view v-if="newData.rectifyStatus==0 && newData.canRectify" class="sub-btn" @click="rectificationBtn">{{newData.rectifyStatus==0?'整改':'继续整改'}}</view>
+		<view v-if="newData.rectifyStatus==0 && newData.canRectify" class="sub-btn" @click="rectificationBtn">
+			{{newData.rectifyStatus==0?'整改':'继续整改'}}</view>
 	</view>
 
 </template>
@@ -86,10 +82,10 @@
 		data() {
 			return {
 				baseUrl: config.base_url,
-				inspectionItems:0,//0有检查项 1无检查项
+				inspectionItems: 0, //0有检查项 1无检查项
 				newData: {},
-				photoId:'',
-				
+				photoId: '',
+
 			}
 		},
 		onLoad(option) {
@@ -108,21 +104,24 @@
 				let self = this;
 				const {
 					data
-				} = await securityAppCheckPhotoDetail({photoId:this.photoId});
+				} = await securityAppCheckPhotoDetail({
+					photoId: this.photoId
+				});
 				if (data.code == 200) {
-					data.data.rectifyCollapse=true;
+					data.data.rectifyCollapse = true;
 					this.$set(this, 'newData', data.data);
 				}
 			},
-			rectifyCollapse(){
-				this.newData.rectifyCollapse=!this.newData.rectifyCollapse
+			rectifyCollapse() {
+				this.newData.rectifyCollapse = !this.newData.rectifyCollapse
 			},
 			//整改页面
-			rectificationBtn(){
-				let self=this;
-				let infoData=self.newData;
+			rectificationBtn() {
+				let self = this;
+				let infoData = self.newData;
 				uni.redirectTo({
-					url: '/pages_safetyCheck/views/snapshotManage/snapshotRectification?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+					url: '/pages_safetyCheck/views/snapshotManage/snapshotRectification?infoData=' +
+						encodeURIComponent(JSON.stringify(infoData))
 				});
 			},
 		}
@@ -136,6 +135,7 @@
 		box-sizing: border-box;
 		padding-bottom: 160rpx;
 		box-sizing: border-box;
+
 		#bgColor-A {
 			color: #FFD400;
 		}
@@ -147,39 +147,42 @@
 		#bgColor-C {
 			color: #E11608;
 		}
+
 		#fontColor-A {
 			color: #0183FA;
 		}
-		
+
 		#fontColor-B {
 			color: #16B531;
 		}
-		
+
 		#fontColor-C {
-			
+
 			color: #FF8C00;
 		}
+
 		.items {
 			width: 690rpx;
 			min-height: 165rpx;
 			background: #FFFFFF;
 			border-radius: 20rpx 20rpx 20rpx 20rpx;
 			margin: 20rpx 0 0 30rpx;
-			.items-li{
+
+			.items-li {
 				display: flex;
 				justify-content: space-between;
 				align-items: center;
 				padding: 0 30rpx;
 				box-sizing: border-box;
 				border-bottom: 1rpx solid #E0E0E0;
-				
+
 				>view:nth-of-type(1) {
 					font-size: 30rpx;
 					color: #333333;
 					line-height: 80rpx;
 					text-align: left;
 				}
-				
+
 				>view:nth-of-type(2) {
 					font-size: 28rpx;
 					color: #666666;
@@ -190,6 +193,7 @@
 					align-items: center;
 				}
 			}
+
 			.items-t {
 				border-bottom: 1rpx solid #E0E0E0;
 				height: 80rpx;
@@ -283,17 +287,20 @@
 				}
 
 			}
-			.file-li{
+
+			.file-li {
 				display: flex;
 				justify-content: space-between;
 				align-items: center;
 				padding: 0 30rpx;
 				box-sizing: border-box;
+
 				>img:nth-of-type(1) {
 					width: 30rpx;
 					height: 30rpx;
 				}
-				>view{
+
+				>view {
 					flex: 1;
 					font-size: 28rpx;
 					color: #333333;
@@ -302,8 +309,9 @@
 					margin: 0 92rpx 0 16rpx;
 					overflow: hidden;
 					text-overflow: ellipsis;
-					white-space: nowrap;   
+					white-space: nowrap;
 				}
+
 				>img:nth-of-type(2) {
 					width: 30rpx;
 					height: 30rpx;
@@ -338,14 +346,20 @@
 					border-radius: 10rpx 10rpx 10rpx 10rpx;
 					margin: 0 10rpx 10rpx 0;
 				}
+
+				>img:nth-of-type(4) {
+					margin-right: 0;
+				}
 			}
+
 			.list-li:last-of-type {
 				border: none;
 			}
 		}
-		
+
 	}
-	.sub-btn{
+
+	.sub-btn {
 		width: 686rpx;
 		height: 100rpx;
 		background: #0183FA;
@@ -359,5 +373,4 @@
 		line-height: 100rpx;
 		text-align: center;
 	}
-	
 </style>

+ 14 - 5
pages_safetyCheck/views/snapshotManage/snapshotItems.vue

@@ -97,9 +97,10 @@
 		},
 		onLoad(option) {
 			let optionData = JSON.parse(decodeURIComponent(option.infoData));
+			console.log(optionData)
 			uni.setNavigationBarTitle({
-				title: optionData.subName + '(' + optionData.subRoom + ')'
-			})
+				title: optionData.subName + '(' + (optionData.subRoom?optionData.subRoom:'-')+ ')',
+				})
 			this.$set(this, 'pageType', optionData.pageType);
 			this.$set(this, 'tabTextTow',[{
 							value: '0',
@@ -145,6 +146,7 @@
 				this.$nextTick(()=>{
 					this.getList();
 				})
+				console.log(this.curTabTow)
 			},
 			dialogOpen() {
 				this.dialogVisible = true;
@@ -181,9 +183,16 @@
 			itemsClick(row) {
 				let infoData = row;
 				infoData.pageType = this.pageType;
-				uni.navigateTo({
-					url: '/pages_safetyCheck/views/snapshotManage/snapshotRectification?infoData=' + encodeURIComponent(JSON.stringify(infoData))
-				});
+				if(this.curTabTow==0){
+					uni.navigateTo({
+						url: '/pages_safetyCheck/views/snapshotManage/snapshotRectification?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+					});
+				}else if(this.curTabTow==1 || this.curTabTow==2){
+					uni.navigateTo({
+						url: '/pages_safetyCheck/views/snapshotManage/snapshotDetail?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+					});
+				}
+				
 			},
 			hiddenDangerClick(row) {
 				let infoData = row;

+ 200 - 122
pages_safetyCheck/views/snapshotManage/snapshotList.vue

@@ -3,7 +3,8 @@
 	<view class="snapshotList">
 		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
 			<view class="tabTitle" v-if="userType==0">
-				<view :class="tabIndex==index?'tab-A':'tab-B'" v-for="(item,index) in tabList" :key='index' @click="tabClick(index)">
+				<view :class="tabIndex==index?'tab-A':'tab-B'" v-for="(item,index) in tabList" :key='index'
+					@click="tabClick(index)">
 					{{item}}
 				</view>
 			</view>
@@ -13,35 +14,18 @@
 			</view>
 			<view v-if="pageType==0">
 				<view class="list">
-					<view class="list-li srearch">
-						<view>{{form.subName?form.subName:'实验室名称'}}({{form.subRoom?form.subRoom:'房间号'}})</view>
-						<view>
-							<view class="srearch-l" @click="popupClick(1)">
-								<img src="@/pages_safetyCheck/images/icon_aqjc_ss.png">
-							</view>
-							<view class="srearch-r" @click="saoCode()">
-								<img src="@/pages_safetyCheck/images/icon_aqjc_sm.png">
-							</view>
-						</view>
+					<view class="list-li srearch" @click="laboratoryClick()">
+						<view class="srearch-l">{{form.subName?form.subName:'实验室名称'}}</view>
+						<img class="srearch-r" src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
 					</view>
-					<view class="list-li">
-						<view>学院单位名称</view>
-						<view>{{form.deptName}}</view>
-					</view>
-					<view class="list-li">
-						<view>检查项目</view>
-						<view @click="inspectionItemsClick()">
-							{{form.hazardCheckCode?form.hazardCheckCode:''}}{{form.hazardCheckName?form.hazardCheckName:'模糊搜索检查项'}}
-							<img src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
-						</view>
+					<view class="list-li" style="margin-bottom: 20rpx;border:none;">
+						<view>{{form.subRoom?form.subRoom:''}}房间&{{form.buildName?form.buildName:'楼栋'}}&{{form.deptName?form.deptName:'学院单位'}}</view>
 					</view>
 					<view class="list-li">
-						<view>隐患描述</view>
+						<view>现场照片</view>
 						<view></view>
 					</view>
-					<textarea class="describe" type="text" v-model="form.hazardDescribe" maxlength="200"
-						placeholder="请填写隐患描述" placeholder-style="font-size:24rpx;color:#999;"></textarea>
-					<view class="check-for-img-max-box">
+					<view class="check-for-img-max-box" v-if="form.imgDtoList[0]">
 						<view class="left-title-p"></view>
 						<view class="right-img-box">
 							<view class="img-box" v-for="(imgUrl,imgIndex) in form.imgDtoList" :key="imgIndex">
@@ -49,19 +33,42 @@
 								<img class="position-img" src="@/pages_safetyCheck/images/icon_ssp_closure.png"
 									@click="delImg(imgIndex)">
 							</view>
-							<img class="add-button" src="@/pages_safetyCheck/images/img_ssp_pz@1x.png"
-								@click="selectImage()" v-if="form.imgDtoList.length<5">
+							<!-- 	<img class="add-button" src="@/pages_safetyCheck/images/img_ssp_pz@1x.png"
+								@click="selectImage()" v-if="form.imgDtoList.length<5"> -->
 						</view>
 					</view>
+					<picker @change="bindPickerChange" :value="pickerIndex" :range="pickerList" range-key="name">
+						<view class="list-li">
+							<view>安全类别</view>
+							<view style="color: #0183FA;">
+								{{pickerList[pickerIndex].name}}
+								<img src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
+							</view>
+						</view>
+					</picker>
+
+					<view class="list-li">
+						<view>隐患描述</view>
+						<view></view>
+					</view>
+					<view class="describe">
+						<textarea class="describe-n" type="text" v-model="form.hazardDescribe" maxlength="200"
+							placeholder="请填写隐患描述" placeholder-style="font-size:24rpx;color:#999;"></textarea>
+					</view>
+				</view>
+				<view class="subBtn">
+					<img class="subBtn-l" @click="saoCode()" src="@/pages_safetyCheck/images/icon_aqjc_saoma.png"/>
+					<img class="subBtn-c" @click="selectImage()" src="@/pages_safetyCheck/images/icon_aqjc_paizhao.png"/>
+					<img class="subBtn-r" @click="submitForm" src="@/pages_safetyCheck/images/icon_aqjc_tijiao.png"/>
 				</view>
-				<view class="subBtn" @click="submitForm">提交</view>
 			</view>
 			<!-- 上报记录 -->
 			<view class="escalation" v-if="pageType==1">
 				<view class="escalation-li" @click="recordClick(item)" v-for="(item,index) in dataList">
 					<view class="escalation-li-t">
-						<view>{{item.subName}} ({{item.subRoom}})</view>
-						<view :id="item.rectifyStatus==0?'color-A':(item.rectifyStatus==1?'color-B':(item.rectifyStatus==2?'color-C':''))">
+						<view>{{item.subName}} ({{item.subRoom?item.subRoom:'-'}})</view>
+						<view
+							:id="item.rectifyStatus==0?'color-A':(item.rectifyStatus==1?'color-B':(item.rectifyStatus==2?'color-C':''))">
 							{{item.rectifyStatus==0?'待整改':(item.rectifyStatus==1?'已整改':(item.rectifyStatus==2?'暂无法整改':''))}}
 							<img src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
 						</view>
@@ -83,7 +90,8 @@
 					</view>
 				</view>
 			</view>
-			<view class="get-data-null-p" v-if="getDataType">- 没有更多数据 -</view>
+			<!-- <view class="get-data-null-p" v-if="getDataType">- 没有更多数据 -</view> -->
+
 		</scroll-view>
 		<view class="popup-max-box" v-if="popupType">
 			<view class="popup-null" @click="popupClick(2)"></view>
@@ -108,12 +116,13 @@
 	import {
 		config
 	} from '@/api/request/config.js'
-	import {} from '@/pages/api/index.js'
+	import {laboratoryAppletGetSubDetailInfo} from '@/pages/api/index.js'
 	import {
 		laboratorySubRelInfoGetRelList,
 		securityAppCheckPhotoMyAdd,
 		securityAppCheckPhotoMyList,
 		securityAppCheckPhotoRectifyList,
+		securityCheckOptionList,
 	} from '@/pages_safetyCheck/api/index.js'
 	export default {
 		name: "snapshotList",
@@ -147,20 +156,25 @@
 					pageSize: 20,
 				},
 				total: 0,
-				dataList:[],
+				dataList: [],
+				pickerIndex: 5,
+				pickerList: [],
+				photoMaxNun:0,
 			}
 		},
 		onLoad(option) {
 
 			if (option.form) {
 				this.form = JSON.parse(decodeURIComponent(option.form));
+				this.$set(this.form, "rectifyDescribe", '')
+				this.$set(this.form, "imgDtoList", [])
 			}
 		},
 		onShow() {
 
 		},
 		mounted() {
-
+			this.treeselect();
 		},
 		methods: {
 			//滚动事件
@@ -171,9 +185,9 @@
 				} else {
 					this.queryParams.page += 1;
 					this.$nextTick(() => {
-						if(this.pageType==1){
+						if (this.pageType == 1) {
 							this.getList();
-						}else if(this.pageType==2){
+						} else if (this.pageType == 2) {
 							this.getListTow();
 						}
 					})
@@ -215,65 +229,107 @@
 					}
 				}
 			},
+			//实验室
+			laboratoryClick(){
+				this.form.subId='';
+				this.form.laboratoryStatus=3// 标识是从那个页面进入的实验室搜索页面
+				uni.navigateTo({
+					url: '/pages_safetyCheck/views/snapshotManage/laboratorySearch?form=' + encodeURIComponent(
+						JSON.stringify(this.form))
+				});
+			},
 			//上报记录跳转详情
-			recordClick(row){
-				let infoData=row;
+			recordClick(row) {
+				let infoData = row;
 				uni.navigateTo({
-					url: '/pages_safetyCheck/views/snapshotManage/snapshotDetail?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+					url: '/pages_safetyCheck/views/snapshotManage/snapshotDetail?infoData=' + encodeURIComponent(
+						JSON.stringify(infoData))
 				});
 			},
 			//隐患整改跳转详情
-			hiddenClick(row){
-				let infoData=row;
-				infoData.pageType=2;
+			hiddenClick(row) {
+				let infoData = row;
+				infoData.pageType = 2;
 				uni.navigateTo({
-					url: '/pages_safetyCheck/views/snapshotManage/snapshotItems?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+					url: '/pages_safetyCheck/views/snapshotManage/snapshotItems?infoData=' + encodeURIComponent(
+						JSON.stringify(infoData))
+				});
+			},
+			//安全类别
+			bindPickerChange(data) {
+				this.pickerIndex = data.detail.value;
+				this.form.hazardCheckName = this.pickerList[data.detail.value].name
+				this.form.hazardCheckCode = this.pickerList[data.detail.value].code
+				this.form.hazardCheckId = this.pickerList[data.detail.value].id
+			},
+			//隐患项
+			async treeselect() {
+				let self = this;
+				const {
+					data
+				} = await securityCheckOptionList({
+					searchValue: this.searchValue
 				});
+				if (data.code == 200) {
+					let list = [];
+					data.data.forEach(function(item,index) {
+						if(index==5){
+							console.log(item)
+							self.form.hazardCheckName = item.name
+							self.form.hazardCheckCode = item.code
+							self.form.hazardCheckId = item.id
+						}
+						list.push(item)
+					})
+					this.pickerList = list;
+				}
 			},
 			tabClick(index) {
 				this.tabIndex = index;
 				this.pageType = index;
-				this.dataList=[];
-				if(index==1){
+				this.dataList = [];
+				if (index == 1) {
 					this.getList();
-				}else if(index==2){
+				} else if (index == 2) {
 					this.getListTow();
 				}
 			},
 			tabClickTow(index) {
 				this.tabIndexTow = index;
 				this.pageType = index;
-				this.dataList=[];
-				if(index==1){
+				this.dataList = [];
+				if (index == 1) {
 					this.getList();
-				}else if(index==2){
+				} else if (index == 2) {
 					this.getListTow();
 				}
 			},
 			/******图片上传******/
 			selectImage() {
 				let self = this;
-				if (this.form.imgDtoList.length > 4) {
+				let photoMaxNun=0;
+				if (this.form.imgDtoList.length > 5) {
 					uni.showToast({
-						title: '最多上传5张图片',
+						title: '最多上传6张图片',
 						icon: "none",
 						mask: true,
 						duration: 2000
 					});
 					return
 				}
+				photoMaxNun=6-this.form.imgDtoList.length;
 				wx.chooseImage({
-					count: 6,
+					count: photoMaxNun,
 					sizeType: ["original", "compressed"],
 					sourceType: ["album", "camera"],
 					success: function(res) {
-						if(res.tempFilePaths[0]){
-							res.tempFilePaths.forEach(function(item,index){
-									self.uploadImg(item);
+						if (res.tempFilePaths[0]) {
+							res.tempFilePaths.forEach(function(item, index) {
+								self.uploadImg(item);
 							})
 						}
-						
-						
+
+
 					}
 				});
 			},
@@ -338,7 +394,7 @@
 					data
 				} = await laboratorySubRelInfoGetRelList({
 					'searchValue': this.form.searchValue,
-					'subId':this.form.subId,
+					'subId': this.form.subId,
 				});
 				if (data.code == 200) {
 					if (data.data[0]) {
@@ -371,12 +427,36 @@
 
 				this.popupType = false;
 			},
+			//实验室详情
+			async laboratoryAppletGetSubDetailInfo(infoId) {
+				const {
+					data
+				} = await laboratoryAppletGetSubDetailInfo({
+					infoId: infoId
+				});
+				if (data.code == 200) {
+					this.$set(this.form, "subId", data.data.subId)
+					this.$set(this.form, "subName", data.data.subName)
+					this.$set(this.form, "subRoom", data.data.roomNum)
+					this.$set(this.form, "deptId", data.data.deptId)
+					this.$set(this.form, "deptName", data.data.deptName)
+					this.$set(this.form, "buildId", data.data.buildId)
+					this.$set(this.form, "buildName", data.data.buildName)
+					this.$set(this.form, "floorId", data.data.floorId)
+					this.$set(this.form, "floorName", data.data.floorName)
+					this.$set(this.form, "typeId", data.data.typeId)
+					this.$set(this.form, "classTypeNames", data.data.classTypeNames)
+					this.$set(this.form, "levelId", data.data.levelId)
+					this.$set(this.form, "classLevelName", data.data.classLevelName)
+				}
+			},
 			/******调用摄像头******/
 			saoCode() {
 				let self = this;
 				uni.scanCode({
 					onlyFromCamera: true,
 					success: function(res) {
+						console.log(res)
 						let list = res.result.split("?")[1].split("&");
 						let codeData = {};
 						list.forEach((item) => {
@@ -384,9 +464,7 @@
 						})
 						console.log('二维码', codeData)
 						if (codeData.code) {
-							self.$set(self.form, "subId", codeData.subId)
-							self.buildBySub();
-							self.popupType = true;
+							self.laboratoryAppletGetSubDetailInfo(codeData.code)
 						} else {
 							uni.showToast({
 								title: '请扫描正确的二维码',
@@ -398,14 +476,7 @@
 					}
 				});
 			},
-			//搜索项跳转
-			inspectionItemsClick() {
-				this.form.pageType=1;//1随手拍检查项
-				uni.navigateTo({
-					url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItemsSearch?form=' + encodeURIComponent(
-						JSON.stringify(this.form))
-				});
-			},
+
 			//上报
 			async submitForm() {
 				let self = this;
@@ -427,7 +498,7 @@
 					});
 					return
 				}
-				if (this.form.imgDtoList.length<=0) {
+				if (this.form.imgDtoList.length <= 0) {
 					uni.showToast({
 						title: '请选择现场照片!',
 						icon: "none",
@@ -446,13 +517,14 @@
 						mask: true,
 						duration: 2000
 					});
-					let infoData={
-						photoId:data.data
+					let infoData = {
+						photoId: data.data
 					};
 					uni.navigateTo({
-						url: '/pages_safetyCheck/views/snapshotManage/snapshotDetail?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+						url: '/pages_safetyCheck/views/snapshotManage/snapshotDetail?infoData=' +
+							encodeURIComponent(JSON.stringify(infoData))
 					});
-					
+
 				}
 			},
 
@@ -546,39 +618,39 @@
 
 
 		.list {
-			width: 690rpx;
+			width: 750rpx;
 			min-height: 765rpx;
-			background: #FFFFFF;
-			border-radius: 20rpx 20rpx 20rpx 20rpx;
-			margin: 20rpx 0 0 30rpx;
+			margin: 20rpx 0 0 0;
 
 			.list-li {
+				height: 100rpx;
 				display: flex;
 				justify-content: space-between;
 				border-bottom: 1rpx solid #E0E0E0;
-				padding: 0 22rpx 0 28rpx;
+				padding: 0 30rpx;
 				box-sizing: border-box;
+				background: #FFFFFF;
 
 				>view:nth-of-type(1) {
 					font-size: 30rpx;
 					color: #333333;
-					line-height: 80rpx;
+					line-height: 100rpx;
 					text-align: left;
 				}
 
 				>view:nth-of-type(2) {
 					font-size: 28rpx;
 					color: #666666;
-					line-height: 80rpx;
+					line-height: 100rpx;
 					text-align: left;
 					display: flex;
 					justify-content: flex-start;
 					align-items: center;
 
 					>img {
-						width: 24rpx;
-						height: 24rpx;
-						margin-left: 8rpx;
+						width: 30rpx;
+						height: 30rpx;
+						margin-left: 16rpx;
 					}
 				}
 
@@ -596,42 +668,46 @@
 			}
 
 			.srearch {
-				.srearch-l {
-					width: 60rpx;
-					height: 60rpx;
-					margin-right: 40rpx;
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
 
-					>img {
-						width: 30rpx;
-						height: 30rpx;
-						margin: 15rpx 0 0 15rpx;
-					}
+				.srearch-l {
+					font-size: 30rpx;
+					color: #333333;
+					line-height: 100rpx;
+					text-align: left;
 				}
 
 				.srearch-r {
-					width: 60rpx;
-					height: 60rpx;
-
-					>img {
-						width: 30rpx;
-						height: 30rpx;
-						margin: 15rpx 0 0 15rpx;
-					}
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 0rpx;
 				}
 			}
 
 			.describe {
-				width: 636rpx;
-				height: 120rpx;
-				border-radius: 10rpx 10rpx 10rpx 10rpx;
-				border: 1rpx solid #E0E0E0;
-				margin: 20rpx 0 0 28rpx;
-				padding: 12rpx 16rpx;
-				box-sizing: border-box;
+				width: 750rpx;
+				background: #fff;
+				overflow: hidden;
+
+				.describe-n {
+					width: 690rpx;
+					min-height: 180rpx;
+					border-radius: 10rpx 10rpx 10rpx 10rpx;
+					border: 1rpx solid #E0E0E0;
+					margin: 40rpx;
+					padding: 22rpx;
+					box-sizing: border-box;
+					background: #F5F5F5;
+				}
 			}
 
 			.check-for-img-max-box {
-				margin: 20px 28rpx;
+				padding: 20px 28rpx;
+				box-sizing: border-box;
+				background: #fff;
+				border-bottom: 1rpx solid #E0E0E0;
 
 				.left-title-p {
 					width: 100%;
@@ -766,18 +842,19 @@
 		}
 
 		.subBtn {
-			width: 690rpx;
-			height: 100rpx;
-			background: #0183FA;
-			border-radius: 50rpx 50rpx 50rpx 50rpx;
-			font-weight: 400;
-			font-size: 30rpx;
-			color: #FFFFFF;
-			line-height: 100rpx;
-			text-align: center;
+			width: 750rpx;
 			position: fixed;
-			left: 30rpx;
-			bottom: 10rpx;
+			bottom: 30rpx;
+			display: flex;
+			justify-content: space-between;
+			padding: 0 50rpx;
+			box-sizing: border-box;
+			z-index: 200;
+
+			>img {
+				width: 130rpx;
+				height: 130rpx;
+			}
 		}
 
 		/* 上报记录 */
@@ -911,15 +988,16 @@
 		}
 
 		#color-C {
-			
+
 			color: #FF8C00;
 		}
+
 		.get-data-null-p {
 			text-align: center;
 			height: 100rpx;
 			line-height: 100rpx;
 			color: #999;
-			padding-bottom:200rpx;
+			padding-bottom: 200rpx;
 		}
 	}
 </style>

+ 37 - 41
pages_safetyCheck/views/snapshotManage/snapshotRectification.vue

@@ -2,24 +2,13 @@
 <template>
 	<view class="snapshotDetail">
 		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
-			<view class="tip">整改期限2024-10-06(逾期未完成整改关闭实验室)</view>
-			<view class="items" v-if="newData.hazardCheckName!=''">
-				<view class="items-t" >
-					<view class="items-t-r">{{newData.hazardCheckCode}} {{newData.hazardCheckName}}</view>
+			<view class="items">
+				<view class="items-li">
+					<view>安全类别</view>
+					<view>{{newData.hazardCheckName}}</view>
 				</view>
-				<view class="items-b" >< {{newData.hazardCheckCode2}}
-					{{newData.hazardCheckName2}} < {{newData.hazardCheckCode1}} {{newData.hazardCheckName1}}</view>
 			</view>
-			<view class="items-number" v-if="newData.hazardCheckName!=''">此检查项在当前实验室累计出现<text>{{newData.hazardCheckNum}}</text>次隐患</view>
 			<view class="list">
-				<view class="list-li" v-if="newData.hazardCheckName!=''">
-					<view>检查要点</view>
-					<view>
-						<img src="@/pages_safetyCheck/images/icon_06.png">
-					</view>
-				</view>
-				<view v-if="newData.hazardCheckName!=''" class="hidden-content">{{newData.hazardCheckPoint}}
-				</view>
 				<view class="list-li">
 					<view>检查隐患</view>
 					<view style="color: #FF8C00;">
@@ -56,7 +45,7 @@
 								@click="delImg(imgIndex)">
 						</view>
 						<img class="add-button" src="@/pages_safetyCheck/images/img_ssp_pz@1x.png"
-							@click="selectImage()" v-if="form.imgDtoList.length<5">
+							@click="selectImage()" v-if="form.imgDtoList.length<6">
 					</view>
 				</view>
 				<!-- <view class="list-li-tow">
@@ -72,7 +61,7 @@
 				</view> -->
 			</view>
 		</scroll-view>
-		<view class="sub-btn" >
+		<view class="sub-btn">
 			<view @click="submitForm(2)">暂无法整改</view>
 			<view @click="submitForm(1)">完成整改</view>
 		</view>
@@ -98,8 +87,8 @@
 				inspectionItems: 0, //0有检查项 1无检查项
 				form: {
 					imgDtoList: [],
-					rectifyProjectName:'',
-					rectifyProjectUrl:'',
+					rectifyProjectName: '',
+					rectifyProjectUrl: '',
 				},
 				newData: {},
 			}
@@ -120,14 +109,14 @@
 			selectFile() {
 				let self = this;
 				wx.chooseMessageFile({
-				  count: 1,
-				  type: 'file',
-				  success (res) {
-				    // tempFilePath可以作为img标签的src属性显示图片
-				    const tempFilePaths = res.tempFiles[0].path
-					self.form.rectifyProjectName=res.tempFiles[0].name
-					self.uploadFile(tempFilePaths);
-				  }
+					count: 1,
+					type: 'file',
+					success(res) {
+						// tempFilePath可以作为img标签的src属性显示图片
+						const tempFilePaths = res.tempFiles[0].path
+						self.form.rectifyProjectName = res.tempFiles[0].name
+						self.uploadFile(tempFilePaths);
+					}
 				})
 			},
 			async uploadFile(tempFilePaths) {
@@ -150,7 +139,7 @@
 						let res = JSON.parse(uploadFileRes.data);
 						console.log(res)
 						if (res.code == 200) {
-							self.form.rectifyProjectUrl=res.data.url;
+							self.form.rectifyProjectUrl = res.data.url;
 						} else {
 							uni.showToast({
 								title: res.msg,
@@ -169,6 +158,7 @@
 			/******图片上传******/
 			selectImage() {
 				let self = this;
+				let photoMaxNun = 0;
 				if (this.form.imgDtoList.length > 5) {
 					uni.showToast({
 						title: '最多上传6张图片',
@@ -178,8 +168,9 @@
 					});
 					return
 				}
+				photoMaxNun = 6 - this.form.imgDtoList.length;
 				wx.chooseImage({
-					count: 6,
+					count: photoMaxNun,
 					sizeType: ["original", "compressed"],
 					sourceType: ["album", "camera"],
 					success: function(res) {
@@ -247,13 +238,13 @@
 					});
 					return
 				} */
-				let obj={
-					photoId:this.newData.photoId,
-					rectifyStatus:status,//1已整改2暂无法整改
-					rectifyDescribe:this.form.rectifyDescribe,
-					imgDtoList:this.form.imgDtoList,
-					rectifyProjectName:this.form.rectifyProjectName,
-					rectifyProjectUrl:this.form.rectifyProjectUrl,
+				let obj = {
+					photoId: this.newData.photoId,
+					rectifyStatus: status, //1已整改2暂无法整改
+					rectifyDescribe: this.form.rectifyDescribe,
+					imgDtoList: this.form.imgDtoList,
+					rectifyProjectName: this.form.rectifyProjectName,
+					rectifyProjectUrl: this.form.rectifyProjectUrl,
 				}
 				const {
 					data
@@ -265,11 +256,12 @@
 						mask: true,
 						duration: 2000
 					});
-					let infoData=this.newData;
+					let infoData = this.newData;
 					uni.redirectTo({
-						url: '/pages_safetyCheck/views/snapshotManage/snapshotDetail?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+						url: '/pages_safetyCheck/views/snapshotManage/snapshotDetail?infoData=' +
+							encodeURIComponent(JSON.stringify(infoData))
 					});
-					
+
 				}
 			},
 		}
@@ -309,7 +301,7 @@
 
 		.items {
 			width: 690rpx;
-			min-height: 165rpx;
+			min-height: 80rpx;
 			background: #FFFFFF;
 			border-radius: 20rpx 20rpx 20rpx 20rpx;
 			margin: 20rpx 0 0 30rpx;
@@ -340,6 +332,10 @@
 				}
 			}
 
+			.items-li:last-of-type {
+				border-bottom: none;
+			}
+
 			.items-t {
 				border-bottom: 1rpx solid #E0E0E0;
 				height: 80rpx;
@@ -575,7 +571,7 @@
 						}
 					}
 
-					.img-box:nth-of-type(3n+3) {
+					.img-box:nth-of-type(4n+4) {
 						margin-right: 0rpx;
 					}