157 lines
7.8 KiB
Markdown
157 lines
7.8 KiB
Markdown
# Implementation Tasks
|
||
|
||
## 1. 基础设施准备
|
||
|
||
- [ ] 1.1 创建套餐管理类型定义文件(src/types/api/packageManagement.ts)
|
||
- [ ] 1.2 创建套餐常量配置文件(src/config/constants/package.ts)
|
||
- [ ] 1.3 导出常量配置到 constants/index.ts
|
||
|
||
## 2. API 服务层实现
|
||
|
||
### 2.1 套餐系列 API(packageSeries.ts)
|
||
- [ ] 2.1.1 实现 getPackageSeries(套餐系列列表)
|
||
- [ ] 2.1.2 实现 createPackageSeries(创建套餐系列)
|
||
- [ ] 2.1.3 实现 getPackageSeriesDetail(获取套餐系列详情)
|
||
- [ ] 2.1.4 实现 updatePackageSeries(更新套餐系列)
|
||
- [ ] 2.1.5 实现 deletePackageSeries(删除套餐系列)
|
||
- [ ] 2.1.6 实现 updatePackageSeriesStatus(更新套餐系列状态)
|
||
|
||
### 2.2 套餐管理 API(package.ts)
|
||
- [ ] 2.2.1 实现 getPackages(套餐列表)
|
||
- [ ] 2.2.2 实现 createPackage(创建套餐)
|
||
- [ ] 2.2.3 实现 getPackageDetail(获取套餐详情)
|
||
- [ ] 2.2.4 实现 updatePackage(更新套餐)
|
||
- [ ] 2.2.5 实现 deletePackage(删除套餐)
|
||
- [ ] 2.2.6 实现 updatePackageStatus(更新套餐状态)
|
||
- [ ] 2.2.7 实现 updatePackageShelfStatus(更新套餐上架状态)
|
||
|
||
### 2.3 代理可售套餐 API(myPackage.ts)
|
||
- [ ] 2.3.1 实现 getMyPackages(我的可售套餐列表)
|
||
- [ ] 2.3.2 实现 getMyPackageDetail(获取可售套餐详情)
|
||
- [ ] 2.3.3 实现 getMySeriesAllocations(我的被分配系列列表)
|
||
|
||
### 2.4 单套餐分配 API(shopPackageAllocation.ts)
|
||
- [ ] 2.4.1 实现 getShopPackageAllocations(单套餐分配列表)
|
||
- [ ] 2.4.2 实现 createShopPackageAllocation(创建单套餐分配)
|
||
- [ ] 2.4.3 实现 getShopPackageAllocationDetail(获取单套餐分配详情)
|
||
- [ ] 2.4.4 实现 updateShopPackageAllocation(更新单套餐分配)
|
||
- [ ] 2.4.5 实现 deleteShopPackageAllocation(删除单套餐分配)
|
||
- [ ] 2.4.6 实现 updateShopPackageAllocationStatus(更新单套餐分配状态)
|
||
|
||
- [ ] 2.5 在 src/api/modules/index.ts 中导出所有新服务
|
||
|
||
## 3. 页面实现
|
||
|
||
### 3.1 套餐系列管理页面(package-series/index.vue)
|
||
- [ ] 3.1.1 实现列表展示(表格、分页)
|
||
- [ ] 3.1.2 实现搜索栏(系列名称、状态筛选)
|
||
- [ ] 3.1.3 实现新增对话框(表单验证)
|
||
- [ ] 3.1.4 实现编辑功能(复用新增对话框,根据 dialogType 区分新增/编辑)
|
||
- [ ] 3.1.5 实现删除功能(二次确认)
|
||
- [ ] 3.1.6 实现状态开关(启用/禁用)
|
||
- [ ] 3.1.7 集成 API 服务并处理加载状态
|
||
|
||
### 3.2 套餐管理页面(package-list/index.vue)
|
||
- [ ] 3.2.1 实现列表展示(表格、分页)
|
||
- [ ] 3.2.2 实现搜索栏(名称、系列、状态、上架状态、类型筛选)
|
||
- [ ] 3.2.3 实现系列下拉选择器(加载套餐系列列表,只显示启用状态)
|
||
- [ ] 3.2.4 实现新增对话框(表单验证、系列选择)
|
||
- [ ] 3.2.5 实现编辑功能(复用新增对话框,根据 dialogType 区分新增/编辑)
|
||
- [ ] 3.2.6 实现删除功能(二次确认)
|
||
- [ ] 3.2.7 实现状态开关(启用/禁用)
|
||
- [ ] 3.2.8 实现上架状态开关(上架/下架)
|
||
- [ ] 3.2.9 集成 API 服务并处理加载状态
|
||
|
||
### 3.3 代理可售套餐页面(my-packages/index.vue)
|
||
- [ ] 3.3.1 创建页面文件和基本结构
|
||
- [ ] 3.3.2 实现列表展示(表格、分页)
|
||
- [ ] 3.3.3 实现搜索栏(系列、类型筛选)
|
||
- [ ] 3.3.4 实现详情对话框(显示成本价、建议售价、利润空间)
|
||
- [ ] 3.3.5 实现被分配系列列表Tab(可选)
|
||
- [ ] 3.3.6 集成 API 服务并处理加载状态
|
||
|
||
### 3.4 单套餐分配页面(package-assign/index.vue)
|
||
- [ ] 3.4.1 创建页面文件和基本结构
|
||
- [ ] 3.4.2 实现列表展示(表格、分页)
|
||
- [ ] 3.4.3 实现搜索栏(店铺、套餐、状态筛选)
|
||
- [ ] 3.4.4 实现套餐下拉选择器(加载套餐列表,只显示启用且上架的套餐)
|
||
- [ ] 3.4.5 实现店铺下拉选择器(使用 ShopService 加载店铺列表)
|
||
- [ ] 3.4.6 实现新增对话框(套餐选择、店铺选择、成本价输入)
|
||
- [ ] 3.4.7 实现编辑功能(单独对话框或复用新增对话框,只允许修改成本价)
|
||
- [ ] 3.4.8 实现删除功能(二次确认)
|
||
- [ ] 3.4.9 实现状态管理(启用/禁用开关)
|
||
- [ ] 3.4.10 集成 API 服务并处理加载状态
|
||
|
||
## 4. 路由配置
|
||
|
||
- [ ] 4.1 在 asyncRoutes.ts 中添加 my-packages 路由配置
|
||
- [ ] 4.2 验证路由权限配置正确
|
||
|
||
## 5. 集成测试
|
||
|
||
### 5.1 套餐系列管理测试
|
||
- [ ] 5.1.1 测试列表查询(空列表、有数据、分页)
|
||
- [ ] 5.1.2 测试搜索功能(名称模糊搜索、状态筛选)
|
||
- [ ] 5.1.3 测试新增功能(成功、编码重复、字段验证)
|
||
- [ ] 5.1.4 测试编辑功能(成功、字段验证)
|
||
- [ ] 5.1.5 测试删除功能(成功、有关联套餐时禁止删除)
|
||
- [ ] 5.1.6 测试状态切换(启用→禁用、禁用→启用)
|
||
- [ ] 5.1.7 测试权限控制(未登录、无权限)
|
||
|
||
### 5.2 套餐管理测试
|
||
- [ ] 5.2.1 测试列表查询(空列表、有数据、分页)
|
||
- [ ] 5.2.2 测试多条件筛选(名称、系列、状态、上架状态、类型)
|
||
- [ ] 5.2.3 测试系列下拉选择器(只显示启用状态的系列)
|
||
- [ ] 5.2.4 测试新增功能(成功、编码重复、时长验证、流量验证)
|
||
- [ ] 5.2.5 测试编辑功能(成功、字段验证)
|
||
- [ ] 5.2.6 测试删除功能(成功、已分配时禁止删除)
|
||
- [ ] 5.2.7 测试状态切换(启用→禁用、禁用→启用)
|
||
- [ ] 5.2.8 测试上架状态切换(上架→下架、下架→上架)
|
||
- [ ] 5.2.9 测试权限控制(未登录、无权限)
|
||
|
||
### 5.3 代理可售套餐测试
|
||
- [ ] 5.3.1 测试列表查询(空列表、有数据、分页)
|
||
- [ ] 5.3.2 测试筛选功能(按系列、按类型)
|
||
- [ ] 5.3.3 测试详情查询(显示成本价、建议售价、利润空间、价格来源)
|
||
- [ ] 5.3.4 测试数据隔离(只能看到分配给自己的套餐)
|
||
- [ ] 5.3.5 测试被分配系列列表(如果实现)
|
||
- [ ] 5.3.6 测试权限控制(非代理商用户无法访问)
|
||
|
||
### 5.4 单套餐分配测试
|
||
- [ ] 5.4.1 测试列表查询(空列表、有数据、分页)
|
||
- [ ] 5.4.2 测试筛选功能(按店铺、按套餐、按状态)
|
||
- [ ] 5.4.3 测试套餐下拉选择器(只显示启用且上架的套餐)
|
||
- [ ] 5.4.4 测试店铺下拉选择器(加载店铺列表)
|
||
- [ ] 5.4.5 测试新增功能(成功、重复分配、成本价验证)
|
||
- [ ] 5.4.6 测试编辑功能(修改成本价)
|
||
- [ ] 5.4.7 测试删除功能(成功、有订单时的处理)
|
||
- [ ] 5.4.8 测试状态切换(启用→禁用、禁用→启用)
|
||
- [ ] 5.4.9 测试价格覆盖规则(单套餐分配优先于系列分配)
|
||
- [ ] 5.4.10 测试权限控制(仅管理员可操作)
|
||
|
||
### 5.5 通用功能测试
|
||
- [ ] 5.5.1 测试所有页面的表单验证(必填、长度、格式)
|
||
- [ ] 5.5.2 测试所有页面的 loading 状态(列表、提交、删除)
|
||
- [ ] 5.5.3 测试所有页面的错误处理(网络错误、业务错误)
|
||
- [ ] 5.5.4 测试所有页面的二次确认(删除操作)
|
||
- [ ] 5.5.5 测试分页功能(换页、改变每页数量)
|
||
- [ ] 5.5.6 测试刷新功能(列表刷新)
|
||
- [ ] 5.5.7 测试列显示/隐藏功能
|
||
- [ ] 5.5.8 测试状态值映射(前端0/1与后端1/2的转换)
|
||
|
||
## 6. 代码优化和文档
|
||
|
||
- [ ] 6.1 代码格式化和 ESLint 检查
|
||
- [ ] 6.2 添加必要的注释
|
||
- [ ] 6.3 更新 API 文档(如需要)
|
||
- [ ] 6.4 提交代码并创建 PR
|
||
|
||
## 注意事项
|
||
|
||
- 所有页面需参考 `/system/role` 页面的组件化结构
|
||
- 使用统一的 `CommonStatus` 常量(需要注意文档中的状态值映射)
|
||
- API 字段使用下划线命名(如 `series_name`),前端类型使用驼峰命名
|
||
- 所有删除操作需要二次确认
|
||
- 所有表单需要完整的验证规则
|
||
- 统一使用 Element Plus 的 Message 和 MessageBox 组件
|