- 新增 /device-logs 设备事件日志管理页 (admin 权限) - 支持按设备序列号/事件类型筛选查询 - 支持 admin 按条件删除日志 - 不同事件类型彩色标识 (在线=绿, 离线=红, 通信不良=橙) - 新增 /api/devices/<id>/status 设备状态 API - 设备列表页:每 5s 异步刷新所有设备在线状态 - 测试操作页:顶部显示设备状态,每 5s 异步刷新 - dnt_info state 支持三态显示 (在线/离线/通信不良) - 导航栏增加「设备日志」入口 (admin only)
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
"""设备页面 API"""
|
|
|
|
from flask import Blueprint, jsonify, render_template, request
|
|
from flask_login import login_required
|
|
from app.models import get_all_devices, update_device_name, get_device_by_id
|
|
|
|
bp = Blueprint("devices", __name__)
|
|
|
|
|
|
@bp.route("/")
|
|
@login_required
|
|
def index():
|
|
"""设备列表页(默认首页)"""
|
|
return render_template("devices.html")
|
|
|
|
|
|
@bp.route("/api/devices")
|
|
def api_devices():
|
|
"""获取所有设备列表"""
|
|
devices = get_all_devices()
|
|
return jsonify(devices)
|
|
|
|
|
|
@bp.route("/api/devices/<int:device_id>/status")
|
|
def api_device_status(device_id):
|
|
"""获取单个设备的在线状态"""
|
|
device = get_device_by_id(device_id)
|
|
if not device:
|
|
return jsonify({"ok": False, "error": "设备不存在"}), 404
|
|
state_names = {0: "离线", 1: "在线", 2: "通信不良"}
|
|
return jsonify({
|
|
"ok": True,
|
|
"device_id": device_id,
|
|
"state": device["state"],
|
|
"state_name": state_names.get(device["state"], "未知"),
|
|
"serial": device["serial"],
|
|
})
|
|
|
|
|
|
@bp.route("/api/devices/<int:device_id>/name", methods=["PUT"])
|
|
def api_update_name(device_id):
|
|
"""修改设备名称"""
|
|
data = request.get_json()
|
|
name = data.get("name", "")
|
|
update_device_name(device_id, name)
|
|
return jsonify({"ok": True})
|