ec-admin/src/main.ts
liuyun eff4f8b314 fix: 第二轮残留(前端)
- 移除 config.tenantCode 死配置,注册页加租户输入
- 全局 errorHandler + unhandledrejection 兜底错误提示
- selectTenant 二次登录加 loading
- 路由守卫支持 meta.freeAccess 白名单

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-11 17:22:16 +08:00

50 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { createApp } from 'vue'
import { ElMessage } from 'element-plus'
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()
// 全局兜底:未捕获的组件错误 / Promise 拒绝,统一弹出错误提示(避免静默失败)
app.config.errorHandler = (err) => {
ElMessage.error(err instanceof Error ? err.message : String(err))
}
window.addEventListener('unhandledrejection', (e) => {
const reason = e.reason
ElMessage.error(reason instanceof Error ? reason.message : String(reason))
})
app.mount('#app')