Files
smart_grid_iot/.trae/specs/make-alarm-siren-draggable/tasks.md
T

1.3 KiB
Raw Blame History

Tasks

  • Task 1: 报警灯拖动 + 位置记忆 + 移除重置按钮(client/src/components/AlarmSirenLight.vue)

    • 移除「重置报警提示」按钮模板、resetAlarmPrompt() 函数、相关 tooltip 与 .siren-reset 样式
    • 拖动实现:警灯容器(.floating-siren)position: fixed,改为 left/top 定位;mousedown 记录起点与容器坐标 → mousemove(window 监听)更新 left/top → mouseup 移除监听并保存位置
    • 拖动与点击区分:mousedown 至 mouseup 位移 ≤5px 视为点击(保留「不在 /device/alarm 则 router.push」),超过则视为拖动
    • 位置记忆:localStorage key alarm-siren-pos 存 { left, top };onMounted 读取恢复,无记录或解析失败用默认右上角(换算为 left/top,约 right:24px 对应 left = viewportWidth - 警灯宽度 - 24px)
    • 保留:30 秒轮询 activeSevereIds、即时响、3 分钟重复响、警灯激活(is-on)、AudioContext 懒创建与清理
  • Task 2: 编译 + 浏览器验证

    • client/ npx vue-tsc --noEmit 通过
    • 浏览器验证:登录后警灯默认右上角;拖动到新位置;刷新页面警灯停在拖动处;点击(未拖动)跳转 /device/alarm;无「重置报警提示」按钮残留

Task Dependencies

  • Task 2 依赖 Task 1