From 844c875028a3aee6d2ffc910e72681c41fce2caf Mon Sep 17 00:00:00 2001
From: tony.cheng <chengmingwei_1984122@126.com>
Date: Tue, 03 Mar 2026 16:59:24 +0800
Subject: [PATCH] feat: 完善案件数据上下文和外呼组件功能
---
web-app/src/utils/urlParams.js | 4 ++--
web-app/src/components/dashboard/TopSection.jsx | 10 +++++-----
web-app/src/contexts/CaseDataContext.jsx | 11 +++++++++++
document/原型/index.html | 8 ++++----
web-app/src/components/common/OutboundCallWidget.jsx | 2 +-
web-app/src/components/dashboard/MediationProgress.jsx | 10 +++++-----
6 files changed, 28 insertions(+), 17 deletions(-)
diff --git "a/document/\345\216\237\345\236\213/index.html" "b/document/\345\216\237\345\236\213/index.html"
index c7c483e..a585dad 100644
--- "a/document/\345\216\237\345\236\213/index.html"
+++ "b/document/\345\216\237\345\236\213/index.html"
@@ -1349,19 +1349,19 @@
<div class="case-info">
<div class="info-item">
<div class="info-label">事项编号</div>
- <div class="info-value">LD-2026-0014</div>
+ <div class="info-value">----</div>
</div>
<div class="info-item">
<div class="info-label">纠纷类型</div>
- <div class="info-value">劳动争议/拖欠、克扣工资</div>
+ <div class="info-value">----</div>
</div>
<div class="info-item">
<div class="info-label">调解开始时间</div>
- <div class="info-value">2026-01-15 09:30</div>
+ <div class="info-value">----</div>
</div>
<div class="info-item">
<div class="info-label">预计结束时间</div>
- <div class="info-value">2026-01-15 11:00</div>
+ <div class="info-value">----</div>
</div>
</div>
</div>
diff --git a/web-app/src/components/common/OutboundCallWidget.jsx b/web-app/src/components/common/OutboundCallWidget.jsx
index 33ed299..1a60f0c 100644
--- a/web-app/src/components/common/OutboundCallWidget.jsx
+++ b/web-app/src/components/common/OutboundCallWidget.jsx
@@ -21,7 +21,7 @@
const OutboundCallWidget = ({ onSwitchTab, onRefreshData }) => {
const { caseData } = useCaseData();
const [isVisible, setIsVisible] = useState(false); // 默认隐藏
- const [isMinimized, setIsMinimized] = useState(true);
+ const [isMinimized, setIsMinimized] = useState(false); // 默认展开(非最小化)
const [calls, setCalls] = useState([]);
const isMountedRef = useRef(true);
diff --git a/web-app/src/components/dashboard/MediationProgress.jsx b/web-app/src/components/dashboard/MediationProgress.jsx
index d7fd167..27af2b0 100644
--- a/web-app/src/components/dashboard/MediationProgress.jsx
+++ b/web-app/src/components/dashboard/MediationProgress.jsx
@@ -33,17 +33,17 @@
);
}
- // 按order_no排序,处理缺失order_no的情况
+ // 按orderNo排序,兼容 orderNo 和 order_no 两种字段名
const sortedNodes = [...nodes].sort((a, b) => {
- const orderA = a.order_no ?? 999;
- const orderB = b.order_no ?? 999;
+ const orderA = a.orderNo ?? a.order_no ?? 999;
+ const orderB = b.orderNo ?? b.order_no ?? 999;
return orderA - orderB;
});
- // 转换为步骤数据格式
+ // 转换为步骤数据格式,兼容 nodeName 和 node_name 两种字段名
const steps = sortedNodes.map((node, index) => ({
key: index,
- label: node.node_name || `步骤${index + 1}`,
+ label: node.nodeName || node.node_name || `步骤${index + 1}`,
nodeState: node.nodeState ?? -1 // 缺失时默认为-1(未激活)
}));
diff --git a/web-app/src/components/dashboard/TopSection.jsx b/web-app/src/components/dashboard/TopSection.jsx
index fe61d02..bc55e94 100644
--- a/web-app/src/components/dashboard/TopSection.jsx
+++ b/web-app/src/components/dashboard/TopSection.jsx
@@ -10,11 +10,11 @@
const timeline = caseData || {};
// 从 timeline 中获取数据,提供默认值
- const caseNumber = timeline.case_ref || 'LD-2026-0014';
- const disputeType = timeline.case_type_first_name || '劳动争议/拖欠、克扣工资';
- const startTime = timeline.mediation?.start_date || '2026-01-15 09:30';
- const endTime = timeline.mediation?.end_date || '2026-01-15 11:00';
- const aiStatus = translateMediationState(timeline.mediation?.state) || 'AI调解中';
+ const caseNumber = timeline.case_ref || '---';
+ const disputeType = timeline.case_type_first_name || '---';
+ const startTime = timeline.mediation?.start_date || '---';
+ const endTime = timeline.mediation?.end_date || '---';
+ const aiStatus = translateMediationState(timeline.mediation?.state) || '---';
return (
<section className="top-section">
diff --git a/web-app/src/contexts/CaseDataContext.jsx b/web-app/src/contexts/CaseDataContext.jsx
index 976a0c5..80382a9 100644
--- a/web-app/src/contexts/CaseDataContext.jsx
+++ b/web-app/src/contexts/CaseDataContext.jsx
@@ -139,6 +139,17 @@
if (successJobs.length > 0) {
localStorage.setItem(OUTBOUND_JOBS_KEY, JSON.stringify(successJobs));
console.log('存储外呼任务成功,数量:', successJobs.length);
+
+ // 外呼成功后,清除对应的失败记录
+ const storedFailedJobs = JSON.parse(localStorage.getItem(`${OUTBOUND_JOBS_KEY}_failed`) || '[]');
+ if (storedFailedJobs.length > 0) {
+ // 获取成功任务的 personId 列表
+ const successPersonIds = successJobs.map(job => job.personId);
+ // 过滤掉已成功的 personId 对应的失败记录
+ const remainingFailedJobs = storedFailedJobs.filter(job => !successPersonIds.includes(job.personId));
+ localStorage.setItem(`${OUTBOUND_JOBS_KEY}_failed`, JSON.stringify(remainingFailedJobs));
+ console.log('外呼成功后清除失败记录,清除数量:', storedFailedJobs.length - remainingFailedJobs.length);
+ }
}
// 存储失败的任务到 localStorage(用于气泡显示)
diff --git a/web-app/src/utils/urlParams.js b/web-app/src/utils/urlParams.js
index 3464970..1d424f6 100644
--- a/web-app/src/utils/urlParams.js
+++ b/web-app/src/utils/urlParams.js
@@ -39,11 +39,11 @@
* @returns {Object} 合并后的参数对象
*/
export const getMergedParams = () => {
- const defaultParams = getDefaultParams();
+ // const defaultParams = getDefaultParams();
const urlParams = parseUrlParams();
return {
- ...defaultParams,
+ // ...defaultParams,
...urlParams
};
};
--
Gitblit v1.8.0