From d4155bb9a873aa467a12a19abc9ac58b9cef0a3f Mon Sep 17 00:00:00 2001 From: Lxy Date: Tue, 17 Feb 2026 23:40:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=B0=83=E6=95=B4=E5=8D=A1=E7=89=87?= =?UTF-8?q?=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/dashboard/Dashboard.css | 52 +++++++++++++++++++++++++++++++ src/pages/dashboard/Dashboard.jsx | 25 +++++++++++++++ src/utils/mockData.js | 18 +++++++++-- 3 files changed, 92 insertions(+), 3 deletions(-) diff --git a/src/pages/dashboard/Dashboard.css b/src/pages/dashboard/Dashboard.css index 8f7653f..90a2b2b 100644 --- a/src/pages/dashboard/Dashboard.css +++ b/src/pages/dashboard/Dashboard.css @@ -152,6 +152,11 @@ margin-bottom: 16px; } +.future-overview { + margin-bottom: 12px; + text-align: center; +} + .future-metrics { display: flex; justify-content: space-between; @@ -160,6 +165,53 @@ border-bottom: 1px solid #f0f0f0; } +.future-levels { + display: flex; + justify-content: space-between; + margin-bottom: 12px; + padding: 12px; + background: #fafafa; + border-radius: 4px; +} + +.level-item { + display: flex; + flex-direction: column; + align-items: center; + flex: 1; +} + +.level-label { + font-size: 12px; + color: #8c8c8c; + margin-bottom: 4px; +} + +.level-value { + font-size: 14px; + font-weight: 500; + color: #262626; +} + +.future-ai-analysis { + margin-bottom: 16px; + padding: 12px; + background: #f0f8ff; + border-radius: 4px; + font-size: 12px; + line-height: 1.4; +} + +.ai-label { + font-weight: 500; + color: #1890ff; + margin-right: 8px; +} + +.ai-content { + color: #262626; +} + .metric-item { display: flex; flex-direction: column; diff --git a/src/pages/dashboard/Dashboard.jsx b/src/pages/dashboard/Dashboard.jsx index 30056ec..3ffabb6 100644 --- a/src/pages/dashboard/Dashboard.jsx +++ b/src/pages/dashboard/Dashboard.jsx @@ -235,6 +235,13 @@ const Dashboard = () => { ¥{item.currentPrice.toFixed(2)} + {/* 整体预判 */} +
+ + {item.overallView} + +
+
胜率 @@ -250,6 +257,24 @@ const Dashboard = () => {
+ {/* 压力支撑位 */} +
+
+ 压力 + ¥{item.tradingAdvice?.resistance?.toFixed(2) || '-'} +
+
+ 支撑 + ¥{item.tradingAdvice?.support?.toFixed(2) || '-'} +
+
+ + {/* AI分析 */} +
+ AI分析: + {item.aiAnalysis || '-'} +
+
5MIN diff --git a/src/utils/mockData.js b/src/utils/mockData.js index af3b1f9..191ff51 100644 --- a/src/utils/mockData.js +++ b/src/utils/mockData.js @@ -126,6 +126,11 @@ export const generateFutureData = (code, name) => { const entry = currentPrice; const stopLoss = entry * (1 - 0.02 * (Math.random() + 0.5)); const target = entry * (1 + 0.03 * (Math.random() + 0.5)); + const resistance = entry * (1 + 0.05 * (Math.random() + 0.5)); + const support = entry * (1 - 0.05 * (Math.random() + 0.5)); + + const overallViews = ['观望', '中线', '多头排列', '空头排列', '震荡']; + const overallView = overallViews[Math.floor(Math.random() * overallViews.length)]; return { code, @@ -142,10 +147,14 @@ export const generateFutureData = (code, name) => { tradingAdvice: { entry: +entry.toFixed(2), stopLoss: +stopLoss.toFixed(2), - target: +target.toFixed(2) + target: +target.toFixed(2), + resistance: +resistance.toFixed(2), + support: +support.toFixed(2) }, riskLevel: ['低', '中等', '高'][Math.floor(Math.random() * 3)], - volatility: ['低', '中等', '高'][Math.floor(Math.random() * 3)] + volatility: ['低', '中等', '高'][Math.floor(Math.random() * 3)], + overallView, + aiAnalysis: `MACD:${indicators.macd} | RSI:${indicators.rsi} | 布林带:${indicators.bollinger}` }; }; @@ -162,7 +171,10 @@ export const generateFuturesOverview = () => { atr: data.atr, adx: data.adx, adxStatus: data.adxStatus, - trends: data.trends + trends: data.trends, + tradingAdvice: data.tradingAdvice, + overallView: data.overallView, + aiAnalysis: data.aiAnalysis }; }); };