From daf7372bab79c87bad4918a658ebc6e27b4ca24d Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Mon, 3 Nov 2025 12:58:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E5=A4=8D=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=A6=82=E5=BF=B5=E5=8D=A1=E7=89=87=E8=B7=B3=E8=BD=AC=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E6=94=AF=E6=8C=81=E8=B7=B3=E8=BD=AC=E8=87=B3?= =?UTF-8?q?=E6=A6=82=E5=BF=B5=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 功能优化: - 相关概念卡片点击跳转至概念中心(/concepts)并自动搜索该概念 - 概念相关股票支持点击跳转至公司详情页 组件修改: - RelatedConceptsSection/index.js: * 修复 handleConceptClick 函数跳转路径 * 从错误的 /concept/:name 改为正确的 /concepts?q=:name * 使用 encodeURIComponent 确保中文概念名称正确编码 - RelatedConceptsSection/ConceptStockItem.js: * 新增 handleStockClick 点击处理函数 * 点击股票跳转至公司详情页(valuefrontier.cn/company) * 添加 hover 效果和过渡动画 * 使用 stopPropagation 防止事件冒泡到概念卡片 跳转行为: - 简单概念卡片(横向)→ 点击跳转到概念中心搜索结果页 - 详细概念卡片(展开后)→ 点击跳转到概念中心搜索结果页 - 概念相关股票 → 点击跳转到公司详情页(新标签页) URL示例: - 点击"人工智能"概念 → /concepts?q=人工智能 - 点击股票"000001.SZ" → valuefrontier.cn/company?scode=000001 用户体验提升: - 概念卡片跳转逻辑符合用户预期 - 股票点击可查看公司详情,提供更多信息 - 事件冒泡控制正确,避免误触发 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../RelatedConceptsSection/ConceptStockItem.js | 14 ++++++++++++++ .../RelatedConceptsSection/index.js | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/views/Community/components/DynamicNewsDetail/RelatedConceptsSection/ConceptStockItem.js b/src/views/Community/components/DynamicNewsDetail/RelatedConceptsSection/ConceptStockItem.js index 9268b53b..1321d6ca 100644 --- a/src/views/Community/components/DynamicNewsDetail/RelatedConceptsSection/ConceptStockItem.js +++ b/src/views/Community/components/DynamicNewsDetail/RelatedConceptsSection/ConceptStockItem.js @@ -28,12 +28,26 @@ const ConceptStockItem = ({ stock }) => { const stockChangeColor = stockChangePct > 0 ? 'red' : stockChangePct < 0 ? 'green' : 'gray'; const stockChangeSymbol = stockChangePct > 0 ? '+' : ''; + // 处理股票详情跳转 + const handleStockClick = (e) => { + e.stopPropagation(); // 阻止事件冒泡到概念卡片 + const cleanCode = stock.stock_code.replace(/\.(SZ|SH)$/i, ''); + window.open(`https://valuefrontier.cn/company?scode=${cleanCode}`, '_blank'); + }; + return ( diff --git a/src/views/Community/components/DynamicNewsDetail/RelatedConceptsSection/index.js b/src/views/Community/components/DynamicNewsDetail/RelatedConceptsSection/index.js index 6d95bcfd..f0355d7f 100644 --- a/src/views/Community/components/DynamicNewsDetail/RelatedConceptsSection/index.js +++ b/src/views/Community/components/DynamicNewsDetail/RelatedConceptsSection/index.js @@ -62,8 +62,8 @@ const RelatedConceptsSection = ({ keywords, effectiveTradingDate, eventTime }) = * @param {Object} concept - 概念对象 */ const handleConceptClick = (concept) => { - // 跳转到概念详情页 - navigate(`/concept/${concept.name}`); + // 跳转到概念中心,并搜索该概念 + navigate(`/concepts?q=${encodeURIComponent(concept.name)}`); }; return (