| | |
| | | const { formattedTime } = useTaskTimer(taskStartTime, isTaskTimeFallback); |
| | | |
| | | // 生成状态文本 |
| | | const statusText = state === 1 |
| | | ? `调解进行中-阶段${orderNo}:${nodeName}` |
| | | : (translateMediationState(state) || '调解进行中'); |
| | | const getStatusText = () => { |
| | | const stateNum = Number(state); |
| | | if (stateNum === 1) { |
| | | return `调解进行中-阶段${orderNo}:${nodeName}`; |
| | | } |
| | | return translateMediationState(state) || '调解进行中'; |
| | | }; |
| | | |
| | | const statusText = getStatusText(); |
| | | |
| | | // ==================== 状态控制按钮逻辑 ==================== |
| | | |
| | |
| | | setControlConfirmVisible(false); |
| | | setRemark(''); |
| | | setControlAction(null); |
| | | |
| | | // 如果是终止操作,触发事件关闭外呼气泡 |
| | | if (controlAction === 'terminate') { |
| | | window.dispatchEvent(new CustomEvent('mediation-terminated')); |
| | | console.log('调解终止,触发外呼气泡关闭事件'); |
| | | } |
| | | |
| | | refreshData(); |
| | | } catch (error) { |
| | |
| | | * 渲染控制区域(按钮或印章) |
| | | */ |
| | | const renderControlAction = () => { |
| | | const stateNum = Number(state); |
| | | |
| | | // 终态状态(调解成功/失败/人工接管):显示印章 |
| | | if (TERMINAL_STATES.includes(state) || state === TAKEOVER_STATE) { |
| | | return <TakeoverStamp state={state} />; |
| | | if (TERMINAL_STATES.includes(stateNum) || stateNum === TAKEOVER_STATE) { |
| | | return <TakeoverStamp state={stateNum} />; |
| | | } |
| | | |
| | | // 已终止/暂停状态(5):显示恢复按钮和人工接管按钮 |
| | | if (stateNum === PAUSED_STATE) { |
| | | return ( |
| | | <> |
| | | {renderStateControlButton()} |
| | | <TakeoverButton loading={takeoverLoading} onClick={handleTakeover} /> |
| | | </> |
| | | ); |
| | | } |
| | | |
| | | // 调解中(1):显示终止按钮和人工接管按钮 |
| | | return ( |
| | |
| | | <div className="floating-control-panel"> |
| | | <div className="control-status"> |
| | | <div className="status-indicator"> |
| | | <span className="status-dot"></span> |
| | | <span className="status-dot" style={Number(state) === 5 ? { background: '#e63946' } : {}}></span> |
| | | <span className="status-text"> |
| | | {statusText}{' '} |
| | | <span style={{ color: 'gray' }}> |