函数示例

支持通过自定义函数完成事件的执行动作。

1 pageParams

获取自定义函数所绑定的对象及当前页面的信息, context.pageParams
属性名说明
objectKey触发当前事件的对象key,主从时为主对象
dataId当前数据id,无则为null
triggerFieldKey触发字段key,从对象事件的【新增】【删除】为null
triggerSlaveObjectKey如果是从对象事件,触发字段所属从对象key
triggerRowIndex如果是从对象编辑事件,为触发字段所在行索引;如果为从对象事件的【新增】【删除】为数据所在行索引;索引从0开始
form表单数据,结构参见Form

1.1 Form

属性名说明案例
fieldMap主对象的数据结构如下
{ fieldMap: { owner: '6009131820263261358', department: '10', name: '目光', field_J7VJS__c: '7a5da9f4be2e4eaf97c92748e58f9322', field_bkJc0__c: 'cb51a4060a204ed78843d993b35473be', field_ns0I3__c: null, field_V7NFP__c: null, field_zf1vA__c: 0, id: null } }
slaveMap从对象的数据结构如下
{ slaveMap: { object_ECdTe__c: [ { fieldMap: { name: "光1001", field_sx1ir__c: "df0fb6456b8041f6ae4ff59b709b5c4a", id: null, field_lktqa__c: null, owner: "6009131820263261358" }, rowIndex: 0, object_key: "object_ECdTe__c" }, { fieldMap: { name: "光6228", field_sx1ir__c: "df0fb6456b8041f6ae4ff59b709b5c4a", id: null, field_lktqa__c: null, owner: "6009131820263261358" }, rowIndex: 1, object_key: "object_ECdTe__c" } ] } }

1.2 PageEvent

方法名参数类型参数举例参数说明备注
initialValues(Map)参数举例如下结构同Form;fieldMap: 字段数据Map,主从对象一条数据的结构一致;slaveMap: 从对象数据集;object_key: 字段数据Map所属对象;rowIndex: 代表从对象数据集中当前所处位置索引,从0开始。字段变更事件时,设置初始值不生效
Map initialData = [ "fieldMap": [ "field_master__c": "初始值" ], "object_key": 'object_master_key', "slaveMap": [ "object_slave__c": [ [ "rowIndex": 0, "fieldMap": [ "field_slave__c": "单行文本" ], "object_key": "object_slave__c" ] ] ] ]
optionHidden(Map)参数举例如下rowIndex: 代表从对象数据集中当前所处位置索引,从0开始
Map optionResult = [ object_master_key: [ field_master__c: ["option3", "option4"] ], object_slave_key: [ [ rowIndex: 2, field_slave__c: ["option1", "option3"] ] ] ]
visible(Map)参数举例如下show与hidden存在同一字段时,hidden优先级更高,show将失效
Map visibleResult = [ object_master_key: [ hidden: ["field_master_key1", "field_master_key2"], show: ["field_master_key1", "field_master_key11"] ], object_slave_key: [ [ rowIndex: 1, hidden: ["field_slave_key1", "field_slave_key2"], show: ["field_slave_key3"] ] ] ]
values(Map)参数举例如下结构同Form页面初始化事件中,设置表单值不生效,请使用initialValues
Map valueResult = [ fieldMap: [ field_field1__c: 'option1', field_field2__c: '6378030218049702609' ], object_key: 'object_master_key', slaveMap: [ object_slave_key: [ [ rowIndex: 3, fieldMap: [ [ field_slaveField1__c: 'option1', field_slaveField2__c: '6378030218049702609' ] ], object_key: "object_slave_key", ] ] ] ]

2 字段变更事件模版

参考事例:
def params = context.pageParams; def masterData = params.form.fieldMap; // 主对象数据 def slaveData = params.form.slaveMap.object_slave__c; // 从对象数据 def size = slaveData.size(); // object_slave__c对象数据个数 def objectKey = params.objectKey; // 当前的对象,存在主从时为主对象 def triggerSlaveObjectKey = params.slaveObjectKey; // 从对象事件中如果是从对象事件,触发字段所属从对象;如果为主对象的字段触发,则无该属性 def triggerFieldKey = params.triggerFieldKey; // 触发字段,如果为从对象事件的【新增】【删除】,则无该属性 def triggerRowIndex = params.triggerRowIndex; // 如果是从对象编辑事件,为触发字段所在行索引;如果为从对象事件的【新增】【删除】为数据所在行索引;索引从0开始 PageEvent event; Map optionResult; Map visibleResult; Map valueResult; /* 处理逻辑 */ // 过滤单多选选项 optionResult = [ object_master_key: [ field_master__c: ["option3", "option4"] ], object_slave_key: [ [ rowIndex: triggerRowIndex, field_slave__c: ["option1", "option3"] ] ] ] // 控制字段显隐 // show与hidden存在同一字段时,hidden优先级更高,show将失效 visibleResult = [ object_master_key: [ hidden: ["field_master_key1", "field_master_key2"], show: ["field_master_key1", "field_master_key11"] ], object_slave_key: [ [ rowIndex: 1, hidden: ["field_slave_key1", "field_slave_key2"], show: ["field_slave_key3"] ] ] ] // 变更其他字段数据 valueResult = [ fieldMap: [ field_field1__c: 'option1', field_field2__c: '6378030218049702609' ], object_key: 'object_master_key', slaveMap: [ object_slave_key: [ [ rowIndex: 3, fieldMap: [ [ field_slaveField1__c: 'option1', field_slaveField2__c: '6378030218049702609' ] ], object_key: "object_slave_key", ] ] ] ] event.builder() // .initialValues(initialData) // 字段变更事件,设置初始值不生效 .optionHidden(optionResult) .visible(visibleResult) .values(valueResult) .build(); return event;
注:
在字段变更中,对于从对象的value,若rowIndex匹配不上则认为是新增数据(超出从对象个数限制则忽略超出部分);若仅有rowIndex认为是删除数据。

3 自定义计算模版

def params = context.pageParams; def slaveData = params.form.slaveMap.object_slave__c; // 从对象数据 def triggerFieldKey = params.triggerFieldKey; // 触发字段 def triggerRowIndex = params.triggerRowIndex; def record = slaveData.get(triggerRowIndex) def price = record.field_price__c; def discount = record.field_discount__c; def expextedPrice = record.field_expextedPrice__c; /* 输入折扣,自动算出预期单价;输入预期单价,自动算出折扣 */ PageEvent event; Map fieldMap = []; // 单价 * 折扣 = 预期单价 if (triggerFieldKey == 'field_price__c') { // 公式计算 expextedPrice = price * discount; fieldMap = [ field_expextedPrice__c: expextedPrice ] } else if (triggerFieldKey == 'field_expextedPrice__c') { // 公式计算 discount = expextedPrice / price; fieldMap = [ field_discount__c: discount ] } Map valueResult = [ slaveMap: [ object_slave_key: [ [ rowIndex: triggerRowIndex, fieldMap: fieldMap, object_key: "object_slave_key", ] ] ] ]; event = PageEvent.builder() .values(valueResult) .build(); return event

4 编辑页初始化

def params = context.pageParams; def slaveData = context.data.slave.object_slave__c; // 从对象数据 def size = slaveData.size(); // object_slave__c对象数据个数 PageEvent event; Map initialData = [ "fieldMap": [ "field_master__c": "6378030218049702609" ], "object_key": 'object_master_key', "slaveMap": [ "object_slave__c": [ [ "rowIndex": size - 1, // 仅设置该从对象最后一条数据的初始值 "fieldMap": [ "field_slave__c": "单行文本" ], "object_key": "object_slave__c" ] ] ] ] event = PageEvent.builder() .initialValues(initialData) .build(); return event;
2025-06-12
0