From b52b54347da428e5f43a4f279f52ebd13539b30c Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Tue, 16 Dec 2025 20:37:20 +0800 Subject: [PATCH] =?UTF-8?q?fix(mock):=20=E4=BF=AE=E5=A4=8D=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E6=95=B0=E6=8D=AE=E5=92=8C=20API=20=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - events.js: 增强搜索支持股票名称/代码,修复字段名 - event.js: 返回结构调整为 { data, pagination } 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/mocks/data/events.js | 20 ++++++++++++++++---- src/mocks/handlers/event.js | 23 ++++++++++++----------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/mocks/data/events.js b/src/mocks/data/events.js index 6e73297f..37f6aed4 100644 --- a/src/mocks/data/events.js +++ b/src/mocks/data/events.js @@ -874,8 +874,20 @@ export function generateMockEvents(params = {}) { e.title.toLowerCase().includes(query) || e.description.toLowerCase().includes(query) || // keywords 是对象数组 { concept, score, ... },需要访问 concept 属性 - e.keywords.some(k => k.concept && k.concept.toLowerCase().includes(query)) + e.keywords.some(k => k.concept && k.concept.toLowerCase().includes(query)) || + // 搜索 related_stocks 中的股票名称和代码 + (e.related_stocks && e.related_stocks.some(stock => + (stock.stock_name && stock.stock_name.toLowerCase().includes(query)) || + (stock.stock_code && stock.stock_code.toLowerCase().includes(query)) + )) || + // 搜索行业 + (e.industry && e.industry.toLowerCase().includes(query)) ); + + // 如果搜索结果为空,返回所有事件(宽松模式) + if (filteredEvents.length === 0) { + filteredEvents = allEvents; + } } // 行业筛选 @@ -1042,7 +1054,7 @@ function generateTransmissionChain(industry, index) { let nodeName; if (nodeType === 'company' && industryStock) { - nodeName = industryStock.name; + nodeName = industryStock.stock_name; } else if (nodeType === 'industry') { nodeName = `${industry}产业`; } else if (nodeType === 'policy') { @@ -1133,7 +1145,7 @@ export function generateDynamicNewsEvents(timeRange = null, count = 30) { const stock = industryStocks[j % industryStocks.length]; relatedStocks.push({ stock_code: stock.stock_code, - stock_name: stock.name, + stock_name: stock.stock_name, relation_desc: relationDescriptions[j % relationDescriptions.length] }); } @@ -1145,7 +1157,7 @@ export function generateDynamicNewsEvents(timeRange = null, count = 30) { if (!relatedStocks.some(s => s.stock_code === randomStock.stock_code)) { relatedStocks.push({ stock_code: randomStock.stock_code, - stock_name: randomStock.name, + stock_name: randomStock.stock_name, relation_desc: relationDescriptions[relatedStocks.length % relationDescriptions.length] }); } diff --git a/src/mocks/handlers/event.js b/src/mocks/handlers/event.js index a8f488e5..05549a9d 100644 --- a/src/mocks/handlers/event.js +++ b/src/mocks/handlers/event.js @@ -119,9 +119,12 @@ export const eventHandlers = [ try { const result = generateMockEvents(params); + // 返回格式兼容 NewsPanel 期望的结构 + // NewsPanel 期望: { success, data: [], pagination: {} } return HttpResponse.json({ success: true, - data: result, + data: result.events, // 事件数组 + pagination: result.pagination, // 分页信息 message: '获取成功' }); } catch (error) { @@ -135,16 +138,14 @@ export const eventHandlers = [ { success: false, error: '获取事件列表失败', - data: { - events: [], - pagination: { - page: 1, - per_page: 10, - total: 0, - pages: 0, // ← 对齐后端字段名 - has_prev: false, // ← 对齐后端 - has_next: false // ← 对齐后端 - } + data: [], + pagination: { + page: 1, + per_page: 10, + total: 0, + pages: 0, + has_prev: false, + has_next: false } }, { status: 500 }