// src/views/Community/components/DynamicNewsDetail/CompactStockItem.js // 精简模式股票卡片组件(浮动卡片样式) import React from 'react'; import { useSelector } from 'react-redux'; import { Box, Text, Tooltip, useColorModeValue, } from '@chakra-ui/react'; import { selectIsMobile } from '@store/slices/deviceSlice'; import { getChangeColor, getChangeBackgroundGradient, getChangeBorderColor } from '@utils/colorUtils'; /** * 精简模式股票卡片组件 * @param {Object} props * @param {Object} props.stock - 股票对象 * @param {Object} props.quote - 股票行情数据(可选) */ const CompactStockItem = ({ stock, quote = null }) => { const isMobile = useSelector(selectIsMobile); const nameColor = useColorModeValue('gray.700', 'gray.300'); const handleViewDetail = () => { const stockCode = stock.stock_code.split('.')[0]; window.open(`https://valuefrontier.cn/company?scode=${stockCode}`, '_blank'); }; // 格式化涨跌幅显示 const formatChange = (value) => { if (value === null || value === undefined || isNaN(value)) return '--'; const prefix = value > 0 ? '+' : ''; return `${prefix}${parseFloat(value).toFixed(2)}%`; }; // 获取涨跌幅数据(优先使用 quote,fallback 到 stock) const change = quote?.change ?? stock.daily_change ?? null; return ( {/* 股票代码 */} {stock.stock_code} {/* 涨跌幅 - 超大号显示 */} {formatChange(change)} {/* 股票名称(小字) */} {stock.stock_name} ); }; export default CompactStockItem;