feat: edc-web 设备日志管理页 + 在线状态实时刷新

- 新增 /device-logs 设备事件日志管理页 (admin 权限)
  - 支持按设备序列号/事件类型筛选查询
  - 支持 admin 按条件删除日志
  - 不同事件类型彩色标识 (在线=绿, 离线=红, 通信不良=橙)
- 新增 /api/devices/<id>/status 设备状态 API
- 设备列表页:每 5s 异步刷新所有设备在线状态
- 测试操作页:顶部显示设备状态,每 5s 异步刷新
- dnt_info state 支持三态显示 (在线/离线/通信不良)
- 导航栏增加「设备日志」入口 (admin only)
This commit is contained in:
wangfq
2026-06-10 09:14:32 +08:00
parent 60c11fe719
commit ee136cc707
11 changed files with 366 additions and 7 deletions

View File

@@ -290,6 +290,7 @@ function updateTestModeUI(mode) {
async function loadInitialData() {
await loadTestMode();
refreshDeviceStatus();
try {
const resp = await fetch(`/api/automation/${DNT_ID}/progress`);
const data = await resp.json();
@@ -301,6 +302,33 @@ async function loadInitialData() {
}
loadInitialData();
// ─── 设备状态异步刷新 ──────────────────────────
async function refreshDeviceStatus() {
try {
const resp = await fetch(`/api/devices/${DNT_ID}/status`);
const data = await resp.json();
if (data.ok) {
const el = document.getElementById("device-status-text");
if (el) {
el.textContent = data.state_name;
if (data.state === 1) {
el.className = "status-online";
} else if (data.state === 2) {
el.className = "status-poor";
} else {
el.className = "status-offline";
}
}
}
} catch (e) {
// 静默失败
}
}
// 每 5 秒刷新设备状态
setInterval(refreshDeviceStatus, 5000);
// ─── UI ────────────────────────────────────────
function setStatus(msg) {