修改访问时间
This commit is contained in:
parent
fa1e3a68e9
commit
2f7a8874c4
|
@ -8,69 +8,9 @@ const router: Router = createRouter({
|
||||||
routes: routes,
|
routes: routes,
|
||||||
});
|
});
|
||||||
|
|
||||||
//router.beforeEach(async (_to, _from, next) => {
|
router.beforeEach(async (_to, _from, next) => {
|
||||||
// next();
|
next();
|
||||||
//});
|
|
||||||
|
|
||||||
|
|
||||||
// 防止重复检查访问时间
|
|
||||||
let accessChecked = false;
|
|
||||||
|
|
||||||
router.beforeEach(async (to, from, next) => {
|
|
||||||
if (!accessChecked) {
|
|
||||||
try {
|
|
||||||
const res = await getAccessTime();
|
|
||||||
const currentTime = new Date();
|
|
||||||
const startTime = new Date(res.result.startTime);
|
|
||||||
const endTime = new Date(res.result.endTime);
|
|
||||||
|
|
||||||
console.log("startTime", startTime);
|
|
||||||
console.log("endTime", endTime);
|
|
||||||
// 格式化日期,保留年月日和时分,去掉秒
|
|
||||||
const startTimeString = startTime.toLocaleString('zh-CN', {
|
|
||||||
year: 'numeric',
|
|
||||||
month: '2-digit',
|
|
||||||
day: '2-digit',
|
|
||||||
hour: '2-digit',
|
|
||||||
minute: '2-digit',
|
|
||||||
});
|
|
||||||
const endTimeString = endTime.toLocaleString('zh-CN', {
|
|
||||||
year: 'numeric',
|
|
||||||
month: '2-digit',
|
|
||||||
day: '2-digit',
|
|
||||||
hour: '2-digit',
|
|
||||||
minute: '2-digit',
|
|
||||||
});
|
|
||||||
|
|
||||||
// 判断当前时间是否在允许的访问时间范围内
|
|
||||||
if (currentTime >= startTime && currentTime <= endTime) {
|
|
||||||
accessChecked = true;
|
|
||||||
next(); // 在允许的访问时间内,继续访问
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// 如果不在访问时间内,弹出警告框
|
|
||||||
showDialog({
|
|
||||||
title: '访问提示',
|
|
||||||
message: `请在规定的时间内进行报名。\n报名时间:\n${startTimeString} —— ${endTimeString}`,
|
|
||||||
}).then(() => {
|
|
||||||
// 用户点击“确定”后的处理,关闭页面
|
|
||||||
window.close(); // 关闭当前浏览器窗口
|
|
||||||
});
|
|
||||||
next(false); // 阻止跳转
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
// 获取访问时间失败,弹出错误提示
|
|
||||||
showDialog({
|
|
||||||
title: '访问错误',
|
|
||||||
message: '获取访问时间失败,请稍后再试。',
|
|
||||||
}).then(() => {
|
|
||||||
window.close(); // 关闭当前浏览器窗口
|
|
||||||
});
|
|
||||||
next(false); // 阻止跳转
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
next(); // 已经检查过了,继续访问
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
|
|
@ -39,10 +39,12 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import { showNotify, showConfirmDialog } from 'vant';
|
import { showDialog,showNotify, showConfirmDialog } from 'vant';
|
||||||
import { getMajor, checkUser } from '@/api';
|
import { getAccessTime,getMajor, checkUser } from '@/api';
|
||||||
import { useUserStore } from '@/store';
|
import { useUserStore } from '@/store';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const store = useUserStore();
|
const store = useUserStore();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const inputCode = ref(''); // 用于绑定输入的身份码
|
const inputCode = ref(''); // 用于绑定输入的身份码
|
||||||
|
@ -72,7 +74,64 @@
|
||||||
* 2. 根据身份码获取对应的学科信息
|
* 2. 根据身份码获取对应的学科信息
|
||||||
* 3. 显示确认对话框,用户确认后执行登录操作
|
* 3. 显示确认对话框,用户确认后执行登录操作
|
||||||
*/
|
*/
|
||||||
function login() {
|
let accessChecked = false;
|
||||||
|
|
||||||
|
async function login() {
|
||||||
|
loading.value = true;
|
||||||
|
show.value = true;
|
||||||
|
|
||||||
|
if (!accessChecked) {
|
||||||
|
try {
|
||||||
|
const res = await getAccessTime();
|
||||||
|
const currentTime = new Date();
|
||||||
|
const startTime = new Date(res.result.startTime);
|
||||||
|
const endTime = new Date(res.result.endTime);
|
||||||
|
|
||||||
|
console.log("startTime", startTime);
|
||||||
|
console.log("endTime", endTime);
|
||||||
|
|
||||||
|
const formatToChineseTime = (date) => {
|
||||||
|
const month = date.getMonth() + 1;
|
||||||
|
const day = date.getDate();
|
||||||
|
const hour = date.getHours();
|
||||||
|
return `${month}月${day}号${hour}时`;
|
||||||
|
};
|
||||||
|
|
||||||
|
const startTimeString = formatToChineseTime(startTime);
|
||||||
|
const endTimeString = formatToChineseTime(endTime);
|
||||||
|
const formattedTime = `${startTimeString}-${endTimeString}`;
|
||||||
|
|
||||||
|
console.log(formattedTime);
|
||||||
|
|
||||||
|
if (currentTime >= startTime && currentTime <= endTime) {
|
||||||
|
accessChecked = true;
|
||||||
|
// Continue with login process
|
||||||
|
await performLogin();
|
||||||
|
} else {
|
||||||
|
loading.value = false;
|
||||||
|
show.value = false;
|
||||||
|
await showDialog({
|
||||||
|
title: '访问提示',
|
||||||
|
message: `请在规定的时间内进行报名。\n报名时间:\n${startTimeString} —— ${endTimeString}`,
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Error getting access time:', err);
|
||||||
|
loading.value = false;
|
||||||
|
show.value = false;
|
||||||
|
await showDialog({
|
||||||
|
title: '访问错误',
|
||||||
|
message: '获取访问时间失败,请稍后再试。',
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Already checked, continue with login
|
||||||
|
await performLogin();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function performLogin() {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
show.value = true;
|
show.value = true;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue