diff --git a/jero-web/src/permission.js b/jero-web/src/permission.js index 10607c75..e1d423f1 100644 --- a/jero-web/src/permission.js +++ b/jero-web/src/permission.js @@ -17,8 +17,29 @@ router.beforeEach((to, from, next) => { if (Vue.ls.get(ACCESS_TOKEN)) { /* has token */ if (to.path === '/user/login') { - next({ path: INDEX_MAIN_PAGE_PATH }) - NProgress.done() + + store.dispatch('GetPermissionList').then(res => { + const menuData = res.result.menu; + if (menuData === null || menuData === "" || menuData === undefined) { + return; + } + let constRoutes = []; + constRoutes = generateIndexRouter(menuData); + // 添加主界面路由 + store.dispatch('UpdateAppRouter', { constRoutes }).then(() => { + // 根据roles权限生成可访问的路由表 + // 动态添加可访问路由表 + router.addRoutes(store.getters.addRouters) + const redirect = decodeURIComponent(from.query.redirect || to.path) + next(findFirstRoute(menuData)) + NProgress.done() + }) + }) + .catch(() => { + store.dispatch('Logout').then(() => { + next() + }) + }) } else { if (store.getters.permissionList.length === 0) { store.dispatch('GetPermissionList').then(res => { diff --git a/jero-web/src/utils/util.js b/jero-web/src/utils/util.js index 9c1321b3..809eff4a 100644 --- a/jero-web/src/utils/util.js +++ b/jero-web/src/utils/util.js @@ -81,13 +81,14 @@ export function formatDate(value, fmt) { // 生成首页路由 export function generateIndexRouter(data) { + const redirectPath = findFirstRoute(data) let indexRouter = [{ path: '/', name: 'dashboard', //component: () => import('@/components/layouts/BasicLayout'), component: resolve => require(['@/components/layouts/TabLayout'], resolve), meta: { title: '首页' }, - redirect: '/dashboard/analysis', + redirect: redirectPath, children: [ ...generateChildRouters(data) ] @@ -560,4 +561,15 @@ export function removeArrayElement(array, prod, value) { if(index>=0){ array.splice(index, 1); } +} +export function findFirstRoute(data){ + if (data[0]) { + if (data[0] && data[0].children && data[0].children.length > 0) { + return findFirstRoute(data[0].children) + } else { + return data[0].path + } + } else { + return '/' + } } \ No newline at end of file