简体中文
triggerCalAndUIEvent
约 1367 字大约 5 分钟
2025-09-22
异步发起计算和 UI 事件,默认将结果更新到插件生命周期内的数据层。
参数
param 属性说明
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| objApiName | 必填,当前发起计算的对象apiName | String | — |
| modifiedDataIndexs | 从对象字段变更事件必填,修改的从对象数据的dataIndex列表 | Array | — |
| changeFields | 字段变更事件必填,表示此次计算是因为修改了对应字段导致 | Array | — |
| triggerUiField | 按需,字段变更UI事件依赖,触发 UI 事件的字段 | String | — |
| uiChangedFields | 按需,字段变更事件UI事件依赖,一次字段UI操作改变了多个字段值,和triggerUiField配合使用,例如改变了国家省市区字段 | Array | — |
| newDataIndexs | 从对象添加事件必填,新添加的从数据dataIndex列表,如果你发起计算是因为添加了从对象数据,需要传 | Array | — |
| delDatas | 从对象删除事件必填,删除的从对象完整数据列表 | Array | — |
| uiEventType | 指定触发ui事件的类型,onload事件:5 | String | — |
| uiEventId | 指定触发ui事件的id,例如按钮事件 | String | — |
| filterFields | 按需,用于对需要计算的字段进行过滤格式:{SaleOrderProductObj: ['price']}key: 过滤字段所在的对象apiNamevalue:过滤的字段apiName列表 | Object | — |
| extraFields | 按需,当默认触发计算的字段不满足业务, 可以用它添加额外需要计算的字段格式:{SaleOrderProductObj: ['price']}key: 追加字段所在的对象apiNamevalue:追加的字段apiName列表 | Object | — |
| disableLoading | 禁用内部的loading逻辑 | Boolean | false |
| noMerge | 按需,仅触发计算,不更新当前源数据,相当于只是调用计算和ui事件接口返回结果 | Boolean | false |
| allowCancel | 按需,计算或UI事件执行失败后是否允许取消(同时取消本次数据变更),true:取消或重试,false:退出页面或重试 | Boolean | true |
| disableCal | 按需,禁止执行计算 | Boolean | false |
| disableUIEvent | 按需,禁止执行UI事件 | Boolean | false |
| beforeCalPost | 按需,同步处理本次计算请求参数 | Function | |
| afterCalPost | 按需,处理本次计算请求结果 | Function | |
| beforeUiPost | 按需,处理本次ui事件请求参数 | Function | |
| afterUiPost | 按需,处理本次ui事件请求结果 | Function |
返回结果
异步返回结果:Promise
| 属性 | 说明 | 类型 |
|---|---|---|
| calRst | 计算接口返回值透传 | Object |
| uiRst | UI事件接口返回值透传 | Object |
| updateMaster | 要更新的主对象数据 | Object |
| updateDetails | 要更新的从对象数据 | Object |
| addDetails | 要新增的从对象数据 | Object |
| delDetails | 要删除的从对象数据 | Object |
返回结果示例
{
"calRst":{},//计算接口返回值透传
"uiRst":{},//ui事件接口返回值透传
"updateMaster":{"name":""},//要更新的主对象数据(增量数据)
"updateDetails":{//要更新的从对象数据
"orderproduct": {
"0":{"name":""},//(增量数据)
}
},
"addDetails":{//要新增的从对象数据
"orderproduct": [{"name":""}]
},
"delDetails":{//要删除的从对象数据
"orderproduct":[{"name":""},{"name":""}]
}
}代码示例
- 变更主对象字段,然后触发计算和UI事件
{
event: "form.render.end",
functional: async function (pluginExecResult, options) {//async标记的函数内部可以使用await
console.log("custom plugin: form.render.end exec");
let {dataUpdater,bizApi}=options;
dataUpdater.updateMaster({name:'test', 'abc__c':'222'});
//await等待异步函数执行结束
await bizApi.triggerCalAndUIEvent({
objApiName: 'SalesOrderObj',//当前发起计算的对象,必须
changeFields: ['name', 'abc__c'],//表示此次计算是因为修改了name 和 abc__c引起的,必须传,需要根据它去寻找那些字段需要计算
triggerUiField: 'name', //触发 UI 事件的字段,不传不触发ui事件
})
}
},- 变更从对象字段,然后触发计算和UI事件
{
event: "form.render.end",
functional: async function (pluginExecResult, options) {//async标记的函数内部可以使用await
console.log("custom plugin: form.render.end exec");
let {dataUpdater,bizApi}=options;
dataUpdater.updateDetail('SaleOrderProductObj','1',{name:'test', 'abc__c':'222'});
//await等待异步函数执行结束
await bizApi.triggerCalAndUIEvent({
objApiName: 'SaleOrderProductObj',//当前发起计算的对象,必须
modifiedDataIndexs: ['1'], //修改的从对象数据的dataIndex, 如果你当前的计算是因为修改了从对象数
changeFields: ['name', 'abc__c'],//表示此次计算是因为修改了name 和 abc__c引起的,必须传,需要根据它去寻找那些字段需要计算
triggerUiField: 'name', //触发 UI 事件的字段,不传不触发ui事件
})
}
},- 新增从数据,然后触发计算和UI事件
{
event: "form.render.end",
functional: async function (pluginExecResult, options) {//async标记的函数内部可以使用await
console.log("custom plugin: form.render.end exec");
let {dataUpdater,bizApi}=options;
let newDataIndexs = dataUpdater.add({"record_type": "test", object_describe_api_name: "SaleOrderProductObj"}).map(it=>it.dataIndex);
//await等待异步函数执行结束
await bizApi.triggerCalAndUIEvent({
objApiName: 'SaleOrderProductObj',//当前发起计算的对象,必须
newDataIndexs, //新加的从数据dataIndex,如果你发起计算是因为添加了从对象数据,需要传
})
}
},- 删除从数据,然后触发计算和UI事件
{
event: "form.render.end",
functional: async function (pluginExecResult, options) {//async标记的函数内部可以使用await
console.log("custom plugin: form.render.end exec");
let {dataUpdater,bizApi}=options;
let delDatas = dataUpdater.del("SaleOrderProductObj", ["1"]);
//await等待异步函数执行结束
await bizApi.triggerCalAndUIEvent({
objApiName: 'SaleOrderProductObj',//当前发起计算的对象,必须
delDatas, //删除的从对象数据,如果你当前发起计算时因为删除了从对象数据。
})
}
},注意
- triggerCalAndUIEvent 是异步函数,调用时需要等待异步函数执行结束,否则执行结果无效。
- triggerCalAndUIEvent 没有指定 noMerge 为 true 时不可以跳出事件生命周期调用,否则结果不可预期。
