Files
one-pipe-system/openspec/changes/add-package-management-system/tasks.md
sexygoat 841cf0442b
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 3m30s
fetch(add): 订单管理-企业设备
2026-01-29 15:43:45 +08:00

7.8 KiB
Raw Blame History

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 套餐系列 APIpackageSeries.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 套餐管理 APIpackage.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 代理可售套餐 APImyPackage.ts

  • 2.3.1 实现 getMyPackages我的可售套餐列表
  • 2.3.2 实现 getMyPackageDetail获取可售套餐详情
  • 2.3.3 实现 getMySeriesAllocations我的被分配系列列表

2.4 单套餐分配 APIshopPackageAllocation.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 组件