© 2024 价值前沿. 保留所有权利.
京公网安备11010802046286号
diff --git a/public/landing.html b/public/landing.html
index 6bad18aa..ec3ef151 100644
--- a/public/landing.html
+++ b/public/landing.html
@@ -692,7 +692,7 @@
-
© 2024 价值前沿. 保留所有权利.
+
© 2026 北京价值前沿科技有限公司
京公网安备11010802046286号
diff --git a/src/components/Footer/index.js b/src/components/Footer/index.js
index bf1f9067..8f27a83c 100644
--- a/src/components/Footer/index.js
+++ b/src/components/Footer/index.js
@@ -31,8 +31,11 @@ const Footer = () => (
-
- © 2024 价值前沿. 保留所有权利.
+
+ © 2026 北京价值前沿科技有限公司
diff --git a/src/components/Navbars/components/NavStockSearch/index.js b/src/components/Navbars/components/NavStockSearch/index.js
index eea7ad28..ccf36412 100644
--- a/src/components/Navbars/components/NavStockSearch/index.js
+++ b/src/components/Navbars/components/NavStockSearch/index.js
@@ -68,7 +68,9 @@ const NavStockSearch = memo(() => {
// 选择股票 - 跳转到详情页
const handleSelectStock = useCallback((stock) => {
clearSearch();
- navigate(`/company/${stock.stock_code}`);
+ // 提取纯数字股票代码(去掉 .SZ/.SH 后缀)
+ const scode = stock.stock_code.split('.')[0];
+ navigate(`/company?scode=${scode}`);
}, [navigate, clearSearch]);
// 处理键盘事件
diff --git a/src/layouts/AppFooter.js b/src/layouts/AppFooter.js
index 68981f23..b573bfe5 100644
--- a/src/layouts/AppFooter.js
+++ b/src/layouts/AppFooter.js
@@ -1,5 +1,5 @@
import React from 'react';
-import { Box, VStack, HStack, Text, Link, useColorModeValue } from '@chakra-ui/react';
+import { Box, VStack, HStack, Text, Link, useColorModeValue, Tooltip } from '@chakra-ui/react';
import RiskDisclaimer from '../components/RiskDisclaimer';
import { LAYOUT_PADDING, Z_INDEX } from './config/layoutConfig';
@@ -12,9 +12,15 @@ const AppFooter = () => {
-
- © 2024 价值前沿. 保留所有权利.
-
+
+
+ © 2026 北京价值前沿科技有限公司
+
+
{
+ if (key === "4连板+") return "#ff4d4f";
+ if (key === "3连板") return "#fa541c";
+ if (key === "2连板") return "#fa8c16";
+ return "#52c41a";
+};
+
+/**
+ * 获取时间颜色
+ */
+const getTimeColor = (key) => {
+ if (key === "秒板") return "#ff4d4f";
+ if (key === "早盘") return "#fa8c16";
+ if (key === "盘中") return "#52c41a";
+ return "#888";
+};
+
+/**
+ * 获取关键词样式(根据排名)
+ */
+const getKeywordStyle = (index) => {
+ if (index < 3) {
+ return {
+ fontSize: "12px",
+ fontWeight: "bold",
+ background: "linear-gradient(135deg, rgba(255,215,0,0.3) 0%, rgba(255,165,0,0.2) 100%)",
+ border: "1px solid rgba(255,215,0,0.5)",
+ color: "#FFD700",
+ padding: "2px 8px",
+ };
+ }
+ if (index < 6) {
+ return {
+ fontSize: "11px",
+ fontWeight: "600",
+ background: "rgba(255,215,0,0.15)",
+ border: "1px solid rgba(255,215,0,0.3)",
+ color: "#D4A84B",
+ padding: "2px 6px",
+ };
+ }
+ return {
+ fontSize: "11px",
+ fontWeight: "normal",
+ background: "rgba(255,255,255,0.08)",
+ border: "1px solid rgba(255,255,255,0.15)",
+ color: "#888",
+ padding: "2px 6px",
+ };
+};
+
+/**
+ * 涨停概览紧凑组件
+ * @param {Object} props
+ * @param {Array} props.keywords - 关键词数组
+ * @param {Object} props.stats - 统计数据
+ */
+const CompactZTOverview = ({ keywords = [], stats }) => {
+ if (!stats && (!keywords || keywords.length === 0)) {
+ return null;
+ }
+
+ return (
+
+ {/* 热门关键词 - 紧凑版 */}
+ {keywords && keywords.length > 0 && (
+
+
+
+
+ 热词
+
+
+
+ {keywords.slice(0, 8).map((kw, idx) => {
+ const style = getKeywordStyle(idx);
+ return (
+
+ {kw.name}
+
+ );
+ })}
+ {keywords.length > 8 && (
+
+ +{keywords.length - 8}
+
+ )}
+
+
+ )}
+
+ {/* 分隔线 */}
+ {keywords && keywords.length > 0 && stats && (
+
+ )}
+
+ {/* 统计数据 - 紧凑版 */}
+ {stats && (
+
+ {/* 连板分布 */}
+
+
连板
+
+ {Object.entries(stats.continuousStats).map(([key, value]) => (
+
+
+ {value}
+
+
+ {key.replace("连板", "").replace("+", "+")}
+
+
+ ))}
+
+
+
+ {/* 分隔点 */}
+
·
+
+ {/* 封板时间 */}
+
+
封板
+
+ {Object.entries(stats.timeStats).map(([key, value]) => (
+
+
+ {value}
+
+
+ {key}
+
+
+ ))}
+
+
+
+ {/* 公告驱动 - 仅在有数据时显示 */}
+ {stats.announcementCount > 0 && (
+ <>
+
·
+
+ 公告
+
+ {stats.announcementCount}
+
+
+ ({stats.announcementRatio}%)
+
+
+ >
+ )}
+
+ )}
+
+ );
+};
+
+export default CompactZTOverview;
diff --git a/src/views/Community/components/HeroPanel/components/DetailModal/DetailModal.js b/src/views/Community/components/HeroPanel/components/DetailModal/DetailModal.js
index 021a2e70..c8acd9f5 100644
--- a/src/views/Community/components/HeroPanel/components/DetailModal/DetailModal.js
+++ b/src/views/Community/components/HeroPanel/components/DetailModal/DetailModal.js
@@ -35,8 +35,7 @@ import {
SectorStocksModal,
ZTSectorView,
EventsTabView,
- HotKeywordsCloud,
- ZTStatsCards,
+ CompactZTOverview,
} from "../index";
import {
createStockColumns,
@@ -584,14 +583,11 @@ const DetailModal = ({
style={{
display: "flex",
flexDirection: "column",
- gap: "20px",
+ gap: "12px",
}}
>
- {/* 热门关键词 */}
-
-
- {/* 涨停统计卡片 */}
-
+ {/* 涨停概览 - 紧凑版(热门关键词 + 统计数据一行显示) */}
+
{/* 视图切换按钮 - 更精致的样式 */}
{
+ if (!time) return null;
+ const d = dayjs(time);
+ if (!d.isValid()) return null;
+ return d.format("MM-DD HH:mm");
+};
/**
* 获取相关度颜色
@@ -115,23 +126,34 @@ const RelatedEventsModal = ({
}}
>
- {/* 标题 */}
+ {/* 标题 + 时间 */}
-
-
- {event.title}
-
+
+
+
+ {event.title}
+
+ {/* 事件时间 */}
+ {(event.created_at || event.event_time || event.publish_time) && (
+
+
+
+ {formatEventTime(event.created_at || event.event_time || event.publish_time)}
+
+
+ )}
+
相关度 {event.relevance_score || 0}
diff --git a/src/views/Community/components/HeroPanel/components/index.js b/src/views/Community/components/HeroPanel/components/index.js
index 8de31be0..02a4417b 100644
--- a/src/views/Community/components/HeroPanel/components/index.js
+++ b/src/views/Community/components/HeroPanel/components/index.js
@@ -5,3 +5,4 @@ export { default as InfoModal } from "./InfoModal";
export { default as CombinedCalendar } from "./CombinedCalendar";
export { default as HotKeywordsCloud } from "./HotKeywordsCloud";
export { default as ZTStatsCards } from "./ZTStatsCards";
+export { default as CompactZTOverview } from "./CompactZTOverview";