Browse Source

看板首页布局

chaooo 2 years ago
parent
commit
c16b77ee0d
2 changed files with 95 additions and 163 deletions
  1. 1 78
      src/router/index.ts
  2. 94 85
      src/store/modules/permission.ts

+ 1 - 78
src/router/index.ts

@@ -11,92 +11,15 @@ export const constantRoutes: RouteRecordRaw[] = [
     children: [
       {
         path: "/redirect/:path(.*)",
-        component: () => import("@/views/redirect/index.vue"),
+        component: () => import("@/views/login/redirect.vue"),
       },
     ],
   },
-
   {
     path: "/login",
     component: () => import("@/views/login/index.vue"),
     meta: { hidden: true },
   },
-
-  // {
-  //   path: "/",
-  //   component: Layout,
-  //   redirect: "/dashboard",
-  //   children: [
-  //     {
-  //       path: "dashboard",
-  //       component: () => import("@/views/dashboard/school.vue"),
-  //       name: "Dashboard",
-  //       meta: { title: "dashboard", icon: "homepage", affix: true },
-  //     },
-  //     {
-  //       path: "401",
-  //       component: () => import("@/views/error-page/401.vue"),
-  //       meta: { hidden: true },
-  //     },
-  //     {
-  //       path: "404",
-  //       component: () => import("@/views/error-page/404.vue"),
-  //       meta: { hidden: true },
-  //     },
-  //   ],
-  // },
-
-  // 外部链接
-  /*{
-        path: '/external-link',
-        component: Layout,
-        children: [
-            {
-                path: 'https://www.cnblogs.com/haoxianrui/',
-                meta: { title: '外部链接', icon: 'link' }
-            }
-        ]
-    }*/
-  // 多级嵌套路由
-  /* {
-         path: '/nested',
-         component: Layout,
-         redirect: '/nested/level1/level2',
-         name: 'Nested',
-         meta: {title: '多级菜单', icon: 'nested'},
-         children: [
-             {
-                 path: 'level1',
-                 component: () => import('@/views/nested/level1/school.vue'),
-                 name: 'Level1',
-                 meta: {title: '菜单一级'},
-                 redirect: '/nested/level1/level2',
-                 children: [
-                     {
-                         path: 'level2',
-                         component: () => import('@/views/nested/level1/level2/school.vue'),
-                         name: 'Level2',
-                         meta: {title: '菜单二级'},
-                         redirect: '/nested/level1/level2/level3',
-                         children: [
-                             {
-                                 path: 'level3-1',
-                                 component: () => import('@/views/nested/level1/level2/level3/index1.vue'),
-                                 name: 'Level3-1',
-                                 meta: {title: '菜单三级-1'}
-                             },
-                             {
-                                 path: 'level3-2',
-                                 component: () => import('@/views/nested/level1/level2/level3/index2.vue'),
-                                 name: 'Level3-2',
-                                 meta: {title: '菜单三级-2'}
-                             }
-                         ]
-                     }
-                 ]
-             },
-         ]
-     }*/
 ];
 
 /**

+ 94 - 85
src/store/modules/permission.ts

@@ -8,59 +8,69 @@ const modules = import.meta.glob("../../views/**/**.vue");
 const Layout = () => import("@/layout/school.vue");
 const Admin = () => import("@/layout/admin.vue");
 // 角色【后台管理员】拥有的权限路由
-const schoolRoutes: RouteRecordRaw[] = JSON.parse(JSON.stringify([
-	{
-		path: "/",
-		component: "AdminIndex",
-		redirect: "/area",
-		children: [
-			{
-				path: "area",
-				component: "area/index",
-				meta: { title: "区域级数据看板", icon: "homepage", keepAlive: true },
-			},
-		]
-	}
-]));
+const schoolRoutes: RouteRecordRaw[] = JSON.parse(
+  JSON.stringify([
+    {
+      path: "/",
+      component: "AdminIndex",
+      redirect: "/area",
+      children: [
+        {
+          path: "area",
+          component: "area/index",
+          meta: { title: "区域级数据看板", icon: "homepage", keepAlive: true },
+        },
+      ],
+    },
+  ])
+);
 // 角色【学校负责人】拥有的权限路由
-const adminRoutes: RouteRecordRaw[] = JSON.parse(JSON.stringify([
-	{
-		path: "/",
-		component: "SchoolIndex",
-		redirect: "/dashboard",
-		children: [
-			{
-				path: "dashboard",
-				component: "dashboard",
-				meta: { title: "数据看板", icon: "homepage", keepAlive: true },
-			},{
-				path: "class",
-				component: "class",
-				meta: { title: "班级管理", icon: "menu", keepAlive: true },
-			},{
-				path: "teacher",
-				component: "teacher",
-				meta: { title: "教师管理", icon: "menu", keepAlive: true },
-			},{
-				path: "student",
-				component: "student",
-				meta: { title: "学生管理", icon: "menu", keepAlive: true },
-			},{
-				path: "equipment",
-				component: "equipment",
-				meta: { title: "设备管理", icon: "menu", keepAlive: true },
-			},{
-				path: "training",
-				component: "training",
-				meta: { title: "训练管理", icon: "menu", keepAlive: true },
-			},{
-				path: "board",
-				component: "board",
-				meta: { title: "测评数据看板", icon: "menu", keepAlive: true },
-			},
-		]
-	},
-]));
+const adminRoutes: RouteRecordRaw[] = JSON.parse(
+  JSON.stringify([
+    {
+      path: "/",
+      component: "SchoolIndex",
+      redirect: "/dashboard",
+      children: [
+        {
+          path: "dashboard",
+          component: "dashboard",
+          meta: { title: "数据看板", icon: "homepage", keepAlive: true },
+        },
+        {
+          path: "class",
+          component: "class",
+          meta: { title: "班级管理", icon: "menu", keepAlive: true },
+        },
+        {
+          path: "teacher",
+          component: "teacher",
+          meta: { title: "教师管理", icon: "menu", keepAlive: true },
+        },
+        {
+          path: "student",
+          component: "student",
+          meta: { title: "学生管理", icon: "menu", keepAlive: true },
+        },
+        {
+          path: "equipment",
+          component: "equipment",
+          meta: { title: "设备管理", icon: "menu", keepAlive: true },
+        },
+        {
+          path: "training",
+          component: "training",
+          meta: { title: "训练管理", icon: "menu", keepAlive: true },
+        },
+        {
+          path: "board",
+          component: "board",
+          meta: { title: "测评数据看板", icon: "menu", keepAlive: true },
+        },
+      ],
+    },
+  ])
+);
 /**
  * 递归过滤有权限的异步(动态)路由
  *
@@ -74,26 +84,25 @@ const filterAsyncRoutes = (routes: RouteRecordRaw[], roles: string[]) => {
   routes.forEach((route) => {
     const tmpRoute = { ...route }; // ES6扩展运算符复制新对象
 
-	if (tmpRoute.component?.toString() == "SchoolIndex") {
-		tmpRoute.component = Layout;
-		console.log("SchoolIndex");
-	} else if (tmpRoute.component?.toString() == "AdminIndex") {
-		console.log("AdminIndex");
-	}
-	else {
-		const component = modules[`../../views/${tmpRoute.component}/index.vue`];
-		if (component) {
-		  tmpRoute.component = component;
-		} else {
-		  tmpRoute.component = modules[`../../views/error-page/404.vue`];
-		}
-	}
+    if (tmpRoute.component?.toString() == "SchoolIndex") {
+      tmpRoute.component = Layout;
+      console.log("SchoolIndex");
+    } else if (tmpRoute.component?.toString() == "AdminIndex") {
+      console.log("AdminIndex");
+    } else {
+      const component = modules[`../../views/${tmpRoute.component}/index.vue`];
+      if (component) {
+        tmpRoute.component = component;
+      } else {
+        tmpRoute.component = modules[`../../views/error-page/404.vue`];
+      }
+    }
 
-	if (tmpRoute.children) {
-		tmpRoute.children = filterAsyncRoutes(tmpRoute.children, roles);
-	}
+    if (tmpRoute.children) {
+      tmpRoute.children = filterAsyncRoutes(tmpRoute.children, roles);
+    }
 
-	asyncRoutes.push(tmpRoute);
+    asyncRoutes.push(tmpRoute);
   });
 
   return asyncRoutes;
@@ -116,21 +125,21 @@ export const usePermissionStore = defineStore("permission", () => {
    */
   function generateRoutes(roles: string[]) {
     return new Promise<RouteRecordRaw[]>((resolve, reject) => {
-		// 角色【后台管理员】拥有权限
-		if (roles.includes("ADMIN")) {
-			// 根据角色获取有访问权限的路由
-			const accessedRoutes = filterAsyncRoutes(adminRoutes, roles);
-			setRoutes(accessedRoutes);
-			resolve(accessedRoutes);
-		}
-		// 角色【学校负责人】拥有权限
-		else if (roles.includes("SCHOOL")){
-			const accessedRoutes = filterAsyncRoutes(schoolRoutes, roles);
-			setRoutes(accessedRoutes);
-			resolve(accessedRoutes);
-		} else {
-			reject("没有访问权限");
-		}
+      // 角色【后台管理员】拥有权限
+      if (roles.includes("ADMIN")) {
+        // 根据角色获取有访问权限的路由
+        const accessedRoutes = filterAsyncRoutes(adminRoutes, roles);
+        setRoutes(accessedRoutes);
+        resolve(accessedRoutes);
+      }
+      // 角色【学校负责人】拥有权限
+      else if (roles.includes("SCHOOL")) {
+        const accessedRoutes = filterAsyncRoutes(schoolRoutes, roles);
+        setRoutes(accessedRoutes);
+        resolve(accessedRoutes);
+      } else {
+        reject("没有访问权限");
+      }
     });
   }
   return { routes, setRoutes, generateRoutes };