| | |
| | | } |
| | | }); |
| | | |
| | | // 获取成功任务的 personId 集合 |
| | | const successPersonIds = new Set(successJobs.map(job => job.personId)); |
| | | |
| | | // 过滤掉已有成功任务的 personId 对应的失败任务(成功任务优先) |
| | | const filteredFailedJobs = uniqueFailedJobs.filter(job => !successPersonIds.has(job.personId)); |
| | | |
| | | // 合并所有任务 |
| | | return [...successJobs, ...uniqueFailedJobs]; |
| | | return [...successJobs, ...filteredFailedJobs]; |
| | | } catch (err) { |
| | | console.error('读取外呼任务失败:', err); |
| | | return []; |
| | |
| | | }; |
| | | window.addEventListener('outbound-jobs-updated', handleOutboundJobsUpdated); |
| | | |
| | | // 监听调解终止事件(关闭外呼气泡) |
| | | const handleMediationTerminated = () => { |
| | | console.log('收到调解终止事件,关闭外呼气泡'); |
| | | setIsVisible(false); |
| | | setIsMinimized(true); |
| | | // 清空localStorage中的外呼任务 |
| | | localStorage.removeItem(OUTBOUND_JOBS_KEY); |
| | | setCalls([]); |
| | | }; |
| | | window.addEventListener('mediation-terminated', handleMediationTerminated); |
| | | |
| | | // 清理函数 |
| | | return () => { |
| | | clearInterval(interval); |
| | | window.removeEventListener('outbound-jobs-updated', handleOutboundJobsUpdated); |
| | | window.removeEventListener('mediation-terminated', handleMediationTerminated); |
| | | isMountedRef.current = false; |
| | | }; |
| | | }, [fetchCallStatus]); |