diff --git a/src/views/Community/components/DynamicNewsDetail/DynamicNewsDetailPanel.js b/src/views/Community/components/DynamicNewsDetail/DynamicNewsDetailPanel.js index 120c989e..e76054df 100644 --- a/src/views/Community/components/DynamicNewsDetail/DynamicNewsDetailPanel.js +++ b/src/views/Community/components/DynamicNewsDetail/DynamicNewsDetailPanel.js @@ -21,9 +21,11 @@ import { useEventStocks } from '../StockDetailPanel/hooks/useEventStocks'; import { toggleEventFollow, selectEventFollowStatus } from '../../../../store/slices/communityDataSlice'; import { useAuth } from '../../../../contexts/AuthContext'; import EventHeaderInfo from './EventHeaderInfo'; +import CompactMetaBar from './CompactMetaBar'; import EventDescriptionSection from './EventDescriptionSection'; import RelatedConceptsSection from './RelatedConceptsSection'; import RelatedStocksSection from './RelatedStocksSection'; +import CompactStockItem from './CompactStockItem'; import CollapsibleSection from './CollapsibleSection'; import HistoricalEvents from '../../../EventDetail/components/HistoricalEvents'; import TransmissionChainAnalysis from '../../../EventDetail/components/TransmissionChainAnalysis'; @@ -114,8 +116,8 @@ const DynamicNewsDetailPanel = ({ event, showHeader = true }) => { const canAccessTransmission = hasAccess('max'); // 子区块折叠状态管理 + 加载追踪 - // PRO 会员的相关股票默认展开 - const [isStocksOpen, setIsStocksOpen] = useState(canAccessStocks && userTier === 'pro'); + // 初始值为 false,由 useEffect 根据权限动态设置 + const [isStocksOpen, setIsStocksOpen] = useState(false); const [hasLoadedStocks, setHasLoadedStocks] = useState(false); const [isConceptsOpen, setIsConceptsOpen] = useState(false); @@ -202,14 +204,18 @@ const DynamicNewsDetailPanel = ({ event, showHeader = true }) => { // 🎯 加载事件详情(增加浏览量) loadEventDetail(); - // PRO 会员的相关股票默认展开,其他情况收起 - const shouldOpenStocks = canAccessStocks && userTier === 'pro'; + // PRO 和 MAX 会员的相关股票默认展开,其他情况收起 + const shouldOpenStocks = canAccessStocks; setIsStocksOpen(shouldOpenStocks); setHasLoadedStocks(false); - // PRO 会员默认展开时,自动加载股票数据 - if (shouldOpenStocks) { - console.log('%c📊 [PRO会员] 自动加载相关股票数据', 'color: #10B981; font-weight: bold;', { eventId: event?.id }); + // PRO 和 MAX 会员自动加载股票数据(无论是否展开) + const shouldLoadStocks = canAccessStocks; // PRO 或 MAX 都有权限 + if (shouldLoadStocks) { + console.log('%c📊 [PRO/MAX会员] 自动加载相关股票数据', 'color: #10B981; font-weight: bold;', { + eventId: event?.id, + userTier + }); loadStocksData(); setHasLoadedStocks(true); } @@ -281,21 +287,34 @@ const DynamicNewsDetailPanel = ({ event, showHeader = true }) => { return ( - - - {/* 头部信息区 - 优先使用完整详情数据(包含最新浏览量) */} - + {/* 无头部模式:显示右上角精简信息栏 */} + {!showHeader && ( + + )} + + + {/* 头部信息区 - 优先使用完整详情数据(包含最新浏览量) - 可配置显示/隐藏 */} + {showHeader && ( + + )} {/* 事件描述 */} - {/* 相关股票(可折叠) - 懒加载 - 需要 PRO 权限 */} + {/* 相关股票(可折叠) - 懒加载 - 需要 PRO 权限 - 支持精简/详细模式 */} { })()} isLocked={!canAccessStocks} onLockedClick={() => handleLockedClick('相关股票', 'pro')} + showModeToggle={canAccessStocks} + defaultMode="detailed" + simpleContent={ + loading.stocks || loading.quotes ? ( +
+ + 加载股票数据中... +
+ ) : ( + + {stocks?.map((stock, index) => ( + + + + ))} + + ) + } > {loading.stocks || loading.quotes ? (