// DOM 加载完成后执行,启动入口:初始化菜单、默认页面加载 document.addEventListener("DOMContentLoaded", function () { var items = document.querySelectorAll(".menu-item"); function setActive(name) { items.forEach(function (i) { i.classList.toggle("active", i.dataset.page === name); }); } function bindMenu() { items.forEach(function (item) { item.addEventListener("click", function () { var page = item.dataset.page; setActive(page); loadPage(page); }); }); } bindMenu(); setActive("page1"); loadPage("page1"); }); function logout() { disconnectLog(); // 断开日志流连接, 避免在注销后, 日志流可能仍然占用PID资源 window.location.href = "/api/auth/logout"; } function setIMEI(imei) { var el = document.getElementById("imei-value"); if (el) { el.textContent = imei; } } // IMEI 重试间隔: 失败时从 3s 起翻倍, 上限 60s。 // 设备早期(IMEI 文件尚未生成)能快速补上, 若接口长期不可用也不会一直每 3 秒空转。 var imeiRetryDelay = 3000; function fetchIMEI() { fetch("/api/device/imei") .then(function (res) { if (!res.ok) { throw new Error("http error"); } return res.text(); }) .then(function (imei) { if (!imei || imei.trim() === "") { throw new Error("empty imei"); } setIMEI(imei.trim()); imeiRetryDelay = 3000; // 成功一次即复位, 后续偶发失败仍快速重试 }) .catch(function (e) { setTimeout(fetchIMEI, imeiRetryDelay); imeiRetryDelay = Math.min(imeiRetryDelay * 2, 60000); }); } var sysTimeTimer = null; function startSysTime() { if (sysTimeTimer !== null) { return; } function update() { var el = document.getElementById("sys-time"); if (!el) { return; } var now = new Date(); var year = now.getFullYear(); var month = String(now.getMonth() + 1).padStart(2, "0"); var day = String(now.getDate()).padStart(2, "0"); var hour = String(now.getHours()).padStart(2, "0"); var min = String(now.getMinutes()).padStart(2, "0"); var sec = String(now.getSeconds()).padStart(2, "0"); el.textContent = year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec; } update(); sysTimeTimer = setInterval(update, 1000); } document.addEventListener("DOMContentLoaded", function () { startSysTime(); }); function reboot() { if (!confirm("确定重启设备吗?")) return; fetch("/api/system/reboot", { method: "POST", }) .then(function (r) { return r.json(); }) .then(function (d) { if (d.ok) { alert("设备正在重启..."); setTimeout(logout, 1000); } else { alert("重启失败: " + d.error); } }) .catch(function (e) { return alert("请求失败: " + e); }); } function loadIMEI() { fetchIMEI(); } loadIMEI(); window.onload = function () { var mask = document.getElementById("loading-mask"); if (mask) { mask.style.display = "none"; } };