refactor: refactor route

This commit is contained in:
vben
2020-12-03 21:49:32 +08:00
parent 7bfe5f753d
commit c303ec1a23
84 changed files with 1575 additions and 1532 deletions

View File

@@ -1,4 +1,3 @@
import { REDIRECT_ROUTE } from '/@/router/constant';
import type { AppRouteRecordRaw, Menu } from '/@/router/types';
import store from '/@/store/index';
import { hotModuleUnregisterModule } from '/@/utils/helper/vuexHelper';
@@ -15,15 +14,13 @@ import { filter } from '/@/utils/helper/treeHelper';
import { toRaw } from 'vue';
import { getMenuListById } from '/@/api/sys/menu';
import { genRouteModule, transformObjToRoute } from '/@/utils/helper/routeHelper';
import { transformRouteToMenu } from '/@/utils/helper/menuHelper';
import { transformObjToRoute } from '/@/router/helper/routeHelper';
import { transformRouteToMenu } from '/@/router/helper/menuHelper';
import { useMessage } from '/@/hooks/web/useMessage';
// import { warn } from '/@/utils/log';
import { useI18n } from '/@/hooks/web/useI18n';
const { t } = useI18n();
const { createMessage } = useMessage();
const NAME = 'permission';
hotModuleUnregisterModule(NAME);
@@ -87,6 +84,7 @@ class Permission extends VuexModule {
@Action
async buildRoutesAction(id?: number | string): Promise<AppRouteRecordRaw[]> {
const { t } = useI18n();
let routes: AppRouteRecordRaw[] = [];
const roleList = toRaw(userStore.getRoleListState);
@@ -95,17 +93,15 @@ class Permission extends VuexModule {
// role permissions
if (permissionMode === PermissionModeEnum.ROLE) {
routes = filter(asyncRoutes, (route) => {
const { meta } = route;
const { roles } = meta!;
const { meta } = route as AppRouteRecordRaw;
const { roles } = meta || {};
if (!roles) return true;
return roleList.some((role) => roles.includes(role));
});
// 如果确定不需要做后台动态权限,请将下面整个判断注释
} else if (permissionMode === PermissionModeEnum.BACK) {
const messageKey = 'loadMenu';
createMessage.loading({
content: t('sys.app.menuLoading'),
key: messageKey,
duration: 1,
});
// 这里获取后台路由菜单逻辑自行修改
@@ -118,10 +114,10 @@ class Permission extends VuexModule {
routeList = transformObjToRoute(routeList);
// 后台路由转菜单结构
const backMenuList = transformRouteToMenu(routeList);
this.commitBackMenuListState(backMenuList);
// 生成路由
routes = genRouteModule(routeList) as AppRouteRecordRaw[];
routes.push(REDIRECT_ROUTE);
routes = routeList;
}
return routes;
}