(data)
| 1830 | |
| 1831 | // 更新批量进度 |
| 1832 | function updateBatchProgress(data) { |
| 1833 | const progress = ((data.completed / data.total) * 100).toFixed(0); |
| 1834 | elements.batchProgressText.textContent = `${data.completed}/${data.total}`; |
| 1835 | elements.batchProgressPercent.textContent = `${progress}%`; |
| 1836 | elements.progressBar.style.width = `${progress}%`; |
| 1837 | elements.batchSuccess.textContent = data.success; |
| 1838 | elements.batchFailed.textContent = data.failed; |
| 1839 | elements.batchRemaining.textContent = data.total - data.completed; |
| 1840 | |
| 1841 | // 记录日志(避免重复) |
| 1842 | if (data.completed > 0) { |
| 1843 | const lastSuccess = parseInt(elements.batchSuccess.dataset.last || '0'); |
| 1844 | const lastFailed = parseInt(elements.batchFailed.dataset.last || '0'); |
| 1845 | |
| 1846 | if (data.success > lastSuccess) { |
| 1847 | addLog('success', `[成功] 第 ${data.success} 个账号注册成功`); |
| 1848 | } |
| 1849 | if (data.failed > lastFailed) { |
| 1850 | addLog('error', `[失败] 第 ${data.failed} 个账号注册失败`); |
| 1851 | } |
| 1852 | |
| 1853 | elements.batchSuccess.dataset.last = data.success; |
| 1854 | elements.batchFailed.dataset.last = data.failed; |
| 1855 | } |
| 1856 | } |
| 1857 | |
| 1858 | // 加载最近注册任务 |
| 1859 | function getRegistrationTaskStatusMeta(status) { |
no test coverage detected