Files
one-pipe-system/openspec/changes/add-enterprise-device-authorization/tasks.md
sexygoat 31440b2904
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m53s
fetch(modify):修改原来的bug
2026-01-31 11:18:37 +08:00

170 lines
5.9 KiB
Markdown

# Tasks: Add Enterprise Device Authorization
## Overview
按照从底层到上层的顺序实现企业设备授权功能,确保每一步都可测试和验证。
## Task List
### Phase 1: Type Definitions (Foundation)
1. **创建企业设备类型定义文件**
- 创建 `src/types/api/enterpriseDevice.ts`
- 定义 `EnterpriseDeviceItem` 接口 (设备列表项)
- 定义 `EnterpriseDeviceListParams` 接口 (查询参数)
- 定义 `EnterpriseDevicePageResult` 接口 (分页结果)
- 定义 `AllocateDevicesRequest` 接口 (授权请求)
- 定义 `AllocateDevicesResponse` 接口 (授权响应)
- 定义 `AuthorizedDeviceItem` 接口 (已授权设备项)
- 定义 `FailedDeviceItem` 接口 (失败设备项)
- 定义 `RecallDevicesRequest` 接口 (撤销请求)
- 定义 `RecallDevicesResponse` 接口 (撤销响应)
- **验证**: 运行 `npm run type-check` 确保无类型错误
2. **导出类型定义**
-`src/types/api/index.ts` 中导出新增的类型
- **验证**: 确认其他模块可以正确导入类型
### Phase 2: API Service Layer
3. **扩展 EnterpriseService API 方法**
-`src/api/modules/enterprise.ts` 中添加:
- `allocateDevices(enterpriseId, data)` - 授权设备
- `getEnterpriseDevices(enterpriseId, params)` - 获取设备列表
- `recallDevices(enterpriseId, data)` - 撤销授权
- 导入新增的类型定义
- **验证**: 运行 `npm run type-check` 确保类型正确
### Phase 3: Internationalization
4. **添加中文翻译**
-`src/locales/langs/zh.json``menus.assetManagement` 下添加 `enterpriseDevices` 条目
-`src/locales/langs/zh.json` 添加 `enterpriseDevices` 模块的所有中文文案:
- 页面标题和搜索表单
- 表格列名
- 操作按钮和对话框标题
- 表单标签和提示文本
- 成功/错误消息
- **验证**: 检查 JSON 格式正确性
5. **添加英文翻译**
-`src/locales/langs/en.json` 添加对应的英文翻译
- 确保 key 与中文版本一致
- **验证**: 检查 JSON 格式正确性,切换语言测试
### Phase 4: Routing
6. **添加路由别名**
-`src/router/routesAlias.ts` 添加 `EnterpriseDevices = '/asset-management/enterprise-devices'`
- **验证**: 确认导出正确
7. **配置路由**
-`src/router/routes/asyncRoutes.ts` 的资产管理 (`/asset-management`) 模块下添加企业设备列表路由
- 配置路由 meta 信息 (title, keepAlive)
- **验证**: 运行应用,检查路由注册成功
### Phase 5: UI Components
8. **创建企业设备列表页面**
- 创建 `src/views/asset-management/enterprise-devices/index.vue`
- 实现页面基础结构:
- 使用 `ArtTableFullScreen` 布局
- 使用 `ArtSearchBar` 实现搜索表单 (企业ID,设备号搜索)
- 使用 `ArtTable` 展示设备列表
- 使用 `ArtTableHeader` 添加"授权设备"和"撤销授权"按钮
- **验证**: 页面能正常渲染,无控制台错误
9. **实现设备列表查询功能**
- 实现 `loadDeviceList()` 方法调用 API
- 实现搜索和重置功能
- 实现分页功能
- 添加 loading 状态
- **验证**: 能正确展示设备列表数据,分页工作正常
10. **实现授权设备对话框**
- 创建授权设备对话框
- 使用 `ElForm` + `ElInput` (textarea) 输入设备号列表
- 支持多行输入或逗号分隔
- 添加备注输入框 (可选)
- 实现表单验证 (必填项,格式校验)
- **验证**: 对话框显示正常,表单验证工作
11. **实现授权设备提交逻辑**
- 实现 `handleAllocateDevices()` 方法
- 解析设备号列表 (处理换行和逗号分隔)
- 调用 `EnterpriseService.allocateDevices()` API
- 展示授权结果 (成功数量,失败数量,失败列表)
- 使用 `ElMessageBox``ElDialog` 展示详细结果
- 授权成功后刷新列表
- **验证**: 能成功授权设备,正确处理部分成功/失败情况
12. **实现撤销授权对话框**
- 创建撤销授权对话框
- 使用表格多选模式选择要撤销的设备
- 或者使用输入框输入设备号列表
- 实现二次确认逻辑
- **验证**: 对话框显示正常
13. **实现撤销授权提交逻辑**
- 实现 `handleRecallDevices()` 方法
- 收集选中的设备号
- 调用 `EnterpriseService.recallDevices()` API
- 展示撤销结果 (成功数量,失败数量,失败列表)
- 撤销成功后刷新列表
- **验证**: 能成功撤销授权,正确处理部分成功/失败情况
### Phase 6: Polish & Testing
14. **完善表格列配置**
- 配置表格列 (设备ID,设备号,设备名称,设备型号,绑定卡数量,授权时间)
- 实现列显示/隐藏功能
- 添加时间格式化
- **验证**: 表格数据展示完整美观
15. **添加错误处理**
- 为所有 API 调用添加 try-catch
- 添加友好的错误提示消息
- 处理网络错误和业务错误
- **验证**: 各种错误场景都有适当提示
16. **样式调整**
- 确保页面样式与系统其他页面一致
- 响应式布局适配
- 对话框尺寸和布局优化
- **验证**: 在不同屏幕尺寸下显示正常
17. **最终验证**
- 运行 `npm run type-check` 确保无类型错误
- 运行 `npm run build` 确保能成功构建
- 运行 `openspec validate add-enterprise-device-authorization --strict` 验证 spec
- 手动测试所有功能点
- 测试中英文切换
- **验证**: 所有功能正常,无控制台错误
## Dependencies
- Task 3 依赖 Task 1 (API 需要类型定义)
- Task 8-13 依赖 Task 1-7 (UI 需要 API 和路由)
- Task 14-16 是并行任务,可以同时进行
## Estimated Effort
- Phase 1-2: 30 分钟 (类型和 API)
- Phase 3: 30 分钟 (国际化)
- Phase 4: 15 分钟 (路由)
- Phase 5: 2-3 小时 (UI 实现)
- Phase 6: 30 分钟 (测试和优化)
**Total**: 约 4-4.5 小时