From 13eca9da63b3c0a0ee9feae8f90d8bf93ea0c2fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9C=E6=80=80=E7=A3=8A=E2=80=9D?= <2280131253@qq.com> Date: Mon, 28 Feb 2022 10:38:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E8=BF=9B=E5=85=A5=E4=B8=8A=E6=AC=A1=E7=99=BB=E5=BD=95=E7=9A=84?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=8A=9F=E8=83=BD=EF=BC=9B=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9D=83=E9=99=90=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.js | 20 +++++++++++++------- src/store/modules/permission.js | 24 ++++-------------------- src/utils/jms.js | 10 ++++++++++ 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/router/index.js b/src/router/index.js index b252b7fce..d1472d06f 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,5 +1,6 @@ import Vue from 'vue' import Router from 'vue-router' +import { getBeforeViewRouter } from '@/utils/jms' Vue.use(Router) @@ -51,6 +52,16 @@ import ticketsRoutes from './tickets' import settingsRoutes from './settings' import profileRoutes from './profile' +const permissionRoutes = [ + workspaceViewRoutes, + consoleViewRoutes, + auditViewRoutes, + ticketsRoutes, + settingsRoutes, + profileRoutes +] +const beforeViewRouter = getBeforeViewRouter(permissionRoutes) || '' + /** * admin * the routes that need to be dynamically loaded based on admin roles @@ -58,17 +69,12 @@ import profileRoutes from './profile' export const allRoutes = [ { path: '', - redirect: '/workspace/home', + redirect: beforeViewRouter, meta: { permissions: [] } }, - workspaceViewRoutes, - consoleViewRoutes, - auditViewRoutes, - ticketsRoutes, - settingsRoutes, - profileRoutes + ...permissionRoutes ] const createRouter = () => new Router({ diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index a4c101544..62f146d20 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -13,24 +13,6 @@ function hasLicense(route, rootState) { return !(!licenseIsValid && licenseRequired) } -export function filterLicenseRequiredRoutes(routes, rootState) { - const res = [] - - routes.forEach(route => { - const tmp = { - ...route - } - if (hasLicense(route, rootState)) { - if (tmp.children) { - tmp.children = filterLicenseRequiredRoutes(tmp.children, rootState) - } - res.push(tmp) - } - }) - - return res -} - function isNeedHidden(route, rootState) { let hidden = route.meta ? route.meta.hidden : false if (typeof hidden === 'function') { @@ -46,7 +28,7 @@ export function filterHiddenRoutes(routes, rootState) { const tmp = { ...route } - if (!isNeedHidden(route, rootState)) { + if (!isNeedHidden(route, rootState) || hasLicense(route, rootState)) { if (tmp.children) { tmp.children = filterHiddenRoutes(tmp.children, rootState) } @@ -223,6 +205,9 @@ const actions = { viewRoute = route } } + if (viewRoute.meta?.showNavSwitcher) { + localStorage.setItem('BeforeViewRouter', JSON.stringify(viewRoute.path)) + } commit('SET_VIEW_ROUTE', viewRoute) }) }, @@ -230,7 +215,6 @@ const actions = { return new Promise(resolve => { let routes = filterPermedRoutes(allRoutes, rootState) routes = filterHiddenRoutes(routes, rootState) - routes = filterLicenseRequiredRoutes(routes, rootState) if (routes.length === 0) { console.log('No route find') } else { diff --git a/src/utils/jms.js b/src/utils/jms.js index 294205653..73b3e99b9 100644 --- a/src/utils/jms.js +++ b/src/utils/jms.js @@ -58,3 +58,13 @@ export function hasActionPerm(route, action) { const permsRequired = getRouteRequiredPerms(route, action) return hasPermission(permsRequired) } + +export function getBeforeViewRouter(permissionRoutes) { + let prefer = JSON.parse(localStorage.getItem('BeforeViewRouter')) || '' + const hasRole = permissionRoutes.some(i => (i.path === prefer && i.path !== '')) + if (!prefer) { + prefer = hasRole ? prefer : '/workspace' + localStorage.setItem('BeforeViewRouter', JSON.stringify(prefer)) + } + return prefer +}