功能更新:新增Bug管理模块,完善用户角色分配,优化项目设置
This commit is contained in:
@@ -40,8 +40,8 @@
|
||||
- `src/api/dataFactoryApi.js`
|
||||
2. 统一复用 `src/utils/request.js`。
|
||||
3. 尽量映射到 REST 风格路径,例如:
|
||||
- `/api/v1/projects/{projectId}/cases`
|
||||
- `/api/v1/projects/{projectId}/plans`
|
||||
- `/api/v1/projects/{projectId}/case`
|
||||
- `/api/v1/projects/{projectId}/plan`
|
||||
- `/api/v1/projects/{projectId}/reports`
|
||||
- `/api/v1/projects/{projectId}/data/*`
|
||||
4. 对分页、详情、创建、更新、执行、导出等接口做最小可用封装。
|
||||
|
||||
165
.plan/fsKfEW4Z6YGlqrLCshlxS.md
Normal file
165
.plan/fsKfEW4Z6YGlqrLCshlxS.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# 执行计划:用例管理与模块管理改造
|
||||
|
||||
## 目标
|
||||
根据后端 `Case 与 Module` 接口文档,改造前端接口调用与用例管理页面:
|
||||
- 用例管理页面包含两个表格:模块列表、用例列表。
|
||||
- 模块支持查询、新增、删除,并展示模块字段与搜索条件。
|
||||
- 用例列表支持项目名称、用例标题模糊搜索、优先级、是否自动化、标签等条件。
|
||||
- 用例列表展示项目名称、用例编号、用例标题、优先级、类型、状态、是否实现自动化、标签等字段。
|
||||
|
||||
## 已定位文件
|
||||
- `src/api/caseApi.js`
|
||||
- 已有 `module/tree/create/update/delete` 与 `case/list/detail/create/update/delete` 封装。
|
||||
- 当前部分参数仍使用旧字段:`project_id`、`case_id` 等,需要调整为文档里的 camelCase 参数。
|
||||
- `src/components/TestPlatform/Case/CaseList.vue`
|
||||
- 当前只有一个用例表格。
|
||||
- 当前搜索条件只有项目ID、关键词、优先级。
|
||||
- 当前缺少分页状态定义与模块管理区。
|
||||
- `src/components/TestPlatform/Case/CaseEditor.vue`
|
||||
- 当前表单字段使用 `case_type` 等后端返回字段,提交时需要按文档转为 `caseType`、`moduleId`、`caseKey`、`isAuto` 等。
|
||||
- `src/router/index.js`
|
||||
- 用例相关路由已存在,无需新增路由。
|
||||
|
||||
## 改造步骤
|
||||
|
||||
### 1. 调整接口封装 `src/api/caseApi.js`
|
||||
- 保留已有函数名,降低页面调用改动成本。
|
||||
- `getCaseList(projectId, params)` 改为请求参数包含:
|
||||
- `projectId`
|
||||
- `pageNo`
|
||||
- `pageSize`
|
||||
- `projectName`
|
||||
- `moduleId`
|
||||
- `keyword`
|
||||
- `priority`
|
||||
- `caseType`
|
||||
- `status`
|
||||
- `isAuto`
|
||||
- `tag`
|
||||
- `getCaseDetail(projectId, caseId)` 改为传 `caseId`,必要时兼容 `projectId`。
|
||||
- `createCase(projectId, data)` 改为提交 `projectId`,不再提交 `project_id`。
|
||||
- `updateCase(projectId, caseId, data)` 改为提交 `caseId`,不再提交 `id/project_id` 旧字段。
|
||||
- `deleteCase(projectId, caseId)` 改为提交 `{ caseId }`,必要时保留 `projectId` 不影响后端。
|
||||
- 模块接口保持:
|
||||
- `getModuleTree(params)` -> `/module/tree`
|
||||
- `createModule(data)` -> `/module/create`
|
||||
- `deleteModule(data)` -> `/module/delete`
|
||||
- 删除模块调用传 `{ moduleId }`。
|
||||
|
||||
### 2. 改造 `CaseList.vue` 页面布局
|
||||
- 在同一个页面内使用两个 `page-section`:
|
||||
1. `模块列表`
|
||||
2. `用例列表`
|
||||
- 模块列表区:
|
||||
- 搜索条件:`projectId`、`parentId`。
|
||||
- 按钮:查询、新增模块。
|
||||
- 表格字段:
|
||||
- 模块ID:`id`
|
||||
- 项目ID:`project_id`
|
||||
- 父模块ID:`parent_id`
|
||||
- 模块名称:`name`
|
||||
- 排序:`sort_order`
|
||||
- 路径:`path`
|
||||
- 创建时间:`created_time`
|
||||
- 更新时间:`updated_time`
|
||||
- 操作:删除
|
||||
- 新增模块弹窗字段:
|
||||
- `projectId` 必填
|
||||
- `name` 必填
|
||||
- `parentId`
|
||||
- `sortOrder`
|
||||
- `path`
|
||||
- 删除模块调用 `deleteModule({ moduleId: row.id })`。
|
||||
|
||||
### 3. 改造用例列表搜索条件
|
||||
- 搜索表单字段:
|
||||
- `projectId`
|
||||
- `projectName`
|
||||
- `keyword`(用例标题模糊搜索)
|
||||
- `priority`
|
||||
- `caseType`
|
||||
- `status`
|
||||
- `isAuto`
|
||||
- `tag`
|
||||
- 查询时传入分页:`pageNo`、`pageSize`。
|
||||
- 查询成功后兼容读取:`data.list || data.items || []`,`data.total || list.length`。
|
||||
|
||||
### 4. 改造用例列表表格字段展示
|
||||
- 表格字段:
|
||||
- 项目名称:`project_name`
|
||||
- 用例编号:`case_key`
|
||||
- 用例标题:`title`
|
||||
- 优先级:`priority`,格式化为 `P0/P1/P2/P3`
|
||||
- 类型:`case_type`,格式化为 `功能/性能/安全/接口`
|
||||
- 状态:`status`,格式化为 `正常/已废弃/评审中`
|
||||
- 是否实现自动化:`is_auto`,格式化为 `已实现/未实现`
|
||||
- 标签:`tags`,数组使用 `el-tag` 展示,字符串兜底直接展示
|
||||
- 操作:编辑、评审、删除
|
||||
- 删除用例调用 `deleteCase(projectId, row.id)`。
|
||||
|
||||
### 5. 补齐分页与交互逻辑
|
||||
- `CaseList.vue` 增加:
|
||||
- `pageNo`
|
||||
- `pageSize`
|
||||
- `total`
|
||||
- `moduleLoading`
|
||||
- `moduleData`
|
||||
- `moduleQueryForm`
|
||||
- `moduleDialogVisible`
|
||||
- `moduleSubmitting`
|
||||
- `moduleForm`
|
||||
- `moduleRules`
|
||||
- 增加方法:
|
||||
- `fetchModuleList`
|
||||
- `openModuleCreate`
|
||||
- `resetModuleForm`
|
||||
- `submitModuleCreate`
|
||||
- `removeModule`
|
||||
- `handleSizeChange`
|
||||
- `handleCurrentChange`
|
||||
- `formatPriority`
|
||||
- `formatCaseType`
|
||||
- `formatStatus`
|
||||
- `formatIsAuto`
|
||||
- `formatTags`
|
||||
|
||||
### 6. 调整 `CaseEditor.vue` 提交字段
|
||||
- 详情加载:兼容后端 snake_case 返回字段,映射到表单:
|
||||
- `module_id` -> `moduleId`
|
||||
- `case_key` -> `caseKey`
|
||||
- `case_type` -> `caseType`
|
||||
- `is_auto` -> `isAuto`
|
||||
- 表单补充字段:
|
||||
- 模块ID
|
||||
- 用例编号
|
||||
- 状态
|
||||
- 是否自动化
|
||||
- 保存前构造 payload:
|
||||
- `projectId`
|
||||
- `moduleId`
|
||||
- `caseKey`
|
||||
- `title`
|
||||
- `preconditions`
|
||||
- `steps`
|
||||
- `priority`
|
||||
- `caseType`
|
||||
- `tags`
|
||||
- `status`
|
||||
- `isAuto`
|
||||
- 新增调用 `createCase(projectId, payload)`。
|
||||
- 编辑调用 `updateCase(projectId, caseId, payload)`。
|
||||
|
||||
### 7. 验证
|
||||
- 优先运行:`npm run build`。
|
||||
- 如构建耗时或环境缺依赖,至少做静态检查:确认 Vue 模板字段、方法引用、导入函数均存在。
|
||||
|
||||
## 预期改动范围
|
||||
- 修改:`src/api/caseApi.js`
|
||||
- 修改:`src/components/TestPlatform/Case/CaseList.vue`
|
||||
- 修改:`src/components/TestPlatform/Case/CaseEditor.vue`
|
||||
- 不新增路由,不新增依赖。
|
||||
|
||||
## 风险与兼容处理
|
||||
- 后端返回字段是 snake_case,前端提交字段是 camelCase,需要在编辑页做映射。
|
||||
- 若后端仍兼容旧字段,当前改造会优先使用新文档字段;删除/详情可保留少量兼容参数但不依赖旧字段。
|
||||
- 模块树接口可能返回树形结构,但当前需求是模块列表 table;表格直接展示返回 list,不做树形展开,除非后续明确需要树表。
|
||||
Reference in New Issue
Block a user