2.5 KiB
Devices 真分页 + 弹窗/样式收口 Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 全仓 t-dialog 补 destroy-on-close;Devices 列表专用真分页;删除 prototype.css 死样式。
Architecture: 弹窗统一销毁重建;DevicesView 自管分页请求,不改 devicesStore.load 近全量语义;CSS 只删确认无引用的规则。
Tech Stack: Vue 3、tdesign-vue-next、现有 /v1/docks /v1/drones 分页契约
Spec: docs/superpowers/specs/2026-08-28-devices-pagination-cleanup-design.md
Task 1: A — t-dialog destroy-on-close
Files: 所有含 <t-dialog 的 vue(DockEditModal、DevicesView、FirmwaresView、TasksView、AccountView、MonitorView、LoginView 等)
- 每个业务
t-dialog增加destroy-on-close(或:destroy-on-close="true") - 确认打开时仍有表单 init(已有则不动)
- Commit:
fix: 业务弹窗启用 destroy-on-close
Task 2: B — Devices 列表真分页
Files:
-
Modify:
src/views/DevicesView/DevicesView.vue -
不改坏:
src/stores/modules/devicesStore.js的 Monitor 近全量load() -
View 增加
pageNum/pageSize=20/total/tableRecords -
loadTable():按 tab 请求urls.DOCKS或urls.DRONES,params 含 pageNum/pageSize/keyword;写入 records+total -
t-pagination外置绑定;tab/搜索变更重置 pageNum=1 再 loadTable -
状态/绑定筛:仅过滤当前页;角标优先用接口 total
-
写操作成功后
loadTable(),并可选devices.load()刷新全局缓存 -
Commit:
feat: 设备列表接入服务端分页
Task 3: C — 删除死 CSS
Files:
-
Modify:
src/styles/prototype.css -
删除已无 Vue 引用的
.primary-command/.plain-command/.icon-command、.business-tabs、.mode-segment、裸.asset-table等(删除前再rg确认) -
保留
.asset-table-wrap、.table-footer、业务 layout、地图/控制样式 -
Commit:
chore: 清理 TDesign 迁移后无用的按钮与表样式
Task 4: 验收
- 抽检弹窗关闭再开无脏数据
- Devices 翻页网络
pageNum变化;Monitor 地图仍有点 - 死 class 无引用;关键页按钮/表可见
约定
- 不改后台;不
git add -A;Main 统一冒烟。