import React, { useState, useEffect } from 'react' import { api } from '../services/api' import './TradeList.css' const TradeList = () => { const [trades, setTrades] = useState([]) const [stats, setStats] = useState(null) const [loading, setLoading] = useState(true) // 筛选状态 const [period, setPeriod] = useState(null) // '1d', '7d', '30d', null const [startDate, setStartDate] = useState('') const [endDate, setEndDate] = useState('') const [symbol, setSymbol] = useState('') const [status, setStatus] = useState('') const [useCustomDate, setUseCustomDate] = useState(false) useEffect(() => { loadData() }, []) const loadData = async () => { setLoading(true) try { const params = { limit: 100 } // 如果使用快速时间段筛选 if (!useCustomDate && period) { params.period = period } else if (useCustomDate) { // 使用自定义日期 if (startDate) params.start_date = startDate if (endDate) params.end_date = endDate } if (symbol) params.symbol = symbol if (status) params.status = status const [tradesData, statsData] = await Promise.all([ api.getTrades(params), api.getTradeStats(params) ]) setTrades(tradesData.trades || []) setStats(statsData) } catch (error) { console.error('Failed to load trades:', error) } finally { setLoading(false) } } const handlePeriodChange = (newPeriod) => { setPeriod(newPeriod) setUseCustomDate(false) setStartDate('') setEndDate('') } const handleCustomDateToggle = () => { setUseCustomDate(!useCustomDate) if (!useCustomDate) { setPeriod(null) } } const handleReset = () => { setPeriod(null) setStartDate('') setEndDate('') setSymbol('') setStatus('') setUseCustomDate(false) } if (loading) return
| 交易对 | 方向 | 数量 | 入场价 | 出场价 | 盈亏 | 状态 | 时间 |
|---|---|---|---|---|---|---|---|
| {trade.symbol} | {trade.side} | {parseFloat(trade.quantity).toFixed(4)} | {parseFloat(trade.entry_price).toFixed(4)} | {trade.exit_price ? parseFloat(trade.exit_price).toFixed(4) : '-'} | = 0 ? 'positive' : 'negative'}> {parseFloat(trade.pnl).toFixed(2)} USDT | {trade.status} | {new Date(trade.entry_time).toLocaleString('zh-CN')} |