实体界面处理逻辑节点(RAWSFCODE)
在界面逻辑中,可通过注入脚本代码节点处理复杂业务逻辑,如给参数添加复杂业务值,给部件设置状态等。脚本代码为异步脚本,可使用awiat或请求业务数据。
参数
名称 | 类型 | 描述 |
---|---|---|
view | IApiViewController | 当前视图 |
context | IApiContext | 当前视图上下文 |
params | IApiParams | 当前视图参数 |
uiLogic | Record<string, any> | 当前逻辑运行时,key 为当前界面逻辑参数的参数代码名小写 |
document | Document | 当前文档对象 |
env | IApiData | 当前环境对象 |
appSession | IApiData | 当前应用会话对象 |
topViewSession | IApiData | 当前顶级视图会话对象 |
viewSession | IApiData | 当前视图会话对象 |
viewParam | IApiParams | |
topView | IApiViewController | 当前顶级视图 |
parentView | IApiViewController | undefined | 当前父视图 |
parent | IApiViewController | undefined | 当前父视图 |
util | { message: IApiMessageUtil, notification: IApiNotificationUtil,modal: IApiModalUtil,confirm: IApiConfirmUtil,openView: IApiOpenViewUtil} | 工具集 |
调用示例
获取当前应用对象
typescript
const app = ibiz.hub.getApp(context.srfappid);
获取当前视图对象
typescript
const currentInstance = view.getCurrentInstance("DEEDITVIEW");
获取当前视图的表单控制器
typescript
const form = view.getCtrl("FORM", "form");
根据上下文控制 grid 面板项显示状态并保持保活
typescript
// 等同于 view.layoutPanel.panelItems.grid
const grid = view.layoutPanel.findPanelItemByName('grid');
grid.state.visible = !!view.context.srfshowchoose;
grid.state.keepAlive = true;
根据逻辑中参数 testobj 的 field 字段,当 field 小于 1 时,提示用户数据不正确需弹窗提示,用户确认后刷新当前视图;当 field 等于 1 时,应用内部跳转到指定路径为/xxx/yyy/zzz
的视图; 当 field 大于 1 时,关闭当前视图
typescript
const { field } = uiLogic.testobj;
switch (true) {
case field < 1:
if (
await util.confirm.warning({
title: "数据异常",
desc: "需要重新获取数据?",
})
) {
await view.call("Refresh");
}
break;
case field === 1:
await util.openView.push("/xxx/yyy/zzz");
break;
case field > 1:
await view.closeView({ ok: true, data: [] });
break;
}
给当前视图面板项标识为 total 设置值 20
typescript
uiLogic.view.layoutPanel.setDataValue("total", 20);
跨页面通知产品实体数据变更
typescript
// 其中product 表示产品实体代码名小写,必须有srfdecodename字段,
ibiz.mc.command.update.send({ srfdecodename: 'product',productid:'xxx',productname:'yyy' })
根据当前环境数据路由跳转到其他视图
typescript
ibiz.openView.push(`/-/index/project=${context.project}/projectRedirectView/-/project_setting_view/srfnavctx=%7B"project"%3A"${context.project}"%2C"srfdefaulttoroutedepth"%3A"3"%7D;srfnav=root%3Anormal%3Amember/project_member_config_grid_view/-`);