# 物联网管理后台 - 功能开发任务清单

## 项目概述

基于 Vue 3 + TypeScript + Element Plus 的物联网管理后台系统，管理代理商、网卡、套餐、设备等核心业务。

---

## 📦 模块划分

### 一、基础架构优化（必须先完成）

#### 1.1 API 层重构

**优先级：P0（最高）**

- [ ] 创建统一的 API 服务基类
- [ ] 创建类型定义文件
  - [ ] `src/types/api/auth.ts` - 认证相关类型
  - [ ] `src/types/api/role.ts` - 角色相关类型
  - [ ] `src/types/api/account.ts` - 账号相关类型
  - [ ] `src/types/api/card.ts` - 网卡相关类型
  - [ ] `src/types/api/package.ts` - 套餐相关类型
  - [ ] `src/types/api/device.ts` - 设备相关类型
  - [ ] `src/types/api/commission.ts` - 佣金相关类型
- [ ] 创建 API 服务类
  - [ ] `src/api/modules/auth.ts` - AuthService
  - [ ] `src/api/modules/role.ts` - RoleService
  - [ ] `src/api/modules/account.ts` - AccountService
  - [ ] `src/api/modules/agent.ts` - AgentService (代理商)
  - [ ] `src/api/modules/card.ts` - CardService
  - [ ] `src/api/modules/package.ts` - PackageService
  - [ ] `src/api/modules/device.ts` - DeviceService
  - [ ] `src/api/modules/commission.ts` - CommissionService
  - [ ] `src/api/modules/setting.ts` - SettingService

#### 1.2 公共配置和常量提取

**优先级：P0**

- [ ] 创建 `src/config/constants/` 目录
  - [ ] `operators.ts` - 运营商配置
  - [ ] `cardStatus.ts` - 网卡状态配置
  - [ ] `userRoles.ts` - 用户角色配置
  - [ ] `packageTypes.ts` - 套餐类型配置
  - [ ] `deviceStatus.ts` - 设备状态配置
  - [ ] `commissionStatus.ts` - 佣金状态配置
- [ ] 创建 `src/utils/business/` 目录
  - [ ] `card.ts` - 网卡相关工具函数
  - [ ] `package.ts` - 套餐相关工具函数
  - [ ] `commission.ts` - 佣金计算工具函数
  - [ ] `format.ts` - 格式化工具函数

#### 1.3 业务 Composables

**优先级：P0**

- [ ] `src/composables/useCardManagement.ts` - 网卡管理
- [ ] `src/composables/usePackageManagement.ts` - 套餐管理
- [ ] `src/composables/useDeviceManagement.ts` - 设备管理
- [ ] `src/composables/useAgentManagement.ts` - 代理商管理
- [ ] `src/composables/useCommission.ts` - 佣金管理
- [ ] `src/composables/usePagination.ts` - 分页管理
- [ ] `src/composables/useTableSelection.ts` - 表格选择

#### 1.4 公共业务组件

**优先级：P1**

- [ ] `src/components/business/CardStatusTag.vue` - 网卡状态标签
- [ ] `src/components/business/OperatorSelect.vue` - 运营商选择器
- [ ] `src/components/business/PackageSelector.vue` - 套餐选择器
- [ ] `src/components/business/AgentSelector.vue` - 代理商选择器
- [ ] `src/components/business/CommissionDisplay.vue` - 佣金展示组件
- [ ] `src/components/business/BatchOperationDialog.vue` - 批量操作对话框
- [ ] `src/components/business/ImportDialog.vue` - 导入对话框组件

---

## 🎯 功能模块开发

### 二、认证与权限模块

#### 2.1 登录模块

**优先级：P0** **依赖：1.1 API 层重构**

- [ ] 后端接口对接
  - [ ] 登录接口
  - [ ] 退出登录接口
  - [ ] 获取用户信息接口
  - [ ] 刷新 Token 接口
- [ ] 前端页面
  - [ ] 完善登录页面（`src/views/auth/login/index.vue`）
  - [ ] 添加多角色登录支持（平台账号、代理商、企业客户）
  - [ ] 添加验证码功能
  - [ ] 添加记住密码功能
- [ ] 权限守卫
  - [ ] 完善路由守卫逻辑
  - [ ] 实现基于角色的路由过滤
  - [ ] 实现按钮级权限控制
- [ ] Store 状态管理
  - [ ] 完善用户 Store（用户信息、权限列表）
  - [ ] 添加 Token 自动刷新逻辑

**Mock 数据：**

- 模拟不同角色的登录响应
- 模拟权限列表

---

### 三、账号管理模块

#### 3.1 平台角色管理

**优先级：P1** **依赖：1.1, 1.2, 1.3**

**子任务：**

- [ ] 类型定义
  - [ ] 角色实体类型
  - [ ] 角色查询参数类型
  - [ ] 角色权限类型
- [ ] API 服务
  - [ ] 获取角色列表
  - [ ] 创建角色
  - [ ] 编辑角色
  - [ ] 删除角色
  - [ ] 分配权限
- [ ] 页面开发
  - [ ] `src/views/account-management/platform-role/index.vue`
  - [ ] 角色列表（表格）
  - [ ] 新增/编辑角色对话框
  - [ ] 权限分配对话框（树形结构）
- [ ] 组件开发
  - [ ] `PermissionTreeSelect.vue` - 权限树选择组件
- [ ] Mock 数据
  - [ ] 模拟角色列表
  - [ ] 模拟权限树

#### 3.2 平台账号管理

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取平台账号列表
  - [ ] 创建平台账号
  - [ ] 编辑平台账号
  - [ ] 删除/禁用平台账号
  - [ ] 重置密码
- [ ] 页面开发
  - [ ] 账号列表（支持搜索、筛选）
  - [ ] 新增/编辑账号对话框
  - [ ] 角色分配
- [ ] Mock 数据

#### 3.3 客户角色管理

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取客户角色列表
  - [ ] 创建客户角色
  - [ ] 编辑客户角色
  - [ ] 删除客户角色
  - [ ] 设置能力边界
- [ ] 页面开发
  - [ ] 角色列表
  - [ ] 能力边界配置（功能权限、资源限制）
- [ ] 组件开发
  - [ ] `AbilityBoundaryConfig.vue` - 能力边界配置组件
- [ ] Mock 数据

#### 3.4 代理商管理

**优先级：P1**

**子任务：**

- [ ] 类型定义
  - [ ] 代理商实体类型
  - [ ] 代理商层级关系类型
- [ ] API 服务
  - [ ] 获取代理商列表（树形结构）
  - [ ] 创建代理商
  - [ ] 编辑代理商信息
  - [ ] 禁用/启用代理商
  - [ ] 查看代理商详情
  - [ ] 获取代理商下级列表
- [ ] 页面开发
  - [ ] 代理商树形列表
  - [ ] 新增/编辑代理商对话框
  - [ ] 代理商详情页面
- [ ] 组件开发
  - [ ] `AgentTreeTable.vue` - 代理商树形表格组件
- [ ] Mock 数据
  - [ ] 模拟代理商层级数据

#### 3.5 企业客户管理

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取企业客户列表
  - [ ] 创建企业客户
  - [ ] 编辑企业客户
  - [ ] 禁用/启用企业客户
  - [ ] 分配客户角色
- [ ] 页面开发
  - [ ] `src/views/account-management/enterprise-customer/index.vue`
  - [ ] 企业客户列表
  - [ ] 新增/编辑企业客户对话框
- [ ] Mock 数据

#### 3.6 客户账号管理

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取客户账号列表（代理商+企业客户）
  - [ ] 解绑手机
  - [ ] 重置密码
  - [ ] 禁用/启用账号
- [ ] 页面开发
  - [ ] 账号列表（支持筛选）
  - [ ] 账号操作（解绑、重置密码等）
- [ ] Mock 数据

---

### 四、账户管理模块

#### 4.1 客户账户（佣金查看）

**优先级：P2**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取客户账户列表
  - [ ] 查看佣金详情
  - [ ] 查看提现记录
- [ ] 页面开发
  - [ ] 客户账户列表
  - [ ] 佣金详情展示
  - [ ] 提现记录列表
- [ ] 组件开发
  - [ ] `CommissionDetailCard.vue` - 佣金详情卡片
- [ ] Mock 数据

#### 4.2 佣金提现管理

**优先级：P2**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取提现申请列表
  - [ ] 审核提现申请（通过/拒绝）
  - [ ] 查看提现详情
  - [ ] 批量审核
- [ ] 页面开发
  - [ ] `src/views/finance-management/commission-withdrawal/index.vue`
  - [ ] 提现申请列表
  - [ ] 审核对话框
  - [ ] 批量审核功能
- [ ] Mock 数据

#### 4.3 佣金提现设置

**优先级：P2**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取提现设置
  - [ ] 保存提现设置
  - [ ] 查看历史设置
- [ ] 页面开发
  - [ ] `src/views/finance-management/withdrawal-setting/index.vue`
  - [ ] 提现参数配置表单
  - [ ] 历史设置列表
- [ ] Mock 数据

#### 4.4 我的账户（佣金）

**优先级：P2**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取当前账号佣金数据
  - [ ] 获取佣金明细
  - [ ] 申请提现
- [ ] 页面开发
  - [ ] 佣金概览（卡片展示，非列表）
  - [ ] 佣金明细列表
  - [ ] 提现申请对话框
- [ ] 组件开发
  - [ ] `CommissionOverviewCard.vue` - 佣金概览卡片
- [ ] Mock 数据

---

### 五、我的设置模块

#### 5.1 收款商户设置

**优先级：P2**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取支付配置
  - [ ] 保存支付配置
- [ ] 页面开发
  - [ ] `src/views/my-settings/payment-merchant/index.vue`
  - [ ] 支付参数配置表单
- [ ] Mock 数据

#### 5.2 开发能力管理

**优先级：P2**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取开发能力参数
  - [ ] 生成 API Key
  - [ ] 刷新 Secret
- [ ] 页面开发
  - [ ] `src/views/my-settings/dev-capability/index.vue`
  - [ ] API Key 展示和管理
  - [ ] 接口文档链接
- [ ] Mock 数据

#### 5.3 分佣模板管理

**优先级：P2**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取分佣模板列表
  - [ ] 创建分佣模板
  - [ ] 编辑分佣模板
  - [ ] 删除分佣模板
- [ ] 页面开发
  - [ ] `src/views/my-settings/commission-template/index.vue`
  - [ ] 模板列表
  - [ ] 新增/编辑模板对话框
  - [ ] 分佣规则配置
- [ ] 组件开发
  - [ ] `CommissionRuleConfig.vue` - 分佣规则配置组件
- [ ] Mock 数据

---

### 六、商品管理模块

#### 6.1 号卡管理

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取号卡商品列表
  - [ ] 新增号卡商品
  - [ ] 编辑号卡商品
  - [ ] 删除号卡商品
- [ ] 页面开发
  - [ ] `src/views/product-management/simcard/index.vue`
  - [ ] 号卡列表
  - [ ] 新增/编辑号卡对话框
- [ ] Mock 数据

#### 6.2 号卡分配

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取可分配号卡列表
  - [ ] 分配号卡给代理
  - [ ] 设置佣金模式
- [ ] 页面开发
  - [ ] `src/views/product-management/simcard-assign/index.vue`
  - [ ] 号卡选择
  - [ ] 代理商选择
  - [ ] 佣金模式配置
- [ ] 组件开发
  - [ ] `CommissionModeSelector.vue` - 佣金模式选择组件
- [ ] Mock 数据

#### 6.3 套餐系列管理

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取套餐系列列表
  - [ ] 新增套餐系列
  - [ ] 编辑套餐系列
  - [ ] 删除套餐系列
- [ ] 页面开发
  - [ ] `src/views/product-management/package-series/index.vue` (重命名 package-series)
  - [ ] 系列列表
  - [ ] 新增/编辑系列对话框
- [ ] Mock 数据

#### 6.4 套餐管理

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取套餐列表（根据角色过滤）
  - [ ] 创建套餐
  - [ ] 编辑套餐
  - [ ] 删除套餐
- [ ] 页面开发
  - [ ] 套餐列表（支持角色过滤）
  - [ ] 新增/编辑套餐对话框
- [ ] Mock 数据

#### 6.5 套餐分配

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取可分配套餐列表
  - [ ] 分配套餐给直级代理
  - [ ] 设置佣金模式
- [ ] 页面开发
  - [ ] 重构 `src/views/package-management/package-assign/index.vue`
  - [ ] 套餐选择
  - [ ] 直级代理选择
  - [ ] 佣金模式配置
- [ ] Mock 数据

---

### 七、资产管理模块

#### 7.1 单卡信息查询

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 根据 ICCID 查询单卡信息
  - [ ] 套餐充值
  - [ ] 停复机操作
  - [ ] 流量详情查询
  - [ ] 更改过期时间
  - [ ] 转新卡
  - [ ] 停复机记录
  - [ ] 往期订单
  - [ ] 增减流量
  - [ ] 变更钱包余额
  - [ ] 充值支付密码
  - [ ] 续充
  - [ ] 设备操作
- [ ] 页面开发
  - [ ] 单卡信息展示（描述列表）
  - [ ] 操作按钮组
  - [ ] 各类操作对话框
- [ ] 组件开发
  - [ ] 复用 `CardOperationDialog.vue` 并扩展功能
- [ ] Mock 数据

#### 7.2 网卡管理

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取网卡列表
  - [ ] 批量操作入口
- [ ] 页面开发
  - [ ] 网卡列表
  - [ ] 批量操作按钮
- [ ] Mock 数据

#### 7.3 设备管理

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取设备列表
  - [ ] 查看设备卡信息
  - [ ] 修改设备卡信息
  - [ ] 设备相关操作
- [ ] 页面开发
  - [ ] 拆分 `src/views/device-management/devices/index.vue` (2022行，需拆分)
    - [ ] 主页面 `index.vue`
    - [ ] 设备详情组件 `DeviceDetail.vue`
    - [ ] 设备操作组件 `DeviceOperation.vue`
  - [ ] 设备列表
  - [ ] 设备详情对话框
  - [ ] 设备操作对话框
- [ ] Composables
  - [ ] `useDeviceManagement.ts` - 设备管理逻辑
- [ ] Mock 数据

#### 7.4 资产分配

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 设备批量分配
  - [ ] 网卡批量分配
- [ ] 页面开发
  - [ ] `src/views/asset-management/asset-assign/index.vue`
  - [ ] 分配方式选择（设备/网卡）
  - [ ] 批量导入 ICCID
  - [ ] 目标代理选择
- [ ] 组件开发
  - [ ] 复用 `ImportDialog.vue`
- [ ] Mock 数据

#### 7.5 换卡申请

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 获取换卡申请列表
  - [ ] 处理换卡申请
  - [ ] 填充新 ICCID
- [ ] 页面开发
  - [ ] 申请列表
  - [ ] 处理对话框
- [ ] Mock 数据

---

### 八、批量操作模块

#### 8.1 网卡导入

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 批量导入 ICCID
  - [ ] 查看导入任务状态
  - [ ] 查看导入失败记录
- [ ] 页面开发
  - [ ] `src/views/batch-operation/card-import/index.vue`
  - [ ] Excel 导入
  - [ ] 任务列表
  - [ ] 失败记录查看
- [ ] 组件开发
  - [ ] 复用 `ImportDialog.vue`
- [ ] Mock 数据

#### 8.2 设备导入

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 批量导入设备及 ICCID 关系
  - [ ] 查看导入任务状态
- [ ] 页面开发
  - [ ] `src/views/batch-operation/device-import/index.vue`
  - [ ] Excel 导入
  - [ ] 任务列表
- [ ] Mock 数据

#### 8.3 线下批量充值

**优先级：P1**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 查看批量充值记录
  - [ ] Excel 批量充值导入
- [ ] 页面开发
  - [ ] 充值记录列表
  - [ ] 批量充值 Excel 导入
- [ ] Mock 数据

#### 8.4 换卡通知

**优先级：P2**

**子任务：**

- [ ] 类型定义
- [ ] API 服务
  - [ ] 单独新建换卡通知
  - [ ] 批量新建换卡通知
  - [ ] 查看换卡通知记录
- [ ] 页面开发
  - [ ] `src/views/batch-operation/card-change-notice/index.vue`
  - [ ] 通知记录列表
  - [ ] 新建通知对话框（单个/批量）
- [ ] Mock 数据

---

## 📅 开发计划建议

### 第一阶段（1-2 周）：基础架构

- 完成所有 1.x 任务（API 层、配置、Composables、公共组件）
- 完成登录模块（2.1）

### 第二阶段（2-3 周）：账号管理

- 完成账号管理模块所有功能（3.1-3.6）

### 第三阶段（2 周）：商品管理

- 完成商品管理模块（6.1-6.5）

### 第四阶段（2-3 周）：资产管理

- 完成资产管理模块（7.1-7.5）

### 第五阶段（1-2 周）：账户管理 + 我的设置

- 完成账户管理模块（4.1-4.4）
- 完成我的设置模块（5.1-5.3）

### 第六阶段（1-2 周）：批量操作 + 优化

- 完成批量操作模块（8.1-8.4）
- 性能优化、测试、Bug 修复

---

## 📌 注意事项

1. **所有模块先用 Mock 数据开发，便于前后端并行开发**
2. **严格遵循组件化原则，提高代码复用率**
3. **使用 TypeScript 严格类型，减少运行时错误**
4. **每个模块完成后进行代码审查**
5. **关键功能需要编写单元测试**

---

## 🔗 相关文档

- [项目架构文档](./openspec/project.md)
- [API 规范文档](待创建)
- [组件使用文档](待创建)
