import React, { useState, useEffect } from 'react'; import { Card, Row, Col, Button, Input, Select, Table, Badge, Statistic, Typography, Spin } from 'antd'; import { ReloadOutlined, FilterOutlined, EyeOutlined, EyeInvisibleOutlined, ArrowUpOutlined, ArrowDownOutlined } from '@ant-design/icons'; import { allFuturesData, aiAnalysis, marketHotspots, riskAlerts } from '../../utils/mockData'; import useTheme from '../../hooks/useTheme'; const { Title, Text } = Typography; const { Search } = Input; const { Option } = Select; const { Column } = Table; const Dashboard = () => { const [futuresData, setFuturesData] = useState(allFuturesData); const [filteredData, setFilteredData] = useState(allFuturesData); const [loading, setLoading] = useState(false); const [viewMode, setViewMode] = useState('card'); // card or list const [filterType, setFilterType] = useState(''); const [filterKeyword, setFilterKeyword] = useState(''); // 模拟数据刷新 const handleRefresh = () => { setLoading(true); setTimeout(() => { const refreshedData = allFuturesData.map(item => ({ ...item, currentPrice: (parseFloat(item.currentPrice) * (1 + (Math.random() * 0.02 - 0.01))).toFixed(2), changePercent: (parseFloat(item.changePercent) + (Math.random() * 2 - 1)).toFixed(2) })); setFuturesData(refreshedData); setFilteredData(refreshedData); setLoading(false); }, 1000); }; // 过滤数据 useEffect(() => { let result = futuresData; if (filterKeyword) { const keyword = filterKeyword.toLowerCase(); result = result.filter(item => item.code.toLowerCase().includes(keyword) || item.name.toLowerCase().includes(keyword) ); } if (filterType) { result = result.filter(item => item.type === filterType); } setFilteredData(result); }, [futuresData, filterKeyword, filterType]); // 品种类型选项 const typeOptions = Array.from(new Set(allFuturesData.map(item => item.type))).map(type => ( )); // 渲染品种卡片 const renderCard = (item) => ( console.log('查看详情:', item.code)} >
{item.name} ({item.code})
0 ? 'success' : 'error'} text={`${item.changePercent > 0 ? '+' : ''}${item.changePercent}%`} />
0 ? '#52c41a' : '#ff4d4f' }} suffix="元" size="small" />
胜率: {item.winRate}%
ATR: {item.atr}
ADX: {item.adx}
趋势: {item.adxStatus}
); return (
{/* 页面头部 */} 欢迎使用AI期货分析系统 当前市场整体处于{aiAnalysis.overallView.split(',')[0]}
{/* 筛选栏 */} setFilterKeyword(e.target.value)} style={{ width: '100%' }} /> {/* 品种概览区 */} {viewMode === 'card' ? ( {filteredData.map(item => ( {renderCard(item)} ))} ) : ( `${text} (${record.code})`} /> ( 0 ? '#52c41a' : '#ff4d4f' }}> {text > 0 ? '+' : ''}{text}% )} /> `${text}%`} />
)}
{/* 市场热点和AI研判区 */}
市场整体观点: {aiAnalysis.overallView}
投资建议:
    {aiAnalysis.recommendations.map((item, index) => (
  • {item}
  • ))}
置信度:
{riskAlerts.map(alert => (
{alert.title}
{alert.message}
))}
); }; export default Dashboard;