项目 API 接口文档
这帮你解决什么:项目模块开放API:项目/任务查询/创建接口,获取和操作项目数据。共 4 个接口,含请求参数和响应字段。
接口概览
| 接口 | 方式 | 路径 | 说明 |
|---|---|---|---|
| 创建项目任务 | POST | /open/api/saas/erp/projectTask/add | 创建一个新的项目任务,支持设置任务基本信息、时间计划、负责人、风险等级等 |
| 分页查询项目任务 | POST | /open/api/saas/erp/projectTask/page | 根据多种条件分页查询项目任务列表,支持按项目ID、任务编码、任务名称、任务风险等维度筛选 |
| 查询项目任务详情 | POST | /open/api/saas/erp/projectTask/detail | 根据任务id或任务编码查询项目任务的详细信息 |
| 分页查询项目 | POST | /open/api/saas/erp/project/page | 根据多种条件分页查询项目列表,支持按项目编号、名称、关键字、状态、类型、负责人、开始时间、是否延期等维度筛选 |
1. 创建项目任务
方式: POST | 路径: /open/api/saas/erp/projectTask/add
创建一个新的项目任务,支持设置任务基本信息、时间计划、负责人、风险等级等
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | Long | 否 | 项目id |
taskName | String | 否 | 任务名称 |
taskType | Long | 否 | 任务类型,1:需求,2:bug,100:外部采购订单 |
taskDesc | String | 否 | 任务描述 |
projectNodeId | Long | 否 | 节点id |
taskStatus | Long | 否 | 任务状态,1:未开始,2:已完成,3:进行中,4:取消,5:任务封档 |
taskPriority | Long | 否 | 任务优先级,1:P0,2:P1,3:P2,4:P3 |
taskManagerIds | List<Long> | 否 | 任务责任人id列表 |
expectedCompletionTime | Date | 否 | 期望完成时间 |
expectStartTime | Date | 否 | 任务预计开始时间 |
expectEndTime | Date | 否 | 任务预计完成时间 |
actualStartTime | Date | 否 | 实际开始时间 |
actualEndTime | Date | 否 | 实际结束时间 |
arrangeRules | Integer | 否 | 任务安排规则,1-按预计时间,2-按任务顺序 |
estimatedWorkingTime | BigDecimal | 否 | 本任务预估工时 |
estimatedWorkingTimeUnit | Integer | 否 | 本任务预估工时单位,1-小时,2-天 |
predecessorTaskId | Long | 否 | 前置任务id |
parentTaskId | Long | 否 | 关联任务id(上级任务) |
taskRisk | Integer | 否 | 任务风险(1-无;2-技术风险;3-人员风险;4-供应链风险) |
taskFileBizKeys | List<Long> | 否 | 文件keys |
响应参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
code | String | 是 | 响应码 |
message | String | 是 | 响应消息 |
success | Boolean | 是 | 是否成功 |
{
"projectId": 10001,
"taskName": "接口开发",
"taskType": 1,
"taskDesc": "开发项目任务管理模块的接口",
"projectNodeId": 4001,
"taskStatus": 1,
"taskPriority": 2,
"taskManagerIds": [3001, 3002],
"expectedCompletionTime": "2026-04-20 18:00:00",
"expectStartTime": "2026-04-10 09:00:00",
"expectEndTime": "2026-04-20 18:00:00",
"actualStartTime": "2026-04-10 09:00:00",
"actualEndTime": "2026-04-19 17:00:00",
"arrangeRules": 1,
"estimatedWorkingTime": 8.5,
"estimatedWorkingTimeUnit": 1,
"predecessorTaskId": 20000,
"parentTaskId": 10001,
"taskRisk": 1,
"taskFileBizKeys": [9001, 9002]
} | { "code": "200", "message": "success", "success": true } | 成功 | - |
请求成功 | 参数错误 | - | 请求参数不合法 |
未授权 | - | 未登录或token失效 | 禁止访问 |
- | 无权限访问该接口 | 服务器错误 | - |
2. 分页查询项目任务
方式: POST | 路径: /open/api/saas/erp/projectTask/page
根据多种条件分页查询项目任务列表,支持按项目ID、任务编码、任务名称、任务风险等维度筛选
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
pageNum | Integer | 是 | 当前页码,最小值为1 |
pageSize | Integer | 是 | 每页数量,最大值为1000 |
projectId | Long | 否 | 项目id |
taskCode | String | 否 | 任务编码 |
taskName | String | 否 | 任务名称 |
excludeTaskId | Long | 否 | 排除的任务id |
taskRiskList | List<Integer> | 否 | 项目风险集合 |
响应参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
code | String | 是 | 响应码 |
message | String | 是 | 响应消息 |
success | Boolean | 是 | 是否成功 |
List<ProjectTaskPageRespDTO> | 是 | pageNum | Integer |
是 | 当前页码 | pageSize | Integer |
是 | 每页数量 | pages | Integer |
是 | 总页数 | total | Long |
是 | 总记录数 | taskId | Long |
是 | 任务id | taskCode | String |
是 | 任务编码 | taskName | String |
是 | 任务名称 | taskType | Long |
是 | 任务类型,1:需求,2:bug,100:外部采购订单 | taskPriority | Long |
是 | 任务优先级,1:P0,2:P1,3:P2,4:P3 | taskStatus | Long |
是 | 任务状态,1:未开始,2:已完成,3:进行中,4:取消,5:任务封档 | memberNameList | List<TaskMemberRespDTO> |
是 | arrangeRules | Integer | 是 |
任务安排规则,1-按预计时间,2-按任务顺序 | estimatedWorkingTime | BigDecimal | 是 |
本任务预估工时 | estimatedWorkingTimeUnit | Integer | 是 |
本任务预估工时单位,1-小时,2-天 | predecessorTaskId | Long | 是 |
前置任务id | predecessorTaskName | String | 是 |
前置任务名称 | expectStartTime | Date | 是 |
任务预计开始时间 | expectEndTime | Date | 是 |
任务预计完成时间 | taskRisk | Integer | 是 |
任务风险(1-无;2-技术风险;3-人员风险;4-供应链风险) | projectNodeId | Long | 是 |
项目节点id | projectNodeName | String | 是 |
项目节点名称 | delayFlag | Boolean | 是 |
是否延期 | memberId | Long | 是 |
成员id | memberName | String | 是 |
成员名称 | memberPhotoUrl | String | 是 |
成员头像url | projectMemberFlag | Boolean | 是 |
是否是项目成员 | { "pageNum": 1, "pageSize": 20, "projectId": 10001, "taskCode": "TASK202604001", "taskName": "接口开发", "excludeTaskId": 5001, "taskRiskList": [1, 2] } | { "code": "200", "message": "success", "success": true, "data": { "pageNum": 1, "pageSize": 20, "pages": 5, "total": 100, "data": [ { "taskId": 20001, "taskCode": "TASK202604001", "taskName": "接口开发", "taskType": 1, "taskPriority": 2, "taskStatus": 2, "memberNameList": [ { "memberId": 3001, "memberName": "张三", "memberPhotoUrl": "https://example.com/photo/3001.jpg", "projectMemberFlag": true } ], "arrangeRules": 1, "estimatedWorkingTime": 8.5, "estimatedWorkingTimeUnit": 1, "predecessorTaskId": 20000, "predecessorTaskName": "需求分析", "expectStartTime": "2026-04-10 09:00:00", "expectEndTime": "2026-04-20 18:00:00", "taskRisk": 1, "projectNodeId": 4001, "projectNodeName": "开发阶段", "delayFlag": false } ] } } | 成功 |
- | 请求成功 | 参数错误 | - |
请求参数不合法 | 未授权 | - | 未登录或token失效 |
禁止访问 | - | 无权限访问该接口 | 服务器错误 |
3. 查询项目任务详情
方式: POST | 路径: /open/api/saas/erp/projectTask/detail
根据任务id或任务编码查询项目任务的详细信息
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
taskId | Long | 否 | 任务id |
taskCode | String | 否 | 任务编码 |
响应参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
code | String | 是 | 响应码 |
message | String | 是 | 响应消息 |
success | Boolean | 是 | 是否成功 |
Long | 是 | 任务id | taskCode |
String | 是 | 任务编码 | taskName |
String | 是 | 任务名称 | taskType |
Long | 是 | 任务类型,1:需求,2:bug,100:外部采购订单 | projectNodeId |
Long | 是 | 节点id | taskStatus |
Long | 是 | 任务状态,1:未开始,2:已完成,3:进行中,4:取消,5:任务封档 | taskPriority |
Long | 是 | 任务优先级,1:P0,2:P1,3:P2,4:P3 | taskManagerImageUrl |
String | 是 | 任务责任人头像url | expectedCompletionTime |
Date | 是 | 期望完成时间 | expectStartTime |
Date | 是 | 任务预计开始时间 | expectEndTime |
Date | 是 | 任务预计完成时间 | actualStartTime |
Date | 是 | 任务实际开始时间 | actualEndTime |
Date | 是 | 任务实际完成时间 | arrangeRules |
Integer | 是 | 任务安排规则,1-按预计时间,2-按任务顺序 | estimatedWorkingTime |
BigDecimal | 是 | 本任务预估工时 | estimatedWorkingTimeUnit |
Integer | 是 | 本任务预估工时单位,1-小时,2-天 | predecessorTaskId |
Long | 是 | 前置任务id | predecessorTaskName |
String | 是 | 前置任务名称 | taskDesc |
String | 是 | 任务描述 | taskRisk |
Integer | 是 | 任务风险(1-无;2-技术风险;3-人员风险;4-供应链风险) | taskDirectoryId |
Long | 是 | 项目文件目录id | taskDirectoryName |
String | 是 | 项目文件目录名称 | memberList |
List<TaskMemberRespDTO> | 是 | customField | List<CustomFieldVO> |
是 | canUpdateFlag | Boolean | 是 |
可修改标识 | memberId | Long | 是 |
成员id | memberName | String | 是 |
成员名称 | memberPhotoUrl | String | 是 |
成员头像url | projectMemberFlag | Boolean | 是 |
是否是项目成员 | fieldId | Long | 是 |
自定义字段id | fieldCode | String | 是 |
自定义字段编码 | fieldName | String | 是 |
自定义字段名称 | fieldType | Integer | 是 |
自定义字段类型 | fieldValue | String | 是 |
自定义字段值 | fieldOptionValue | List<String> | 是 |
自定义字段选项值 | expressType | Integer | 否 |
自定义字段快递进度-快递类型 | expressTypeName | String | 否 |
自定义字段快递进度-快递类型名称 | expressNo | String | 否 |
自定义字段快递进度-快递单号 | expressPhone | String | 否 |
自定义字段快递进度-手机号(脱敏) | expressPhoneDes | String | 否 |
自定义字段快递进度-手机号(加密) | projectId | Long | 否 |
自定义字段关联项目-项目id | projectaCode | String | 否 |
自定义字段关联项目-项目编号 | projectaName | String | 否 |
自定义字段关联项目-项目名称 | customFieldAttachmentList | List<CustomFieldAttachmentVO> | 否 |
附件列表 | { "taskId": 20001, "taskCode": "TASK202604001" } | { "code": "200", "message": "success", "success": true, "data": { "taskId": 20001, "taskCode": "TASK202604001", "taskName": "接口开发", "taskType": 1, "projectNodeId": 4001, "taskStatus": 2, "taskPriority": 2, "taskManagerImageUrl": "https://example.com/photo/manager.jpg", "expectedCompletionTime": "2026-04-20 18:00:00", "expectStartTime": "2026-04-10 09:00:00", "expectEndTime": "2026-04-20 18:00:00", "actualStartTime": "2026-04-10 09:00:00", "actualEndTime": "2026-04-19 17:00:00", "arrangeRules": 1, "estimatedWorkingTime": 8.5, "estimatedWorkingTimeUnit": 1, "predecessorTaskId": 20000, "predecessorTaskName": "需求分析", "taskDesc": "开发项目任务管理模块的接口", "taskRisk": 1, "taskDirectoryId": 6001, "taskDirectoryName": "接口文档", "memberList": [ { "memberId": 3001, "memberName": "张三", "memberPhotoUrl": "https://example.com/photo/3001.jpg", "projectMemberFlag": true } ], "customField": [ { "fieldId": 7001, "fieldCode": "custom_field_001", "fieldName": "自定义字段1", "fieldType": 1, "fieldValue": "测试值", "fieldOptionValue": ["选项1", "选项2"], "expressType": null, "expressTypeName": null, "expressNo": null, "expressPhone": null, "expressPhoneDes": null, "projectId": null, "projectaCode": null, "projectaName": null, "customFieldAttachmentList": [] } ], "canUpdateFlag": true } } | 成功 |
- | 请求成功 | 参数错误 | - |
请求参数不合法 | 未授权 | - | 未登录或token失效 |
禁止访问 | - | 无权限访问该接口 | 服务器错误 |
4. 分页查询项目
方式: POST | 路径: /open/api/saas/erp/project/page
根据多种条件分页查询项目列表,支持按项目编号、名称、关键字、状态、类型、负责人、开始时间、是否延期等维度筛选
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
pageNum | Integer | 是 | 当前页码,最小值为1 |
pageSize | Integer | 是 | 每页数量,最大值为1000 |
projectCode | String | 否 | 项目编号 |
projectName | String | 否 | 项目名称 |
keyword | String | 否 | 关键字 |
projectStatus | Integer | 否 | 项目状态 |
projectType | Integer | 否 | 项目类型 |
projectManagerId | Long | 否 | 项目负责人id |
projectStartTimeBegin | Date | 否 | 项目开始时间-开始,格式yyyy-MM-dd HH:mm:ss |
projectStartTimeEnd | Date | 否 | 项目开始时间-结束,格式yyyy-MM-dd HH:mm:ss |
delayFlag | Boolean | 否 | 是否延期 |
响应参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
code | String | 是 | 响应码 |
message | String | 是 | 响应消息 |
pageNum | Integer | 是 | 当前页码 |
pageSize | Integer | 是 | 每页数量 |
pages | Integer | 是 | 总页数 |
total | Long | 是 | 总记录数 |
projectId | Long | 是 | 项目id |
projectCode | String | 是 | 项目编号 |
projectName | String | 是 | 项目名称 |
projectStatus | Integer | 是 | 项目状态 |
projectStatusName | String | 是 | 项目状态名称 |
projectType | Integer | 是 | 项目类型 |
projectTypeName | String | 是 | 项目类型名称 |
projectManagerId | Long | 是 | 项目负责人id |
projectManagerName | String | 是 | 项目负责人名称 |
customerId | Long | 是 | 客户id |
customerCode | String | 是 | 客户编号 |
customerName | String | 是 | 客户名称 |
startTime | String | 是 | 项目开始时间 |
endTime | String | 是 | 项目结束时间 |
createTime | String | 是 | 创建时间 |
describe | String | 是 | 项目描述 |
{
"pageNum": 1,
"pageSize": 20,
"projectCode": "PRJ202604001",
"projectName": "ERP升级项目",
"keyword": "ERP",
"projectStatus": 1,
"projectType": 1,
"projectManagerId": 3001,
"projectStartTimeBegin": "2026-04-01 00:00:00",
"projectStartTimeEnd": "2026-04-30 23:59:59",
"delayFlag": false
} | { "code": "200", "message": "success", "data": { "pageNum": 1, "pageSize": 20, "pages": 5, "total": 100, "data": [ { "projectId": 10001, "projectCode": "PRJ202604001", "projectName": "ERP升级项目", "projectStatus": 1, "projectStatusName": "进行中", "projectType": 1, "projectTypeName": "研发项目", "projectManagerId": 3001, "projectManagerName": "张三", "customerId": 8001, "customerCode": "CUST001", "customerName": "嘉立创科技", "startTime": "2026-04-10 09:00:00", "endTime": "2026-06-30 18:00:00", "createTime": "2026-04-01 10:30:00", "describe": "ERP系统整体升级改造项目" } ] } } | 成功 | - |
请求成功 | 参数错误 | - | 请求参数不合法 |
未授权 | - | 未登录或token失效 | 禁止访问 |
- | 无权限访问该接口 | 服务器错误 | - |