| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- // 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";
- }
- };
|