简体中文
detail.logs.render.before
约 864 字大约 3 分钟
2026-07-20
遵循
Promise风格
操作日志首次请求前配置请求参数处理函数和日志数据处理函数。
该钩子发生在详情页操作日志渲染之前
参数
functional用于注册Hook回调函数。执行该Hook时,宿主会向回调函数传入以下参数:
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| context | 事件上下文,包含通用参数 | Object | -- | -- |
| plugin | 当前插件运行信息,业务逻辑通常不需要使用 | Object | -- | -- |
返回结果
Hook可以返回配置对象,也可以返回Promise<Object>。宿主等待Promise resolve后发起操作日志请求;Hook执行失败时忽略本次扩展配置,继续使用默认行为。
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| formatRequestParam | 操作日志请求参数处理函数 | Function | -- | -- |
| parseData | 操作日志列表数据处理函数 | Function | -- | -- |
formatRequestParam(params)
该函数在每次操作日志请求前同步执行。可以直接修改params并不返回值,也可以返回新的请求参数对象;返回值为假值时宿主继续使用传入的params。
| 参数 | 说明 | 类型 |
|---|---|---|
| params | 当前操作日志请求参数 | Object |
| params.apiName | 当前对象apiName | String |
| params.objectId | 当前详情数据ID | String |
| params.pageSize | 每页数量 | Number |
| params.pageNumber | 当前页码,从1开始 | Number |
| params.operationalType | 日志类型;系统日志为system,否则为空字符串 | String |
| params.bizIds | 当前日志组件传入的业务ID条件 | Any |
| params.otherBizIds | 当前日志组件传入的其他业务ID条件 | Any |
| params.operationTimeFrom | 时间范围开始时间;未启用时间范围时不存在 | Number | undefined |
| params.operationTimeTo | 时间范围结束时间;未启用时间范围时不存在 | Number | undefined |
| params.operationTime | 翻页临界时间;首次请求时可能不存在 | Number | undefined |
| params.needReturnCount | 是否需要返回总数;部分模式下不存在 | Boolean | undefined |
| params.turnLogId | 时间范围翻页游标;首次请求时可能为空 | String | undefined |
返回值类型为Object | void。返回对象时会完整替换原params,不会与原参数合并;因此只修改部分参数时必须返回{ ...params, 修改项 },避免丢失apiName、objectId等必要字段。该函数不支持返回Promise。
parseData(data)
该函数在每批操作日志数据返回后同步执行,包括首次加载、切换日志类型和继续加载。
| 参数 | 说明 | 类型 |
|---|---|---|
| data | 当前请求返回的操作日志数组 | Object[] |
data数组项由操作日志接口直接返回,字段会随日志类型和接口版本变化,本Hook不保证固定的日志项字段结构。生成字段读取或过滤代码时,应先判断目标字段是否存在,不要依赖文档未声明的字段。
返回值类型为Object[] | void。返回数组时替换本批日志数据;直接修改data并返回假值时,宿主继续使用原数组。该函数不支持返回Promise。
示例
处理请求参数和日志数据
export default class Plugin {
apply() {
return [{
event: 'detail.logs.render.before',
functional: this.logsRenderBefore.bind(this)
}];
}
logsRenderBefore(context, plugin) {
return Promise.resolve({
formatRequestParam(params) {
return {
...params,
pageSize: 50
};
},
parseData(data) {
return data.map(item => ({
...item,
pluginProcessed: true
}));
}
});
}
}注意事项
1. formatRequestParam和parseData会在分页、筛选条件变化等后续请求中重复执行,处理逻辑需要保证幂等。
2. 两个处理函数均由操作日志组件同步调用,不要返回Promise。
