sass警告

This commit is contained in:
2026-06-02 14:21:13 +08:00
parent dde72be9de
commit 557a6f30f2
19 changed files with 353 additions and 48 deletions
+7
View File
@@ -10,6 +10,7 @@ import type { MenuItemRaw } from '@/api/menu'
* 【新增页面时】在这里加一条映射即可,后端返回对应的 key 就能自动注册路由
*/
const componentMap: Record<string, () => Promise<any>> = {
'Jobs': () => import('@/views/Jobs.vue'),
'Agent': () => import('@/views/Agent.vue'),
'Profile': () => import('@/views/Profile.vue'),
'Resume': () => import('@/views/Resume.vue'),
@@ -19,11 +20,17 @@ const componentMap: Record<string, () => Promise<any>> = {
* 把后端返回的菜单数据转换成 vue-router 能识别的 RouteRecordRaw
*
* 如果后端返回了一个 component 字符串在映射表里找不到,会跳过该条路由并打印警告
* 已在静态路由中注册的路径(如 /jobs)不再重复注册
*/
const STATIC_PATHS = ['/', '/jobs', '/resume/:id', '/jobs/:id']
export function buildDynamicRoutes(menus: MenuItemRaw[]): RouteRecordRaw[] {
const routes: RouteRecordRaw[] = []
for (const item of menus) {
// 跳过已在静态路由中注册的路径
if (STATIC_PATHS.includes(item.path)) continue
const comp = componentMap[item.component]
if (!comp) {
console.warn(`[dynamicRoutes] 组件映射表中找不到 "${item.component}",已跳过`)
+6 -2
View File
@@ -37,10 +37,11 @@ const CHECK_INTERVAL = 5 * 60 * 1000 // 5 分钟
* 全局前置守卫 — 核心逻辑:
*
* 1. 动态路由未加载 → 先拉取并注册,再重新进入当前路由
* 2. 需要鉴权的路由 → 调 checkLogin 接口验证 Cookie 是否有效
* 2. 每次页面切换都刷新路由菜单数据(权限可能变化)
* 3. 需要鉴权的路由 → 调 checkLogin 接口验证 Cookie 是否有效
* - 有效:同步 isAuthenticated = true,放行
* - 无效:同步 isAuthenticated = false,弹登录框,阻止导航
* 3. 不需要鉴权的路由 → 静默同步登录状态(不阻止导航、不弹登录框),5 分钟内节流
* 4. 不需要鉴权的路由 → 静默同步登录状态(不阻止导航、不弹登录框),5 分钟内节流
*/
router.beforeEach(async (to, _from, next) => {
// 动态路由只需加载一次,与登录状态无关
@@ -55,6 +56,9 @@ router.beforeEach(async (to, _from, next) => {
return
}
// 每次页面切换时静默刷新路由菜单数据(更新权限状态),不阻塞导航
store.dispatch('refreshDynamicMenus')
// 需要鉴权的路由,每次都通过接口校验登录状态
if (to.meta?.requiresAuth) {
try {