Bladeren bron

新增学生管理页面

xiaoxin 2 jaren geleden
bovenliggende
commit
6bf04f909f

+ 8 - 1
components/headerInput.vue

@@ -1,13 +1,20 @@
 <template>
 	<view class="container">
 		<uni-icons type="search" size="24" color="#808080"></uni-icons>
-		<input class="input" type="text" placeholder="请输入关键词" placeholder-style="color:#CCCCCC;font-size:28rpx" @input="handleInput" />
+		<input class="input" type="text" :placeholder="placeholder" placeholder-style="color:#CCCCCC;font-size:28rpx" @input="handleInput" />
 	</view>
 </template>
 
 <script setup>
 import { ref } from 'vue'
 
+defineProps({
+	placeholder: {
+		type: String,
+		default: '请输入关键词'
+	}
+})
+
 const $emit = defineEmits(['changeInputValue'])
 
 const timer = ref(null)

+ 22 - 0
pages.json

@@ -95,6 +95,28 @@
 				"navigationBarTitleText": "",
 				"enablePullDownRefresh": false
 			}
+		},
+		{
+			"path": "pages/main/main",
+			"style": {
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/studentManage/studentManage",
+			"style": {
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/timeGroup/timeGroup",
+			"style": {
+				"navigationBarTitleText": "时间组",
+				"enablePullDownRefresh": false
+			}
 		}
 	],
 	"subPackages": [{

+ 2 - 1
pages/grade/grade.vue

@@ -5,7 +5,7 @@
 		<!-- input组件区域 -->
 		<headerInput @changeInputValue="changeInputValue" />
 		<!-- 学校年级班级区域 -->
-		<view class="school">万载三中/{{ gradeName }}/{{ className }}</view>
+		<view class="school">万载三中{{ gradeName ? gradeName + '/' : '' }}{{ className ? className + '/' : '' }}</view>
 
 		<!-- 学生列表区域 -->
 		<listView :list="list" :appType="appType" />
@@ -58,6 +58,7 @@ const getData = async () => {
 	})
 	// console.log(res)
 	const result = JSON.parse(decryptDes(res.data))
+	// console.log(result)
 	result.forEach((ele) => {
 		let temlist
 		ele.classBookList.forEach((item, index, arr) => {

+ 1 - 0
pages/home/home.vue

@@ -229,6 +229,7 @@ const getUseAppList = async () => {
 	})
 	// console.log(res)
 	const result = JSON.parse(decryptDes(res.data))
+	// console.log(result)
 	useAppList.value = result
 }
 

+ 1 - 1
pages/index/index.vue

@@ -33,7 +33,7 @@ const vertify = async (code) => {
 		})
 	} else {
 		uni.redirectTo({
-			url: '/pages/login/login'
+			url: '/pages/main/main'
 		})
 	}
 }

+ 247 - 0
pages/main/main.vue

@@ -0,0 +1,247 @@
+<template>
+	<view class="container">
+		<!-- 自定义导航栏区域 -->
+		<view class="tab" :style="{ height: customBarH * 2 + 'rpx', paddingTop: statusBarH * 2 + 'rpx' }" v-show="!showHeader">
+			<img class="tab_img" src="../../static/images/people.png" @click="goLogin(1)" />
+			万载三中
+		</view>
+
+		<!-- 页面下拉时显示的导航栏 -->
+		<view class="tab2" :style="{ height: customBarH * 2 + 'rpx', paddingTop: statusBarH * 2 + 'rpx' }" v-show="showHeader">万载三中</view>
+
+		<!-- 顶部图片区域 -->
+		<view class="header">
+			<img mode="aspectFill" class="header_img" src="../../static/images/header.png" />
+			<!-- 学校图标区域 -->
+			<img mode="aspectFill" class="header_icon" src="../../static/images/school-logo.jpg" />
+			<!-- 学校名称区域 -->
+			<view class="header_school">万载县第三中学</view>
+		</view>
+
+		<!-- 登录按钮区域 -->
+		<view class="login">
+			<view class="login_btn" @click="goLogin(2)">登录</view>
+		</view>
+
+		<!-- 详细信息区域 -->
+		<view class="body">
+			<!-- 应用列表区域 -->
+			<view class="body_list" v-if="useAppList.length">
+				<!-- 每一个应用区域 -->
+				<view class="list_box" v-for="item in useAppList" :key="item.id" @click="goLogin(1)">
+					<img class="box_img" :src="item.url" />
+					<view class="box_text">
+						{{ item.title }}
+					</view>
+				</view>
+			</view>
+
+			<NoData v-if="!useAppList.length" />
+		</view>
+	</view>
+</template>
+
+<script setup>
+import { ref } from 'vue'
+import { onLoad, onPageScroll, onPullDownRefresh } from '@dcloudio/uni-app'
+import { myRequest } from '@/utils/api.js'
+import NoData from '@/components/noData.vue'
+import { decryptDes } from '@/utils/des.js'
+
+onLoad(() => {
+	// 获取系统信息
+	uni.getSystemInfo({
+		success: (e) => {
+			// 获取状态栏高度
+			statusBarH.value = e.statusBarHeight
+			// // 获取菜单按钮栏高度
+			let custom = uni.getMenuButtonBoundingClientRect()
+			customBarH.value = custom.height
+		}
+	})
+
+	// 获取用户应用权限列表
+	getUseAppList()
+})
+
+onPageScroll((e) => {
+	if (e.scrollTop > 70) {
+		showHeader.value = true
+	} else {
+		showHeader.value = false
+	}
+})
+
+// 顶部导航栏显示隐藏控制
+const showHeader = ref(false)
+
+// 状态栏高度
+const statusBarH = ref(0)
+
+// 胶囊按钮栏高度
+const customBarH = ref(0)
+
+// 展示的app列表
+const useAppList = ref([])
+
+// 获取用户应用权限列表
+const getUseAppList = async () => {
+	const res = await myRequest({
+		url: '/wanzai/api/smartIdentity/queryIdentityApplyById',
+		data: {
+			// 未登录时默认展示家长权限的应用
+			id: 1
+		}
+	})
+	// console.log(res)
+	const result = JSON.parse(decryptDes(res.data))
+	useAppList.value = result
+}
+
+// 跳转登录页
+const goLogin = (type) => {
+	if (type === 1) {
+		uni.showToast({
+			title: '请您先登录',
+			icon: 'none',
+			mask: true
+		})
+		setTimeout(() => {
+			uni.navigateTo({
+				url: '/pages/login/login'
+			})
+		}, 1500)
+	} else {
+		uni.navigateTo({
+			url: '/pages/login/login'
+		})
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+.container {
+	display: flex;
+	flex-direction: column;
+	padding: 0 20rpx;
+	min-height: 100vh;
+	background-color: #f1f6fe;
+
+	// 自定义导航栏区域样式
+	.tab {
+		position: relative;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		font-size: 34rpx;
+
+		.tab_img {
+			position: absolute;
+			top: v-bind(statusBarH);
+			left: 0;
+			width: 62rpx;
+			height: 62rpx;
+		}
+	}
+
+	.tab2 {
+		z-index: 999;
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		padding: 0 20rpx;
+		font-size: 34rpx;
+		text-align: center;
+		background-color: #fff;
+	}
+
+	// 顶部图片区域样式
+	.header {
+		position: relative;
+		margin-top: 35rpx;
+		width: 710rpx;
+		height: 369rpx;
+		color: #fff;
+		font-size: 36rpx;
+		border-radius: 10rpx;
+
+		.header_img {
+			width: 100%;
+			height: 100%;
+		}
+
+		.header_icon {
+			position: absolute;
+			top: 25rpx;
+			left: 25rpx;
+			width: 47rpx;
+			height: 47rpx;
+			border-radius: 50%;
+		}
+
+		.header_school {
+			position: absolute;
+			top: 18rpx;
+			left: 81rpx;
+			font-size: 40rpx;
+		}
+	}
+
+	// 登录按钮区域样式
+	.login {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 180rpx;
+
+		.login_btn {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			width: 380rpx;
+			height: 80rpx;
+			color: #7abfa4;
+			border-radius: 50rpx;
+			border: 1rpx solid #7abfa4;
+			background-color: #fff;
+		}
+	}
+
+	// 详细信息区域样式
+	.body {
+		.body_list {
+			padding: 30rpx 30rpx;
+			display: grid;
+			grid-template-columns: repeat(3, 1fr);
+			grid-auto-rows: 240rpx;
+			background-color: #fff;
+			gap: 20rpx 10rpx;
+			border-radius: 20rpx;
+
+			.list_box {
+				display: flex;
+				flex-direction: column;
+				justify-content: space-evenly;
+				align-items: center;
+				font-size: 28rpx;
+				overflow: hidden;
+
+				.box_img {
+					width: 120rpx;
+					height: 120rpx;
+					border-radius: 32rpx;
+				}
+
+				.box_text {
+					width: 100%;
+					text-align: center;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					white-space: nowrap;
+				}
+			}
+		}
+	}
+}
+</style>

+ 1 - 0
pages/msgWarn/msgWarn.vue

@@ -94,6 +94,7 @@ const getData = async () => {
 
 	if (res.code == 200) {
 		const result = JSON.parse(decryptDes(res.data))
+		// console.log(result)
 		list.value = [...list.value, ...result.list]
 		total.value = result.totalCount
 	}

+ 4 - 2
pages/myMsg/myMsg.vue

@@ -151,6 +151,7 @@ import { ref } from 'vue'
 import { onLoad } from '@dcloudio/uni-app'
 import { previewImage } from '@/utils/previewImage.js'
 import { myRequest } from '@/utils/api.js'
+import { decryptDes } from '@/utils/des.js'
 
 // 用户信息
 const userInfo = ref({})
@@ -171,7 +172,8 @@ const getUserInfo = async (id) => {
 		}
 	})
 	// console.log(res)
-	userInfo.value = res.data
+	const result = JSON.parse(decryptDes(res.data))
+	userInfo.value = result
 }
 </script>
 
@@ -225,4 +227,4 @@ const getUserInfo = async (id) => {
 		}
 	}
 }
-</style>
+</style>

+ 261 - 0
pages/studentManage/studentManage.vue

@@ -0,0 +1,261 @@
+<template>
+	<view class="container">
+		<!-- 背景图片区域 -->
+		<img class="img_bg" src="../../static/images/center-bg.png" />
+
+		<!-- input组件区域 -->
+		<HeaderInput placeholder="请输入学生姓名或时间组名称" @changeInputValue="changeInputValue" />
+
+		<!-- 学校年级班级区域 -->
+		<view class="school" v-if="list.length">
+			<view class="">{{ classInfo }}</view>
+			<!-- 编辑按钮区域 -->
+			<view v-if="!showEdit" class="school_edit" @click="handleEdit">
+				<img class="img" src="@/static/images/edit.png" />
+				编辑
+			</view>
+			<!-- 全选按钮区域 -->
+			<view v-else class="school_btn">
+				<view class="cancel" @click="handleCancel">取消</view>
+
+				<radio color="#0061FF" style="transform: scale(0.7)" :checked="allChecked" @click="handleAllCheck" />
+				<view class="all">全选</view>
+			</view>
+		</view>
+
+		<!-- 学生列表区域 -->
+		<view class="list_box" v-if="list.length">
+			<!-- 每一个学生区域 -->
+			<view class="item_box" v-for="(item, index) in list" :key="index" @click="handleClickItem(item)">
+				<view class="box_name">{{ item.name }}({{ item.cardNo }})</view>
+				<view class="box_time">{{ item.timeGroup }}</view>
+
+				<radio v-if="showEdit" color="#0061FF" style="transform: scale(0.7)" :checked="item.isChecked" />
+			</view>
+
+			<!-- 关联时间组按钮区域 -->
+			<view v-if="showEdit" class="btn_box" @click="handleBind">
+				<uni-icons color="#fff" type="link" size="28"></uni-icons>
+				<text class="text">关联时间组</text>
+			</view>
+		</view>
+
+		<!-- 没有数据时展示的页面 -->
+		<NoData v-if="!list.length" style="margin-top: 140rpx" />
+	</view>
+</template>
+
+<script setup>
+import { ref } from 'vue'
+import { onLoad } from '@dcloudio/uni-app'
+import HeaderInput from '@/components/headerInput.vue'
+import NoData from '@/components/noData.vue'
+import { myRequest } from '@/utils/api.js'
+import { decryptDes } from '@/utils/des.js'
+
+// 当前所处班级
+const classInfo = ref()
+
+// 搜索框绑定数据
+const keyWord = ref('')
+
+// 学生列表数据
+const list = ref([])
+
+// 缓存数据
+const copyList = ref([])
+
+// 是否显示编辑radio
+const showEdit = ref(false)
+
+// 是否全选
+const allChecked = ref(false)
+
+onLoad(() => {
+	getData()
+})
+
+// 获取学生列表数据
+const getData = async () => {
+	const res = await myRequest({
+		url: '/wanzai/api/smartUser/queryClassUser',
+		data: {
+			userId: uni.getStorageSync('userInfo').id,
+			keyWord: keyWord.value
+		}
+	})
+	// console.log(res)
+	const result = JSON.parse(decryptDes(res.data))
+	// console.log(result)
+	list.value = result.userDetails
+	list.value.forEach((ele) => {
+		ele.isChecked = false
+	})
+	classInfo.value = result.name
+	uni.setNavigationBarTitle({
+		title: result.name
+	})
+}
+
+// 点击编辑按钮回调
+const handleEdit = () => {
+	showEdit.value = true
+	copyList.value = JSON.parse(JSON.stringify(list.value))
+}
+
+// 点击取消按钮回调
+const handleCancel = () => {
+	showEdit.value = false
+	allChecked.value = false
+	list.value = copyList.value
+}
+
+// 点击全选按钮回调
+const handleAllCheck = () => {
+	if (!allChecked.value) {
+		list.value.forEach((ele) => {
+			ele.isChecked = true
+		})
+	} else {
+		list.value.forEach((ele) => {
+			ele.isChecked = false
+		})
+	}
+	allChecked.value = !allChecked.value
+}
+
+// 点击每一个学生时的回调
+const handleClickItem = (item) => {
+	if (showEdit.value) {
+		item.isChecked = !item.isChecked
+
+		// 判断全选按钮的状态
+		allChecked.value = list.value.every((ele) => ele.isChecked)
+	}
+}
+
+// 点击关联时间组按钮回调
+const handleBind = () => {
+	// 判断是否选择了学生
+	const flag = list.value.find((ele) => ele.isChecked)
+
+	if (!flag) {
+		uni.showToast({
+			title: '请至少选择一名学生',
+			icon: 'none',
+			mask: true
+		})
+	} else {
+		let arr = []
+		list.value.forEach((ele) => {
+			if (ele.isChecked) {
+				arr.push(ele.id)
+			}
+		})
+		uni.navigateTo({
+			url: `/pages/timeGroup/timeGroup?ids=${JSON.stringify(arr)}`
+		})
+	}
+}
+
+// 输入框组件自定义事件
+const changeInputValue = (value) => {
+	keyWord.value = value
+	getData()
+}
+</script>
+
+<style lang="scss" scoped>
+.container {
+	display: flex;
+	flex-direction: column;
+	padding: 0 20rpx;
+	min-height: 100vh;
+	background-color: #f1f6fe;
+
+	// 背景图片区域样式
+	.img_bg {
+		position: absolute;
+		top: -70rpx;
+		right: 0;
+		width: 589rpx;
+		height: 320rpx;
+		pointer-events: none;
+	}
+
+	// 学校名称区域样式
+	.school {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-top: 38rpx;
+		color: #808080;
+		font-size: 28rpx;
+
+		.school_edit {
+			display: flex;
+			align-items: center;
+			margin-right: 30rpx;
+			color: #0061ff;
+
+			.img {
+				margin-right: 10rpx;
+				width: 30rpx;
+				height: 30rpx;
+			}
+		}
+
+		.school_btn {
+			display: flex;
+			align-items: center;
+
+			.cancel {
+				margin-right: 20rpx;
+				color: #d43030;
+			}
+
+			.all {
+				margin-left: -10rpx;
+			}
+		}
+	}
+
+	.list_box {
+		padding: 0 30rpx 30rpx;
+		margin-top: 22rpx;
+		background-color: #fff;
+
+		.item_box {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			height: 103rpx;
+			font-size: 24rpx;
+			border-bottom: 1rpx solid #e6e6e6;
+
+			.box_name {
+			}
+
+			.box_time {
+			}
+		}
+
+		.btn_box {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			margin-top: 28rpx;
+			width: 650rpx;
+			height: 100rpx;
+			color: #fff;
+			font-size: 32rpx;
+			border-radius: 8rpx;
+			background-color: #0061ff;
+
+			.text {
+				margin-left: 10rpx;
+			}
+		}
+	}
+}
+</style>

+ 174 - 0
pages/timeGroup/timeGroup.vue

@@ -0,0 +1,174 @@
+<template>
+	<view class="container">
+		<!-- 时间组列表区域 -->
+		<view class="time_list" v-if="timeGroups.length">
+			<!-- 每一个时间组区域 -->
+			<view class="time_item" v-for="item in timeGroups" :key="item.id" @click="handleClickItem(item)">
+				<view class="item_left">
+					<view class="top">{{ item.name }}</view>
+					<view class="bottom">{{ item.remark }}</view>
+				</view>
+				<radio color="#0061FF" style="transform: scale(0.9)" :checked="item.isChecked" />
+			</view>
+		</view>
+
+		<!-- 按钮区域 -->
+		<view class="btns" v-if="timeGroups.length">
+			<view class="cancel" @click="handleCancel">取消</view>
+			<view class="confirm" @click="handleConfirm">确认</view>
+		</view>
+
+		<!-- 没有数据时展示的页面 -->
+		<NoData v-else />
+	</view>
+</template>
+
+<script setup>
+import { ref } from 'vue'
+import { onLoad } from '@dcloudio/uni-app'
+import { myRequest } from '@/utils/api.js'
+import { decryptDes } from '@/utils/des.js'
+import NoData from '@/components/noData.vue'
+
+// 时间组列表
+const timeGroups = ref([])
+
+// 学生ID集合
+const ids = ref([])
+
+onLoad((options) => {
+	ids.value = JSON.parse(options.ids)
+	getTimeGroups()
+})
+
+// 获取时间组列表数据
+const getTimeGroups = async () => {
+	const res = await myRequest({
+		url: '/wanzai/api/smartUser/timeGroups'
+	})
+	// console.log(res)
+	const result = JSON.parse(decryptDes(res.data))
+	// console.log(result)
+	timeGroups.value = result
+	timeGroups.value.forEach((ele) => {
+		ele.isChecked = false
+	})
+}
+
+// 点击每一个时间组的回调
+const handleClickItem = (item) => {
+	timeGroups.value.forEach((ele) => {
+		ele.isChecked = false
+	})
+	item.isChecked = !item.isChecked
+}
+
+// 点击取消按钮回调
+const handleCancel = () => {
+	uni.navigateBack(1)
+}
+
+// 点击确认按钮回调
+const handleConfirm = async () => {
+	// 判断是否选择了时间组
+	const flag = timeGroups.value.find((ele) => ele.isChecked)
+
+	if (!flag) {
+		uni.showToast({
+			title: '请选择时间组',
+			icon: 'none',
+			mask: true
+		})
+	} else {
+		const timeGroupId = flag.id
+		const res = await myRequest({
+			url: '/wanzai/api/smartUser/setUserTimeGroup',
+			method: 'post',
+			data: {
+				ids: ids.value,
+				timeGroupId
+			}
+		})
+		// console.log(res)
+		uni.showToast({
+			title: res.message,
+			icon: 'none',
+			mask: true
+		})
+		if (res.code == 200) {
+			setTimeout(() => {
+				uni.reLaunch({
+					url: '/pages/studentManage/studentManage'
+				})
+			}, 1500)
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+.container {
+	min-height: 100vh;
+	background-color: #f1f6fe;
+
+	.time_list {
+		padding-top: 25rpx;
+		margin: auto;
+		width: 710rpx;
+		min-height: 70vh;
+
+		.time_item {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			padding: 0 28rpx;
+			margin-bottom: 20rpx;
+			height: 128rpx;
+			background-color: #fff;
+
+			.item_left {
+				display: flex;
+				flex-direction: column;
+				justify-content: space-between;
+				height: 80rpx;
+
+				.top {
+					font-size: 28rpx;
+				}
+				.bottom {
+					font-size: 24rpx;
+					color: #b3b3b3;
+				}
+			}
+		}
+	}
+
+	.btns {
+		display: flex;
+		justify-content: space-evenly;
+		padding: 70rpx 0;
+		height: 100rpx;
+		font-size: 32rpx;
+
+		.cancel {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			width: 297rpx;
+			border-radius: 8rpx;
+			color: #0061ff;
+			border: 1rpx solid #0061ff;
+		}
+
+		.confirm {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			width: 297rpx;
+			border-radius: 8rpx;
+			color: #fff;
+			background-color: #0061ff;
+		}
+	}
+}
+</style>

+ 1 - 1
pagesReservation/backlog/backlog.vue

@@ -177,7 +177,7 @@ const getData = async () => {
 		}
 	})
 	// console.log(res)
-	const result = JSON.parse(decryptDes(res.data))
+	const result = res.data
 	total.value = result.totalCount
 	list.value = [...list.value, ...result.list]
 }

BIN
static/images/edit.png


+ 3 - 0
unpackage/dist/dev/mp-weixin/app.js

@@ -16,6 +16,9 @@ if (!Math) {
   "./pages/student/student.js";
   "./pages/quickMark/quickMark.js";
   "./pages/web/web.js";
+  "./pages/main/main.js";
+  "./pages/studentManage/studentManage.js";
+  "./pages/timeGroup/timeGroup.js";
   "./pagesReservation/reservation/reservation.js";
   "./pagesReservation/register/register.js";
   "./pagesReservation/record/record.js";

+ 4 - 1
unpackage/dist/dev/mp-weixin/app.json

@@ -13,7 +13,10 @@
     "pages/grade/grade",
     "pages/student/student",
     "pages/quickMark/quickMark",
-    "pages/web/web"
+    "pages/web/web",
+    "pages/main/main",
+    "pages/studentManage/studentManage",
+    "pages/timeGroup/timeGroup"
   ],
   "subPackages": [
     {

+ 8 - 1
unpackage/dist/dev/mp-weixin/components/headerInput.js

@@ -10,6 +10,12 @@ if (!Math) {
 }
 const _sfc_main = {
   __name: "headerInput",
+  props: {
+    placeholder: {
+      type: String,
+      default: "请输入关键词"
+    }
+  },
   emits: ["changeInputValue"],
   setup(__props, { emit: __emit }) {
     const $emit = __emit;
@@ -29,7 +35,8 @@ const _sfc_main = {
           size: "24",
           color: "#808080"
         }),
-        b: common_vendor.o(handleInput)
+        b: __props.placeholder,
+        c: common_vendor.o(handleInput)
       };
     };
   }

+ 1 - 1
unpackage/dist/dev/mp-weixin/components/headerInput.wxml

@@ -1 +1 @@
-<view class="container data-v-7ac621e1"><uni-icons wx:if="{{a}}" class="data-v-7ac621e1" u-i="7ac621e1-0" bind:__l="__l" u-p="{{a}}"></uni-icons><input class="input data-v-7ac621e1" type="text" placeholder="请输入关键词" placeholder-style="color:#CCCCCC;font-size:28rpx" bindinput="{{b}}"/></view>
+<view class="container data-v-7ac621e1"><uni-icons wx:if="{{a}}" class="data-v-7ac621e1" u-i="7ac621e1-0" bind:__l="__l" u-p="{{a}}"></uni-icons><input class="input data-v-7ac621e1" type="text" placeholder="{{b}}" placeholder-style="color:#CCCCCC;font-size:28rpx" bindinput="{{c}}"/></view>

+ 2 - 2
unpackage/dist/dev/mp-weixin/pages/grade/grade.js

@@ -59,8 +59,8 @@ const _sfc_main = {
     return (_ctx, _cache) => {
       return {
         a: common_vendor.o(changeInputValue),
-        b: common_vendor.t(gradeName.value),
-        c: common_vendor.t(className.value),
+        b: common_vendor.t(gradeName.value ? gradeName.value + "/" : ""),
+        c: common_vendor.t(className.value ? className.value + "/" : ""),
         d: common_vendor.p({
           list: list.value,
           appType: appType.value

+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/grade/grade.wxml

@@ -1 +1 @@
-<view class="container data-v-7d1a7ab2"><image class="img_bg data-v-7d1a7ab2" src="/static/images/center-bg.png"/><header-input class="data-v-7d1a7ab2" bindchangeInputValue="{{a}}" u-i="7d1a7ab2-0" bind:__l="__l"/><view class="school data-v-7d1a7ab2">万载三中/{{b}}/{{c}}</view><list-view wx:if="{{d}}" class="data-v-7d1a7ab2" u-i="7d1a7ab2-1" bind:__l="__l" u-p="{{d}}"/></view>
+<view class="container data-v-7d1a7ab2"><image class="img_bg data-v-7d1a7ab2" src="/static/images/center-bg.png"/><header-input class="data-v-7d1a7ab2" bindchangeInputValue="{{a}}" u-i="7d1a7ab2-0" bind:__l="__l"/><view class="school data-v-7d1a7ab2">万载三中{{b}}{{c}}</view><list-view wx:if="{{d}}" class="data-v-7d1a7ab2" u-i="7d1a7ab2-1" bind:__l="__l" u-p="{{d}}"/></view>

+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/index/index.js

@@ -27,7 +27,7 @@ const _sfc_main = {
         });
       } else {
         common_vendor.index.redirectTo({
-          url: "/pages/login/login"
+          url: "/pages/main/main"
         });
       }
     };

+ 3 - 1
unpackage/dist/dev/mp-weixin/pages/myMsg/myMsg.js

@@ -2,6 +2,7 @@
 const common_vendor = require("../../common/vendor.js");
 const utils_previewImage = require("../../utils/previewImage.js");
 const utils_api = require("../../utils/api.js");
+const utils_des = require("../../utils/des.js");
 const _sfc_main = {
   __name: "myMsg",
   setup(__props) {
@@ -20,7 +21,8 @@ const _sfc_main = {
           id
         }
       });
-      userInfo.value = res.data;
+      const result = JSON.parse(utils_des.decryptDes(res.data));
+      userInfo.value = result;
     };
     return (_ctx, _cache) => {
       return common_vendor.e({

+ 1 - 2
unpackage/dist/dev/mp-weixin/pagesReservation/backlog/backlog.js

@@ -1,7 +1,6 @@
 "use strict";
 const common_vendor = require("../../common/vendor.js");
 const utils_api = require("../../utils/api.js");
-const utils_des = require("../../utils/des.js");
 if (!Array) {
   const _easycom_uni_segmented_control2 = common_vendor.resolveComponent("uni-segmented-control");
   const _easycom_uni_popup2 = common_vendor.resolveComponent("uni-popup");
@@ -48,7 +47,7 @@ const _sfc_main = {
           type: activeCurrent.value - 0 + 1
         }
       });
-      const result = JSON.parse(utils_des.decryptDes(res.data));
+      const result = res.data;
       total.value = result.totalCount;
       list.value = [...list.value, ...result.list];
     };

+ 14 - 0
unpackage/dist/dev/mp-weixin/project.private.config.json

@@ -8,6 +8,20 @@
     "miniprogram": {
       "list": [
         {
+          "name": "pages/timeGroup/timeGroup",
+          "pathName": "pages/timeGroup/timeGroup",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "pages/main/main",
+          "pathName": "pages/main/main",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
           "name": "",
           "pathName": "pages/login/login",
           "query": "",

+ 2 - 2
utils/api.js

@@ -15,7 +15,7 @@ export const myRequest = (options) => {
 				'userhead': uni.getStorageSync('userhead')
 			},
 			data: options.data || {},
-			timeout: 10000,
+			timeout: 15000,
 			success: (res) => {
 				// if (res.data.code == 200) {
 				// 	resolve(res.data)
@@ -24,7 +24,7 @@ export const myRequest = (options) => {
 			},
 			fail: (err) => {
 				uni.showToast({
-					title: "请求发送失败",
+					title: err.errMsg ? err.errMsg : "请求发送失败",
 					icon: "none",
 					mask: true
 				})