feat(frontend): 尾盘父级菜单与图标优化

- 尾盘策略、尾盘监控归入「尾盘」父级菜单,与跟单交易结构一致
- 菜单图标:父级 LineChart,尾盘策略 RocketOutlined,尾盘监控 DashboardOutlined
- 多语言:新增 menu.cryptoTail(尾盘/尾盤/Crypto Tail)
- 含 CryptoTailMonitor 及后端 DTO/Service 等修改

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
WrBug
2026-02-25 21:17:44 +08:00
co-authored by Cursor
parent f35bad78d4
commit 4b277eaeab
8 changed files with 378 additions and 78 deletions
+24 -9
View File
@@ -21,7 +21,9 @@ import {
SendOutlined,
ApiOutlined,
NotificationOutlined,
LineChartOutlined
LineChartOutlined,
RocketOutlined,
DashboardOutlined
} from '@ant-design/icons'
import type { MenuProps } from 'antd'
import type { ReactNode } from 'react'
@@ -75,6 +77,9 @@ const Layout: React.FC<LayoutProps> = ({ children }) => {
if (path.startsWith('/leaders') || path.startsWith('/templates') || path.startsWith('/copy-trading') || path.startsWith('/backtest')) {
keys.push('/copy-trading-management')
}
if (path.startsWith('/crypto-tail-strategy') || path.startsWith('/crypto-tail-monitor')) {
keys.push('/crypto-tail-management')
}
if (path.startsWith('/system-settings')) {
keys.push('/system-settings')
}
@@ -90,6 +95,9 @@ const Layout: React.FC<LayoutProps> = ({ children }) => {
if (path.startsWith('/leaders') || path.startsWith('/templates') || path.startsWith('/copy-trading') || path.startsWith('/backtest')) {
keys.push('/copy-trading-management')
}
if (path.startsWith('/crypto-tail-strategy') || path.startsWith('/crypto-tail-monitor')) {
keys.push('/crypto-tail-management')
}
if (path.startsWith('/system-settings')) {
keys.push('/system-settings')
}
@@ -158,14 +166,21 @@ const Layout: React.FC<LayoutProps> = ({ children }) => {
]
},
{
key: '/crypto-tail-strategy',
key: '/crypto-tail-management',
icon: <LineChartOutlined />,
label: t('menu.cryptoTailStrategy')
},
{
key: '/crypto-tail-monitor',
icon: <LineChartOutlined />,
label: t('menu.cryptoTailMonitor')
label: t('menu.cryptoTail'),
children: [
{
key: '/crypto-tail-strategy',
icon: <RocketOutlined />,
label: t('menu.cryptoTailStrategy')
},
{
key: '/crypto-tail-monitor',
icon: <DashboardOutlined />,
label: t('menu.cryptoTailMonitor')
}
]
},
{
key: '/positions',
@@ -235,7 +250,7 @@ const Layout: React.FC<LayoutProps> = ({ children }) => {
const handleMenuClick = ({ key }: { key: string }) => {
// 如果是父菜单,不导航(但 /system-settings 作为子菜单项时可以导航)
if (key === '/copy-trading-management') {
if (key === '/copy-trading-management' || key === '/crypto-tail-management') {
return
}