let healthCheckRunning = false; let healthCheckAbortController = null; async function startHealthCheck() { if (healthCheckRunning) { return; } healthCheckRunning = true; healthCheckAbortController = new AbortController(); updateHealthCheckButtons(); resetHealthCheck(); try { try { setCheckText("avar1", "测试中..."); setCheckText("avar4", "测试中..."); await checkNetwork(); } catch (err) { if (err.name === "AbortError") { return; } setCheckText("avar1", "已完成"); setCheckText("avar2", "未通过"); setCheckText("avar3", "检测失败"); setCheckText("avar4", "已完成"); setCheckText("avar5", "未通过"); setCheckText("avar6", "检测失败"); } if (!healthCheckRunning) { return; } try { setCheckText("bvar1", "测试中..."); setCheckText("bvar4", "测试中..."); await checkTime(); } catch (err) { if (err.name === "AbortError") { return; } setCheckText("bvar1", "已完成"); setCheckText("bvar2", "未通过"); setCheckText("bvar3", "检测失败"); setCheckText("bvar4", "已完成"); setCheckText("bvar5", "未通过"); setCheckText("bvar6", "检测失败"); } if (!healthCheckRunning) { return; } try { setCheckText("cvar1", "测试中..."); setCheckText("cvar4", "测试中..."); await checkPosition(); } catch (err) { if (err.name === "AbortError") { return; } setCheckText("cvar1", "已完成"); setCheckText("cvar2", "未通过"); setCheckText("cvar3", "检测失败"); setCheckText("cvar4", "已完成"); setCheckText("cvar5", "未通过"); setCheckText("cvar6", "检测失败"); } if (!healthCheckRunning) { return; } try { setCheckText("dvar1", "测试中..."); setCheckText("dvar4", "测试中..."); await checkCamera(); } catch (err) { if (err.name === "AbortError") { return; } setCheckText("dvar1", "已完成"); setCheckText("dvar2", "未通过"); setCheckText("dvar3", "检测失败"); setCheckText("dvar4", "已完成"); setCheckText("dvar5", "未通过"); setCheckText("dvar6", "检测失败"); } if (!healthCheckRunning) { return; } try { setCheckText("dvar7", "测试中..."); await setCameraWaitAEDone(false); await checkCameraPhoto(); } catch (err) { if (err.name === "AbortError") { return; } setCheckText("dvar7", "已完成"); setCheckText("dvar8", "未通过"); setCheckText("dvar9", "检测失败"); } if (!healthCheckRunning) { return; } try { setCheckText("evar1", "测试中..."); await checkUserApp(); } catch (err) { if (err.name === "AbortError") { return; } setCheckText("evar1", "已完成"); setCheckText("evar2", "未通过"); setCheckText("evar3", "检测失败"); } } finally { try { await setCameraWaitAEDone(true); } finally { healthCheckRunning = false; healthCheckAbortController = null; updateHealthCheckButtons(); } } } function stopHealthCheck() { if (!healthCheckRunning) { return; } healthCheckAbortController?.abort(); } function checkHealthCheckStopped() { if (healthCheckAbortController?.signal.aborted) { throw new DOMException("Health check stopped", "AbortError"); } } function updateHealthCheckButtons() { if (currentPage !== "page7") { return; } setBtnStatus("btn1", !healthCheckRunning, "page7"); setBtnStatus("btn2", healthCheckRunning, "page7"); } function resetHealthCheck() { const ids = [ "avar1", "avar2", "avar3", "avar4", "avar5", "avar6", "bvar1", "bvar2", "bvar3", "bvar4", "bvar5", "bvar6", "cvar1", "cvar2", "cvar3", "cvar4", "cvar5", "cvar6", "dvar1", "dvar2", "dvar3", "dvar4", "dvar5", "dvar6", "dvar7", "dvar8", "dvar9", "evar1", "evar2", "evar3" ]; for (const id of ids) { setCheckText(id, "--"); } } async function checkNetwork() { checkHealthCheckStopped(); const response = await fetch("/api/health-check/network", { signal: healthCheckAbortController.signal }); if (!response.ok) { throw new Error("检测失败"); } const data = await response.json(); checkHealthCheckStopped(); for (const id of [ "avar1", "avar2", "avar3", "avar4", "avar5", "avar6" ]) { setCheckText(id, data[id] ?? "--"); } } async function checkTime() { checkHealthCheckStopped(); const response = await fetch("/api/health-check/time", { signal: healthCheckAbortController.signal }); if (!response.ok) { throw new Error("检测失败"); } const data = await response.json(); checkHealthCheckStopped(); setCheckText("bvar1", data.bvar1 ?? "--"); setCheckText("bvar2", data.bvar2 ?? "--"); setCheckText("bvar3", data.bvar3 ?? "--"); setCheckText("bvar4", data.bvar4 ?? "--"); setCheckText("bvar5", data.bvar5 ?? "--"); setCheckText("bvar6", data.bvar6 ?? "--"); } async function checkPosition() { checkHealthCheckStopped(); const response = await fetch("/api/health-check/position", { signal: healthCheckAbortController.signal }); if (!response.ok) { throw new Error("检测失败"); } const data = await response.json(); checkHealthCheckStopped(); setCheckText("cvar1", data.cvar1 ?? "--"); setCheckText("cvar2", data.cvar2 ?? "--"); setCheckText("cvar3", data.cvar3 ?? "--"); setCheckText("cvar4", data.cvar4 ?? "--"); setCheckText("cvar5", data.cvar5 ?? "--"); setCheckText("cvar6", data.cvar6 ?? "--"); } async function checkCamera() { checkHealthCheckStopped(); const response = await fetch("/api/health-check/camera", { signal: healthCheckAbortController.signal }); if (!response.ok) { throw new Error("检测失败"); } const data = await response.json(); checkHealthCheckStopped(); setCheckText("dvar1", data.dvar1 ?? "--"); setCheckText("dvar2", data.dvar2 ?? "--"); setCheckText("dvar3", data.dvar3 ?? "--"); setCheckText("dvar4", data.dvar4 ?? "--"); setCheckText("dvar5", data.dvar5 ?? "--"); setCheckText("dvar6", data.dvar6 ?? "--"); } async function checkCameraPhoto() { checkHealthCheckStopped(); const response = await fetch("/api/health-check/camera/photo", { signal: healthCheckAbortController.signal }); if (!response.ok) { throw new Error("检测失败"); } const data = await response.json(); checkHealthCheckStopped(); setCheckText("dvar7", data.dvar7 ?? "--"); setCheckText("dvar8", data.dvar8 ?? "--"); setCheckText("dvar9", data.dvar9 ?? "--"); } async function checkUserApp() { checkHealthCheckStopped(); const response = await fetch("/api/health-check/user-app", { signal: healthCheckAbortController.signal }); if (!response.ok) { throw new Error("检测失败"); } const data = await response.json(); checkHealthCheckStopped(); setCheckText("evar1", data.evar1 ?? "--"); setCheckText("evar2", data.evar2 ?? "--"); setCheckText("evar3", data.evar3 ?? "--"); } function setCheckText(id, value) { if (currentPage !== "page7") { return; } setText(id, value, "page7"); const el = document.getElementById(id); if (!el) { return; } el.classList.remove("check-success", "check-fail"); if (value === "已完成" || value === "通过") { el.classList.add("check-success"); } else if (value === "未通过") { el.classList.add("check-fail"); } } function initPage7() { } function exitPage7() { stopHealthCheck() }