From 149fd7c6e1bca35377dd86bee97a295f9e52f442 Mon Sep 17 00:00:00 2001
From: chengmw <chengmingwei_1984122@126.com>
Date: Wed, 15 Apr 2026 17:53:50 +0800
Subject: [PATCH] feat: 集中化API调用,将预警消息和当事人列表加载集成到CaseDataContext
---
web-app/src/contexts/CaseDataContext.jsx | 62 +++++++++++++++++++++---------
1 files changed, 43 insertions(+), 19 deletions(-)
diff --git a/web-app/src/contexts/CaseDataContext.jsx b/web-app/src/contexts/CaseDataContext.jsx
index f676cd0..2cf72a4 100644
--- a/web-app/src/contexts/CaseDataContext.jsx
+++ b/web-app/src/contexts/CaseDataContext.jsx
@@ -9,6 +9,7 @@
import OutboundBotAPIService from '../services/OutboundBotAPIService';
import EvidenceAPIService from '../services/EvidenceAPIService';
import MediationAgreementAPIService from '../services/MediationAgreementAPIService';
+import MediationTimelineAPIService from '../services/MediationTimelineAPIService';
import { getMergedParams } from '../utils/urlParams';
import { mockTimelineData } from '../mocks/timeline';
import { getFallbackStartTime, parseTimeString } from '../utils/timeFormatter';
@@ -369,20 +370,6 @@
return;
}
- EvidenceAPIService.processCaseFilesOcr(params.caseId).catch((ocrError) => {
- console.error('触发案件文件OCR失败:', ocrError);
- });
-
- try {
- await OutboundBotAPIService.syncStatusByCase({ caseId: params.caseId });
- } catch (syncError) {
- console.error('同步外呼状态失败:', syncError);
- }
- try {
- await OutboundBotAPIService.backfillConversationByCase({ caseId: params.caseId });
- } catch (backfillError) {
- console.error('回补通话记录失败:', backfillError);
- }
// 调用API获取数据
// 将URL中的auth_token转换为authorization传入API
@@ -398,6 +385,14 @@
// 提取timeline数据
const timelineData = response.timeline || response.data?.timeline || response;
+ // 调试日志:输出提取的timeline数据
+ console.log('===== API数据提取 =====');
+ console.log('原始response:', response);
+ console.log('提取的timelineData:', timelineData);
+ console.log('timelineData.mediation:', timelineData.mediation);
+ console.log('timelineData.mediation?.state:', timelineData.mediation?.state);
+ console.log('========================');
+
// 提取nodes数据(确保为数组),兼容 nodeList 和 nodes 两种字段名
const nodesData = response.data?.nodeList || response.data?.nodes || response.nodes || [];
@@ -409,7 +404,7 @@
setProcessNodes(Array.isArray(nodesData) ? nodesData : []); // 确保为数组
setHasLoaded(true); // 标记已加载
- // 并行加载证据材料和调解协议数据(在终态检查之前,确保数据完整性)
+ // 并行加载证据材料、调解协议、预警消息和当事人列表数据(在终态检查之前,确保数据完整性)
await Promise.all([
loadEvidenceData({
caseId: params.caseId,
@@ -417,12 +412,22 @@
caseTypeFirst: params.caseTypeFirst,
platformCode: params.platform_code
}),
- loadAgreementData(params.caseId)
+ loadAgreementData(params.caseId),
+ // 加载预警消息列表
+ MediationTimelineAPIService.getWarningNotifyList(timelineData.id).catch(err => {
+ console.error('加载预警消息失败:', err);
+ return [];
+ }),
+ // 加载当事人列表
+ MediationTimelineAPIService.getPersonList(params.caseId).catch(err => {
+ console.error('加载当事人列表失败:', err);
+ return [];
+ })
]);
// 检查终态状态(调解成功/失败/人工接管),终态不执行外呼和存储
const mediationState = timelineData.mediation?.state;
- const isTerminalState = [2, 3, 4].includes(mediationState);
+ const isTerminalState = [2, 3, 4, 5].includes(mediationState);
if (isTerminalState) {
console.log('案件已处于终态状态:', mediationState, ',跳过外呼和存储');
@@ -439,15 +444,34 @@
// 加载任务时间数据
await loadTaskTime(timelineData);
+ EvidenceAPIService.processCaseFilesOcr(params.caseId).catch((ocrError) => {
+ console.error('触发案件文件OCR失败:', ocrError);
+ });
+
+ try {
+ await OutboundBotAPIService.syncStatusByCase({ caseId: params.caseId });
+ } catch (syncError) {
+ console.error('同步外呼状态失败:', syncError);
+ }
+ try {
+ await OutboundBotAPIService.backfillConversationByCase({ caseId: params.caseId });
+ } catch (backfillError) {
+ console.error('回补通话记录失败:', backfillError);
+ }
+
console.log('Case data loaded successfully:', timelineData);
} catch (err) {
console.error('Failed to load case data:', err);
setError(err.message || '加载案件数据失败');
// 显示错误提示
- message.error('加载案件数据失败,请稍后重试');
+ message.error('加载案件数据失败,使用模拟数据');
- // 使用Mock数据(缓存数据不包含nodes,所以统一使用Mock)
+ // 使用Mock数据作为降级方案
+ const mockTimeline = mockTimelineData.data?.timeline || mockTimelineData;
+ console.log('使用Mock数据降级:', mockTimeline);
+ setCaseData(mockTimeline);
+ setProcessNodes(mockTimelineData.data?.nodes || []);
setHasLoaded(true);
} finally {
--
Gitblit v1.8.0