houzhongjian
2024-12-13 eeddc808a8d6428bfd1c2d6e21e4a71f5e9bdbef
src/layout/components/Logo/src/Logo.vue
@@ -1,7 +1,17 @@
<script lang="ts" setup>
import { computed, onMounted, ref, unref, watch } from 'vue'
import { useAppStore } from '@/store/modules/app'
import { useUserStoreWithOut } from '@/store/modules/user'
import { usePermissionStoreWithOut } from '@/store/modules/permission'
import { useDesign } from '@/hooks/web/useDesign'
import {isRelogin} from "@/config/axios/service";
import router from "@/router";
import type {RouteRecordRaw} from "vue-router";
import {CACHE_KEY, useCache, useSessionCache} from "@/hooks/web/useCache";
import {getAccessToken} from "@/utils/auth";
import {getInfo} from "@/api/login";
const { wsCache } = useCache()
const { wsSessionCache } = useSessionCache()
defineOptions({ name: 'Logo' })
@@ -13,11 +23,15 @@
const show = ref(true)
const homePath = ref('/index')
const title = computed(() => appStore.getTitle)
const layout = computed(() => appStore.getLayout)
const collapse = computed(() => appStore.getCollapse)
homePath.value = '/index'
onMounted(() => {
  if (unref(collapse)) show.value = false
@@ -54,6 +68,22 @@
    }
  }
)
/** 刷新所有菜单权限 */
const gotoHome = async () => {
  const permissionStore = usePermissionStoreWithOut()
  isRelogin.show = true
  let userInfo = await getInfo()
  wsCache.set(CACHE_KEY.USER, userInfo)
  wsSessionCache.set(CACHE_KEY.ROLE_ROUTERS, userInfo.menus)
  isRelogin.show = false
  // 后端过滤菜单
  await permissionStore.generateRoutes()
  permissionStore.getAddRouters.forEach((route) => {
    router.addRoute(route as unknown as RouteRecordRaw) // 动态添加可访问路由表
  })
}
</script>
<template>
@@ -64,7 +94,8 @@
        layout !== 'classic' ? `${prefixCls}__Top` : '',
        'flex !h-[var(--logo-height)] items-center cursor-pointer pl-8px relative decoration-none overflow-hidden'
      ]"
      to="/"
      @click="gotoHome"
      :to="homePath"
    >
      <img
        class="h-[calc(var(--logo-height)-10px)] w-[calc(var(--logo-height)-10px)]"