Эх сурвалжийг харах

feat: 🎸 权限管理开发中

kailong321200875 4 жил өмнө
parent
commit
38f521174b

+ 1 - 6
babel.config.js

@@ -14,10 +14,5 @@ module.exports = {
         'styleLibraryName': 'theme-chalk'
       }
     ]
-  ],
-  'env': {
-    'development': {
-      'plugins': ['dynamic-import-node']
-    }
-  }
+  ]
 }

+ 42 - 29
mock/role/test-role.ts

@@ -1,4 +1,5 @@
-export const checkedRoleNodes = [{
+export const checkedRoleNodes = [
+  {
     path: '/components-demo',
     component: '#',
     redirect: '/components-demo/echarts',
@@ -8,7 +9,8 @@ export const checkedRoleNodes = [{
       icon: 'component',
       alwaysShow: true
     },
-    children: [{
+    children: [
+      {
         path: 'echarts',
         component: 'pages/index/views/components-demo/echarts/index.vue',
         name: 'EchartsDemo',
@@ -281,14 +283,16 @@ export const checkedRoleNodes = [{
       icon: 'clipboard',
       alwaysShow: true
     },
-    children: [{
-      path: 'clipboard',
-      component: 'pages/index/views/directives-demo/clipboard/index.vue',
-      name: 'ClipboardDemo',
-      meta: {
-        title: 'Clipboard'
+    children: [
+      {
+        path: 'clipboard',
+        component: 'pages/index/views/directives-demo/clipboard/index.vue',
+        name: 'ClipboardDemo',
+        meta: {
+          title: 'Clipboard'
+        }
       }
-    }]
+    ]
   },
   {
     path: '/hooks-demo',
@@ -300,7 +304,8 @@ export const checkedRoleNodes = [{
       icon: 'international',
       alwaysShow: true
     },
-    children: [{
+    children: [
+      {
         path: 'watermark',
         component: 'pages/index/views/hooks-demo/useWatermark/index.vue',
         name: 'UseWatermarkDemo',
@@ -326,15 +331,17 @@ export const checkedRoleNodes = [{
       title: '图标',
       icon: 'icon'
     },
-    children: [{
-      path: 'index',
-      component: 'pages/index/views/icons/index.vue',
-      name: 'Icons',
-      meta: {
-        title: '图标',
-        icon: 'icon'
+    children: [
+      {
+        path: 'index',
+        component: 'pages/index/views/icons/index.vue',
+        name: 'Icons',
+        meta: {
+          title: '图标',
+          icon: 'icon'
+        }
       }
-    }]
+    ]
   },
   {
     path: '/level',
@@ -345,7 +352,8 @@ export const checkedRoleNodes = [{
       title: '多级菜单缓存',
       icon: 'nested'
     },
-    children: [{
+    children: [
+      {
         path: 'menu1',
         name: 'Menu1Demo',
         component: '##Menu1Demo',
@@ -353,7 +361,8 @@ export const checkedRoleNodes = [{
         meta: {
           title: 'Menu1'
         },
-        children: [{
+        children: [
+          {
             path: 'menu1-1',
             name: 'Menu11Demo',
             component: '##Menu11Demo',
@@ -362,14 +371,16 @@ export const checkedRoleNodes = [{
               title: 'Menu1-1',
               alwaysShow: true
             },
-            children: [{
-              path: 'menu1-1-1',
-              name: 'Menu111Demo',
-              component: 'pages/index/views/level/Menu111.vue',
-              meta: {
-                title: 'Menu1-1-1'
+            children: [
+              {
+                path: 'menu1-1-1',
+                name: 'Menu111Demo',
+                component: 'pages/index/views/level/Menu111.vue',
+                meta: {
+                  title: 'Menu1-1-1'
+                }
               }
-            }]
+            ]
           },
           {
             path: 'menu1-2',
@@ -401,7 +412,8 @@ export const checkedRoleNodes = [{
       icon: 'example',
       title: '综合实例'
     },
-    children: [{
+    children: [
+      {
         path: 'example-dialog',
         component: 'pages/index/views/example-demo/example-dialog/index.vue',
         name: 'ExampleDialog',
@@ -468,7 +480,8 @@ export const checkedRoleNodes = [{
       icon: 'user',
       alwaysShow: true
     },
-    children: [{
+    children: [
+      {
         path: 'user',
         component: 'pages/index/views/role-demo/user/index.vue',
         name: 'User',

+ 1 - 0
package.json

@@ -58,6 +58,7 @@
     "@vue/eslint-config-typescript": "^5.0.2",
     "babel-eslint": "^10.1.0",
     "babel-plugin-component": "^1.1.1",
+    "babel-plugin-dynamic-import-node": "^2.3.3",
     "babel-plugin-import": "^1.13.1",
     "body-parser": "^1.19.0",
     "chalk": "^4.1.0",

+ 1 - 0
src/pages/index/permission.ts

@@ -18,6 +18,7 @@ import type { RouteRecordRaw } from 'vue-router'
 
 const whiteList: string[] = ['/login'] // 不重定向白名单
 router.beforeEach((to, from, next) => {
+  NProgress.start()
   if (wsCache.get(appStore.userInfo)) {
     if (to.path === '/login') {
       next({ path: '/' })

+ 2 - 5
src/pages/index/store/modules/permission.ts

@@ -1,4 +1,3 @@
-// import path from 'path'
 import { asyncRouterMap, constantRouterMap } from '_p/index/router'
 import { deepClone } from '@/utils'
 import store from '../index'
@@ -128,16 +127,14 @@ function getFilterRoutes(routes: any[]): any[] {
       name: route.name,
       redirect: route.redirect
     }
-    data.meta = Object.assign({}, route.meta || {}, { title: route.title })
+    data.meta = Object.assign({}, route.meta || {}, { title: route.title || route.meta.title })
     if (route.component) {
       // 动态加载路由文件,可根据实际情况进行自定义逻辑
       data.component = route.component === '#'
         ? Layout
         : (route.component.includes('##')
           ? getParentLayout(route.component.split('##')[1])
-          : () => new Promise((resolve) => {
-            resolve(import(`${route.component}`))
-          }))
+          : () => import(`@/${route.component}`))
     }
     // recursive child routes
     if (route.children) {

+ 0 - 2
src/pages/index/views/role-demo/role/components/InfoWrite2.vue

@@ -81,8 +81,6 @@
 <script lang="ts">
 import { setRoleApi, getRoleDetApi } from '../api'
 import { defineComponent, PropType, ref, reactive, nextTick, unref } from 'vue'
-import { AppRouteRecordRaw } from '_p/index/router/types'
-import { isExternal } from '@/utils/validate'
 import { Message } from '_c/Message'
 
 const requiredRule = {