dedsudiyu 1 month ago
parent
commit
4466a48bff

+ 2 - 2
api/request/config.js

@@ -2,14 +2,14 @@ const config = {
 	/************************************ 后台服务地址 ************************************/
 	
 	// base_url: 'http://192.168.1.43/api', //43服务器
-	base_url: 'http://192.168.1.8/api',//1.8服务器
+	// base_url: 'http://192.168.1.8/api',//1.8服务器
 	// base_url: 'http://192.168.1.9:8080',//柴
 	// base_url: 'http://192.168.1.24:8080',//林总
 	// base_url: 'http://192.168.1.7:8080',//刘波
 	// base_url: 'http://192.168.1.17:8080',//小飞
 	// base_url: 'http://192.168.1.43/api',//小飞
 	// base_url: 'http://192.168.1.20:8080',//志伟
-	// base_url: 'http://192.168.1.39:8080',//高升
+	base_url: 'http://192.168.1.39:8080',//高升
 	// base_url: 'http://192.168.1.29:8080',//何成
 	// base_url: 'https://demo.zjznai.com/xzgd/',
 	// base_url: 'https://lab.zjznai.com/labNhSystem/',//43服务器高升测试

+ 10 - 1
pages/api/index.js

@@ -520,4 +520,13 @@ export const authGetAppletUser  = (data) => {
 				method: 'POST',
 				data: { ...data }
     })
-};
+};
+
+//查询是否是同位素实验并且有签退
+export const laboratorySubPassOutIsotopeSubSign  = (data) => {
+    return apiResquest({
+        url: `/laboratory/subPassOut/isotopeSubSign`,
+        method: 'GET',
+        data: data,
+    })
+};

+ 46 - 18
pages/views/pupilPage/pupilHome.vue

@@ -67,6 +67,9 @@
 		pageRestrictVerify
 	} from '@/utils/index'
 	import {
+		laboratorySubPassOutIsotopeSubSign,
+	} from '@/pages/api/index.js'
+	import {
 		tabBar
 	} from '@/pages/component/tabBar.vue'
 	import {
@@ -159,30 +162,55 @@
 				uni.scanCode({
 					onlyFromCamera: true,
 					success: function(res) {
-						let list = res.result.split("?")[1].split("&");
-						let codeData = {};
-						list.forEach((item) => {
-							codeData[item.split("=")[0]] = item.split("=")[1];
-						})
-						if (codeData.type == 1 || codeData.type == 2 || codeData.type == 3 || codeData.type ==
-							5 || codeData.type == 7 ||
-							codeData.type == 8 || codeData.type == 9 || codeData.type == 10 ||
-							codeData.type == 11 || codeData.type == 12 || codeData.type == 13 || codeData.type == 14) {
+						if(res.result.indexOf('type') != -1){
+							//项目二维码
+							let list = res.result.split("?")[1].split("&");
+								console.log('list',list)
+							let codeData = {};
+							list.forEach((item) => {
+								codeData[item.split("=")[0]] = item.split("=")[1];
+							})
+								console.log('codeData',codeData)
+							if (codeData.type == 1 || codeData.type == 2 || codeData.type == 3 || codeData.type == 7 ||
+								codeData.type == 8 || codeData.type == 9 || codeData.type == 10 ||
+								codeData.type == 11 || codeData.type == 12 || codeData.type == 13 || codeData.type == 14) {
+								uni.reLaunch({
+									url: '/pages/views/saoCode/saoCode?q=' + encodeURIComponent(res.result)
+								});
+							}else if(codeData.type == 5){
+								self.laboratorySubPassOutIsotopeSubSign(codeData.subId,res.result);
+							}
+						}else{
+							//化学品信息
 							uni.navigateTo({
-								url: '/pages/views/saoCode/saoCode?q=' + encodeURIComponent(res.result)
-							});
-						} else {
-							uni.showToast({
-								mask: true,
-								icon: "none",
-								position: "center",
-								title: '请扫描正确的小程序二维码',
-								duration: 2000
+								url: "/pages_basics/views/chemicalsInfo/chemicalsInfo",
 							});
 						}
 					}
 				});
 			},
+			//分类下拉列表
+			async laboratorySubPassOutIsotopeSubSign(subId,result) {
+				const {
+					data
+				} = await laboratorySubPassOutIsotopeSubSign({subId:subId});
+				if (data.code == 200) {
+					if(data.data.isotope){
+						let obj = {
+							subId:subId,
+							subName:data.data.subName,
+						}
+						console.log('====',obj)
+						uni.navigateTo({
+							url: "/pages_basics/views/photoInspection?item=" + encodeURIComponent(JSON.stringify(obj)),
+						});
+					}else{
+						uni.reLaunch({
+							url: '/pages/views/saoCode/saoCode?q=' + encodeURIComponent(result)
+						});
+					}
+				}
+			},
 		}
 	}
 </script>

+ 45 - 19
pages/views/teacherPage/teacherHome.vue

@@ -90,6 +90,9 @@
 		pageRestrictVerify
 	} from '@/utils/index'
 	import {
+		laboratorySubPassOutIsotopeSubSign,
+	} from '@/pages/api/index.js'
+	import {
 		tabBar
 	} from '@/pages/component/tabBar.vue'
 	import {
@@ -241,30 +244,53 @@
 				uni.scanCode({
 					onlyFromCamera: true,
 					success: function(res) {
-						let list = res.result.split("?")[1].split("&");
-						let codeData = {};
-						list.forEach((item) => {
-							codeData[item.split("=")[0]] = item.split("=")[1];
-						})
-						if (codeData.type == 1 || codeData.type == 2 || codeData.type == 3 || codeData.type ==
-							5 || codeData.type == 7 ||
-							codeData.type == 8 || codeData.type == 9 || codeData.type == 10 ||
-							codeData.type == 11 || codeData.type == 12 || codeData.type == 13 || codeData.type == 14) {
-							uni.reLaunch({
-								url: '/pages/views/saoCode/saoCode?q=' + encodeURIComponent(res.result)
-							});
-						} else {
-							uni.showToast({
-								mask: true,
-								icon: "none",
-								position: "center",
-								title: '请扫描正确的小程序二维码',
-								duration: 2000
+						if(res.result.indexOf('type') != -1){
+							//项目二维码
+							let list = res.result.split("?")[1].split("&");
+							let codeData = {};
+							list.forEach((item) => {
+								codeData[item.split("=")[0]] = item.split("=")[1];
+							})
+							if (codeData.type == 1 || codeData.type == 2 || codeData.type == 3 || codeData.type == 7 ||
+								codeData.type == 8 || codeData.type == 9 || codeData.type == 10 ||
+								codeData.type == 11 || codeData.type == 12 || codeData.type == 13 || codeData.type == 14) {
+								uni.reLaunch({
+									url: '/pages/views/saoCode/saoCode?q=' + encodeURIComponent(res.result)
+								});
+							}else if(codeData.type == 5){
+								self.laboratorySubPassOutIsotopeSubSign(codeData.subId,res.result);
+							}
+						}else{
+							//化学品信息
+							uni.navigateTo({
+								url: "/pages_basics/views/chemicalsInfo/chemicalsInfo",
 							});
 						}
 					}
 				});
 			},
+			//分类下拉列表
+			async laboratorySubPassOutIsotopeSubSign(subId,result) {
+				const {
+					data
+				} = await laboratorySubPassOutIsotopeSubSign({subId:subId});
+				if (data.code == 200) {
+					if(data.data.isotope){
+						let obj = {
+							subId:subId,
+							subName:data.data.subName,
+						}
+						console.log('====',obj)
+						uni.navigateTo({
+							url: "/pages_basics/views/photoInspection?item=" + encodeURIComponent(JSON.stringify(obj)),
+						});
+					}else{
+						uni.reLaunch({
+							url: '/pages/views/saoCode/saoCode?q=' + encodeURIComponent(result)
+						});
+					}
+				}
+			},
 		}
 	}
 </script>

+ 22 - 7
pages_basics/views/photoInspection.vue

@@ -66,16 +66,23 @@
 					fileType: 'png',
 					quality: 0.85,
 					minSize: 320
-				}
-
+				},
+				isotope:false,
 			}
 		},
 		onLoad(option) {
-			// this.newData = JSON.parse(decodeURIComponent(option.newData));
-			// console.log(this.newData)
+			if(option.item){
+				let obj = JSON.parse(decodeURIComponent(option.item))
+				this.$set(this,'isotope',true);
+				this.$set(this,'subList',[obj]);
+				this.$set(this,'subListIndex','0');
+				this.$set(this,'subId',obj.subId);
+				this.laboratoryAppletOutCheckList()
+			}else{
+				this.laboratoryAppletSignSubList();
+			}
 		},
 		onShow() {
-			this.laboratoryAppletSignSubList();
 		},
 		methods: {
 			buttonChange(e) {
@@ -103,7 +110,6 @@
 					if(data.data.list[0]){
 						this.outCheckData = data.data;
 					}else{
-
 						this.laboratoryAppletSignOutSubmit()
 					}
 				}
@@ -171,6 +177,9 @@
 				let obj = {
 					photoList: [],
 				}
+				if(this.isotope){
+					obj.isotope = true;
+				}
 				for (let i = 0; i < self.outCheckData.list.length; i++) {
 					obj.photoList.push({
 						passOutId: self.subList[self.subListIndex].passOutId,
@@ -197,9 +206,15 @@
 			//直接离开
 			async laboratoryAppletSignOutSubmit() {
 				let self = this;
+				let obj = {
+					subId:this.subId
+				}
+				if(this.isotope){
+					obj.isotope = true;
+				}
 				const {
 					data
-				} = await laboratoryAppletSignOutSubmit({subId:this.subId});
+				} = await laboratoryAppletSignOutSubmit(obj);
 				if (data.code == 200) {
 					uni.showToast({
 						title: '签退成功!',

+ 32 - 0
pages_manage/api/index.js

@@ -267,5 +267,37 @@ export function applyRemoteOpenLockConfirm(data) {
 		data: data
 	})
 }
+//授权记录
+export function laboratoryAppletLabLockApplyList(data) {
+	return apiResquest({
+		url: '/laboratory/applet/labLockApply/list',
+		method: 'post',
+		data: {
+			...data
+		}
+	})
+}
+
+//删除-授权记录
+export function laboratoryAppletLabLockApplyDelete(data) {
+	return apiResquest({
+		url: '/laboratory/applet/labLockApply/delete',
+		method: 'post',
+		data: {
+			...data
+		}
+	})
+}
+
+//查询-负责人/安全员 所属的实验室列表
+export function systemSubjectGetAppSubjectByLogin(data) {
+	return apiResquest({
+		url: '/system/subject/getAppSubjectByLogin',
+		method: 'post',
+		data: {
+			...data
+		}
+	})
+}
 
 

+ 59 - 62
pages_manage/views/accessControl/authorizationRecord.vue

@@ -3,7 +3,7 @@
 		<view class="top-max-big-box">
 			<view class="search-box">
 				<img class="img-view" :src="imagesUrl('commonality/icon_aqjc_ss.png')">
-				<input type="text" v-model="data1" placeholder="姓名/学工号" maxlength="20">
+				<input type="text" v-model="searchValue" placeholder="姓名/学工号" maxlength="20">
 				<view class="button-view" @click="searchButton()">搜索</view>
 			</view>
 			<view class="check-button-max-box">
@@ -35,36 +35,41 @@
 			<view class="for-max-big-box" v-for="(item,index) in dataList" :key="index">
 				<view class="for-top-box">
 					<view class="for-title-box">
-						<view class="for-title">{{item.data1}}</view>
+						<view class="for-title">{{item.subjectName}}</view>
 						<view class="for-button-box">
 							<view class="for-button-null-p"></view>
-							<view class="for-button-p" v-if="!item.data3" @click="delButton(item)">删除</view>
+							<view class="for-button-p" v-if="item.openStatus == 0" @click="delButton(item,index)">删除</view>
 							<view class="for-button-null-p"></view>
 						</view>
 					</view>
 					<view class="for-border-box"></view>
 					<view class="position-left"></view>
 					<view class="position-right"></view>
-					<img v-if="item.data3" class="position-top-right" :src="imagesUrl('commonality/img_sqjl_yk@1x.png')">
-					<img v-if="!item.data3" class="position-top-right" :src="imagesUrl('commonality/img_sqjl_wk@1x.png')">
+					<img v-if="item.openStatus == 1" class="position-top-right" :src="imagesUrl('commonality/img_sqjl_yk@1x.png')">
+					<img v-if="item.openStatus == 0" class="position-top-right" :src="imagesUrl('commonality/img_sqjl_wk@1x.png')">
 				</view>
 				<view class="for-bottom-box">
 					<view class="for-user-box">
 						<view class="for-user-left-box">
 							<img :src="imagesUrl('commonality/icon_sqjl_bsqr@1x.png')">
 							<view>被授权人:</view>
-							<view>{{item.data4}}</view>
+							<view>{{item.userName}}</view>
 						</view>
 						<view class="for-user-right-box">
 							<img :src="imagesUrl('commonality/icon_sqjl_sqr@1x.png')">
 							<view>授权人:</view>
-							<view>{{item.data5}}</view>
+							<view>{{item.createByName}}</view>
 						</view>
 					</view>
 					<view class="for-time-box">
 						<img :src="imagesUrl('commonality/icon_aqbj_sj.png')">
 						<view>开门时间:</view>
-						<view><span style="margin-right:30rpx;">{{item.data6}}</span><span>{{item.data7}}</span></view>
+						<view></view>
+					</view>
+					<view class="for-time-box" style="margin-top:20rpx;">
+						<img>
+						<view></view>
+						<view><span style="margin-right:30rpx;">{{item.validBeginTime}}</span>至 <span style="margin-left:30rpx;">{{item.validEndTime}}</span></view>
 					</view>
 				</view>
 			</view>
@@ -75,10 +80,17 @@
 </template>
 
 <script>
+	import {
+		laboratoryAppletLabLockApplyList,
+		laboratoryAppletLabLockApplyDelete
+	} from '@/pages_manage/api/index.js'
+	import {
+		parseTime
+	} from '@/component/public.js'
 	export default {
 		data() {
 			return {
-				data1: '',
+				searchValue: '',
 				subId: '',
 				subName: '',
 				typeList: [{
@@ -97,64 +109,25 @@
 				getDataType: false,
 				getData: {
 					page: 1,
-					pageSize: 20,
+					pageSize: 10,
 				},
-				dataList: [{
-						data1: '实验室名称',
-						data2: '209',
-						data3: true,
-						data4: '李呀呀同学',
-						data5: '张呀呀老师',
-						data6: '2025-10-10',
-						data7: '08:00 - 10:00',
-					},
-					{
-						data1: '实验室名称',
-						data2: '209',
-						data3: false,
-						data4: '李呀呀同学',
-						data5: '张呀呀老师',
-						data6: '2025-10-10',
-						data7: '08:00 - 10:00',
-					}, {
-						data1: '实验室名称实验室名称实验室名称实验室名称实验室名称实验室名称',
-						data2: '209',
-						data3: true,
-						data4: '李呀呀同学',
-						data5: '张呀呀老师',
-						data6: '2025-10-10',
-						data7: '08:00 - 10:00',
-					},
-					{
-						data1: '实验室名称实验室名称实验室名称实验室名称实验室名称',
-						data2: '209',
-						data3: false,
-						data4: '李呀呀同学',
-						data5: '张呀呀老师',
-						data6: '2025-10-10',
-						data7: '08:00 - 10:00',
-					},
-				],
+				dataList: [],
 				total: 0,
 			}
 		},
-		onLoad(option) {
-			if (option.item) {
-				//选中实验室返回
-				let subData = JSON.parse(decodeURIComponent(option.item));
+		onShow() {
+			if (uni.getStorageSync('searchSubData')) {
+				let subData = JSON.parse(uni.getStorageSync('searchSubData'));
+				uni.removeStorageSync('searchSubData');
 				this.$set(this, 'subId', subData.subId);
 				this.$set(this, 'subName', subData.subName);
+			}else{
+				this.searchButton();
 			}
 		},
-		onShow() {
-
-		},
-		mounted() {
-
-		},
 		methods: {
 			//删除按钮
-			delButton(item){
+			delButton(item,index){
 				let self = this;
 				uni.showModal({
 					content: '是否确认删除?',
@@ -162,11 +135,27 @@
 					confirmColor: "#0183FA",
 					success: function(res) {
 						if (res.confirm) {
-							
+							self.laboratoryAppletLabLockApplyDelete(item.id,index);
 						} else if (res.cancel) {}
 					}
 				});
 			}, 
+			//删除 授权记录
+			async laboratoryAppletLabLockApplyDelete(id,index) {
+				let self = this;
+				const {
+					data
+				} = await laboratoryAppletLabLockApplyDelete({id:id});
+				if (data.code == 200) {
+					uni.showToast({
+						title: '操作成功',
+						icon: "none",
+						mask: true,
+						duration: 2000
+					});
+					this.dataList.splice(index,1);
+				}
+			},
 			//滚动加载事件
 			scrollGet() {
 				let self = this;
@@ -179,14 +168,22 @@
 					})
 				}
 			},
-			//获取实验室
+			//授权记录列表
 			async getList() {
 				let self = this;
 				let obj = JSON.parse(JSON.stringify(this.getData))
+				obj.searchValue = this.searchValue;
+				obj.subjectId = this.subId;
+				obj.openStatus = this.typeId;
+				obj.validBeginTime = this.validBeginTime?this.validBeginTime+'T00:00:00':'';
 				const {
 					data
-				} = await systemSubjectGetAppSubject(obj);
+				} = await laboratoryAppletLabLockApplyList(obj);
 				if (data.code == 200) {
+					for(let i=0;i<data.data.records.length;i++){
+						data.data.records[i].validBeginTime = parseTime(data.data.records[i].validBeginTime, "{y}-{m}-{d} {h}:{i}")
+						data.data.records[i].validEndTime = parseTime(data.data.records[i].validEndTime, "{y}-{m}-{d} {h}:{i}")
+					}
 					if (self.getData.page == 1) {
 						this.dataList = data.data.records;
 						this.total = data.data.total;
@@ -210,13 +207,13 @@
 			},
 			// 搜索按钮
 			searchButton() {
-
+				this.$set(this.getData,'page',1);
+				this.getList();
 			},
 			//状态选择
 			buttonChange(e) {
 				this.typeListIndex = e.mp.detail.value;
 				this.typeId = this.typeList[this.typeListIndex].typeId;
-				this.laboratoryAppletOutCheckList()
 			},
 			//时间选择触发-开始
 			beginDateChange(data) {

+ 9 - 10
pages_manage/views/accessControl/remoteOpen.vue

@@ -7,12 +7,11 @@
 				<view class="header-r" v-if="getData.searchValue" @click="clearSearch()">
 					<img :src="imagesUrl('commonality/clear.png')">
 				</view>
-
 			</view>
 		</view>
 		<scroll-view scroll-y @scrolltolower="scrollGet" class="list">
 			<view class="list-li" v-for="(item,index) in dataList">
-				<view class="list-li-l">{{item.subName}}{{item.roomNum}}</view>
+				<view class="list-li-l">{{item.subName}}{{item.roomNum?'('+item.roomNum+')':''}}</view>
 				<view class="list-li-r" @click="openButton(item)">
 					<view class="null-p"></view>
 					<view>开门</view>
@@ -42,7 +41,7 @@
 		config
 	} from '@/api/request/config.js'
 	import {
-		systemSubjectGetAppSubject,
+		systemSubjectGetAppSubjectByLogin,
 		laboratoryApplyRemoteOpenLock,
 		applyRemoteOpenLockConfirm
 	} from '@/pages_manage/api/index.js'
@@ -70,7 +69,7 @@
 					page: 1,
 					pageSize: 20,
 					searchValue: '',
-					adminId: uni.getStorageSync('userId'),
+					// adminId: uni.getStorageSync('userId'),
 				},
 				getDataType: false,
 				msgId:'',
@@ -83,7 +82,7 @@
 
 		},
 		mounted() {
-			this.systemSubjectGetAppSubject();
+			this.systemSubjectGetAppSubjectByLogin();
 		},
 		methods: {
 			//跳转授权记录
@@ -156,16 +155,16 @@
 				} else {
 					this.getData.page += 1;
 					this.$nextTick(() => {
-						this.systemSubjectGetAppSubject();
+						this.systemSubjectGetAppSubjectByLogin();
 					})
 				}
 			},
 			//获取实验室
-			async systemSubjectGetAppSubject() {
+			async systemSubjectGetAppSubjectByLogin() {
 				let self = this;
 				const {
 					data
-				} = await systemSubjectGetAppSubject(this.getData);
+				} = await systemSubjectGetAppSubjectByLogin(this.getData);
 				if (data.code == 200) {
 					if (self.getData.page == 1) {
 						this.dataList = data.data.records;
@@ -188,7 +187,7 @@
 				this.$set(this, 'dataList', []);
 				this.$set(this, 'total', 0);
 				this.$set(this.getData, 'page', 1);
-				this.systemSubjectGetAppSubject();
+				this.systemSubjectGetAppSubjectByLogin();
 			},
 			//实验室搜索框清除
 			clearSearch() {
@@ -197,7 +196,7 @@
 				this.$set(this, 'total', 0);
 				this.$set(this.getData, 'page', 1);
 				this.$set(this.getData, 'searchValue', '');
-				this.systemSubjectGetAppSubject();
+				this.systemSubjectGetAppSubjectByLogin();
 			},
 			//关闭弹框倒计时
 			getMsg() {

+ 14 - 14
pages_manage/views/accessControl/searchSub.vue

@@ -3,13 +3,13 @@
 		<view class="top-max-big-box">
 			<view class="search-box">
 				<img class="img-view" :src="imagesUrl('commonality/icon_aqjc_ss.png')">
-				<input type="text" v-model="data1" placeholder="姓名/学工号" maxlength="20">
+				<input type="text" v-model="searchValue" placeholder="实验室名称" maxlength="20">
 				<view class="button-view" @click="searchButton()">搜索</view>
 			</view>
 		</view>
 		<scroll-view scroll-y @scrolltolower="scrollGet" class="list">
 			<view class="for-sub-box" v-for="(item,index) in dataList" :key="index">
-				<view class="for-text-box">{{item.subName}}{{item.room?'('+item.room+')':''}}</view>
+				<view class="for-text-box">{{item.subName}}{{item.roomNum?'('+item.roomNum+')':''}}</view>
 				<view class="for-right-button" @click="checkSub(item)">
 					<view></view>
 					<view>选择</view>
@@ -23,20 +23,19 @@
 </template>
 
 <script>
+	import {
+		systemSubjectGetAppSubjectByLogin
+	} from '@/pages_manage/api/index.js'
 	export default {
 		data() {
 			return {
-				data1:'',
+				searchValue:'',
 				getDataType: false,
 				getData: {
 					page: 1,
 					pageSize: 20,
 				},
-				dataList: [
-					{subName:'实验室测试',room:'102',subId:'1'},
-					{subName:'实验室测试实验室测试实验室测试',room:'102',subId:'12'},
-					{subName:'实验室测试实验室测试实验室测试实验室测试实验室测试实验室测试',room:'102',subId:'13'},
-				],
+				dataList: [],
 				total: 0,
 			}
 		},
@@ -54,14 +53,13 @@
 
 		},
 		mounted() {
-
+			this.getList();
 		},
 		methods: {
 			//选择实验室
 			checkSub(item){
-				uni.redirectTo({
-					url: '/pages_manage/views/accessControl/authorizationRecord?item=' + encodeURIComponent(JSON.stringify(item))
-				});
+				uni.setStorageSync('searchSubData', JSON.stringify(item));
+				uni.navigateBack();
 			},
 			//滚动加载事件
 			scrollGet() {
@@ -79,9 +77,10 @@
 			async getList() {
 				let self = this;
 				let obj = JSON.parse(JSON.stringify(this.getData))
+				obj.searchValue = this.searchValue
 				const {
 					data
-				} = await systemSubjectGetAppSubject(obj);
+				} = await systemSubjectGetAppSubjectByLogin(obj);
 				if (data.code == 200) {
 					if (self.getData.page == 1) {
 						this.dataList = data.data.records;
@@ -101,7 +100,8 @@
 
 			// 搜索按钮
 			searchButton() {
-
+				this.$set(this.getData,'page',1);
+				this.getList();
 			},
 		},
 	}