From ce77556eebb6896903be1dc8ac3202b42b96649d Mon Sep 17 00:00:00 2001
From: tony.cheng <chengmingwei_1984122@126.com>
Date: Wed, 04 Feb 2026 21:06:04 +0800
Subject: [PATCH] feat: 实现首页任务时间实时计时功能
---
web-app/src/components/dashboard/FloatingControlPanel.jsx | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/web-app/src/components/dashboard/FloatingControlPanel.jsx b/web-app/src/components/dashboard/FloatingControlPanel.jsx
index e0bbf8b..1a80c74 100644
--- a/web-app/src/components/dashboard/FloatingControlPanel.jsx
+++ b/web-app/src/components/dashboard/FloatingControlPanel.jsx
@@ -1,17 +1,21 @@
import React from 'react';
import { useCaseData } from '../../contexts/CaseDataContext';
import { translateMediationState } from '../../utils/stateTranslator';
+import { useTaskTimer } from '../../hooks/useTaskTimer';
/**
* 底部悬浮控制面板
*/
const FloatingControlPanel = ({ onManualTakeover }) => {
- const { caseData } = useCaseData();
+ const { caseData, taskStartTime, isTaskTimeFallback } = useCaseData();
const timeline = caseData || {};
const state = timeline.mediation?.state;
const nodeName = timeline.current_node?.node_name || '';
const orderNo = timeline.current_node?.order_no || 1;
+
+ // 使用任务计时Hook获取实时时间
+ const { formattedTime } = useTaskTimer(taskStartTime, isTaskTimeFallback);
// 根据状态生成状态文本
let statusText = '';
@@ -22,9 +26,6 @@
// 其他状态
statusText = translateMediationState(state) || '调解进行中';
}
-
- // 获取已进行时间(使用before_duration)
- const elapsedTime = timeline.before_duration || '25分钟';
const handleTakeover = () => {
if (onManualTakeover) {
@@ -43,7 +44,11 @@
<span className="status-dot"></span>
<span className="status-text">
{statusText}{' '}
- <span style={{ color: 'gray' }}>(已进行:{elapsedTime})</span>
+ <span style={{ color: 'gray' }}>
+ (已进行:{formattedTime}
+ {isTaskTimeFallback && <span style={{ color: '#faad14' }}> *</span>}
+ )
+ </span>
</span>
</div>
</div>
--
Gitblit v1.8.0