heyang vor 7 Monaten
Ursprung
Commit
5873b22b2d

+ 6 - 1
pages.json

@@ -1,6 +1,11 @@
 {
 	"pages": [
-		
+		{
+			"path": "pages/views/sceneInspect/sceneInspect", 
+			"style": {
+				"navigationBarTitleText": "现场检查"
+			}
+		},
 		{
 			"path": "pages/views/login/login", //登录
 			"style": {

+ 439 - 0
pages/views/sceneInspect/sceneInspect.vue

@@ -0,0 +1,439 @@
+<!-- 现场检查 -->
+<template>
+	<view class="planDetail">
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+			<view class="header">
+				<img class="header-bg" src="@/pages_safetyCheck/images/img_banner@1x.png">
+				<view class="tabTitle">
+					<view class="tabTitle_li" @tap="tabClick(index)" :key="index" v-for="(item,index) in tabText">
+						<view class="tabTitle_text">
+							<img :src="item.img">
+							<view
+								:id="curTab==index && curTab==0?'fontColor-A':(curTab==index && curTab==1?'fontColor-B':'')">
+								{{item.name}}
+							</view>
+							<view>{{item.title}}</view>
+						</view>
+						<view class="line"></view>
+						<view :class="{on:curTab==index}" class="tabTitle_across">
+							<img src="@/pages_safetyCheck/images/img_xyzc_bg@1x.png">
+						</view>
+					</view>
+				
+				</view>
+			</view>
+			<view class="list">
+				<view class="list-li" @click="planClick(item)" v-for="(item,index) in dataList">
+					<view :id="item.status==0?'bgColor-A':'bgColor-B'">{{item.status==0?'全部检查':'专项检查'}}</view>
+					<view>{{item.title}}</view>
+					<img src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
+				</view>
+			</view>
+
+		</scroll-view>
+		<view class="shade" v-if="dialogVisible">
+			<view class="null-box" @click="dialogClose()"></view>
+			<view class="shade_n">
+				<view class="title">
+					<view>检查批次</view>
+					<img src="@/pages_safetyCheck/images/icon_06.png">
+				</view>
+				<view class="batch">
+					<view class="batch-li" @click="batchClick(item)" v-for="(item,index) in batchList">
+						<view class="batch-li-l">
+							<text>{{item.title}}</text>
+							<text>开始检查日期:{{item.time}}</text>
+						</view>
+						<view class="batch-li-r">检查进度{{item.schedule}}
+							<img src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+
+</template>
+
+<script>
+	import {
+		config
+	} from '@/api/request/config.js'
+	import {} from '@/pages/api/index.js'
+	export default {
+		name: "planDetail",
+		components: {
+
+		},
+		data() {
+			return {
+				baseUrl: config.base_url,
+				pageType: 0,
+				tabText: [{
+						name: '校级检查',
+						title: '学校检查计划',
+						img: require('@/pages_safetyCheck/images/icon_aqjc_xjjc@1x.png'),
+					},
+					{
+						name: '学院自查',
+						title: '学院自查计划',
+						img: require('@/pages_safetyCheck/images/icon_aqjc_xxzc@1x.png'),
+					},
+					{
+						name: '现场检查',
+						title: '检查隐患草稿',
+						img: require('@/pages_safetyCheck/images/icon_aqjc_xcjc@1x.png'),
+					},
+					{
+						name: '随手拍',
+						title: '隐患上报整改',
+						img: require('@/pages_safetyCheck/images/icon_aqjc_ssp@1x.png'),
+					},
+				],
+				curTab: 0,
+				dataList: [{
+						status: 0,
+						title: '计划标题计划标题计划标题计划标题计划标题计划标题计划标题计划标题',
+					},
+					{
+						status: 1,
+						title: '计划标题计划标题计划标题计划标题',
+					}
+				],
+				dialogVisible: false,
+				batchList:[
+					{
+						title:'第3次检查',
+						time:'2024-04-01',
+						schedule:'0%',
+					},
+					{
+						title:'第3次检查',
+						time:'2024-04-01',
+						schedule:'0%',
+					},
+					{
+						title:'第3次检查',
+						time:'2024-04-01',
+						schedule:'0%',
+					},
+					{
+						title:'第3次检查',
+						time:'2024-04-01',
+						schedule:'0%',
+					},
+					{
+						title:'第3次检查',
+						time:'2024-04-01',
+						schedule:'0%',
+					},
+				],
+			}
+		},
+		onLoad(option) {
+
+
+		},
+		onShow() {
+
+		},
+		mounted() {
+
+		},
+		methods: {
+			//滚动事件
+			scrollGet() {},
+			//顶部tab点击
+			tabClick(index) {
+				this.curTab = index;
+				if(index==0){
+					//校级检查
+					
+				}else if(index==1){
+					//学院自查
+					
+				}else if(index==2){
+					//现场检查
+					
+				}else if(index==3){
+					//随手拍
+					uni.navigateTo({
+						url: "/pages_safetyCheck/views/snapshotManage/snapshotList",
+					});
+				}
+			},
+			//检查批次点击
+			batchClick(row){
+				let infoData=row;
+				infoData.pageType=this.curTab;
+				uni.navigateTo({
+					url: '/pages_safetyCheck/views/inspectManage/inspectList?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+				});
+			},
+			planClick(row){
+				//如果只有1个检查批次不弹窗
+				this.dialogVisible = true;
+			},
+			dialogClose() {
+				this.dialogVisible = false;
+			},
+
+		}
+	}
+</script>
+
+<style lang="stylus" scoped>
+	.planDetail {
+		height: 100%;
+		display flex;
+		box-sizing: border-box;
+
+		#fontColor-A {
+			color: #0040C1;
+		}
+
+		#fontColor-B {
+			color: #009519;
+		}
+
+		#bgColor-A {
+			color: #0183FA;
+			background: rgba(1, 131, 250, 0.2);
+		}
+
+		#bgColor-B {
+			color: #16B531;
+			background: rgba(22, 181, 49, 0.2);
+		}
+
+
+		.header {
+			width: 100%;
+			position: fixed;
+			top: 0rpx;
+			z-index: 100;
+			.header-bg{
+				width: 750rpx;
+				height: 336rpx;
+				position: absolute;
+				
+			}
+			.tabTitle {
+				width: 690rpx;
+				height: 250rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx 20rpx 20rpx 20rpx;
+				display flex;
+				justify-content: flex-start;
+				align-items: center;
+				position: absolute;
+				left: 30rpx;
+				top: 208rpx;
+				
+				.tabTitle_li {
+					height: 250rpx;
+					flex: 1;
+					position: relative;
+					text-align center;
+					.line{
+						width: 2rpx;
+						height: 30rpx;
+						background: #D8D8D8;
+						border-radius: 0rpx 0rpx 0rpx 0rpx;
+						position: absolute;
+						top: 40%;
+					}
+					.tabTitle_text {
+						display: flex;
+						justify-content: center;
+						flex-direction: column;
+						align-items: center;
+
+						>img {
+							width: 80rpx;
+							height: 80rpx;
+							margin-top: 48rpx;
+						}
+
+						>view:nth-of-type(1) {
+							font-size: 28rpx;
+							color: #333333;
+							line-height: 40rpx;
+							text-align: left;
+							margin-top: 8rpx;
+						}
+
+						>view:nth-of-type(2) {
+							font-size: 22rpx;
+							color: #666666;
+							line-height: 30rpx;
+							text-align: left;
+							margin-top: 6rpx;
+						}
+
+
+						position: relative;
+
+						&.on {}
+					}
+
+					.tabTitle_across {
+						/* width: 50rpx;
+						height: 4rpx;
+						background: #0183FA;
+						border-radius: 2rpx; */
+						margin-left: 38%;
+						margin-top: 37rpx;
+						display none;
+
+						>img {
+							width: 40rpx;
+							height: 26rpx;
+						}
+
+						&.on {
+							display block;
+						}
+					}
+
+				}
+				
+			}
+		}
+
+		.list {
+			margin-top: 482rpx;
+            width: 690rpx;
+			margin-left: 30rpx;
+			background: #FFFFFF;
+			border-radius: 20rpx 20rpx 20rpx 20rpx;
+			.list-li {
+				border-bottom: 1rpx dashed #E0E0E0;
+				height: 80rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				padding: 0 30rpx;
+				box-sizing: border-box;
+
+				>view:nth-of-type(1) {
+					width: 120rpx;
+					height: 40rpx;
+					background: rgba(1, 131, 250, 0.2);
+					border-radius: 10rpx 10rpx 10rpx 10rpx;
+					font-size: 24rpx;
+					color: #0183FA;
+					line-height: 40rpx;
+					text-align: center;
+				}
+
+				>view:nth-of-type(2) {
+					flex: 1;
+					font-size: 28rpx;
+					color: #333333;
+					line-height: 39rpx;
+					text-align: left;
+					margin: 0 52rpx 0 20rpx;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					white-space: nowrap;
+				}
+
+				>img {
+					width: 24rpx;
+					height: 24rpx;
+				}
+
+			}
+		}
+
+		.shade {
+			height: 100%;
+			width: 100%;
+			position: fixed;
+			display: flex;
+			flex-direction: column;
+			z-index: 200;
+			background: rgba(0, 0, 0, 0.2);
+
+			.null-box {
+				flex: 1;
+			}
+
+			.shade_n {
+				position: absolute;
+				bottom: 0;
+				left: 0;
+				width: 750rpx;
+				height: 466rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx 20rpx 0rpx 0rpx;
+				overflow-y: auto;
+
+				.title {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					padding: 0 50rpx 0 284rpx;
+					box-sizing: border-box;
+					border-bottom: 1rpx solid #E0E0E0;
+
+					>view {
+						font-size: 30rpx;
+						color: #3D3D3D;
+						line-height: 90rpx;
+						text-align: left;
+					}
+
+					>img {
+						width: 24rpx;
+						height: 12rpx;
+					}
+				}
+				.batch{
+					padding: 0 30rpx;
+					box-sizing: border-box;
+					.batch-li{
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						border-bottom: 1rpx solid #E0E0E0;
+						padding: 20rpx 0 16rpx 0rpx;
+						box-sizing: border-box;
+						.batch-li-l{
+							>text:nth-of-type(1){
+								display: block;
+								font-size: 30rpx;
+								color: #333333;
+								line-height: 42rpx;
+								text-align: left;
+							}
+							>text:nth-of-type(2){
+								display: block;
+								font-size: 28rpx;
+								color: #666666;
+								line-height: 39rpx;
+								text-align: left;
+								margin-top: 6rpx;
+							}
+						}
+						.batch-li-r{
+							font-size: 28rpx;
+							color: #666666;
+							line-height: 39rpx;
+							text-align: left;
+							display: flex;
+							justify-content: flex-start;
+							align-items: center;
+							>img{
+								width: 24rpx;
+								height: 24rpx;
+								margin-left: 9rpx;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 4 - 1
pages/views/teacherPage/teacherHome.vue

@@ -193,8 +193,11 @@
 				} else if (type == 'snapshot') {
 					//随手拍
 					uni.navigateTo({
-						url: "/pages_safetyExamine/views/snapshotManage/snapshotAdd",
+						url: "/pages_safetyCheck/views/snapshotManage/snapshotList",
 					});
+					/* uni.navigateTo({
+						url: "/pages_safetyExamine/views/snapshotManage/snapshotAdd",
+					}); */
 				} else if (type == 'remoteDoorOpening') {
 					//远程开门
 					uni.navigateTo({

+ 10 - 2
pages_safetyCheck/api/index.js

@@ -44,8 +44,16 @@ export const securityAppCheckPhotoDetail = (data) => {
 export const securityAppCheckPhotoUpdate = (data) => {
 	return apiResquest({
 		url: `/security/appCheckPhoto/update`,
-		method: 'GET',
-		data: data,
+		method: 'POST',
+		data: { ...data }
+	})
+};
+//实验室检查项列表
+export const securityAppCheckPhotoList = (data) => {
+	return apiResquest({
+		url: `/security/appCheckPhoto/list`,
+		method: 'POST',
+		data: { ...data }
 	})
 };
 

BIN
pages_safetyCheck/images/icon_aqjc_ssp@1x.png


BIN
pages_safetyCheck/images/icon_aqjc_xcjc@1x.png


BIN
pages_safetyCheck/images/icon_aqjc_xjjc@1x.png


BIN
pages_safetyCheck/images/icon_aqjc_xxzc@1x.png


BIN
pages_safetyCheck/images/img_banner@1x.png


+ 99 - 31
pages_safetyCheck/views/itemsManage/hiddenDangerItems.vue

@@ -13,22 +13,29 @@
 				<view class="search-l" @click="dialogOpen()">检查指标
 					<img src="@/pages_safetyCheck/images/icon_06.png">
 				</view>
-				<view class="search-r">
+				<view class="search-r" @click="inspectionItemsClick()">
 					<img src="@/pages_safetyCheck/images/icon_aqjc_ss.png">
 					模糊搜索检查项
 				</view>
 			</view>
 		</view>
-		<view class="list">
-			<view class="total">待整改共2项</view>
-			<view class="list-li" v-for="(item,index) in dataList">
-				<view class="list-li-t" @click="itemsClick(item)">
-					<img src="@/pages_safetyCheck/images/icon_xz_fc@1x.png">
-					<view>{{item.name}}</view>
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+			<view class="list">
+				<view class="total">待整改共{{total}}项</view>
+				<view class="list-li" v-for="(item,index) in dataList">
+					<view class="list-li-t" @click="itemsClick(item)">
+						<img v-if="item.rectifyStatus==0" src="@/pages_safetyCheck/images/icon_zg_zh@1x.png">
+						<img v-if="item.rectifyStatus==1" src="@/pages_safetyCheck/images/icon_xz_fc@1x.png">
+						<img v-if="item.rectifyStatus==2" src="@/pages_safetyCheck/images/icon_xz_zg@1x.png">
+						<view v-if="item.hazardCheckId">{{item.hazardCheckCode}}{{item.hazardCheckName}}</view>
+						<view v-if="!item.hazardCheckId">{{item.hazardDescribe}}</view>
+					</view>
+					<view v-if="item.hazardCheckId" class="list-li-b" @click="hiddenDangerClick(item)">此检查项在当前实验室累计出现<text>{{item.hazardCheckNum}}</text>次隐患
+					</view>
 				</view>
-				<view class="list-li-b" @click="hiddenDangerClick(item)">此检查项在当前实验室累计出现<text>{{item.num}}</text>次隐患</view>
 			</view>
-		</view>
+			<view class="get-data-null-p" v-if="getDataType">- 没有更多数据 -</view>
+		</scroll-view>
 	</view>
 
 </template>
@@ -37,6 +44,9 @@
 	import {
 		config
 	} from '@/api/request/config.js'
+	import {
+		securityAppCheckPhotoList,
+	} from '@/pages_safetyCheck/api/index.js'
 	export default {
 		name: "hiddenDangerItems",
 		components: {
@@ -55,21 +65,27 @@
 
 				},
 				dialogVisible: false,
-				dataList: [{
-						name: '1.1.1三级检查项目条款全显示三级检查项目条款检查项目条款检查项目条款全显示三级检查项目检查项目条款 检查项目条款条款全显示三级检查项目条款',
-						num: '9'
-					},
-					{
-						name: '隐患内容隐患内容隐患内容隐患内容隐患内容隐患内容隐患内容隐患内容隐患内容隐患内容隐患内容隐 ',
-						num: '9'
-					},
-				],
+				// 查询参数
+				queryParams: {
+					page: 1,
+					pageSize: 10,
+					subId:'',
+					rectifyStatus:0,
+					hazardCheckId:'',
+					searchValue:'',
+				},
+				total: 0,
+				dataList: [],
+				getDataType: false,
+
 
 			}
 		},
 		onLoad(option) {
 			this.$set(this, 'newData', JSON.parse(decodeURIComponent(option.infoData)));
 			this.pageType = this.newData.pageType;
+			this.queryParams.subId=this.newData.subId?this.newData.subId:''
+			this.queryParams.hazardCheckId=this.newData.hazardCheckId?this.newData.hazardCheckId:''
 			uni.setNavigationBarTitle({
 				title: '实验室名称(房间号)'
 			})
@@ -88,14 +104,26 @@
 
 		},
 		mounted() {
-
+			this.getList()
 		},
 		methods: {
 			//滚动事件
-			scrollGet() {},
+			scrollGet() {
+				let self = this;
+				if (self.total / self.queryParams.pageSize <= self.queryParams.page) {
+					this.$set(this, 'getDataType', true);
+				} else {
+					this.queryParams.page += 1;
+					this.$nextTick(() => {
+						this.getList();
+					})
+				}
+			},
 			//顶部tab点击
 			tabClickTow(index) {
 				this.curTabTow = index;
+				this.queryParams.rectifyStatus=index;
+				this.getList()
 			},
 			dialogOpen() {
 				this.dialogVisible = true;
@@ -103,20 +131,52 @@
 			dialogClose() {
 				this.dialogVisible = false;
 			},
-			itemsClick(row){
-				let infoData=row;
-				infoData.pageType=this.pageType;
+			//搜索项跳转
+			inspectionItemsClick() {
+				this.newData.pageType=2;//1随手拍检查项
+				uni.redirectTo({
+					url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItemsSearch?form=' + encodeURIComponent(
+						JSON.stringify(this.newData))
+				});
+			},
+			itemsClick(row) {
+				let infoData = row;
+				infoData.pageType = this.pageType;
 				uni.redirectTo({
-					url: '/pages_safetyCheck/views/inspectManage/inspectAdd?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+					url: '/pages_safetyCheck/views/inspectManage/inspectAdd?infoData=' + encodeURIComponent(JSON
+						.stringify(infoData))
 				});
 			},
-			hiddenDangerClick(row){
-				let infoData=row;
-				infoData.pageType=this.pageType;
+			hiddenDangerClick(row) {
+				let infoData = row;
+				infoData.pageType = this.pageType;
 				uni.redirectTo({
-					url: '/pages_safetyCheck/views/inspectManage/hiddenDangerRecord?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+					url: '/pages_safetyCheck/views/inspectManage/hiddenDangerRecord?infoData=' +
+						encodeURIComponent(JSON.stringify(infoData))
 				});
 			},
+			//
+			async getList() {
+				let self = this;
+				const {
+					data
+				} = await securityAppCheckPhotoList(this.queryParams);
+				if (data.code == 200) {
+					if (self.queryParams.page == 1) {
+						this.dataList = data.data.records;
+						this.total = data.data.total;
+						if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+							this.$set(this, 'getDataType', true);
+						}
+					} else {
+						this.dataList = [...this.dataList, ...data.data.records]
+						this.total = data.data.total;
+						if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+							this.$set(this, 'getDataType', true);
+						}
+					}
+				}
+			},
 
 		}
 	}
@@ -255,7 +315,8 @@
 			width: 750rpx;
 			background: #FFFFFF;
 			margin-top: 200rpx;
-
+			padding-bottom: 20rpx;
+			box-sizing: border-box;
 			.total {
 				width: 180rpx;
 				height: 50rpx;
@@ -281,6 +342,7 @@
 					justify-content: flex-start;
 					padding: 12rpx 20rpx 14rpx 14rpx;
 					box-sizing: border-box;
+					margin: 20rpx 0;
 
 					>img {
 						width: 24rpx;
@@ -300,7 +362,7 @@
 				.list-li-b {
 					font-size: 24rpx;
 					color: #3D3D3D;
-					line-height: 70rpx;
+					line-height: 24rpx;
 					text-align: right;
 
 					>text {
@@ -311,6 +373,12 @@
 			}
 		}
 
-
+		.get-data-null-p {
+			text-align: center;
+			height: 100rpx;
+			line-height: 100rpx;
+			color: #999;
+			padding-bottom: 200rpx;
+		}
 	}
 </style>

+ 14 - 4
pages_safetyCheck/views/itemsManage/hiddenDangerItemsSearch.vue

@@ -39,13 +39,14 @@
 				checkOptionList: [],
 				dataList: [],
 				searchValue: '',
-				form: {},
+				form: {},//接收上个页面传过来的参数
 
 			}
 		},
 		onLoad(option) {
 			if (option.form) {
 				this.form = JSON.parse(decodeURIComponent(option.form));
+				this.pageType=this.form.pageType;
 			}
 		},
 		onShow() {
@@ -79,9 +80,18 @@
 				this.$set(this.form, "hazardCheckName", row.hazardCheckName)
 				this.$set(this.form, "hazardCheckCode", row.hazardCheckCode)
 				this.$set(this.form, "hazardCheckPoint", row.hazardCheckPoint)
-				uni.redirectTo({
-					url: '/pages_safetyCheck/views/snapshotManage/snapshotList?form=' + encodeURIComponent(JSON.stringify(this.form))
-				});
+				if(this.pageType==1){
+					//随手拍进入
+					uni.redirectTo({
+						url: '/pages_safetyCheck/views/snapshotManage/snapshotList?form=' + encodeURIComponent(JSON.stringify(this.form))
+					});
+				}else if(this.pageType==2){
+					//隐患项列表进入
+					uni.redirectTo({
+						url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' + encodeURIComponent(JSON.stringify(this.form))
+					});
+				}
+				
 			},
 
 			async treeselect() {

+ 142 - 42
pages_safetyCheck/views/itemsManage/snapshotRectification.vue

@@ -3,21 +3,22 @@
 	<view class="snapshotDetail">
 		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
 			<view class="tip">整改期限2024-10-06(逾期未完成整改关闭实验室)</view>
-			<view class="items" v-if="inspectionItems==0">
-				<view class="items-t">
-					<view class="items-t-r">{{newData.data3}}</view>
+			<view class="items" v-if="newData.hazardCheckName!=''">
+				<view class="items-t" >
+					<view class="items-t-r">{{newData.hazardCheckCode}} {{newData.hazardCheckName}}</view>
 				</view>
-				<view class="items-b">< {{newData.data4}} <</view>
+				<view class="items-b" >< {{newData.hazardCheckCode2}}
+					{{newData.hazardCheckName2}} < {{newData.hazardCheckCode1}} {{newData.hazardCheckName1}}</view>
 			</view>
-			<view v-if="inspectionItems==0" class="items-number">此检查项在当前实验室累计出现<text>{{newData.data5}}</text>次隐患</view>
+			<view class="items-number" v-if="newData.hazardCheckName!=''">此检查项在当前实验室累计出现<text>{{newData.hazardCheckNum}}</text>次隐患</view>
 			<view class="list">
-				<view v-if="inspectionItems==0" class="list-li">
+				<view class="list-li" v-if="newData.hazardCheckName!=''">
 					<view>检查要点</view>
 					<view>
 						<img src="@/pages_safetyCheck/images/icon_06.png">
 					</view>
 				</view>
-				<view v-if="inspectionItems==0" class="hidden-content">{{newData.data6}}
+				<view v-if="newData.hazardCheckName!=''" class="hidden-content">{{newData.hazardCheckPoint}}
 				</view>
 				<view class="list-li">
 					<view>检查隐患</view>
@@ -25,18 +26,18 @@
 						<img src="@/pages_safetyCheck/images/icon_06.png">
 					</view>
 				</view>
-				<view class="hidden-content">{{newData.data7}}
+				<view class="hidden-content">{{newData.hazardDescribe}}
 				</view>
 				<view class="photo">
-					<img src="@/pages_safetyCheck/images/img_ssp_pz@1x.png">
+					<img v-for="(item,index) in newData.yhDtoList" :src="baseUrl+item.fileUrl">
 				</view>
 				<view class="list-li">
 					<view>姓名:</view>
-					<view>李瑶瑶</view>
+					<view>{{newData.createName}}</view>
 				</view>
 				<view class="list-li">
 					<view>时间:</view>
-					<view>2024-01-01</view>
+					<view>{{newData.createTime}}</view>
 				</view>
 				<view class="list-li">
 					<view>隐患整改</view>
@@ -60,20 +61,20 @@
 				</view>
 				<view class="list-li-tow">
 					<view>整改方案(上传文件)</view>
-					<view>
+					<view @click="selectFile()">
 						<img src="@/pages_safetyCheck/images/icon_aqjc_sc.png">
 					</view>
 				</view>
-				<view class="file-li">
+				<view class="file-li" v-if="form.rectifyProjectName">
 					<img src="@/pages_safetyCheck/images/icon_djc_wj.png">
-					<view>文件标题文件标题文件标题文件标题</view>
+					<view>{{form.rectifyProjectName}}</view>
 					<img src="@/pages_safetyCheck/images/icon_yybz_sc.png">
 				</view>
 			</view>
 		</scroll-view>
 		<view class="sub-btn">
-			<view>暂无法整改</view>
-			<view>完成整改</view>
+			<view @click="submitForm(2)">暂无法整改</view>
+			<view @click="submitForm(1)">完成整改</view>
 		</view>
 	</view>
 
@@ -83,6 +84,9 @@
 	import {
 		config
 	} from '@/api/request/config.js'
+	import {
+		securityAppCheckPhotoUpdate,
+	} from '@/pages_safetyCheck/api/index.js'
 	export default {
 		name: "snapshotDetail",
 		components: {
@@ -91,25 +95,20 @@
 		data() {
 			return {
 				baseUrl: config.base_url,
-				inspectionItems:0,//0有检查项 1无检查项
+				inspectionItems: 0, //0有检查项 1无检查项
 				form: {
 					imgDtoList: [],
+					rectifyProjectName:'',
+					rectifyProjectUrl:'',
 				},
-				newData: {
-					data1:'实验室名称(房间号)',
-					data2:'学院单位名称',
-					data3:'1.1.1 检查项检查项检查项检查',
-					data4:'1.1 检查项检查项检查项检查项检查项检查项',
-					data5:'19',
-					data6:'(1)有学校相关会议(校务会议、党委常委会会议等)纪要,内容包含实验室安全工作。',
-					data7:'内容内容内容内容内容内容内容内容内容内容内容内内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容',
-					data8:'李瑶瑶',
-					data9:'2024-01-01',
-					rectificationStatus:0,//整改状态 0待整改 1暂无法整改 2已整改
-				},
+				newData: {},
 			}
 		},
-		onLoad(option) {},
+		onLoad(option) {
+			console.log(option.infoData)
+			this.$set(this, 'newData', JSON.parse(decodeURIComponent(option.infoData)));
+			console.log(this.newData)
+		},
 		onShow() {
 
 		},
@@ -119,6 +118,57 @@
 		methods: {
 			//滚动事件
 			scrollGet() {},
+			/******文件上传******/
+			selectFile() {
+				let self = this;
+				wx.chooseMessageFile({
+				  count: 1,
+				  type: 'file',
+				  success (res) {
+					  console.log(res)
+				    // tempFilePath可以作为img标签的src属性显示图片
+				    const tempFilePaths = res.tempFiles[0].path
+					self.form.rectifyProjectName=res.tempFiles[0].name
+					self.uploadFile(tempFilePaths);
+				  }
+				})
+			},
+			async uploadFile(tempFilePaths) {
+				var self = this;
+				uni.showLoading({
+					title: '上传中',
+					mask: true
+				});
+				uni.uploadFile({
+					url: config.base_url + '/system/file/upload', //仅为示例,非真实的接口地址
+					header: {
+						'Authorization': uni.getStorageSync('token')
+					},
+					filePath: tempFilePaths,
+					name: 'file',
+					formData: {
+						'user': 'test'
+					},
+					success: (uploadFileRes) => {
+						let res = JSON.parse(uploadFileRes.data);
+						console.log(res)
+						if (res.code == 200) {
+							self.form.rectifyProjectUrl=res.data.url;
+						} else {
+							uni.showToast({
+								title: res.msg,
+								icon: "none",
+								mask: true,
+								duration: 2000
+							});
+						}
+					},
+					fail: err => {},
+					complete: () => {
+						uni.hideLoading()
+					}
+				});
+			},
 			/******图片上传******/
 			selectImage() {
 				let self = this;
@@ -137,6 +187,7 @@
 					sourceType: ["album", "camera"],
 					success: function(res) {
 						let tempFilePaths = res.tempFilePaths[0];
+						console.log(tempFilePaths)
 						self.uploadImg(tempFilePaths);
 					}
 				});
@@ -185,6 +236,43 @@
 				this.form.imgDtoList.splice(minIndex, 1);
 				this.$forceUpdate();
 			},
+			//整改/暂无法整改
+			async submitForm(status) {
+				let self = this;
+				if (status ==2 && this.form.rectifyProjectUrl=='') {
+					uni.showToast({
+						title: '请上传整改方案!',
+						icon: "none",
+						mask: true,
+						duration: 2000
+					});
+					return
+				}
+				let obj={
+					photoId:this.newData.photoId,
+					rectifyStatus:status,//1已整改2暂无法整改
+					rectifyDescribe:this.form.rectifyDescribe,
+					imgDtoList:this.form.imgDtoList,
+					rectifyProjectName:this.form.rectifyProjectName,
+					rectifyProjectUrl:this.form.rectifyProjectUrl,
+				}
+				const {
+					data
+				} = await securityAppCheckPhotoUpdate(obj);
+				if (data.code == 200) {
+					uni.showToast({
+						title: '提交成功',
+						icon: "none",
+						mask: true,
+						duration: 2000
+					});
+					let infoData=this.newData;
+					uni.navigateTo({
+						url: '/pages_safetyCheck/views/snapshotManage/snapshotDetail?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+					});
+					
+				}
+			},
 		}
 	}
 </script>
@@ -196,6 +284,7 @@
 		box-sizing: border-box;
 		padding-bottom: 160rpx;
 		box-sizing: border-box;
+
 		#bgColor-A {
 			color: #FFD400;
 		}
@@ -225,21 +314,22 @@
 			background: #FFFFFF;
 			border-radius: 20rpx 20rpx 20rpx 20rpx;
 			margin: 20rpx 0 0 30rpx;
-			.items-li{
+
+			.items-li {
 				display: flex;
 				justify-content: space-between;
 				align-items: center;
 				padding: 0 30rpx;
 				box-sizing: border-box;
 				border-bottom: 1rpx solid #E0E0E0;
-				
+
 				>view:nth-of-type(1) {
 					font-size: 30rpx;
 					color: #333333;
 					line-height: 80rpx;
 					text-align: left;
 				}
-				
+
 				>view:nth-of-type(2) {
 					font-size: 28rpx;
 					color: #666666;
@@ -250,6 +340,7 @@
 					align-items: center;
 				}
 			}
+
 			.items-t {
 				border-bottom: 1rpx solid #E0E0E0;
 				height: 80rpx;
@@ -343,6 +434,7 @@
 				}
 
 			}
+
 			.list-li-tow {
 				display: flex;
 				justify-content: space-between;
@@ -351,14 +443,14 @@
 				box-sizing: border-box;
 				border-top: 1rpx solid #E0E0E0;
 				border-bottom: 1rpx solid #E0E0E0;
-			
+
 				>view:nth-of-type(1) {
 					font-size: 30rpx;
 					color: #333333;
 					line-height: 80rpx;
 					text-align: left;
 				}
-			
+
 				>view:nth-of-type(2) {
 					font-size: 28rpx;
 					color: #666666;
@@ -367,26 +459,29 @@
 					display: flex;
 					justify-content: space-between;
 					align-items: center;
-			
+
 					>img {
 						width: 30rpx;
 						height: 28rpx;
 						margin-left: 10rpx;
 					}
 				}
-			
+
 			}
-			.file-li{
+
+			.file-li {
 				display: flex;
 				justify-content: space-between;
 				align-items: center;
 				padding: 0 30rpx;
 				box-sizing: border-box;
+
 				>img:nth-of-type(1) {
 					width: 30rpx;
 					height: 30rpx;
 				}
-				>view{
+
+				>view {
 					flex: 1;
 					font-size: 28rpx;
 					color: #333333;
@@ -395,13 +490,15 @@
 					margin: 0 92rpx 0 16rpx;
 					overflow: hidden;
 					text-overflow: ellipsis;
-					white-space: nowrap;   
+					white-space: nowrap;
 				}
+
 				>img:nth-of-type(2) {
 					width: 30rpx;
 					height: 30rpx;
 				}
 			}
+
 			.hidden-content {
 				width: 630rpx;
 				min-height: 200rpx;
@@ -498,14 +595,16 @@
 				border: none;
 			}
 		}
-		
+
 	}
-	.sub-btn{
+
+	.sub-btn {
 		display: flex;
 		justify-content: center;
 		position: fixed;
 		left: 30rpx;
 		bottom: 30rpx;
+
 		>view:nth-of-type(1) {
 			width: 345rpx;
 			height: 100rpx;
@@ -516,6 +615,7 @@
 			line-height: 100rpx;
 			text-align: center;
 		}
+
 		>view:nth-of-type(2) {
 			width: 345rpx;
 			height: 100rpx;

+ 52 - 23
pages_safetyCheck/views/safetyCheck.vue

@@ -3,6 +3,7 @@
 	<view class="planDetail">
 		<scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
 			<view class="header">
+				<img class="header-bg" src="@/pages_safetyCheck/images/img_banner@1x.png">
 				<view class="tabTitle">
 					<view class="tabTitle_li" @tap="tabClick(index)" :key="index" v-for="(item,index) in tabText">
 						<view class="tabTitle_text">
@@ -13,10 +14,12 @@
 							</view>
 							<view>{{item.title}}</view>
 						</view>
+						<view class="line"></view>
 						<view :class="{on:curTab==index}" class="tabTitle_across">
 							<img src="@/pages_safetyCheck/images/img_xyzc_bg@1x.png">
 						</view>
 					</view>
+				
 				</view>
 			</view>
 			<view class="list">
@@ -69,17 +72,22 @@
 				tabText: [{
 						name: '校级检查',
 						title: '学校检查计划',
-						img: require('@/pages_safetyCheck/images/img_aqjc_xjjc@1x.png'),
+						img: require('@/pages_safetyCheck/images/icon_aqjc_xjjc@1x.png'),
 					},
 					{
 						name: '学院自查',
 						title: '学院自查计划',
-						img: require('@/pages_safetyCheck/images/img_aqjc_xyzc@1x.png'),
+						img: require('@/pages_safetyCheck/images/icon_aqjc_xxzc@1x.png'),
+					},
+					{
+						name: '现场检查',
+						title: '检查隐患草稿',
+						img: require('@/pages_safetyCheck/images/icon_aqjc_xcjc@1x.png'),
 					},
 					{
 						name: '随手拍',
 						title: '隐患上报整改',
-						img: require('@/pages_safetyCheck/images/img_aqjc_ssp@1x.png'),
+						img: require('@/pages_safetyCheck/images/icon_aqjc_ssp@1x.png'),
 					},
 				],
 				curTab: 0,
@@ -145,6 +153,9 @@
 					//学院自查
 					
 				}else if(index==2){
+					//现场检查
+					
+				}else if(index==3){
 					//随手拍
 					uni.navigateTo({
 						url: "/pages_safetyCheck/views/snapshotManage/snapshotList",
@@ -178,7 +189,7 @@
 		box-sizing: border-box;
 
 		#fontColor-A {
-			color: #00AEDE;
+			color: #0040C1;
 		}
 
 		#fontColor-B {
@@ -201,23 +212,37 @@
 			position: fixed;
 			top: 0rpx;
 			z-index: 100;
-			background: #fff;
-
-			.tabTitle {
+			.header-bg{
 				width: 750rpx;
-				height: 225rpx;
+				height: 336rpx;
+				position: absolute;
+				
+			}
+			.tabTitle {
+				width: 690rpx;
+				height: 250rpx;
+				background: #FFFFFF;
+				border-radius: 20rpx 20rpx 20rpx 20rpx;
 				display flex;
 				justify-content: flex-start;
 				align-items: center;
-				border-bottom: 4rpx solid #F5F5F5;
-
+				position: absolute;
+				left: 30rpx;
+				top: 208rpx;
+				
 				.tabTitle_li {
-					height: 225rpx;
+					height: 250rpx;
 					flex: 1;
 					position: relative;
 					text-align center;
-					border-right: 2rpx solid #F5F5F5;
-
+					.line{
+						width: 2rpx;
+						height: 30rpx;
+						background: #D8D8D8;
+						border-radius: 0rpx 0rpx 0rpx 0rpx;
+						position: absolute;
+						top: 40%;
+					}
 					.tabTitle_text {
 						display: flex;
 						justify-content: center;
@@ -227,22 +252,23 @@
 						>img {
 							width: 80rpx;
 							height: 80rpx;
-							margin-top: 20rpx;
+							margin-top: 48rpx;
 						}
 
 						>view:nth-of-type(1) {
-							font-size: 30rpx;
+							font-size: 28rpx;
 							color: #333333;
-							line-height: 42rpx;
+							line-height: 40rpx;
 							text-align: left;
-							margin-top: 10rpx;
+							margin-top: 8rpx;
 						}
 
 						>view:nth-of-type(2) {
-							font-size: 24rpx;
+							font-size: 22rpx;
 							color: #666666;
-							line-height: 34rpx;
+							line-height: 30rpx;
 							text-align: left;
+							margin-top: 6rpx;
 						}
 
 
@@ -257,7 +283,7 @@
 						background: #0183FA;
 						border-radius: 2rpx; */
 						margin-left: 38%;
-						margin-top: 12rpx;
+						margin-top: 37rpx;
 						display none;
 
 						>img {
@@ -271,13 +297,16 @@
 					}
 
 				}
+				
 			}
 		}
 
 		.list {
-			background: #fff;
-			margin-top: 225rpx;
-
+			margin-top: 482rpx;
+            width: 690rpx;
+			margin-left: 30rpx;
+			background: #FFFFFF;
+			border-radius: 20rpx 20rpx 20rpx 20rpx;
 			.list-li {
 				border-bottom: 1rpx dashed #E0E0E0;
 				height: 80rpx;

+ 11 - 8
pages_safetyCheck/views/snapshotManage/snapshotDetail.vue

@@ -41,10 +41,10 @@
 						<img src="@/pages_safetyCheck/images/icon_06.png">
 					</view>
 				</view>
-				<view class="hidden-content" v-if="newData.rectifyStatus==1 || newData.rectifyStatus==2">{{newData.data7}}
+				<view class="hidden-content" v-if="newData.rectifyStatus==1 || newData.rectifyStatus==2">{{newData.rectifyDescribe}}
 				</view>
 				<view class="photo" v-if="newData.rectifyStatus==1 || newData.rectifyStatus==2">
-					<img src="@/pages_safetyCheck/images/img_ssp_pz@1x.png">
+					<img v-for="(item,index) in newData.zgDtoList" :src="baseUrl+item.fileUrl">
 				</view>
 				<view class="list-li" v-if="newData.rectifyStatus==1 || newData.rectifyStatus==2">
 					<view>整改方案</view>
@@ -52,15 +52,15 @@
 				</view>
 				<view class="file-li" v-if="newData.rectifyStatus==1 || newData.rectifyStatus==2">
 					<img src="@/pages_safetyCheck/images/icon_djc_wj.png">
-					<view>文件标题文件标题文件标题文件标题</view>
+					<view>{{newData.rectifyProjectName}}</view>
 				</view>
 				<view class="list-li" v-if="newData.rectifyStatus==1 || newData.rectifyStatus==2">
 					<view>姓名:</view>
-					<view>{{newData.data8}}</view>
+					<view>{{newData.rectifyUserName}}</view>
 				</view>
 				<view class="list-li" v-if="newData.rectifyStatus==1 || newData.rectifyStatus==2">
 					<view>时间:</view>
-					<view>{{newData.data9}}</view>
+					<view>{{newData.rectifyTime}}</view>
 				</view>
 				
 			</view>
@@ -114,7 +114,9 @@
 			},
 			//整改页面
 			rectificationBtn(){
-				let infoData=this.newData;
+				let self=this;
+				let infoData=self.newData;
+				console.log(self.newData)
 				uni.navigateTo({
 					url: '/pages_safetyCheck/views/itemsManage/snapshotRectification?infoData=' + encodeURIComponent(JSON.stringify(infoData))
 				});
@@ -146,11 +148,12 @@
 		}
 		
 		#fontColor-B {
-			color: #FF8C00;
+			color: #16B531;
 		}
 		
 		#fontColor-C {
-			color: #16B531;
+			
+			color: #FF8C00;
 		}
 		.items {
 			width: 690rpx;

+ 54 - 17
pages_safetyCheck/views/snapshotManage/snapshotList.vue

@@ -62,7 +62,7 @@
 					<view class="escalation-li-t">
 						<view>{{item.subName}} ({{item.subRoom}})</view>
 						<view :id="item.rectifyStatus==0?'color-A':(item.rectifyStatus==1?'color-B':(item.rectifyStatus==2?'color-C':''))">
-							{{item.rectifyStatus==0?'待整改':(item.rectifyStatus==1?'已完成':(item.rectifyStatus==1?'暂无法整改':''))}}
+							{{item.rectifyStatus==0?'待整改':(item.rectifyStatus==1?'已整改':(item.rectifyStatus==2?'暂无法整改':''))}}
 							<img src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
 						</view>
 					</view>
@@ -74,10 +74,11 @@
 			</view>
 			<!-- 隐患整改 -->
 			<view class="hidden" v-if="pageType==2">
-				<view class="hidden-li" v-for="(item,index) in dataList">
+				<view class="hidden-li" @click="hiddenClick(item)" v-for="(item,index) in dataList">
 					<img class="hidden-li-l" src="@/pages_safetyCheck/images/icon_sys_xz@1x.png">
 					<view class="hidden-li-c">{{item.subName}}</view>
-					<view class="hidden-li-r">待整改{{item.stayhRectifyCheckNum}}项
+					<view class="hidden-li-r">
+						<view v-if="item.stayhRectifyCheckNum!=0">待整改{{item.stayhRectifyCheckNum}}项</view>
 						<img src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
 					</view>
 				</view>
@@ -205,20 +206,12 @@
 				let self = this;
 				const {
 					data
-				} = await securityAppCheckPhotoRectifyList(this.queryParams);
+				} = await securityAppCheckPhotoRectifyList();
 				if (data.code == 200) {
-					if (self.queryParams.page == 1) {
-						this.dataList = data.data.records;
-						this.total = data.data.total;
-						if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
-							this.$set(this, 'getDataType', true);
-						}
+					if (data.data[0]) {
+						this.dataList = data.data;
 					} else {
-						this.dataList = [...this.dataList, ...data.data.records]
-						this.total = data.data.total;
-						if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
-							this.$set(this, 'getDataType', true);
-						}
+						this.$set(this, 'getDataType', true);
 					}
 				}
 			},
@@ -229,6 +222,14 @@
 					url: '/pages_safetyCheck/views/snapshotManage/snapshotDetail?infoData=' + encodeURIComponent(JSON.stringify(infoData))
 				});
 			},
+			//隐患整改跳转详情
+			hiddenClick(row){
+				let infoData=row;
+				infoData.pageType=2;
+				uni.navigateTo({
+					url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+				});
+			},
 			tabClick(index) {
 				this.tabIndex = index;
 				this.pageType = index;
@@ -391,6 +392,7 @@
 			},
 			//搜索项跳转
 			inspectionItemsClick() {
+				this.form.pageType=1;//1随手拍检查项
 				uni.navigateTo({
 					url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItemsSearch?form=' + encodeURIComponent(
 						JSON.stringify(this.form))
@@ -400,6 +402,33 @@
 			async submitForm() {
 				let self = this;
 				console.log(self.form)
+				if (!this.form.subId) {
+					uni.showToast({
+						title: '请选择实验室!',
+						icon: "none",
+						mask: true,
+						duration: 2000
+					});
+					return
+				}
+				if (!this.form.hazardDescribe) {
+					uni.showToast({
+						title: '请输入隐患描述!',
+						icon: "none",
+						mask: true,
+						duration: 2000
+					});
+					return
+				}
+				if (this.form.imgDtoList.length<=0) {
+					uni.showToast({
+						title: '请选择现场照片!',
+						icon: "none",
+						mask: true,
+						duration: 2000
+					});
+					return
+				}
 				const {
 					data
 				} = await securityAppCheckPhotoMyAdd(self.form);
@@ -410,6 +439,13 @@
 						mask: true,
 						duration: 2000
 					});
+					let infoData={
+						photoId:data.data
+					};
+					uni.navigateTo({
+						url: '/pages_safetyCheck/views/snapshotManage/snapshotDetail?infoData=' + encodeURIComponent(JSON.stringify(infoData))
+					});
+					
 				}
 			},
 
@@ -864,11 +900,12 @@
 		}
 
 		#color-B {
-			color: #FF8C00;
+			color: #16B531;
 		}
 
 		#color-C {
-			color: #16B531;
+			
+			color: #FF8C00;
 		}
 		.get-data-null-p {
 			text-align: center;