diff --git a/src/views/Community/components/DynamicNewsCard.js b/src/views/Community/components/DynamicNewsCard.js
index acf020c6..58a739e7 100644
--- a/src/views/Community/components/DynamicNewsCard.js
+++ b/src/views/Community/components/DynamicNewsCard.js
@@ -398,49 +398,73 @@ const [currentMode, setCurrentMode] = useState('vertical');
}
}}
>
- {/* 标题和搜索部分 - 一行布局 */}
+ {/* 标题和搜索部分 - 一体化单行布局 */}
- {/* 第一行:标题 + 通知开关 + 更新时间 */}
-
-
-
-
+ {/* 一体化标题栏:左侧标题+badges | 中间筛选组件 | 右侧通知+时间 */}
+
+ {/* 左侧:标题 + Badges */}
+
+
+
- 实时要闻·动态追踪
+ 实时要闻
-
- 实时
- 盘中
- 快讯
+
+ 实时
+ 盘中
+ 快讯
-
+
-
- {/* 通知开关 */}
+ {/* 中间:筛选组件(占据剩余空间) */}
+
+
+
+
+ {/* 右侧:通知开关 + 更新时间 */}
+
+ {/* 通知开关 - 紧凑版 */}
- {browserPermission === 'granted' ? '通知已开启' : '开启通知'}
+ {browserPermission === 'granted' ? '已开启' : '开启通知'}
-
- 最后更新: {lastUpdateTime?.toLocaleTimeString() || '未知'}
+ {/* 更新时间 */}
+
+ 更新: {lastUpdateTime?.toLocaleTimeString() || '--'}
-
- {/* 第二行:搜索和筛选组件 */}
-
{/* 主体内容 */}
diff --git a/src/views/Community/components/DynamicNewsCard/VerticalModeLayout.js b/src/views/Community/components/DynamicNewsCard/VerticalModeLayout.js
index 7af1f138..14d14459 100644
--- a/src/views/Community/components/DynamicNewsCard/VerticalModeLayout.js
+++ b/src/views/Community/components/DynamicNewsCard/VerticalModeLayout.js
@@ -1,17 +1,15 @@
// src/views/Community/components/DynamicNewsCard/VerticalModeLayout.js
// 纵向分栏模式布局组件
-import React, { useState, useEffect } from 'react';
-import { Box, IconButton, Tooltip, VStack, Flex, Center, Text } from '@chakra-ui/react';
-import { ViewIcon, ViewOffIcon, InfoIcon } from '@chakra-ui/icons';
+import React, { useState } from 'react';
+import { Box, VStack, Flex, Center, Text } from '@chakra-ui/react';
+import { InfoIcon } from '@chakra-ui/icons';
import HorizontalDynamicNewsEventCard from '../EventCard/HorizontalDynamicNewsEventCard';
import EventDetailScrollPanel from './EventDetailScrollPanel';
/**
* 纵向分栏模式布局
- * 支持两种展示模式:
- * - detail(默认):左侧事件列表 1fr | 右侧详情 2fr
- * - list:左侧事件列表 7fr | 右侧详情 300px
+ * 固定布局:左侧事件列表 3fr | 右侧详情 7fr
*
* @param {string} display - CSS display 属性(用于显示/隐藏组件)
* @param {Array} events - 当前页的事件列表(分页数据)
@@ -32,33 +30,12 @@ const VerticalModeLayout = ({
getTimelineBoxStyle,
borderColor,
}) => {
- // 布局模式状态:'detail' = 聚焦详情(默认),'list' = 聚焦列表
- const [layoutMode, setLayoutMode] = useState('detail');
+ // 详情面板重置 key(预留,用于未来功能)
+ const [detailPanelKey] = useState(0);
- // 详情面板重置 key(切换到 list 模式时改变,强制重新渲染)
- const [detailPanelKey, setDetailPanelKey] = useState(0);
-
- // 监听事件选择 - 自动切换到详情模式
- useEffect(() => {
- if (selectedEvent) {
- setLayoutMode('detail');
- }
- }, [selectedEvent]);
-
- // 切换布局模式
- const toggleLayoutMode = () => {
- const newMode = layoutMode === 'detail' ? 'list' : 'detail';
- setLayoutMode(newMode);
-
- // 如果切换到 list 模式,重置详情面板(收起所有 CollapsibleSection)
- if (newMode === 'list') {
- setDetailPanelKey(prev => prev + 1); // 改变 key,强制重新渲染
- }
- };
-
- // 根据模式计算 flex 比例
- const leftFlex = layoutMode === 'detail' ? '4' : '6';
- const rightFlex = layoutMode === 'detail' ? '6' : '4';
+ // 固定布局比例:左侧更窄(3),右侧更宽(7)
+ const leftFlex = '3';
+ const rightFlex = '7';
return (
))}
@@ -140,25 +117,6 @@ const VerticalModeLayout = ({
overflow="hidden"
h="100%"
>
- {/* 布局切换按钮 */}
-
- : }
- onClick={toggleLayoutMode}
- aria-label="切换布局模式"
- colorScheme="blue"
- variant="solid"
- />
-
-
{/* 详情面板 */}
{/* 单行紧凑布局:名称+涨跌幅 | 分时图 | K线图 | 关联描述 */}
-
- {/* 左侧:股票代码 + 名称 + 涨跌幅(垂直排列) */}
-
-
+ {/* 左侧:股票信息区 */}
+
+ {/* 股票代码 + 名称 + 涨跌幅 */}
+
-
-
- {stock.stock_code}
-
-
- {stock.stock_name}
-
-
-
-
-
- {formatChange(change)}
+
+
+ {stock.stock_code}
+
+
+ {stock.stock_name}
+
+
+
+
+
+ {formatChange(change)}
+
+ {onWatchlistToggle && (
+ }
+ onClick={handleWatchlistClick}
+ aria-label={isInWatchlist ? '已关注' : '加自选'}
+ borderRadius="full"
+ />
+ )}
+
+
+
+ {/* 分时图 - 更紧凑 */}
+ {
+ e.stopPropagation();
+ setIsModalOpen(true);
+ }}
+ cursor="pointer"
+ flexShrink={0}
+ align="stretch"
+ spacing={0}
+ h="fit-content"
+ _hover={{
+ borderColor: useColorModeValue('blue.300', 'blue.500'),
+ boxShadow: 'md',
+ transform: 'translateY(-1px)'
+ }}
+ transition="all 0.2s"
+ >
+
+ 📈 分时
- {onWatchlistToggle && (
- }
- onClick={handleWatchlistClick}
- aria-label={isInWatchlist ? '已关注' : '加自选'}
- borderRadius="full"
+
+
- )}
-
-
+
+
- {/* 分时图 - 紧凑高度 */}
- {
- e.stopPropagation();
- setIsModalOpen(true);
- }}
- cursor="pointer"
- flexShrink={1}
- align="stretch"
- spacing={0}
- h="fit-content"
- _hover={{
- borderColor: useColorModeValue('blue.300', 'blue.500'),
- boxShadow: 'md',
- transform: 'translateY(-1px)'
- }}
- transition="all 0.2s"
- >
- {
+ e.stopPropagation();
+ setIsModalOpen(true);
+ }}
+ cursor="pointer"
+ flexShrink={0}
+ align="stretch"
+ spacing={0}
+ h="fit-content"
+ _hover={{
+ borderColor: useColorModeValue('purple.300', 'purple.500'),
+ boxShadow: 'md',
+ transform: 'translateY(-1px)'
+ }}
+ transition="all 0.2s"
>
- 📈 分时
-
-
-
-
-
-
- {/* K线图 - 紧凑高度 */}
- {
- e.stopPropagation();
- setIsModalOpen(true);
- }}
- cursor="pointer"
- flexShrink={1}
- align="stretch"
- spacing={0}
- h="fit-content"
- _hover={{
- borderColor: useColorModeValue('purple.300', 'purple.500'),
- boxShadow: 'md',
- transform: 'translateY(-1px)'
- }}
- transition="all 0.2s"
- >
-
- 📊 日线
-
-
-
-
-
+
+ 📊 日线
+
+
+
+
+
+
{/* 关联描述 - 升级和降级处理 */}
{stock.relation_desc && (
@@ -347,11 +346,11 @@ const StockListItem = ({
position="relative"
>
{/* 去掉"关联描述"标题 */}
-
+
{relationText}