功能更新:新增Bug管理模块,完善用户角色分配,优化项目设置

This commit is contained in:
qiaoxinjiu
2026-05-07 19:43:05 +08:00
parent 916248483c
commit f8211673ee
44 changed files with 10410 additions and 437 deletions

View File

@@ -49,7 +49,7 @@ export function ItApiDelete(data) {
//对方法的请求参数进行新增获取修改
export function DataAdd(data) {
return request({
url: '/create/data/info/add',
url: '/data-tools/db-builder/info/add',
method: 'post',
data
})
@@ -58,7 +58,7 @@ export function DataAdd(data) {
//刪除造数基本信息
export function DataDelete(data) {
return request({
url: '/create/data/detail/delete',
url: '/data-tools/db-builder/detail/delete',
method: 'post',
data
})
@@ -67,7 +67,7 @@ export function DataDelete(data) {
//接口请求参数列表页查询
export function DataQuery(data) {
return request({
url: '/create/data/info/page',
url: '/data-tools/db-builder/info/page',
method: 'post',
data
})
@@ -76,7 +76,7 @@ export function DataQuery(data) {
//返回待编辑造数请求信息 (详情页)
export function DataAdvance(data) {
return request({
url: '/create/data/info/getAdvance',
url: '/data-tools/db-builder/info/getAdvance',
method: 'post',
data
})
@@ -103,7 +103,7 @@ export function getGitPull(data) {
//刪除造数请求参数信息
export function InfoDelete(data) {
return request({
url: '/create/data/info/delete',
url: '/data-tools/db-builder/info/delete',
method: 'post',
data
})
@@ -112,7 +112,7 @@ export function InfoDelete(data) {
//列表查询造数请求参数信息
export function InfoQuery(data) {
return request({
url: '/create/data/detail/page',
url: '/data-tools/db-builder/detail/page',
method: 'post',
data
})
@@ -121,7 +121,7 @@ export function InfoQuery(data) {
//查找出全部的可用方法与描述进行录库
export function InfoScrapy(data) {
return request({
url: '/create/data/detail/scrapy',
url: '/data-tools/db-builder/detail/scrapy',
method: 'post',
data
})
@@ -130,7 +130,7 @@ export function InfoScrapy(data) {
//运行造数
export function RunCreateData(data) {
return request({
url: '/create/data/run',
url: '/data-tools/db-builder/run',
method: 'post',
data
})
@@ -140,7 +140,7 @@ export function RunCreateData(data) {
//造数结果列表页查询
export function ResultQuery(data) {
return request({
url: '/create/data/result/page',
url: '/data-tools/db-builder/result/page',
method: 'post',
data
})
@@ -149,7 +149,7 @@ export function ResultQuery(data) {
//返回待编辑造数结果 (详情页)
export function ResultAdvance(data) {
return request({
url: '/create/data/result/getAdvance',
url: '/data-tools/db-builder/result/getAdvance',
method: 'post',
data
})
@@ -177,7 +177,7 @@ export function DictQuery(data) {
//抓取入库
export function ScrapyDetail(data) {
return request({
url: '/create/data/detail/scrapy',
url: '/data-tools/db-builder/detail/scrapy',
method: 'post',
data
})

80
src/api/bugApi.js Normal file
View File

@@ -0,0 +1,80 @@
import request from '@/utils/request'
export function getBugList(params) {
return request({
url: '/bug/list',
method: 'get',
params: Object.assign({ pageNo: 1, pageSize: 20 }, params || {})
})
}
export function getBugDetail(bugId) {
return request({
url: '/bug/detail',
method: 'get',
params: {
bugId,
id: bugId
}
})
}
export function createBug(data) {
return request({
url: '/bug/create',
method: 'post',
data: data || {}
})
}
export function updateBug(data) {
return request({
url: '/bug/update',
method: 'post',
data: data || {}
})
}
export function deleteBug(data) {
return request({
url: '/bug/delete',
method: 'post',
data: data || {}
})
}
export function addBugComment(data) {
return request({
url: '/bug/comment/add',
method: 'post',
data: data || {}
})
}
/** Bug 操作历史POST /bug/history/add */
export function addBugHistory(data) {
return request({
url: '/bug/history/add',
method: 'post',
data: data || {}
})
}
export function getBugStats(params) {
return request({
url: '/bug/stats',
method: 'get',
params: params || {}
})
}
/** 复现步骤截图POST /bug/upload表单字段 file成功返回 data.url */
export function uploadBugStepImage(file) {
const formData = new FormData()
formData.append('file', file)
return request({
url: '/bug/upload',
method: 'post',
data: formData
})
}

View File

@@ -124,3 +124,24 @@ export function getCaseReviewList(projectId, params) {
params: Object.assign({ project_id: projectId, pageNo: 1, pageSize: 10 }, params || {})
})
}
// 用例导入
export function downloadCaseImportTemplate() {
return request({
url: '/import/template',
method: 'get',
responseType: 'blob'
})
}
export function importCaseExcel(projectId, file) {
const formData = new FormData()
// 后端从 request.form.get('projectId') 读取
formData.append('projectId', projectId)
formData.append('file', file)
return request({
url: '/case/import',
method: 'post',
data: formData
})
}

View File

@@ -89,3 +89,53 @@ export function deleteEnvironment(data) {
data
})
}
/** 项目 Webhook 配置 */
export function getProjectHookList(params) {
return request({
url: '/project/hook/list',
method: 'get',
params: Object.assign({ pageNo: 1, pageSize: 20 }, params || {})
})
}
export function getProjectHookDetail(hookId) {
return request({
url: '/project/hook/detail',
method: 'get',
params: { hookId }
})
}
export function createProjectHook(data) {
return request({
url: '/project/hook/create',
method: 'post',
data: data || {}
})
}
export function updateProjectHook(data) {
return request({
url: '/project/hook/update',
method: 'post',
data: data || {}
})
}
export function deleteProjectHook(data) {
return request({
url: '/project/hook/delete',
method: 'post',
data: data || {}
})
}
/** 按项目发送 Webhook 测试/通知消息 */
export function sendProjectHookMessage(data) {
return request({
url: '/project/hook/send',
method: 'post',
data: data || {}
})
}

View File

@@ -8,6 +8,21 @@ export function getRoleList(params) {
})
}
/** 从 /role/list 响应中取出菜单树(兼容多种 data 形态) */
export function parseMenusFromRoleListResponse(res) {
if (!res) return []
const raw = res.data !== undefined ? res.data : res
if (Array.isArray(raw)) return raw
if (raw && typeof raw === 'object') {
if (Array.isArray(raw.menus)) return raw.menus
if (Array.isArray(raw.menuList)) return raw.menuList
if (Array.isArray(raw.list)) return raw.list
if (Array.isArray(raw.items)) return raw.items
if (Array.isArray(raw.records)) return raw.records
}
return []
}
export function getRolePageList(params) {
return request({
url: '/role/page/list',
@@ -167,3 +182,55 @@ export function deleteMenu(data) {
data
})
}
export function getPermissionList(params) {
return request({
url: '/permission/list',
method: 'get',
params: Object.assign({ pageNo: 1, pageSize: 20 }, params || {})
})
}
export function getPermissionDetail(permissionId) {
return request({
url: '/permission/detail',
method: 'get',
params: {
permission_id: permissionId,
permissionId: permissionId,
id: permissionId
}
})
}
export function createPermission(data) {
return request({
url: '/permission/create',
method: 'post',
data
})
}
export function updatePermission(data) {
return request({
url: '/permission/update',
method: 'post',
data
})
}
export function deletePermission(data) {
return request({
url: '/permission/delete',
method: 'post',
data
})
}
export function assignRolePermissions(data) {
return request({
url: '/role/permission/assign',
method: 'post',
data
})
}

View File

@@ -1,28 +1,37 @@
import request from '@/utils/request'
export function getReportList(projectId, params) {
export function getReportList(params) {
return request({
url: '/report/list',
method: 'get',
params: Object.assign({ project_id: projectId, pageNo: 1, pageSize: 10 }, params || {})
params: Object.assign({ pageNo: 1, pageSize: 20 }, params || {})
})
}
export function generateReport(projectId, data) {
export function generateReport(data) {
return request({
url: '/report/generate',
method: 'post',
data: Object.assign({ project_id: projectId }, data)
data: data || {}
})
}
export function getReportDetail(projectId, reportId) {
export function getReportDetail(reportId, projectId) {
return request({
url: '/report/detail',
method: 'get',
params: {
project_id: projectId,
id: reportId
}
params: Object.assign(
{
reportId: reportId,
report_id: reportId,
id: reportId
},
projectId
? {
projectId: projectId,
project_id: projectId
}
: {}
)
})
}