()
| 2611 | |
| 2612 | // 页面加载时恢复进行中的任务(处理跨页面导航后回到注册页的情况) |
| 2613 | async function restoreActiveTask() { |
| 2614 | const saved = sessionStorage.getItem('activeTask'); |
| 2615 | if (!saved) return; |
| 2616 | |
| 2617 | let state; |
| 2618 | try { |
| 2619 | state = JSON.parse(saved); |
| 2620 | } catch { |
| 2621 | sessionStorage.removeItem('activeTask'); |
| 2622 | return; |
| 2623 | } |
| 2624 | |
| 2625 | const { mode, task_uuid, batch_id, total } = state; |
| 2626 | |
| 2627 | if (mode === 'single' && task_uuid) { |
| 2628 | // 查询任务是否仍在运行 |
| 2629 | try { |
| 2630 | const data = await api.get(`/registration/tasks/${task_uuid}`); |
| 2631 | if (['completed', 'failed', 'cancelled'].includes(data.status)) { |
| 2632 | sessionStorage.removeItem('activeTask'); |
| 2633 | return; |
| 2634 | } |
| 2635 | // 任务仍在运行,恢复状态 |
| 2636 | currentTask = data; |
| 2637 | activeTaskUuid = task_uuid; |
| 2638 | taskCompleted = false; |
| 2639 | taskFinalStatus = null; |
| 2640 | toastShown = false; |
| 2641 | displayedLogs.clear(); |
| 2642 | elements.startBtn.disabled = true; |
| 2643 | elements.cancelBtn.disabled = false; |
| 2644 | showTaskStatus(data); |
| 2645 | updateTaskStatus(data.status); |
| 2646 | addLog('info', `[系统] 检测到进行中的任务,正在重连监控... (${task_uuid.substring(0, 8)})`); |
| 2647 | connectWebSocket(task_uuid); |
| 2648 | } catch { |
| 2649 | sessionStorage.removeItem('activeTask'); |
| 2650 | } |
| 2651 | } else if ((mode === 'batch' || mode === 'outlook_batch') && batch_id) { |
| 2652 | // 查询批量任务是否仍在运行 |
| 2653 | const endpoint = mode === 'outlook_batch' |
| 2654 | ? `/registration/outlook-batch/${batch_id}` |
| 2655 | : `/registration/batch/${batch_id}`; |
| 2656 | try { |
| 2657 | const data = await api.get(endpoint); |
| 2658 | if (data.finished) { |
| 2659 | sessionStorage.removeItem('activeTask'); |
| 2660 | return; |
| 2661 | } |
| 2662 | // 批量任务仍在运行,恢复状态 |
| 2663 | currentBatch = { batch_id, ...data, pollingMode: mode }; |
| 2664 | activeBatchId = batch_id; |
| 2665 | isOutlookBatchMode = (mode === 'outlook_batch'); |
| 2666 | batchCompleted = false; |
| 2667 | batchFinalStatus = null; |
| 2668 | toastShown = false; |
| 2669 | displayedLogs.clear(); |
| 2670 | elements.startBtn.disabled = true; |
no test coverage detected