This commit is contained in:
张成
2025-10-08 16:48:44 +08:00
parent eae1156548
commit 54d4c19cb1
4 changed files with 41 additions and 15 deletions

View File

@@ -117,12 +117,13 @@ class AdminFramework {
* @param {Object} options.VueRouter - VueRouter 实例(可选)
* @param {Object} options.Vuex - Vuex 实例(可选)
* @param {Function} options.createPersistedState - vuex-persistedstate可选
* @param {Object} options.homeRoute - 自定义 home 路由配置(可选,用于覆盖默认 home
*/
install(Vue, options = {}) {
if (this.installed) return
this.installed = true
const { config = {}, ViewUI, VueRouter, Vuex, createPersistedState } = options
const { config = {}, ViewUI, VueRouter, Vuex, createPersistedState, homeRoute } = options
this.config = config
// 自动注册 ViewUI
@@ -158,6 +159,21 @@ class AdminFramework {
// 如果提供了 VueRouter自动创建 Router
if (VueRouter && !this.router) {
// 获取主路由配置(包含 home
const mainRoute = this.getRoutes({ Main, ParentView, Page404 })
// 如果外部提供了自定义 homeRoute合并到主路由的 children 中
if (homeRoute && mainRoute && mainRoute.children) {
// 查找并替换默认的 home 路由
const homeIndex = mainRoute.children.findIndex(route => route.name === 'home')
if (homeIndex !== -1) {
mainRoute.children[homeIndex] = homeRoute
} else {
// 如果没找到,添加到开头
mainRoute.children.unshift(homeRoute)
}
}
this.router = this.createRouter(VueRouter, {
Main,
ParentView,
@@ -165,11 +181,7 @@ class AdminFramework {
Page401,
Page404,
Page500
}, [], ViewUI)
// 自动添加动态路由
const mainRoutes = this.getRoutes({ Main, ParentView, Page404 })
this.router.addRoutes([mainRoutes])
}, mainRoute ? [mainRoute] : [], ViewUI)
}
}

View File

@@ -73,10 +73,6 @@ export default {
let token = res.data.token
let name = res.data.user.name.trim()
if (res.data.shop) {
let shopId = res.data.shop.id
commit('shop/setShopId', shopId, { root: true })
}
commit('setUserName', name)
commit('setToken', token)
@@ -93,9 +89,6 @@ export default {
async handleLogOut({ state, commit }, vue) {
commit('setToken', '')
commit('setAuthorityMenus', '[]')
if (state.shop) {
commit('shop/setShopId', '', { root: true })
}
window.location.reload()
}
}

View File

@@ -175,7 +175,17 @@ export default class uiTool {
redirect: '/home',
component: Main,
meta: { title: '首页', notCache: true },
children: []
children: [
// 默认 home 路由,确保登录后能跳转
{
path: '/home',
name: 'home',
meta: { title: '首页', notCache: true },
component: {
render: h => h('div', { style: { padding: '20px' } }, '欢迎使用管理系统')
}
}
]
}
if (
@@ -188,7 +198,17 @@ export default class uiTool {
let menus = uiTool.transformTree(authorityMenus)
let curRoutes = uiTool.menuToRoute(menus, ParentView, Page404)
// 合并权限路由,保留默认 home 路由
const homeRoute = mainRoute.children.find(r => r.name === 'home')
const hasHome = curRoutes.some(r => r.name === 'home')
if (hasHome) {
// 如果权限路由中有 home使用权限路由的 home
mainRoute.children = curRoutes
} else {
// 如果权限路由中没有 home保留默认 home 并添加其他路由
mainRoute.children = [homeRoute, ...curRoutes]
}
}
}

View File

@@ -151,6 +151,7 @@ window.addEventListener('resize', AdminFramework.uiTool.setRem)
- ✅ 注册 Vuex自动调用 `Vue.use(Vuex)`
- ✅ 创建 Store包含用户、应用模块
- ✅ 创建 Router包含所有基础路由和动态路由
-**提前注册 home 路由**(确保登录后能正常跳转)
- ✅ 初始化 HTTP
- ✅ 设置 API 服务
- ✅ 注册全局组件