271 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			271 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import { resultSuccess, resultError, getRequestToken, requestParams, baseUrl } from '../_util';
 | |
| import { MockMethod } from 'vite-plugin-mock';
 | |
| import { createFakeUserList } from './user';
 | |
| 
 | |
| // single
 | |
| const dashboardRoute = {
 | |
|   path: '/dashboard',
 | |
|   name: 'Dashboard',
 | |
|   component: 'LAYOUT',
 | |
|   redirect: '/dashboard/analysis',
 | |
|   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[];
 |