var healthCheckRunning = false; var healthCheckAbortController = null; function startHealthCheck() { if (healthCheckRunning) { return; } healthCheckRunning = true; healthCheckAbortController = new AbortController(); updateHealthCheckButtons(); resetHealthCheck(); // 某项检测失败(非人为中止)时, 把该组的检测结果标记为"未通过/检测失败" function failGroup(prefix) { setCheckText(prefix + "var1", "已完成"); setCheckText(prefix + "var2", "未通过"); setCheckText(prefix + "var3", "检测失败"); setCheckText(prefix + "var4", "已完成"); setCheckText(prefix + "var5", "未通过"); setCheckText(prefix + "var6", "检测失败"); } checkNetwork() .catch(function (e) { if (e.name === "AbortError") throw e; failGroup("a"); }) .then(function () { if (!healthCheckRunning) return; setCheckText("bvar1", "测试中..."); setCheckText("bvar4", "测试中..."); return checkTime().catch(function (e) { if (e.name === "AbortError") throw e; failGroup("b"); }); }) .then(function () { if (!healthCheckRunning) return; setCheckText("cvar1", "测试中..."); setCheckText("cvar4", "测试中..."); return checkPosition().catch(function (e) { if (e.name === "AbortError") throw e; failGroup("c"); }); }) .then(function () { if (!healthCheckRunning) return; setCheckText("dvar1", "测试中..."); setCheckText("dvar4", "测试中..."); return checkCamera().catch(function (e) { if (e.name === "AbortError") throw e; failGroup("d"); }); }) .then(function () { if (!healthCheckRunning) return; setCheckText("dvar7", "测试中..."); return setCameraWaitAEDone(false) .then(function () { return checkCameraPhoto(); }) .catch(function (e) { if (e.name === "AbortError") throw e; setCheckText("dvar7", "已完成"); setCheckText("dvar8", "未通过"); setCheckText("dvar9", "检测失败"); }); }) .then(function () { if (!healthCheckRunning) return; setCheckText("evar1", "测试中..."); return checkUserApp().catch(function (e) { if (e.name === "AbortError") throw e; setCheckText("evar1", "已完成"); setCheckText("evar2", "未通过"); setCheckText("evar3", "检测失败"); }); }) .catch(function () { // 用户中止检测: 直接结束 }) .finally(function () { // 恢复相机 AE 设置后, 再复位检测状态 setCameraWaitAEDone(true) .catch(function () {}) .finally(function () { healthCheckRunning = false; healthCheckAbortController = null; updateHealthCheckButtons(); }); }); } function stopHealthCheck() { if (!healthCheckRunning) { return; } healthCheckAbortController && healthCheckAbortController.abort(); } function checkHealthCheckStopped() { if (healthCheckAbortController && 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() { var 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", ]; ids.forEach(function (id) { setCheckText(id, "--"); }); } function checkNetwork() { checkHealthCheckStopped(); return fetch("/api/health-check/network", { signal: healthCheckAbortController.signal, }) .then(function (response) { if (!response.ok) { throw new Error("检测失败"); } return response.json(); }) .then(function (data) { checkHealthCheckStopped(); ["avar1", "avar2", "avar3", "avar4", "avar5", "avar6"].forEach(function (id) { setCheckText(id, data[id] !== null && data[id] !== undefined ? data[id] : "--"); }); }); } function checkTime() { checkHealthCheckStopped(); return fetch("/api/health-check/time", { signal: healthCheckAbortController.signal, }) .then(function (response) { if (!response.ok) { throw new Error("检测失败"); } return response.json(); }) .then(function (data) { checkHealthCheckStopped(); setCheckText( "bvar1", data.bvar1 !== null && data.bvar1 !== undefined ? data.bvar1 : "--" ); setCheckText( "bvar2", data.bvar2 !== null && data.bvar2 !== undefined ? data.bvar2 : "--" ); setCheckText( "bvar3", data.bvar3 !== null && data.bvar3 !== undefined ? data.bvar3 : "--" ); setCheckText( "bvar4", data.bvar4 !== null && data.bvar4 !== undefined ? data.bvar4 : "--" ); setCheckText( "bvar5", data.bvar5 !== null && data.bvar5 !== undefined ? data.bvar5 : "--" ); setCheckText( "bvar6", data.bvar6 !== null && data.bvar6 !== undefined ? data.bvar6 : "--" ); }); } function checkPosition() { checkHealthCheckStopped(); return fetch("/api/health-check/position", { signal: healthCheckAbortController.signal, }) .then(function (response) { if (!response.ok) { throw new Error("检测失败"); } return response.json(); }) .then(function (data) { checkHealthCheckStopped(); setCheckText( "cvar1", data.cvar1 !== null && data.cvar1 !== undefined ? data.cvar1 : "--" ); setCheckText( "cvar2", data.cvar2 !== null && data.cvar2 !== undefined ? data.cvar2 : "--" ); setCheckText( "cvar3", data.cvar3 !== null && data.cvar3 !== undefined ? data.cvar3 : "--" ); setCheckText( "cvar4", data.cvar4 !== null && data.cvar4 !== undefined ? data.cvar4 : "--" ); setCheckText( "cvar5", data.cvar5 !== null && data.cvar5 !== undefined ? data.cvar5 : "--" ); setCheckText( "cvar6", data.cvar6 !== null && data.cvar6 !== undefined ? data.cvar6 : "--" ); }); } function checkCamera() { checkHealthCheckStopped(); return fetch("/api/health-check/camera", { signal: healthCheckAbortController.signal, }) .then(function (response) { if (!response.ok) { throw new Error("检测失败"); } return response.json(); }) .then(function (data) { checkHealthCheckStopped(); setCheckText( "dvar1", data.dvar1 !== null && data.dvar1 !== undefined ? data.dvar1 : "--" ); setCheckText( "dvar2", data.dvar2 !== null && data.dvar2 !== undefined ? data.dvar2 : "--" ); setCheckText( "dvar3", data.dvar3 !== null && data.dvar3 !== undefined ? data.dvar3 : "--" ); setCheckText( "dvar4", data.dvar4 !== null && data.dvar4 !== undefined ? data.dvar4 : "--" ); setCheckText( "dvar5", data.dvar5 !== null && data.dvar5 !== undefined ? data.dvar5 : "--" ); setCheckText( "dvar6", data.dvar6 !== null && data.dvar6 !== undefined ? data.dvar6 : "--" ); }); } function checkCameraPhoto() { checkHealthCheckStopped(); return fetch("/api/health-check/camera/photo", { signal: healthCheckAbortController.signal, }) .then(function (response) { if (!response.ok) { throw new Error("检测失败"); } return response.json(); }) .then(function (data) { checkHealthCheckStopped(); setCheckText( "dvar7", data.dvar7 !== null && data.dvar7 !== undefined ? data.dvar7 : "--" ); setCheckText( "dvar8", data.dvar8 !== null && data.dvar8 !== undefined ? data.dvar8 : "--" ); setCheckText( "dvar9", data.dvar9 !== null && data.dvar9 !== undefined ? data.dvar9 : "--" ); }); } function checkUserApp() { checkHealthCheckStopped(); return fetch("/api/health-check/user-app", { signal: healthCheckAbortController.signal, }) .then(function (response) { if (!response.ok) { throw new Error("检测失败"); } return response.json(); }) .then(function (data) { checkHealthCheckStopped(); setCheckText( "evar1", data.evar1 !== null && data.evar1 !== undefined ? data.evar1 : "--" ); setCheckText( "evar2", data.evar2 !== null && data.evar2 !== undefined ? data.evar2 : "--" ); setCheckText( "evar3", data.evar3 !== null && data.evar3 !== undefined ? data.evar3 : "--" ); }); } function setCheckText(id, value) { if (currentPage !== "page7") { return; } setText(id, value, "page7"); var 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(); }