// src/views/Community/components/DynamicNewsDetail/RelatedConceptsSection/ConceptStockItem.js // 概念股票列表项组件 import React from 'react'; import { Box, HStack, Text, Badge, useColorModeValue, } from '@chakra-ui/react'; /** * 概念股票列表项组件 * @param {Object} props * @param {Object} props.stock - 股票对象 * - stock_name: 股票名称 * - stock_code: 股票代码 * - change_pct: 涨跌幅 * - reason: 关联原因 */ const ConceptStockItem = ({ stock }) => { const sectionBg = useColorModeValue('gray.50', 'gray.750'); const conceptNameColor = useColorModeValue('gray.800', 'gray.100'); const stockCountColor = useColorModeValue('gray.500', 'gray.400'); const stockChangePct = parseFloat(stock.change_pct); const stockChangeColor = stockChangePct > 0 ? 'red' : stockChangePct < 0 ? 'green' : 'gray'; const stockChangeSymbol = stockChangePct > 0 ? '+' : ''; // 处理股票详情跳转 const handleStockClick = (e) => { e.stopPropagation(); // 阻止事件冒泡到概念卡片 const cleanCode = stock.stock_code.replace(/\.(SZ|SH)$/i, ''); window.open(`https://valuefrontier.cn/company?scode=${cleanCode}`, '_blank'); }; return ( {stock.stock_name} {stock.stock_code} {stock.change_pct && ( {stockChangeSymbol}{stockChangePct.toFixed(2)}% )} {stock.reason && ( {stock.reason} )} ); }; export default ConceptStockItem;