238 lines
6.5 KiB
JavaScript
238 lines
6.5 KiB
JavaScript
// 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: '论坛帖子详细内容'
|
|
}
|
|
},
|
|
{
|
|
path: 'value-forum/prediction/:topicId',
|
|
component: lazyComponents.PredictionTopicDetail,
|
|
protection: PROTECTION_MODES.MODAL,
|
|
layout: 'main',
|
|
meta: {
|
|
title: '预测话题详情',
|
|
description: '预测市场话题详细信息'
|
|
}
|
|
},
|
|
{
|
|
path: 'value-forum/my-points',
|
|
component: lazyComponents.ForumMyPoints,
|
|
protection: PROTECTION_MODES.MODAL,
|
|
layout: 'main',
|
|
meta: {
|
|
title: '我的积分',
|
|
description: '价值论坛积分账户'
|
|
}
|
|
},
|
|
|
|
// ==================== Agent模块 ====================
|
|
{
|
|
path: 'agent-chat',
|
|
component: lazyComponents.AgentChat,
|
|
protection: PROTECTION_MODES.MODAL,
|
|
layout: 'main', // 使用主布局(带导航栏)
|
|
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);
|
|
}
|