Files
cpms_operation_platform/src/config/fallbackRoutes.ts
T

179 lines
5.4 KiB
TypeScript
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.
import type { MenuNode } from '@/types';
/**
* ====== 兜底路由配置 ======
*
* 当后端菜单接口不可用时,使用此配置作为降级方案。
* 数据格式与后端 `/menu/tree` 接口返回完全一致,
* 因此可以直接通过 transformMenuToRoutes / transformMenuNode 复用同一套处理逻辑。
*
* ## 后端应返回的数组格式示例
*
* ```json
* [
* { "id": "dashboard", "name": "工作台", "path": "dashboard", "component": "dashboard", "icon": "AiOutlineDashboard" },
* {
* "id": "events", "name": "赛事管理", "path": "events", "icon": "AiOutlineTrophy",
* "children": [
* { "id": "events_list", "name": "赛事列表", "path": "events/list", "component": "events/list", "icon": "AiOutlineUnorderedList" }
* ]
* }
* ]
* ```
*
* ### 字段说明
* | 字段 | 类型 | 必填 | 说明 |
* |------|------|------|------|
* | id | number\|string | 是 | 唯一标识 |
* | name | string | 是 | 菜单名称/路由 name |
* | path | string | 是 | 路由相对路径(不带 / 前缀) |
* | component | string | 否 | 组件路径(映射 src/pages/ 下目录,如 "events/list" |
* | icon | string | 否 | vue-icons-plus 图标名(如 AiOutlineTrophy,需在 routeIcon.tsx 注册) |
* | sort | number | 否 | 排序权重(越小越前) |
* | hideInMenu | boolean | 否 | 是否在菜单中隐藏 |
* | externalLink | string | 否 | 外链地址 |
* | activeMenu | string | 否 | 高亮菜单路径 |
* | disabled | boolean | 否 | 禁用标记(禁用后路由不注册、菜单不显示) |
* | permission | string | 否 | 页面查看权限码(如 'events.list.view'),用于动态权限过滤菜单 |
* | children | MenuNode[] | 否 | 子路由 |
*
* ### 关于 routes → menuItems 的转换
* `menuStore.ts` 中的 `transformMenuNode()` 已完成此功能,
* 它将 MenuNode[] 递归转换为 antd Menu 组件所需的 MenuItemRaw[] 格式。
*/
export const FALLBACK_MENU_NODES: MenuNode[] = [
{
id: 'events',
name: '赛事管理',
path: 'events',
icon: 'AiOutlineTrophy',
children: [
{
id: 'events_list',
name: '赛事列表',
path: 'events/list',
component: 'events/list',
componentName: 'EventList',
icon: 'AiOutlineUnorderedList',
permission: 'events.list.view',
},
{
id: 'events_orders',
name: '订单管理',
path: 'events/orders',
component: 'events/orders',
componentName: 'EventOrders',
icon: 'AiOutlineShoppingCart',
permission: 'events.orders.view',
},
{
id: 'events_users',
name: '用户列表',
path: 'events/users',
component: 'events/users',
componentName: 'EventUsers',
icon: 'AiOutlineTeam',
permission: 'events.users.view',
},
{
id: 'events_banner',
name: 'Banner配置',
path: 'events/banner',
component: 'events/banner',
componentName: 'EventBanner',
icon: 'AiOutlinePicture',
permission: 'events.banner.view',
},
{
id: 'events_logs',
name: '赛事操作日志',
path: 'events/logs',
component: 'events/logs',
componentName: 'EventLogs',
icon: 'AiOutlineHistory',
permission: 'events.logs.view',
},
],
},
{
id: 'finance',
name: '账务管理',
path: 'finance',
icon: 'AiOutlineTransaction',
children: [
{
id: 'finance_withdraw',
name: '提现申请',
path: 'finance/withdraw',
component: 'finance/withdraw',
componentName: 'FinanceWithdraw',
icon: 'AiOutlineMoneyCollect',
permission: 'finance.withdraw.view',
},
{
id: 'finance_wallet',
name: '用户钱包',
path: 'finance/wallet',
component: 'finance/wallet',
componentName: 'FinanceWallet',
icon: 'AiOutlineWallet',
permission: 'finance.wallet.view',
},
{
id: 'finance_payments',
name: '支付流水',
path: 'finance/payments',
component: 'finance/payments',
componentName: 'FinancePayments',
icon: 'AiOutlinePayCircle',
permission: 'finance.payments.view',
},
{
id: 'finance_reports',
name: '账务报表',
path: 'finance/reports',
component: 'finance/reports',
componentName: 'FinanceReports',
icon: 'AiOutlineBarChart',
permission: 'finance.reports.view',
},
],
},
{
id: 'system',
name: '系统管理',
path: 'system',
icon: 'AiOutlineSetting',
children: [
{
id: 'system_users',
name: '用户管理',
path: 'system/users',
component: 'system/users',
componentName: 'SystemUsers',
icon: 'AiOutlineUser',
permission: 'system.users.view',
},
{
id: 'system_roles',
name: '角色权限',
path: 'system/roles',
component: 'system/roles',
componentName: 'SystemRoles',
icon: 'AiOutlineSafetyCertificate',
permission: 'system.roles.view',
},
{
id: 'system_logs',
name: '操作日志',
path: 'system/logs',
component: 'system/logs',
componentName: 'SystemLogs',
icon: 'AiOutlineAudit',
permission: 'system.logs.view',
},
],
},
];