main.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import ElementPlus from 'element-plus'
  4. import 'element-plus/dist/index.css'
  5. import * as ElementPlusIconsVue from '@element-plus/icons-vue'
  6. import zhCn from 'element-plus/es/locale/lang/zh-cn'
  7. import router from './router'
  8. import axios from 'axios'
  9. import tokenRefreshManager from './utils/tokenRefreshManager'
  10. import PermissionManager from './utils/permission'
  11. import permissionDirective from './directives/permission'
  12. const app = createApp(App)
  13. app.use(ElementPlus, {
  14. locale: zhCn
  15. })
  16. // 注册所有Element Plus图标
  17. for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  18. app.component(key, component)
  19. }
  20. app.use(router)
  21. // 注册权限指令
  22. app.directive('permission', permissionDirective)
  23. // 配置axios
  24. app.config.globalProperties.$axios = axios
  25. // 设置token刷新回调,刷新时更新权限信息
  26. tokenRefreshManager.setOnTokenRefresh(async (newToken) => {
  27. console.log('Token已刷新,更新权限信息...');
  28. try {
  29. await PermissionManager.initializePermissions(`Bearer ${newToken}`);
  30. console.log('权限信息更新完成');
  31. } catch (error) {
  32. console.error('更新权限信息失败:', error);
  33. }
  34. });
  35. app.mount('#app')