feat: 新增导出
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m19s

This commit is contained in:
luo
2026-06-16 11:35:45 +08:00
parent 908367ba5d
commit 2a8f4e40d6
19 changed files with 1347 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
## 1. Proposal Review
- [x] 1.1 确认导出按钮权限编码IoT 卡管理使用 `iot_card:export`,设备管理使用 `devices:export`
- [x] 1.2 确认导出任务管理权限编码:使用 `export_task:list``export_task:detail``export_task:download``export_task:cancel`
- [x] 1.3 确认导出格式默认 `xlsx`,并允许用户在弹窗中切换 `xlsx` / `csv`
- [x] 1.4 确认 IoT 卡和设备列表现有筛选参数作为导出任务 `query` 传给后端。
## 2. API And Types
- [x] 2.1 新增导出任务状态、场景、格式、列表项、详情、创建请求、取消响应等 TypeScript 类型。
- [x] 2.2 新增 `ExportTaskService`,实现列表、创建、详情、取消接口。
- [x] 2.3 在 API 和类型入口文件导出新增模块。
- [x] 2.4 对齐统一响应结构 `code``msg``timestamp``data` 和分页结构 `page``size``total``items`
## 3. Reusable Export Dialog
- [x] 3.1 新增可复用创建导出任务弹窗组件,支持传入 `scene`、当前列表查询条件和默认导出格式。
- [x] 3.2 弹窗中明确展示导出规则说明:导出规则基于列表中的检索条件全量导出。
- [x] 3.3 提交时调用创建导出任务接口,并在成功后提示任务已创建。
- [x] 3.4 确保弹窗确认按钮和触发按钮均受对应权限控制。
## 4. Business Entry Points
- [x] 4.1 在 IoT 卡管理页增加导出按钮,打开弹窗时默认 `scene=iot_card`,并传入当前筛选条件快照。
- [x] 4.2 在设备管理页增加导出按钮,打开弹窗时默认 `scene=device`,并传入当前筛选条件快照。
- [x] 4.3 确保重置筛选、分页切换、重新搜索后导出使用最新检索条件。
## 5. Export Task List Page
- [x] 5.1 在资产管理下新增“导出管理”分组和“导出列表”路由、菜单、路由别名。
- [x] 5.2 导出列表支持分页、场景、状态、创建开始时间、创建结束时间筛选。
- [x] 5.3 表格展示任务编号、场景、状态、进度、格式、行数、分片、错误信息和时间字段;列表不展示文件 key。
- [x] 5.4 任务编号支持点击进入导出任务详情页,行操作支持下载已完成任务、取消待处理/处理中任务。
- [x] 5.5 下载操作必须先调用详情接口获取 `download_url`,且仅在已完成任务可用。
- [x] 5.6 取消操作必须调用取消接口,并在成功后刷新列表。
## 6. Permissions And UX
- [x] 6.1 为所有新增按钮和行操作添加权限编码检查。
- [x] 6.2 无权限时不显示对应入口,不依赖禁用态作为唯一保护。
- [x] 6.3 对创建、详情、下载、取消失败提供稳定错误提示,不破坏列表渲染。
## 7. Verification
- [x] 7.1 验证 IoT 卡管理页可按当前筛选条件创建 `iot_card` 导出任务。
- [x] 7.2 验证设备管理页可按当前筛选条件创建 `device` 导出任务。
- [x] 7.3 验证导出列表分页和筛选参数与接口契约一致,且文件 key 不在列表字段中展示。
- [x] 7.4 验证点击任务编号进入详情页,已完成任务可通过详情接口获取下载地址并下载。
- [x] 7.5 验证待处理/处理中任务可取消,已完成/失败/已取消任务不可取消。
- [x] 7.6 验证所有新增按钮和操作在无权限时不可见。
- [x] 7.7 运行类型检查和相关 lint新增文件 lint 通过,整仓构建受既有 TypeScript 债务阻塞。