pansl 1 year ago
parent
commit
e0ef795aaf
2 changed files with 28 additions and 20 deletions
  1. 1 19
      src/layout/components/Menu/index.vue
  2. 27 1
      src/layout/components/header/index.vue

+ 1 - 19
src/layout/components/Menu/index.vue

@@ -5,8 +5,7 @@ import MenuItem from './item.vue'
 import menus from './menus.vue'
 import menus from './menus.vue'
 import { useUserStore } from '@/stores/modules/user'
 import { useUserStore } from '@/stores/modules/user'
 import { Menu } from '@/types/Menu'
 import { Menu } from '@/types/Menu'
-import { Router, RouteRecordRaw } from 'vue-router';
-import { useRouter, useRoute } from 'vue-router'
+import { useRouter, useRoute, Router, RouteRecordRaw } from 'vue-router'
 
 
 /**
 /**
  * 递归渲染 Menu 节点
  * 递归渲染 Menu 节点
@@ -116,23 +115,6 @@ export default defineComponent({
       immediate: true,
       immediate: true,
       deep: true
       deep: true
     })
     })
-    // 挂载路由(实际是从后端获取用户的权限)
-    // 动态路由挂载
-    // 挂载路由(实际是从后端获取用户的权限)
-    const router = useRouter()
-    const permissionStore = usePermissionsStore();
-    const asyncRoutes = permissionStore.getAsyncMenusFrom(
-      toRaw(userStore.getPermissions),
-      true
-    );
-    asyncRoutes.forEach((route: Menu) => {
-      router.addRoute(route as unknown as RouteRecordRaw);
-    });
-    // 在动态路由之后挂载匹配 404 路由
-    router.addRoute({
-      path: '/:pathMatch(.*)*',
-      redirect: '/404'
-    });
 
 
     return () => {
     return () => {
       return h(
       return h(

+ 27 - 1
src/layout/components/header/index.vue

@@ -45,12 +45,16 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import { useAppStore } from '@/stores/modules/app'
 import { useAppStore } from '@/stores/modules/app'
 import { advertiserListAdvertiser } from '@/api/advertiser/index'
 import { advertiserListAdvertiser } from '@/api/advertiser/index'
+import { toRaw } from 'vue';
+import { Router, RouteRecordRaw } from 'vue-router';
 import Notification from './notification.vue'
 import Notification from './notification.vue'
 import MenuSearch from './menuSearch.vue'
 import MenuSearch from './menuSearch.vue'
 import MenuSelect from './menuSelect.vue'
 import MenuSelect from './menuSelect.vue'
 import { useUserStore } from '@/stores/modules/user/index'
 import { useUserStore } from '@/stores/modules/user/index'
+import { usePermissionsStore } from '@/stores/modules/user/permissions';
 import Cache from '@/support/cache';
 import Cache from '@/support/cache';
-import router from '@/router'
+import { Menu } from '@/types/Menu';
+// import router from '@/router'
 const store = useAppStore()
 const store = useAppStore()
 const miniPrograms = ref([])
 const miniPrograms = ref([])
 const navData = ref({})
 const navData = ref({})
@@ -58,6 +62,7 @@ const navDataArr = ref([])
 const searchMenuVisiable = ref(false)
 const searchMenuVisiable = ref(false)
 const isAdverDisabled = ref(false)
 const isAdverDisabled = ref(false)
 const userStore = useUserStore()
 const userStore = useUserStore()
+const router = useRouter()
 const adverChange = (e) => {
 const adverChange = (e) => {
   console.log(e, 'userStore', userStore.roles, navData.value, 'navData.value');
   console.log(e, 'userStore', userStore.roles, navData.value, 'navData.value');
   navData.value.app = ''
   navData.value.app = ''
@@ -110,6 +115,27 @@ const initPer = () => {
     userStore.setStatus(status);
     userStore.setStatus(status);
     userStore.setAvatar(avatar);
     userStore.setAvatar(avatar);
     userStore.setPermissions(permissions);
     userStore.setPermissions(permissions);
+
+    // 挂载路由(实际是从后端获取用户的权限)
+    // 动态路由挂载
+    // 挂载路由(实际是从后端获取用户的权限)
+    const timer = setTimeout(() => {
+      const permissionStore = usePermissionsStore();
+      const asyncRoutes = permissionStore.getAsyncMenusFrom(
+        toRaw(userStore.getPermissions),
+        true
+      );
+      asyncRoutes.forEach((route: Menu) => {
+        router.addRoute(route as unknown as RouteRecordRaw);
+      });
+      // 在动态路由之后挂载匹配 404 路由
+      router.addRoute({
+        path: '/:pathMatch(.*)*',
+        redirect: '/404'
+      });
+      clearTimeout(timer)
+    }, 50);
+
   })
   })
 }
 }