From 5ceffc53d685a67589f8e976e5d17b2273b46544 Mon Sep 17 00:00:00 2001
From: zdl <3489966805@qq.com>
Date: Fri, 7 Nov 2025 18:39:49 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BA=8B=E4=BB=B6=E4=B8=AD=E5=BF=83?=
=?UTF-8?q?=E8=AF=A6=E6=83=85=E9=9D=A2=E6=9D=BFUi=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../DynamicNewsCard/EventDetailScrollPanel.js | 10 +-
.../DynamicNewsCard/VerticalModeLayout.js | 1 +
.../DynamicNewsDetail/CompactMetaBar.js | 100 ++++++++++++++++++
3 files changed, 110 insertions(+), 1 deletion(-)
create mode 100644 src/views/Community/components/DynamicNewsDetail/CompactMetaBar.js
diff --git a/src/views/Community/components/DynamicNewsCard/EventDetailScrollPanel.js b/src/views/Community/components/DynamicNewsCard/EventDetailScrollPanel.js
index 7a12194f..c531220f 100644
--- a/src/views/Community/components/DynamicNewsCard/EventDetailScrollPanel.js
+++ b/src/views/Community/components/DynamicNewsCard/EventDetailScrollPanel.js
@@ -13,13 +13,21 @@ import DynamicNewsDetailPanel from '../DynamicNewsDetail';
* @param {string} scrollbarTrackBg - 滚动条轨道背景色
* @param {string} scrollbarThumbBg - 滚动条滑块背景色
* @param {string} scrollbarThumbHoverBg - 滚动条滑块悬浮背景色
+ * @param {string} detailMode - 详情模式:'full' | 'no-header'(默认 'full')
+ * @param {boolean} showHeader - 是否显示头部(可选,优先级高于 detailMode)
*/
const EventDetailScrollPanel = ({
selectedEvent,
scrollbarTrackBg,
scrollbarThumbBg,
scrollbarThumbHoverBg,
+ detailMode = 'full',
+ showHeader,
}) => {
+ // 计算是否显示头部:showHeader 显式指定时优先,否则根据 detailMode 判断
+ const shouldShowHeader = showHeader !== undefined
+ ? showHeader
+ : detailMode === 'full';
return (
{selectedEvent ? (
-
+
) : (
diff --git a/src/views/Community/components/DynamicNewsCard/VerticalModeLayout.js b/src/views/Community/components/DynamicNewsCard/VerticalModeLayout.js
index 05eca5c7..1db9c7cf 100644
--- a/src/views/Community/components/DynamicNewsCard/VerticalModeLayout.js
+++ b/src/views/Community/components/DynamicNewsCard/VerticalModeLayout.js
@@ -161,6 +161,7 @@ const VerticalModeLayout = ({
{/* 详情面板 */}
diff --git a/src/views/Community/components/DynamicNewsDetail/CompactMetaBar.js b/src/views/Community/components/DynamicNewsDetail/CompactMetaBar.js
new file mode 100644
index 00000000..7abe78ad
--- /dev/null
+++ b/src/views/Community/components/DynamicNewsDetail/CompactMetaBar.js
@@ -0,0 +1,100 @@
+// src/views/Community/components/DynamicNewsDetail/CompactMetaBar.js
+// 精简信息栏组件(无头部模式下右上角显示)
+
+import React from 'react';
+import {
+ HStack,
+ Badge,
+ Text,
+ Icon,
+ useColorModeValue,
+} from '@chakra-ui/react';
+import { ViewIcon } from '@chakra-ui/icons';
+import EventFollowButton from '../EventCard/EventFollowButton';
+
+/**
+ * 精简信息栏组件
+ * 在无头部模式下,显示在 CardBody 右上角
+ * 包含:重要性徽章、浏览次数、关注按钮
+ *
+ * @param {Object} props
+ * @param {Object} props.event - 事件对象
+ * @param {Object} props.importance - 重要性配置对象(包含 level, icon 等)
+ * @param {boolean} props.isFollowing - 是否已关注
+ * @param {number} props.followerCount - 关注数
+ * @param {Function} props.onToggleFollow - 切换关注回调
+ */
+const CompactMetaBar = ({ event, importance, isFollowing, followerCount, onToggleFollow }) => {
+ const viewCountBg = useColorModeValue('white', 'gray.700');
+ const viewCountTextColor = useColorModeValue('gray.600', 'gray.300');
+
+ // 获取重要性文本
+ const getImportanceText = () => {
+ const levelMap = {
+ 'S': '极高',
+ 'A': '高',
+ 'B': '中',
+ 'C': '低'
+ };
+ return levelMap[importance.level] || '中';
+ };
+
+ return (
+
+ {/* 重要性徽章 - 与 EventHeaderInfo 样式一致,尺寸略小 */}
+
+
+ 重要性:{getImportanceText()}
+
+
+ {/* 浏览次数 - 添加容器背景以提高可读性 */}
+
+
+
+ {(event.view_count || 0).toLocaleString()}
+
+
+
+ {/* 关注按钮 */}
+
+
+ );
+};
+
+export default CompactMetaBar;