[H5]自定义实体,表单子实体批量示例
Author: 彭茜、傅腾
子实体批量依据选择器
主子明细的子实体中,需要配置"子对象支持批量新建",才能在表单中出现子实体批量依据选择器。
该扩展点可以把批量依据选择器替换成自定义逻辑。
const picker = new xsyrpa.FormSubEntityTableExtensionPoint("xsy.breeze.app.customEntity11__c.defaultBusiType.masterEntityCreation.defaultPageLayout.ChildEntityPicker");
picker.on('pickerClick', (data, resolve, reject) => {
//一定要resolve或reject
//resolve()后,用本方法代替出厂的实体批量依据选择器
//reject()后,弹出实体批量依据选择器
resolve([
{id: 1390357211070082} //将数据传到子实体列表页,必须是关联关系实体中存在的id
])
})

子实体列表扩展点

子实体列表 - 删除一条数据
const childEntityList = new xsyrpa.FormSubEntityTableExtensionPoint("xsy.breeze.app.customEntity11__c.defaultBusiType.customEntity12__c.childEntityListCreation.defaultPageLayout.SimpleFormList");
childEntityList.deleteDetail({rowIndex: 0});
子实体列表 - 监听删除事件
const childEntityList = new xsyrpa.FormSubEntityTableExtensionPoint("xsy.breeze.app.customEntity11__c.defaultBusiType.customEntity12__c.childEntityListCreation.defaultPageLayout.SimpleFormList");
childEntityList.on('deleteRowData', (data) => {
console.log(data)
})
子实体列表 - 隐藏按钮
const childEntityList = new xsyrpa.FormSubEntityTableExtensionPoint("xsy.breeze.app.customEntity11__c.defaultBusiType.customEntity12__c.childEntityListCreation.defaultPageLayout.SimpleFormList");
childEntityList.setOperateButtonVisible({
buttonType: "delete", //目前支持删除(delete)和编辑(edit)
visible: false,
rowIndex: 0, //不传rowIndex隐藏全部
})
子实体列表 - 设置字段属性
//子实体列表页(生命周期)
const listPage = new xsyrpa.FormExtensionPoint("xsy.breeze.app.customEntity11__c.defaultBusiType.customEntity12__c.childEntityListCreation.defaultPageLayout#*#");
//子实体列表
const entityList = new xsyrpa.FormSubEntityTableExtensionPoint("xsy.breeze.app.customEntity11__c.defaultBusiType.customEntity12__c.childEntityListCreation.defaultPageLayout.SimpleFormList");
listPage.on("loaded", () => {
//列表与表单不同,是一个循环处理的过程
//列表中同一套业务逻辑、同一套UI组件,根据每一条不同的数据,显示出不同的界面
//我们通过表达式的方式,来动态改变列表上一条记录的UI界面
//当满足表达式时,将"customItem1__c"字段设置成只读
entityList.setCellReadonlyRule([{itemApiKey: 'customItem1__c', rule: '$data.name === "readonly"'}]);
//当满足表达式时,隐藏"customItem1__c"字段
entityList.setCellInvisibleRule([{itemApiKey: 'customItem1__c', rule: '$data.name === "invisible"'}]);
//把第"1"行的"customItem1__c"字段的值设置成"123"
entityList.setCellValue({
itemApiKey: "customItem1__c",
value: "123",
rowIndex: 1,
});
//监听值的变化
entityList.on("rowDataChanged", (data)=>{
console.log(data)
});;
})
子实体列表 - 获取所有数据(包括明细)
//注意是list上dataModel扩展点,非list扩展点
const listDataModel = new xsyrpa.BreezeDataModelExtensionPoint("xsy.breeze.app.customEntity366__c.defaultBusiType.customEntity367__c.childEntityListCreation.defaultPageLayout_DataModel");
//子实体的apiKey
const childApiKey = 'customEntity367__c';
//子实体列表数据所在的路径
const itemsPath = `subnode.${childApiKey}.defaultBusiType.records.items`
const getItems = (dataModel) => {
const pathArr = itemsPath.split('.');
return pathArr.reduce((dm, path) => {
return dm[path];
}, dataModel);
}
//获取所有dataModel的数据
listDataModel.getValue().then((data) => {
//找到需要的子实体列表数据
console.log(getItems(data))
})
子实体列表 - 添加明细后的事件
const list = new xsyrpa.FormSubEntityTableExtensionPoint("xsy.breeze.app.customEntity366__c.defaultBusiType.customEntity367__c.childEntityListCreation.defaultPageLayout.SimpleFormList");
list.on('afterAddDetail', (data) => {
//单个添加和批量添加,会进此处回调,删除不会,请使用deleteRowData
debugger
})
