heyang 1 éve
szülő
commit
417eb2bbe7
31 módosított fájl, 3867 hozzáadás és 1022 törlés
  1. 197 17
      api/index.js
  2. 3 3
      api/request/config.js
  3. 148 137
      component/tabBar.vue
  4. BIN
      images/Version3.3.7/icon_hxpg_gly.png
  5. BIN
      images/Version3.3.7/icon_hxpg_hxp.png
  6. BIN
      images/Version3.3.7/icon_hxpgm.png
  7. BIN
      images/Version3.3.7/icon_kcxq_cg.png
  8. BIN
      images/Version3.3.7/icon_kcxq_sb.png
  9. BIN
      images/Version3.3.7/icon_kcxq_ts.png
  10. BIN
      images/icon_kzjc_bfh.png
  11. BIN
      images/icon_kzjc_fh.png
  12. 54 1
      pages.json
  13. 102 212
      pages/login.vue
  14. 304 0
      pages/pages_patrolInspector/chemicalCabinetQRcode.vue
  15. 154 0
      pages/pages_patrolInspector/chemicalCatalogue.vue
  16. 509 0
      pages/pages_patrolInspector/chemicalDetail.vue
  17. 452 0
      pages/pages_patrolInspector/courseQRcode.vue
  18. 243 47
      pages_safetyExamine/dangerManage/dangerDetail.vue
  19. 28 28
      pages_safetyExamine/dangerManage/dangerList.vue
  20. 49 38
      pages_safetyExamine/dangerManage/dangerManage.vue
  21. 232 122
      pages_safetyExamine/examineManage/examineAdd.vue
  22. 635 119
      pages_safetyExamine/examineManage/examineAddTow.vue
  23. 290 51
      pages_safetyExamine/examineManage/examineDetail.vue
  24. 43 43
      pages_safetyExamine/examineManage/examineList.vue
  25. 145 52
      pages_safetyExamine/patrolPlan/patrolPlanAdd.vue
  26. 18 15
      pages_safetyExamine/patrolPlan/patrolPlanAddLab.vue
  27. 35 20
      pages_safetyExamine/patrolPlan/patrolPlanAddMember.vue
  28. 173 73
      pages_safetyExamine/patrolPlan/patrolPlanEdit.vue
  29. 48 40
      pages_safetyExamine/patrolPlan/patrolPlanList.vue
  30. 3 3
      pages_safetyExamine/snapshotManage/snapshotAdd.vue
  31. 2 1
      pages_safetyExamine/snapshotManage/snapshotList.vue

+ 197 - 17
api/index.js

@@ -1151,14 +1151,6 @@ export const getDicts = (dictType) => {
     })
 };
 
-// 获取院系
-export const listDepartments = (data) => {
-    return apiResquestForm({
-        url: '/system/dept/departments/list',
-        method: 'GET',
-    })
-};
-
 //获取报警信息列表
 export const getSafeWarnList = (data) => {
     return apiResquestForm({
@@ -1551,14 +1543,6 @@ export const teacherApply = (data) => {
     })
 };
 
-//根据名称查询实验室
-export const subjectList = (data) => {
-    return apiResquestForm({
-        url: '/laboratory/subject/list/listAdmin',
-        method: 'GET',
-        data: data
-    })
-};
 
 //安全准入提交接口
 export const materialAdd  = (data) => {
@@ -1887,7 +1871,6 @@ export const subjectTriggerModes = (data) => {
 };
 
 
-
 //3.3.3安全检查--------------------------------
 //查询人员身份标识
 export const getGentleIdentifier  = (data) => {
@@ -2060,6 +2043,14 @@ export const checkClapRectify  = (data) => {
         data: {...data}
     })
 };
+//根据名称查询实验室
+export const subjectList = (data) => {
+    return apiResquestForm({
+        url: '/laboratory/subject/list/listAdmin',
+        method: 'GET',
+        data: data
+    })
+};
 
 //开展检查-------------------------------------------
 //开展检查-获取巡查计划管理列表
@@ -2118,6 +2109,14 @@ export const getCheckPlanBySubId = (data) => {
         data: data
     })
 };
+//开展检查-根据实验室id查询该实验室详情
+export const subjectFindSubjectInfo = (data) => {
+    return apiResquestForm({
+        url: '/zd-laboratory/subject/findSubjectInfo',
+        method: 'GET',
+        data: data
+    })
+};
 //开展检查-根据实验室id查询该实验室有关计划
 export const buildBySub = (data) => {
     return apiResquestForm({
@@ -2167,3 +2166,184 @@ export const getInforSign = (data) => {
         method: 'GET',
     })
 };
+//3.3.7手持巡检仪--------------------------------
+//专项检查/巡查计划-检查类型
+export const dangerList  = (data) => {
+    return apiResquest({
+        url: `/system/dict/data/listNotPower?dictType=lab_hazard_type`,
+        method: 'GET',
+        data: data,
+    })
+};
+//专项检查/巡查计划-设备查询
+export const findDeviceList  = (data) => {
+    return apiResquest({
+        url: `/laboratory/hazard/queryHazardList`,
+        method: 'POST',
+        data: {...data}
+    })
+};
+//专项检查/巡查计划-设备确定提交
+export const haveHazardInSub  = (data) => {
+    return apiResquest({
+        url: `/laboratory/hazard/haveHazardInSub`,
+        method: 'POST',
+        data: {...data}
+    })
+};
+//专项检查-根据实验室id查询设备
+export const getHazardListBySub  = (data) => {
+    return apiResquest({
+        url: `/laboratory/hazard/getHazardListBySub`,
+        method: 'GET',
+        data: data,
+    })
+};
+//专项检查-根据实验室id查询设备
+export const getHazardInfoBySubId  = (data) => {
+    return apiResquest({
+        url: `/laboratory/hazard/getHazardInfoBySubId`,
+        method: 'GET',
+        data: data,
+    })
+};
+//专项检查-根据选择的设备id生成检查项
+export const getHazardInfo  = (data) => {
+    return apiResquest({
+        url: `/zd-security/checkManage/getHazardInfo`,
+        method: 'GET',
+        data: data,
+    })
+};
+//专项检查-根据选择的设备id生成检查项
+export const getHazardInfoByJoinIds  = (data) => {
+    return apiResquest({
+        url: `/zd-security/checkManage/getHazardInfoByJoinIds`,
+        method: 'GET',
+        data: data,
+    })
+};
+//专项检查-根据选择的检查项查询当前项出现的次数
+export const countHazardNum  = (data) => {
+    return apiResquest({
+        url: `/zd-security/checkHazard/countHazardNum`,
+        method: 'GET',
+        data: data,
+    })
+};
+
+
+//课程扫码-详情
+export const courseQRcodeDetail  = (data) => {
+    return apiResquest({
+        url: `/exam/securitycourse/app/`+data,
+        method: 'GET',
+    })
+};
+//课程扫码-获取签到人数
+export const courseQRcodeSignCount  = (data) => {
+    return apiResquest({
+        url: `/exam/securitycourse/singList`,
+        method: 'GET',
+        data: data,
+    })
+};
+//课程扫码-是否签到
+export const courseQRcodeIsSign  = (data) => {
+    return apiResquest({
+        url: `/exam/securitycourse/app/singInCheck`,
+        method: 'GET',
+        data: data,
+    })
+};
+//课程扫码-是否计划内签到
+export const courseQRcodeIsPlanSign  = (data) => {
+    return apiResquest({
+        url: `/exam/securitycourse/app/existCheck`,
+        method: 'GET',
+        data: data,
+    })
+};
+//课程扫码-签到
+export const courseQRcodeSign  = (data) => {
+    return apiResquest({
+        url: `/exam/securitycourse/app/singIn`,
+        method: 'GET',
+        data: data,
+    })
+};
+//化学品详情-基本信息
+export const appStockListDetail  = (data) => {
+    return apiResquest({
+        url: `/chemical/hxpStock/appStockList`,
+        method: 'GET',
+        data: data,
+    })
+};
+//化学品详情-使用记录
+export const useRecordByCode  = (data) => {
+    return apiResquest({
+        url: `/chemical/hxpStock/useRecordByCode`,
+        method: 'GET',
+        data: data,
+    })
+};
+//化学品详情-申领记录
+export const applyByCode  = (data) => {
+    return apiResquest({
+        url: `/chemical/hxpStock/applyByCode`,
+        method: 'GET',
+        data: data,
+    })
+};
+//化学品详情-化学品形态
+export const chemical_shape  = (data) => {
+    return apiResquest({
+        url: `/system/dict/data/type/chemical_shape`,
+        method: 'GET',
+        data: data,
+    })
+};
+//化学品柜详情
+export const hxpCabinetApp  = (data) => {
+    return apiResquest({
+        url: `/chemical/hxpCabinet/app/`+data,
+        method: 'GET',
+    })
+};
+
+
+//公共---------------------------------------------------------------------------
+// 获取院系
+export const listDepartments = (data) => {
+    return apiResquestForm({
+        url: '/system/dept/departments/list',
+        method: 'GET',
+    })
+};
+
+//根据学院id查询楼栋
+export const getBuildingList  = (data) => {
+    return apiResquest({
+        url: `/system/dept/`+data+`/building/list`,
+        method: 'GET',
+    })
+};
+
+//查询楼栋/楼层数据  楼栋type:2  楼层type:3 parentId:楼栋ID
+export const buildFloorGetlist  = (data) => {
+    return apiResquestForm({
+        url: `/laboratory/buildFloor/getlist`,
+        method: 'GET',
+        data: data
+    })
+};
+
+//根据楼栋ID查询实验室  buildId:60
+export const buildBySubList  = (data) => {
+    return apiResquestForm({
+        url: `/laboratory/subject/buildBySub/list`,
+        method: 'GET',
+        data: data
+    })
+};

+ 3 - 3
api/request/config.js

@@ -9,12 +9,12 @@ const config = {
 	// base_url: 'https://demo.zjznai.com/xzgd/',
 
     //base_url: 'https://lab.zjznai.com/labNhSystem/',//43服务器高升测试
-	base_url: 'https://lab.zjznai.com/labAppTest/',//43服务器线上
-    // base_url: 'https://lab.zjznai.com/appTest/',//88服务器线上
+	//base_url: 'https://lab.zjznai.com/labAppTest/',//43服务器线上
+     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/api/', //暨大化材
    //  base_url: 'https://lab.zjznai.com/kdwclabSystem/', //矿大文昌地址
    //base_url: 'https://znyj.zjznai.suda.edu.cn/labSystem/', //苏大临时地址
 }

+ 148 - 137
component/tabBar.vue

@@ -1,150 +1,161 @@
 <!-- 底部导航组件 -->
 <template>
-	<view class="tabBar" :style="{'padding-bottom': paddingBottomHeight + 'rpx'}">
-		<!-- 运输 -->
-		<view class="tab-bar-box">
-			<view class="null-box"></view>
-			<view class="tba-bar-min-box" @click="tabBarGoPage(1)">
-				<img src="@/images/Version2.2/btn_sy_xz.png" v-if="currentRoute == 'pages/home'">
-				<img src="@/images/Version2.2/btn_sy_zc.png" v-else>
-				<view :class="currentRoute == 'pages/home'?'primary':''">首页</view>
-			</view>
-			<view class="null-box"></view>
-			<view class="tba-bar-min-box" @click="tabBarGoPage(2)">
-				<img src="@/images/Version2.2/btn_xx_xz.png" v-if="currentRoute == 'pages/information/information'">
-				<img src="@/images/Version2.2/btn_xx_zc.png" v-else>
-				<view class="tip" v-if="totalCount!=0">{{totalCount}}</view>
-				<view :class="currentRoute == 'pages/information/information'?'primary':''">消息</view>
-			</view>
-			<view class="null-box"></view>
-			<view class="tba-bar-min-box" @click="tabBarGoPage(3)">
-				<img src="@/images/Version2.2/btn_wd_xz.png" v-if="currentRoute == 'pages/mine'">
-				<img src="@/images/Version2.2/btn_wd_zc.png" v-else>
-				<view :class="currentRoute == 'pages/mine'?'primary':''">我的</view>
-			</view>
-			<view class="null-box"></view>
-		</view>
-	</view>
+  <view class="tabBar" :style="{'padding-bottom': paddingBottomHeight + 'rpx'}">
+    <!-- 运输 -->
+    <view class="tab-bar-box">
+      <view class="null-box"></view>
+      <view class="tba-bar-min-box" @click="tabBarGoPage(1)">
+        <img src="@/images/Version2.2/btn_sy_xz.png" v-if="currentRoute == 'pages/home'">
+        <img src="@/images/Version2.2/btn_sy_zc.png" v-else>
+        <view :class="currentRoute == 'pages/home'?'primary':''">首页</view>
+      </view>
+      <view class="null-box"></view>
+      <view class="tba-bar-min-box" @click="tabBarGoPage(2)">
+        <img src="@/images/Version2.2/btn_xx_xz.png" v-if="currentRoute == 'pages/information/information'">
+        <img src="@/images/Version2.2/btn_xx_zc.png" v-else>
+        <view class="tip" v-if="totalCount!=0">{{totalCount}}</view>
+        <view :class="currentRoute == 'pages/information/information'?'primary':''">消息</view>
+      </view>
+      <view class="null-box"></view>
+      <view class="tba-bar-min-box" @click="tabBarGoPage(3)">
+        <img src="@/images/Version2.2/btn_wd_xz.png" v-if="currentRoute == 'pages/mine'">
+        <img src="@/images/Version2.2/btn_wd_zc.png" v-else>
+        <view :class="currentRoute == 'pages/mine'?'primary':''">我的</view>
+      </view>
+      <view class="null-box"></view>
+    </view>
+  </view>
 </template>
 
 <script>
- import { infoTotalCount } from '@/api/index.js'
-	export default {
-		data() {
-			return {
-				paddingBottomHeight: 0,  //苹果X以上手机底部适配高度
-				currentRoute:"",
-				userType:"",
-				totalCount:0,
-			}
-		},
-		created() {
-			let that = this;
-			uni.getSystemInfo({
-			    success: function (res) {
-			        let model = ['X', 'XR', 'XS', '11', '12', '13', '14', '15'];
-			        model.forEach(item => {
-			            //适配iphoneX以上的底部,给tabbar一定高度的padding-bottom
-			            if(res.model.indexOf(item) != -1 && res.model.indexOf('iPhone') != -1) {
-			                that.paddingBottomHeight = 40;
-			            }
-			        })
-			    }
-			});
-		},
+import { infoTotalCount } from '@/api/index.js'
+export default {
+  data() {
+    return {
+      paddingBottomHeight: 0,  //苹果X以上手机底部适配高度
+      currentRoute:"",
+      userType:"",
+      totalCount:0,
+    }
+  },
+  created() {
+    let that = this;
+    uni.getSystemInfo({
+      success: function (res) {
+        let model = ['X', 'XR', 'XS', '11', '12', '13', '14', '15'];
+        model.forEach(item => {
+          //适配iphoneX以上的底部,给tabbar一定高度的padding-bottom
+          if(res.model.indexOf(item) != -1 && res.model.indexOf('iPhone') != -1) {
+            that.paddingBottomHeight = 40;
+          }
+        })
+      }
+    });
+  },
 
-		onShow(){
-			this.getTotalList();
-		},
-		mounted(){
+  onShow(){
+    this.getTotalList();
+  },
+  mounted(){
 
-			this.getTotalList();
-			this.totalCount=uni.getStorageSync('totalCount')
-            // 获取当前路由
-            let pages = getCurrentPages();
-            let page = pages[pages.length - 1];
-            this.currentRoute = page.route;
-            // 获取当前角色
-			this.userType = uni.getStorageSync('userType');
-		},
-		methods: {
-			//获取消息总数接口
-			async getTotalList(){
-				const {data} = await infoTotalCount();
-				if(data.code==200){
-					this.totalCount=data.data.totalCount
-				}
+    this.getTotalList();
+    this.totalCount=uni.getStorageSync('totalCount')
+    // 获取当前路由
+    let pages = getCurrentPages();
+    let page = pages[pages.length - 1];
+    this.currentRoute = page.route;
+    // 获取当前角色
+    this.userType = uni.getStorageSync('userType');
+  },
+  methods: {
+    //获取消息总数接口
+    async getTotalList(){
+      const {data} = await infoTotalCount();
+      if(data.code==200){
+        this.totalCount=data.data.totalCount
+      }
 
-			},
-            tabBarGoPage(type){
-                if(type === 1){
-                    if (this.currentRoute !== 'pages/home') {
-                        uni.redirectTo({
-                            url: '/pages/home',
-                        });
-                    }
-				}else if(type === 2){
-                    if (this.currentRoute !== 'pages/information/information') {
-                        uni.redirectTo({
-                            url: '/pages/information/information',
-                        });
-                    }
-                }else if(type === 3){
-                    if (this.currentRoute !== 'pages/mine') {
-                        uni.redirectTo({
-                            url: '/pages/mine',
-                        });
-                    }
-                }
+    },
+    tabBarGoPage(type){
+      if(type === 1){
+        let safetyIdentity=uni.getStorageSync('gentleIdentifier')[0].pageType
+        if(safetyIdentity=='mine'){//安全检查模块判断身份是否有权限
+          uni.showToast({
+            title: '暂无安全检查权限',
+            mask:true,
+            icon:"none",
+            duration: 2000
+          });
+        }else{
+          if (this.currentRoute !== 'pages/home') {
+            uni.redirectTo({
+              url: '/pages/home',
+            });
+          }
+        }
 
-			},
-		}
-	}
+      }else if(type === 2){
+        if (this.currentRoute !== 'pages/information/information') {
+          uni.redirectTo({
+            url: '/pages/information/information',
+          });
+        }
+      }else if(type === 3){
+        if (this.currentRoute !== 'pages/mine') {
+          uni.redirectTo({
+            url: '/pages/mine',
+          });
+        }
+      }
+
+    },
+  }
+}
 </script>
 
 <style lang="stylus" scoped>
-	.tabBar{
-		z-index:9999;
-		width:100%;
-		height:98rpx;
-		background:#ffffff;
-		position fixed
-		bottom:0;
-		left:0;
-		box-shadow: 0 -3rpx 13rpx 0 rgba(0, 0, 0, 0.1);
-		.tab-bar-box{
-			display flex;
-			.null-box{
-				flex:1;
-			}
-			.tba-bar-min-box{
-				width:64rpx;
-				position :relative;
-				img{
-					width:44rpx;
-					height:44rpx;
-					margin:14rpx auto 0;
-				}
-				view{
-					line-height:37rpx;
-					font-size:19rpx;
-					text-align center;
-					color:#666666;
-				}
-				.tip{
-					display inline-block;
-					background :#EF0909;
-					border-radius 50%;
-					position :absolute;
-					font-size 24rpx;
-					line-height 24rpx;
-					color #fff;
-					top :10rpx;
-					left :44rpx;
-					padding:6rpx 10rpx;
-					box-sizing border-box;
-				}
-			}
-		}
-	}
+.tabBar{
+  z-index:9999;
+  width:100%;
+  height:98rpx;
+  background:#ffffff;
+  position fixed
+  bottom:0;
+  left:0;
+  box-shadow: 0 -3rpx 13rpx 0 rgba(0, 0, 0, 0.1);
+  .tab-bar-box{
+    display flex;
+    .null-box{
+      flex:1;
+    }
+    .tba-bar-min-box{
+      width:64rpx;
+      position :relative;
+      img{
+        width:44rpx;
+        height:44rpx;
+        margin:14rpx auto 0;
+      }
+      view{
+        line-height:37rpx;
+        font-size:19rpx;
+        text-align center;
+        color:#666666;
+      }
+      .tip{
+        display inline-block;
+        background :#EF0909;
+        border-radius 50%;
+        position :absolute;
+        font-size 24rpx;
+        line-height 24rpx;
+        color #fff;
+        top :10rpx;
+        left :44rpx;
+        padding:6rpx 10rpx;
+        box-sizing border-box;
+      }
+    }
+  }
+}
 </style>

BIN
images/Version3.3.7/icon_hxpg_gly.png


BIN
images/Version3.3.7/icon_hxpg_hxp.png


BIN
images/Version3.3.7/icon_hxpgm.png


BIN
images/Version3.3.7/icon_kcxq_cg.png


BIN
images/Version3.3.7/icon_kcxq_sb.png


BIN
images/Version3.3.7/icon_kcxq_ts.png


BIN
images/icon_kzjc_bfh.png


BIN
images/icon_kzjc_fh.png


+ 54 - 1
pages.json

@@ -62,6 +62,48 @@
 			}
 		},
 
+		/*手持巡检仪*/
+		{
+			"path": "pages/saoCode/scan",
+			"style": {
+				"navigationBarTitleText": "扫一扫",
+				"transparentTitle": "auto"
+			}
+		},
+		{
+			"path": "pages/pages_patrolInspector/chemicalDetail",
+			"style": {
+				"navigationBarTitleText": "化学品详情",
+				"navigationBarTextStyle": "white", //导航文字颜色
+				"navigationBarBackgroundColor": "#0183FA" //导航背景色
+			}
+		},
+		{
+			"path": "pages/pages_patrolInspector/chemicalCabinetQRcode",
+			"style": {
+				"navigationBarTitleText": "化学品柜详情",
+				"navigationBarTextStyle": "white", //导航文字颜色
+				"navigationBarBackgroundColor": "#0183FA" //导航背景色
+			}
+		},
+		{
+			"path": "pages/pages_patrolInspector/chemicalCatalogue",
+			"style": {
+				"navigationBarTitleText": "化学品柜详情",
+				"navigationBarTextStyle": "white", //导航文字颜色
+				"navigationBarBackgroundColor": "#0183FA" //导航背景色
+			}
+		},
+		{
+			"path": "pages/pages_patrolInspector/courseQRcode",
+			"style": {
+				"navigationBarTitleText": "课程详情",
+				"navigationBarTextStyle": "white", //导航文字颜色
+				"navigationBarBackgroundColor": "#0183FA" //导航背景色
+			}
+		},
+
+
 		{
 			"path": "pages/mine",//我的
 			"style": {
@@ -950,7 +992,6 @@
 			]
 		},
 		{
-
 			/* 安全检查分包 */
 			"root": "pages_safetyExamine",  //分包根路径
 			"name": "safetyExamine", //分包名字可写可不写
@@ -968,6 +1009,12 @@
 					}
 				},
 				{
+					"path": "patrolPlan/patrolPlanAddContent",
+					"style": {
+						"navigationBarTitleText": "选择检查内容"
+					}
+				},
+				{
 					"path": "patrolPlan/patrolPlanAddMember",
 					"style": {
 						"navigationBarTitleText": "选择巡查组"
@@ -1010,6 +1057,12 @@
 					}
 				},
 				{
+					"path": "examineManage/examineAddContent",
+					"style": {
+						"navigationBarTitleText": "开始检查"
+					}
+				},
+				{
 					"path": "examineManage/examineList",
 					"style": {
 						"navigationBarTitleText": "校院巡查管理"

+ 102 - 212
pages/login.vue

@@ -4,42 +4,37 @@
     <!-- <img class="login-max-big" src="@/images/img_bg_dl.png"> -->
     <img class="login-max-big" :src="loginBanner">
     <view class="login-box">
-	  <view class="tabTitle">
-	  	<view class="tabTitle_li" @tap="tabClick(index)"  :key="index" v-for="(item,index) in tabText">
-	  		<view :class="{on:curTab==index}" class="tabTitle_text">{{item}}</view>
-	  	    <view :class="{on:curTab==index}" class="tabTitle_across"></view>
-	  	</view>
-	  </view>
       <view class="input-max-box-one">
         <view class="input-box">
-          <img src="@/images/img_log_in_account.png"/>
+          <img src="@/images/img_log_in_account.png">
           <input type="text" v-model="username" placeholder="请输入账号" maxlength="20">
         </view>
       </view>
       <view class="input-max-box-two">
         <view class="input-box">
-          <img src="@/images/img_log_in_password.png"/>
+          <img src="@/images/img_log_in_password.png">
           <input type="password" v-model="password" placeholder="请输入密码" maxlength="20">
         </view>
       </view>
-      <view class="check-box" @click="checkboxChange">
-        <img v-if="checkedType" src="@/images/icon_13.png"/>
-        <img v-if="!checkedType" src="@/images/icon_12.png"/>
-        <view>记住我</view>
+      <view class="check-max-box">
+        <view class="check-box" @click="checkboxChange">
+          <img v-if="checkedType" src="@/images/icon_13.png">
+          <img v-if="!checkedType" src="@/images/icon_12.png">
+          <view>记住我</view>
+        </view>
+        <view class="check-right-box" @click="nullPasswrod">
+          忘记密码
+        </view>
       </view>
       <view class="button-box" @click="login">登录</view>
-      <view class="supplier" v-if="curTab==1">
-        <view class="supplier_l" @click="handleClick('forget')">忘记密码</view>
-        <view class="supplier_r" @click="handleClick('register')">没有账号,<text>立即注册</text></view>
-      </view>
     </view>
-    <!-- <img class="top-back" src="@/images/img_sys_bg.png"/> -->
+    <!-- <img class="top-back" src="@/images/img_sys_bg.png"> -->
   </view>
 </template>
 
 <script>
 import { config } from '@/api/request/config.js'
-import { login,getLogoInfo,getDemoInfoList,getOpenId,getUrlConfig} from '@/api/index.js'
+import { login,getLogoInfo,getDemoInfoList,getOpenId,getUrlConfig,getGentleIdentifier} from '@/api/index.js'
 import { Encrypt,Decrypt} from '@/utils/secret.js'
 export default {
   data() {
@@ -50,8 +45,9 @@ export default {
       checkedType:false,
       loginBanner:uni.getStorageSync('loginBanner'),
       infoList:[],//模板消息Id
-	  tabText:['师生登录'],
-	  curTab:0,
+      tabText:['师生登录','供应商登录'],
+      curTab:0,
+      pageType:0,
     }
   },
 
@@ -74,11 +70,47 @@ export default {
 
   },
   methods: {
-	  //顶部tab点击
-	  tabClick(index) {
-	  	this.curTab = index;
+    //顶部tab点击
+    tabClick(index) {
+      this.curTab = index;
 
-	  },
+    },
+    //获取用户身份标识"adminGentle": false,   管理员身份 "rectifyGentle": false,   整改身份"applyGentle": false    检查者身份
+    async getGentleIdentifier(){
+      let self = this;
+      const {data} = await getGentleIdentifier();
+      if(data.code==200){
+        uni.setStorageSync('gentleIdentifierData',data.data)
+        let list=[];
+        if(data.data.adminGentle || data.data.collegeGentle){//校级管理员
+          list.push({name:'管理员',pageType:1})
+        }
+        if(data.data.applyGentle ||data.data.myApplyGentle){
+          list.push({name:'检查者',pageType:2})
+        }
+        if(data.data.rectifyGentle){
+          list.push({name:'整改者',pageType:3})
+        }
+        if(!data.data.adminGentle && !data.data.applyGentle && !data.data.myApplyGentle  && !data.data.applyGentle && !data.data.collegeGentle){
+          self.pageType='mine'
+          list.push({name:'暂无权限',pageType:'mine'})
+        }
+        uni.setStorageSync('gentleIdentifier',list)
+        if(uni.getStorageSync('saoCode')){
+          uni.redirectTo({
+            url: '/pages/saoCode/saoCode'
+          });
+        }else if(self.pageType=='mine'){
+          uni.redirectTo({
+            url: '/pages/mine',
+          });
+        }else{
+          uni.redirectTo({
+            url: '/pages/home',
+          });
+        }
+      }
+    },
     //获取openID
     async getOpenId(){
       let _this=this;
@@ -101,31 +133,32 @@ export default {
       const {data} = await getLogoInfo();
       if(data.code == 200){
         this.loginBanner = config.base_url + data.data.loginBanner;
+        uni.setStorageSync('circularLogo',config.base_url + data.data.circularLogo)
         uni.setStorageSync('loginBanner',config.base_url + data.data.loginBanner)
         uni.setStorageSync('homepageBanner',config.base_url + data.data.homepageBanner)
         uni.setStorageSync('videoCover',config.base_url + data.data.videoCover)
       }
     },
-	async getUrlConfig(){
-	  const {data} = await getUrlConfig();
-	  if(data.code == 200){
-	      //文件预览地址
-	      uni.setStorageSync('filePreviewUrl','https://'+data.data.fileExtranetUrl)
-	      //摄像头代理访问地址
-	      uni.setStorageSync('cameraExtranetAgent','https://'+data.data.cameraExtranetAgent)
-	      //摄像头地址ip段
-	      uni.setStorageSync('cameraIntranetAgent',data.data.cameraIntranetAgent)
-	      //摄像头访问地址
-	      uni.setStorageSync('cameraUrl','https://'+data.data.cameraExtranetUrl)
-	      //MQTT地址
-	      uni.setStorageSync('mqttUrl',Decrypt(data.data.mqttExtranetUrl))
-	      //MQTT账号
-	      uni.setStorageSync('mqttUser',Decrypt(data.data.mqttExtranetUser))
-	      //MQTT密码
-	      uni.setStorageSync('mqttPassword',Decrypt(data.data.mqttExtranetPassword))
+    async getUrlConfig(){
+      const {data} = await getUrlConfig();
+      if(data.code == 200){
+        //文件预览地址
+        uni.setStorageSync('filePreviewUrl','https://'+data.data.fileExtranetUrl)
+        //摄像头代理访问地址
+        uni.setStorageSync('cameraExtranetAgent','https://'+data.data.cameraExtranetAgent)
+        //摄像头地址ip段
+        uni.setStorageSync('cameraIntranetAgent',data.data.cameraIntranetAgent)
+        //摄像头访问地址
+        uni.setStorageSync('cameraUrl','https://'+data.data.cameraExtranetUrl)
+        //MQTT地址
+        uni.setStorageSync('mqttUrl',Decrypt(data.data.mqttExtranetUrl))
+        //MQTT账号
+        uni.setStorageSync('mqttUser',Decrypt(data.data.mqttExtranetUser))
+        //MQTT密码
+        uni.setStorageSync('mqttPassword',Decrypt(data.data.mqttExtranetPassword))
 
-	  }
-	},
+      }
+    },
     checkboxChange() {
       this.checkedType = !this.checkedType;
     },
@@ -160,14 +193,11 @@ export default {
         this.getOpenId();//获取openid
         if(data.data.type == "00" ||data.data.type == "11"){//管理端
           uni.setStorageSync('userType',"1");
-          this.getToken()//订阅消息
 
         }else if(data.data.type == 22){//学生端
           uni.setStorageSync('userType',"2");
-          this.getToken()//订阅消息
         }else if(data.data.type == 33){//供应商端
           uni.setStorageSync('userType',"3");
-          this.getToken2()//订阅消息
         }
         if(this.checkedType){
           uni.setStorageSync('userName',this.username)
@@ -176,86 +206,19 @@ export default {
           uni.removeStorageSync('userName')
           uni.removeStorageSync('password')
         }
-        if(uni.getStorageSync('saoCode')){
-          uni.redirectTo({
-            url: '/pages/saoCode/saoCode'
-          });
-        }else if(uni.getStorageSync('mid')){
-          uni.redirectTo({
-            url: '/pages_student/mine/codeSuccess'
-          });
-        }else if(uni.getStorageSync('saoCodeId')){
-          uni.redirectTo({
-            url: '/pages_manage/workbench/laboratory/laboratoryInfo'
-          });
-        }else if(uni.getStorageSync('warningId')){//报警信息详情
-          uni.redirectTo({
-            url: '/pages/earlyWarningManage/earlyWarningDetail?id='+uni.getStorageSync('warningId')
-          });
-        }else{
-          uni.redirectTo({
-            url: '/pages/home',
-          });
-        }
+        //获取身份标识
+        this.getGentleIdentifier();
 
-      }
-    },
-    //订阅列表查询
-    async getInfoListId(){
-      let _this = this;
-      const {data} = await getDemoInfoList(this.getData)
-      if(data.code==200){
-        let _this=this;
-        let res =data.data
-        //_this.getToken(res)
 
-      }
-    },
-    //学生端和管理端订阅消息,出库确认通知,审核结果通知,待审核通知
-    getToken() {
-      let _this = this
-      wx.requestSubscribeMessage({
-        tmplIds:['Vg6iHUEg6hor7RvP37M7oFCoYGreCu11apJqRB2j37w','0gFoOByDYhCOthJW0tgUi3SHTkLMUK11EfIYlS_qJi4','6yzAPx_o9jn_2xhTt7blDcxjYD1x0vUV1JxUsKqpG4k'],//此处的id替换你要发送订阅的模板id,可在小程序后台新建模板中获取
-        success(res) {
-          if(res.errMsg=='requestSubscribeMessage:ok'){
-            uni.showToast({
-              title:'订阅成功!',
-              icon:"none",
-              mask:true,
-              duration: 2000
-            });
-          }
 
-        },
-        fail: function(res) {
-        }
-      })
+      }
     },
-    //供应商端订阅消息,待办事项通知
-    getToken2() {
-      let _this = this
-      wx.requestSubscribeMessage({
-        tmplIds:['2HtEIQ3_PmS0yMd3PHPIIawRqnSP0_He5wrhVKeuqaw'],//此处的id替换你要发送订阅的模板id,可在小程序后台新建模板中获取
-        success(res) {
-          if(res.errMsg=='requestSubscribeMessage:ok'){
-            uni.showToast({
-              title:'订阅成功!',
-              icon:"none",
-              mask:true,
-              duration: 2000
-            });
-          }
-
-        },
-        fail: function(res) {
-        }
-      })
-    }
   },
 
 }
 </script>
 
+
 <style lang="stylus" scoped>
 #login{
   height:100%;
@@ -264,60 +227,19 @@ export default {
   position relative
   .login-max-big{
     width:750rpx;
-    height:1177rpx;
+    height:1102rpx;
     z-index:0;
   }
   .login-box{
-    z-index:3;
+    z-index:1;
     position: absolute
     top:446rpx;
     left:46rpx;
     width:658rpx;
-    height:700rpx;
+    height:655rpx;
     // background #fff
-	/* 切换按钮 */
-	.tabTitle{
-		display flex;
-		width:100%;
-		height: 100rpx;
-		position: absolute;
-		top: 50rpx;
-		justify-content: center;
-		>view:nth-of-type(1){
-			margin-right: 100rpx;
-		}
-		.tabTitle_li{
-			width:168rpx;
-			text-align center;
-			.tabTitle_text{
-				display: inline-block;
-				font-size: 32rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #333333;
-				line-height: 90rpx;
-				&.on{
-					color:#0183FA;
-				}
-			}
-			.tabTitle_across{
-				width: 100rpx;
-				height: 4rpx;
-				background: #0183FA;
-				border-radius: 2rpx;
-				margin-left 30rpx;
-				display none;
-				&.on{
-					display block;
-				}
-			}
-
-		}
-	}
     border-radius:20rpx;
     .input-max-box-one{
-		overflow: hidden;
-		margin-top:68rpx;
       .input-box{
         display flex
         width:600rpx;
@@ -376,20 +298,28 @@ export default {
         margin-left:102rpx;
       }
     }
-    .check-box{
-      margin:30rpx 0 30rpx 104rpx;
-      width:300rpx;
-      height:50rpx;
-      display:flex;
-      img{
-        margin-top:10rpx;
-        width:32rpx;
-        height:32rpx;
-        margin-right:10rpx;
+    .check-max-box{
+      display flex;
+      .check-box{
+        margin:30rpx 0 30rpx 104rpx;
+        width:300rpx;
+        height:50rpx;
+        display:flex;
+        img{
+          margin-top:10rpx;
+          width:32rpx;
+          height:32rpx;
+          margin-right:10rpx;
+        }
+        view{
+          font-size:24rpx;
+          line-height:50rpx;
+        }
       }
-      view{
+      .check-right-box{
         font-size:24rpx;
         line-height:50rpx;
+        margin:30rpx 0 30rpx 30rpx;
       }
     }
     .button-box{
@@ -402,46 +332,6 @@ export default {
       text-align center
       margin:0 auto 0;
     }
-    /* 供应商注册 */
-    .supplier{
-      display: flex;
-      justify-content: space-between;
-      margin:30rpx 40rpx 0;
-      .supplier_l{
-        font-size: 24rpx;
-        font-family: PingFang SC;
-        font-weight: 400;
-        color: #333333;
-        line-height: 24rpx;
-      }
-      .supplier_r{
-        font-size: 24rpx;
-        font-family: PingFang SC;
-        font-weight: 400;
-        color: #333333;
-        line-height: 24rpx;
-        >text{
-          color: #0183FA;
-        }
-      }
-    }
-    /* 供应商切换 */
-    .switch_btn{
-      display: flex;
-      justify-content: center;
-      align-items: center;
-      font-size: 24rpx;
-      font-family: PingFang SC;
-      font-weight: 400;
-      color: #0183FA;
-      line-height: 24rpx;
-      margin-top: 60rpx;
-      >img{
-        width: 24rpx;
-        height: 24rpx;
-        margin-left: 12rpx;
-      }
-    }
   }
   .top-back{
     z-index:2;

+ 304 - 0
pages/pages_patrolInspector/chemicalCabinetQRcode.vue

@@ -0,0 +1,304 @@
+<!-- 化学品柜-扫码 -->
+<template>
+  <view class="course">
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view class="header">
+			<view class="header_l">
+				<img  :src="circularLogo">
+			</view>
+			<view class="header_r">
+				<view class="header_r_t">{{infoData.cabinetName}}</view>
+				<view class="header_r_b">规格:2门</view>
+			</view>
+		</view>
+		<view  class="basics">
+			<view class="basics_li">
+				<view class="basics_li_l">学院:</view>
+				<view class="basics_li_r">{{infoData.deptName}}</view>
+			</view>
+			<view class="basics_li">
+				<view class="basics_li_l">楼栋:</view>
+				<view class="basics_li_r">{{infoData.buildName?infoData.buildName:'-'}}</view>
+			</view>
+			<view class="basics_li" style="border: none;">
+				<view class="basics_li_l">实验室:</view>
+				<view class="basics_li_r">{{infoData.subName?infoData.subName:'-'}}</view>
+			</view>
+		</view>
+		<view class="cabinet_y">
+			<view class="cabinet">
+				<view class="cabinet_t">{{infoData.cabinetName}}({{infoData.chemicalCount}})</view>
+				<view class="cabinet_b" @click="handleClick('door')">
+					<view class="cabinet_b_l">
+						<view class="small_title"><img  src="@/images/Version3.3.7/icon_hxpg_gly.png"><text>管理员:</text></view>
+						<view class="cabinet_b_l_li">{{infoData.adminSafeName}}</view>
+						<view class="small_title"><img  src="@/images/Version3.3.7/icon_hxpg_hxp.png"><text>化学品数量:</text></view>
+						<view class="cabinet_b_l_li">{{infoData.chemicalCount}}个</view>
+					</view>
+					<view class="cabinet_b_r">
+						<img  src="@/images/Version3.3.7/icon_hxpgm.png"><text>{{infoData.cabinetName}}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+	</scroll-view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import {hxpCabinetApp} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		circularLogo:uni.getStorageSync('circularLogo'),
+		baseUrl:config.base_url,
+		pageType:0,
+		form:{
+		},
+		dialogVisible:false,
+		isCourse:false,//是否在当前课程名单中
+		isSucceed:false,//签到成功失败
+		shadeStatus:0,//遮罩层状态 0是否确认签到 1签到成功或失败
+		id:7,//化学品柜id
+		infoData:{},
+	}
+  },
+  onLoad(option) {
+	this.id=option.code;
+  },
+  onShow() {
+	  
+  },
+  mounted(){
+	  this.hxpCabinetApp();
+  },
+  methods: {
+		//滚动事件
+		scrollGet(){},
+	    handleClick(doType){
+		  let self=this;
+		  if(doType=='sign'){//签到遮罩层
+			 this.dialogVisible=true; 
+		  }else if(doType=='signSubmit'){//确认签到
+			  this.shadeStatus=1;
+			  setTimeout(function () {
+			     self.dialogVisible=false; 
+			  }, 3000);
+		  }else if(doType=='door'){//柜门
+			// uni.navigateTo({
+			//     url: '/pages/pages_patrolInspector/chemicalCatalogue?pageType=1'
+			// });
+		  }else if(doType=='cancel'){//取消返回小程序首页
+		  
+		  }
+		  
+	    },
+		//关闭弹窗
+		dialogOutfire() {
+		  this.dialogVisible = !this.dialogVisible
+		},
+		//详情
+		async hxpCabinetApp(){
+			let _this = this;
+			const {data} = await hxpCabinetApp(this.id);
+			if(data.code == 200){
+				this.infoData=data.data;
+			}
+		},
+		//提交
+		async submitForm(){
+			let _this = this;
+			const {data} = await checkClapRectify(_this.form);
+			if(data.code == 200){
+			    uni.showToast({
+			        title: '提交成功',
+			        icon:"none",
+			        mask:true,
+			        duration: 2000
+			    }); 
+				uni.redirectTo({
+					url: '/pages_safetyExamine/snapshotManage/snapshotList?pageType='+this.pageType
+				});
+			   
+			}
+		},
+		
+		
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.course{
+	height:100%;
+	display flex;
+	box-sizing: border-box;
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+	}
+	.header{
+		width: 750rpx;
+		min-height: 275rpx;
+		background: #0096F3;
+		display: flex;
+		justify-content: flex-start;
+		.header_l{
+			width: 150rpx;
+			height: 150rpx;
+			background: #FFFFFF;
+			border-radius: 75rpx;
+			margin:62rpx 40rpx 62rpx 30rpx;
+			>img{
+				width: 150rpx;
+				height: 150rpx;
+			}
+			
+		}
+		.header_r{
+			.header_r_t{
+				font-size: 34rpx;
+				font-family: PingFang SC-Bold, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 48rpx;
+				margin-top: 68rpx;
+			}
+			.header_r_b{
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 42rpx;
+				margin-top: 36rpx;
+				margin-bottom: 20rpx;
+				
+			}
+		}
+	}
+	.basics{
+		width: 750rpx;
+		background: #FFFFFF;
+		padding: 30rpx 30rpx 0rpx;
+		box-sizing: border-box;
+		.basics_li{
+			width: 690rpx;
+			height: auto;
+			border-bottom: 1rpx solid #D8D8D8;
+			padding: 20rpx 0;
+			box-sizing: border-box;
+			display: flex;
+			justify-content: space-between;
+			.basics_li_l{
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 40rpx;
+			}
+			.basics_li_r{
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 40rpx;
+				text-align: right;
+			}
+		}
+		
+	}
+	.cabinet_y{
+		width: 750rpx;
+		height: auto;
+		background: #FFFFFF;
+		padding: 40rpx 125rpx 78rpx;
+		box-sizing: border-box;
+		margin-top: 20rpx;
+		.cabinet{
+			.cabinet_t{
+				width: 500rpx;
+				height: 80rpx;
+				background: #FDAF5C;
+				border-radius: 20rpx 20rpx 0rpx 0rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 80rpx;
+				text-align: center;
+			}
+			.cabinet_b{
+				display: flex;
+				justify-content:flex-start;
+				.cabinet_b_l{
+					width: 250rpx;
+					height: 500rpx;
+					background: #FDAF5C;
+					border-radius: 0rpx 0rpx 0rpx 20rpx;
+					border-right: 1rpx solid #E0E0E0;
+					padding: 0 0 0 26rpx;
+					box-sizing: border-box;
+					border-top: 1rpx solid #E0E0E0;
+					.small_title{
+						display: flex;
+						align-items: center;
+						margin-top:42rpx;
+						>img{
+							width: 30rpx;
+							height: 30rpx;
+							margin-right: 6rpx;
+						}
+						>text{
+							font-size: 28rpx;
+							font-family: PingFang SC-Medium, PingFang SC;
+							font-weight: 400;
+							color: #FFFFFF;
+							line-height: 40rpx;
+						}
+					}
+					.cabinet_b_l_li{
+						font-size: 24rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #FFFFFF;
+						line-height: 34rpx;
+						margin-top: 12rpx;
+						padding-left: 42rpx;
+						box-sizing: border-box;
+					}
+				}
+				.cabinet_b_r{
+					width: 250rpx;
+					height: 500rpx;
+					background: #FDAF5C;
+					border-radius: 0rpx 0rpx 20rpx 0rpx;
+					display: flex;
+					align-items: center;
+					border-top: 1rpx solid #E0E0E0;
+					>img{
+						width: 30rpx;
+						height: 80rpx;
+						margin: 0 20rpx;
+					}
+					>text{
+						font-size: 28rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #FFFFFF;
+						line-height: 40rpx;
+					}
+				}
+			}
+		}
+	}
+}	
+
+</style>

+ 154 - 0
pages/pages_patrolInspector/chemicalCatalogue.vue

@@ -0,0 +1,154 @@
+<!-- 化学品目录 -->
+<template>
+  <view class="examine">
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view class="header">化学品目录清单</view>
+		<view class="list">
+			<view class="list_li" v-for="(item,index) in  dataList" :key="index" @click="handleClick(item,'edit')">
+				<view class="list_li_title">柜门名称</view>
+				<view class="list_li_li">
+					<view class="list_li_li_t">化学品名称</view>
+					<view class="list_li_li_b"><text>数量:</text><text>10</text></view>
+					<view class="list_li_li_b"><text>CAS号:</text><text>123-1234-12</text></view>
+					<view class="list_li_li_b"><text>属性:</text><text>有毒品</text></view>
+				</view>
+			</view>
+		</view>
+		<img class="null-img" v-if="!dataList[0]" src="@/images/null-data-1.png">
+	</scroll-view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import {checkPlanList} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+	  pageType:0,
+      //列表请求参数
+      getData:{
+        pageNum:1,
+        pageSize:20,
+      },
+	  total:0,
+	  dataList:[{}],
+    }
+  },
+  onLoad(option) {
+	  
+		
+  },
+  onShow() {
+      this.getList(); 
+  },
+  mounted(){
+	  
+  },
+  methods: {
+	  //滚动事件
+	  scrollGet(){
+		  let self=this;
+	      if(self.total/self.getData.pageSize<=self.getData.pageNum){
+	          console.log('没有更多数据!')
+	      }else{
+			  setTimeout(function(){
+				  self.getData.pageNum += 1;
+				  self.getList(); 
+			  },1000)
+			 
+		  }
+	  },
+	  async getList(){
+		  let self = this;
+		  const {data} = await checkPlanList(this.getData);
+		  if(data.code==200){
+			  this.dataList=[...this.dataList,...data.data.records]
+			  this.total=data.data.total;
+		  }
+      }
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.examine{
+	height:100%;
+	display flex;
+	.null-img{
+		display block
+		width:276rpx;
+		height:321rpx;
+		margin:100rpx 0 0 274rpx;
+	}
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		padding-bottom:60rpx;
+		box-sizing: border-box;
+	}
+	.header{
+		width: 750rpx;
+		height: 100rpx;
+		background: #FFFFFF;
+		font-size: 36rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #333333;
+		line-height: 100rpx;
+		text-align: center;
+	}
+	/* 切换按钮 */
+	.list{
+		position: relative;
+		.list_li{
+			.list_li_title{
+				font-size: 36rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 100rpx;
+				padding: 0 30rpx;
+				box-sizing: border-box;
+			}
+			.list_li_li{
+				padding: 0 30rpx;
+				box-sizing: border-box;
+				background: #FFFFFF;
+				.list_li_li_t{
+					font-size: 36rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 100rpx;
+					border-bottom:1px dotted #D8D8D8;
+				}
+				.list_li_li_b{
+					display: flex;
+					justify-content: space-between;
+					margin-bottom: 20rpx;
+					>text:nth-of-type(1){
+						font-size: 36rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #666666;
+						line-height: 100rpx;
+					}
+					>text:nth-of-type(2){
+						font-size: 36rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 100rpx;
+					}
+				}
+			}
+		}
+	}
+}
+</style>

+ 509 - 0
pages/pages_patrolInspector/chemicalDetail.vue

@@ -0,0 +1,509 @@
+<!-- 化学品详情-扫码 -->
+<template>
+  <view class="course">
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view class="header">
+			<view class="header_l">
+				<img  :src="circularLogo">
+			</view>
+			<view class="header_r">
+				<view class="header_r_t">{{infoData.chemicalName}}</view>
+				<view class="header_r_b">CAS号:{{infoData.casNum}}</view>
+				<view class="header_r_b2">库存量:{{infoData.outUsages}}{{infoData.chemicalAmountUnit}}<text class="risk" v-if="infoData.hazardLevel==1">危险化学品</text><text class="ordinary" v-if="infoData.hazardLevel==2">普通化学品</text></view>
+			</view>
+		</view>
+		<view class="tabTitle">
+			<view class="tabTitle_li" @tap="tabClick(index)"  :key="index" v-for="(item,index) in tabText">
+				<view :class="{on:curTab==index}" class="tabTitle_text">{{item}}</view>
+			    <view :class="{on:curTab==index}" class="tabTitle_across"></view>
+			</view>
+		</view>
+		<view class="list" v-if="pageType==0">
+			<view class="list_li"><text>编号:</text><text>{{infoData.chemicalNum}}</text></view>
+			<view class="list_li"><text>别名:</text><text>{{infoData.anotherName}}</text></view>
+			<view class="list_li"><text>分类:</text><text>{{infoData.classifyName}}</text></view>
+			<view class="list_li"><text>属性:</text><text>{{infoData.classifyAttribute?infoData.classifyAttribute:'-'}}</text></view>
+			<view class="list_li"><text>形态:</text><text>{{infoData.chemicalShapeName}}</text></view>
+			
+			<view class="list_li"><text>容量规格:</text><text>{{infoData.chemicalAmount}}{{infoData.chemicalAmountUnit}}</text></view>
+			<view class="list_li"><text>库存量:</text><text>{{infoData.outUsages}}{{infoData.chemicalAmountUnit}}</text></view>
+			<view class="list_li"><text>有效期:</text><text>{{infoData.expirationTime}}</text></view>
+			<view class="list_li"><text>学院:</text><text>{{infoData.deptName}}</text></view>
+			<view class="list_li"><text>楼栋:</text><text>{{infoData.buildName}}</text></view>
+			<view class="list_li"><text>实验室:</text><text>{{infoData.subName}}</text></view>
+			<view class="list_li"><text>柜子:</text><text>{{infoData.cabinetName}}</text></view>
+		</view>
+		<viw class="list_tow" v-if="pageType==1 || pageType==2" v-for="(item,index) in dataList">
+			<view class="list_tow_t"><text>{{item.timeStr}}</text><text  v-if="pageType==2">申购人:{{nickName}}</text></view>
+			<view class="list_tow_li" v-for="(item2,index2) in item.data">
+				<view class="list_tow_li_t">
+					<view class="list_tow_li_t_l"></view>
+					<view class="list_tow_li_t_c">{{item2.chemicalName}}</view>
+					<view class="list_tow_li_t_c2" v-if="item2.useStatus==1 || item2.useStatus==2">领用中</view>
+					<view class="list_tow_li_t_r"></view>
+				</view>
+				<view class="list_tow_li_b">
+					<!-- 使用记录 -->
+					<view class="list_tow_li_b_li"><text>CAS号:</text><text>{{item2.casNum?item2.casNum:''}}</text></view>
+					<view class="list_tow_li_b_li" v-if="pageType==1 && item2.useStatus==0"><text>使用量:</text><text>{{item2.usageAmount}}</text></view>
+					<view class="list_tow_li_b_li" v-if="pageType==1"><text>领用人:</text><text>{{item2.nickName}}</text></view>
+					<view class="list_tow_li_b_li" v-if="pageType==1 && item2.useStatus==0"><text>余量:</text><text>{{item2.returnStockNum}}</text></view>
+					<view class="list_tow_li_b_li" v-if="pageType==1 && (item2.useStatus==1 || item2.useStatus==2)"><text>损耗量:</text><text>{{item2.lossAmount}}</text></view>
+					<!-- 申领记录 -->
+					<view class="list_tow_li_b_li" v-if="pageType==2"><text>归属人:</text><text>{{item2.nickName}}</text></view>
+					<view class="list_tow_li_b_li" v-if="pageType==2"><text>净重:</text><text>{{item2.outUsages}}{{item2.chemicalAmountUnit}}</text></view>
+				</view>
+			</view>
+		</viw>
+		<view class="tip" v-if="pageType==1 || pageType==2">仅展示最近三个月的申购记录</view>
+	</scroll-view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import {appStockListDetail,useRecordByCode,applyByCode,chemical_shape} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		circularLogo:uni.getStorageSync('circularLogo'),
+		baseUrl:config.base_url,
+		pageType:0,//0基本信息 1使用记录 2申领记录
+		form:{
+		},
+		tabText:['基本信息','使用记录','申领记录'],
+		curTab:0,
+		infoData:{},
+		tagCode:'23072006367',
+		dataList:[],
+		nickName:'',
+	}
+  },
+  onLoad(option) {
+	 this.tagCode=option.code;
+	
+  },
+  onShow() {
+	  
+  },
+  mounted(){
+	  this.chemical_shape();
+	  
+  },
+  methods: {
+		//滚动事件
+		scrollGet(){},
+		tabClick(index) {
+			this.curTab = index;
+			this.pageType = index;
+			this.dataList=[];
+			if(this.pageType==1){
+				this.getList()
+			}else if(this.pageType==2){
+				this.getList2()
+			}
+		},
+	    handleClick(doType){
+		  let self=this;
+		  if(doType=='sign'){//签到遮罩层
+			 this.dialogVisible=true; 
+		  }else if(doType=='signSubmit'){//确认签到
+			  this.shadeStatus=1;
+			  setTimeout(function () {
+			     self.dialogVisible=false; 
+			  }, 3000);
+		  }else if(doType=='door'){//柜门
+			uni.navigateTo({
+			    url: '/pages/pages_patrolInspector/chemicalCatalogue?pageType=1'
+			});
+		  }else if(doType=='cancel'){//取消返回小程序首页
+		  
+		  }
+		  
+	    },
+		
+		//化学品形态
+		async chemical_shape(){
+			let _this = this;
+			const {data} = await chemical_shape({tagCode:this.tagCode});
+			if(data.code == 200){
+				this.morphologyData=data.data;
+				this.appStockListDetail();
+			}
+		},
+		//详情
+		async appStockListDetail(){
+			let _this = this;
+			const {data} = await appStockListDetail({tagCode:this.tagCode});
+			if(data.code == 200){
+				_this.infoData=data.data[0];
+				_this.morphologyData.forEach(function(item){
+					if(item.dictValue==_this.infoData.chemicalShape){
+						_this.infoData.chemicalShapeName=item.dictLabel
+					}
+				})
+			}
+		},
+		//使用记录
+		async getList(){
+			  let self = this;
+			  const {data} = await useRecordByCode({tagCode:this.tagCode});
+			  if(data.code==200){
+				  this.dataList=data.data
+			  }
+		},
+		//申领记录
+		async getList2(){
+			  let self = this;
+			  const {data} = await applyByCode({tagCode:this.tagCode});
+			  if(data.code==200){
+				  this.dataList=data.data
+				  this.nickName=data.data[0].data[0].nickName
+			  }
+		},
+		
+		
+		
+		
+		//关闭弹窗
+		dialogOutfire() {
+		  this.dialogVisible = !this.dialogVisible
+		},
+		//提交
+		async submitForm(){
+			let _this = this;
+			const {data} = await checkClapRectify(_this.form);
+			if(data.code == 200){
+			    uni.showToast({
+			        title: '提交成功',
+			        icon:"none",
+			        mask:true,
+			        duration: 2000
+			    }); 
+				uni.redirectTo({
+					url: '/pages_safetyExamine/snapshotManage/snapshotList?pageType='+this.pageType
+				});
+			   
+			}
+		},
+		
+		
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.course{
+	height:100%;
+	display flex;
+	box-sizing: border-box;
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+	}
+	.header{
+		width: 750rpx;
+		min-height: 275rpx;
+		background: #0096F3;
+		display: flex;
+		justify-content: flex-start;
+		.header_l{
+			width: 150rpx;
+			height: 150rpx;
+			background: #FFFFFF;
+			border-radius: 75rpx;
+			margin:62rpx 40rpx 0 30rpx;
+			>img{
+				width: 150rpx;
+				height: 150rpx;
+			}
+		}
+		.header_r{
+			flex: 1;
+			.header_r_t{
+				font-size: 34rpx;
+				font-family: PingFang SC-Bold, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 48rpx;
+				margin-top: 52rpx;
+			}
+			.header_r_b{
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 42rpx;
+				margin-top: 24rpx;
+				
+			}
+			.header_r_b2{
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 42rpx;
+				margin-top: 24rpx;
+				margin-bottom: 20rpx;
+				display: flex;
+				justify-content: space-between;
+				
+			    .risk{
+					width: 180rpx;
+					height: 50rpx;
+					border-radius: 80rpx;
+					opacity: 1;
+					border: 1rpx solid #FF0000;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #FF0000;
+					line-height: 50rpx;
+					text-align: center;
+					margin-right: 24rpx;
+				}
+				.ordinary{
+					width: 180rpx;
+					height: 50rpx;
+					border-radius: 80rpx;
+					opacity: 1;
+					border: 1rpx solid #2BCB1D;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #2BCB1D;
+					line-height: 50rpx;
+					text-align: center;
+					margin-right: 24rpx;
+				}
+				
+			}
+		}
+	}
+	.tabTitle{
+		width:100%;
+		height: 100rpx;
+		background: #fff;
+		display flex;
+		justify-content: flex-start;
+		align-items: center;
+		margin-bottom:20rpx;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		.tabTitle_li{
+			position: relative;
+			width:120rpx;
+			text-align center;
+			margin-right: 48rpx;
+			.tabTitle_text{
+				display: inline-block;
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 46rpx;
+				position: relative;
+				>text{
+					position:absolute;
+					min-width: 30rpx;
+					min-height: 30rpx;
+					border-radius:54%;
+					background: #E80000;
+					font-size: 18rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #FFFFFF;
+					text-align: center;
+					line-height: 30rpx;
+					margin-left: 6rpx;
+					padding:2rpx;
+					box-sizing: border-box;
+				}
+				&.on{
+					color:#0183FA;
+				}
+			}
+			.tabTitle_across{
+				width: 50rpx;
+				height: 4rpx;
+				background: #0183FA;
+				border-radius: 2rpx;
+				margin-left 30rpx;
+				display none;
+				&.on{
+					display block;
+				}
+			}
+	
+		}
+	}
+	.list{
+		width: 750rpx;
+		height: auto;
+		background: #FFFFFF;
+		margin-top:20rpx;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		.list_li{
+			border-bottom: 1rpx solid #D8D8D8;
+			display: flex;
+			justify-content: space-between;
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 80rpx;
+			}
+			>text:nth-of-type(2){
+				flex:1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				text-align: right;
+				overflow: hidden;//溢出隐藏
+				text-overflow: ellipsis;//省略号
+				white-space: nowrap;//强制文本不换行
+
+			}
+		}
+		.list_li:last-child{
+			border-bottom: none;
+		}
+		
+	}
+	.list_tow{
+		.list_tow_t{
+			display: flex;
+			justify-content: space-between;
+			padding: 0 30rpx;
+			box-sizing: border-box;
+			>text:nth-of-type(1){
+				height: 80rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 80rpx;
+				
+			}
+			>text:nth-of-type(2){
+				height: 80rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				box-sizing: border-box;
+			}
+		}	
+		.list_tow_li{
+			width: 690rpx;
+			height:auto;
+			background: #FFFFFF;
+			border-radius: 10rpx;
+			padding-bottom: 52rpx;
+			box-sizing: border-box;
+			margin: 0 30rpx 20rpx;
+			.list_tow_li_t{
+				position: relative;
+				min-height: 110rpx;
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				
+				.list_tow_li_t_l{
+					position: absolute;
+					left:-15rpx;
+					top: 76rpx;
+					width: 30rpx;
+					height: 30rpx;
+					background:#F5F5F5;
+					border-radius: 15rpx;
+				}
+				.list_tow_li_t_c{
+					min-height: 40rpx;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					line-height: 36rpx;
+					margin-left: 30rpx;
+					margin-right: 20rpx;
+					border-radius: 20rpx;
+					padding: 20rpx 20rpx;
+					box-sizing: border-box;
+					
+				}
+				.list_tow_li_t_c2{
+					width: 130rpx;
+					height: 50rpx;
+					background: rgba(31,165,13,0.2);
+					border-radius: 80rpx 80rpx 80rpx 80rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #1FA50D;
+					line-height: 50rpx;
+					text-align: center;
+					margin-right: 34rpx;
+				}
+				
+				.list_tow_li_t_r{
+					position: absolute;
+					right:-15rpx;
+					top: 76rpx;
+					width: 30rpx;
+					height: 30rpx;
+					background:#F5F5F5;
+					border-radius: 15rpx;
+				}
+			}
+			.list_tow_li_b{
+				height:auto;
+				border-top:1px dotted #D8D8D8;
+				margin:0 30rpx;
+				padding-top:14rpx;
+				box-sizing: border-box;
+				.list_tow_li_b_li{
+					display: flex;
+					justify-content: space-between;
+					>text:nth-of-type(1){
+						font-size: 28rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #666666;
+						line-height: 74rpx;
+					}
+					>text:nth-of-type(2){
+						font-size: 28rpx;
+						font-family: PingFang SC-Medium, PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						line-height: 74rpx;
+					}
+					
+				}
+			}
+		}	
+	}
+	.tip{
+		font-size: 26rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #999999;
+		line-height: 37rpx;
+		text-align: center;
+		margin-top: 42rpx;
+		
+	}
+}	
+
+</style>

+ 452 - 0
pages/pages_patrolInspector/courseQRcode.vue

@@ -0,0 +1,452 @@
+<!-- 课程-扫码 -->
+<template>
+  <view class="course">
+	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+		<view  class="basics">
+			<view class="basics_li">
+				<view class="basics_li_l">课程名称:</view>
+				<view class="basics_li_r"><text>{{infoData.courseName}}</text></view>
+			</view>
+			<view class="basics_li">
+				<view class="basics_li_l">主讲老师:</view>
+				<view class="basics_li_r">{{infoData.lecturerName}}</view>
+			</view>
+			<view class="basics_li">
+				<view class="basics_li_l">上课日期:</view>
+				<view class="basics_li_r">{{infoData.coStartDate}}</view>
+			</view>
+			<view class="basics_li">
+				<view class="basics_li_l">上课时间:</view>
+				<view class="basics_li_r">{{infoData.coStartTime}}-{{infoData.coEndTime}}</view>
+			</view>
+			<view class="basics_li">
+				<view class="basics_li_l">上课地点:</view>
+				<view class="basics_li_r">{{(infoData.subId && infoData.subId !=-1)?infoData.subName+'-'+infoData.subRoom:infoData.position}}</view>
+			</view>
+			<view class="basics_li" style="border: none;">
+				<view class="basics_li_l">课程内容:</view>
+				<view class="basics_li_r2"><text>{{infoData.content?infoData.content:''}}</text></view>
+			</view>
+		</view>
+		<view class="statistics">
+			<view class="statistics_li">
+				<text>预约人数:</text>
+				<text>{{infoData.peopleCount}}人</text>
+			</view>
+			<view class="statistics_li" style="background: #0183FA;">
+				<text>签到人数:</text>
+				<text>{{signPeople}}人</text>
+			</view>
+		</view>
+	</scroll-view>
+	<!-- 遮罩 -->
+	<view class="shade" v-if="dialogVisible">
+		<view class="null-box" @click="dialogOutfire()"></view>
+		<view class="shade_n" v-if="shadeStatus==0">
+			<view class="shade_n_t" v-if="isCourse"><text>是否确认签到</text></view>
+			<view class="shade_n_t" v-if="!isCourse"><img src="@/images/Version3.3.7/icon_kcxq_ts.png"><text>您不在当前课程名单中,是否确定签到</text></view>
+			<view class="shade_n_b">
+				<text @click="dialogOutfire()">取消</text>
+				<text @click="handleClick('signSubmit')">确认</text>
+			</view>
+		</view>
+		<view class="shade_n_tow" v-if="shadeStatus==1">
+			<view class="shade_n_tow_t" v-if="isSucceed"><img src="@/images/Version3.3.7/icon_kcxq_cg.png"><text>签到成功</text></view>
+			<view class="shade_n_tow_t" v-if="!isSucceed"><img src="@/images/Version3.3.7/icon_kcxq_sb.png"><text>签到失败</text></view>
+			<view class="shade_n_tow_b" @click="dialogOutfire()">确认</view>
+		</view>
+	</view>
+	<view class="btn">
+		<view class="btn_l" @click="handleClick('cancel')">取消</view>
+		<view v-if="isSign" class="forbidden">签到</view>
+		<view v-if="!isSign" class="btn_r" @click="handleClick('sign')">签到</view>
+	</view>
+  </view>
+
+</template>
+
+<script>
+import { config } from '@/api/request/config.js'
+import {courseQRcodeDetail,courseQRcodeSignCount,courseQRcodeIsSign,courseQRcodeIsPlanSign,courseQRcodeSign} from '@/api/index.js'
+export default {
+  name: "rectifyList",
+  components: {
+   
+  },
+  data() {
+    return {
+		baseUrl:config.base_url,
+		pageType:0,
+		form:{
+		},
+		infoData:{},
+		dialogVisible:false,
+		isSign:false,//是否签到
+		isCourse:false,//是否在当前课程名单中
+		isSucceed:false,//签到成功失败
+		shadeStatus:0,//遮罩层状态 0是否确认签到 1签到成功或失败
+		courseId:'',//课程id
+		signPeople:0,//签到人数
+		userId:uni.getStorageSync('userId'),//用户id
+	}
+  },
+  onLoad(option) {
+	 this.courseId=option.code;
+  },
+  onShow() {
+	  wx.hideHomeButton()
+  },
+  mounted(){
+	  this.courseQRcodeIsSign();//是否签到
+	  this.courseQRcodeIsPlanSign();//是否计划内签到
+	  this.courseQRcodeSignCount();//签到人数
+	  this.courseQRcodeDetail();//签到详情
+  },
+  methods: {
+		
+		//滚动事件
+		scrollGet(){},
+	    handleClick(doType){
+		  let self=this;
+		  if(doType=='sign'){//签到遮罩层
+			 this.dialogVisible=true; 
+		  }else if(doType=='signSubmit'){//确认签到
+			 
+			  this.submitForm()
+			 
+		  }else if(doType=='cancel'){//取消返回小程序首页
+		        let data=uni.getStorageSync('gentleIdentifierData')
+				if(!data.adminGentle && !data.applyGentle && !data.rectifyGentle){
+					uni.redirectTo({
+						url: '/pages/mine',
+					});
+				}else{
+					uni.redirectTo({
+						url: '/pages/home',
+					});
+				}
+		  }
+		  
+	    },
+		//关闭弹窗
+		dialogOutfire() {
+		  this.dialogVisible = !this.dialogVisible
+		},
+		//是否签到
+		async courseQRcodeIsSign(){
+			let _this = this;
+			const {data} = await courseQRcodeIsSign({courseId:this.courseId,userId:this.userId});
+			if(data.code == 200){
+				this.isSign=data.data;
+			}
+		},
+		//是否计划内签到
+		async courseQRcodeIsPlanSign(){
+			let _this = this;
+			const {data} = await courseQRcodeIsPlanSign({courseId:this.courseId,userId:this.userId});
+			if(data.code == 200){
+				this.isCourse=data.data;
+			}
+		},
+		
+		//详情
+		async courseQRcodeDetail(){
+			let _this = this;
+			const {data} = await courseQRcodeDetail(this.courseId);
+			if(data.code == 200){
+				this.infoData=data.data;
+				if(data.data.subId){
+					this.infoData.site=data.data.subName+data.data.subRoom
+				}else{
+					this.infoData.site=data.data.position
+				}
+			}
+		},
+		//获取签到人数
+		async courseQRcodeSignCount(){
+			let _this = this;
+			const {data} = await courseQRcodeSignCount({courseId:this.courseId,isSing:1});
+			if(data.code == 200){
+				this.signPeople=data.total
+			}
+		},
+		
+		//提交
+		async submitForm(){
+			let _this = this;
+			let obj={
+				courseId:this.courseId,
+				userId:this.userId,
+				singType:this.isCourse?'0':'1',//0计划内 1计划外
+			}
+			const {data} = await courseQRcodeSign(obj);
+			if(data.code == 200){
+				 if(data.data==1){//签到成功
+					 this.isSucceed=true;
+				 }else{//签到失败
+					 this.isSucceed=false;
+				 }
+				 _this.shadeStatus=1;
+				 _this.courseQRcodeSignCount();//签到人数
+				 setTimeout(function () {
+				    _this.dialogVisible=false; 
+				    _this.isSign=true; 
+				 }, 3000);
+			}else{
+				_this.shadeStatus=1;
+				this.isSucceed=false;
+				setTimeout(function () {
+				   _this.dialogVisible=false; 
+				}, 3000);
+			}
+		},
+		
+		
+	  
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+.course{
+	height:100%;
+	display flex;
+	box-sizing: border-box;
+	.info-max-box{
+		flex: 1;
+		overflow: scroll;
+		padding-bottom: 128rpx;
+		box-sizing: border-box;
+	}
+	/* 遮罩 */
+	.shade{
+	  height: 100%;
+	  width: 100%;
+	  position: fixed;
+	  display: flex;
+	  flex-direction: column;
+	  z-index: 10;
+	  background: rgba(0, 0, 0, 0.2);
+	
+	  .null-box {
+	    flex: 1;
+	  }
+	  .shade_n{
+	    width: 550rpx;
+	    height: 350rpx;
+	    background: #FFFFFF;
+	    border-radius: 20rpx;
+	    position: absolute;
+	    top: 490rpx;
+	    left: 100rpx;
+		.shade_n_t{
+			width: 100%;
+			position: absolute;
+			top: 80rpx;
+			padding:0 48rpx 0 58rpx;
+			box-sizing: border-box;
+			display: flex;
+			text-align: center;
+			>img{
+				width: 48rpx;
+				height: 48rpx;
+				margin-right:22rpx;
+			}
+			>text{
+				flex: 1;
+				font-size: 34rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 48rpx;
+				display:inline-block;
+				text-align: justify;
+			}
+		}
+		.shade_n_b{
+			position: absolute;
+			top: 220rpx;
+			>text{
+				display: inline-block;
+				width: 230rpx;
+				height: 90rpx;
+				border-radius: 10rpx 10rpx 10rpx 10rpx;
+			}
+		    >text:nth-of-type(1){
+				border: 2rpx solid #E0E0E0;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 90rpx;
+				text-align: center;
+				margin-right: 20rpx;
+				margin-left: 34rpx;
+			}
+			>text:nth-of-type(2){
+				background: #0183FA;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 90rpx;
+				text-align: center;
+			}
+		}
+	  }
+	  .shade_n_tow{
+		 width: 550rpx;
+		 height: 528rpx;
+		 background: #FFFFFF;
+		  border-radius: 20rpx;
+		  position: absolute;
+		  top: 310rpx;
+		  left: 100rpx;
+		  .shade_n_tow_t{
+			  >img{
+				width: 230rpx;
+				height: 230rpx; 
+				margin: 60rpx 0 0 160rpx;
+			  }
+			  >text{
+				display: block;
+				width: 100%;
+				font-size: 34rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 48rpx;
+				text-align: center;
+				margin-top:46rpx; 
+			  }
+		  }
+		  .shade_n_tow_b{
+			  width: 100%;
+			  height: 100rpx;
+			  border-top: 1px solid #E0E0E0;
+			  font-size: 30rpx;
+			  font-family: PingFang SC-Medium, PingFang SC;
+			  font-weight: 400;
+			  color: #0183FA;
+			  line-height: 100rpx;
+			  text-align: center;
+			  margin-top: 42rpx;
+		  }
+	  }
+	}
+	.basics{
+		width: 750rpx;
+		background: #FFFFFF;
+		padding: 30rpx 30rpx 0rpx;
+		box-sizing: border-box;
+		.basics_li{
+			width: 690rpx;
+			height: auto;
+			border-bottom: 1rpx solid #D8D8D8;
+			padding: 20rpx 0;
+			box-sizing: border-box;
+			display: flex;
+			justify-content: space-between;
+			.basics_li_l{
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 40rpx;
+			}
+			.basics_li_r{
+				flex: 1;
+				text-align: right;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 40rpx;
+			}
+			.basics_li_r2{
+				flex: 1;
+				text-align: right;
+				>text{
+					display:inline-block;
+					text-align: justify;
+					font-size: 28rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 40rpx;
+				}
+			}
+		}
+		
+	}
+	.statistics{
+		display: flex;
+		justify-content: space-between;
+		margin: 70rpx 30rpx 0;
+		.statistics_li{
+			width: 330rpx;
+			height: 150rpx;
+			background: #FFBD4C;
+			border-radius: 10rpx 10rpx 10rpx 10rpx;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 28rpx;
+				margin-right: 32rpx;
+			}
+			>text:nth-of-type(2){
+				font-size: 42rpx;
+				font-family: PingFang SC-Heavy, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 42rpx;
+			}
+		}
+	}
+	.btn{
+		position: fixed;
+		bottom: 0;
+		display: flex;
+		justify-content: space-between;
+		.btn_l{
+			width: 375rpx;
+			height: 90rpx;
+			background: #FFFFFF;
+			font-size: 30rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #333333;
+			line-height: 90rpx;
+			text-align: center;
+		}
+		.btn_r{
+			width: 375rpx;
+			height: 90rpx;
+			background: #0183FA;
+			font-size: 30rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color:#FFFFFF;
+			line-height: 90rpx;
+			text-align: center;
+		}
+		.forbidden{
+			width: 375rpx;
+			height: 90rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			line-height: 90rpx;
+			text-align: center;
+			background: #E0E0E0;
+			color: #FFFFFF;
+		}
+	}
+}	
+
+</style>

+ 243 - 47
pages_safetyExamine/dangerManage/dangerDetail.vue

@@ -19,14 +19,14 @@
 				</view>
 				<view class="basics_li">
 					<text>实验室:</text>
-					<text>{{infoData.subjectName}}-{{infoData.roomNumber}}</text>	
+					<text>{{infoData.subjectName}}-{{infoData.roomNumber}}</text>
 				</view>
 				<view class="basics_li">
 					<text>楼栋:</text>
 					<text>{{infoData.buildName?infoData.buildName:'-'}}</text>
 				</view>
 				<view class="basics_li">
-					<text>检查类型:</text>
+					<text>检查组织:</text>
 					<text>{{infoData.checkType==1?'校园巡查':(infoData.checkType==2?'实验室自查':'')}}</text>
 				</view>
 				<view class="basics_li">
@@ -45,8 +45,8 @@
 				</view>
 				<view class="basics_li">
 					<text>整改期限:</text>
-					<text>{{infoData.rectifyDeadline}}</text>	
-				</view>	
+					<text>{{infoData.rectifyDeadline?infoData.rectifyDeadline:''}}</text>
+				</view>
 				<view class="basics_li">
 					<text>整改通知:</text>
 					<text style="color: #0183FA;" @click="rectifyInform">{{infoData.rectifyNotice == 1?'整改告知书':(infoData.rectifyNotice == 2?'整改通知书':'')}}</text>
@@ -60,12 +60,13 @@
 					<text>{{infoData.checkTime}}</text>
 				</view>
 			</view>
-			<view class="danger">
+			<!-- 综合检查 -->
+			<view v-if="infoData.checkCategory==1" class="danger">
 				<view class="danger_title">不符合项</view>
 				<view class="grade">
 					<text>隐患等级:</text>
 					<text>{{infoData.checkHazardApplyDto.hazardLevel==2?'一般隐患':(infoData.checkHazardApplyDto.hazardLevel==1?'重大隐患':(infoData.checkHazardApplyDto.hazardLevel==3?'管理问题':''))}}</text>
-					
+
 				</view>
 				<view class="project">
 					<view class="project_t">检查项目:</view>
@@ -78,7 +79,7 @@
 				</view>
 				<view class="project">
 					<view class="project_t">隐患描述:</view>
-					<view class="project_b">{{infoData.checkHazardApplyDto.hazardDescribe}}</view>
+					<view class="project_b">{{infoData.checkHazardApplyDto.hazardDescribe?infoData.checkHazardApplyDto.hazardDescribe:''}}</view>
 				</view>
 				<view class="picture">
 					<view class="picture_t">隐患照片</view>
@@ -87,6 +88,36 @@
 					</view>
 				</view>
 			</view>
+			<!-- 专项检查 -->
+			<view v-if="infoData.checkCategory==2">
+				<view class="inconformity_tow" @click="inconformityFun2()" >{{infoData.checkHazardApplyDto.hazardName}}<img v-if="inconformityStatus2" src="@/pages_safetyExamine/images/icon_bfhx_xq.png"/><img v-if="!inconformityStatus2" src="@/pages_safetyExamine/images/icon_bfhx_sq.png"/></view>
+				<view class="danger_border" v-if="!inconformityStatus2">
+					<view class="ident">检查项目</view>
+					<view class="danger special_danger">
+						<view class="grade">
+							<view class="sort">1</view>
+							<text>第一项隐患</text>
+							<viwe :class="infoData.checkHazardApplyDto.checkFlag==0?'noConform':'isConform'">{{infoData.checkHazardApplyDto.checkFlag==0?'不符合':'符合'}}</viwe>
+						</view>
+						<view class="small_items">{{infoData.checkHazardApplyDto.hazardCheckProStr}}</view>
+						<view class="frequency" v-if="infoData.checkHazardApplyDto.hazardCheckCount>0">此检查项在当前实验室累计出现{{infoData.checkHazardApplyDto.hazardCheckCount}}次隐患</view>
+						<view class="grading">
+							<text>隐患等级:</text>
+							<text>{{infoData.checkHazardApplyDto.hazardLevel==2?'一般隐患':(infoData.checkHazardApplyDto.hazardLevel==1?'重大隐患':(infoData.checkHazardApplyDto.hazardLevel==3?'管理问题':''))}}</text>
+						</view>
+						<view class="project">
+							<view class="project_t">隐患描述:</view>
+							<view class="project_b">{{infoData.checkHazardApplyDto.hazardDescribe?infoData.checkHazardApplyDto.hazardDescribe:''}}</view>
+						</view>
+						<view class="picture">
+							<view class="picture_t">隐患照片</view>
+							<view class="picture_b" @click="lockImg(infoData.checkHazardApplyDto.uploadDtoList)">
+								<img  :src="baseUrl+imgItem.fileUrl"   v-for="(imgItem,imgIndex) in infoData.checkHazardApplyDto.uploadDtoList"/>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
 		</view>
 		<view v-for="(item,index) in infoData.checkRectifyApplyList" :key="index" v-if="curTabIndex== index">
 		    <!-- 整改结果 -->
@@ -140,7 +171,7 @@
 			<view class="await">
 				<view class="result">
 					<view class="result_l">整改结果</view>
-					<view class="result_r"> 
+					<view class="result_r">
 						<view v-for="(item,index) in resultArray" :key="index" @click="tabClick(index)">
 							<text :class="resultIndex==index?'checked':'result_r_l' "></text>
 							<text class="result_r_r">{{item}}</text>
@@ -192,7 +223,7 @@ import {getHazardById,checkHazardAdd} from '@/api/index.js'
 export default {
   name: "rectifyList",
   components: {
-   
+
   },
   data() {
     return {
@@ -228,24 +259,24 @@ export default {
 		checkType:null,
 		applyGentle:false,//待复核-有没有审核权限
 		rectifyGentle:false,//待整改-有没有整改权限
-		
+		inconformityStatus2:false,
+
 	}
   },
   onLoad(option) {
-	  console.log(option.item)
 	 if(option.item){
-		 this.item=JSON.parse(decodeURIComponent(option.item)); 
+		 this.item=JSON.parse(decodeURIComponent(option.item));
 		 this.id=this.item.id
 		 this.rectifyStatus=this.item.rectifyStatus;
-		 
+
 		 this.getHazardById()
 	 }
   },
   onShow() {
-	  
+
   },
   mounted(){
-	  
+
   },
   methods: {
 	    //整改结果
@@ -266,8 +297,11 @@ export default {
 			}else{
 				this.curTabIndex=index-1;
 			}
-			console.log(this.curTabIndex)
-			
+
+		},
+		//专项隐患项收起展开
+		inconformityFun2(){
+			this.inconformityStatus2=!this.inconformityStatus2;
 		},
 		//详情
 		async getHazardById(){
@@ -286,17 +320,17 @@ export default {
 							title:'实验室自查隐患'
 						})
 					}
-					
+
 					this.applyGentle=data.data.checkHazardApplyDto.applyGentle
 					this.rectifyGentle=data.data.checkHazardApplyDto.rectifyGentle
-					
+
 					if(data.data.checkRectifyApplyList.length>0){
 						for(let i=0;i<data.data.checkRectifyApplyList.length;i++){
 							this.form.id=data.data.checkRectifyApplyList[i].id;
 						}
 					}
-					this.checkType=data.data.checkType;//检查类型 1校院巡查 2实验室自查
-					
+					this.checkType=data.data.checkType;//检查组织 1校院巡查 2实验室自查
+
 					if(data.data.checkRectifyApplyList[0]){
 						this.tabTextTow.push({'type':'detail','name':'隐患检查'})
 						for(let i=0;i<data.data.checkRectifyApplyList.length;i++){
@@ -310,7 +344,7 @@ export default {
 							  this.tabTextTow.push({'type':'item','name':nameLeft+nameRight})
 							}
 						}
-						
+
 						if(this.rectifyStatus==3 && this.applyGentle){
 						  this.tabTextTow.push({'type':'check','name':'整改复核'})
 						}else if(this.rectifyStatus==2 && this.rectifyGentle){
@@ -323,13 +357,11 @@ export default {
 							 this.tabTextTow=[{'type':'detail','name':'隐患检查'}]
 						}
 					}
-					
+
 			}
 		},
 		//多次名称匹配
 		frequencyCalculation(length,type){
-			console.log(length)
-			console.log(type)
 			let textList = [
 			  {value:'二次',key:'2'},{value:'三次',key:'3'},{value:'四次',key:'4'},{value:'五次',key:'5'}, {value:'六次',key:'6'}, {value:'七次',key:'7'},
 			  {value:'八次',key:'8'},{value:'九次',key:'9'},{value:'十次',key:'10'}
@@ -344,23 +376,20 @@ export default {
 			  for(let i=0;i<textList.length;i++){
 				if(num == textList[i].key){
 				  return textList[i].value
-				  console.log(textList[i].value)
 				}
 			  }
 			}
-			
+
 		},
 		//滚动事件
 		scrollGet(){},
 	    handleClick(doType){
 		  let self=this;
-		  if( doType=='subBtn'){//	
-			  console.log(11)
+		  if( doType=='subBtn'){//
 		  }
 	    },
 		//查看图片
 		lockImg(list){
-			console.log(list)
 			if(!list[0]){
 				return
 			}
@@ -368,7 +397,6 @@ export default {
 			for(let i=0;i<list.length;i++){
 				urlList.push(this.baseUrl+list[i].fileUrl)
 			}
-			console.log(urlList)
 			wx.previewImage({
 				urls: urlList, //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
 				current: '', // 当前显示图片的http链接,默认是第一个
@@ -600,7 +628,7 @@ export default {
 				}
 			})
 		},
-		
+
 		async submitForm(doType){
 			let _this = this;
 			let obj={};
@@ -632,7 +660,7 @@ export default {
 				});
 				return
 			}
-			
+
 				obj.checkHazardId=this.form.checkHazardId;
 				obj.rectifyType=this.form.rectifyType;
 				obj.rectifyResult=this.form.rectifyResult;
@@ -651,7 +679,7 @@ export default {
 					return
 				}
 				obj.examineOpinion=this.form.examineOpinion;
-				
+
 			}else if(doType=='pass'){//复核 通过
 				obj.id=this.form.id;
 				obj.examineResult=1;
@@ -677,11 +705,11 @@ export default {
 			        mask:true,
 			        duration: 2000
 			    });
-				
-			   
+
+
 			}
 		},
-	  
+
   }
 }
 </script>
@@ -694,11 +722,11 @@ export default {
 	// box-sizing: border-box;
 	padding-bottom: 120rpx;
 	box-sizing: border-box;
-	
+
 	.info-max-box{
 		flex: 1;
 		overflow: scroll;
-		
+
 		padding: 120rpx 0rpx 0;
 		box-sizing: border-box;
 	}
@@ -713,9 +741,9 @@ export default {
 		.tabTitle_tow{
 			height: 100rpx;
 			 white-space: nowrap;
-			display: inline-flex;	
+			display: inline-flex;
 			.tabTitle_tow_li{
-				
+
 				position: relative;
 				width:152rpx;
 				height: 100rpx;
@@ -745,10 +773,10 @@ export default {
 						display block;
 					}
 				}
-		
+
 			}
 		}
-		
+
 	}
 	.basics{
 		width: 690rpx;
@@ -1120,17 +1148,17 @@ export default {
 				line-height: 80rpx;
 			}
 			.quick_r{
-				
+
 				>text{
 					display: inline-block;
 					font-size: 30rpx;
 					font-family: PingFang SC-Medium, PingFang SC;
 					font-weight: 400;
-					
+
 					line-height: 60rpx;
 					padding: 0 24rpx;
 					box-sizing: border-box;
-					
+
 					border-radius: 10rpx 10rpx 10rpx 10rpx;
 					margin-right: 20rpx;
 					margin-bottom: 30rpx;
@@ -1143,7 +1171,7 @@ export default {
 					color: #0183FA;
 					background: rgba(1,131,250,0.2);
 				}
-				
+
 			}
 		}
 	}
@@ -1192,8 +1220,176 @@ export default {
 			}
 		}
 	}
+	/* 专项检查 */
+	.inconformity_tow{
+		width: 690rpx;
+		height: 100rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx 20rpx 20rpx 20rpx;
+		margin: 20rpx 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #333333;
+		line-height: 100rpx;
+		text-align: center;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		>img{
+			width: 30rpx;
+			height: 26rpx;
+			margin-left: 20rpx;
+		}
+	}
+	.danger_border{
+		border-radius: 20rpx;
+		width: 690rpx;
+		background: #FFFFFF;
+		margin: 0rpx 30rpx 20rpx;
+		overflow: hidden;
 	
+	}
+	.special_danger{
+		width:auto;
+		background: #FFFFFF;
+		padding: 0;
+		box-sizing: border-box;
+		margin: 0 30rpx;
+		border-radius: 0;
+		.grade{
+			height: 80rpx;
+			display: flex;
+			justify-content: flex-start;
+			border-bottom: 1rpx solid #D8D8D8;
+			position: relative;
+			background: #F5F5F5;
+			border-radius: 20rpx 20rpx 0rpx 0rpx;
+			.sort{
+				width: 40rpx;
+				height: 40rpx;
+				background: #0183FA;
+				border-radius: 20rpx 0rpx 10rpx 0rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 40rpx;
+				text-align: center;
+				position: absolute;
+				left: 0;
+				top: 0;
+			}
+			.isConform{
+				width: 100rpx;
+				height: 40rpx;
+				font-size: 24rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #0183FA;
+				line-height: 36rpx;
+				background: #C4DEF6;
+				text-align: center;
+				border-radius:20rpx;
+				margin-left: 12rpx;
+				margin-top: 20rpx;
+			}
+			.noConform{
+				width: 100rpx;
+				height: 40rpx;
+				font-size: 24rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #FF0000;
+				line-height: 36rpx;
+				background: #F7C4C4;
+				text-align: center;
+				border-radius:20rpx;
+				margin-left: 12rpx;
+				margin-top: 20rpx;
+			}
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 80rpx;
+				width: 140rpx;
+				margin-left: 66rpx;
+			}
+			>text:nth-of-type(2){
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				text-align: right;
+				margin-right: 30rpx;
+			}
+		}
+		.frequency{
+			font-size: 26rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #333;
+			line-height: 26rpx;
+			margin-top: 14rpx;
+			text-align: right;
+			margin-bottom: 14rpx;
+		}
+		.grading{
+			height: 80rpx;
+			display: flex;
+			justify-content: space-between;
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 80rpx;
+				width: 140rpx;
+			}
+			>text:nth-of-type(2){
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				text-align: left;
+				background: #F5F5F5;
+				border-radius: 10rpx 10rpx 10rpx 10rpx;
+				padding-left: 20rpx;
+				box-sizing: border-box;
+			}
+		}
 	
+	}
+	.small_items{
+		min-height: 158rpx;
+		font-size: 28rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #333333;
+		line-height: 40rpx;
+		padding: 20rpx 14rpx;
+		box-sizing: border-box;
+		border-radius: 0rpx 0rpx 20rpx 20rpx;
+		opacity: 1;
+		border: 1rpx solid #E0E0E0;
+		border-top:none;
+	}
+	.ident{
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #666666;
+		line-height: 42rpx;
+		margin: 34rpx 30rpx;
+	}
 	.bottom_btn{
 		position: fixed;
 		bottom: 26rpx;

+ 28 - 28
pages_safetyExamine/dangerManage/dangerList.vue

@@ -16,15 +16,14 @@
 				</view>
 			</picker>
 			<view class="lab_title_r">
-				<view class="lab_title_r_btn" @click="searchBtn">
-					<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+				<input type="text" v-model="getData.searchValue" placeholder="请输入实验室名称" name="search" @confirm='searchBtn'  confirm-type='search' maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
+				<view v-if="getData.searchValue>0" class="lab_title_r_btn" @click="clearBtn">
+					<img src="@/pages_safetyExamine/images/clear.png"/>
 				</view>
-				<input type="text" v-model="getData.searchValue" placeholder="实验室/房间号" maxlength="50" placeholder-style="color: #CCCCCC;font-size:22rpx;">
-				<view class="clear" @click="clearBtn">清除</view>
 			</view>
 		</view>
 	</view>
-	
+
 	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
 		<view class="list_three">
 			<view class="list_three_li" v-for="(item,index) in  dataList" :key="index" @click="handleClick(item,'detail')">
@@ -46,7 +45,7 @@
 						<text class="blue_color" v-if="item.rectifyStatus==2">待整改</text>
 						<text class="orange_color" v-if="item.rectifyStatus==3">待复核</text>
 						<text class="gray_color" v-if="item.rectifyStatus==4">暂无法整改</text>
-						<text>{{item.hazardType==1?'校院巡查':'实验室自查'}}</text>
+						<text>{{item.hazardType==1?'校院巡查':'实验室自查'}}-{{item.checkCategory==1?'综合检查':'专项检查'}}</text>
 						<text>{{item.collegeName}}</text>
 					</view>
 				</view>
@@ -65,7 +64,7 @@ import {checkHazardAppList,conditionCollegeInfo} from '@/api/index.js'
 export default {
   name: "rectifyList",
   components: {
-   
+
   },
   data() {
     return {
@@ -100,7 +99,7 @@ export default {
   },
   onLoad(option) {
 	 if(option.form){
-		this.form=JSON.parse(decodeURIComponent(option.form)); 
+		this.form=JSON.parse(decodeURIComponent(option.form));
 	 }
 	 if(option.pageType==1){
 		  uni.setNavigationBarTitle({
@@ -115,9 +114,10 @@ export default {
 	 }
   },
   onShow() {
-	  
+
   },
   mounted(){
+	  this.dataList=[];
 	  this.getList();
 	  this.conditionCollegeInfo();
   },
@@ -149,7 +149,7 @@ export default {
 			this.getData.deptId=this.collegeList[e.target.value].deptId
 			this.getData.deptName=this.collegeList[e.target.value].deptName
 			this.dataList=[];
-			this.getList(); 
+			this.getList();
 		},
 		//实验室搜索
 		searchBtn(){
@@ -174,11 +174,11 @@ export default {
 			}else{
 					setTimeout(function(){
 						self.getData.pageNum += 1;
-						self.getList(); 
+						self.getList();
 					},1000)
-						 
+
 			}
-			
+
 		},
 	    //查询学院列表
 	    async conditionCollegeInfo(){
@@ -189,7 +189,7 @@ export default {
 	    			item.type=false;
 	    		})
 	    		_this.collegeList=data.data;
-	    		
+
 	    		//检查管理
 	    		for(let i=0;i<data.data.length;i++){
 	    			_this.collegeArray.push(data.data[i].deptName)
@@ -198,14 +198,14 @@ export default {
 	    },
 	    handleClick(row,doType){
 	      let self=this;
-	      if( doType=='subBtn'){//	
-	      
+	      if( doType=='subBtn'){//
+
 	      }else if(doType=='detail'){//详情
 	    	  uni.redirectTo({
 	    	  	 url: '/pages_safetyExamine/dangerManage/dangerDetail?item='+encodeURIComponent(JSON.stringify(row))
 	    	  })
 	      }
-	      
+
 	    },
 	    async getList(){
 	    	let self = this;
@@ -215,7 +215,7 @@ export default {
 	    		this.total=data.data.total;
 	    	}
 	    },
-	  
+
   }
 }
 </script>
@@ -257,7 +257,7 @@ export default {
 	.info-max-box{
 		flex: 1;
 		overflow: scroll;
-		
+
 		padding: 220rpx 0rpx 0;
 		box-sizing: border-box;
 	}
@@ -302,7 +302,7 @@ export default {
 						display block;
 					}
 				}
-		
+
 			}
 		}
 		.lab_title{
@@ -313,7 +313,7 @@ export default {
 			box-sizing: border-box;
 			display: flex;
 			justify-content: flex-start;
-			
+
 			.lab_title_l{
 				width: 250rpx;
 				height: 60rpx;
@@ -354,7 +354,7 @@ export default {
 					height: 60rpx
 					position: absolute;
 					top: 0rpx;
-					left:0rpx;
+					right:0rpx;
 					z-index: 100;
 					>img{
 						width: 20rpx;
@@ -385,7 +385,7 @@ export default {
 				}
 			}
 		}
-		
+
 	}
 	.list_three{
 		padding: 0 30rpx;
@@ -420,7 +420,7 @@ export default {
 					}
 				}
 				.list_three_li_t_c{
-					width: 630rpx;
+					width: 580rpx;
 					height: 110rpx;
 					position: absolute;
 					left: 30rpx;
@@ -505,7 +505,7 @@ export default {
 					}
 					>text:nth-of-type(3){
 						display: inline-block;
-						width: 280rpx;
+						width: 180rpx;
 						font-size: 26rpx;
 						font-family: PingFang SC-Medium, PingFang SC;
 						font-weight: 400;
@@ -514,7 +514,7 @@ export default {
 						overflow: hidden;
 						text-overflow:ellipsis;
 						white-space: nowrap;
-						
+
 					}
 				}
 			}
@@ -532,9 +532,9 @@ export default {
 				padding-left: 28rpx;
 				box-sizing: border-box;
 			}
-			
+
 		}
 	}
-	
+
 }
 </style>

+ 49 - 38
pages_safetyExamine/dangerManage/dangerManage.vue

@@ -2,7 +2,7 @@
 <template>
   <view class="examine">
 	<view class="header">
-		<view class="tabTitle" v-if="pageType==0">
+		<view class="tabTitle" v-if="pageType==0 && !collegeGentle">
 			<view class="tabTitle_li" @tap="tabClick(index)"  :key="index" v-for="(item,index) in tabText">
 				<view :class="{on:curTab==index}" class="tabTitle_text">{{item}}</view>
 			    <view :class="{on:curTab==index}" class="tabTitle_across"></view>
@@ -22,15 +22,15 @@
 				</view>
 			</picker>
 			<view class="lab_title_r">
-				<view class="lab_title_r_btn" @click="searchBtn">
-					<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+				<input type="text" v-model="getData.searchValue" placeholder="实验室/房间号" name="search" @confirm='searchBtn'  confirm-type='search' maxlength="50" placeholder-style="color: #CCCCCC;font-size:22rpx;">
+				
+				<view v-if="getData.searchValue>0" class="lab_title_r_btn" @click="clearBtn">
+					<img src="@/pages_safetyExamine/images/clear.png"/>
 				</view>
-				<input type="text" v-model="getData.searchValue" placeholder="实验室/房间号" maxlength="50" placeholder-style="color: #CCCCCC;font-size:22rpx;">
-				<view class="clear" @click="clearBtn">清除</view>
 			</view>
 		</view>
 	</view>
-	
+
 	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
 		<view class="list_three">
 			<view class="list_three_li" v-for="(item,index) in  dataList" :key="index" @click="handleClick(item,'detail')">
@@ -52,11 +52,11 @@
 						<text class="blue_color" v-if="item.rectifyStatus==2">待整改</text>
 						<text class="orange_color" v-if="item.rectifyStatus==3">待复核</text>
 						<text class="gray_color" v-if="item.rectifyStatus==4">暂无法整改</text>
-						<text>{{item.hazardType==1?'校院巡查':'实验室自查'}}</text>
+						<text>{{item.hazardType==1?'校院巡查':'实验室自查'}}-{{item.checkCategory==1?'综合检查':'专项检查'}}</text>
 						<text>{{item.collegeName}}</text>
 					</view>
 				</view>
-				<view class="list_three_li_b">整改期限:{{item.rectifyDeadline}}</view>
+				<view class="list_three_li_b">整改期限:{{item.rectifyDeadline?item.rectifyDeadline:''}}</view>
 			</view>
 		</view>
 		<img class="null-img" v-if="!dataList[0]" src="@/images/null-data-1.png">
@@ -71,7 +71,7 @@ import {checkHazardAppList,conditionCollegeInfo} from '@/api/index.js'
 export default {
   name: "rectifyList",
   components: {
-   
+
   },
   data() {
     return {
@@ -104,27 +104,38 @@ export default {
 		collegeIndex :0,
 		collegeArray:[],
 		dataList:[],
+		collegeGentle:'',//院级管理员身份 如果是院级管理员隐藏校院巡查
 	}
   },
   onLoad(option) {
+	this.collegeGentle=uni.getStorageSync('gentleIdentifierData').collegeGentle
 	 if(option.form){
-		this.form=JSON.parse(decodeURIComponent(option.form)); 
+		this.form=JSON.parse(decodeURIComponent(option.form));
 		console.log(this.form)
 	 }
 	 if(option.pageType==1){
-	 		  uni.setNavigationBarTitle({
-	 				title:'校院巡查隐患'
-	 		  })
+		 if(this.collegeGentle){
+			uni.setNavigationBarTitle({
+				title:'实验室自查隐患'
+			}) 
+		 }else{
+			uni.setNavigationBarTitle({
+				title:'校院巡查隐患'
+			}) 
+		 }
+	 		  
 	 }else if(option.pageType==2){
-	 		  uni.setNavigationBarTitle({
-	 				title:'实验室自查隐患'
-	 		  })
+		  uni.setNavigationBarTitle({
+				title:'实验室自查隐患'
+		  })
 	 }
   },
   onShow() {
-	  
+
   },
   mounted(){
+	  
+	  this.dataList=[];
 	  this.getList();
 	  this.conditionCollegeInfo();
   },
@@ -172,7 +183,7 @@ export default {
 			this.getData.deptId=this.collegeList[e.target.value].deptId
 			this.getData.deptName=this.collegeList[e.target.value].deptName
 			this.dataList=[];
-			this.getList(); 
+			this.getList();
 		},
 		//实验室搜索
 		searchBtn(){
@@ -197,11 +208,11 @@ export default {
 			}else{
 					setTimeout(function(){
 						self.getData.pageNum += 1;
-						self.getList(); 
+						self.getList();
 					},1000)
-						 
+
 			}
-			
+
 		},
 		//查询学院列表
 		async conditionCollegeInfo(){
@@ -212,7 +223,7 @@ export default {
 					item.type=false;
 				})
 				_this.collegeList=data.data;
-				
+
 				//检查管理
 				for(let i=0;i<data.data.length;i++){
 					_this.collegeArray.push(data.data[i].deptName)
@@ -221,14 +232,14 @@ export default {
 		},
 	    handleClick(row,doType){
 		  let self=this;
-		  if( doType=='subBtn'){//	
-		  
+		  if( doType=='subBtn'){//
+
 		  }else if(doType=='detail'){//详情
-			  uni.redirectTo({
+			  uni.navigateTo({
 			  	 url: '/pages_safetyExamine/dangerManage/dangerDetail?item='+encodeURIComponent(JSON.stringify(row))
 			  })
 		  }
-		  
+
 	    },
 		async getList(){
 			let self = this;
@@ -238,7 +249,7 @@ export default {
 				this.total=data.data.total;
 			}
 		},
-	  
+
   }
 }
 </script>
@@ -280,14 +291,14 @@ export default {
 	.info-max-box{
 		flex: 1;
 		overflow: scroll;
-		
+
 		padding: 220rpx 0rpx 0;
 		box-sizing: border-box;
 	}
 	.info-max-box{
 		flex: 1;
 		overflow: scroll;
-		
+
 		padding: 340rpx 0rpx 0;
 		box-sizing: border-box;
 	}
@@ -348,7 +359,7 @@ export default {
 						display block;
 					}
 				}
-		
+
 			}
 			.tabTitle_li:nth-of-type(1)::after{
 				content: '';
@@ -395,7 +406,7 @@ export default {
 						display block;
 					}
 				}
-		
+
 			}
 		}
 		.lab_title{
@@ -406,7 +417,7 @@ export default {
 			box-sizing: border-box;
 			display: flex;
 			justify-content: flex-start;
-			
+
 			.lab_title_l{
 				width: 250rpx;
 				height: 60rpx;
@@ -447,7 +458,7 @@ export default {
 					height: 60rpx
 					position: absolute;
 					top: 0rpx;
-					left:0rpx;
+					right:0rpx;
 					z-index: 100;
 					>img{
 						width: 20rpx;
@@ -478,7 +489,7 @@ export default {
 				}
 			}
 		}
-		
+
 	}
 	.list_three{
 		padding: 0 30rpx;
@@ -598,7 +609,7 @@ export default {
 					}
 					>text:nth-of-type(3){
 						display: inline-block;
-						width: 290rpx;
+						width: 180rpx;
 						font-size: 26rpx;
 						font-family: PingFang SC-Medium, PingFang SC;
 						font-weight: 400;
@@ -607,7 +618,7 @@ export default {
 						overflow: hidden;
 						text-overflow:ellipsis;
 						white-space: nowrap;
-						
+
 					}
 				}
 			}
@@ -625,9 +636,9 @@ export default {
 				padding-left: 28rpx;
 				box-sizing: border-box;
 			}
-			
+
 		}
 	}
-	
+
 }
 </style>

+ 232 - 122
pages_safetyExamine/examineManage/examineAdd.vue

@@ -6,7 +6,7 @@
 			<view class="basics_li">
 				<view class="basics_li_l">实验室</view>
 				<view class="basics_li_r lab_r" :class="addDisabledType?'addDisabled':''">
-					<input class="picker-text" @click="popupClick(1)" type="text" disabled v-model="form.subjectName" 
+					<input class="picker-text" @click="popupClick(1)" type="text" disabled v-model="form.subjectName"
 					placeholder="请选择实验室" placeholder-style="font-size: 30rpx;color:#333;">
 					<view class="img-box" @click.stop="saoCode" v-if="!addDisabledType">
 						<img src="@/pages_safetyExamine/images/icon_aqjc_sm.png">
@@ -24,9 +24,9 @@
 			</view>
 			<view class="basics_li">
 				<view class="basics_li_l">楼栋</view>
-				<picker @change="buildingChange" :disabled='addDisabledType' :value="collegeIndex" :range="buildingArray" class="scope_r">
-					<view class="basics_li_r college_r" :class="addDisabledType?'addDisabled':''">
-						<view>{{form.buildName?form.buildName:'选择楼栋'}}</view>
+				<picker @change="buildingChange" disabled="" :value="collegeIndex" :range="buildingArray" class="scope_r">
+					<view class="basics_li_r college_r" style="background-color: #F5F5F5 ;">
+						<view>{{form.buildName?form.buildName:'未选择实验室'}}</view>
 						<img src="@/pages_safetyExamine/images/icon_06.png">
 					</view>
 				</picker>
@@ -40,18 +40,27 @@
 					</view>
 				</picker>
 				<view v-if="!isCustom" class="basics_li_r college_r">
-				   <input type="text" v-model="form.title" placeholder="输入计划标题">
+				   <input type="text" v-model="form.title" maxlength="30" placeholder="输入计划标题">
 				</view>
 			</view>
 			<view class="basics_li" style="justify-content: flex-end;" v-if='planArray[0]&&!addDisabledType'>
 				<view class="custom"  @click="customFun">{{isCustom?'自定义输入':'选择计划'}}</view>
 			</view>
-			
+
 			<view class="basics_li">
-				<view class="basics_li_l">检查类型</view>
+				<view class="basics_li_l">检查组织</view>
 				<picker @change="categoryChange" :value="categoryIndex" disabled :range="categoryArray" class="scope_r">
 					<view class="basics_li_r college_r" style="background-color: #F5F5F5 ;">
-						<view>{{form.checkType?(form.checkType==1?'校院巡查':'实验室自查'):'选择检查类型'}}</view>
+						<view>{{form.checkType?(form.checkType==1?'校院巡查':'实验室自查'):'选择检查组织'}}</view>
+						<img src="@/pages_safetyExamine/images/icon_06.png">
+					</view>
+				</picker>
+			</view>
+			<view class="basics_li">
+				<view class="basics_li_l">检查类型</view>
+				<picker @change="specialChange" :value="specialIndex" :range="specialArray" :disabled="isCustom" class="scope_r">
+					<view class="basics_li_r college_r" :class="isCustom?'addDisabled':''">
+						<view>{{form.checkCategory?(form.checkCategory==1?'综合检查':'专项检查'):'选择检查类型'}}</view>
 						<img src="@/pages_safetyExamine/images/icon_06.png">
 					</view>
 				</picker>
@@ -63,15 +72,25 @@
 						<input class="picker-text"  disabled type="text" v-model="form.cycleStartTime" placeholder="开始时间">
 					</picker>
 					<view>至</view>
-					<picker mode="date"  @change="endChange(form,$event)" :disabled="isCustom"> 
+					<picker mode="date"  @change="endChange(form,$event)" :disabled="isCustom">
 						<input class="picker-text2" disabled type="text" v-model="form.cycleEndTime" placeholder="结束时间">
 					</picker>
 				</view>
 			</view>
-			
+
+		</view>
+		<view class="attachment" v-if="form.isAttachment==1">
+			<view class="attachment_t">
+				<text>材料附件</text>
+				<text>点击文件标题查看</text>
+			</view>
+			<view class="attachment_li" v-for="item in attachmentList">
+				<img src="@/pages_safetyExamine/images/icon_djc_wj.png"/>
+				<text  @click="attachmentPreview(item)">{{item.fileName}}</text>
+			</view>
 		</view>
-		<view class="inspect">
-			<view class="inspect_li">
+		<view class="inspect" v-if='form.checkCategory==1 || (form.checkResult==0 || form.checkCategory==2)'>
+			<view class="inspect_li" v-if='form.checkCategory==1'>
 				<view class="inspect_li_l">检查结果</view>
 				<picker @change="resultChange" :value="resultIndex" :range="resultArray" class="scope_r">
 					<view class="inspect_li_r college_r">
@@ -80,7 +99,7 @@
 					</view>
 				</picker>
 			</view>
-			<view class="inspect_li" v-if="form.checkResult==0">
+			<view class="inspect_li" v-if="form.checkResult==0 || form.checkCategory==2">
 				<view class="inspect_li_l">整改日期</view>
 				<picker mode="date" @change="rectifyDeadline(form,$event)" :start="currentDate">
 					<view class="inspect_li_r date_r">
@@ -89,9 +108,9 @@
 					</view>
 				</picker>
 			</view>
-			<view class="inspect_li" v-if="form.checkResult==0">
+			<view class="inspect_li" v-if="form.checkResult==0 || form.checkCategory==2">
 				<view class="inspect_li_l">整改通知</view>
-				<view class="inform_r"> 
+				<view class="inform_r">
 					<view v-for="(item,index) in informArray" :key="index" @click="tabClick(index)"><text :class="informIndex==index?'checked':'inform_r_l' "></text><text class="inform_r_r">{{item}}</text></view>
 				</view>
 			</view>
@@ -118,28 +137,31 @@
 	<uni-popup ref="popup" class="inspect_name" type="bottom">
 		<view class="popup-content">
 			<view class="inspect_name_t">
-				<input type="text" v-model="customTitle" maxlength="20" placeholder="请输入计划标题"/>
+				<input type="text" v-model="customTitle" maxlength="30" placeholder="请输入计划标题"/>
 			</view>
-			
 			<view class="inspect_name_b">
 				<text @click="titleCancel()">取消</text>
 				<text @click="titleConfirm()">确定</text>
 			</view>
 		</view>
 	</uni-popup>
-	<view class="bottom_btn" @click="handleClick('nextStep')" v-if="form.checkResult==0">下一步</view>
-	<view class="bottom_btn" @click="handleClick('submitForm')" v-if="form.checkResult==1">提交</view>
+	<view class="bottom_btn" @click="handleClick('nextStep')" v-if="form.checkResult==0 || form.checkCategory==2">下一步</view>
+	<view class="bottom_btn" @click="handleClick('submitForm')" v-if="form.checkResult==1 && form.checkCategory==1">提交</view>
   </view>
 
 </template>
 
 <script>
 import { config } from '@/api/request/config.js'
-import { buildBySub,listDepartments,subjectList,getCheckPlanBySubId,checkManageUpdate,checkManageAdd,findCheckManage,buildFloorGetlist,buildBySubList} from '@/api/index.js'
+import { buildBySub,listDepartments,
+subjectList,getCheckPlanBySubId,
+checkManageUpdate,checkManageAdd,
+findCheckManage,buildFloorGetlist,
+buildBySubList,findByPlanIdAttachment,subjectFindSubjectInfo} from '@/api/index.js'
 export default {
   name: "rectifyList",
   components: {
-   
+
   },
   data() {
     return {
@@ -150,6 +172,7 @@ export default {
 		 pageSize:20,
 		},
 		customTitle:'',
+		attachmentList:[],//材料附件
 		form:{
 			id:'',
 			checkPlanId:'',
@@ -162,39 +185,43 @@ export default {
 			buildId:'',//楼栋
 			buildName:'',
 			roomNumber:'',//房间号
-			checkType:2,// 检查类型(1校院巡查 2实验室自查)    
-			checkResult:1,// 检查结果 0不符合 1符合 
+			checkType:2,// 检查组织(1校院巡查 2实验室自查)
+			checkResult:1,// 检查结果 0不符合 1符合
 			rectifyDeadline:'',//整改期限
 			rectifyNotice:'1',//整改通知(1整改告知书 2整改通知书)
 			cycleStartTime:'',
 			cycleEndTime:'',
+            checkCategory:'',//检查类型  1综合检查  2专项检查
 			checkHazardDtoList:[
 				{
 					voiceRemark:[],//语音备忘存储
 					hazardLevel:2,//隐患等级
 					hazardLevelName:'一般隐患',//隐患等级
-					hazardCheckCode:'', //检查项目code序号 
-					hazardCheckName:'', //检查项目名称 
-					hazardCheckPro:'', //最后一级的id  
-					hazardCheckPoint:'',// 检查要点  
-					hazardDescribe:'', //隐患描述 
+					hazardCheckCode:'', //检查项目code序号
+					hazardCheckName:'', //检查项目名称
+					hazardCheckPro:'', //最后一级的id
+					hazardCheckPoint:'',// 检查要点
+					hazardDescribe:'', //隐患描述
 					uploadDtoList:[],//隐患照片
 				}
 			],
+			checkHazardInfoVoList:[],
 		},
 		collegeIndex :0,
 		collegeArray:[],
 		categoryIndex :0,
 		categoryArray:['校院巡查','实验室自查'],
 		planIndex :0,
+		specialIndex:0,
+		specialArray:['综合检查','专项检查'],
 		planArray:[],
 		planList:[],
 		resultIndex :0,
 		resultArray:['符合','不符合'],
 		informIndex:0,
 		informArray:['整改告知书','整改通知书'],
-		
-		
+
+
 		//房间弹层 状态
 		popupType:false,
 		//房间搜索字段
@@ -216,7 +243,6 @@ export default {
 	  if(option.q){
 		console.log('外部扫一扫')
 	    let text = decodeURIComponent(option.q)
-	    console.log('text',text)
 	    let codeId = "";
 	    let newList = text.split("?")[1].split("&")
 	    let list = newList[0].split("=")[1].split("-")
@@ -237,7 +263,11 @@ export default {
 	 }
 	 if(option.form){
 		console.log('子页面返回')
-		 this.form=JSON.parse(decodeURIComponent(option.form)); 
+		 this.form=JSON.parse(decodeURIComponent(option.form));
+		 this.isCustom=this.form.isCustom;
+		 if(this.form.isAttachment==1){//0没有附件 1有附件
+		 	this.findByPlanIdAttachment()
+		 }
 	 }
 	 //通过实验室id查询计划
 	 if(option.subId){
@@ -246,7 +276,7 @@ export default {
 	 	this.getCheckPlanBySubId(option.subId)
 		this.getByIdLaboratoryList();
 	 }
-	 
+
   },
   onShow() {
 	  this.buildFloorGetlist()
@@ -255,11 +285,13 @@ export default {
 		//获取当前日期
 		this.currentDate = this.getNowFormatDate()
 		this.listDepartments();
-	  
+
   },
   methods: {
 		//滚动事件
 		scrollGet(){},
+		
+		
 	    handleClick(doType){
 		  let self=this;
 		  if(!this.form.subIds){
@@ -305,7 +337,7 @@ export default {
 				  	duration: 2000
 				  });
 			  }
-			
+
 			return
 		  }
 		  if(!this.form.cycleStartTime || !this.form.cycleEndTime){
@@ -326,23 +358,40 @@ export default {
 		  	});
 		  	return
 		  }
-		  if( doType=='nextStep'){//下一步	
-			  if(!this.form.rectifyDeadline){
-			  			  uni.showToast({
-			  			  	title: '整改日期不能为空!',
-			  			  	icon:"none",
-			  			  	mask:true,
-			  			  	duration: 2000
-			  			  });
-			  			  return
-			  }
-			  uni.navigateTo({
-				  url: '/pages_safetyExamine/examineManage/examineAddTow?form='+encodeURIComponent(JSON.stringify(this.form))
-			  });
+		  if( doType=='nextStep'){//下一步
+		   // 打开扫描页面
+		   if(!this.form.rectifyDeadline){
+				  uni.showToast({
+					title: '整改日期不能为空!',
+					icon:"none",
+					mask:true,
+					duration: 2000
+				  });
+				  return
+		   }
+		   this.form.isCustom=this.isCustom;
+		   if(this.form.checkCategory==1){//综合检查
+			   
+			   uni.navigateTo({
+			   		url: '/pages_safetyExamine/examineManage/examineAddTow?form='+encodeURIComponent(JSON.stringify(this.form))
+			   });
+		   }else if(this.form.checkCategory==2){//专项检查
+				if(this.form.checkHazardInfoVoList[0]){
+					uni.navigateTo({
+							url: '/pages_safetyExamine/examineManage/examineAddTow?form='+encodeURIComponent(JSON.stringify(this.form))
+					});
+				}else{
+					uni.redirectTo({
+							url: '/pages/saoCode/scan?form='+encodeURIComponent(JSON.stringify(this.form))
+					});
+				}
+			   
+		   }
+			  
 		  }else if(doType=='submitForm'){
 			  self.submitForm()
 		  }
-		  
+
 	    },
 		customFun(){
 			let self=this;
@@ -354,7 +403,10 @@ export default {
 				self.form.cycleEndTime='';
 				self.isCustom=!self.isCustom
 			}else{//选择计划
-			this.$set(this,'customTitle','');
+				
+			    this.$set(this.form,'isAttachment',0);
+			    this.$set(this,'customTitle','');
+				self.form.checkHazardInfoVoList=[];
 				self.$refs.popup.open()
 			}
 		},
@@ -377,11 +429,11 @@ export default {
 					voiceRemark:[],//语音备忘存储
 					hazardLevel:2,//隐患等级
 					hazardLevelName:'一般隐患',//隐患等级
-					hazardCheckCode:'', //检查项目code序号 
-					hazardCheckName:'', //检查项目名称 
-					hazardCheckPro:'', //最后一级的id  
-					hazardCheckPoint:'',// 检查要点  
-					hazardDescribe:'', //隐患描述 
+					hazardCheckCode:'', //检查项目code序号
+					hazardCheckName:'', //检查项目名称
+					hazardCheckPro:'', //最后一级的id
+					hazardCheckPoint:'',// 检查要点
+					hazardDescribe:'', //隐患描述
 					uploadDtoList:[],//隐患照片
 				}]);
 			self.$refs.popup.close()
@@ -420,42 +472,76 @@ export default {
 		    strDate = date.getDate() // 获取当前日(1-31)
 		  if (month < 10) month = `0${month}` // 如果月份是个位数,在前面补0
 		  if (strDate < 10) strDate = `0${strDate}` // 如果日是个位数,在前面补0
-		 
+
 		  return `${year}-${month}-${strDate}`
 		},
+		//根据计划id查询附件列表
+		async findByPlanIdAttachment(){
+			let _this = this;
+			const {data} = await findByPlanIdAttachment({checkPlanId:this.form.checkPlanId});
+			if(data.code == 200){
+				_this.attachmentList=data.data;
+			}
+		},
 		//详情
 		async findCheckManage(type,id){
 			let _this = this;
 			const {data} = await findCheckManage({id:id});
 			if(data.code == 200){
+				
 				if(type == 'add'){
 					this.$set(this,'isCustom',true);
 					this.$set(this,'addDisabledType',true);
 				}
 				this.$set(this,'form',data.data);
 				this.$set(this.form,'subIds',data.data.subId);
-				this.form.checkResult=data.data.checkResult==null?'1':data.data.checkResult;
 				this.form.rectifyNotice=data.data.rectifyNotice==null?'1':data.data.rectifyNotice;
 				this.informIndex=this.form.rectifyNotice==1?0:1;
-				
-				if(data.data.checkHazardDtoList.length>0){//隐患项
-					this.form.checkHazardDtoList=data.data.checkHazardDtoList;
-					//语音备注
-					for(let i=0;i<this.form.checkHazardDtoList.length;i++){
-						if(this.form.checkHazardDtoList[i].voiceRemark){
-							this.form.checkHazardDtoList[i].voiceRemark=JSON.parse(this.form.checkHazardDtoList[i].voiceRemark)
-						}else{
-							this.form.checkHazardDtoList[i].voiceRemark=[];
+				if(data.data.checkCategory==1){//综合检查
+					this.form.checkResult=data.data.checkResult==null?'1':data.data.checkResult;
+					if(data.data.checkHazardDtoList[0]){//隐患项
+						this.form.checkHazardDtoList=data.data.checkHazardDtoList;
+						//语音备注
+						for(let i=0;i<this.form.checkHazardDtoList.length;i++){
+							if(this.form.checkHazardDtoList[i].voiceRemark){
+								this.form.checkHazardDtoList[i].voiceRemark=JSON.parse(this.form.checkHazardDtoList[i].voiceRemark)
+							}else{
+								this.form.checkHazardDtoList[i].voiceRemark=[];
+							}
 						}
 					}
-				}else{
-					this.form.checkHazardDtoList[0].voiceRemark=[];
+				}else if(data.data.checkCategory==2){//专项检查
+					if(_this.form.checkHazardInfoVoList[0]){
+					  _this.form.checkHazardInfoVoList.forEach(function(item) {
+						item.switch = true;
+						item.checkHazardDtoList.forEach(function(item2) {
+						  item2.hazardCheckCode=item2.code
+						})
+					  })
+					}
+					if(_this.form.checkHazardInfoVoList[0]){//隐患项
+						//语音备注
+						for(let k=0;k<_this.form.checkHazardInfoVoList.length;k++){
+							
+							for(let i=0;i<_this.form.checkHazardInfoVoList[k].checkHazardDtoList.length;i++){
+								if(_this.form.checkHazardInfoVoList[k].checkHazardDtoList[i].voiceRemark){
+									_this.form.checkHazardInfoVoList[k].checkHazardDtoList[i].voiceRemark=JSON.parse(_this.form.checkHazardInfoVoList[k].checkHazardDtoList[i].voiceRemark)
+								}else{
+									_this.form.checkHazardInfoVoList[k].checkHazardDtoList[i].voiceRemark=[];
+								}
+							}
+						}
+						
+					}
 				}
 				//根据实验室id查询实验室计划
 				if(data.data.subId){
 					this.form.cycleStartTime=data.data.cycleStartTime;
 					this.form.cycleEndTime=data.data.cycleEndTime;
 				}
+				if(data.data.isAttachment==1){//0没有附件 1有附件
+					this.findByPlanIdAttachment()
+				}
 			}
 		},
 		//查询学院列表
@@ -463,7 +549,7 @@ export default {
 			let _this = this;
 			const {data} = await listDepartments();
 			if(data.code == 200){
-					
+
 				for(let i=0;i<data.data.length;i++){
 					_this.collegeArray.push(data.data[i].deptName)
 				}
@@ -496,7 +582,7 @@ export default {
 				}
 			}
 		},
-		
+
 		//查询楼栋
 		async buildFloorGetlist(){
 			let _this = this;
@@ -534,28 +620,34 @@ export default {
 			this.collegeIndex = e.target.value;
 			 this.form.deptId=this.collegeList[e.target.value].deptId
 			 this.form.collegeName=this.collegeList[e.target.value].deptName
-			 console.log()
 			 this.buildFloorGetlist(this.form.deptId)
 		},
-		//检查类型
+		//检查组织
 		categoryChange(e){
 			this.categoryIndex = e.target.value;
 			if(e.target.value==0){
 				this.form.checkType=1
 			}else if(e.target.value==1){
 				this.form.checkType=2
-			} 
+			}
+		},
+		//检查类型
+		specialChange(e){
+			this.specialIndex = e.target.value;
+			if(e.target.value==0){
+				this.form.checkCategory=1
+			}else if(e.target.value==1){
+				this.form.checkCategory=2
+			}
 		},
 		//计划
 		planChange(e){
 			this.planIndex = e.target.value;
 			this.form.id=this.planList[e.target.value].id
-			console.log('e',this.planList[e.target.value].id);
-			console.log('this.planList[e.target.value].id',this.planList[e.target.value].id);
 			this.findCheckManage('check',this.planList[e.target.value].id);
 			// this.form.title=this.planList[e.target.value].title
 			// this.form.checkPlanId=this.planList[e.target.value].checkPlanId
-			
+
 			// this.form.subIds=this.planList[e.target.value].subId;
 			// this.form.subjectName=this.planList[e.target.value].subjectName;
 			// this.form.deptId=this.planList[e.target.value].deptId;
@@ -565,10 +657,10 @@ export default {
 			// this.form.checkType=this.planList[e.target.value].checkType;
 			// this.form.cycleStartTime=this.planList[e.target.value].cycleStartTime;
 			// this.form.cycleEndTime=this.planList[e.target.value].cycleEndTime;
-			
-			
-			
-			
+
+
+
+
 		},
 		resultChange(e){
 			this.resultIndex = e.target.value;
@@ -577,12 +669,12 @@ export default {
 			}else if(e.target.value==1){
 				this.form.checkResult=0;
 			}
-			
+
 		},
 		//开始时间选中事件
 		rectifyDeadline(form,e){
 			form.rectifyDeadline=e.target.value
-			
+
 		},
 		//整改通知
 		tabClick(index) {
@@ -592,7 +684,7 @@ export default {
 			}else if(index==1){
 				this.form.rectifyNotice='2';
 			}
-		
+
 		},
 		//搜索房间弹层开关
 		popupClick(type){
@@ -608,27 +700,15 @@ export default {
 		//扫一扫进入通过id查询实验室列表
 		async getByIdLaboratoryList(){
 			let self = this;
-			const {data} = await buildBySub({'searchValue':this.room});
+			const {data} = await subjectFindSubjectInfo({subIds:this.form.subIds});
 			if(data.code==200){
-				if(data.data[0]){
-					this.laboratoryList = data.data;
-					data.data.forEach(function(item){
-						if(self.form.subIds==item.id){
-							self.form.subjectName=item.name;
-							self.form.deptId=item.deptId;
-							self.form.buildId=item.buildId;
-							self.form.roomNumber=item.room;
-							
-						}
-					})
-					//获取学院名称
-					for(let i=0;i<this.collegeList.length;i++){
-						if(this.collegeList[i].deptId==self.form.deptId){
-							this.$set(this.form,"collegeName",this.collegeList[i].deptName)
-						}
-					}
-					//请求楼栋数据
-					this.buildFloorGetlist(self.form.deptId)
+				if(data.data){
+					self.form.subjectName=data.data.subjectName;
+					self.form.deptId=data.data.deptId;
+					self.form.collegeName=data.data.collegeName;
+					self.form.buildId=data.data.buildId;
+					self.form.buildName=data.data.buildName;
+					self.form.roomNumber=data.data.roomNumber;
 				}
 			}
 		},
@@ -660,7 +740,6 @@ export default {
 		},
 		//确认搜索房间
 		popupClickItem(item){
-			console.log('item',item)
 			this.$set(this.form,"subIds",item.id)
 			this.$set(this.form,"subjectName",item.name)
 			this.$set(this.form,"deptId",item.deptId)
@@ -678,11 +757,11 @@ export default {
 					voiceRemark:[],//语音备忘存储
 					hazardLevel:2,//隐患等级
 					hazardLevelName:'一般隐患',//隐患等级
-					hazardCheckCode:'', //检查项目code序号 
-					hazardCheckName:'', //检查项目名称 
-					hazardCheckPro:'', //最后一级的id  
-					hazardCheckPoint:'',// 检查要点  
-					hazardDescribe:'', //隐患描述 
+					hazardCheckCode:'', //检查项目code序号
+					hazardCheckName:'', //检查项目名称
+					hazardCheckPro:'', //最后一级的id
+					hazardCheckPoint:'',// 检查要点
+					hazardDescribe:'', //隐患描述
 					uploadDtoList:[],//隐患照片
 				}]);
 			//匹配学院名称
@@ -735,6 +814,37 @@ export default {
 				}
 			});
 		},
+		//附件查看
+		attachmentPreview(item){
+			uni.showLoading({
+				title: '下载中'
+			});
+			wx.downloadFile({
+				url: config.base_url+item.fileUrl,
+				header: {
+					Authorization: uni.getStorageSync('token')
+				},
+				success: function (res) {
+					uni.hideLoading();
+					const filePath = res.tempFilePath
+					wx.openDocument({
+					  filePath: filePath,
+					  success: function (res) {
+						console.log('打开文档成功')
+					  }
+					})
+				},
+				fail: function (res){
+					uni.hideLoading();
+					uni.showToast({
+						title: '下载失败',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}
+			})
+		},
 	    //提交
 	    async submitForm(){
 			let self = this;
@@ -769,7 +879,7 @@ export default {
 					});
 				}
 			}
-			
+
 		  },
   }
 }
@@ -792,10 +902,10 @@ export default {
 	.basics{
 		margin: 0 30rpx;
 		width: 690rpx;
-		height: 740rpx;
+		height:auto;
 		background: #FFFFFF;
 		border-radius: 20rpx;
-		padding: 30rpx 28rpx 0;
+		padding: 30rpx 28rpx 30rpx;
 		box-sizing: border-box;
 		.basics_li{
 			display: flex;
@@ -818,8 +928,8 @@ export default {
 				border: 1rpx solid #E0E0E0;
 				padding-left: 20rpx;
 				box-sizing: border-box;
-				
-				
+
+
 			}
 			/* 学院 */
 			.college_r{
@@ -999,7 +1109,7 @@ export default {
 		height: auto;
 		background: #FFFFFF;
 		border-radius: 20rpx;
-		padding: 40rpx 28rpx 20rpx;	
+		padding: 40rpx 28rpx 20rpx;
 		box-sizing: border-box;
 		.inspect_li{
 			display: flex;
@@ -1022,7 +1132,7 @@ export default {
 				border: 1rpx solid #E0E0E0;
 				padding-left: 20rpx;
 				box-sizing: border-box;
-				
+
 			}
 			.college_r{
 				width: 486rpx;
@@ -1182,7 +1292,7 @@ export default {
 	}
 	/* 计划标题 */
 	.inspect_name{
-	
+
 		.popup-content{
 			width: 750rpx;
 			height: 350rpx;
@@ -1236,12 +1346,12 @@ export default {
 					line-height: 60rpx;
 					text-align :center;
 				}
-				
-				
+
+
 			}
-	
+
 		}
-	
+
 	}
 	.bottom_btn{
 		position: fixed;
@@ -1257,7 +1367,7 @@ export default {
 		background: #0183FA;
 		border-radius: 20rpx;
 		text-align: center;
-		
+
 	}
 }
 </style>

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 635 - 119
pages_safetyExamine/examineManage/examineAddTow.vue


+ 290 - 51
pages_safetyExamine/examineManage/examineDetail.vue

@@ -9,17 +9,21 @@
 			</view>
 			<view class="basics_li">
 				<text>实验室:</text>
-				<text>{{infoData.subjectName}}-{{infoData.roomNumber}}</text>	
+				<text>{{infoData.subjectName}}-{{infoData.roomNumber}}</text>
 			</view>
 			<view class="basics_li">
 				<text>楼栋:</text>
 				<text>{{infoData.buildName?infoData.buildName:'-'}}</text>
 			</view>
 			<view class="basics_li">
-				<text>检查类型:</text>
+				<text>检查组织:</text>
 				<text>{{infoData.checkType==1?'校园巡查':(infoData.checkType==2?'实验室自查':'')}}</text>
 			</view>
 			<view class="basics_li">
+				<text>检查类型:</text>
+				<text>{{infoData.checkCategory==1?'综合检查':(infoData.checkCategory==2?'专项检查':'')}}</text>
+			</view>
+			<view class="basics_li">
 				<text>检查范围:</text>
 				<text>{{infoData.checkRange==1?'全校':(infoData.checkRange==2?'学院':'实验室')}}</text>
 			</view>
@@ -50,8 +54,8 @@
 			</view>
 			<view class="basics_li" v-if="infoData.checkResult==0">
 				<text>整改期限:</text>
-				<text>{{infoData.rectifyDeadline}}</text>	
-			</view>	
+				<text>{{infoData.rectifyDeadline}}</text>
+			</view>
 			<view class="basics_li" v-if="infoData.checkResult==0">
 				<text>整改通知:</text>
 				<text style="color: #0183FA;" @click="rectifyInform">{{infoData.rectifyNotice == 1?'整改告知书':(infoData.rectifyNotice == 2?'整改通知书':'')}}</text>
@@ -65,44 +69,81 @@
 				<text>{{infoData.checkTime}}</text>
 			</view>
 		</view>
-		<view class="inconformity" @click="inconformityFun()" v-if="manageStatus==2 && infoData.checkResult==0">不符合项<img v-if="inconformityStatus" src="@/pages_safetyExamine/images/icon_bfhx_xq.png"/><img v-if="!inconformityStatus" src="@/pages_safetyExamine/images/icon_bfhx_sq.png"/></view>
-		<view v-for="(item,index) in infoData.checkHazardDtoList" v-if="manageStatus==2 && infoData.checkResult==0">
-			<view class="danger">
-				<view class="sort">{{index+1}}</view>
-				<view class="grade" :style="item.switch?'border-bottom: 1rpx solid #D8D8D8;':'border:none;'">
-					<text>第{{index+1}}项隐患</text>
-					<text style="color: #0183FA;" @click="dangerItem(item)">{{item.rectifyStatus==1?'已完成':(item.rectifyStatus==2?'待整改':(item.rectifyStatus==3?'待复核':(item.rectifyStatus==4?'暂无法整改':'')))}} >></text>
-				</view>
-				<view v-if="item.switch">
-					<view class="grade">
-						<text>隐患等级:</text>
-						<text>{{item.hazardLevel==2?'一般隐患':(item.hazardLevel==1?'重大隐患':(item.hazardLevel==3?'管理问题':''))}}</text>
-					</view>
-					<view class="project">
-						<view class="project_t">检查项目:</view>
-						<view class="project_b">{{item.hazardCheckProStr}}</view>
-						<view class="project_b2" v-if="item.hazardCheckCount>0">此检查项在当前实验室累计出现{{item.hazardCheckCount}}次隐患</view>
+		<!-- 综合检查 -->
+		<viw v-if="checkCategory==1">
+			<view class="inconformity" @click="inconformityFun()" v-if="manageStatus==2 && infoData.checkResult==0">不符合项<img v-if="inconformityStatus" src="@/pages_safetyExamine/images/icon_bfhx_xq.png"/><img v-if="!inconformityStatus" src="@/pages_safetyExamine/images/icon_bfhx_sq.png"/></view>
+			<view v-for="(item,index) in infoData.checkHazardDtoList" v-if="manageStatus==2 && infoData.checkResult==0">
+				<view class="danger">
+					<view class="sort">{{index+1}}</view>
+					<view class="grade" :style="item.switch?'border-bottom: 1rpx solid #D8D8D8;':'border:none;'">
+						<text>第{{index+1}}项隐患</text>
+						<text style="color: #0183FA;" @click="dangerItem(item)">{{item.rectifyStatus==1?'已完成':(item.rectifyStatus==2?'待整改':(item.rectifyStatus==3?'待复核':(item.rectifyStatus==4?'暂无法整改':'')))}} >></text>
 					</view>
-					<view class="project">
-						<view class="project_t">检查要点:</view>
-						<view class="project_b">{{item.hazardCheckPoint}}</view>
+					<view v-if="item.switch">
+						<view class="grade">
+							<text>隐患等级:</text>
+							<text>{{item.hazardLevel==2?'一般隐患':(item.hazardLevel==1?'重大隐患':(item.hazardLevel==3?'管理问题':''))}}</text>
+						</view>
+						<view class="project">
+							<view class="project_t">检查项目:</view>
+							<view class="project_b">{{item.hazardCheckProStr}}</view>
+							<view class="project_b2" v-if="item.hazardCheckCount>0">此检查项在当前实验室累计出现{{item.hazardCheckCount}}次隐患</view>
+						</view>
+						<view class="project">
+							<view class="project_t">检查要点:</view>
+							<view class="project_b">{{item.hazardCheckPoint}}</view>
+						</view>
+						<view class="project">
+							<view class="project_t">隐患描述:</view>
+							<view class="project_b">{{item.hazardDescribe}}</view>
+						</view>
+						<view class="picture">
+							<view class="picture_t">隐患照片</view>
+							<view class="picture_b" @click="lockImg(item.uploadDtoList)">
+								<img  :src="baseUrl+imgItem.fileUrl"   v-for="(imgItem,imgIndex) in item.uploadDtoList"/>
+							</view>
+						</view>
 					</view>
-					<view class="project">
-						<view class="project_t">隐患描述:</view>
-						<view class="project_b">{{item.hazardDescribe}}</view>
+				</view>
+				<view class="pack_up" @click="switchFun(item)">{{item.switch?'收起':'展开'}}<img v-if="item.switch" src="@/pages_safetyExamine/images/icon_06_1.png"/><img v-if="!item.switch" src="@/pages_safetyExamine/images/icon_06.png"/></view>
+			</view>
+		</viw>
+		<!-- 专项检查 -->
+		<view v-if="checkCategory==2 && manageStatus==2"  v-for="(itemAll,indexAll) in infoData.checkHazardInfoVoList">
+			<view class="inconformity_tow" @click="inconformityFun2(itemAll)" >{{itemAll.hazardName}}<img v-if="inconformityStatus2" src="@/pages_safetyExamine/images/icon_bfhx_xq.png"/><img v-if="!inconformityStatus2" src="@/pages_safetyExamine/images/icon_bfhx_sq.png"/></view>
+			<view class="danger_border">
+				<view class="ident">检查项目</view>
+				<view class="danger special_danger" v-for="(item,index) in itemAll.checkHazardDtoList">
+					<view class="grade" :style="item.switch?'border-bottom: 1rpx solid #D8D8D8;':'border:none;'">
+						<view class="sort">{{index+1}}</view>
+						<text>第{{index+1}}项隐患</text>
+						<viwe :class="item.checkFlag==0?'noConform':'isConform'">{{item.checkFlag==0?'不符合':'符合'}}</viwe>
+						<text style="color: #0183FA;" @click="dangerItem(item)">{{item.rectifyStatus==1?'已完成':(item.rectifyStatus==2?'待整改':(item.rectifyStatus==3?'待复核':(item.rectifyStatus==4?'暂无法整改':'')))}} >></text>
 					</view>
-					<view class="picture">
-						<view class="picture_t">隐患照片</view>
-						<view class="picture_b" @click="lockImg(item.uploadDtoList)">
-							<img  :src="baseUrl+imgItem.fileUrl"   v-for="(imgItem,imgIndex) in item.uploadDtoList"/>
+					<view class="small_items">{{item.hazardCheckProStr}}</view>
+					<view v-if="item.switch">
+						<view class="frequency" v-if="item.hazardCheckCount>0">此检查项在当前实验室累计出现{{item.hazardCheckCount}}次隐患</view>
+						<view class="grading">
+							<text>隐患等级:</text>
+							<text>{{item.hazardLevel==2?'一般隐患':(item.hazardLevel==1?'重大隐患':(item.hazardLevel==3?'管理问题':''))}}</text>
+						</view>
+						<view class="project">
+							<view class="project_t">隐患描述:</view>
+							<view class="project_b">{{item.hazardDescribe}}</view>
+						</view>
+						<view class="picture">
+							<view class="picture_t">隐患照片</view>
+							<view class="picture_b" @click="lockImg(item.uploadDtoList)">
+								<img  :src="baseUrl+imgItem.fileUrl"   v-for="(imgItem,imgIndex) in item.uploadDtoList"/>
+							</view>
 						</view>
 					</view>
+					<view class="pack_up" @click="switchFun(item)">{{item.switch?'收起':'展开'}}<img v-if="item.switch" src="@/pages_safetyExamine/images/icon_06_1.png"/><img v-if="!item.switch" src="@/pages_safetyExamine/images/icon_06.png"/></view>
 				</view>
 			</view>
-			<view class="pack_up" @click="switchFun(item)">{{item.switch?'收起':'展开'}}<img v-if="item.switch" src="@/pages_safetyExamine/images/icon_06_1.png"/><img v-if="!item.switch" src="@/pages_safetyExamine/images/icon_06.png"/></view>
 		</view>
 	</scroll-view>
-	<view class="report" @click="rectifyReport" v-if="manageStatus==2 && infoData.checkResult==0">整改报告</view>	
+	<view class="report" @click="rectifyReport" v-if="isEndProcess==1 && infoData.checkResult==0">整改报告</view>
 	<view class="bottom_btn" v-if="manageStatus==0 && isSelfData==1" @click="handleClick('','startInspect')">开始检查</view>
   </view>
 
@@ -114,7 +155,7 @@ import {checkSign,queryDeptSignByUserId,findCheckManage,findByPlanIdAttachment}
 export default {
   name: "rectifyList",
   components: {
-   
+
   },
   data() {
     return {
@@ -125,20 +166,26 @@ export default {
 		infoData:{},
 		isSelfData:'',
 		attachmentList:[],
+        checkCategory:'2',//检查类型 1综合检查 2专项检查
+		inconformityStatus2:false,
+		isEndProcess:'',
+
 	}
   },
   onLoad(option) {
 	 if(option.id){
 	 	this.id=option.id
+		this.isEndProcess=option.isEndProcess
 	 	this.findCheckManage()
 	 }
+	 
 	 if(option.manageStatus){//检查状态
 		 this.manageStatus=option.manageStatus;
 	 }
-	 if(option.isSelfData){//0没有权限 1 有权限 
+	 if(option.isSelfData){//0没有权限 1 有权限
 	 		 this.isSelfData=option.isSelfData;
 	 }
-	 
+
 	 if(option.manageStatus==0 || option.manageStatus==1){
 		uni.setNavigationBarTitle({
 			title:'待检查'
@@ -150,16 +197,16 @@ export default {
 	 }
   },
   onShow() {
-	  
+
   },
   mounted(){
-	  
+
   },
   methods: {
-		
+
 		//滚动事件
 		scrollGet(){
-			
+
 		},
 		//开展检查
 		handleClick(row,doType){
@@ -182,16 +229,24 @@ export default {
 			let _this = this;
 			const {data} = await findCheckManage({id:this.id});
 			if(data.code == 200){
-				
-				data.data.checkHazardDtoList.forEach(function(item){
-					item.switch=false;
-				})
+				if(data.data.checkCategory==1){//综合检查
+					data.data.checkHazardDtoList.forEach(function(item){
+						item.switch=false;
+					})
+				}else if(data.data.checkCategory==2){//专项检查
+					data.data.checkHazardInfoVoList.forEach(function(item){
+						item.checkHazardDtoList.forEach(function(item2){
+							item2.switch=false;
+						})
+						
+					})
+				}				
 				this.infoData=data.data;
-				
+
 				if(data.data.isAttachment==1){//0没有附件 1有附件
 					this.findByPlanIdAttachment()
 				}
-				
+
 			}
 		},
 		//附件查看
@@ -262,6 +317,19 @@ export default {
 				})
 			}
 		},
+		//专项隐患项收起展开
+		inconformityFun2(itemAll){
+			this.inconformityStatus2=!this.inconformityStatus2;
+			if(this.inconformityStatus2){
+				itemAll.checkHazardDtoList.forEach(function(item){
+					item.switch=true;
+				})
+			}else{
+				itemAll.checkHazardDtoList.forEach(function(item){
+					item.switch=false;
+				})
+			}
+		},
 		//隐患小项收起展开
 		switchFun(item){
 			item.switch=!item.switch
@@ -276,7 +344,6 @@ export default {
 		},
 		//整改报告
 		rectifyReport(){
-			console.log(1111)
 			uni.showLoading({
 				title: '下载中'
 			});
@@ -413,7 +480,7 @@ export default {
 				}
 			})
 		},
-	  
+
   }
 }
 </script>
@@ -558,13 +625,37 @@ export default {
 			margin-left: 20rpx;
 		}
 	}
+	/* 专项检查 */
+	.inconformity_tow{
+		width: 690rpx;
+		height: 100rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx 20rpx 20rpx 20rpx;
+		margin: 20rpx 30rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #333333;
+		line-height: 100rpx;
+		text-align: center;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+		>img{
+			width: 30rpx;
+			height: 26rpx;
+			margin-left: 20rpx;
+		}
+	}
 	.danger{
 		width: 690rpx;
 		background: #FFFFFF;
 		border-radius: 20rpx;
 		padding: 15rpx 30rpx 15rpx;
 		box-sizing: border-box;
-		margin: 20rpx 30rpx ;
+		margin: 20rpx 30rpx;
 		position: relative;
 		.sort{
 			width: 40rpx;
@@ -589,6 +680,7 @@ export default {
 			line-height:80rpx;
 			border-bottom: 1rpx solid #D8D8D8;
 		}
+
 		.grade{
 			height: 80rpx;
 			display: flex;
@@ -612,6 +704,57 @@ export default {
 				text-align: right;
 			}
 		}
+		.grading{
+			height: 80rpx;
+			display: flex;
+			justify-content: space-between;
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 80rpx;
+				width: 140rpx;
+			}
+			>text:nth-of-type(2){
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				text-align: left;
+				background: #F5F5F5;
+				border-radius: 10rpx 10rpx 10rpx 10rpx;
+				padding-left: 20rpx;
+				box-sizing: border-box;
+			}
+		}
+		.small_items{
+			min-height: 158rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #333333;
+			line-height: 40rpx;
+			padding: 20rpx 14rpx;
+			box-sizing: border-box;
+			border-radius: 0rpx 0rpx 20rpx 20rpx;
+			opacity: 1;
+			border: 1rpx solid #E0E0E0;
+			border-top:none;
+		}
+		
+		.frequency{
+			font-size: 26rpx;
+			font-family: PingFang SC-Medium, PingFang SC;
+			font-weight: 400;
+			color: #666666;
+			line-height: 26rpx;
+			margin-top: 14rpx;
+			text-align: right;
+			margin-bottom: 14rpx;
+		}
 		.project{
 			.project_t{
 				font-size: 30rpx;
@@ -667,12 +810,108 @@ export default {
 			}
 		}
 	}
+	.danger_border{
+		border-radius: 20rpx;
+		width: 690rpx;
+		background: #FFFFFF;
+		margin: 0rpx 30rpx 20rpx;
+		overflow: hidden;
+
+	}
+	.special_danger{
+		width:auto;
+		background: #FFFFFF;
+		padding: 0;
+		box-sizing: border-box;
+		margin: 0 30rpx;
+		border-radius: 0;
+		.grade{
+			height: 80rpx;
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1rpx solid #D8D8D8;
+			position: relative;
+			background: #F5F5F5;
+			border-radius: 20rpx 20rpx 0rpx 0rpx;
+			.sort{
+				width: 40rpx;
+				height: 40rpx;
+				background: #0183FA;
+				border-radius: 20rpx 0rpx 10rpx 0rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #FFFFFF;
+				line-height: 40rpx;
+				text-align: center;
+				position: absolute;
+				left: 0;
+				top: 0;
+			}
+			.isConform{
+				width: 100rpx;
+				height: 40rpx;
+				font-size: 24rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #0183FA;
+				line-height: 36rpx;
+				background: #C4DEF6;
+				text-align: center;
+				border-radius:20rpx;
+				margin-left: 12rpx;
+				margin-top: 20rpx;
+			}
+			.noConform{
+				width: 100rpx;
+				height: 40rpx;
+				font-size: 24rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #FF0000;
+				line-height: 36rpx;
+				background: #F7C4C4;
+				text-align: center;
+				border-radius:20rpx;
+				margin-left: 12rpx;
+				margin-top: 20rpx;
+			}
+			>text:nth-of-type(1){
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #666666;
+				line-height: 80rpx;
+				width: 140rpx;
+				margin-left: 66rpx;
+			}
+			>text:nth-of-type(2){
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 80rpx;
+				text-align: right;
+				margin-right: 30rpx;
+			}
+		}
+
+	}
+	.ident{
+		font-size: 30rpx;
+		font-family: PingFang SC-Medium, PingFang SC;
+		font-weight: 400;
+		color: #666666;
+		line-height: 42rpx;
+		margin: 34rpx 30rpx;
+	}
 	.pack_up{
 		font-size: 30rpx;
 		font-family: PingFang SC-Medium, PingFang SC;
 		font-weight: 400;
 		color: #666666;
-		line-height: 140rpx;
+		line-height: 80rpx;
 		display: flex;
 		justify-content: center;
 		align-items: center;
@@ -711,7 +950,7 @@ export default {
 		background: #0183FA;
 		border-radius: 20rpx;
 		text-align: center;
-		
+
 	}
 }
 </style>

+ 43 - 43
pages_safetyExamine/examineManage/examineList.vue

@@ -16,15 +16,14 @@
 				</view>
 			</picker>
 			<view class="lab_title_r">
-				<view class="lab_title_r_btn" @click="searchBtn">
-					<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+				<input type="text" v-model="getData.searchValue" placeholder="请输入实验室名称" name="search" @confirm='searchBtn'  confirm-type='search' maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
+				<view v-if="getData.searchValue>0" class="lab_title_r_btn" @click="clearBtn">
+					<img src="@/pages_safetyExamine/images/clear.png"/>
 				</view>
-				<input type="text" v-model="getData.searchValue" placeholder="计划标题/实验室/房间号" maxlength="50" placeholder-style="color: #CCCCCC;font-size:22rpx;">
-				<view class="clear" @click="clearBtn">清除</view>
 			</view>
 		</view>
 	</view>
-	
+
 	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
 		<view class="list_three">
 			<view class="list_three_li" v-for="(item,index) in  dataList" :key="index">
@@ -45,7 +44,7 @@
 						<text class="blue_color" v-if="item.manageStatus==0">待检查</text>
 						<text class="red_color" v-if="item.manageStatus==1">检查中</text>
 						<text class="green_color" v-if="item.manageStatus==2">已检查</text>
-						<text>{{item.checkType==1?'校院巡查':'实验室自查'}}</text>
+						<text>{{item.checkType==1?'校院巡查':'实验室自查'}}-{{item.checkCategory==1?'综合检查':'专项检查'}}</text>
 						<text>{{item.collegeName}}</text>
 					</view>
 				</view>
@@ -65,7 +64,7 @@
 			</view>
 		</view>
 		<img class="null-img" v-if="!dataList[0]" src="@/images/null-data-1.png">
-	</scroll-view>	
+	</scroll-view>
 	<view class="bottom_btn" @click="handleClick('','startInspect')">开始检查</view>
   </view>
 
@@ -77,7 +76,7 @@ import {checkManageList,conditionCollegeInfo} from '@/api/index.js'
 export default {
   name: "rectifyList",
   components: {
-   
+
   },
   data() {
     return {
@@ -87,7 +86,7 @@ export default {
 			pageNum:1,
 			pageSize:20,
 			isSelf: 0,//是否本人查询
-		    checkType:'',//检查类型(0全部1校院巡查2实验室自查)
+		    checkType:'',//检查组织(0全部1校院巡查2实验室自查)
 			manageStatus:-1,//管理状态(-1全部 0待检查,1检查中,2已检查)
 			searchValue:'',
 		},
@@ -110,7 +109,7 @@ export default {
 		collegeArray:[],
 		dataList:[],
 		currentDate:'',
-		myApplyGentle:'',//自查身份 校院巡查管理 里操作按钮隐藏 
+		myApplyGentle:'',//自查身份 校院巡查管理 里操作按钮隐藏
 		applyGentle:'',//检查组身份 实验室自查管理 里操作按钮隐藏
 		buttonHide:false,//判断按钮显示隐藏
 	}
@@ -118,7 +117,7 @@ export default {
   onLoad(option) {
 	  this.myApplyGentle=uni.getStorageSync('gentleIdentifierData').myApplyGentle
 	  this.applyGentle=uni.getStorageSync('gentleIdentifierData').applyGentle
-	  
+
 	 if(option.pageType==1){
 	 		  this.getData.checkType=option.pageType
 	 		  uni.setNavigationBarTitle({
@@ -131,7 +130,7 @@ export default {
 			  }else{
 				  this.buttonHide=true;
 			  }
-			  
+
 	 }else if(option.pageType==2){
 	 		   this.getData.checkType=option.pageType
 	 		  uni.setNavigationBarTitle({
@@ -147,14 +146,15 @@ export default {
 	 }
   },
   onShow() {
-	
+
   },
   mounted(){
 	  //获取当前日期
-	  this.currentDate=this.getNowFormatDate() 
-	  this.getList(); 
+	  this.currentDate=this.getNowFormatDate()
+	  this.dataList=[];
+	  this.getList();
 	  this.conditionCollegeInfo();
-	  
+
   },
   methods: {
 		//顶部tab点击
@@ -179,7 +179,7 @@ export default {
 			this.getData.deptId=this.collegeList[e.target.value].deptId
 			this.getData.deptName=this.collegeList[e.target.value].deptName
 			this.dataList=[];
-			this.getList(); 
+			this.getList();
 		},
 		//实验室搜索
 		searchBtn(){
@@ -204,11 +204,11 @@ export default {
 			}else{
 					setTimeout(function(){
 						self.getData.pageNum += 1;
-						self.getList(); 
+						self.getList();
 					},1000)
-						 
+
 			}
-			
+
 		},
 		//查询学院列表
 		async conditionCollegeInfo(){
@@ -219,7 +219,7 @@ export default {
 					item.type=false;
 				})
 				_this.collegeList=data.data;
-				
+
 				//检查管理
 				for(let i=0;i<data.data.length;i++){
 					_this.collegeArray.push(data.data[i].deptName)
@@ -228,26 +228,26 @@ export default {
 		},
 	    handleClick(row,doType){
 		  let self=this;
-		  if( doType=='add'){//开始检查	
-			  uni.redirectTo({
+		  if( doType=='add'){//开始检查
+			  uni.navigateTo({
 			      url: '/pages_safetyExamine/examineManage/examineAdd?id='+row.id
 			  });
 		  }else if(doType=='edit'){
-			  uni.redirectTo({
+			  uni.navigateTo({
 			      url: '/pages_safetyExamine/examineManage/examineAdd?id='+row.id
 			  });
 		  }else if(doType=='detail'){
-			  uni.redirectTo({
+			  uni.navigateTo({
 			      url: '/pages_safetyExamine/examineManage/examineDetail?id='+row.id+'&manageStatus='+row.manageStatus
 			  });
 		  }else if(doType=='startInspect'){//开始检查
-			  uni.redirectTo({
+			  uni.navigateTo({
 			      url: '/pages_safetyExamine/examineManage/examineAdd'
 			  });
 		  }else if(doType=='download'){//整改报告下载rectifyNotice 整改通知(1整改告知书 2整改通知书)
 			  this.rectifyReport(row.id)
 		  }
-		  
+
 	    },
 		//整改报告
 		rectifyReport(id){
@@ -395,7 +395,7 @@ export default {
 		    strDate = date.getDate() // 获取当前日(1-31)
 		  if (month < 10) month = `0${month}` // 如果月份是个位数,在前面补0
 		  if (strDate < 10) strDate = `0${strDate}` // 如果日是个位数,在前面补0
-		 
+
 		  return `${year}-${month}-${strDate}`
 		},
 		//是否可以开始检查
@@ -405,13 +405,13 @@ export default {
 			    } else {
 				   const oDate1 = new Date(date1);
 				   const oDate2 = new Date(this.currentDate)
-					   
+
 				   if(oDate1.getTime() <= oDate2.getTime()){
 					   return true; //可以开始
 				   } else {
 					   return false; //不能开始
 				   }
-			    }   
+			    }
 		},
 		async getList(){
 			let self = this;
@@ -425,7 +425,7 @@ export default {
 				this.total=data.data.total;
 			}
 		},
-	  
+
   }
 }
 </script>
@@ -459,7 +459,7 @@ export default {
 	.info-max-box{
 		flex: 1;
 		overflow: scroll;
-		
+
 		padding: 220rpx 0rpx 0;
 		box-sizing: border-box;
 	}
@@ -504,7 +504,7 @@ export default {
 						display block;
 					}
 				}
-		
+
 			}
 		}
 		.lab_title{
@@ -515,7 +515,7 @@ export default {
 			box-sizing: border-box;
 			display: flex;
 			justify-content: flex-start;
-			
+
 			.lab_title_l{
 				width: 250rpx;
 				height: 60rpx;
@@ -556,7 +556,7 @@ export default {
 					height: 60rpx
 					position: absolute;
 					top: 0rpx;
-					left:0rpx;
+					right:0rpx;
 					z-index: 100;
 					>img{
 						width: 20rpx;
@@ -587,7 +587,7 @@ export default {
 				}
 			}
 		}
-		
+
 	}
 	.list_three{
 		padding: 0 30rpx;
@@ -706,7 +706,7 @@ export default {
 					}
 					>text:nth-of-type(3){
 						display: inline-block;
-						width: 350rpx;
+						width: 220rpx;
 						font-size: 26rpx;
 						font-family: PingFang SC-Medium, PingFang SC;
 						font-weight: 400;
@@ -715,7 +715,7 @@ export default {
 						overflow: hidden;
 						text-overflow:ellipsis;
 						white-space: nowrap;
-						
+
 					}
 				}
 			}
@@ -813,7 +813,7 @@ export default {
 		background: #0183FA;
 		border-radius: 20rpx;
 		text-align: center;
-		
+
 	}
 	/* 指纹采集 */
 	.shade {
@@ -855,7 +855,7 @@ export default {
 				  font-weight: 400;
 				  color: #0183FA;
 				  line-height: 100rpx;
-				  
+
 			  }
 		  }
 		  .shade_n_b{
@@ -882,7 +882,7 @@ export default {
 					 width: 24rpx;
 					 height: 16rpx;
 					 margin-right: 14rpx;
-				 } 
+				 }
 			  }
 			  .color_A{
 				  color: #333333;
@@ -890,8 +890,8 @@ export default {
 			  .color_B{
 				  color: #0183FA;
 			  }
-			  
-			 
+
+
 		  }
 	  }
 	}

+ 145 - 52
pages_safetyExamine/patrolPlan/patrolPlanAdd.vue

@@ -8,11 +8,11 @@
 				<textarea class="title_b" type="text" v-model="form.title" maxlength="200" placeholder="请输入检查计划标题" placeholder-style="color:#999999;font-size:30rpx;"></textarea>
 			</view>
 			<view class="type">
-				<view class="type_l">检查类型</view>
+				<view class="type_l">检查组织</view>
 				<input class="type_r" type="text" v-model="form.checkTypeName" placeholder="" disabled maxlength="20">
 			</view>
-			<view class="period">		
-				<view class="period_l">检查周期</view>
+			<view class="period">
+				<view class="period_l">计划周期</view>
 				<view class="period_r">
 					<picker mode="date" @change="startChange(form,$event)">
 						<input class="picker-text"  disabled type="text" v-model="form.cycleStartTime" placeholder="开始时间">
@@ -38,9 +38,25 @@
 			<view class="scope_btn" v-if="scopeIndex==1 || scopeIndex==2" @click="collegeOrLab()">{{scopeIndex==1?'选择学院':'选择实验室'}}</view>
 			<view class="scope_text" v-if="scopeIndex==0 || scopeIndex==1">已选择<text>{{form.collegeNum}}</text>个学院,共<text>{{form.subjectNum}}</text>间实验室</view>
 			<view class="scope_text" v-if="scopeIndex==2">已选择<text>{{form.subjectNum}}</text>间实验室</view>
+			<view class="scope">
+				<view class="scope_l">检查类型</view>
+				<picker @change="categoryChange" :value="categoryIndex" :range="categoryArray" class="scope_r">
+					<view class="scope_r_n">
+						<view>{{form.checkCategory==1?'综合检查':(form.checkCategory==2?'专项检查':'请选择检查类型')}}</view>
+						<img src="@/pages_safetyExamine/images/icon_06.png">
+					</view>
+				</picker>
+			</view>
+			<view class="content" v-if="form.checkCategory==2">
+				<view class="content_l">检查内容</view>
+				<view class="content_r">
+					<view class="content_r_l" @click="clickContent()">选择检查内容</view>
+					<view class="content_r_r">已选择<text>{{form.hazardNum}}</text>种</view>
+				</view>
+			</view>
 			<view class="title">
 				<view class="title_t">检查要求</view>
-				<textarea class="title_b" type="text" v-model="form.checkDemand" maxlength="200" placeholder="请输入检查要求" placeholder-style="color:#999999;font-size:30rpx;"></textarea>
+				<textarea class="title_b" type="text" v-model="form.checkDemand" maxlength="100" placeholder="请输入检查要求" placeholder-style="color:#999999;font-size:30rpx;"></textarea>
 			</view>
 		</view>
 		<view class="patrol_group" v-if="form.checkType==1">
@@ -58,7 +74,7 @@
 				<view class="list_bottom" v-if="form.checkMemberDtoList.length==0">无数据</view>
 			</view>
 		</view>
-	</scroll-view>	
+	</scroll-view>
 	<view class="bottom_btn" @click="submitForm()">保存</view>
 	 <!-- 选择学院-->
 	<view class="shade" v-if="dialogVisible">
@@ -83,7 +99,7 @@ import { checkPlanAdd,conditionCollegeInfo,getAllSubNum,isSCollege} from '@/api/
 export default {
   name: "rectifyList",
   components: {
-   
+
   },
   data() {
     return {
@@ -107,28 +123,26 @@ export default {
 			collegeNum:0,//学院数量
 			subIds:'',//实验室id组
 			subjectNum:0,//实验室数量
+			hazardNum:0,//检查设备数量
 			checkDemand:'',//检查要求
 			tiemQuickList:[],
 			scopeIndex:'',//0 全校 1学院 2实验室
 			seleteListLab:[],
+			seleteListDevice:[],
 			groupDataType:'',//巡查组状态 院级/校级
+            checkCategory:'',//检查类型  1综合检查  2专项检查
 		},
 		tiemQuickList:[{name:'本月',type:false},{name:'本季度',type:false},{name:'全年',type:false}],
 		scopeIndex:0,
 		scopeArray:['全校','学院','实验室'],
+		categoryIndex:0,
+		categoryArray:['综合检查','专项检查'],
 		dialogVisible:false,
 		collegeList:[]
-	  
+
 	}
   },
   onLoad(option) {
-	  
-	 if(option.form){
-		this.form=JSON.parse(decodeURIComponent(option.form)); 
-		this.tiemQuickList=this.form.tiemQuickList//时间快捷
-		this.scopeIndex=this.form.scopeIndex//检查范围
-		console.log(this.form)
-	 }
 	 if(option.pageType){
 		 if(option.pageType==1){//校院巡查
 			 this.form.checkType=option.pageType;
@@ -145,8 +159,12 @@ export default {
 		 }
 	 }
   },
-  onShow() {
-	  
+  onShow(form) {
+	 if(form){
+		this.form=JSON.parse(decodeURIComponent(form));
+		this.tiemQuickList=this.form.tiemQuickList//时间快捷
+		this.scopeIndex=this.form.scopeIndex//检查范围
+	 }
   },
   mounted(){
 	  this.isSCollege();
@@ -170,6 +188,9 @@ export default {
 				});
 			}else{
 				form.cycleStartTime=e.target.value
+				this.tiemQuickList.forEach(function(item){
+					item.type=false;
+				})
 			}
 		},
 	    //结束时间选中事件
@@ -183,6 +204,9 @@ export default {
 				});
 			}else{
 				form.cycleEndTime=e.target.value
+				this.tiemQuickList.forEach(function(item){
+					item.type=false;
+				})
 			}
 		},
 		//检查周期快捷
@@ -204,7 +228,7 @@ export default {
 				_this.form.cycleStartTime='';
 				_this.form.cycleEndTime='';
 			}
-			
+
 		},
 		//查询当前用户是否是院级
 		async isSCollege(){
@@ -222,10 +246,36 @@ export default {
 				}
 			}
 		},
+		//检查类型
+		categoryChange(e){
+			let _this=this;
+			if(e.target.value==0){
+				this.form.checkCategory=1
+			}else if(e.target.value==1){
+				this.form.checkCategory=2
+			}
+		},
+		//检查内容
+		clickContent(){
+			
+			if(!this.form.collegeNum && !this.form.subjectNum){
+				uni.showToast({
+				    title: '请先选择检查范围',
+				    icon:"none",
+				    mask:true,
+				    duration: 2000
+				});
+				return;
+			}
+			this.form.tiemQuickList=this.tiemQuickList//检查周期快捷存储
+			this.form.scopeIndex=this.scopeIndex//检查范围
+			uni.navigateTo({
+			    url: '/pages_safetyExamine/patrolPlan/patrolPlanAddContent?form='+encodeURIComponent(JSON.stringify(this.form))+'&pageType=1'
+			});
+		},
 		//检查范围
 		scopeChange(e){
 			let _this=this;
-			console.log(this.scopeArray[e.target.value])
 			if(this.scopeArray[e.target.value]=='全校'){
 				_this.scopeIndex=0;
 				_this.form.checkRange=1;
@@ -243,12 +293,12 @@ export default {
 					confirmColor:"#0183FA",
 					success: function (res) {
 					  if (res.confirm) {
-						
+
 						_this.form.collegeIds ='';
 						_this.form.collegeNum =0;
 						_this.form.subIds ='';
 						_this.form.subjectNum =0;
-						
+
 						if(_this.scopeIndex==0){//全校
 						   _this.getAllSubNum();
 						}else if(_this.scopeIndex==1){//选择学院
@@ -256,9 +306,9 @@ export default {
 						}else if(_this.scopeIndex==2){
 							console.log('选择实验室')
 						}
-						
+
 					  } else if (res.cancel) {
-						  
+
 					  }
 					}
 				});
@@ -271,17 +321,17 @@ export default {
 					console.log('选择实验室')
 				}
 			}
-			
-			
+
+
 		},
 		timeSlotChange (val) {
-			  let _this=this;	
+			  let _this=this;
 		      let cycleStartTime, cycleEndTime;
-		      let now = new Date(); //当前日期 
-		      let nowDayOfWeek = now.getDay(); //今天本周的第几天 
-		      let nowDay = now.getDate(); //当前日 
-		      let nowMonth = now.getMonth(); //当前月 
-		      let nowYear = now.getFullYear(); //当前年 
+		      let now = new Date(); //当前日期
+		      let nowDayOfWeek = now.getDay(); //今天本周的第几天
+		      let nowDay = now.getDate(); //当前日
+		      let nowMonth = now.getMonth(); //当前月
+		      let nowYear = now.getFullYear(); //当前年
 		      let jd=Math.ceil((nowMonth + 1) / 3)
 		      switch (val) {
 		        case "本周":
@@ -321,19 +371,18 @@ export default {
 		patrolChange(){
 			this.form.tiemQuickList=this.tiemQuickList//检查周期快捷存储
 			this.form.scopeIndex=this.scopeIndex//检查范围
-			uni.redirectTo({
+			uni.navigateTo({
 			    url: '/pages_safetyExamine/patrolPlan/patrolPlanAddMember?form='+encodeURIComponent(JSON.stringify(this.form))+'&pageType=1'
 			});
 		},
 		//选择学院或者实验室
 		collegeOrLab(){
-			console.log(this.scopeIndex)
 			if(this.scopeIndex==1){//学院
 				this.dialogVisible=true;
 			}else if(this.scopeIndex==2){//实验室
 			    this.form.tiemQuickList=this.tiemQuickList//检查周期快捷存储
 			    this.form.scopeIndex=this.scopeIndex//检查范围
-				uni.redirectTo({
+				uni.navigateTo({
 				    url: '/pages_safetyExamine/patrolPlan/patrolPlanAddLab?form='+encodeURIComponent(JSON.stringify(this.form))+'&pageType=1'
 				});
 			}
@@ -342,7 +391,7 @@ export default {
 		dialogClose(){
 		   this.dialogVisible=false;
 	    },
-		
+
 		//选择学院确定
 		collegeConfirm(){
 			let _this=this;
@@ -385,14 +434,14 @@ export default {
 				this.form.subjectNum=data.data.subCount
 			}
 		},
-		
+
 	    handleClick(doType){
 		  let self=this;
+
+		  if( doType=='subBtn'){//
 		  
-		  if( doType=='subBtn'){//	
-			  console.log(11)
 		  }
-		  
+
 	    },
 		//巡查计划-添加
 		async submitForm(){
@@ -451,8 +500,8 @@ export default {
 				});
 				return;
 			}
-			
-			
+
+
 			const {data} = await checkPlanAdd(_this.form);
 			if(data.code == 200){
 			    uni.showToast({
@@ -464,12 +513,12 @@ export default {
 				uni.redirectTo({
 					url: '/pages_safetyExamine/patrolPlan/patrolPlanList?pageType='+this.form.checkType
 				});
-			   
+
 			}
 		},
-		
-		
-	  
+
+
+
   }
 }
 </script>
@@ -485,7 +534,7 @@ export default {
 	.info-max-box{
 		flex: 1;
 		overflow: scroll;
-		
+
 		padding: 0 30rpx;
 		box-sizing: border-box;
 	}
@@ -535,7 +584,7 @@ export default {
 				border-radius: 10rpx;
 				padding-left:22rpx;
 				box-sizing: border-box;
-                background: #F5F5F5;				
+                background: #F5F5F5;
 			}
 		}
 		.period{
@@ -605,7 +654,7 @@ export default {
 			.tiem_quick_a{
 				background: #0183FA;
 				color: #FFFFFF;
-				
+
 			}
 			.tiem_quick_b{
 				background: #F5F5F5;
@@ -651,6 +700,50 @@ export default {
 				}
 			}
 		}
+		.content{
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-top: 26rpx;
+			.content_l{
+				width: 146rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 42rpx;
+				text-align: left;
+			}
+			.content_r{
+				flex: 1;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				.content_r_l{
+					width: 220rpx;
+					height: 80rpx;
+					background: #0183FA;
+					border-radius: 10rpx 10rpx 10rpx 10rpx;
+					text-align: center;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #FFFFFF;
+					line-height: 80rpx;
+					margin-right: 26rpx;
+				}
+				.content_r_r{
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 42rpx;
+					>text{
+						color: #0183FA;
+					}
+				}
+			}
+		}
 		.scope_btn{
 			display: inline-block;
 			background: #0183FA;
@@ -811,7 +904,7 @@ export default {
 		background: #0183FA;
 		border-radius: 20rpx;
 		text-align: center;
-		
+
 	}
 	/* 指纹采集 */
 	.shade {
@@ -853,7 +946,7 @@ export default {
 				  font-weight: 400;
 				  color: #0183FA;
 				  line-height: 100rpx;
-				  
+
 			  }
 		  }
 		  .shade_n_b{
@@ -880,7 +973,7 @@ export default {
 					 width: 24rpx;
 					 height: 16rpx;
 					 margin-right: 14rpx;
-				 } 
+				 }
 			  }
 			  .color_A{
 				  color: #333333;
@@ -888,8 +981,8 @@ export default {
 			  .color_B{
 				  color: #0183FA;
 			  }
-			  
-			 
+
+
 		  }
 	  }
 	}

+ 18 - 15
pages_safetyExamine/patrolPlan/patrolPlanAddLab.vue

@@ -9,11 +9,10 @@
 			</view>
 		</picker>
 		<view class="lab_title_r">
-			<view class="lab_title_r_btn" @click="searchBtn">
-				<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+			<input type="text" v-model="getData.searchValue" placeholder="请输入实验室名称" name="search" @confirm='searchBtn'  confirm-type='search' maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
+			<view v-if="getData.searchValue>0" class="lab_title_r_btn" @click="clearBtn">
+				<img src="@/pages_safetyExamine/images/clear.png"/>
 			</view>
-			<input type="text" v-model="getData.searchValue" placeholder="请输入实验室名称" maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
-			<view class="clear" @click="clearBtn">清除</view>
 		</view>
 	  </view>
 	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
@@ -75,6 +74,7 @@ export default {
       
   },
   mounted(){
+	  this.dataList=[];
 	  this.conditionCollegeInfo();
 	  this.getList(); 
   },
@@ -150,15 +150,19 @@ export default {
 			})
 			this.$set(this.form,'subIds', subIds.join(','))
 		}
-		if(this.pageType==1){
-			uni.redirectTo({
-				url: '/pages_safetyExamine/patrolPlan/patrolPlanAdd?form='+encodeURIComponent(JSON.stringify(this.form))
-			});
-		}else if(this.pageType==2){
-			uni.redirectTo({
-				url: '/pages_safetyExamine/patrolPlan/patrolPlanEdit?form='+encodeURIComponent(JSON.stringify(this.form))
-			});
-		}
+		let pages=getCurrentPages();
+		let prevPage=pages[pages.length-2];//上一个页面
+		prevPage.onShow(encodeURIComponent(JSON.stringify(this.form)))
+		uni.navigateBack()
+		// if(this.pageType==1){
+		// 	uni.redirectTo({
+		// 		url: '/pages_safetyExamine/patrolPlan/patrolPlanAdd?form='+encodeURIComponent(JSON.stringify(this.form))
+		// 	});
+		// }else if(this.pageType==2){
+		// 	uni.redirectTo({
+		// 		url: '/pages_safetyExamine/patrolPlan/patrolPlanEdit?form='+encodeURIComponent(JSON.stringify(this.form))
+		// 	});
+		// }
 		
 	  		
 	  },
@@ -173,7 +177,6 @@ export default {
 				_this.collegeArray.push(data.data[i].deptName)
 			}
 			_this.collegeList=data.data;
-			console.log()
 	  	}
 	  },
 	  async getList(){
@@ -261,7 +264,7 @@ export default {
 				height: 80rpx
 				position: absolute;
 				top: 0rpx;
-				left:0rpx;
+				right:0rpx;
 				>img{
 					width: 20rpx;
 					height: 20rpx;

+ 35 - 20
pages_safetyExamine/patrolPlan/patrolPlanAddMember.vue

@@ -5,10 +5,11 @@
 		<view>
 			<view class="lab_title">
 				<view class="lab_title_n">
-					<view class="lab_title_r_btn" @click="searchBtn">
-						<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+					<input type="text" v-model="getData.searchValue" placeholder="请输入巡查组名称" name="search" @confirm='searchBtn'  confirm-type='search' maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
+					
+					<view class="lab_title_r_btn" v-if="getData.searchValue>0" @click="clearBtn">
+						<img src="@/pages_safetyExamine/images/clear.png"/>
 					</view>
-					<input type="text" v-model="getData.groupName" placeholder="请输入巡查组名称" maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
 				</view>
 			</view>
 			<view class="list">
@@ -38,7 +39,7 @@ export default {
       //列表请求参数
       getData:{
 		checkLevel:'0',
-		groupName:'',
+		searchValue:'',
 		checkLevel:'',
 		
 		
@@ -63,6 +64,7 @@ export default {
 	  }
   },
   onShow() {
+	  this.dataList=[];
       this.getList(); 
   },
   mounted(){
@@ -85,6 +87,7 @@ export default {
 	  //点击选择实验室
 	  labSelete(index){
 		let _this = this;
+		this.seleteListMember=[];
 	  	this.dataList[index].type = !this.dataList[index].type
 		if (_this.dataList[index].type == true) {
 			_this.dataList.forEach(function(item2) {
@@ -95,17 +98,25 @@ export default {
 			  }
 			})
 		}
-		if(this.dataList[index].type){//判断是选中还是取消
-			this.seleteListMember.push(this.dataList[index])
-		}else{
-			this.seleteListMember=[];
-		}
+		this.seleteListMember.push(this.dataList[index])
+		// if(this.dataList[index].type){//判断是选中还是取消
+		// 	this.seleteListMember.push(this.dataList[index])
+		// }else{
+		// 	this.seleteListMember=[];
+		// }
 	  },
 	  //实验室搜索
 	  searchBtn(){
 		  this.dataList=[];
 		  this.getList();
 	  },
+	  //清除按钮
+	  clearBtn(){
+	  		this.getData.pageNum=1;
+	  		this.getData.searchValue= '';
+	  		this.dataList=[];
+	  		this.getList();
+	  },
 	  handleClick(doType){
 		  let self=this;
 		  if( doType=='subBtn'){//保存数据
@@ -115,6 +126,7 @@ export default {
 	  //巡查组-保存
 	  async submitForm(){
 	  	let _this = this;
+		console.log(this.seleteListMember)
 		let id=this.seleteListMember[0].id
 		this.form.checkMemberDtoList=[];
 		
@@ -135,18 +147,21 @@ export default {
 				}
 				this.form.checkMemberDtoList.push(obj)	
 			}
+			let pages=getCurrentPages();
+			let prevPage=pages[pages.length-2];//上一个页面
+			prevPage.onShow(encodeURIComponent(JSON.stringify(this.form)))
+			uni.navigateBack()
 			
 			
-			
-			if(this.pageType==1){
-				uni.redirectTo({
-				    url: '/pages_safetyExamine/patrolPlan/patrolPlanAdd?form='+encodeURIComponent(JSON.stringify(this.form))
-				});
-			}else if(this.pageType==2){
-				uni.redirectTo({
-				    url: '/pages_safetyExamine/patrolPlan/patrolPlanEdit?form='+encodeURIComponent(JSON.stringify(this.form))
-				});
-			}
+			// if(this.pageType==1){
+			// 	uni.redirectTo({
+			// 	    url: '/pages_safetyExamine/patrolPlan/patrolPlanAdd?form='+encodeURIComponent(JSON.stringify(this.form))
+			// 	});
+			// }else if(this.pageType==2){
+			// 	uni.redirectTo({
+			// 	    url: '/pages_safetyExamine/patrolPlan/patrolPlanEdit?form='+encodeURIComponent(JSON.stringify(this.form))
+			// 	});
+			// }
 			
 	  	}
 		
@@ -208,7 +223,7 @@ export default {
 				height: 80rpx
 				position: absolute;
 				top: 0rpx;
-				left:0rpx;
+				right: 0rpx;
 				>img{
 					width: 20rpx;
 					height: 20rpx;

+ 173 - 73
pages_safetyExamine/patrolPlan/patrolPlanEdit.vue

@@ -23,15 +23,14 @@
 				</view>
 			</picker>
 			<view class="lab_title_r">
-				<view class="lab_title_r_btn" @click="searchBtn">
-					<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+				<input type="text" v-model="getData.searchValue" placeholder="请输入实验室名称" name="search" @confirm='searchBtn'  confirm-type='search' maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
+				<view v-if="getData.searchValue>0" class="lab_title_r_btn" @click="clearBtn">
+					<img src="@/pages_safetyExamine/images/clear.png"/>
 				</view>
-				<input type="text" v-model="getData.searchValue" placeholder="请输入实验室名称" maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
-				<view class="clear" @click="clearBtn">清除</view>
 			</view>
 		</view>
 	</view>
-	
+
 	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
 		<view v-if="pageType==0" style="padding: 0 30rpx;box-sizing: border-box;">
 			<view class="delay_inspect" >
@@ -47,18 +46,18 @@
 					<textarea class="title_b" type="text" v-model="form.title" maxlength="200" placeholder="请输入检查计划标题" placeholder-style="color:#999999;font-size:30rpx;"></textarea>
 				</view>
 				<view class="type">
-					<view class="type_l">检查类型</view>
+					<view class="type_l">检查组织</view>
 					<input class="type_r" type="text" v-model="form.checkTypeName" placeholder="" disabled maxlength="20">
 				</view>
-				<view class="period">		
-					<view class="period_l">检查周期</view>
+				<view class="period">
+					<view class="period_l">计划周期</view>
 					<view class="period_r">
 						<picker mode="date" @change="startChange(form,$event)">
 							<input class="picker-text"  disabled type="text" v-model="form.cycleStartTime" placeholder="开始时间">
 						</picker>
 						<view>至</view>
 						<picker mode="date"  @change="endChange(form,$event)">
-							<input class="picker-text2" disabled type="text" v-model="form.cycleStartTime" placeholder="结束时间">
+							<input class="picker-text2" disabled type="text" v-model="form.cycleEndTime" placeholder="结束时间">
 						</picker>
 					</view>
 				</view>
@@ -66,6 +65,22 @@
 					<view @click="tiemQuick(index)" :class="item.type?'tiem_quick_a':'tiem_quick_b'" v-for="(item,index) in tiemQuickList">{{item.name}}</view>
 				</view>
 				<view class="scope">
+					<view class="scope_l">检查类型</view>
+					<picker @change="categoryChange" :value="categoryIndex" :range="categoryArray" class="scope_r">
+						<view class="scope_r_n">
+							<view>{{form.checkCategory==1?'综合检查':(form.checkCategory==2?'专项检查':'请选择检查类型')}}</view>
+							<img src="@/pages_safetyExamine/images/icon_06.png">
+						</view>
+					</picker>
+				</view>
+				<view class="content" v-if="form.checkCategory==2">
+					<view class="content_l">检查内容</view>
+					<view class="content_r">
+						<view class="content_r_l" @click="clickContent()">选择检查内容</view>
+						<view class="content_r_r">已选择<text>{{form.hazardNum}}</text>种</view>
+					</view>
+				</view>
+				<view class="scope">
 					<view class="scope_l">检查范围</view>
 					<picker @change="scopeChange" :value="scopeIndex" :range="scopeArray" class="scope_r">
 						<view class="scope_r_n">
@@ -79,7 +94,7 @@
 				<view class="scope_text" v-if="scopeIndex==2">已选择<text>{{form.subjectNum}}</text>间实验室</view>
 				<view class="title">
 					<view class="title_t">检查要求</view>
-					<textarea class="title_b" type="text" v-model="form.checkDemand" maxlength="200" placeholder="请输入检查要求" placeholder-style="color:#999999;font-size:30rpx;"></textarea>
+					<textarea class="title_b" type="text" v-model="form.checkDemand" maxlength="100" placeholder="请输入检查要求" placeholder-style="color:#999999;font-size:30rpx;"></textarea>
 				</view>
 			</view>
 			<view class="attachment" v-if="form.uploadDtoList.length>0">
@@ -129,7 +144,7 @@
 							<text class="blue_color" v-if="item.manageStatus==0">待检查</text>
 							<text class="red_color" v-if="item.manageStatus==1">检查中</text>
 							<text class="green_color" v-if="item.manageStatus==2">已检查</text>
-							<text>{{item.checkType==1?'校院巡查':'实验室自查'}}</text>
+							<text>{{item.checkType==1?'校院巡查':'实验室自查'}}-{{item.checkCategory==1?'综合检查':'专项检查'}}</text>
 							<text>{{item.collegeName}}</text>
 						</view>
 					</view>
@@ -142,7 +157,7 @@
 				</view>
 			</view>
 		</view>
-	</scroll-view>	
+	</scroll-view>
 	<view class="bottom_btn" v-if="form.checkStatus==1" @click="submitForm()">保存</view>
 	 <!-- 选择学院-->
 	<view class="shade" v-if="dialogVisible">
@@ -167,7 +182,7 @@ import {checkPlanById,conditionCollegeInfo,checkGroupDetail,getAllSubNum,checkPl
 export default {
   name: "rectifyList",
   components: {
-   
+
   },
   data() {
     return {
@@ -184,14 +199,16 @@ export default {
 		 manageStatus:'',
 		},
 		inspectState:0,//检查状态 0 未开始 1进行中
-		tabText:['检查计划','检查管理'],
+		tabText:[],
 		curTab:0,
 		tabTextTow:['全部','待检查','检查中','已检查'],
 		curTabTow:0,
+		categoryIndex:0,
+		categoryArray:['综合检查','专项检查'],
 		form:{
 			id:'',
 			title:'',
-			checkType:'1',//1校院巡查 2实验室自查
+			checkType:'',//1校院巡查 2实验室自查
 			checkTypeName:'',//1校院巡查 2实验室自查
 			cycleStartTime:'',
 			cycleEndTime:'',
@@ -203,14 +220,17 @@ export default {
 			collegeNum:0,//学院数量
 			subIds:'',//实验室id组
 			subjectNum:0,//实验室数量
+			hazardNum:0,//检查设备数量
 			checkStatus:0,//检查状态
 			checkSchedule:'',//检查进度
 			checkDemand:'',//检查要求
 			tiemQuickList:[],
 			scopeIndex:'',
 			seleteListLab:[],
+			seleteListDevice:[],
 			seleteListMember:[],
 			uploadDtoList:[],
+            checkCategory:'',//检查类型
 		},
 		tiemQuickList:[{name:'本月',type:false},{name:'本季度',type:false},{name:'全年',type:false}],
 		scopeIndex:0,
@@ -223,12 +243,7 @@ export default {
 	}
   },
   onLoad(option) {
-	 if(option.form){
-	 		this.form=JSON.parse(decodeURIComponent(option.form)); 
-	 		this.tiemQuickList=this.form.tiemQuickList//时间快捷
-	 		this.scopeIndex=this.form.scopeIndex//检查范围
-	 		console.log(this.form)
-	 }
+	
 	 if(option.id){
 		 this.id=option.id
 		 this.getData.checkPlanId=option.id
@@ -237,9 +252,15 @@ export default {
 		 this.id=this.form.id
 		 this.getData.checkPlanId=this.form.id
 	 }
+	 console.log(this.form.checkType)
+	 
   },
-  onShow() {
-	  
+  onShow(form) {
+	if(form){
+		this.form=JSON.parse(decodeURIComponent(form));
+		this.tiemQuickList=this.form.tiemQuickList//时间快捷
+		this.scopeIndex=this.form.scopeIndex//检查范围
+	 }
   },
   mounted(){
 	  this.conditionCollegeInfo();
@@ -307,7 +328,7 @@ export default {
 			this.getData.deptId=this.collegeList[e.target.value].deptId
 			this.getData.deptName=this.collegeList[e.target.value].deptName
 			this.dataList=[];
-			this.getList(); 
+			this.getList();
 		},
 		//实验室搜索
 		searchBtn(){
@@ -333,12 +354,12 @@ export default {
 				}else{
 						setTimeout(function(){
 							self.getData.pageNum += 1;
-							self.getList(); 
+							self.getList();
 						},1000)
-							 
+
 				}
 			}
-			
+
 		},
 	    //开始时间选中事件
 	    startChange(form,e){
@@ -351,6 +372,10 @@ export default {
 	    		});
 	    	}else{
 	    		form.cycleStartTime=e.target.value
+				this.tiemQuickList.forEach(function(item){
+					item.type=false;
+				})
+				
 	    	}
 	    },
 	    //结束时间选中事件
@@ -364,6 +389,9 @@ export default {
 	    		});
 	    	}else{
 	    		form.cycleEndTime=e.target.value
+				this.tiemQuickList.forEach(function(item){
+					item.type=false;
+				})
 	    	}
 	    },
 	    //检查周期快捷
@@ -385,8 +413,25 @@ export default {
 	    		_this.form.cycleStartTime='';
 	    		_this.form.cycleEndTime='';
 	    	}
-	    	
+
 	    },
+		//检查类型
+		categoryChange(e){
+			let _this=this;
+			if(e.target.value==0){
+				this.form.checkCategory=1
+			}else if(e.target.value==1){
+				this.form.checkCategory=2
+			}
+		},
+		//检查内容
+		clickContent(){
+			this.form.tiemQuickList=this.tiemQuickList//检查周期快捷存储
+			this.form.scopeIndex=this.scopeIndex//检查范围
+			uni.redirectTo({
+			    url: '/pages_safetyExamine/patrolPlan/patrolPlanAddContent?form='+encodeURIComponent(JSON.stringify(this.form))+'&pageType=1'
+			});
+		},
 	    //检查范围
 	    scopeChange(e){
 	    	let _this=this;
@@ -398,7 +443,7 @@ export default {
 	    		  if (res.confirm) {
 					_this.scopeIndex = e.target.value;
 					_this.form.checkRange=Number(e.target.value)+1;//检查范围
-					
+
 					_this.form.collegeIds ='';
 					_this.form.collegeNum =0;
 					_this.form.subIds ='';
@@ -409,19 +454,19 @@ export default {
 						_this.getAllSubNum();
 					}
 	    		  }else if (res.cancel) {
-	    			  
+
 	    		  }
 	    		}
 	    	});
 	    },
 		timeSlotChange (val) {
-			  let _this=this;	
+			  let _this=this;
 		      let cycleStartTime, cycleEndTime;
-		      let now = new Date(); //当前日期 
-		      let nowDayOfWeek = now.getDay(); //今天本周的第几天 
-		      let nowDay = now.getDate(); //当前日 
-		      let nowMonth = now.getMonth(); //当前月 
-		      let nowYear = now.getFullYear(); //当前年 
+		      let now = new Date(); //当前日期
+		      let nowDayOfWeek = now.getDay(); //今天本周的第几天
+		      let nowDay = now.getDate(); //当前日
+		      let nowMonth = now.getMonth(); //当前月
+		      let nowYear = now.getFullYear(); //当前年
 		      let jd=Math.ceil((nowMonth + 1) / 3)
 		      switch (val) {
 		        case "本周":
@@ -513,7 +558,7 @@ export default {
 					item.type=false;
 				})
 				_this.collegeList=data.data;
-				
+
 				//检查管理
 				for(let i=0;i<data.data.length;i++){
 					_this.collegeArray.push(data.data[i].deptName)
@@ -551,14 +596,29 @@ export default {
 				this.form.checkStatus=data.data.checkStatus;
 				this.form.checkSchedule=data.data.checkSchedule;
 				this.form.checkDemand=data.data.checkDemand;
-				
+				this.form.checkCategory=data.data.checkCategory;
+				this.form.hazardNum=data.data.hazardNum;
+				this.form.hazardIds=data.data.hazardIds;
+
 				this.scopeIndex=Number(data.data.checkRange)-1;//检查范围
 				this.$set(this.form,'checkMemberDtoList',data.data.checkMemberDtoList)
 				//this.$set(this.form,'checkGroupName',data.data.groupName)
 				// if(data.data.checkGroupId){//判断如果有巡查组id
 				// 	this.checkGroupDetail(data.data.checkGroupId);
 				// }
-				
+				if(this.form.checkType==1){//校院巡查
+					this.tabText=['检查计划','检查管理']
+					uni.setNavigationBarTitle({
+						title:'计划详情'
+					});
+
+				}else if(this.form.checkType==2){//实验室自查
+					this.tabText=['自查任务','检查管理']
+					uni.setNavigationBarTitle({
+						title:'任务详情'
+					});
+				}
+
 			}
 		},
 		//根据id查询巡查组员
@@ -566,23 +626,23 @@ export default {
 			let _this = this;
 			const {data} = await checkGroupDetail({id:id,selectEnable:'1'});
 			if(data.code == 200){
-				
-				 
+
+
 			}
 		},
-		
-		
+
+
 	    handleClick(item,doType){
 		  let self=this;
-		  
+
 		  if( doType=='subBtn'){
-			  
+
 		  }else if(doType=='detail'){//详情
 			if(item.manageStatus==1){//检查中
-				if(item.isSelfData==1){			 
+				if(item.isSelfData==1){
 					uni.navigateTo({
 						url: '/pages_safetyExamine/examineManage/examineAdd?id='+item.id
-					});				 
+					});
 				}else{
 					uni.showToast({
 						  title: '当前用户暂无操作数据权限!',
@@ -590,23 +650,19 @@ export default {
 						  mask:true,
 						  duration: 2000
 					});
-				}			 
+				}
 			}else{
 				uni.navigateTo({
-					  url: '/pages_safetyExamine/examineManage/examineDetail?id='+item.id+'&manageStatus='+item.manageStatus+'&isSelfData='+item.isSelfData
+					  url: '/pages_safetyExamine/examineManage/examineDetail?id='+item.id+'&manageStatus='+item.manageStatus+'&isSelfData='+item.isSelfData+'&isEndProcess='+item.isEndProcess
 				});
 			}
-			
-			  
-			  
-			 
 		  }
-		  
+
 	    },
 		//巡查计划-修改
 		async submitForm(){
 			let _this = this;
-			
+
 			const {data} = await checkPlanEdit(_this.form);
 			if(data.code == 200){
 			    uni.showToast({
@@ -618,10 +674,10 @@ export default {
 				uni.redirectTo({
 					url: '/pages_safetyExamine/patrolPlan/patrolPlanList?pageType='+this.form.checkType
 				});
-			   
+
 			}
 		},
-		async getList(){ 
+		async getList(){
 		    let self = this;
 		    const {data} = await findByCheckPlanId(this.getData);
 		    if(data.code==200){
@@ -629,7 +685,7 @@ export default {
 					this.dataList=[...this.dataList,...data.data.records]
 			}
 		},
-	  
+
   }
 }
 </script>
@@ -709,7 +765,7 @@ export default {
 					display block;
 				}
 			}
-	
+
 		}
 		.tabTitle_li:nth-of-type(1)::after{
 			content: '';
@@ -724,7 +780,7 @@ export default {
 	.info-max-box{
 		flex: 1;
 		overflow: scroll;
-		
+
 		padding: 120rpx 0rpx 0;
 		box-sizing: border-box;
 	}
@@ -820,7 +876,7 @@ export default {
 				border-radius: 10rpx;
 				padding-left:22rpx;
 				box-sizing: border-box;
-                background: #F5F5F5;				
+                background: #F5F5F5;
 			}
 		}
 		.period{
@@ -890,7 +946,7 @@ export default {
 			.tiem_quick_a{
 				background: #0183FA;
 				color: #FFFFFF;
-				
+
 			}
 			.tiem_quick_b{
 				background: #F5F5F5;
@@ -936,6 +992,50 @@ export default {
 				}
 			}
 		}
+		.content{
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			margin-top: 26rpx;
+			.content_l{
+				width: 146rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 400;
+				color: #333333;
+				line-height: 42rpx;
+				text-align: left;
+			}
+			.content_r{
+				flex: 1;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				.content_r_l{
+					width: 220rpx;
+					height: 80rpx;
+					background: #0183FA;
+					border-radius: 10rpx 10rpx 10rpx 10rpx;
+					text-align: center;
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #FFFFFF;
+					line-height: 80rpx;
+					margin-right: 26rpx;
+				}
+				.content_r_r{
+					font-size: 30rpx;
+					font-family: PingFang SC-Medium, PingFang SC;
+					font-weight: 400;
+					color: #333333;
+					line-height: 42rpx;
+					>text{
+						color: #0183FA;
+					}
+				}
+			}
+		}
 		.scope_btn{
 			display: inline-block;
 			background: #0183FA;
@@ -1184,7 +1284,7 @@ export default {
 						display block;
 					}
 				}
-		
+
 			}
 		}
 		.lab_title{
@@ -1195,7 +1295,7 @@ export default {
 			box-sizing: border-box;
 			display: flex;
 			justify-content: flex-start;
-			
+
 			.lab_title_l{
 				width: 250rpx;
 				height: 60rpx;
@@ -1236,7 +1336,7 @@ export default {
 					height: 60rpx
 					position: absolute;
 					top: 0rpx;
-					left:0rpx;
+					right:0rpx;
 					>img{
 						width: 20rpx;
 						height: 20rpx;
@@ -1266,7 +1366,7 @@ export default {
 				}
 			}
 		}
-		
+
 	}
 	.list_three{
 		padding: 0 30rpx;
@@ -1388,7 +1488,7 @@ export default {
 					}
 					>text:nth-of-type(3){
 						display: inline-block;
-						width: 350rpx;
+						width: 200rpx;
 						font-size: 26rpx;
 						font-family: PingFang SC-Medium, PingFang SC;
 						font-weight: 400;
@@ -1397,7 +1497,7 @@ export default {
 						overflow: hidden;
 						text-overflow:ellipsis;
 						white-space: nowrap;
-						
+
 					}
 				}
 			}
@@ -1452,7 +1552,7 @@ export default {
 		background: #0183FA;
 		border-radius: 20rpx;
 		text-align: center;
-		
+
 	}
 	/* 指纹采集 */
 	.shade {
@@ -1494,7 +1594,7 @@ export default {
 				  font-weight: 400;
 				  color: #0183FA;
 				  line-height: 100rpx;
-				  
+
 			  }
 		  }
 		  .shade_n_b{
@@ -1521,7 +1621,7 @@ export default {
 					 width: 24rpx;
 					 height: 16rpx;
 					 margin-right: 14rpx;
-				 } 
+				 }
 			  }
 			  .color_A{
 				  color: #333333;
@@ -1529,8 +1629,8 @@ export default {
 			  .color_B{
 				  color: #0183FA;
 			  }
-			  
-			 
+
+
 		  }
 	  }
 	}

+ 48 - 40
pages_safetyExamine/patrolPlan/patrolPlanList.vue

@@ -10,10 +10,10 @@
 	<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
 		<view>
 			<view class="search">
-				<view class="search_btn"  @click="searchBtn">
-					<img src="@/pages_safetyExamine/images/icon_aqjc_ss.png"/>
+				<input type="text" v-model="getData.searchValue" placeholder="计划标题" name="search" @confirm='searchBtn'  confirm-type='search' maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
+				<view class="search_btn" v-if="getData.searchValue>0" @click="clearBtn">
+					<img src="@/pages_safetyExamine/images/clear.png"/>
 				</view>
-				<input type="text" v-model="getData.searchValue" placeholder="计划标题" maxlength="50" placeholder-style="color: #CCCCCC;font-size:26rpx;">
 			</view>
 			<view class="list">
 				<view class="list_li" v-for="(item,index) in  dataList" :key="index" @click="handleClick(item,'edit')">
@@ -34,7 +34,7 @@
 							<text class="blue_color" v-if="item.checkStatus==1">未开始</text>
 							<text class="red_color" v-if="item.checkStatus==2">进行中</text>
 							<text class="green_color" v-if="item.checkStatus==3">已结束</text>
-							<text>{{item.checkType==1?'校院巡查':'实验室自查'}}</text>
+							<text>{{item.checkType==1?'校院巡查':'实验室自查'}}-专项检查</text>
 						</view>
 					</view>
 					<view class="list_li_b">
@@ -48,7 +48,7 @@
 			</view>
 		</view>
 		<img class="null-img" v-if="!dataList[0]" src="@/images/null-data-1.png">
-	</scroll-view>	
+	</scroll-view>
 	<view class="bottom_btn" @click="handleClick('','subBtn')">{{subBtnTitle}}</view>
   </view>
 
@@ -60,7 +60,7 @@ import {checkPlanList} from '@/api/index.js'
 export default {
   name: "rectifyList",
   components: {
-   
+
   },
   data() {
     return {
@@ -94,15 +94,29 @@ export default {
 		  })
 		  this.subBtnTitle='发起自查计划';
 	  }
-		
+
   },
   onShow() {
-      this.getList(); 
+	  this.dataList=[];
+      this.getList();
   },
   mounted(){
-	  
+
   },
+ 
   methods: {
+	  //实验室搜索
+	  searchBtn(){
+	  	  this.dataList=[];
+	  	  this.getList();
+	  },
+	  //清除按钮
+	  clearBtn(){
+		  this.getData.pageNum=1;
+		  this.getData.searchValue= '';
+		  this.dataList=[];
+		  this.getList();
+	  },
 	  //滚动事件
 	  scrollGet(){
 		  let self=this;
@@ -111,17 +125,12 @@ export default {
 	      }else{
 			  setTimeout(function(){
 				  self.getData.pageNum += 1;
-				  self.getList(); 
+				  self.getList();
 			  },1000)
-			 
+
 		  }
 	  },
-	  //实验室搜索
-	  searchBtn(){
-		  console.log(1)
-		  this.dataList=[];
-		  this.getList();
-	  },
+	  
 	  //顶部tab点击
 	  tabClick(index) {
 	  	this.curTab = index;
@@ -132,17 +141,17 @@ export default {
 	  },
 	  handleClick(row,doType){
 		  let self=this;
-		  
-		  if( doType=='subBtn'){//发起巡查计划	
-			 uni.redirectTo({
+
+		  if( doType=='subBtn'){//发起巡查计划
+			 uni.navigateTo({
 			     url: '/pages_safetyExamine/patrolPlan/patrolPlanAdd?pageType='+this.getData.checkType
 			 });
 		  }else if(doType=='edit'){//编辑
-			  uni.redirectTo({
+			  uni.navigateTo({
 			      url: '/pages_safetyExamine/patrolPlan/patrolPlanEdit?pageType='+row.checkType+'&id='+row.id
 			  });
 		  }
-		  
+
 	  },
 	  async getList(){
 		  let self = this;
@@ -222,7 +231,7 @@ export default {
 					display block;
 				}
 			}
-	
+
 		}
 	}
 	.search{
@@ -233,12 +242,24 @@ export default {
 		box-sizing: border-box;
 		position: relative;
 		margin-top: 20rpx;
+		>input{
+			position: absolute;
+			top: 20rpx;
+			left: 30rpx;
+			width: 690rpx;
+			height: 60rpx;
+			border-radius: 50rpx;
+			opacity: 1;
+			border: 1rpx solid #E0E0E0;
+			padding:0  74rpx 0 30rpx;
+			box-sizing: border-box;
+		}
 		.search_btn{
 			width: 70rpx;
 			height: 60rpx;
 			position: absolute;
 			top: 20rpx;
-			left: 30rpx;
+			right: 30rpx;
 			z-index: 200;
 			>img{
 				width: 20rpx;
@@ -248,19 +269,6 @@ export default {
 				left: 24rpx;
 			}
 		}
-		
-		>input{
-			position: absolute;
-			top: 20rpx;
-			left: 30rpx;
-			width: 690rpx;
-			height: 60rpx;
-			border-radius: 50rpx;
-			opacity: 1;
-			border: 1rpx solid #E0E0E0;
-			padding-left: 74rpx;
-			box-sizing: border-box;
-		}
 	}
 	.list{
 		padding: 0 30rpx;
@@ -409,7 +417,7 @@ export default {
 			}
 		}
 	}
-	
+
 	.bottom_btn{
 		position: fixed;
 		bottom: 26rpx;
@@ -424,8 +432,8 @@ export default {
 		background: #0183FA;
 		border-radius: 20rpx;
 		text-align: center;
-		
+
 	}
-	
+
 }
 </style>

+ 3 - 3
pages_safetyExamine/snapshotManage/snapshotAdd.vue

@@ -127,11 +127,11 @@ export default {
 	    handleClick(doType){
 		  let self=this;
 		  if( doType=='manage'){//随手拍管理
-			  uni.redirectTo({
+			  uni.navigateTo({
 			      url: '/pages_safetyExamine/snapshotManage/snapshotList?pageType=1'
 			  });
 		  }else if(doType=='self'){//随手拍上报记录
-			  uni.redirectTo({
+			  uni.navigateTo({
 			      url: '/pages_safetyExamine/snapshotManage/snapshotList?pageType=2'
 			  });
 		  }else if(doType=='subBtn'){//提交
@@ -347,7 +347,7 @@ export default {
 			        mask:true,
 			        duration: 2000
 			    });
-				uni.redirectTo({
+				uni.navigateTo({
 					  url: '/pages_safetyExamine/snapshotManage/snapshotList?pageType=2'
 				});
 			   

+ 2 - 1
pages_safetyExamine/snapshotManage/snapshotList.vue

@@ -102,6 +102,7 @@ export default {
 	  
   },
   mounted(){
+	 this.dataList=[];
 	 this.getList()
   },
   methods: {
@@ -132,7 +133,7 @@ export default {
 		  if( doType=='subBtn'){//	
 		  
 		  }else if(doType=='detail'){//详情
-			  uni.redirectTo({
+			  uni.navigateTo({
 			  	 url: '/pages_safetyExamine/snapshotManage/snapshotDetail?id='+item.id+'&rectifyStatus='+this.getData.rectifyStatus+'&pageType='+this.pageType
 			  })
 		  }