/** * StockQuoteCard - 股票行情卡片组件 * * 展示股票的实时行情、关键指标和主力动态 */ import React from 'react'; import { Box, Card, CardBody, Flex, HStack, VStack, Text, Badge, Progress, Skeleton, IconButton, Tooltip, } from '@chakra-ui/react'; import { Share2 } from 'lucide-react'; import FavoriteButton from '@components/FavoriteButton'; import type { StockQuoteCardProps } from './types'; import { mockStockQuoteData } from './mockData'; /** * 格式化价格显示 */ const formatPrice = (price: number): string => { return price.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2, }); }; /** * 格式化涨跌幅显示 */ const formatChangePercent = (percent: number): string => { const sign = percent >= 0 ? '+' : ''; return `${sign}${percent.toFixed(2)}%`; }; /** * 格式化主力净流入显示 */ const formatNetInflow = (value: number): string => { const sign = value >= 0 ? '+' : ''; return `${sign}${value.toFixed(2)}亿`; }; const StockQuoteCard: React.FC = ({ data = mockStockQuoteData, isLoading = false, isInWatchlist = false, isWatchlistLoading = false, onWatchlistToggle, onShare, }) => { // 处理分享点击 const handleShare = () => { onShare?.(); }; // 黑金主题颜色配置 const cardBg = '#1A202C'; const borderColor = '#C9A961'; const labelColor = '#C9A961'; const valueColor = '#F4D03F'; const sectionTitleColor = '#F4D03F'; // 涨跌颜色(红涨绿跌) const upColor = '#F44336'; // 涨 - 红色 const downColor = '#4CAF50'; // 跌 - 绿色 const priceColor = data.changePercent >= 0 ? upColor : downColor; const inflowColor = data.mainNetInflow >= 0 ? upColor : downColor; if (isLoading) { return ( ); } return ( {/* 顶部:股票名称 + 关注/分享按钮 + 更新时间 */} {/* 左侧:名称(代码) | 指数标签 */} {data.name}({data.code}) {data.indexTags.length > 0 && ( <> | {data.indexTags.join('、')} )} {/* 右侧:关注 + 分享 + 时间 */} {})} colorScheme="gold" size="sm" /> } variant="ghost" color={labelColor} size="sm" onClick={handleShare} _hover={{ bg: 'whiteAlpha.100' }} /> {data.updateTime.split(' ')[1]} {/* 三栏布局 */} {/* 左栏:价格信息 */} {formatPrice(data.currentPrice)} = 0 ? upColor : downColor} color="#FFFFFF" fontSize="20px" fontWeight="bold" px={3} py={1} borderRadius="md" > {formatChangePercent(data.changePercent)} {/* 次要行情:今开 | 昨收 | 最高 | 最低 */} 今开: {formatPrice(data.todayOpen)} | 昨收: {formatPrice(data.yesterdayClose)} | 最高: {formatPrice(data.todayHigh)} | 最低: {formatPrice(data.todayLow)} {/* 中栏:关键指标 */} 关键指标 市盈率(PE): {data.pe.toFixed(2)} 市净率(PB): {data.pb.toFixed(2)} 流通市值: {data.marketCap} 52周波动: {formatPrice(data.week52Low)}-{formatPrice(data.week52High)} {/* 右栏:主力动态 */} 主力动态 主力净流入: {formatNetInflow(data.mainNetInflow)} 机构持仓: {data.institutionHolding.toFixed(2)}% {/* 买卖比例条 */} div': { bg: upColor }, }} bg={downColor} borderRadius="full" /> 买入{data.buyRatio}% 卖出{data.sellRatio}% ); }; export default StockQuoteCard;