import { createRouter, createWebHashHistory, Router } from 'vue-router'; import {getAccessTime} from '@/api/index'; import routes from './routes'; import {showDialog } from 'Vant'; const router: Router = createRouter({ history: createWebHashHistory(import.meta.env.BASE_URL), routes: routes, }); //router.beforeEach(async (_to, _from, 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;