import { createApp } from 'vue' import 'element-plus/theme-chalk/dark/css-vars.css' import App from './App.vue' import router, { installRouter } from './router' import pinia, { installStore } from '@/stores' import { installAssets } from '@/plugins/assets' import { installI18n } from '@/i18n' import { setAuthExpiredHandler } from '@/api/http' import { useAuthStore } from '@/stores/modules/auth' import { useMenuStore } from '@/stores/modules/menu' import { useDictStore } from '@/stores/modules/dict' import { usePermissionStore } from '@/stores/modules/permission' import { useTabsStore } from '@/stores/modules/tabs' import { vPermission } from '@/directives/permission' const app = createApp(App) app.directive('permission', vPermission) installRouter(app) installStore(app) // 会话过期(401 刷新失败)时:清状态 + 跳登录 setAuthExpiredHandler(() => { useAuthStore(pinia).reset() useMenuStore(pinia).reset() useDictStore(pinia).reset() usePermissionStore(pinia).reset() useTabsStore(pinia).removeAll() if (router.currentRoute.value.path !== '/login') { router.push('/login') } }) installI18n(app) installAssets() app.mount('#app')