工作汇报接口
工作汇报接口查询需要 reports.read 权限、写操作需要 reports.write 权限,依赖企业套餐工作汇报模块。查询范围始终限定在企业内,并叠加当前操作人的汇报查看权限(本人 / 本部门 / 本部门及下级 / 全企业)。汇报类型统一使用字符串枚举 reportType:all 全部、day 日汇报、week 周报、month 月报;模板维护只接受 day/week/month。
X-Employee-Virtual-Id,未传或不属于当前企业时返回 403,错误信息为“请通过 X-Employee-Virtual-Id 指定当前操作人”。reportType 由网关统一映射为源站数值(all=0、day=1、week=2、month=3),调用方只需传字符串;传入枚举外的值返回 400,错误信息为“reportType 必须为 all、day、week 或 month”。status 是汇报列表唯一的数据范围开关,由网关统一映射为源站数值(pending=1、received=2、sent=3、archived=4、all=5)。工作台侧的历史汇总、待办等待操作在开放平台统一收敛为同一个列表接口,用 status 区分即可;传入枚举外的值返回 400,错误信息为“status 必须为 pending、received、sent、archived 或 all”。msg 是领域层的真实业务结论(例如“您今天已经发送过日报了”)而不是受理回执,响应耗时也高于普通查询。调用前必须把汇报内容、考核分值等完整展示给用户并取得明确确认。data.total、data.page、data.pageSize、data.items;page 从 1 开始,pageSize 默认 20、最大 100,超出上限按 100 处理。分页查询汇报列表。status 决定数据范围:pending 待我操作、received 我收到且未完成、sent 我发送且未完成、archived 已归档(我参与的历史汇报)、all 与我关联的全部(本人发送的、发给本人的、抄送本人的)。其余参数一律作为附加筛选条件叠加。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
status | string | 否 | 列表状态,字符串枚举 pending(默认)/received/sent/archived/all。 |
reportType | string | 否 | 汇报类型,字符串枚举 all(默认)/day/week/month。 |
departmentId | int | 否 | 部门 Id,只查询该部门的汇报;不传表示不限部门。 |
startAt | datetime | 否 | 汇报时间范围起(含),ISO 8601 带时区。 |
endAt | datetime | 否 | 汇报时间范围止(含),ISO 8601 带时区。 |
keyword | string | 否 | 关键词,按汇报名称模糊匹配。 |
page | int | 否 | 页码,默认 1。 |
pageSize | int | 否 | 每页条数,默认 20,最大 100。 |
{
"statusCode": 100,
"msg": "获取成功",
"data": {
"total": 36,
"page": 1,
"pageSize": 20,
"items": [
{
"id": "5f1c2a3b-4d5e-4f60-8a71-9b2c3d4e5f60",
"reportTitle": "9 月第 2 周工作汇报",
"reportType": 2,
"reportDate": "2026-09-14T00:00:00+08:00",
"startAt": "9/8",
"endAt": "9/14",
"employeeVirtualId": "emp_T7dQ2mYk8rLp4cN1sVx3bH9wAe6fJuKz",
"checkerVirtualId": "emp_K3mR9xQw2vTn6bY8cL4dF1gH5jS7pZ0a",
"sender": { "virtualId": "emp_T7dQ2mYk8rLp4cN1sVx3bH9wAe6fJuKz", "name": "张三", "headImg": "https://cdn.example.com/head/20260914/zhangsan.png" },
"checker": { "virtualId": "emp_K3mR9xQw2vTn6bY8cL4dF1gH5jS7pZ0a", "name": "李四", "headImg": "https://cdn.example.com/head/20260914/lisi.png" },
"status": 0,
"statusStr": "待确认",
"summaryData": { "complete": 8, "noComplete": 1, "over": 0, "getScore": 12, "noGetScore": 0, "taskScore": 0 },
"reviewerNumber": 1,
"executeCount": 8,
"checkCount": 3,
"tomorrowWorkCount": 2,
"createdAt": "2026-09-14T18:12:00+08:00",
"templateId": "3c9d2f21-8a4b-4c3d-9e2f-1a2b3c4d5e6f",
"ccVirtualIds": [],
"operateBtns": [
{ "name": "querenhuibao", "label": "确认汇报", "color": "primary", "icon": "check" }
]
}
]
}
}汇报列表行字段(全部状态共用)
| 字段 | 类型 | 说明 |
|---|---|---|
id | guid | 汇报 Id,后续详情、确认、申诉、撤回、考核等操作都用该值。 |
reportTitle | string | 汇报标题。 |
reportType | int | 汇报类型:1 日汇报、2 周报、3 月报。 |
reportDate | datetime | 汇报归属日期。 |
startAt / endAt | string | 汇报周期的起止日期(M/d 文本形式)。 |
employeeVirtualId | string | 汇报人在本 API Key 下的 virtualId。 |
checker | object | 审核人的成员对象(含 virtualId、name 与掩码 phone)。 |
sender / checker | object | 汇报人 / 审核人的员工对象,含 virtualId、name、headImg、positionName、designName、depName、userTypeStr;电话号码与登录账号不下发。 |
status | int | 汇报状态:-1 被申诉、0 新增、1 已考核、2 已确认。 |
statusStr | string | 状态文案。 |
summaryData | object | 任务汇总,周报与月报填充:complete 完成数、noComplete 未完成数、over 超期数、getScore 已获得贡献、noGetScore 未获得贡献、taskScore 扣除贡献,贡献单位均为点。 |
totalScore / scoreStr | decimal | string | 周期累计得分与得分文案,绩效考核口径单位为“分”;archived 与 all 状态返回。 |
reviewerNumber | int | 审核人数量。 |
executeCount / checkCount / tomorrowWorkCount | int | 执行工作 / 检查工作 / 明日计划的任务数量。 |
confirmedAt | datetime | 确认时间;未确认时为零值时间。 |
checkedAt | datetime | 考核时间;未考核时为零值时间。 |
createdAt | datetime | 汇报创建时间。 |
serialNum | int | 序号。 |
score | decimal | 汇报得分,绩效考核口径单位为“分”。 |
workResult / workJudge | string | 评定结果(优/良/中/差)与工作评定评语。 |
reviewers | object[] | 审核人成员对象数组(每项含 virtualId、name 与掩码 phone)。 |
cc | object[] | 抄送人成员对象数组(每项含 virtualId、name 与掩码 phone)。 |
templateId | guid | 本次汇报使用的模板 Id。 |
customItemList | object[] | 自定义内容填写值,archived 与 all 状态返回;字段同详情接口的同名字段。 |
operateBtns | object[] | 当前操作人对该汇报可用的操作按钮:name 英文标识、label 中文文案、color、icon。按钮集合是权限与状态的唯一真源,调用方直接渲染即可。 |
pending 按创建时间升序,其余状态按创建时间或汇报时间倒序;所有状态的可见范围都由当前操作人的汇报查看权限(本人 / 本部门 / 本部门及下级 / 全企业)叠加企业边界决定,无法查看的汇报不会出现在结果中。查询单个汇报详情,包含执行工作、检查工作、明日/下周/下月计划三类任务明细,以及自定义内容、考核附件与申诉驳回信息。只能查看本企业内且当前操作人有权限查看的汇报,否则返回 101,错误信息为“该工作汇报不存在或无权查看”。
{
"statusCode": 100,
"msg": "获取成功",
"data": {
"id": "5f1c2a3b-4d5e-4f60-8a71-9b2c3d4e5f60",
"reportTitle": "9 月第 2 周工作汇报",
"reportType": 2,
"status": 1,
"statusStr": "已考核",
"executeWork": [],
"checkWork": [],
"workPlan": [],
"ccUser": [],
"rebutInfo": { "reason": "部分任务缺少进展说明", "attachmentUrls": [] },
"complainInfo": null,
"judgeAttachment": [],
"attachmentList": [],
"customItemList": [
{ "id": "9a1b2c3d-4e5f-4a6b-8c7d-6e5f4a3b2c1d", "name": "本周收获", "type": 2, "value": "完成结算模块联调" }
],
"customScoreList": [],
"scoreList": [12, 5, 0, 88]
}
}详情字段
| 字段 | 类型 | 说明 |
|---|---|---|
| 共用的列表行字段 | — | 详情在汇报列表行字段基础上扩展下述字段。 |
executeWork / checkWork / workPlan | object[] | 执行工作 / 检查工作 / 明日(下周、下月)计划的任务明细,元素字段见下方“任务明细行字段”。 |
ccUser | object[] | 抄送人列表,元素为员工对象(含 virtualId、name、headImg)。 |
rebutInfo / complainInfo | object | 驳回理由 / 申诉理由,含 reason 与 attachmentUrls;不存在时为 null。 |
judgeAttachment | object[] | 考核时上传的附件,元素含 virtualId、fileName、fileSize、url、thumbnail、isImage。 |
attachmentList | object[] | 发送汇报时上传的附件,字段同上。 |
customItemList | object[] | 模板自定义内容的填写值:id 模板项 Id、name 标题、type 控件类型(1 单行文本、2 多行文本、3 数字、4 单选、5 多选、6 附件、7 手机号)、value 文本值、data 选项值、attachmentUrls 附件。 |
customScoreList | object[] | 自定义评分项:score 分值、isShowReason 是否展示理由、label 档位文案。 |
scoreList | decimal[] | 得分明细数组,依次为任务贡献、基础贡献、申请贡献、汇报得分。 |
任务明细行字段(executeWork / checkWork / workPlan 与汇总明细共用)
| 字段 | 类型 | 说明 |
|---|---|---|
id / reportId | guid | 明细 Id 与所属汇报 Id。 |
workType | int | 明细类型,与工作台汇总弹窗分类同源。 |
taskTitle | string | 任务名称。 |
taskType / taskStatus / status / statusStr | int | string | 任务类型与状态,以及状态文案。 |
taskProgress / taskProgressChange | int | 任务进度与本次汇报的进度变化。 |
taskScore | decimal | 任务贡献点,单位点。 |
assignee | object | 任务执行人的成员对象(含 virtualId、name 与掩码 phone)。 |
creator | object | 任务创建人的成员对象(含 virtualId、name 与掩码 phone)。 |
dueAt / taskClosingTime | datetime | 任务截止时间。 |
createdAt / taskAddTime | datetime | 任务创建时间。 |
judgeTime / taskJudgeTime | datetime | 任务考核时间。 |
overTime / isOverTime | datetime | bool | 超期时间与是否超期。 |
priority | int | 任务优先级。 |
isFloat | bool | 是否为浮动任务。 |
score | object | 任务贡献构成:score 本任务贡献、isDecomposed 是否分解、decomposedScore 分解贡献、floatScore 浮动贡献、remainScore 剩余贡献,单位点。 |
查询当前操作人的汇报统计数量。
{
"statusCode": 100,
"msg": "获取成功",
"data": {
"send": 12,
"receive": 3,
"pending": 0
}
}响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
send | int | 我发送的汇报数。 |
receive | int | 我收到的尚未确认的汇报数。 |
pending | int | 待操作数量;源站已停用该统计,恒为 0。 |
查询当前操作人的工作汇报配置,用于渲染考核评分档位与判定模板管理权限。
{
"statusCode": 100,
"msg": "获取成功",
"data": {
"permission": { "templateManager": true },
"defaultDayScore": [ { "score": 5, "isShowReason": false, "label": "优秀" } ],
"defaultWeekScore": [ { "score": 11, "isShowReason": false, "label": "优秀" } ],
"defaultMonthScore": [ { "score": 22, "isShowReason": false, "label": "优秀" } ],
"judgeLevelLabels": [ { "id": 1, "name": "优" } ]
}
}响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
permission.templateManager | bool | 当前操作人是否为汇报模板管理员;为 false 时模板增删改会返回“抱歉,您没有权限编辑模板!”。 |
defaultDayScore | object[] | 日汇报默认评分档位,固定 5 档(1/2/3/4/5 分)。 |
defaultWeekScore | object[] | 周报默认评分档位,固定 5 档(3/5/7/9/11 分)。 |
defaultMonthScore | object[] | 月报默认评分档位,固定 5 档(6/10/14/18/22 分)。 |
judgeLevelLabels | object[] | 评定等级标签:id 等级值、name 中文名。 |
score(分值)、isShowReason(是否需要填写评语)、label(档位文案)构成;这里返回的 isShowReason 恒为 false,是否需要评语以考核初始化接口为准。查询发送汇报初始化数据:拿到指定模板的自定义填写项定义、审核人预览与提交约束,据此构造发送汇报的 setContent。
{
"statusCode": 100,
"msg": "获取成功",
"data": {
"id": "3c9d2f21-8a4b-4c3d-9e2f-1a2b3c4d5e6f",
"reportType": 2,
"reportTitle": "每周例会汇报",
"isMustSelectTomorrowWork": true,
"onlySubmitChangeWork": false,
"customContentList": [
{ "id": "9a1b2c3d-4e5f-4a6b-8c7d-6e5f4a3b2c1d", "name": "本周收获", "type": 2, "required": true, "maxLength": 500, "displayOrder": 1 }
],
"reviewerList": [ { "virtualId": "emp_K3mR9xQw2vTn6bY8cL4dF1gH5jS7pZ0a", "name": "李四", "headImg": "https://cdn.example.com/head/20260914/lisi.png" } ]
}
}响应字段与发送请求的对应关系
| 字段 | 类型 | 说明 |
|---|---|---|
id | guid | 模板 Id,直接作为发送汇报的 templateId。 |
reportType | int | 模板的汇报类型:1 日汇报、2 周报、3 月报,决定 taskIds、executeTaskIds、checkTaskIds 的语义。 |
reportTitle | string | 汇报标题(展示用)。 |
isMustSelectTomorrowWork | bool | 为 true 时发送汇报必须携带 taskIds(明日/下周/下月计划),否则返回“必须选择明日工作计划”。 |
onlySubmitChangeWork | bool | 为 true 时需用 executeTaskIds 限定本次提交的执行任务。 |
customContentList | object[] | 模板自定义填写项定义,逐项转换为发送请求的 setContent 元素,见下方说明。 |
reviewerList | object[] | 审核人预览(只读),元素含 virtualId、name、headImg。 |
自定义填写项字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | guid | 模板项 Id,回填到 setContent[].id,服务端按该值匹配模板项,必须一致。 |
name | string | 填写项标题。 |
type | int | 控件类型:1 单行文本、2 多行文本、3 数字、4 单选、5 多选、6 附件、7 手机号。 |
required | bool | 是否必填;为 true 且未填时返回“{标题}值不能为空!”。 |
maxLength / minNumber / maxNumber / lengthLimit / numberLimit | int | bool | 文本长度、数字区间的上限下限与是否启用对应限制。 |
placeholder / displayOrder | string | int | 输入提示与展示顺序。 |
dataList | object[] | 单选/多选的可选项:text、value。 |
101“使用的模板不存在!”、模板已停用返回 102“使用的模板已被暂停使用!”、不在使用范围返回 103“你没有使用该模板的权限!”。查询汇报考核初始化数据:拿到可选评分档、行为标准列表与已有考核结果,据此构造考核评分请求。汇报不存在时返回 101,错误信息为“未找到该工作汇报”。
{
"statusCode": 100,
"msg": "获取成功",
"data": {
"reportTitle": "9 月第 2 周工作汇报",
"status": 0,
"statusStr": "待考核",
"score": 0,
"workJudge": "",
"customScoreList": [ { "score": 11, "isShowReason": false, "label": "优秀" } ],
"standardList": [ { "id": "1b2c3d4e-5f60-4a71-8b92-3c4d5e6f7081", "minScore": 1, "maxScore": 5, "isFixed": false } ],
"relationStandardCC": [],
"attachmentUrls": []
}
}响应字段与考核请求的对应关系
| 字段 | 类型 | 说明 |
|---|---|---|
reportTitle | string | 汇报标题(展示用)。 |
status / statusStr | int | string | 汇报状态与文案;仅状态为已考核(1)或被申诉(-1)时才会填充已有考核结果。 |
score / workJudge | decimal | string | 已有考核分值与评语(绩效考核口径单位为“分”)。 |
customScoreList | object[] | 可选评分档:score 分值、isShowReason 是否需要填写评语(为 true 且 judge 为空时返回“评语不可为空”)、label 档位文案。 |
standardList | object[] | 关联的行为标准项,元素含 id、minScore/maxScore 贡献点区间、isFixed 是否固定分值;回填到考核请求的 standardItems,服务端只消费其中的 id 与 score。 |
relationStandardCC | object[] | 关联行为标准的抄送人;开放平台的考核请求体没有对应字段,无法回写。 |
attachmentUrls | object[] | 已有的考核附件,元素含 virtualId、fileName、url。 |
查询周报或月报的任务汇总数据:完成、未完成、超期任务数与贡献点增减情况。汇报不存在时返回 101,错误信息为“不存在此汇报”。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
reportType | string | 否 | 汇报类型,字符串枚举 day(默认)/week/month;传其它值返回 400,错误信息为“reportType 必须为 day、week 或 month”。 |
{
"statusCode": 100,
"msg": "获取成功",
"data": {
"name": "9 月第 2 周工作汇报",
"startAt": "2026-09-08T00:00:00+08:00",
"endAt": "2026-09-14T23:59:59+08:00",
"summaryData": { "complete": 8, "noComplete": 1, "over": 0, "getScore": 12, "noGetScore": 0, "taskScore": 0 }
}
}响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
name | string | 汇总标题(“{月}月第{n}周工作汇报”/“{月}月工作汇报”)。 |
startAt / endAt | string | 统计区间起止时间。 |
summaryData | object | 任务汇总:complete 完成数、noComplete 未完成数、over 超期数、getScore 已获得贡献、noGetScore 未获得贡献、taskScore 扣除贡献,贡献单位均为点。 |
分页查询汇总明细任务列表:按汇总分类返回对应的任务行,行结构同汇报详情中的任务明细行。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
reportType | string | 否 | 汇报类型,字符串枚举 day(默认)/week/month。 |
summaryType | string | 否 | 汇总分类,字符串枚举:completed 已完成任务(默认)、uncompleted 未完成任务、overdue 超期任务、scoreGained 已获得贡献、scoreNotGained 未获得贡献、scoreDeducted 扣除贡献。传其它值返回 400,错误信息为“summaryType 必须为 completed、uncompleted、overdue、scoreGained、scoreNotGained 或 scoreDeducted”。 |
page | int | 否 | 页码,默认 1。 |
pageSize | int | 否 | 每页条数,默认 20,最大 100。 |
响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
data.total | long | 该分类下的任务总数。 |
data.items | object[] | 任务明细行,字段同汇报详情中的任务明细行字段;贡献类分类(scoreGained、scoreDeducted)用 taskTitle 承载得分说明文案。 |
发送工作汇报。请求体结构以发送初始化接口返回为准,服务端会等待队列处理完成后返回结果。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
templateId | guid | 是 | 使用的汇报模板 Id,取自发送初始化接口返回的 id。模板不存在返回 102“抱歉,您使用的模板不存在!”,已停用返回 103“抱歉,您使用的模板已停用!”,不在使用范围返回 103“抱歉,您没有使用该模板的权限!”。 |
setContent | object[] | 否 | 模板自定义内容填写项,结构以发送初始化返回的 customContentList 为准。元素字段:id 模板项 Id(必须与初始化返回一致)、value 文本值、type 控件类型、attachmentUrls 附件、name 标题。 |
ccVirtualIds | string[] | 否 | 抄送人 virtualId 列表。 |
attachmentUrls | string[] | 否 | 汇报附件地址列表,最多 9 个;地址需先通过附件接口上传获得。 |
taskIds | guid[] | 否 | 关联的明日/下周/下月计划任务 Id 列表;模板要求勾选计划时必填,缺失返回 105“必须选择明日工作计划”。 |
executeTaskIds | guid[] | 否 | 本次提交的执行任务 Id 列表;模板开启“仅提交有变化的任务”时启用。 |
checkTaskIds | guid[] | 否 | 本次提交的检查任务 Id 列表。 |
{
"templateId": "3c9d2f21-8a4b-4c3d-9e2f-1a2b3c4d5e6f",
"setContent": [
{ "id": "9a1b2c3d-4e5f-4a6b-8c7d-6e5f4a3b2c1d", "value": "完成结算模块联调", "type": 2 }
],
"ccVirtualIds": ["emp_K3mR9xQw2vTn6bY8cL4dF1gH5jS7pZ0a"],
"attachmentUrls": [],
"taskIds": [],
"executeTaskIds": [],
"checkTaskIds": []
}101,错误信息为“您今天已经发送过日报了”“您本周已经发送过周报了”“您本月已经发送过月报了”。确认工作汇报(审核人对收到的汇报做确认)。重复确认或状态已为已确认时返回 103“该工作汇报已经确认过,不可重复操作”;非汇报发送人 / 审核人的无权操作返回“您无权执行该操作”。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
content | string | 否 | 确认说明。 |
{
"content": "已确认"
}对考核结果提出申诉。只有汇报发送人本人可以申诉,非本人返回 103“您无权执行该操作”。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
reason | string | 是 | 申诉原因,最长 1000 字符;为空时返回 400,错误信息为“申诉原因不能为空”。 |
attachmentUrls | string[] | 否 | 申诉附件地址列表,最多 9 个。 |
{
"reason": "任务已按期完成,考核未计入超期。",
"attachmentUrls": []
}驳回工作汇报的申诉。只有该汇报的审核人可以驳回,否则返回 103“您没有权限执行该操作”。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
reason | string | 是 | 驳回原因,最长 1000 字符;为空时返回 400,错误信息为“驳回原因不能为空”。 |
attachmentUrls | string[] | 否 | 驳回附件地址列表,最多 9 个。 |
{
"reason": "任务截止时间晚于考核周期,维持原考核结果。",
"attachmentUrls": []
}撤回工作汇报,无请求体。只能撤回本人发送的汇报,否则返回 104“用户只可撤回自己的工作汇报”;状态已为已确认时返回 102“工作汇报已确认,不可撤回”。
POST /api/openplatform/reports/5f1c2a3b-4d5e-4f60-8a71-9b2c3d4e5f60/actions/cancel
给工作汇报考核评分。只有该汇报的审核人可以考核,否则返回 104“您没有权限审核该汇报!”;状态已确认时返回 105“该工作汇报已确认,不可考核”。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
score | decimal | 是 | 考核分值,绩效考核口径单位为“分”。 |
judge | string | 否 | 考核评语,最长 1000 字符;所选评分档要求填写理由时不可为空,否则返回 102“评语不可为空”。 |
standardItems | object[] | 否 | 关联的行为标准项,结构以考核初始化返回的 standardList 为准;服务端只消费 id 与 score。校验失败会返回“选择的第N项行为标准不存在”“选择的第N项行为标准未发布”“选择的第N项行为标准贡献点不能大于X”“不能小于X”。 |
attachmentUrls | string[] | 否 | 考核附件地址列表,最多 9 个。 |
{
"score": 88,
"judge": "计划明确,进度记录完整。",
"standardItems": [
{ "id": "1b2c3d4e-5f60-4a71-8b92-3c4d5e6f7081", "score": 3 }
],
"attachmentUrls": []
}customScoreList 与配置接口的三组默认评分档为准。修改汇报的原因说明与附件。用于两类场景:审核人修改“汇报考核不通过”的驳回理由,或汇报人对“考核不通过”的申诉补充材料;场景由 scenario 指定,权限由服务端按场景校验。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
scenario | string | 否 | 修改场景,字符串枚举 rejected(默认,汇报考核不通过的原因说明,要求当前操作人是该汇报的审核人)/appealed(考核不通过申诉的补充说明,要求当前操作人是该汇报的发送人)。传其它值返回 400,错误信息为“scenario 必须为 rejected 或 appealed”。 |
content | string | 否 | 原因说明内容。 |
attachmentUrls | string[] | 否 | 原因说明附件地址列表;地址需先通过附件接口上传获得。 |
{
"scenario": "rejected",
"content": "已补充说明附件。",
"attachmentUrls": [
"https://cdn.example.com/op/20260914/reason.png"
]
}103,错误信息为“您无权执行该操作”;汇报不存在时返回 101。该接口是同步生效,不走队列。分页查询汇报模板列表,按启用状态、最后修改时间升序。同一路径在携带 using=true 时返回我可使用的模板列表(不分页,data 直接是数组)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
page | int | 否 | 页码,默认 1;仅在不带 using 时分页生效。 |
pageSize | int | 否 | 每页条数,默认 20,最大 100。 |
{
"statusCode": 100,
"msg": "获取成功",
"data": {
"total": 4,
"page": 1,
"pageSize": 20,
"items": [
{
"id": "3c9d2f21-8a4b-4c3d-9e2f-1a2b3c4d5e6f",
"name": "每周例会汇报",
"reportType": 2,
"reportTypeStr": "周报",
"enable": true,
"isMustSelectTomorrowWork": true,
"onlySubmitChangeWork": false,
"useNumber": 12,
"userInfo": "全体成员",
"reviewerInfo": "部门主管",
"createdAt": "2026-08-01T10:00:00+08:00",
"updatedAt": "2026-09-10T09:30:00+08:00",
"customContentList": []
}
]
}
}模板列表字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | guid | 模板 Id。 |
name | string | 模板名称,企业内不可重名,最长 20 字符。 |
reportType / reportTypeStr | int | string | 模板汇报类型(1 日汇报、2 周报、3 月报)与中文文案。 |
enable | bool | 是否启用;停用的模板不能被发送汇报引用。 |
isMustSelectTomorrowWork / onlySubmitChangeWork | bool | 是否必须勾选明日(下周、下月)计划 / 是否只提交有变化的任务。 |
useNumber | int | 模板累计被使用次数。 |
userInfo / reviewerInfo | string | 使用范围与审核人的人类可读描述(如“全体成员”“部门主管”)。 |
createdAt / updatedAt | datetime | 创建时间与最后修改时间。 |
customContentList | object[] | 模板自定义填写项定义,字段同发送初始化接口的同名字段。 |
useType | int | 仅“我可使用的模板”返回:0 直接指定我、1 指定我的角色、2 我所在部门、3 上级部门、4 全体。 |
查询模板详情,返回结构与模板新增、修改的请求体同构,可直接读取后修改再提交。模板不存在时返回“抱歉,查看的模板不存在!”。
响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | guid | 模板 Id。 |
name | string | 模板名称,最长 20 字符,企业内不可重名。 |
reportType | int | 模板汇报类型:1 日汇报、2 周报、3 月报。 |
isMustSelectTomorrowWork / onlySubmitChangeWork | bool | 是否必须勾选明日计划 / 是否只提交有变化的任务。 |
customContentList | object[] | 自定义填写项定义。 |
customScoreList | object[] | 自定义评分项,必须恰好 5 项,否则提交时返回“请完善贡献评定!”。 |
reviewer / user | object | 审核人与参与人配置(personType 取值类型 + persons 人员列表)。开放平台不开放该结构维护,提交请求中传入会被拒绝。 |
remark | string | 模板说明,最长 500 字符。 |
新增汇报模板,需要模板管理员权限。修改模板用 PATCH /api/openplatform/reports/templates/{id},删除用 DELETE 同一路径,启用与停用用 POST .../actions/enable 与 .../actions/disable;这些写操作都是同步生效,不走队列。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 模板名称,最长 20 字符;为空返回 400“模板名称不能为空”,重名返回“已存在同名的模板!”。 |
reportType | string | 是 | 字符串枚举 day/week/month;传其它值返回 400,错误信息为“reportType 必须为 day、week 或 month”。 |
isMustSelectTomorrowWork | bool | 否 | 是否必须勾选明日(下周、下月)工作计划。 |
onlySubmitChangeWork | bool | 否 | 是否只允许提交有变化的任务。 |
customContentList | object[] | 否 | 自定义填写项,元素要求 name 非空且 type 有效,否则返回“第N项标题不能为空!”“第N项类型错误!”。 |
customScoreList | object[] | 否 | 自定义评分项,必须恰好 5 项;每项 label 非空且不超过 20 字符、score 不小于 0。 |
remark | string | 否 | 模板说明,最长 500 字符。 |
reviewer / user | object | 否 | 审核人 / 参与人配置。源站是员工与角色混合的嵌套结构,开放平台暂不开放维护:只要传入非空值就返回 400“模板的审核人/参与人配置暂不支持通过开放平台维护,请在工作台配置后仅修改其他字段”。 |
{
"name": "每周例会汇报",
"reportType": "week",
"isMustSelectTomorrowWork": true,
"onlySubmitChangeWork": false,
"customContentList": [
{ "name": "本周收获", "type": 2, "required": true, "maxLength": 500 }
],
"customScoreList": [
{ "score": 3, "label": "待改进" },
{ "score": 5, "label": "合格" },
{ "score": 7, "label": "良好" },
{ "score": 9, "label": "优秀" },
{ "score": 11, "label": "卓越" }
],
"remark": "每周五 18:00 前提交"
}工作汇报查询工具,需要 reports.read 权限,覆盖上述全部 GET 查询能力。queryType 取值:list 汇报列表(分页,用 status 区分待操作/我收到/我发送/已归档/全部)、detail 汇报详情、count 汇报统计数量、config 工作汇报配置、sendInit 发送初始化、assessInit 考核初始化、summaryData 周报月报汇总数据、summaryDetail 汇总明细(分页)、templates 模板列表(分页)、templateDetail 模板详情。
{
"queryType": "list",
"status": "sent",
"reportType": "week",
"page": 1,
"pageSize": 20
}status 与 REST 的 status 同枚举(pending/received/sent/archived/all,仅 list 使用,默认 pending);汇报列表与详情用 reportId 对应 REST 的 {id};发送初始化与模板详情用 templateId;reportType 与 REST 同枚举(all/day/week/month);departmentId 对应 REST 的 departmentId;summaryType 仅 summaryDetail 使用。缺失目标 Id 时分别提示“查询类型 detail 必须提供 reportId”“查询类型 sendInit 必须提供 templateId”。工作汇报写操作工具,需要 reports.write 权限。action 取值:send 发送汇报、confirm 确认汇报、appeal 申诉汇报、rejectWork 驳回申诉、cancel 撤回汇报、assess 考核评分、editTip 修改原因附件说明、templateAdd 新增模板、templateEdit 修改模板、templateDelete 删除模板、templateEnable 启用模板、templateDisable 停用模板。
{
"action": "assess",
"reportId": "5f1c2a3b-4d5e-4f60-8a71-9b2c3d4e5f60",
"score": 88,
"judge": "计划明确,进度记录完整。"
}reportId 用于 confirm/appeal/rejectWork/cancel/assess/editTip;templateId 用于 send/templateEdit/templateDelete/templateEnable/templateDisable;content 用于 confirm/editTip;reason 用于 appeal/rejectWork;scenario 用于 editTip(rejected 默认 / appealed),attachmentUrls 用于 appeal/rejectWork/assess/editTip;setContent、ccVirtualIds 用于 send;模板维护整体放在 template 对象中,必须含 name,reportType 为 day/week/month,且不允许出现 reviewer 或 user。msg 是队列消费后的真实业务结论,不要仅按“已提交”判断成功。