diff --git a/.env b/.env index c50d63c..7ccaaf6 100644 --- a/.env +++ b/.env @@ -7,5 +7,5 @@ VITE_GLOB_APP_TITLE = SnowAdmin # 静态资源url VITE_IMG_BASE_URL = 'https://my-image-cdn.com' -# 本地mock数据 +# 本地mock数据 true开启 false关闭 VITE_APP_OPEN_MOCK = true \ No newline at end of file diff --git a/src/mock/_data/system_menu.ts b/src/mock/_data/system_menu.ts index ec44f34..fd2e517 100644 --- a/src/mock/_data/system_menu.ts +++ b/src/mock/_data/system_menu.ts @@ -22,17 +22,17 @@ * * 路由meta对象参数,我们通常将属性放到meta对象中 * meta: { - * title: 菜单栏以及 tabsView 栏、菜单搜索名称(国际化) + * title: 国际化key * hide: 是否隐藏此路由,不会显示在菜单树,可以访问 - * disable: 是否停用,不会显示在菜单树,且不可访问 - * keepAlive: 是否缓存组件状态 - * affix: 是否固定在 tabsView 栏上 菜单配置 - * link: 是否是超链接菜单,开启外链条件:1、 link:链接地址不为空 2、iframe: false 菜单配置 - * iframe: 是否内嵌窗口,开启条件:1、iframe:true 2、link:链接地址不为空 菜单配置 - * roles: 当前路由权限表示,取角色管理。路由控制显示、隐藏。 超级管理员:admin;普通角色:common - * icon: 菜单、tabsView 图标等 - * svgIcon: svg图标 - * sort: 菜单顺序 + * disable: 是否停用此路由-不显示且不可访问 + * keepAlive: 是否缓存组件 + * affix: 固定在Tabs栏上-开启后Tabs栏无关闭按钮 + * link: 是否是超链接菜单,开启外链条件:1、 link:链接地址不为空 2、iframe: false + * iframe: 是否内嵌外链窗口,开启条件:1、iframe:true 2、link:链接地址不为空 + * roles: 路由权限标识,取角色权限,超级管理员:admin;普通角色:common + * svgIcon: svg菜单图标,优先级高于icon,取src/assets/svgs内的svg文件 + * icon: 普通icon菜单图标,默认取arco.design图标 + * sort: 排序字段 * type: 1目录 2菜单 3按钮 * } */ @@ -40,30 +40,31 @@ /** * 路由的层级设置 * layout为框架布局,顶层路由 - * layout.children下的路由为menu菜单,例如:首页、系统设置、权限管理等 + * layout.children下的路由为systemMenu菜单,例如:首页、系统设置、权限管理等 */ export const systemMenu = [ // layout-二级路由(主要渲染页面) { - id: "01", - parentId: "0", - path: "/home", - name: "home", - component: "home/home", + id: "01", // 路由id + parentId: "0", // 顶层路由 parentId: 0 + path: "/home", // 路由path + name: "home", // 路由name + component: "home/home", // 路由跳转的文件路径,默认在src/views内,这里就是src/views/home/home.vue meta: { - title: "home", // 国际化 - hide: false, // 是否隐藏此路由 - disable: false, // 是否停用此路由 - keepAlive: false, // 缓存组件状态 - affix: true, // 固定在tagesView栏上 + title: "home", // 国际化key + hide: false, // 是否隐藏此路由-不显示但可访问 + disable: false, // 是否停用此路由-不显示且不可访问 + keepAlive: false, // 是否缓存组件 + affix: true, // 固定在Tabs栏上-开启后Tabs栏无关闭按钮 link: "", // 是否外链 - iframe: false, // 是否内嵌窗口 - roles: ["admin", "common"], // 路由权限 - svgIcon: "home", // 菜单图标 - sort: 1, + iframe: false, // 是否内嵌外链窗口 + roles: ["admin", "common"], // 路由角色权限 + svgIcon: "home", // svg菜单图标,优先级高于icon,取src/assets/svgs内的svg文件 + icon: "", // 普通icon菜单图标,默认取arco.design图标 + sort: 1, // 排序字段 type: 2 // type 1目录 2菜单 3按钮 }, - children: null + children: null // 存储子节点字段,默认为null }, { id: "02", diff --git a/src/mock/system/menu.ts b/src/mock/system/menu.ts index 91d3a68..0eeb31a 100644 --- a/src/mock/system/menu.ts +++ b/src/mock/system/menu.ts @@ -8,8 +8,8 @@ import { systemMenu, permissionData } from "../_data/system_menu"; * 1、根据token判断角色 * 2、过滤扁平路由,根据角色过滤权限和非禁用的节点 * 3、将扁平路由转换为树结构 - * 3、路由树排序 - * 4、返回路由树 + * 4、路由树排序 + * 5、返回路由树 * * 前端调用接口拿到路由数据后: * 1、将模块设置为真实模块 diff --git a/src/mock/user/index.ts b/src/mock/user/index.ts index 13591b0..e9264a0 100644 --- a/src/mock/user/index.ts +++ b/src/mock/user/index.ts @@ -33,7 +33,7 @@ export default [ timeout: 300, response: ({ headers }: any) => { let data: any = { - user: {}, // 用户信息 + user: {}, // 账户信息 roles: [], // 角色 permissions: [] // 权限 }; diff --git a/src/router/index.ts b/src/router/index.ts index cdc12b4..7f430b6 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -31,7 +31,7 @@ const router = createRouter({ * 1、去登录页,无token,放行 * 2、没有token,直接重定向到登录页 * 3、去登录页,有token,直接重定向到home页 - * 4、去非登录页,有token,若是从登录页而来则重载路由,若是刷新页面则重载路由,重载后重新跳转 + * 4、去非登录页,有token,用户信息是否存在,有则放行,否则重新获取路由信息、初始化路由 * 注意: * 全局routeTree不能持久化缓存 * 页面刷新会导致addRoute动态添加的路由失效,需要重新初始化路由 @@ -54,7 +54,7 @@ router.beforeEach(async (to: any, _: any, next: any) => { // 项目内的跳转,处理跳转路由高亮 currentlyRoute(to.name as string); } else { - // 4、去非登录页,有token,校验是否动态添加过路由,添加过则放行,未添加则执行路由初始化 + // 4、去非登录页,有token,用户信息是否存在,有则放行,否则重新获取路由信息、初始化路由 const routeStore = useRoutesConfigStore(pinia); // 判断账号信息是否获取,先获取账号信息和路由信息,添加路由后再跳转(页面刷新时触发) diff --git a/src/store/modules/route-config.ts b/src/store/modules/route-config.ts index 91a6911..cd5ba1c 100644 --- a/src/store/modules/route-config.ts +++ b/src/store/modules/route-config.ts @@ -88,13 +88,12 @@ export const routesConfigStore = () => { } /** * 路由初始化 - * 1、获取过滤角色权限后的树,后端做排序处理 + * 1、获取过滤角色权限后排过序的的路由树,后端处理 * 2、将模块设置为真实模块 * 3、存储路由树,用于生成菜单 * 4、根据树生成一维路由数组 * 5、动态添加路由 * 6、缓存一维路由 - * 7、获取按钮权限数据 */ async function initSetRouter() { // 1、获取过滤角色权限后的树,后端做排序处理