// src/routes/routeConfig.js // 声明式路由配置 import { lazyComponents } from './lazy-components'; import { homeRoutes } from './homeRoutes'; import { PROTECTION_MODES } from './constants/protectionModes'; // 重新导出 PROTECTION_MODES 以保持向后兼容 export { PROTECTION_MODES }; /** * 路由配置 * 每个路由对象包含: * - path: 路由路径 * - component: 组件(从 lazyComponents 引用,或设为 null 使用 Outlet) * - protection: 保护模式 (modal/redirect/public) * - layout: 布局类型 (main/auth/none) * - children: 子路由配置数组(可选,用于嵌套路由) * - meta: 路由元数据(可选,用于面包屑、标题等) */ export const routeConfig = [ // ==================== 首页 ==================== { path: 'home', component: null, // 使用 Outlet 渲染子路由 protection: PROTECTION_MODES.PUBLIC, layout: 'main', children: homeRoutes, // 子路由配置 meta: { title: '首页', description: '价值前沿首页' } }, // ==================== 社区/内容模块 ==================== { path: 'community', component: lazyComponents.Community, protection: PROTECTION_MODES.MODAL, layout: 'main', meta: { title: '社区', description: '投资社区交流' } }, { path: 'concepts', component: lazyComponents.ConceptCenter, protection: PROTECTION_MODES.MODAL, layout: 'main', meta: { title: '概念中心', description: '热门概念追踪' } }, { path: 'stocks', component: lazyComponents.StockOverview, protection: PROTECTION_MODES.MODAL, layout: 'main', meta: { title: '股票概览', description: '全市场股票概览' } }, { path: 'limit-analyse', component: lazyComponents.LimitAnalyse, protection: PROTECTION_MODES.MODAL, layout: 'main', meta: { title: '涨停分析', description: '涨停板数据分析' } }, // ==================== 交易模块 ==================== { path: 'trading-simulation', component: lazyComponents.TradingSimulation, protection: PROTECTION_MODES.MODAL, layout: 'main', meta: { title: '模拟交易', description: '模拟盘交易系统' } }, // ==================== 事件模块 ==================== { path: 'event-detail/:eventId', component: lazyComponents.EventDetail, protection: PROTECTION_MODES.REDIRECT, layout: 'main', meta: { title: '事件详情', description: '事件详细信息' } }, // ==================== 公司相关模块 ==================== { path: 'forecast-report', component: lazyComponents.ForecastReport, protection: PROTECTION_MODES.MODAL, layout: 'main', meta: { title: '财报预测', description: '上市公司财报预测' } }, { path: 'financial', component: lazyComponents.FinancialPanorama, protection: PROTECTION_MODES.MODAL, layout: 'main', meta: { title: '财务全景', description: '公司财务全景分析' } }, { path: 'company', component: lazyComponents.CompanyIndex, protection: PROTECTION_MODES.MODAL, layout: 'main', meta: { title: '公司', description: '上市公司信息' } }, { path: 'company/:code', component: lazyComponents.CompanyIndex, protection: PROTECTION_MODES.REDIRECT, layout: 'main', meta: { title: '公司详情', description: '公司详细信息' } }, { path: 'market-data', component: lazyComponents.MarketDataView, protection: PROTECTION_MODES.MODAL, layout: 'main', meta: { title: '市场数据', description: '实时市场数据' } }, ]; /** * 获取所有需要 MainLayout 的路由 */ export function getMainLayoutRoutes() { return routeConfig.filter(route => route.layout === 'main'); } /** * 获取不需要布局的路由 */ export function getStandaloneRoutes() { return routeConfig.filter(route => route.layout === 'none'); } /** * 根据路径查找路由配置 */ export function findRouteByPath(path) { return routeConfig.find(route => route.path === path); }