391 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			391 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
| export interface UserInfo {
 | |
|   id: number;
 | |
|   password: string;
 | |
|   realName: string;
 | |
|   roles: string[];
 | |
|   username: string;
 | |
|   homePath?: string;
 | |
| }
 | |
| 
 | |
| export const MOCK_USERS: UserInfo[] = [
 | |
|   {
 | |
|     id: 0,
 | |
|     password: '123456',
 | |
|     realName: 'Vben',
 | |
|     roles: ['super'],
 | |
|     username: 'vben',
 | |
|   },
 | |
|   {
 | |
|     id: 1,
 | |
|     password: '123456',
 | |
|     realName: 'Admin',
 | |
|     roles: ['admin'],
 | |
|     username: 'admin',
 | |
|     homePath: '/workspace',
 | |
|   },
 | |
|   {
 | |
|     id: 2,
 | |
|     password: '123456',
 | |
|     realName: 'Jack',
 | |
|     roles: ['user'],
 | |
|     username: 'jack',
 | |
|     homePath: '/analytics',
 | |
|   },
 | |
| ];
 | |
| 
 | |
| export const MOCK_CODES = [
 | |
|   // super
 | |
|   {
 | |
|     codes: ['AC_100100', 'AC_100110', 'AC_100120', 'AC_100010'],
 | |
|     username: 'vben',
 | |
|   },
 | |
|   {
 | |
|     // admin
 | |
|     codes: ['AC_100010', 'AC_100020', 'AC_100030'],
 | |
|     username: 'admin',
 | |
|   },
 | |
|   {
 | |
|     // user
 | |
|     codes: ['AC_1000001', 'AC_1000002'],
 | |
|     username: 'jack',
 | |
|   },
 | |
| ];
 | |
| 
 | |
| const dashboardMenus = [
 | |
|   {
 | |
|     meta: {
 | |
|       order: -1,
 | |
|       title: 'page.dashboard.title',
 | |
|     },
 | |
|     name: 'Dashboard',
 | |
|     path: '/dashboard',
 | |
|     redirect: '/analytics',
 | |
|     children: [
 | |
|       {
 | |
|         name: 'Analytics',
 | |
|         path: '/analytics',
 | |
|         component: '/dashboard/analytics/index',
 | |
|         meta: {
 | |
|           affixTab: true,
 | |
|           title: 'page.dashboard.analytics',
 | |
|         },
 | |
|       },
 | |
|       {
 | |
|         name: 'Workspace',
 | |
|         path: '/workspace',
 | |
|         component: '/dashboard/workspace/index',
 | |
|         meta: {
 | |
|           title: 'page.dashboard.workspace',
 | |
|         },
 | |
|       },
 | |
|     ],
 | |
|   },
 | |
| ];
 | |
| 
 | |
| const createDemosMenus = (role: 'admin' | 'super' | 'user') => {
 | |
|   const roleWithMenus = {
 | |
|     admin: {
 | |
|       component: '/demos/access/admin-visible',
 | |
|       meta: {
 | |
|         icon: 'mdi:button-cursor',
 | |
|         title: 'demos.access.adminVisible',
 | |
|       },
 | |
|       name: 'AccessAdminVisibleDemo',
 | |
|       path: '/demos/access/admin-visible',
 | |
|     },
 | |
|     super: {
 | |
|       component: '/demos/access/super-visible',
 | |
|       meta: {
 | |
|         icon: 'mdi:button-cursor',
 | |
|         title: 'demos.access.superVisible',
 | |
|       },
 | |
|       name: 'AccessSuperVisibleDemo',
 | |
|       path: '/demos/access/super-visible',
 | |
|     },
 | |
|     user: {
 | |
|       component: '/demos/access/user-visible',
 | |
|       meta: {
 | |
|         icon: 'mdi:button-cursor',
 | |
|         title: 'demos.access.userVisible',
 | |
|       },
 | |
|       name: 'AccessUserVisibleDemo',
 | |
|       path: '/demos/access/user-visible',
 | |
|     },
 | |
|   };
 | |
| 
 | |
|   return [
 | |
|     {
 | |
|       meta: {
 | |
|         icon: 'ic:baseline-view-in-ar',
 | |
|         keepAlive: true,
 | |
|         order: 1000,
 | |
|         title: 'demos.title',
 | |
|       },
 | |
|       name: 'Demos',
 | |
|       path: '/demos',
 | |
|       redirect: '/demos/access',
 | |
|       children: [
 | |
|         {
 | |
|           name: 'AccessDemos',
 | |
|           path: '/demosaccess',
 | |
|           meta: {
 | |
|             icon: 'mdi:cloud-key-outline',
 | |
|             title: 'demos.access.backendPermissions',
 | |
|           },
 | |
|           redirect: '/demos/access/page-control',
 | |
|           children: [
 | |
|             {
 | |
|               name: 'AccessPageControlDemo',
 | |
|               path: '/demos/access/page-control',
 | |
|               component: '/demos/access/index',
 | |
|               meta: {
 | |
|                 icon: 'mdi:page-previous-outline',
 | |
|                 title: 'demos.access.pageAccess',
 | |
|               },
 | |
|             },
 | |
|             {
 | |
|               name: 'AccessButtonControlDemo',
 | |
|               path: '/demos/access/button-control',
 | |
|               component: '/demos/access/button-control',
 | |
|               meta: {
 | |
|                 icon: 'mdi:button-cursor',
 | |
|                 title: 'demos.access.buttonControl',
 | |
|               },
 | |
|             },
 | |
|             {
 | |
|               name: 'AccessMenuVisible403Demo',
 | |
|               path: '/demos/access/menu-visible-403',
 | |
|               component: '/demos/access/menu-visible-403',
 | |
|               meta: {
 | |
|                 authority: ['no-body'],
 | |
|                 icon: 'mdi:button-cursor',
 | |
|                 menuVisibleWithForbidden: true,
 | |
|                 title: 'demos.access.menuVisible403',
 | |
|               },
 | |
|             },
 | |
|             roleWithMenus[role],
 | |
|           ],
 | |
|         },
 | |
|       ],
 | |
|     },
 | |
|   ];
 | |
| };
 | |
| 
 | |
| export const MOCK_MENUS = [
 | |
|   {
 | |
|     menus: [...dashboardMenus, ...createDemosMenus('super')],
 | |
|     username: 'vben',
 | |
|   },
 | |
|   {
 | |
|     menus: [...dashboardMenus, ...createDemosMenus('admin')],
 | |
|     username: 'admin',
 | |
|   },
 | |
|   {
 | |
|     menus: [...dashboardMenus, ...createDemosMenus('user')],
 | |
|     username: 'jack',
 | |
|   },
 | |
| ];
 | |
| 
 | |
| export const MOCK_MENU_LIST = [
 | |
|   {
 | |
|     id: 1,
 | |
|     name: 'Workspace',
 | |
|     status: 1,
 | |
|     type: 'menu',
 | |
|     icon: 'mdi:dashboard',
 | |
|     path: '/workspace',
 | |
|     component: '/dashboard/workspace/index',
 | |
|     meta: {
 | |
|       icon: 'carbon:workspace',
 | |
|       title: 'page.dashboard.workspace',
 | |
|       affixTab: true,
 | |
|       order: 0,
 | |
|     },
 | |
|   },
 | |
|   {
 | |
|     id: 2,
 | |
|     meta: {
 | |
|       icon: 'carbon:settings',
 | |
|       order: 9997,
 | |
|       title: 'system.title',
 | |
|       badge: 'new',
 | |
|       badgeType: 'normal',
 | |
|       badgeVariants: 'primary',
 | |
|     },
 | |
|     status: 1,
 | |
|     type: 'catalog',
 | |
|     name: 'System',
 | |
|     path: '/system',
 | |
|     children: [
 | |
|       {
 | |
|         id: 201,
 | |
|         pid: 2,
 | |
|         path: '/system/menu',
 | |
|         name: 'SystemMenu',
 | |
|         authCode: 'System:Menu:List',
 | |
|         status: 1,
 | |
|         type: 'menu',
 | |
|         meta: {
 | |
|           icon: 'carbon:menu',
 | |
|           title: 'system.menu.title',
 | |
|         },
 | |
|         component: '/system/menu/list',
 | |
|         children: [
 | |
|           {
 | |
|             id: 20_101,
 | |
|             pid: 201,
 | |
|             name: 'SystemMenuCreate',
 | |
|             status: 1,
 | |
|             type: 'button',
 | |
|             authCode: 'System:Menu:Create',
 | |
|             meta: { title: 'common.create' },
 | |
|           },
 | |
|           {
 | |
|             id: 20_102,
 | |
|             pid: 201,
 | |
|             name: 'SystemMenuEdit',
 | |
|             status: 1,
 | |
|             type: 'button',
 | |
|             authCode: 'System:Menu:Edit',
 | |
|             meta: { title: 'common.edit' },
 | |
|           },
 | |
|           {
 | |
|             id: 20_103,
 | |
|             pid: 201,
 | |
|             name: 'SystemMenuDelete',
 | |
|             status: 1,
 | |
|             type: 'button',
 | |
|             authCode: 'System:Menu:Delete',
 | |
|             meta: { title: 'common.delete' },
 | |
|           },
 | |
|         ],
 | |
|       },
 | |
|       {
 | |
|         id: 202,
 | |
|         pid: 2,
 | |
|         path: '/system/dept',
 | |
|         name: 'SystemDept',
 | |
|         status: 1,
 | |
|         type: 'menu',
 | |
|         authCode: 'System:Dept:List',
 | |
|         meta: {
 | |
|           icon: 'carbon:container-services',
 | |
|           title: 'system.dept.title',
 | |
|         },
 | |
|         component: '/system/dept/list',
 | |
|         children: [
 | |
|           {
 | |
|             id: 20_401,
 | |
|             pid: 201,
 | |
|             name: 'SystemDeptCreate',
 | |
|             status: 1,
 | |
|             type: 'button',
 | |
|             authCode: 'System:Dept:Create',
 | |
|             meta: { title: 'common.create' },
 | |
|           },
 | |
|           {
 | |
|             id: 20_402,
 | |
|             pid: 201,
 | |
|             name: 'SystemDeptEdit',
 | |
|             status: 1,
 | |
|             type: 'button',
 | |
|             authCode: 'System:Dept:Edit',
 | |
|             meta: { title: 'common.edit' },
 | |
|           },
 | |
|           {
 | |
|             id: 20_403,
 | |
|             pid: 201,
 | |
|             name: 'SystemDeptDelete',
 | |
|             status: 1,
 | |
|             type: 'button',
 | |
|             authCode: 'System:Dept:Delete',
 | |
|             meta: { title: 'common.delete' },
 | |
|           },
 | |
|         ],
 | |
|       },
 | |
|     ],
 | |
|   },
 | |
|   {
 | |
|     id: 9,
 | |
|     meta: {
 | |
|       badgeType: 'dot',
 | |
|       order: 9998,
 | |
|       title: 'demos.vben.title',
 | |
|       icon: 'carbon:data-center',
 | |
|     },
 | |
|     name: 'Project',
 | |
|     path: '/vben-admin',
 | |
|     type: 'catalog',
 | |
|     status: 1,
 | |
|     children: [
 | |
|       {
 | |
|         id: 901,
 | |
|         pid: 9,
 | |
|         name: 'VbenDocument',
 | |
|         path: '/vben-admin/document',
 | |
|         component: 'IFrameView',
 | |
|         type: 'embedded',
 | |
|         status: 1,
 | |
|         meta: {
 | |
|           icon: 'carbon:book',
 | |
|           iframeSrc: 'https://doc.vben.pro',
 | |
|           title: 'demos.vben.document',
 | |
|         },
 | |
|       },
 | |
|       {
 | |
|         id: 902,
 | |
|         pid: 9,
 | |
|         name: 'VbenGithub',
 | |
|         path: '/vben-admin/github',
 | |
|         component: 'IFrameView',
 | |
|         type: 'link',
 | |
|         status: 1,
 | |
|         meta: {
 | |
|           icon: 'carbon:logo-github',
 | |
|           link: 'https://github.com/vbenjs/vue-vben-admin',
 | |
|           title: 'Github',
 | |
|         },
 | |
|       },
 | |
|       {
 | |
|         id: 903,
 | |
|         pid: 9,
 | |
|         name: 'VbenAntdv',
 | |
|         path: '/vben-admin/antdv',
 | |
|         component: 'IFrameView',
 | |
|         type: 'link',
 | |
|         status: 0,
 | |
|         meta: {
 | |
|           icon: 'carbon:hexagon-vertical-solid',
 | |
|           badgeType: 'dot',
 | |
|           link: 'https://ant.vben.pro',
 | |
|           title: 'demos.vben.antdv',
 | |
|         },
 | |
|       },
 | |
|     ],
 | |
|   },
 | |
|   {
 | |
|     id: 10,
 | |
|     component: '_core/about/index',
 | |
|     type: 'menu',
 | |
|     status: 1,
 | |
|     meta: {
 | |
|       icon: 'lucide:copyright',
 | |
|       order: 9999,
 | |
|       title: 'demos.vben.about',
 | |
|     },
 | |
|     name: 'About',
 | |
|     path: '/about',
 | |
|   },
 | |
| ];
 | |
| 
 | |
| export function getMenuIds(menus: any[]) {
 | |
|   const ids: number[] = [];
 | |
|   menus.forEach((item) => {
 | |
|     ids.push(item.id);
 | |
|     if (item.children && item.children.length > 0) {
 | |
|       ids.push(...getMenuIds(item.children));
 | |
|     }
 | |
|   });
 | |
|   return ids;
 | |
| }
 |