自定义按钮操作
用于执行自定义按钮触发逻辑
例:用户点击客户下的延期按钮,弹出界面,输入申请延期时间,触发审批,通过后,可以延迟相应的公海回收时间。
按钮函数的三种返回类型应用场景:
Map
返回值类型是 Map ,通常是和页面交互使用的 通常返回的信息需要包含 error : 是否出错 errorMessage : 出错后提示的错误信息 block : 提示异常信息后,是否阻塞保存
[ "error":true, "errorMessage":"如果失败了,提示的错误信息", "block":true ]
String
返回一个String类型,内容必须是一个有效的URL,点击按钮后页面跳转到该返回值对应的URL。
UIAction
按钮跳转到标准页面或者自定义组件的场景,需要配置返回类型为UIAction的按钮函数。
UIAction 跳转到详情页自定义组件:
Groovy:
UIAction openDialogAction = OpenDialogAction.build{
userData = [:] //传递给自定义组件的数据键值对list
title = "title" //标题
width = 123 //宽高
maxHeight = 123 //最大高度
component { //组件的apiName
apiName = "comp_yuio8__c"
}
}
return openDialogAction
函数的context.data、context.details会作为默认参数objectData、details传递给自定义组件。
UIAction 跳转到列表页自定义组件:
Groovy:
UIAction openDialogAction = OpenDialogAction.build{
userData = [:] //传递给自定义组件的数据键值对list
title = "title" //标题
width = 123 //宽高
maxHeight = 123 //最大高度
component { //组件的apiName
apiName = "comp_yuio8__c"
}
}
return openDialogAction
Java:
import java.util.List;
import java.util.Map;
public class ButtonJava implements IButtonUIAction {
/**
* UIAction 跳转到列表页自定义组件
*/
@Override
public UIAction execute(FunctionContext context, Map<String, Object> args) {
OpenDialogAction.Builder builder = OpenDialogAction.Builder.create();
OpenDialogAction.Component component = OpenDialogAction.Component.create();
component.setApiName("comp_yuio8__c");
Map paraMap = Maps.newHashMap();
paraMap.put("a", 1);
paraMap.put("b", 2);
builder.data = paraMap;//传递给自定义组件的数据键值对list
builder.setTitle("title");//标题
builder.setWidth("123");//宽高
builder.setMaxHeight("123");//最大高度
builder.component = component;//组件的apiName
builder.toOpenDialogAction();
return builder.toOpenDialogAction();
}
}
函数的conext.dataList会作为默认参数objectIds传递给自定义组件。
UIAction 跳转到标准组件:
Groovy:
//1 跳转打印模板
/**
* data 打印时需要传递的参数
*/
Map data = [
"validatePreAction":false, //前验证必须是false
"templateId":"5e994bbfa5083d97d6ae7afa", //指定打印模板
"dataId":"5d428ed922381800018d946c", //数据的id
"orientation":"Landscape", //横向还是纵向
"skipCheckButtonConditions":false //是否跳过对象的按钮显示条件判断
]
WebAction action = WebAction.builder()
.type('print')
.data(data)
.build()
return action
//2 跳转新建页面
Map data = [
'apiname':'AccountObj',
'record_type': 'default__c'
]
WebAction action = WebAction.builder()
.type('form')
.data(data)
.build()
return action
//3 跳转新建页面并为新建页面字段设置默认值
Map recordData = [
'field_62AcX__c': "6066ec21fe5dbf0024f67e02", //为查找关联字段赋值
'field_62AcX__c__r': "我的商品1", //必须用此方法添加查找关联对象数据的主属性
'name':'回填'
]
Map data = [
'apiname':'object_qe3x1__c',
'record_type': 'default__c',
'data': recordData,
'details':[:]
]
WebAction action = WebAction.builder()
.type('form')
.data(data)
.build()
return action
//4 跳转到URL
UIAction uiAction = WebAction.builder()
.type('url')
.url('www.fxieoke.com')
.build()
return uiAction
Java:
import java.util.List;
import java.util.Map;
public class UIActionPrint implements IButtonUIAction {
/**
* 跳转打印模板
*/
@Override
public UIAction execute(FunctionContext context, Map<String, Object> args) {
Map data = Maps.newHashMap(); //data为打印时需要传递的参数
data.put("validatePreAction", false); //前验证必须是false
data.put("templateId", "5e994bbfa5083d97d6ae7afa"); //指定打印模板
data.put("dataId", "5d428ed922381800018d946c"); //数据的id
data.put("orientation", "Landscape"); //横向还是纵向打印
data.put("skipCheckButtonConditions", false); //是否跳过对象的按钮显示条件判断
UIAction action = WebAction.builder()
.type("print")
.data(data)
.build();
return action;
}
}
import java.util.List;
import java.util.Map;
public class UIActionJump implements IButtonUIAction {
/**
* 跳转到对象新建页面
*/
@Override
public UIAction execute(FunctionContext context, Map<String, Object> args) {
Map data = Maps.newHashMap(); //data对象跳转参数
data.put("apiname", "AccountObj"); //对象API名称
data.put("record_type", "default__c"); //对象业务类型
UIAction action = WebAction.builder()
.type("form")
.data(data)
.build();
return action;
}
}
import java.util.List;
import java.util.Map;
public class UIActionJumpDefault implements IButtonUIAction {
/**
* 跳转新建页面并为新建页面字段设置默认值
*/
@Override
public UIAction execute(FunctionContext context, Map<String, Object> args) {
Map recordData = Maps.newHashMap();
recordData.put("field_62AcX__c", "6066ec21fe5dbf0024f67e02"); //为查找关联字段赋值
recordData.put("field_62AcX__c__r", "我的商品1"); //必须用此方法添加查找关联对象数据的主属性
Map detais = Maps.newHashMap();
Map data = Maps.newHashMap(); //data对象跳转参数
data.put("apiname", "object_qe3x1__c"); //对象API名称
data.put("record_type", "default__c"); //对象业务类型
data.put("data", recordData); //对象业务类型
data.put("detais", detais); //对象业务类型
UIAction action = WebAction.builder()
.type("form")
.data(data)
.build();
return action;
}
}
import java.util.List;
import java.util.Map;
public class UIActionJumpURL implements IButtonUIAction {
/**
* 跳转到URL
*/
@Override
public UIAction execute(FunctionContext context, Map<String, Object> args) {
UIAction action = WebAction.builder()
.type("url")
.url("www.fxieoke.com")
.build();
return action;
}
}
UIAction 移动端返回弹窗信息:
Groovy:
AlertAction action = AlertAction.builder()
.type('default')
.text('提示的信息')
.build()
return action
//提示信息不能为空,type 是为了预留后面多种弹框提示的样式的属性, 可以为空,为空或默认塞入 default
Java:
import java.util.List;
import java.util.Map;
public class UIActionMessage implements IButtonUIAction {
/**
* 移动端返回弹窗信息
*/
@Override
public UIAction execute(FunctionContext context, Map<String, Object> args) {
//提示信息不能为空,type 是为了预留后面多种弹框提示的样式的属性, 可以为空,为空或默认塞入 default
AlertAction action = AlertAction.builder()
.type("default")
.text("提示的信息")
.build();
return action;
}
}
UIAction 移动端跳转页面:
Groovy:
AppAction app = AppAction.builder()
.url('https://www.baidu.com')
.build()
return app
Java:
import java.util.List;
import java.util.Map;
public class UIActionPhoneJump implements IButtonUIAction {
/**
* 移动端跳转页面
*/
@Override
public UIAction execute(FunctionContext context, Map<String, Object> args) {
AppAction action = AppAction.builder()
.url("https://www.baidu.com") //跳转的 url 地址
.build();
return action;
}
}