|
@@ -0,0 +1,390 @@
|
|
|
+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;
|
|
|
+}
|