|
|
|
|
// 路由收集器 - 收集前端路由信息
|
|
|
|
|
import router from '@/router'
|
|
|
|
|
import { RouteUtils } from './RouteUtils.js'
|
|
|
|
|
|
|
|
|
|
// 加载生成的路由映射文件
|
|
|
|
|
const generatedMapping = RouteUtils.loadGeneratedMapping()
|
|
|
|
|
|
|
|
|
|
export class RouteCollector {
|
|
|
|
|
constructor() {
|
|
|
|
|
this.routes = []
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 收集所有路由信息
|
|
|
|
|
collectRoutes() {
|
|
|
|
|
this.routes = []
|
|
|
|
|
|
|
|
|
|
// 如果存在生成的路由映射,使用它
|
|
|
|
|
if (generatedMapping && generatedMapping.mainRoutes) {
|
|
|
|
|
console.log('🔧 使用生成的路由映射文件')
|
|
|
|
|
this._collectFromGeneratedMapping()
|
|
|
|
|
} else {
|
|
|
|
|
console.log('🔧 生成的路由映射文件不存在,无法收集路由')
|
|
|
|
|
console.warn('⚠️ 请确保 route-mapping-plugin 已正确生成路由映射文件')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 检查所有路由的模块信息
|
|
|
|
|
console.log('🔍 检查收集到的路由模块信息:')
|
|
|
|
|
this.routes.forEach((route, index) => {
|
|
|
|
|
if (!route.module) {
|
|
|
|
|
console.error(`❌ 路由 ${index} 缺少模块信息:`, route)
|
|
|
|
|
// 尝试重新提取模块信息
|
|
|
|
|
route.module = this._extractModuleFromPath(route.path)
|
|
|
|
|
console.log(`🔧 重新提取模块信息: ${route.path} -> ${route.module}`)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
return this.routes
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 从生成的路由映射收集
|
|
|
|
|
_collectFromGeneratedMapping() {
|
|
|
|
|
if (!generatedMapping || !generatedMapping.mainRoutes) {
|
|
|
|
|
console.warn('⚠️ 生成的路由映射文件无效,无法收集路由')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
console.log('📋 从生成的路由映射收集主入口路由:')
|
|
|
|
|
generatedMapping.mainRoutes.forEach(route => {
|
|
|
|
|
this.routes.push({
|
|
|
|
|
path: route.path,
|
|
|
|
|
name: route.name,
|
|
|
|
|
module: route.module,
|
|
|
|
|
description: route.description,
|
|
|
|
|
type: route.type
|
|
|
|
|
})
|
|
|
|
|
console.log(`✅ 添加主入口路由: ${route.path} -> 模块: ${route.module}`)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 从路径中提取模块名
|
|
|
|
|
_extractModuleFromPath(path) {
|
|
|
|
|
return RouteUtils.extractModuleFromPath(path)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取菜单路由
|
|
|
|
|
getMenuRoutes() {
|
|
|
|
|
return this.routes.filter(route => route.name && route.name !== '')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取操作路由
|
|
|
|
|
getOperationRoutes() {
|
|
|
|
|
return this.routes.filter(route => route.type && route.type !== 'list')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 按模块分组路由
|
|
|
|
|
getRoutesByModule() {
|
|
|
|
|
const grouped = {}
|
|
|
|
|
|
|
|
|
|
this.routes.forEach(route => {
|
|
|
|
|
const module = route.module
|
|
|
|
|
if (!grouped[module]) {
|
|
|
|
|
grouped[module] = []
|
|
|
|
|
}
|
|
|
|
|
grouped[module].push(route)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
return grouped
|
|
|
|
|
}
|
|
|
|
|
}
|