app.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. // DOM 加载完成后执行,启动入口:初始化菜单、默认页面加载
  2. document.addEventListener("DOMContentLoaded", function () {
  3. var items = document.querySelectorAll(".menu-item");
  4. function setActive(name) {
  5. items.forEach(function (i) {
  6. i.classList.toggle("active", i.dataset.page === name);
  7. });
  8. }
  9. function bindMenu() {
  10. items.forEach(function (item) {
  11. item.addEventListener("click", function () {
  12. var page = item.dataset.page;
  13. setActive(page);
  14. loadPage(page);
  15. });
  16. });
  17. }
  18. bindMenu();
  19. setActive("page1");
  20. loadPage("page1");
  21. });
  22. function logout() {
  23. disconnectLog(); // 断开日志流连接, 避免在注销后, 日志流可能仍然占用PID资源
  24. window.location.href = "/api/auth/logout";
  25. }
  26. function setIMEI(imei) {
  27. var el = document.getElementById("imei-value");
  28. if (el) {
  29. el.textContent = imei;
  30. }
  31. }
  32. function fetchIMEI() {
  33. fetch("/api/device/imei")
  34. .then(function (res) {
  35. if (!res.ok) {
  36. throw new Error("http error");
  37. }
  38. return res.text();
  39. })
  40. .then(function (imei) {
  41. if (!imei || imei.trim() === "") {
  42. throw new Error("empty imei");
  43. }
  44. setIMEI(imei.trim());
  45. })
  46. .catch(function (e) {
  47. console.log("get imei failed, retrying...");
  48. setTimeout(fetchIMEI, 3000); // 3秒后继续重试
  49. });
  50. }
  51. var sysTimeTimer = null;
  52. function startSysTime() {
  53. if (sysTimeTimer !== null) {
  54. return;
  55. }
  56. function update() {
  57. var el = document.getElementById("sys-time");
  58. if (!el) {
  59. return;
  60. }
  61. var now = new Date();
  62. var year = now.getFullYear();
  63. var month = String(now.getMonth() + 1).padStart(2, "0");
  64. var day = String(now.getDate()).padStart(2, "0");
  65. var hour = String(now.getHours()).padStart(2, "0");
  66. var min = String(now.getMinutes()).padStart(2, "0");
  67. var sec = String(now.getSeconds()).padStart(2, "0");
  68. el.textContent = year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec;
  69. }
  70. update();
  71. sysTimeTimer = setInterval(update, 1000);
  72. }
  73. document.addEventListener("DOMContentLoaded", function () {
  74. startSysTime();
  75. });
  76. function reboot() {
  77. if (!confirm("确定重启设备吗?")) return;
  78. fetch("/api/system/reboot", {
  79. method: "POST",
  80. })
  81. .then(function (r) {
  82. return r.json();
  83. })
  84. .then(function (d) {
  85. if (d.ok) {
  86. alert("设备正在重启...");
  87. setTimeout(logout, 1000);
  88. } else {
  89. alert("重启失败: " + d.error);
  90. }
  91. })
  92. .catch(function (e) {
  93. return alert("请求失败: " + e);
  94. });
  95. }
  96. function loadIMEI() {
  97. fetchIMEI();
  98. }
  99. loadIMEI();
  100. window.onload = function () {
  101. var mask = document.getElementById("loading-mask");
  102. if (mask) {
  103. mask.style.display = "none";
  104. }
  105. };