From e3f4a058cbad75373f4b8d69ba616a51bdd226a1 Mon Sep 17 00:00:00 2001 From: fengchenchen Date: Mon, 16 May 2022 13:45:46 +0800 Subject: [PATCH] =?UTF-8?q?[bug]=20-=20=E4=BF=AE=E6=94=B9=E7=BA=BF?= =?UTF-8?q?=E4=B8=8A=E6=89=80=E9=A2=86=E5=AF=BC=E4=B8=8D=E8=83=BD=E5=8D=95?= =?UTF-8?q?=E7=82=B9=E7=99=BB=E5=BD=95=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/permission.js | 10 +++++++++- src/utils/hasPermission.js | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/permission.js b/src/permission.js index 392a054..5b169fe 100644 --- a/src/permission.js +++ b/src/permission.js @@ -6,6 +6,7 @@ import 'nprogress/nprogress.css' // progress bar style // import notification from 'ant-design-vue/es/notification' import { ACCESS_TOKEN, INDEX_MAIN_PAGE_PATH,USER_INFO } from '@/store/mutation-types' import { generateIndexRouter } from '@/utils/util' +import { menuPermission } from './utils/hasPermission' import {loginIdmPlatform} from '@api/api' import {notification} from 'ant-design-vue' @@ -64,7 +65,14 @@ router.beforeEach(async (to, from, next) => { // 根据roles权限生成可访问的路由表 // 动态添加可访问路由表 router.addRoutes(store.getters.addRouters) - const redirect = decodeURIComponent(from.query.redirect || to.path) + + let redirect = decodeURIComponent(from.query.redirect || to.path) + let opeMenuData = JSON.parse(JSON.stringify(menuData)) + if(!menuPermission(opeMenuData, redirect)) { + const firstRouter = constRoutes[0].redirect + redirect = firstRouter + } + // const redirect = decodeURIComponent(from.query.redirect || to.path) if (to.path === redirect) { // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record next({ ...to, replace: true }) diff --git a/src/utils/hasPermission.js b/src/utils/hasPermission.js index 11944ba..dbfa20f 100644 --- a/src/utils/hasPermission.js +++ b/src/utils/hasPermission.js @@ -199,5 +199,19 @@ export function judgeGlobalPermission(bindingValue) { return true } +/*判断是否有菜单的权限*/ +export function menuPermission(menuData, routePath) { + let accessedRouters = menuData.some(route => { + if (route.path !== routePath) { + if (route.children && route.children.length) { + return menuPermission(route.children, routePath) + } + return false + } + return true + }) + return accessedRouters +} + export default hasPermission