xiaoxin hace 11 meses
padre
commit
1fd27b0792

+ 8 - 1
pages.json

@@ -58,7 +58,7 @@
 		{
 			"path": "pages/proof/proof",
 			"style": {
-				"navigationBarTitleText": "电子凭证",
+				"navigationBarTitleText": "预报道凭证",
 				"navigationStyle": "custom"
 			}
 		},
@@ -96,6 +96,13 @@
 				"navigationBarTitleText": "缴费详情",
 				"navigationStyle": "custom"
 			}
+		},
+		{
+			"path": "pages/myMsg/myMsg",
+			"style": {
+				"navigationBarTitleText": "我的信息",
+				"navigationStyle": "custom"
+			}
 		}
 	],
 	"globalStyle": {

+ 104 - 5
pages/404/404.vue

@@ -6,30 +6,81 @@
 		<view class="info">
 			{{ info }}
 		</view>
+
+		<!-- 弹窗区域 -->
+		<uni-popup ref="popup" :is-mask-click="false">
+			<view class="pop">
+				<image class="pop_img" src="/static/3.png" mode="aspectFill"></image>
+				<!-- 关闭图标 -->
+				<uni-icons class="pop_close" type="closeempty" color="#808080" size="20" @click="handleClose"></uni-icons>
+				<view class="pop_title">温馨提示</view>
+				<view class="pop_text" v-if="pageValue == 2">{{ tips.chooseDormitory }}</view>
+				<view class="pop_text" v-if="pageValue == 3">{{ tips.carOrder }}</view>
+				<view class="pop_btn" @click="handleFinish">去完成缴费</view>
+			</view>
+		</uni-popup>
 	</view>
 </template>
 
 <script setup>
-import { ref } from 'vue'
-
+import { ref, nextTick } from 'vue'
 import { onLoad } from '@dcloudio/uni-app'
-
 import { getQueryString } from '../../utils/getParams.js'
+import { getSettingsInfoReq } from '@/api/index.js'
 
 const info = ref('')
 
-onLoad(() => {
-	getMessage()
+const popup = ref()
+
+// 页面类型
+const pageValue = ref()
+
+const tips = ref({})
+
+onLoad((options) => {
+	// console.log(options)
+	if (options.pageValue) {
+		pageValue.value = options.pageValue
+	}
+	// 获取设置数据
+	getSettingsInfo()
+
+	nextTick(() => {
+		getMessage()
+	})
 })
 
 const getMessage = () => {
 	const message = getQueryString('message')
 	if (message) {
 		info.value = message
+
+		if (message == '请先完成缴费') {
+			popup.value.open()
+		}
 	} else {
 		info.value = '404'
 	}
 }
+
+// 获取设置数据
+const getSettingsInfo = async () => {
+	const res = await getSettingsInfoReq()
+	// console.log(res)
+	if (res.code == 200) {
+		tips.value = res.data
+	}
+}
+
+// 弹窗关闭图标回调
+const handleClose = () => {
+	popup.value.close()
+}
+
+// 去完成缴费回调
+const handleFinish = () => {
+	window.location.href = `https://pay.ncjti.edu.cn`
+}
 </script>
 
 <style lang="scss" scoped>
@@ -52,5 +103,53 @@ const getMessage = () => {
 	.info {
 		padding: 0 30rpx;
 	}
+
+	.pop {
+		position: relative;
+		box-sizing: border-box;
+		padding: 150rpx 20rpx 50rpx;
+		width: 659rpx;
+		height: 728rpx;
+		border-radius: 15rpx;
+		background: linear-gradient(180deg, #ebf2ff 0%, #ffffff 100%);
+
+		.pop_img {
+			position: absolute;
+			top: -103rpx;
+			left: 227rpx;
+			width: 206rpx;
+			height: 206rpx;
+		}
+
+		.pop_close {
+			position: absolute;
+			top: 19rpx;
+			right: 29rpx;
+		}
+
+		.pop_title {
+			margin-bottom: 28rpx;
+			font-size: 32rpx;
+			font-weight: bold;
+		}
+
+		.pop_text {
+			font-size: 28rpx;
+			line-height: 50rpx;
+		}
+
+		.pop_btn {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			margin: 90rpx auto 0;
+			width: 543rpx;
+			height: 100rpx;
+			color: #fff;
+			font-size: 32rpx;
+			border-radius: 8rpx;
+			background-color: #0061ff;
+		}
+	}
 }
 </style>

+ 13 - 20
pages/arrive/arrive.vue

@@ -90,8 +90,8 @@
 
 		<!-- 按钮区域 -->
 		<view class="btns">
-			<view class="btn up" @click="handleUp">上一步</view>
-			<view class="btn down" @click="handleNext">下一步</view>
+			<view v-if="!editType" class="btn up" @click="handleUp">上一步</view>
+			<view class="btn down" @click="handleNext">提交</view>
 		</view>
 
 		<!-- 添加陪同成员弹窗区域 -->
@@ -186,10 +186,14 @@ const info = ref()
 
 const pop_info = ref()
 
+const editType = ref()
+
 onLoad(() => {
 	studentInfo.value = uni.getStorageSync('studentInfo')
 	info.value = uni.getStorageSync('settingInfo').arriveSchool
 	pop_info.value = uni.getStorageSync('settingInfo').chooseDormitory
+
+	editType.value = uni.getStorageSync('editType')
 	// console.log(studentInfo.value)
 	// console.log(info.value)
 	if (!studentInfo.value.registerOntime) {
@@ -419,23 +423,18 @@ const handleNext = () => {
 		return
 	}
 
-	// if (!avs.value.length) {
-	// 	uni.showToast({
-	// 		title: '请至少添加一名陪同人员',
-	// 		icon: 'none'
-	// 	})
-	// 	return
-	// }
 	studentInfo.value.avs = avs.value
 	uni.setStorageSync('studentInfo', studentInfo.value)
-	studentInfo.value.arrvieDate = studentInfo.value.arrvieDate + ' 00:00:00'
+
+	const mergedObj = { ...studentInfo.value, arrvieDate: studentInfo.value.arrvieDate + ' 00:00:00' }
+	// console.log(mergedObj)
 	// console.log(studentInfo.value)
 	uni.showModal({
 		title: '提示',
 		content: '确定提交吗?',
 		success: async (res) => {
 			if (res.confirm) {
-				const res = await submitInfoReq(studentInfo.value)
+				const res = await submitInfoReq(mergedObj)
 				// console.log(res)
 				if (res.code == 200) {
 					uni.showToast({
@@ -444,15 +443,9 @@ const handleNext = () => {
 					})
 
 					setTimeout(() => {
-						let { isPay } = studentInfo.value
-						// console.log(isPay)
-						if (isPay == 0) {
-							popup_tips.value.open()
-						} else if (isPay == 1) {
-							uni.navigateTo({
-								url: '/pages/payInfo/payInfo'
-							})
-						}
+						uni.reLaunch({
+							url: '/pages/myMsg/myMsg'
+						})
 					}, 1500)
 				}
 			}

+ 56 - 10
pages/family/family.vue

@@ -130,7 +130,7 @@
 
 		<!-- 按钮区域 -->
 		<view class="btns">
-			<view class="btn up" @click="handleUp">上一步</view>
+			<view v-if="!editType" class="btn up" @click="handleUp">上一步</view>
 			<view class="btn down" @click="handleNext">下一步</view>
 		</view>
 
@@ -143,6 +143,17 @@
 
 				<view class="pop_box">
 					<view class="box_key">称谓:</view>
+					<picker @change="changeName" :value="currtIndex_name" :range="nameList">
+						<view class="box_value">
+							<view class="box_text" :class="{ active: currtIndex_name != null }">{{ currtIndex_name != null ? nameList[currtIndex_name] : '请选择称谓' }}</view>
+
+							<uni-icons type="down" size="16" color="#ccc"></uni-icons>
+						</view>
+					</picker>
+				</view>
+
+				<view class="pop_box" v-if="currtIndex_name == 2">
+					<view class="box_key"></view>
 					<view class="box_value">
 						<input class="input" type="text" placeholder="请输入称谓" placeholder-style="color:#CCCCCC;font-size:28rpx;" v-model="popObj.familyShip" />
 					</view>
@@ -229,11 +240,18 @@ const popObj = ref({
 
 const info = ref()
 
+const nameList = ref(['父亲', '母亲', '其他'])
+const currtIndex_name = ref(null)
+
+const editType = ref()
+
 onLoad(() => {
 	studentInfo.value = uni.getStorageSync('studentInfo') || {}
 	info.value = uni.getStorageSync('settingInfo').familyInfo || ''
 	fvs.value = studentInfo.value.fvs || []
 	// console.log(studentInfo.value)
+
+	editType.value = uni.getStorageSync('editType')
 	// 获取省分组
 	getProvinceGroup()
 })
@@ -352,6 +370,17 @@ const bindPickerChange_district = (e) => {
 	studentInfo.value.odistrict = districtList.value[currtIndex_district.value].name
 }
 
+// 选择称谓回调
+const changeName = (e) => {
+	// console.log(e)
+	currtIndex_name.value = e.detail.value
+	if (currtIndex_name.value != 2) {
+		popObj.value.familyShip = nameList.value[currtIndex_name.value]
+	} else {
+		popObj.value.familyShip = ''
+	}
+}
+
 // 点击上一步按钮回调
 const handleUp = () => {
 	uni.navigateBack()
@@ -463,6 +492,13 @@ const handleAdd = () => {
 // 弹窗关闭图标回调
 const handleClose = () => {
 	popup.value.close()
+	currtIndex_name.value = null
+	popObj.value = {
+		familyShip: '',
+		name: '',
+		workUnit: '',
+		phone: ''
+	}
 }
 
 // 点击弹窗确定按钮回调
@@ -505,19 +541,15 @@ const handleConfirm = () => {
 		return
 	}
 
+	// console.log(popObj.value)
+
 	uni.showModal({
 		title: '提示',
 		content: '确定添加吗?',
 		success: (res) => {
 			if (res.confirm) {
 				fvs.value.push(popObj.value)
-				popObj.value = {
-					familyShip: '',
-					name: '',
-					workUnit: '',
-					phone: ''
-				}
-				popup.value.close()
+				handleClose()
 			}
 		}
 	})
@@ -797,7 +829,7 @@ const bindPickerChange_district2 = (e) => {
 		box-sizing: border-box;
 		padding: 150rpx 20rpx 50rpx;
 		width: 659rpx;
-		height: 728rpx;
+		height: 788rpx;
 		border-radius: 15rpx;
 		background: linear-gradient(180deg, #ebf2ff 0%, #ffffff 100%);
 
@@ -827,15 +859,29 @@ const bindPickerChange_district2 = (e) => {
 			}
 
 			.box_value {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				box-sizing: border-box;
+				padding: 0 20rpx;
 				width: 300rpx;
 				height: 70rpx;
 				border-radius: 4rpx;
 				border: 2rpx solid #cccccc;
 
+				.box_text {
+					color: #ccc;
+					font-size: 28rpx;
+				}
+
 				.input {
-					padding: 0 20rpx;
+					// padding: 0 20rpx;
 					height: 100%;
 				}
+
+				.active {
+					color: #000;
+				}
 			}
 		}
 

+ 65 - 46
pages/index/index.vue

@@ -30,77 +30,96 @@ const URL = 'http://192.168.161.221:8080/welcome/api/home/Openid'
 onLoad(() => {
 	const studentInfo = uni.getStorageSync('studentInfo')
 	if (studentInfo) {
-		// pageValue.value = getQueryString('urlstr')
-		// goPage()
-		uni.reLaunch({
-			url: '/pages/read/read'
-		})
+		pageValue.value = getQueryString('urlstr')
+		getInfo()
 	} else {
 		loginFilter()
 	}
 })
 
 // 获取用户token
-const loginFilter = async () => {
+const loginFilter = () => {
 	const token = getQueryString('token')
-	// pageValue.value = getQueryString('urlstr')
+	pageValue.value = getQueryString('urlstr')
 	type.value = getQueryString('type')
+	// console.log(pageValue.value)
+	// console.log(type.value)
 	if (!token) {
 		getCardnumberURL()
 	} else {
 		uni.setStorageSync('token', token)
-
-		// console.log(pageValue.value)
+		uni.setStorageSync('urlstr', pageValue.value)
 		// console.log(type.value)
 
 		if (type.value == 1) {
-			// 获取信息
-			const res = await getInfoByTokenReq()
-			// console.log(res)
-			if (res.code == 200) {
-				uni.setStorageSync('studentInfo', res.data)
-				uni.setStorageSync('TOKEN', res.data.token)
-				// 是学生的话如何跳转
-				// goPage()
+			getInfo()
+		} else if (type.value == 2) {
+			// 不是学生的话跳转登录页面
+
+			if (pageValue.value == 'false') {
+				uni.clearStorageSync()
+				uni.reLaunch({
+					url: '/pages/404/404?message=暂无页面'
+				})
+			} else {
 				uni.reLaunch({
-					url: '/pages/read/read'
+					url: `/pages/login/login?pageValue=${pageValue.value}`
 				})
 			}
-		} else if (type.value == 2) {
-			// 不是学生的话跳转登录页面
-			// if (pageValue.value == 'false') {
-			// 	uni.setStorageSync('token', '')
-			// 	uni.reLaunch({
-			// 		url: '/pages/404/404?message=暂无页面'
-			// 	})
-			// } else {
-			// 	uni.reLaunch({
-			// 		url: `/pages/login/login?pageValue=${pageValue.value}`
-			// 	})
-			// }
-			uni.reLaunch({
-				url: `/pages/login/login`
-			})
 		}
 	}
 }
 
+// 获取信息
+const getInfo = async () => {
+	const res = await getInfoByTokenReq()
+	// console.log(res)
+	if (res.code == 200) {
+		uni.setStorageSync('studentInfo', res.data)
+		uni.setStorageSync('TOKEN', res.data.token)
+		// 是学生的话如何跳转
+		goPage()
+	}
+}
+
 const goPage = () => {
 	if (pageValue.value == 1) {
-		uni.reLaunch({
-			url: '/pages/read/read'
-		})
-	} else if (pageValue.value == 2) {
-		uni.reLaunch({
-			url: '/pages/select/select'
-		})
-	} else if (pageValue.value == 3) {
-		uni.reLaunch({
-			url: '/pages/subscribe/subscribe'
-		})
+		const studentInfo = uni.getStorageSync('studentInfo')
+		if (studentInfo.fillStatus == '已填报') {
+			uni.reLaunch({
+				url: '/pages/myMsg/myMsg'
+			})
+		} else {
+			uni.reLaunch({
+				url: '/pages/read/read'
+			})
+		}
+	} else if (pageValue.value == 2 || pageValue.value == 3) {
+		let { isPay } = uni.getStorageSync('studentInfo')
+
+		if (isPay == 0) {
+			// uni.clearStorageSync()
+			uni.reLaunch({
+				url: `/pages/404/404?message=请先完成缴费&pageValue=${pageValue.value}`
+			})
+		} else if (isPay == 1) {
+			if (pageValue.value == 2) {
+				uni.reLaunch({
+					url: '/pages/select/select'
+				})
+			} else {
+				uni.reLaunch({
+					url: '/pages/subscribe/subscribe'
+				})
+			}
+		} else {
+			uni.showToast({
+				title: '暂无缴费信息',
+				icon: 'none'
+			})
+		}
 	} else {
-		uni.setStorageSync('token', '')
-		uni.setStorageSync('studentInfo', '')
+		uni.clearStorageSync()
 		uni.reLaunch({
 			url: '/pages/404/404?message=暂无页面'
 		})

+ 18 - 3
pages/info/info.vue

@@ -185,12 +185,12 @@
 			</view>
 
 			<view class="form_box">
-				<view class="box_key">次:</view>
+				<view class="box_key">次:</view>
 				<view class="box_input">
 					<input
 						class="input"
 						type="text"
-						placeholder="请输入次"
+						placeholder="请输入次"
 						placeholder-style="color:#CCCCCC;font-size:28rpx"
 						v-model="studentInfo.batchValue"
 						:disabled="studentInfo.batchValue"
@@ -432,6 +432,8 @@ const handleNext = () => {
 
 <style lang="scss" scoped>
 .container {
+	box-sizing: border-box;
+	padding-bottom: 50rpx;
 	min-height: 100vh;
 	background-color: #f5f9ff;
 
@@ -525,7 +527,7 @@ const handleNext = () => {
 		display: flex;
 		align-items: center;
 		justify-content: space-around;
-		padding: 10rpx 0 50rpx;
+		padding: 10rpx 0 20rpx;
 		height: 100rpx;
 		background-color: #fff;
 
@@ -548,5 +550,18 @@ const handleNext = () => {
 			background-color: #0061ff;
 		}
 	}
+
+	.btn_out {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		margin: auto;
+		width: 690rpx;
+		height: 100rpx;
+		font-size: 32rpx;
+		color: #fff;
+		border-radius: 8rpx;
+		background-color: #0061ff;
+	}
 }
 </style>

+ 68 - 54
pages/login/login.vue

@@ -4,9 +4,9 @@
 		<image class="logo" src="/static/logo.png" mode="aspectFill"></image>
 
 		<!-- 标题区域 -->
-		<view class="title">信息采集迎新系统</view>
-		<!-- <view class="title" v-if="pageValue == 2" @click="ceshi">宿舍选取迎新系统</view>
-		<view class="title" v-if="pageValue == 3" @click="ceshi">访客预约迎新系统</view> -->
+		<view class="title" v-if="pageValue == 1">信息采集迎新系统</view>
+		<view class="title" v-if="pageValue == 2">宿舍选取迎新系统</view>
+		<view class="title" v-if="pageValue == 3">访客预约迎新系统</view>
 
 		<!-- 录取号区域 -->
 		<view class="box">
@@ -37,11 +37,8 @@
 				<!-- 关闭图标 -->
 				<uni-icons class="pop_close" type="closeempty" color="#808080" size="20" @click="handleClose"></uni-icons>
 				<view class="pop_title">温馨提示</view>
-				<view class="pop_text">亲爱的同学,欢迎加入校园大家庭!</view>
-				<view class="pop_text">系统显示您当前的缴费流程尚未完成。</view>
-				<view class="pop_text">为了确保每位同学都能顺利开启校园生活,</view>
-				<view class="pop_text">完成缴费后即可解锁宿舍选择功能哦~</view>
-				<view class="pop_text">期待您早日选定心仪的宿舍,开启美好校园生活!</view>
+				<view class="pop_text" v-if="pageValue == 2">{{ tips.chooseDormitory }}</view>
+				<view class="pop_text" v-if="pageValue == 3">{{ tips.carOrder }}</view>
 				<view class="pop_btn" @click="handleFinish">去完成缴费</view>
 			</view>
 		</uni-popup>
@@ -52,6 +49,7 @@
 import { onLoad } from '@dcloudio/uni-app'
 import { ref } from 'vue'
 import { loginReq } from '@/api/index.js'
+import { getSettingsInfoReq } from '@/api/index.js'
 
 // 页面类型
 const pageValue = ref()
@@ -64,19 +62,21 @@ const cardId = ref()
 
 const popup = ref()
 
+const tips = ref({})
+
 onLoad((options) => {
-	// console.log(options)
-	// pageValue.value = options.pageValue
-	// console.log(pageValue.value)
+	pageValue.value = options.pageValue
+	// 获取设置数据
+	getSettingsInfo()
 })
 
-// const ceshi = () => {
-// 	popup.value.open()
-// }
-
-// 弹窗关闭图标回调
-const handleClose = () => {
-	popup.value.close()
+// 获取设置数据
+const getSettingsInfo = async () => {
+	const res = await getSettingsInfoReq()
+	// console.log(res)
+	if (res.code == 200) {
+		tips.value = res.data
+	}
 }
 
 // 授权登录按钮回调
@@ -97,16 +97,6 @@ const handleLogin = async () => {
 		return
 	}
 
-	// let reg_admissNum = /^\d{8}$/
-
-	// if (!reg_admissNum.test(admissNum.value)) {
-	// 	uni.showToast({
-	// 		title: '录取号为8位数字',
-	// 		icon: 'none'
-	// 	})
-	// 	return
-	// }
-
 	let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
 
 	if (!reg.test(cardId.value)) {
@@ -127,47 +117,71 @@ const handleLogin = async () => {
 		uni.setStorageSync('studentInfo', res.data)
 		uni.setStorageSync('TOKEN', res.data.token)
 
-		// if (pageValue.value == 1) {
-		// 	uni.reLaunch({
-		// 		url: '/pages/read/read'
-		// 	})
-		// } else if (pageValue.value == 2) {
-		// 	// uni.reLaunch({
-		// 	// 	url: '/pages/select/select'
-		// 	// })
-		// 	popup.value.open()
-		// } else if (pageValue.value == 3) {
-		// 	uni.reLaunch({
-		// 		url: '/pages/subscribe/subscribe'
-		// 	})
-		// } else {
-		// 	uni.setStorageSync('token', '')
-		// 	uni.reLaunch({
-		// 		url: '/pages/404/404?message=暂无页面'
-		// 	})
-		// }
-		uni.reLaunch({
-			url: '/pages/read/read'
-		})
+		if (pageValue.value == 1) {
+			const studentInfo = uni.getStorageSync('studentInfo')
+			if (studentInfo.fillStatus == '已填报') {
+				uni.reLaunch({
+					url: '/pages/myMsg/myMsg'
+				})
+			} else {
+				uni.reLaunch({
+					url: '/pages/read/read'
+				})
+			}
+		} else if (pageValue.value == 2 || pageValue.value == 3) {
+			let { isPay } = res.data
+			// console.log(isPay)
+
+			if (isPay == 0) {
+				popup.value.open()
+			} else if (isPay == 1) {
+				if (pageValue.value == 2) {
+					uni.reLaunch({
+						url: '/pages/select/select'
+					})
+				} else {
+					uni.reLaunch({
+						url: '/pages/subscribe/subscribe'
+					})
+				}
+			} else {
+				uni.showToast({
+					title: '暂无缴费信息',
+					icon: 'none'
+				})
+			}
+		} else {
+			uni.setStorageSync('token', '')
+			uni.reLaunch({
+				url: '/pages/404/404?message=暂无页面'
+			})
+		}
 	}
 }
 
+// 弹窗关闭图标回调
+const handleClose = () => {
+	popup.value.close()
+}
+
 // 去完成缴费回调
 const handleFinish = () => {
-	uni.reLaunch({
-		url: '/pages/status/status'
-	})
+	window.location.href = `https://pay.ncjti.edu.cn`
 }
 </script>
 
 <style lang="scss" scoped>
 .container {
+	position: relative;
 	display: flex;
 	flex-direction: column;
 	align-items: center;
+	box-sizing: border-box;
 	padding: 0 20rpx;
+	width: 100%;
 	min-height: 100vh;
 	background: linear-gradient(180deg, rgba(242, 247, 255, 1) 0%, rgba(242, 247, 255, 0) 100%);
+	overflow: hidden;
 
 	.logo {
 		margin-top: 80rpx;
@@ -276,4 +290,4 @@ const handleFinish = () => {
 		}
 	}
 }
-</style>
+</style>

+ 34 - 13
pages/myDorm/myDorm.vue

@@ -102,11 +102,11 @@
 
 		<!-- 按钮区域 -->
 		<view class="btns">
-			<view class="btn_next" @click="handleLook">查看电子凭证</view>
+			<view class="btn_next" @click="handleLook">查看预报道凭证</view>
 
-			<view class="btn_next" v-if="studentInfo.trafficMethod == '自驾'" @click="handleOrder">预约车牌</view>
+			<view class="btn_next" @click="handleCar">车牌预约</view>
 
-			<view class="btn_next" @click="handleNext">军训服装尺码采集</view>
+			<view class="btn_next" @click="logout">退出登录</view>
 		</view>
 	</view>
 </template>
@@ -167,20 +167,40 @@ const handleLook = () => {
 	}
 }
 
-// 预约车牌按钮回调
-const handleOrder = () => {
-	uni.navigateTo({
-		url: '/pages/subscribe/subscribe'
-	})
+// 车牌预约按钮回调
+const handleCar = () => {
+	let info = uni.getStorageSync('studentInfo')
+	// console.log(info)
+	if (info.trafficMethod == '自驾') {
+		uni.showModal({
+			title: '提示',
+			content: '确定前往车牌预约吗?',
+			success: (res) => {
+				if (res.confirm) {
+					uni.reLaunch({
+						url: '/pages/subscribe/subscribe'
+					})
+				}
+			}
+		})
+	} else {
+		uni.showToast({
+			title: '您选择的交通方式不为自驾,不支持车牌预约',
+			icon: 'none'
+		})
+	}
 }
 
-const handleNext = () => {
+// 退出登录按钮回调
+const logout = () => {
 	uni.showModal({
 		title: '提示',
-		content: '确定前往军训服装尺码采集吗?',
+		content: '确定退出登录吗?',
 		success: (res) => {
 			if (res.confirm) {
-				window.location.href = `https://wj.qq.com/s2/14907423/70b4/`
+				let urlstr = uni.getStorageSync('urlstr')
+				uni.clearStorageSync()
+				window.location.href = `https://chtech.ncjti.edu.cn/welcome/welcomeH5/#/?urlstr=${urlstr}`
 			}
 		}
 	})
@@ -190,7 +210,7 @@ const handleNext = () => {
 <style lang="scss" scoped>
 .container {
 	padding-top: 12rpx;
-	padding-bottom: 100rpx;
+	padding-bottom: 50rpx;
 	min-height: 100vh;
 	background-color: #f5f9ff;
 
@@ -198,8 +218,9 @@ const handleNext = () => {
 		padding: 0 20rpx;
 		height: 90rpx;
 		line-height: 90rpx;
-		font-size: 32rpx;
+		font-size: 36rpx;
 		font-weight: bold;
+		text-align: center;
 		background-color: #fff;
 	}
 

+ 303 - 0
pages/myMsg/myMsg.vue

@@ -0,0 +1,303 @@
+<template>
+	<view class="container">
+		<!-- 图片区域 -->
+		<image v-if="info.picture" class="image" :src="info.picture" mode="aspectFill" @click="handleImg(info.picture)"></image>
+		<image v-else class="image" src="/static/7.png" mode="aspectFill" @click="handleImg('/static/7.png')"></image>
+
+		<!-- 基本信息区域 -->
+		<view class="basic">
+			<view class="basic_title">
+				<uni-icons type="staff" size="30" color="#000000"></uni-icons>
+				<view class="text">基本信息</view>
+			</view>
+			<view class="basic_box">录取号:{{ info.admissNum }}</view>
+			<view class="basic_box">姓名:{{ info.name }}</view>
+			<view class="basic_box">身份证号:{{ info.cardId }}</view>
+			<view class="basic_box">出生年月:{{ info.birthday }}</view>
+			<view class="basic_box">性别:{{ info.sex }}</view>
+			<view class="basic_box">院系:{{ info.college }}</view>
+			<view class="basic_box">专业:{{ info.major }}</view>
+			<view class="basic_box">班级:{{ info.classstr }}</view>
+			<view class="basic_box">考生号:{{ info.examNum }}</view>
+			<view class="basic_box">毕业中学:{{ info.graduationSchool }}</view>
+			<view class="basic_box">政治面貌:{{ info.politicalStatu }}</view>
+			<view class="basic_box">学制:{{ info.eduSystem }}</view>
+			<view class="basic_box">批次:{{ info.batchValue }}</view>
+			<view class="basic_box">民族:{{ info.nationality }}</view>
+		</view>
+
+		<!-- 填报明细区域 -->
+		<view class="fill">
+			<view class="fill_title">
+				<uni-icons type="bars" size="25" color="#000000"></uni-icons>
+				<view class="text">填报明细</view>
+			</view>
+
+			<view class="fill_box">手机号码:{{ info.phone }}</view>
+			<view class="fill_box">籍贯:{{ info.oprovince + info.ocity + info.odistrict }}</view>
+			<view class="fill_box">家庭住址:{{ info.province + info.city + info.district + info.address }}</view>
+			<view class="fill_box">邮编:{{ info.zipCode }}</view>
+			<view class="fill_box">按时报到:{{ info.registerOntime == 0 ? '否' : '是' }}</view>
+			<view class="fill_box">交通方式:{{ info.trafficMethod }}</view>
+			<view class="fill_box">到站地点:{{ info.arrive }}</view>
+			<view class="fill_box">到站日期:{{ info.arrvieDate }}</view>
+			<view class="fill_box">到站时间:{{ info.arriveTime }}</view>
+		</view>
+
+		<!-- 家庭成员区域 -->
+		<view class="family">
+			<view class="family_top">
+				<uni-icons type="staff" size="30"></uni-icons>
+				<view class="top_title">家庭成员</view>
+			</view>
+
+			<view class="family_table" v-if="info.fvs.length">
+				<view class="table_box top">
+					<view class="title">称谓</view>
+					<view class="name">姓名</view>
+					<view class="work">工作单位</view>
+					<view class="phone">联系方式</view>
+				</view>
+
+				<view class="table_box" v-for="(item, index) in info.fvs" :key="index">
+					<view class="title">{{ item.familyShip }}</view>
+					<view class="name">{{ item.name }}</view>
+					<view class="work">{{ item.workUnit }}</view>
+					<view class="phone">{{ item.phone }}</view>
+				</view>
+			</view>
+		</view>
+
+		<!-- 陪同成员区域 -->
+		<view class="family" v-if="info.avs.length">
+			<view class="family_top">
+				<uni-icons type="staff-filled" size="30"></uni-icons>
+				<view class="top_title">陪同人员信息</view>
+			</view>
+
+			<view class="family_table">
+				<view class="table_box top">
+					<view class="title">序号</view>
+					<view class="name">姓名</view>
+					<view class="phone">联系电话</view>
+				</view>
+
+				<view class="table_box" v-for="(item, index) in info.avs" :key="index">
+					<view class="title">{{ index + 1 }}</view>
+					<view class="name">{{ item.name }}</view>
+					<view class="phone">{{ item.phone }}</view>
+				</view>
+			</view>
+		</view>
+
+		<!-- 修改按钮 -->
+		<view class="btn" @click="handleEdit">修改</view>
+		<view class="btn" @click="handlePay">去缴费</view>
+		<view class="btn margin" @click="logout">退出登录</view>
+	</view>
+</template>
+
+<script setup>
+import { ref } from 'vue'
+import { onLoad } from '@dcloudio/uni-app'
+
+// 用户信息
+const info = ref({})
+
+onLoad(() => {
+	info.value = uni.getStorageSync('studentInfo')
+	// console.log(info.value)
+})
+
+// 修改按钮回调
+const handleEdit = () => {
+	uni.showModal({
+		title: '提示',
+		content: '确定修改吗?',
+		success: (res) => {
+			if (res.confirm) {
+				uni.setStorageSync('editType', 1)
+				uni.reLaunch({
+					url: '/pages/family/family'
+				})
+			}
+		}
+	})
+}
+
+// 去缴费按钮回调
+const handlePay = () => {
+	uni.showModal({
+		title: '提示',
+		content: '确定去缴费吗?',
+		success: (res) => {
+			if (res.confirm) {
+				window.location.href = `https://pay.ncjti.edu.cn`
+			}
+		}
+	})
+}
+
+// 退出登录回调
+const logout = () => {
+	uni.showModal({
+		title: '提示',
+		content: '确定退出登录吗?',
+		success: (res) => {
+			if (res.confirm) {
+				let urlstr = uni.getStorageSync('urlstr')
+				uni.clearStorageSync()
+				window.location.href = `https://chtech.ncjti.edu.cn/welcome/welcomeH5/#/?urlstr=${urlstr}`
+			}
+		}
+	})
+}
+
+// 点击图片回调
+const handleImg = (url) => {
+	uni.previewImage({
+		urls: [url]
+	})
+}
+</script>
+
+<style lang="scss" scoped>
+.container {
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	padding: 20rpx;
+
+	.image {
+		width: 186rpx;
+		height: 213rpx;
+		border-radius: 8rpx;
+	}
+
+	.basic {
+		margin-top: 20rpx;
+		width: 100%;
+		font-size: 28rpx;
+
+		.basic_title {
+			display: flex;
+			align-items: center;
+			margin-bottom: 30rpx;
+			font-size: 30rpx;
+			font-weight: bold;
+
+			.text {
+				margin-left: 15rpx;
+			}
+		}
+
+		.basic_box {
+			margin-bottom: 15rpx;
+		}
+	}
+
+	.fill {
+		margin-top: 20rpx;
+		width: 100%;
+
+		.fill_title {
+			display: flex;
+			align-items: center;
+			margin-bottom: 30rpx;
+			font-size: 30rpx;
+			font-weight: bold;
+
+			.text {
+				margin-left: 15rpx;
+			}
+		}
+
+		.fill_box {
+			margin-bottom: 15rpx;
+		}
+	}
+
+	.family {
+		margin-bottom: 15rpx;
+		width: 100%;
+		background-color: #fff;
+
+		.family_top {
+			display: flex;
+			align-items: center;
+			height: 90rpx;
+
+			.top_title {
+				margin-left: 20rpx;
+				font-size: 30rpx;
+				font-weight: bold;
+			}
+		}
+
+		.family_table {
+			font-size: 24rpx;
+
+			.table_box {
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				height: 70rpx;
+				border-bottom: 2rpx solid #e6e6e6;
+
+				.title {
+					width: 140rpx;
+					text-align: center;
+					white-space: nowrap;
+					text-overflow: ellipsis;
+					overflow: hidden;
+				}
+
+				.name {
+					width: 140rpx;
+					text-align: center;
+					white-space: nowrap;
+					text-overflow: ellipsis;
+					overflow: hidden;
+				}
+
+				.work {
+					width: 200rpx;
+					text-align: center;
+					white-space: nowrap;
+					text-overflow: ellipsis;
+					overflow: hidden;
+				}
+
+				.phone {
+					width: 200rpx;
+					text-align: center;
+					white-space: nowrap;
+					text-overflow: ellipsis;
+					overflow: hidden;
+				}
+			}
+
+			.top {
+				background-color: #f0f3f7;
+			}
+		}
+	}
+
+	.btn {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		margin-top: 20rpx;
+		width: 100%;
+		height: 100rpx;
+		font-size: 32rpx;
+		color: #fff;
+		border-radius: 8rpx;
+		background-color: #0061ff;
+	}
+
+	.margin {
+		margin-bottom: 50rpx;
+	}
+}
+</style>

+ 28 - 10
pages/mySubscribe/mySubscribe.vue

@@ -8,16 +8,15 @@
 					<view class="header_right">预约成功</view>
 				</view>
 				<view class="box_info">
-					<!-- <view class="info_box">司机姓名:{{ info.driverName }}</view> -->
+					<view class="info_box">车牌号:{{ info.carNumber }}</view>
 					<view class="info_box">学生姓名:{{ info.name }}</view>
 					<view class="info_box">手机号:{{ info.phone }}</view>
-					<view class="info_box">身份证号:{{ info.studentCard }}</view>
-					<view class="info_box">同行人数:{{ info.peerNum }}</view>
-					<view class="info_box">访问事由:{{ info.visitorReason }}</view>
-					<view class="info_box">校区:{{ info.school }}</view>
+					<!-- <view class="info_box">身份证号:{{ info.studentCard }}</view> -->
 					<view class="info_box">到访开始时间:{{ info.startTime }}</view>
 					<view class="info_box">到访结束时间:{{ info.endTime }}</view>
-					<view class="info_box">车牌号:{{ info.carNumber }}</view>
+					<!-- <view class="info_box">同行人数:{{ info.peerNum }}</view> -->
+					<view class="info_box">访问事由:{{ info.visitorReason }}</view>
+					<!-- <view class="info_box">校区:{{ info.school }}</view> -->
 
 					<view class="info_btn" @click="handleCancel">取消预约</view>
 				</view>
@@ -29,7 +28,8 @@
 			<view class="btn" @click="handleSub">去预约</view>
 		</view>
 
-		<view class="btn" @click="handleNext">军训服装尺码采集</view>
+		<view class="btn" @click="handleSelect">宿舍选择</view>
+		<view class="btn" @click="logout">退出登录</view>
 	</view>
 </template>
 
@@ -86,13 +86,31 @@ const handleSub = () => {
 	})
 }
 
-const handleNext = () => {
+// 宿舍选择按钮回调
+const handleSelect = () => {
+	uni.showModal({
+		title: '提示',
+		content: '确定前往宿舍选择吗?',
+		success: (res) => {
+			if (res.confirm) {
+				uni.reLaunch({
+					url: '/pages/select/select'
+				})
+			}
+		}
+	})
+}
+
+// 退出登录回调
+const logout = () => {
 	uni.showModal({
 		title: '提示',
-		content: '确定前往军训服装尺码采集吗?',
+		content: '确定退出登录吗?',
 		success: (res) => {
 			if (res.confirm) {
-				window.location.href = `https://wj.qq.com/s2/14907423/70b4/`
+				let urlstr = uni.getStorageSync('urlstr')
+				uni.clearStorageSync()
+				window.location.href = `https://chtech.ncjti.edu.cn/welcome/welcomeH5/#/?urlstr=${urlstr}`
 			}
 		}
 	})

+ 87 - 24
pages/payInfo/payInfo.vue

@@ -17,10 +17,9 @@
 
 		<!-- 按钮区域 -->
 		<view class="btns">
-			<view class="btn" @click="handleUp">上一步</view>
+			<view class="btn" @click="handlePay">在线缴费</view>
 			<view class="btn mt20" @click="handleSelect">去选宿舍</view>
-			<view class="btn mt20" @click="handlePay">继续支付</view>
-			<view class="btn jump mt20" @click="handleJump">跳过选择宿舍</view>
+			<view class="btn mt20" @click="handleUp">上一步</view>
 		</view>
 
 		<!-- web弹窗区域 -->
@@ -33,12 +32,26 @@
 				</view>
 			</view>
 		</uni-popup>
+
+		<!-- 提示缴费弹窗区域 -->
+		<uni-popup ref="popup_tips" :is-mask-click="false">
+			<view class="pop_tips">
+				<image class="pop_img" src="/static/3.png" mode="aspectFill"></image>
+				<!-- 关闭图标 -->
+				<uni-icons class="pop_close" type="closeempty" color="#808080" size="20" @click="handleClose_tips"></uni-icons>
+				<view class="pop_title">温馨提示</view>
+				<view class="pop_text">
+					{{ pop_info }}
+				</view>
+				<view class="pop_btn" @click="handleFinish_tips">去完成缴费</view>
+			</view>
+		</uni-popup>
 	</view>
 </template>
 
 <script setup>
 import { ref } from 'vue'
-import { onLoad } from '@dcloudio/uni-app'
+import { onLoad, onShow } from '@dcloudio/uni-app'
 import { getStudentPayInfo } from '@/api/index.js'
 
 const dataList = ref([])
@@ -47,8 +60,13 @@ const isPay = ref()
 
 const popup_web = ref()
 
-onLoad(() => {
+const popup_tips = ref()
+
+const pop_info = ref()
+
+onShow(() => {
 	getInfo()
+	pop_info.value = uni.getStorageSync('settingInfo').chooseDormitory
 })
 
 const getInfo = async () => {
@@ -69,36 +87,33 @@ const handleUp = () => {
 	})
 }
 
+const handleClose_tips = () => {
+	popup_tips.value.close()
+}
+
+const handleFinish_tips = () => {
+	window.location.href = `https://pay.ncjti.edu.cn`
+}
+
 // 点击去选宿舍按钮回调
 const handleSelect = () => {
 	if (isPay.value == 0) {
-		uni.showToast({
-			title: '未完成缴费,不可进行当前操作',
-			icon: 'none'
-		})
+		popup_tips.value.open()
 	} else if (isPay.value == 1) {
 		uni.navigateTo({
 			url: '/pages/select/select'
 		})
+	} else {
+		uni.showToast({
+			title: '查询不到付费信息',
+			icon: 'none'
+		})
 	}
 }
 
-// 点击跳过按钮回调
-const handleJump = () => {
-	uni.showModal({
-		title: '提示',
-		content: '确定跳过选择宿舍前往军训服装尺码采集吗?',
-		success: (res) => {
-			if (res.confirm) {
-				window.location.href = `https://wj.qq.com/s2/14907423/70b4/`
-			}
-		}
-	})
-}
-
 // 继续支付按钮
 const handlePay = () => {
-	popup_web.value.open()
+	window.location.href = `https://pay.ncjti.edu.cn`
 }
 
 const handleClose_web = () => {
@@ -121,7 +136,7 @@ const handleClose_web = () => {
 	}
 
 	.title {
-		margin-top: 50rpx;
+		margin-top: 20rpx;
 	}
 
 	.box {
@@ -202,5 +217,53 @@ const handleClose_web = () => {
 			}
 		}
 	}
+
+	.pop_tips {
+		position: relative;
+		box-sizing: border-box;
+		padding: 150rpx 20rpx 50rpx;
+		width: 659rpx;
+		height: 728rpx;
+		border-radius: 15rpx;
+		background: linear-gradient(180deg, #ebf2ff 0%, #ffffff 100%);
+
+		.pop_img {
+			position: absolute;
+			top: -103rpx;
+			left: 227rpx;
+			width: 206rpx;
+			height: 206rpx;
+		}
+
+		.pop_close {
+			position: absolute;
+			top: 19rpx;
+			right: 29rpx;
+		}
+
+		.pop_title {
+			margin-bottom: 28rpx;
+			font-size: 32rpx;
+			font-weight: bold;
+		}
+
+		.pop_text {
+			font-size: 28rpx;
+			line-height: 50rpx;
+		}
+
+		.pop_btn {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			margin: 90rpx auto 0;
+			width: 543rpx;
+			height: 100rpx;
+			color: #fff;
+			font-size: 32rpx;
+			border-radius: 8rpx;
+			background-color: #0061ff;
+		}
+	}
 }
 </style>

+ 32 - 31
pages/proof/proof.vue

@@ -3,18 +3,7 @@
 		<view class="info" id="infoImg">
 			<image class="info_photo" v-if="msg.picture" :src="msg.picture" mode="aspectFill" @click="clickImg(msg.picture)"></image>
 			<image class="info_photo" v-else src="/static/4.png" mode="aspectFill"></image>
-			<view class="info_box">
-				<view class="box_key">姓名:</view>
-				<view class="box_value">{{ msg.name }}</view>
-			</view>
-			<view class="info_box">
-				<view class="box_key">性别:</view>
-				<view class="box_value">{{ msg.sex }}</view>
-			</view>
-			<view class="info_box">
-				<view class="box_key">民族:</view>
-				<view class="box_value">{{ msg.nationality }}</view>
-			</view>
+			<image class="info_img" src="/static/logo2.png" mode="aspectFill"></image>
 			<view class="info_box">
 				<view class="box_key">学院:</view>
 				<view class="box_value">{{ msg.college }}</view>
@@ -27,32 +16,30 @@
 				<view class="box_key">班级:</view>
 				<view class="box_value">{{ msg.classstr }}</view>
 			</view>
-
-			<view class="info_box">
-				<view class="box_key">楼栋名称:</view>
-				<view class="box_value bold">{{ msg.build }}</view>
-			</view>
 			<view class="info_box">
-				<view class="box_key">宿舍床号:</view>
-				<view class="box_value bold">{{ msg.dormitory + '-' + msg.number }}</view>
+				<view class="box_key">姓名:</view>
+				<view class="box_value">{{ msg.name }}</view>
 			</view>
 			<view class="info_box">
 				<view class="box_key">录取号:</view>
 				<view class="box_value">{{ msg.admissNum }}</view>
 			</view>
-
-			<view class="info_box">
-				<view class="box_key">身份证号:</view>
-				<view class="box_value">{{ msg.studentCard }}</view>
-			</view>
 			<view class="info_box">
-				<view class="box_key">家庭住址:</view>
-				<view class="box_value">{{ msg.address }}</view>
+				<view class="box_key">性别:</view>
+				<view class="box_value">{{ msg.sex }}</view>
 			</view>
 			<view class="info_box">
 				<view class="box_key">联系电话:</view>
 				<view class="box_value">{{ msg.phone }}</view>
 			</view>
+			<view class="info_box">
+				<view class="box_key">楼栋名称:</view>
+				<view class="box_value color">{{ msg.build }}</view>
+			</view>
+			<view class="info_box">
+				<view class="box_key">宿舍床号:</view>
+				<view class="box_value color">{{ msg.dormitory + '-' + msg.number }}</view>
+			</view>
 		</view>
 
 		<!-- 按钮区域 -->
@@ -161,12 +148,24 @@ const downloadImage = (dataUrl, fileName) => {
 	padding-top: 12rpx;
 	min-height: 100vh;
 	font-size: 28rpx;
-	background-color: #f5f9ff;
+	background-color: #fff;
 
 	.info {
 		position: relative;
 		padding: 20rpx;
-		background-color: #fff;
+		box-sizing: border-box;
+		margin: auto;
+		width: 690rpx;
+		border-radius: 8rpx;
+		background-image: url(@/static/11.png);
+		background-size: cover;
+		background-repeat: no-repeat;
+		background-position: center;
+
+		.info_img {
+			width: 168rpx;
+			height: 45rpx;
+		}
 
 		.info_photo {
 			position: absolute;
@@ -180,17 +179,19 @@ const downloadImage = (dataUrl, fileName) => {
 		.info_box {
 			display: flex;
 			align-items: center;
-			height: 55rpx;
+			height: 60rpx;
 
 			.box_key {
 				color: #4d4d4d;
 			}
 
 			.box_value {
+				font-weight: bold;
 			}
 
-			.bold {
-				font-weight: bold;
+			.color {
+				font-size: 40rpx;
+				color: #0061ff;
 			}
 		}
 	}

+ 106 - 234
pages/read/read.vue

@@ -1,108 +1,29 @@
 <template>
-	<view class="container">
-		<!-- 标题区域 -->
-		<view class="title">
-			<view class="">新生报到安全须知</view>
-			<view class="">请仔细阅读以下内容,确保平安顺利报到</view>
-		</view>
+	<view class="container" v-if="info">
+		<view class="img_bg"></view>
 
-		<!-- 内容区域 -->
-		<view class="body">
-			<view class="body_title">
-				<view class="title_dot"></view>
-				<view class="title_text">来校前准备</view>
-			</view>
-
-			<view class="prepare_box">
-				<view class="box_title">形成规划</view>
-				<view class="box_text">选择正规交通工具,避开深夜抵达车次,严禁乘坐"黑车"或私下拼车</view>
-			</view>
-
-			<view class="prepare_box">
-				<view class="box_title">报到准备</view>
-				<view class="box_text">提前完成线上流程:信息填报 → 缴费认证 → 宿舍选择 → 车牌预约</view>
-			</view>
+		<image class="img_logo" src="/static/13.png" mode="aspectFill"></image>
 
-			<view class="prepare_box">
-				<view class="box_title">物品保管</view>
-				<view class="box_text">重要证件单独存放,行李标注姓名电话,随身现金不超过500元</view>
-			</view>
+		<image class="img_right" src="/static/14.png" mode="aspectFill"></image>
 
-			<view class="body_title">
-				<view class="title_dot"></view>
-				<view class="title_text">到校途中安全</view>
-			</view>
-
-			<view class="safe_box">
-				<view class="box_top">
-					<image class="top_img" src="/static/1.png" mode="aspectFill"></image>
-					<view class="top_text">交通风险</view>
-				</view>
-				<view class="box_bottom">遵守交规,避开车辆盲区,不追逐打闹</view>
-			</view>
+		<view class="name">{{ info.name }}同学</view>
 
-			<view class="safe_box">
-				<view class="box_top">
-					<image class="top_img" src="/static/1.png" mode="aspectFill"></image>
-					<view class="top_text">诈骗风险</view>
-				</view>
-				<view class="box_bottom">警惕"代缴学费"电话,不扫陌生二维码</view>
-			</view>
-
-			<view class="safe_box">
-				<view class="box_top">
-					<image class="top_img" src="/static/1.png" mode="aspectFill"></image>
-					<view class="top_text">盗窃风险</view>
-				</view>
-				<view class="box_bottom">背包前置,手机握持,休息时固定行李</view>
-			</view>
-
-			<view class="body_title">
-				<view class="title_dot"></view>
-				<view class="title_text">紧急情况处理</view>
-			</view>
-
-			<view class="instancy_box">
-				<view class="box_item">
-					<view class="item_title">物品遗失</view>
-					<view class="item_text">联系车站广播/警方(110)</view>
-				</view>
-				<view class="box_item">
-					<view class="item_title">遭遇诈骗</view>
-					<view class="item_text">校保卫处: 020-12345678</view>
-				</view>
-				<view class="box_item">
-					<view class="item_title">身体不适</view>
-					<view class="item_text">途中: 求助乘务员/拨打120</view>
-				</view>
-				<view class="box_item">
-					<view class="item_title">校内急诊</view>
-					<view class="item_text">校医院: 第一教学楼东侧</view>
-				</view>
-			</view>
-
-			<view class="body_title">
-				<view class="title_dot"></view>
-				<view class="title_text">重要安全提醒</view>
-			</view>
+		<view class="welcome">南昌交通学院欢迎您!</view>
 
-			<view class="import_box">
-				<view class="">1. 所有缴费仅通过学校官方平台操作</view>
-				<view class="">2. 宿舍分配以"我的报到单"为准</view>
-				<image class="box_img" src="/static/2.png" mode="aspectFill"></image>
-			</view>
-
-			<!-- <uv-parse :content="safetyNotice"></uv-parse> -->
+		<!-- 内容区域 -->
+		<scroll-view class="body" scroll-y>
+			<uv-parse :content="safetyNotice"></uv-parse>
 
-			<!-- 安全须知勾选区域 -->
 			<view class="check">
 				<checkbox :checked="isCheck" @click="handleCheck" />
 				我已阅读并理解以上安全须知
 			</view>
+		</scroll-view>
 
-			<!-- 下一步按钮区域 -->
-			<view class="btn" :class="{ active: isCheck }" @click="handleNext">下一步</view>
-		</view>
+		<!-- 下一步按钮区域 -->
+		<view class="btn" :class="{ active: isCheck }" @click="handleNext">下一步</view>
+
+		<view class="btn margin" @click="logout">退出登录</view>
 	</view>
 </template>
 
@@ -117,6 +38,9 @@ const isCheck = ref(false)
 // 安全须知内容
 const safetyNotice = ref()
 
+// 学生信息
+const info = ref()
+
 onLoad(() => {
 	// 获取用户信息
 	getInfoByToken()
@@ -131,7 +55,7 @@ const getInfoByToken = async () => {
 	// console.log(res)
 	if (res.code == 200) {
 		uni.setStorageSync('studentInfo', res.data)
-		// uni.setStorageSync('TOKEN', res.data.token)
+		info.value = res.data
 	}
 }
 
@@ -157,167 +81,115 @@ const handleNext = () => {
 		})
 	} else {
 		uni.showToast({
-			title: '请先勾选安全须知',
+			title: '请先阅读并勾选安全须知',
 			icon: 'none',
 			mask: true
 		})
 	}
 }
+
+// 退出登录回调
+const logout = () => {
+	uni.showModal({
+		title: '提示',
+		content: '确定退出登录吗?',
+		success: (res) => {
+			if (res.confirm) {
+				let urlstr = uni.getStorageSync('urlstr')
+				uni.clearStorageSync()
+				window.location.href = `https://chtech.ncjti.edu.cn/welcome/welcomeH5/#/?urlstr=${urlstr}`
+			}
+		}
+	})
+}
 </script>
 
 <style lang="scss" scoped>
 .container {
-	min-height: 100vh;
-	background-color: #f5f9ff;
-
-	.title {
-		padding: 20rpx 30rpx 20rpx;
-		font-size: 32rpx;
-		font-weight: bold;
-		text-align: center;
-		line-height: 46rpx;
-		background-color: #fff;
+	padding-bottom: 50rpx;
+	box-sizing: border-box;
+	width: 100%;
+	overflow: hidden;
+
+	.img_bg {
+		width: 100%;
+		height: 1110rpx;
+		background-image: url(@/static/12.png);
+		background-size: cover;
 	}
 
-	.body {
-		padding: 30rpx;
-		margin-top: 10rpx;
-		background-color: #fff;
-
-		.body_title {
-			display: flex;
-			align-items: center;
-			margin-bottom: 30rpx;
-
-			.title_dot {
-				width: 32rpx;
-				height: 32rpx;
-				border-radius: 50%;
-				background-color: #0061ff;
-			}
-
-			.title_text {
-				margin-left: 15rpx;
-				font-size: 32rpx;
-				font-weight: bold;
-			}
-		}
-
-		.prepare_box {
-			margin-bottom: 16rpx;
-			padding-left: 55rpx;
-
-			.box_title {
-				font-size: 28rpx;
-				font-weight: bold;
-			}
-
-			.box_text {
-				margin-top: 8rpx;
-				font-size: 24rpx;
-				color: #333333;
-				line-height: 38rpx;
-			}
-		}
-
-		.safe_box {
-			margin-bottom: 24rpx;
-
-			.box_top {
-				display: flex;
-				align-items: center;
-
-				.top_img {
-					width: 47rpx;
-					height: 47rpx;
-				}
-
-				.top_text {
-					margin-left: 14rpx;
-					font-size: 28rpx;
-					font-weight: bold;
-				}
-			}
-
-			.box_bottom {
-				padding-left: 55rpx;
-				margin-top: 8rpx;
-				font-size: 24rpx;
-				color: #333333;
-				line-height: 38rpx;
-			}
-		}
-
-		.instancy_box {
-			display: grid;
-			grid-template-columns: repeat(2, 1fr);
-			grid-template-rows: repeat(2, 1fr);
-			gap: 20rpx 40rpx;
-			margin-bottom: 32rpx;
-
-			.box_item {
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				justify-content: center;
-				width: 325rpx;
-				height: 170rpx;
-				border-radius: 4rpx;
-				background-color: #f5f9ff;
+	.img_logo {
+		position: absolute;
+		top: 29rpx;
+		left: 35rpx;
+		width: 309rpx;
+		height: 84rpx;
+	}
 
-				.item_title {
-					font-size: 28rpx;
-					font-weight: bold;
-				}
+	.img_right {
+		position: absolute;
+		top: -90rpx;
+		right: -120rpx;
+		width: 408rpx;
+		height: 408rpx;
+	}
 
-				.item_text {
-					margin-top: 15rpx;
-					font-size: 24rpx;
-					color: #333333;
-				}
-			}
-		}
+	.name {
+		position: absolute;
+		top: 180rpx;
+		width: 100%;
+		font-size: 70rpx;
+		font-weight: bold;
+		color: #0061ff;
+		text-align: center;
+	}
 
-		.import_box {
-			position: relative;
-			display: flex;
-			flex-direction: column;
-			justify-content: center;
-			padding-left: 32rpx;
-			height: 152rpx;
-			font-size: 28rpx;
-			line-height: 48rpx;
-			background-color: #fff2f2;
+	.welcome {
+		position: absolute;
+		top: 289rpx;
+		width: 100%;
+		font-size: 70rpx;
+		font-weight: bold;
+		color: #0061ff;
+		text-align: center;
+	}
 
-			.box_img {
-				position: absolute;
-				top: 35rpx;
-				right: -7rpx;
-				width: 156rpx;
-				height: 156rpx;
-			}
-		}
+	.body {
+		position: absolute;
+		top: 829rpx;
+		left: 20rpx;
+		box-sizing: border-box;
+		padding: 20rpx;
+		width: 711rpx;
+		height: 356rpx;
+		border: 2rpx solid #808080;
+		overflow-y: auto;
 
 		.check {
-			margin-top: 32rpx;
+			margin: 32rpx auto 0;
 			font-size: 28rpx;
 		}
+	}
 
-		.btn {
-			margin-top: 55rpx;
-			margin-bottom: 70rpx;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			height: 100rpx;
-			color: #fff;
-			border-radius: 8rpx;
-			background-color: #ccc;
-		}
+	.btn {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		margin: 125rpx auto 0;
+		width: 711rpx;
+		height: 100rpx;
+		color: #fff;
+		border-radius: 8rpx;
+		background-color: #ccc;
+	}
 
-		.active {
-			background-color: #0061ff;
-		}
+	.active {
+		background-color: #0061ff;
+	}
+
+	.margin {
+		margin-top: 35rpx;
+		background-color: #0061ff;
 	}
 }
 </style>

+ 27 - 3
pages/select/select.vue

@@ -67,7 +67,7 @@
 				<view class="form_value">
 					<picker @change="bindPickerChange" :value="currtIndex" :range="schoolList" range-key="school">
 						<view class="select" :class="{ active: currtIndex != null }">
-							{{ currtIndex != null ? schoolList[currtIndex].school : '请选择校区' }}
+							{{ currtIndex != null ? schoolList[currtIndex]?.school : '请选择校区' }}
 							<uni-icons type="down" size="20" color="#ccc"></uni-icons>
 						</view>
 					</picker>
@@ -131,7 +131,6 @@
 				<view class="pop_title">温馨提示</view>
 				<view class="pop_content">选择入住之后将不能修改, 确定选择吗?</view>
 				<view class="pop_btn" @click="handleConfirm">确定</view>
-				<view class="pop_tips">(如有问题请联系管理员:0791-82293574)</view>
 			</view>
 		</uni-popup>
 
@@ -141,7 +140,11 @@
 				<!-- 关闭图标 -->
 				<uni-icons class="pop_close" type="closeempty" color="#808080" size="20" @click="handleCloseDorm"></uni-icons>
 
-				<image class="pop_img_dorm" src="/static/8.png" mode="aspectFill"></image>
+				<image v-if="layoutNumber == 1" class="pop_img_dorm" src="/static/8.png" mode="aspectFill"></image>
+				<image v-if="layoutNumber == 2" class="pop_img_dorm" src="/static/8.2.jpg" mode="aspectFill"></image>
+				<image v-if="layoutNumber == 3" class="pop_img_dorm" src="/static/8.3.jpg" mode="aspectFill"></image>
+				<image v-if="layoutNumber == 4" class="pop_img_dorm" src="/static/8.4.jpg" mode="aspectFill"></image>
+				<image v-if="layoutNumber == 5" class="pop_img_dorm" src="/static/8.5.jpg" mode="aspectFill"></image>
 			</view>
 		</uni-popup>
 	</view>
@@ -171,6 +174,7 @@ const currtIndex_dorm = ref(null)
 // 寝室分组
 const dormList = ref([])
 const dormId = ref()
+const layoutNumber = ref()
 
 const currtIndex_bed = ref(null)
 // 床位分组
@@ -235,6 +239,9 @@ const bindPickerChange = (e) => {
 	currtIndex.value = e.detail.value
 	schoolId.value = schoolList.value[currtIndex.value].id
 
+	buildId.value = null
+	dormId.value = null
+	bedId.value = null
 	currtIndex_build.value = null
 	currtIndex_dorm.value = null
 	currtIndex_bed.value = null
@@ -263,6 +270,8 @@ const bindPickerChange_build = (e) => {
 	currtIndex_build.value = e.detail.value
 	buildId.value = buildList.value[currtIndex_build.value].buildId
 
+	dormId.value = null
+	bedId.value = null
 	currtIndex_dorm.value = null
 	currtIndex_bed.value = null
 
@@ -291,6 +300,7 @@ const bindPickerChange_dorm = (e) => {
 	currtIndex_dorm.value = e.detail.value
 	dormId.value = dormList.value[currtIndex_dorm.value].dormitoryId
 
+	bedId.value = null
 	currtIndex_bed.value = null
 
 	// 获取床位分组
@@ -311,6 +321,10 @@ const getBedGroup = async () => {
 	// console.log(res)
 	if (res.code == 200) {
 		bedList.value = res.data
+
+		if (res.data.length) {
+			layoutNumber.value = res.data[0].layoutNumber
+		}
 	}
 }
 
@@ -345,6 +359,16 @@ const handleBed = () => {
 		return
 	}
 
+	// if (!bedId.value) {
+	// 	uni.showToast({
+	// 		title: '请先选择床位',
+	// 		icon: 'none'
+	// 	})
+	// 	return
+	// }
+
+	// console.log(layoutNumber.value)
+
 	popup_dorm.value.open()
 }
 

+ 29 - 43
pages/subscribe/subscribe.vue

@@ -15,19 +15,12 @@
 				</view>
 			</view>
 
-			<view class="box">
+			<!-- <view class="box">
 				<view class="box_key">陪同人数:</view>
 				<view class="box_value">
 					<input class="input" type="text" placeholder="请输入陪同人数" placeholder-style="color:#CCCCCC;font-size:28rpx" v-model="form.peerNum" />
 				</view>
-			</view>
-
-			<view class="box">
-				<view class="box_key">访问事由:</view>
-				<view class="box_value">
-					<input class="input" type="text" placeholder="请输入访问事由" placeholder-style="color:#CCCCCC;font-size:28rpx" v-model="form.visitorReason" />
-				</view>
-			</view>
+			</view> -->
 
 			<view class="box">
 				<view class="box_key">校区:</view>
@@ -42,6 +35,17 @@
 			</view>
 
 			<view class="box">
+				<view class="box_key">车牌号:</view>
+				<view class="box_value" @click="showKeyboard">
+					<view class="select" :class="{ active: form.carNumber }">
+						{{ form.carNumber ? form.carNumber : '请选择车牌号' }}
+						<uni-icons type="down" size="20" color="#ccc"></uni-icons>
+					</view>
+					<xm-keyboard-v2 ref="xmKeyboard" @confirm="confirm"></xm-keyboard-v2>
+				</view>
+			</view>
+
+			<view class="box">
 				<view class="box_key">到访开始时间:</view>
 				<view class="box_value">
 					<uni-datetime-picker type="datetime" :start="Date.now()" v-model="form.startTime" @change="changeTime">
@@ -72,13 +76,9 @@
 			</view>
 
 			<view class="box">
-				<view class="box_key">车牌号:</view>
-				<view class="box_value" @click="showKeyboard">
-					<view class="select" :class="{ active: form.carNumber }">
-						{{ form.carNumber ? form.carNumber : '请选择车牌号' }}
-						<uni-icons type="down" size="20" color="#ccc"></uni-icons>
-					</view>
-					<xm-keyboard-v2 ref="xmKeyboard" @confirm="confirm"></xm-keyboard-v2>
+				<view class="box_key">访问事由:</view>
+				<view class="box_value">
+					<input class="input" type="text" placeholder="请输入访问事由" placeholder-style="color:#CCCCCC;font-size:28rpx" v-model="form.visitorReason" disabled />
 				</view>
 			</view>
 
@@ -97,8 +97,8 @@ const form = ref({
 	phone: '', // 手机号
 	name: '', // 学生姓名
 	cardId: '', // 证件号
-	peerNum: '', // 同行人数不能为空
-	visitorReason: '', // 访问事由
+	peerNum: 0, // 同行人数不能为空
+	visitorReason: '学校报道', // 访问事由
 	schoolId: '', // 校区id
 	school: '', // 校区名称不能为空 只能为墨轩湖校区或黄家湖校区
 	startTime: '', // 到访开始时间
@@ -130,6 +130,8 @@ const getVisitorRecord = async () => {
 			let info = uni.getStorageSync('studentInfo')
 			form.value.name = info.name
 			form.value.phone = info.phone
+			// form.value.cardId = info.cardId
+
 			if (info.avs.length) {
 				form.value.peerNum = info.avs.length
 			}
@@ -186,14 +188,6 @@ const changeTime = () => {
 
 // 提交按钮回调
 const handleSubmit = () => {
-	// if (!form.value.driverName) {
-	// 	uni.showToast({
-	// 		title: '请输入司机姓名',
-	// 		icon: 'none'
-	// 	})
-	// 	return
-	// }
-
 	if (!form.value.name) {
 		uni.showToast({
 			title: '请输入学生姓名',
@@ -219,33 +213,25 @@ const handleSubmit = () => {
 		return
 	}
 
-	// if (!form.value.cardId) {
+	// if (!form.value.peerNum) {
 	// 	uni.showToast({
-	// 		title: '请输入身份证号',
+	// 		title: '请输入同行人数',
 	// 		icon: 'none'
 	// 	})
 	// 	return
 	// }
 
-	if (!form.value.peerNum) {
-		uni.showToast({
-			title: '请输入同行人数',
-			icon: 'none'
-		})
-		return
-	}
-
-	if (!form.value.visitorReason) {
+	if (currtIndex.value == null) {
 		uni.showToast({
-			title: '请输入访问事由',
+			title: '请选择校区',
 			icon: 'none'
 		})
 		return
 	}
 
-	if (currtIndex.value == null) {
+	if (!form.value.carNumber) {
 		uni.showToast({
-			title: '请选择校区',
+			title: '请输入车牌号',
 			icon: 'none'
 		})
 		return
@@ -267,9 +253,9 @@ const handleSubmit = () => {
 		return
 	}
 
-	if (!form.value.carNumber) {
+	if (!form.value.visitorReason) {
 		uni.showToast({
-			title: '请输入车牌号',
+			title: '请输入访问事由',
 			icon: 'none'
 		})
 		return
@@ -280,7 +266,7 @@ const handleSubmit = () => {
 
 // 提交请求
 const submit = () => {
-	console.log(form.value)
+	// console.log(form.value)
 
 	uni.showModal({
 		title: '提示',

BIN
static/11.png


BIN
static/12.png


BIN
static/13.png


BIN
static/14.png


BIN
static/8.2.jpg


BIN
static/8.3.jpg


BIN
static/8.4.jpg


BIN
static/8.5.jpg


BIN
static/logo2.png


+ 5 - 4
utils/request.js

@@ -17,7 +17,7 @@ export const myRequest = (options) => {
 			method: options.method || "GET",
 			data: options.data || {},
 			header: options.header || {
-				'token': uni.getStorageSync('TOKEN') || uni.getStorageSync('token') || ""
+				'token': uni.getStorageSync('TOKEN') || uni.getStorageSync('token')
 			},
 			success: (res) => {
 				// console.log(res);
@@ -31,10 +31,11 @@ export const myRequest = (options) => {
 						showCancel: false,
 						success: (res) => {
 							if (res.confirm) {
+								let urlstr = uni.getStorageSync('urlstr')
+								// console.log(urlstr);
 								uni.clearStorageSync()
-								uni.reLaunch({
-									url: "/pages/index/index"
-								})
+								window.location.href =
+									`https://chtech.ncjti.edu.cn/welcome/welcomeH5/#/?urlstr=${urlstr}`
 							}
 						}
 					})