3.2 KiB
3.2 KiB
报警灯可拖动 + 取消重置报警提示 Spec
Why
上一版升级(upgrade-alarm-monitor-alert)中悬浮立体警灯固定右上角、带「重置报警提示」按钮;用户希望警灯可鼠标自由拖动(位置跨刷新记忆),并取消重置报警提示按钮。
What Changes
- 前端 AlarmSirenLight.vue:
- 警灯改为可鼠标拖动:鼠标按下拖动、松开停驻;初始默认位置为右上角(现 fixed top:120px/right:24px),拖动后位置经
localStorage记忆(刷新浏览器后停在拖动处)。 - 拖动与点击跳转区分:拖动位移超过阈值(约 5px)视为拖动不跳转;未拖动视为点击,保留「不在 /device/alarm 则跳转」行为。
- 移除「重置报警提示」按钮及其逻辑(resetAlarmPrompt/按钮模板/相关 tooltip);
notifiedIds已通知集合保留(去重即时响仍需),仅删除清空入口。
- 警灯改为可鼠标拖动:鼠标按下拖动、松开停驻;初始默认位置为右上角(现 fixed top:120px/right:24px),拖动后位置经
- 布局挂载(layouts/index.vue)、后端接口、触发模型、警笛逻辑均不变。
Impact
- Affected specs: 设备报警监控报警提示升级(upgrade-alarm-monitor-alert)
- Affected code:
- client/src/components/AlarmSirenLight.vue(拖动 + 位置记忆 + 移除重置按钮)
明确假设
- 拖动范围:任意位置均可停驻(fixed 定位,拖动后以 left/top 定位);跨页面由全局组件天然保持,刷新由 localStorage 恢复。
- localStorage key:
alarm-siren-pos,存{ left, top }(px);读取异常或首次进入用默认右上角。 - 点击语义:警灯本体点击仍跳转
/device/alarm(若不在该页);拖动过程不触发跳转。
ADDED Requirements
Requirement: 报警灯可拖动
系统 SHALL 允许用户用鼠标拖动悬浮警灯到任意位置,位置跨刷新记忆。
Scenario: 拖动警灯
- WHEN 用户在任意页面按住警灯并移动鼠标
- THEN 警灯跟随鼠标移动,松开后停驻在当前位置,且不触发页面跳转
Scenario: 刷新后位置保持
- WHEN 用户刷新浏览器或重新登录
- THEN 警灯显示在上次拖动停留的位置;首次使用时显示在默认右上角
Scenario: 点击仍可跳转
- WHEN 用户点击警灯(未拖动),且当前不在 /device/alarm
- THEN 跳转到设备报警监控页面
MODIFIED Requirements
Requirement: 悬浮警灯位置与重置按钮(原「固定右上角 + 重置报警提示」)
原实现为 fixed 右上角(top:120px/right:24px)固定位置,警灯旁有「重置报警提示」按钮(清空已通知集合重新触发)。现修改为:警灯可拖动且位置跨刷新记忆;移除「重置报警提示」按钮及其清空逻辑(已通知集合仅在页面生命周期内累积去重)。
REMOVED Requirements
Requirement: 「重置报警提示」按钮
Reason: 用户明确取消该功能。
Migration: 删除按钮模板、resetAlarmPrompt() 函数与相关样式/tooltip;notifiedIds 集合与即时响去重逻辑保留,不再提供清空入口。