# 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 小时