import { createApp } from 'vue' import App from './App.vue' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' import * as ElementPlusIconsVue from '@element-plus/icons-vue' import zhCn from 'element-plus/es/locale/lang/zh-cn' import router from './router' import axios from 'axios' import tokenRefreshManager from './utils/tokenRefreshManager' import PermissionManager from './utils/permission' import permissionDirective from './directives/permission' const app = createApp(App) app.use(ElementPlus, { locale: zhCn }) // 注册所有Element Plus图标 for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) } app.use(router) // 注册权限指令 app.directive('permission', permissionDirective) // 配置axios app.config.globalProperties.$axios = axios // 设置token刷新回调,刷新时更新权限信息 tokenRefreshManager.setOnTokenRefresh(async (newToken) => { console.log('Token已刷新,更新权限信息...'); try { await PermissionManager.initializePermissions(`Bearer ${newToken}`); console.log('权限信息更新完成'); } catch (error) { console.error('更新权限信息失败:', error); } }); app.mount('#app')