feat:删除不必要组件
This commit is contained in:
@@ -1,201 +0,0 @@
|
||||
// src/views/Community/components/DynamicNewsDetailPanel.js
|
||||
// 动态新闻详情面板组件(固定展示,非弹窗)
|
||||
|
||||
import React from 'react';
|
||||
import {
|
||||
Box,
|
||||
Card,
|
||||
CardBody,
|
||||
VStack,
|
||||
HStack,
|
||||
Text,
|
||||
Badge,
|
||||
Tag,
|
||||
Divider,
|
||||
Heading,
|
||||
List,
|
||||
ListItem,
|
||||
Button,
|
||||
useColorModeValue,
|
||||
} from '@chakra-ui/react';
|
||||
import moment from 'moment';
|
||||
import { getImportanceConfig } from '../../../constants/importanceLevels';
|
||||
import HistoricalEvents from '../../EventDetail/components/HistoricalEvents';
|
||||
import TransmissionChainAnalysis from '../../EventDetail/components/TransmissionChainAnalysis';
|
||||
import { eventService } from '../../../services/eventService';
|
||||
|
||||
/**
|
||||
* 动态新闻详情面板组件
|
||||
* @param {Object} props
|
||||
* @param {Object} props.event - 事件对象(包含详情数据)
|
||||
*/
|
||||
const DynamicNewsDetailPanel = ({ event }) => {
|
||||
const cardBg = useColorModeValue('white', 'gray.800');
|
||||
const borderColor = useColorModeValue('gray.200', 'gray.700');
|
||||
const headingColor = useColorModeValue('gray.700', 'gray.200');
|
||||
const textColor = useColorModeValue('gray.600', 'gray.400');
|
||||
|
||||
if (!event) {
|
||||
return (
|
||||
<Card bg={cardBg} borderColor={borderColor} borderWidth="1px">
|
||||
<CardBody>
|
||||
<Text color={textColor} textAlign="center">请选择一个事件查看详情</Text>
|
||||
</CardBody>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
|
||||
const importance = getImportanceConfig(event.importance);
|
||||
|
||||
// 渲染涨跌幅标签
|
||||
const renderPriceTag = (value, label) => {
|
||||
if (value === null || value === undefined) return `${label}: --`;
|
||||
|
||||
const color = value > 0 ? 'red' : value < 0 ? 'green' : 'gray';
|
||||
const prefix = value > 0 ? '+' : '';
|
||||
|
||||
return (
|
||||
<Tag colorScheme={color} mr={2}>
|
||||
{label}: {prefix}{value.toFixed(2)}%
|
||||
</Tag>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<Card bg={cardBg} borderColor={borderColor} borderWidth="1px">
|
||||
<CardBody>
|
||||
<VStack align="stretch" spacing={4}>
|
||||
{/* 标题 */}
|
||||
<Heading size="md" color={headingColor}>
|
||||
{event.title}
|
||||
</Heading>
|
||||
|
||||
<Divider />
|
||||
|
||||
{/* 基本信息 */}
|
||||
<VStack align="stretch" spacing={2}>
|
||||
<HStack spacing={4} flexWrap="wrap">
|
||||
<Text fontSize="sm" color={textColor}>
|
||||
<strong>创建时间:</strong>
|
||||
{moment(event.created_at).format('YYYY-MM-DD HH:mm:ss')}
|
||||
</Text>
|
||||
<Text fontSize="sm" color={textColor}>
|
||||
<strong>重要性:</strong>
|
||||
<Badge colorScheme={importance.level === 'S' ? 'purple' : importance.level === 'A' ? 'red' : importance.level === 'B' ? 'orange' : 'green'} ml={1}>
|
||||
{importance.level}级
|
||||
</Badge>
|
||||
</Text>
|
||||
<Text fontSize="sm" color={textColor}>
|
||||
<strong>浏览数:</strong>{event.view_count || 0}
|
||||
</Text>
|
||||
</HStack>
|
||||
|
||||
{/* 涨跌幅统计 */}
|
||||
<HStack spacing={2} flexWrap="wrap">
|
||||
{renderPriceTag(event.related_avg_chg, '平均涨幅')}
|
||||
{renderPriceTag(event.related_max_chg, '最大涨幅')}
|
||||
{renderPriceTag(event.related_week_chg, '周涨幅')}
|
||||
</HStack>
|
||||
</VStack>
|
||||
|
||||
<Divider />
|
||||
|
||||
{/* 事件描述 */}
|
||||
{event.description && (
|
||||
<Box>
|
||||
<Heading size="sm" color={headingColor} mb={2}>
|
||||
事件描述
|
||||
</Heading>
|
||||
<Text fontSize="sm" color={textColor} lineHeight="tall">
|
||||
{event.description}
|
||||
</Text>
|
||||
</Box>
|
||||
)}
|
||||
|
||||
{/* 相关概念 */}
|
||||
{event.keywords && event.keywords.length > 0 && (
|
||||
<Box>
|
||||
<Heading size="sm" color={headingColor} mb={2}>
|
||||
相关概念
|
||||
</Heading>
|
||||
<HStack spacing={2} flexWrap="wrap">
|
||||
{event.keywords.map((keyword, index) => (
|
||||
<Tag key={index} colorScheme="blue" size="sm">
|
||||
{keyword}
|
||||
</Tag>
|
||||
))}
|
||||
</HStack>
|
||||
</Box>
|
||||
)}
|
||||
|
||||
{/* 相关股票 */}
|
||||
{event.related_stocks && event.related_stocks.length > 0 && (
|
||||
<Box>
|
||||
<Heading size="sm" color={headingColor} mb={2}>
|
||||
相关股票
|
||||
</Heading>
|
||||
<List spacing={2}>
|
||||
{event.related_stocks.map((stock, index) => (
|
||||
<ListItem
|
||||
key={index}
|
||||
p={2}
|
||||
borderWidth="1px"
|
||||
borderColor={borderColor}
|
||||
borderRadius="md"
|
||||
>
|
||||
<HStack justify="space-between">
|
||||
<VStack align="start" spacing={0}>
|
||||
<Text fontSize="sm" fontWeight="bold">
|
||||
{stock.stock_name} ({stock.stock_code})
|
||||
</Text>
|
||||
<Text fontSize="xs" color={textColor}>
|
||||
{stock.relation_desc || '相关股票'}
|
||||
</Text>
|
||||
</VStack>
|
||||
<Button
|
||||
size="sm"
|
||||
colorScheme="blue"
|
||||
onClick={() => {
|
||||
const stockCode = stock.stock_code.split('.')[0];
|
||||
window.open(`https://valuefrontier.cn/company?scode=${stockCode}`, '_blank');
|
||||
}}
|
||||
>
|
||||
查看详情
|
||||
</Button>
|
||||
</HStack>
|
||||
</ListItem>
|
||||
))}
|
||||
</List>
|
||||
</Box>
|
||||
)}
|
||||
|
||||
{/* 历史事件对比 */}
|
||||
<Box>
|
||||
<Heading size="sm" color={headingColor} mb={2}>
|
||||
历史事件对比
|
||||
</Heading>
|
||||
<HistoricalEvents
|
||||
eventId={event.id}
|
||||
eventTitle={event.title}
|
||||
historicalEvents={event.historical_events || []}
|
||||
eventService={eventService}
|
||||
/>
|
||||
</Box>
|
||||
|
||||
{/* 传导链分析 */}
|
||||
<Box>
|
||||
<Heading size="sm" color={headingColor} mb={2}>
|
||||
传导链分析
|
||||
</Heading>
|
||||
<TransmissionChainAnalysis
|
||||
eventId={event.id}
|
||||
eventService={eventService}
|
||||
/>
|
||||
</Box>
|
||||
</VStack>
|
||||
</CardBody>
|
||||
</Card>
|
||||
);
|
||||
};
|
||||
|
||||
export default DynamicNewsDetailPanel;
|
||||
Reference in New Issue
Block a user