Files
vf_react/src/routes/routeConfig.js
2025-11-22 11:41:56 +08:00

218 lines
6.0 KiB
JavaScript
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.

// 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: 'data-browser',
component: lazyComponents.DataBrowser,
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: '实时市场数据'
}
},
// ==================== 价值论坛模块 ====================
{
path: 'value-forum',
component: lazyComponents.ValueForum,
protection: PROTECTION_MODES.MODAL,
layout: 'main',
meta: {
title: '价值论坛',
description: '投资者价值讨论社区'
}
},
{
path: 'value-forum/post/:postId',
component: lazyComponents.ForumPostDetail,
protection: PROTECTION_MODES.MODAL,
layout: 'main',
meta: {
title: '帖子详情',
description: '论坛帖子详细内容'
}
},
// ==================== Agent模块 ====================
{
path: 'agent-chat',
component: lazyComponents.AgentChat,
protection: PROTECTION_MODES.MODAL,
layout: 'none', // 使用独立布局全屏沉浸式体验Hero UI 版本)
meta: {
title: '价小前投研 AI',
description: '超炫酷的 AI 投研聊天助手 - 基于 Hero UI'
}
},
];
/**
* 获取所有需要 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);
}