272 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
		
		
			
		
	
	
			272 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
| 
								 | 
							
								import { resultSuccess, resultError, getRequestToken, requestParams,baseUrl} from '../_util';
							 | 
						||
| 
								 | 
							
								import { MockMethod } from 'vite-plugin-mock';
							 | 
						||
| 
								 | 
							
								import { createFakeUserList } from './user';
							 | 
						||
| 
								 | 
							
								import { PageEnum } from '/@/enums/pageEnum';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// single
							 | 
						||
| 
								 | 
							
								const dashboardRoute = {
							 | 
						||
| 
								 | 
							
								  path: '/dashboard',
							 | 
						||
| 
								 | 
							
								  name: 'Dashboard',
							 | 
						||
| 
								 | 
							
								  component: 'LAYOUT',
							 | 
						||
| 
								 | 
							
								  redirect: PageEnum.BASE_HOME,
							 | 
						||
| 
								 | 
							
								  meta: {
							 | 
						||
| 
								 | 
							
								    title: 'routes.dashboard.dashboard',
							 | 
						||
| 
								 | 
							
								    hideChildrenInMenu: true,
							 | 
						||
| 
								 | 
							
								    icon: 'bx:bx-home',
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  children: [
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'analysis',
							 | 
						||
| 
								 | 
							
								      name: 'Analysis',
							 | 
						||
| 
								 | 
							
								      component: '/dashboard/Analysis/index',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        hideMenu: true,
							 | 
						||
| 
								 | 
							
								        hideBreadcrumb: true,
							 | 
						||
| 
								 | 
							
								        title: 'routes.dashboard.analysis',
							 | 
						||
| 
								 | 
							
								        currentActiveMenu: '/dashboard',
							 | 
						||
| 
								 | 
							
								        icon: 'bx:bx-home',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'workbench',
							 | 
						||
| 
								 | 
							
								      name: 'Workbench',
							 | 
						||
| 
								 | 
							
								      component: '/dashboard/workbench/index',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        hideMenu: true,
							 | 
						||
| 
								 | 
							
								        hideBreadcrumb: true,
							 | 
						||
| 
								 | 
							
								        title: 'routes.dashboard.workbench',
							 | 
						||
| 
								 | 
							
								        currentActiveMenu: '/dashboard',
							 | 
						||
| 
								 | 
							
								        icon: 'bx:bx-home',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								  ],
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const backRoute = {
							 | 
						||
| 
								 | 
							
								  path: 'back',
							 | 
						||
| 
								 | 
							
								  name: 'PermissionBackDemo',
							 | 
						||
| 
								 | 
							
								  meta: {
							 | 
						||
| 
								 | 
							
								    title: 'routes.demo.permission.back',
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  children: [
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'page',
							 | 
						||
| 
								 | 
							
								      name: 'BackAuthPage',
							 | 
						||
| 
								 | 
							
								      component: '/demo/permission/back/index',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        title: 'routes.demo.permission.backPage',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'btn',
							 | 
						||
| 
								 | 
							
								      name: 'BackAuthBtn',
							 | 
						||
| 
								 | 
							
								      component: '/demo/permission/back/Btn',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        title: 'routes.demo.permission.backBtn',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								  ],
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const authRoute = {
							 | 
						||
| 
								 | 
							
								  path: '/permission',
							 | 
						||
| 
								 | 
							
								  name: 'Permission',
							 | 
						||
| 
								 | 
							
								  component: 'LAYOUT',
							 | 
						||
| 
								 | 
							
								  redirect: '/permission/front/page',
							 | 
						||
| 
								 | 
							
								  meta: {
							 | 
						||
| 
								 | 
							
								    icon: 'carbon:user-role',
							 | 
						||
| 
								 | 
							
								    title: 'routes.demo.permission.permission',
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  children: [backRoute],
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const levelRoute = {
							 | 
						||
| 
								 | 
							
								  path: '/level',
							 | 
						||
| 
								 | 
							
								  name: 'Level',
							 | 
						||
| 
								 | 
							
								  component: 'LAYOUT',
							 | 
						||
| 
								 | 
							
								  redirect: '/level/menu1/menu1-1',
							 | 
						||
| 
								 | 
							
								  meta: {
							 | 
						||
| 
								 | 
							
								    icon: 'carbon:user-role',
							 | 
						||
| 
								 | 
							
								    title: 'routes.demo.level.level',
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  children: [
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'menu1',
							 | 
						||
| 
								 | 
							
								      name: 'Menu1Demo',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        title: 'Menu1',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      children: [
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								          path: 'menu1-1',
							 | 
						||
| 
								 | 
							
								          name: 'Menu11Demo',
							 | 
						||
| 
								 | 
							
								          meta: {
							 | 
						||
| 
								 | 
							
								            title: 'Menu1-1',
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          children: [
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								              path: 'menu1-1-1',
							 | 
						||
| 
								 | 
							
								              name: 'Menu111Demo',
							 | 
						||
| 
								 | 
							
								              component: '/demo/level/Menu111',
							 | 
						||
| 
								 | 
							
								              meta: {
							 | 
						||
| 
								 | 
							
								                title: 'Menu111',
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          ],
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								          path: 'menu1-2',
							 | 
						||
| 
								 | 
							
								          name: 'Menu12Demo',
							 | 
						||
| 
								 | 
							
								          component: '/demo/level/Menu12',
							 | 
						||
| 
								 | 
							
								          meta: {
							 | 
						||
| 
								 | 
							
								            title: 'Menu1-2',
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								      ],
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'menu2',
							 | 
						||
| 
								 | 
							
								      name: 'Menu2Demo',
							 | 
						||
| 
								 | 
							
								      component: '/demo/level/Menu2',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        title: 'Menu2',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								  ],
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const sysRoute = {
							 | 
						||
| 
								 | 
							
								  path: '/system',
							 | 
						||
| 
								 | 
							
								  name: 'System',
							 | 
						||
| 
								 | 
							
								  component: 'LAYOUT',
							 | 
						||
| 
								 | 
							
								  redirect: '/system/account',
							 | 
						||
| 
								 | 
							
								  meta: {
							 | 
						||
| 
								 | 
							
								    icon: 'ion:settings-outline',
							 | 
						||
| 
								 | 
							
								    title: 'routes.demo.system.moduleName',
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  children: [
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'account',
							 | 
						||
| 
								 | 
							
								      name: 'AccountManagement',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        title: 'routes.demo.system.account',
							 | 
						||
| 
								 | 
							
								        ignoreKeepAlive: true,
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      component: '/demo/system/account/index',
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'account_detail/:id',
							 | 
						||
| 
								 | 
							
								      name: 'AccountDetail',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        hideMenu: true,
							 | 
						||
| 
								 | 
							
								        title: 'routes.demo.system.account_detail',
							 | 
						||
| 
								 | 
							
								        ignoreKeepAlive: true,
							 | 
						||
| 
								 | 
							
								        showMenu: false,
							 | 
						||
| 
								 | 
							
								        currentActiveMenu: '/system/account',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      component: '/demo/system/account/AccountDetail',
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'role',
							 | 
						||
| 
								 | 
							
								      name: 'RoleManagement',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        title: 'routes.demo.system.role',
							 | 
						||
| 
								 | 
							
								        ignoreKeepAlive: true,
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      component: '/demo/system/role/index',
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'menu',
							 | 
						||
| 
								 | 
							
								      name: 'MenuManagement',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        title: 'routes.demo.system.menu',
							 | 
						||
| 
								 | 
							
								        ignoreKeepAlive: true,
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      component: '/demo/system/menu/index',
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'dept',
							 | 
						||
| 
								 | 
							
								      name: 'DeptManagement',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        title: 'routes.demo.system.dept',
							 | 
						||
| 
								 | 
							
								        ignoreKeepAlive: true,
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      component: '/demo/system/dept/index',
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'changePassword',
							 | 
						||
| 
								 | 
							
								      name: 'ChangePassword',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        title: 'routes.demo.system.password',
							 | 
						||
| 
								 | 
							
								        ignoreKeepAlive: true,
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      component: '/demo/system/password/index',
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								  ],
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const linkRoute = {
							 | 
						||
| 
								 | 
							
								  path: '/link',
							 | 
						||
| 
								 | 
							
								  name: 'Link',
							 | 
						||
| 
								 | 
							
								  component: 'LAYOUT',
							 | 
						||
| 
								 | 
							
								  meta: {
							 | 
						||
| 
								 | 
							
								    icon: 'ion:tv-outline',
							 | 
						||
| 
								 | 
							
								    title: 'routes.demo.iframe.frame',
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  children: [
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'doc',
							 | 
						||
| 
								 | 
							
								      name: 'Doc',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        title: 'routes.demo.iframe.doc',
							 | 
						||
| 
								 | 
							
								        frameSrc: 'https://vvbin.cn/doc-next/',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      path: 'https://vvbin.cn/doc-next/',
							 | 
						||
| 
								 | 
							
								      name: 'DocExternal',
							 | 
						||
| 
								 | 
							
								      component: 'LAYOUT',
							 | 
						||
| 
								 | 
							
								      meta: {
							 | 
						||
| 
								 | 
							
								        title: 'routes.demo.iframe.docExternal',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								  ],
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export default [
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    url: `${baseUrl}/sys/permission/getUserPermissionByToken`,
							 | 
						||
| 
								 | 
							
								    timeout: 1000,
							 | 
						||
| 
								 | 
							
								    method: 'get',
							 | 
						||
| 
								 | 
							
								    response: (request: requestParams) => {
							 | 
						||
| 
								 | 
							
								      const token = getRequestToken(request);
							 | 
						||
| 
								 | 
							
								      if (!token) {
							 | 
						||
| 
								 | 
							
								        return resultError('Invalid token!');
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      const checkUser = createFakeUserList().find((item) => item.token === token);
							 | 
						||
| 
								 | 
							
								      if (!checkUser) {
							 | 
						||
| 
								 | 
							
								        return resultError('Invalid user token!');
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      const id = checkUser.userId;
							 | 
						||
| 
								 | 
							
								      let menu: Object[];
							 | 
						||
| 
								 | 
							
								      switch (id) {
							 | 
						||
| 
								 | 
							
								        case '1':
							 | 
						||
| 
								 | 
							
								          dashboardRoute.redirect = dashboardRoute.path + '/' + dashboardRoute.children[0].path;
							 | 
						||
| 
								 | 
							
								          menu = [dashboardRoute, authRoute, levelRoute, sysRoute, linkRoute];
							 | 
						||
| 
								 | 
							
								          break;
							 | 
						||
| 
								 | 
							
								        case '2':
							 | 
						||
| 
								 | 
							
								          dashboardRoute.redirect = dashboardRoute.path + '/' + dashboardRoute.children[1].path;
							 | 
						||
| 
								 | 
							
								          menu = [dashboardRoute, authRoute, levelRoute, linkRoute];
							 | 
						||
| 
								 | 
							
								          break;
							 | 
						||
| 
								 | 
							
								        default:
							 | 
						||
| 
								 | 
							
								          menu = [];
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return resultSuccess(menu);
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								] as MockMethod[];
							 |