| |
| router.beforeEach((to, from, next) => { |
| |
| clearPending() |
| |
| |
| if (to.path === "/login") { |
| next() |
| } else { |
| let token = getToken() |
| if (token && typeof token != "undefined") { |
| |
| if (store.state.menus.length === 0) { |
| |
| getRouters().then(() => { |
| next({ |
| ...to, |
| replace: true, |
| }) |
| }) |
| } else { |
| next() |
| } |
| } else { |
| next("/login") |
| } |
| } |
| }) |
| |
| |
| const getRouters = () => { |
| return new Promise((resolve) => { |
| |
| systemMenu.list().then((res) => { |
| |
| store.dispatch("initMenu", res.data).then(() => { |
| |
| let data = handlerRouterDate(res.data) |
| |
| data.forEach((item: any) => { |
| router.addRoute("base", item) |
| }) |
| |
| |
| router.addRoute("base", { |
| path: "/:w+", |
| name: "404Page", |
| component: () => import("@/views/404.vue"), |
| }) |
| |
| |
| resolve(null) |
| }) |
| }) |
| }) |
| } |
| |
| |
| const handlerRouterDate = (data: any) => { |
| let routerData = <any>[] |
| |
| |
| data.forEach((item: any) => { |
| if (item.children) { |
| |
| let temp = handlerRouterDate(item.children) |
| |
| temp.forEach((sub: any) => { |
| if (sub.router != "-") { |
| routerData.push(sub) |
| } |
| }) |
| } |
| |
| if (item.router != "-") { |
| |
| routerData.push(handlerRouterItem(item)) |
| } |
| }) |
| |
| return routerData |
| } |
| |
| |
| const handlerRouterItem = (item: any) => { |
| return { |
| path: item.router, |
| name: item.name, |
| |
| |
| |
| component: viteComponent[`../views${item.path}.vue`], |
| } |
| } |