- 401 自动登出:http 会话过期回调 + main.ts 注册(清 menu/tabs + 跳登录) - 参数配置/字典/组织/资源/角色/操作日志/登录日志对接真实接口 - 角色管理新增权限分配树(el-tree 勾选资源,/roles/:code/resources) - 操作日志/登录日志只读页(ty-search-form + ty-table + useRequest) - listOrgs 迁到 api/org.ts Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
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 { Env } from '@/utils/env.ts'
|
||
import { installI18n } from '@/i18n'
|
||
import { setAuthExpiredHandler } from '@/api/http'
|
||
import { useMenuStore } from '@/stores/modules/menu'
|
||
import { useTabsStore } from '@/stores/modules/tabs'
|
||
|
||
const app = createApp(App)
|
||
|
||
installRouter(app)
|
||
installStore(app)
|
||
|
||
// 会话过期(401 刷新失败)时:清状态 + 跳登录
|
||
setAuthExpiredHandler(() => {
|
||
useMenuStore(pinia).reset()
|
||
useTabsStore(pinia).removeAll()
|
||
if (router.currentRoute.value.path !== '/login') {
|
||
router.push('/login')
|
||
}
|
||
})
|
||
|
||
installI18n(app)
|
||
installAssets()
|
||
|
||
// 获取当前模式
|
||
const currentMode = import.meta.env.MODE
|
||
console.log('当前模式:', currentMode) // 输出: development, uat 或 production
|
||
console.log('VITE_APP_NAME: ', Env.get('VITE_APP_NAME'))
|
||
console.log('VITE_NUMBER_DEMO: ', Env.getNumber('VITE_NUMBER_DEMO'))
|
||
console.log('VITE_BOOLEAN_DEMO: ', Env.getBoolean('VITE_BOOLEAN_DEMO'))
|
||
console.log('isDev', Env.isDev)
|
||
console.log('isUat', Env.isUat)
|
||
console.log('isProd', Env.isProd)
|
||
|
||
app.mount('#app')
|