纷享销客自定义函数命名空间及实例

纷享销客自定义函数命名空间及实例

1、按钮

在线文档地址:https://www.fxiaoke.com/mob/guide/crmdoc/src/8-1-2%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8C%89%E9%92%AE.html

返回参数有三种返回值,如下:

1、map:用以阻断或继续按钮的执行;

2、String:返回的需要是一个可以访问的网址,点击按钮之后将会跳转至指定的网址;

3、UIAction:跳转至系统自己的某些组件页面

按钮分为两种类型,如下:

UI按钮:1、涉及到页面跳转的时候,使用此按钮,返回参数是String的url网址、或者是UIAction跳转至编辑页面、打印模板等指定组件;

2、批量数据操作时,用此按钮可以获取到数据集合是context.dataList

业务按钮:1、进行前验证、执行动作的补充、执行完成后的提醒等;

2、批量操作时,用此按钮分别获取到每一条数据用context.data

1.1、Map

应用场景:此返参类型在按钮的前验证中触发,用于进行数据的验证、可通过对context.data的字段进行赋值,修改最终的数据。

返参说明:error : 是否出错 errorMessage : 出错后提示的错误信息 block : 提示异常信息后,是否阻塞保存

如下,判断保养时间是否超时并阻断提交

Datedate = 下次保养时间;

log.info("下次保养时间为:"+date);

Date now = Date.now();

boolean flag = now.daysBetween(date) > 60;

if(flag){

log.info("下次保养时间超过了60天");

return [ "error":true, "errorMessage":"下次保养时间距离当前超过了60天", "block":true ]

}else{

log.info("下次保养时间符合要求");

//输入正确,继续执行

return ["block": false];

}

1.1.1、获取新的页面填充之后的值进行校验

只能在前验证的位置获取到输入的参数,进行参数校验

2、获取新的表单页面的参数,需要在函数中设置自定义参数,然后在保存函数之后会提示匹配变量,获取表单数据直接通过变量名即可,如下

log.info("填写的退费金额变量:" + refund_param);

1.2、String

应用场景:在【执行动作】当中,进行指定页面路径的跳转。

返参为""或没有返参时,仅执行函数,不会进行页面跳转;有字符串返参时,可以用来进行网页路径的跳转,点击之后会在新的标签页打开指定的路径。

return"https://www.baidu.com/";

1.3、UIAction

应用场景:跳转至纷享销客内的一些组件页面

如下,跳转至详情页

UIAction openDialogAction = OpenDialogAction.build{

userData = [:] //传递给自定义组件的数据键值对listtitle = "title"//标题width = 123//宽高

maxHeight = 123//最大高度

component { //组件的apiName

apiName = "comp_yuio8__c"

}

}

return openDialogAction

组件文档

https://www.fxiaoke.com/mob/guide/uipaas/dist/#/custom-component/start/what

跳转至相关的组件

Mapdata = context.data;

data.put("field_jB28q__c", Date.now());

WebAction action = WebAction.builder()

.type('form')

.data(data)

.build()

return action

2、范围选择

当希望通过书写一个字段的值确定关联对象的范围时,在关联字段上定义

注意:关联字段取关联对象的字段时,直接输入字段名即可

String area = context.data.field_n29H8__c;

log.info("所在区域:"+ area);

// def(boolean errorInfo, Map result, String errorMessageInfo) = Fx.object.getOptionInfo("AccountObj","field_Szm71__c")

// log.info("客户的所在区域属性:"+result);

QueryTemplate template1 = QueryTemplate.AND(

["field_i582a__c":Operator.EQ(area)]

)

log.info(template1)

return template1;

3、UI事件

当一个输入框失去焦点之后,想要触发某些操作

https://www.fxiaoke.com/mob/guide/crmdoc/src/8-1-6UI%E4%BA%8B%E4%BB%B6.html

如下,在选择了一个日期后,想要自动确定另一个字段的日期

Date productDate = context.data.field_jB28q__c asDate;

log.info(productDate);

int month = (productDate.month + 2) asint;

log.info(month)

Date nextTime = productDate.withMonth(month);

log.info(nextTime);

//新建UIEvent事件

UIEvent event = UIEvent.build(context) {

// Date product = context.data.field_jB28q__c asDate;

// log.info(product);

editMaster("field_3Ey0i__c": nextTime)

}

return event

注意事项:

在UIEvent.build(context) {}里面不可以获取到context里面的值

3.1、 弹窗

3.1.1、代码

//红字提醒

Remind remind = Remind.Text("Text");

//弹窗提醒

Remind remind = Remind.Alert("Text");

3.1.2、 样式

4、流程触发

4.1、审批流

定义审批的流程

4.2、业务流

需要手动在对象数据页面发起,里面可以定义审批

4.3、工作流

可以定时自动触发、数据字段更新时触发、数据作废、新建时触发。

5、计划任务

类似于工作流,可以定时执行,不过不再监听对象属性的变化。要么手动执行,要么到达时间选择符合要求的数据进行执行。

一般用来批量刷数据,时间最好在晚上执行,只能获取到id集合。

不要在这里赋值累増的变量。

数据是分批次执行的,每20条为一批,这一批中如果过某条执行出现异常了,则这一批的剩余数据将不再执行。

在调试页面选择具体的数据运行脚本,则context.objectIds中的id只有所选择的那条数据

5.1、基础例子

//计划任务中可以先得到数据的id集合,然后根据id集合查询得到具体的数据List ids = context.objectIds as List

def(boolean errorFind,List dataFind,String errorMessageFind) = Fx.object.findByIds("PaymentPlanObj",ids);

if( errorMessageFind ){

log.info("查询数据失败:" + errorMessageFind);

}elseif( dataFind ){

dataFind.each{

dataItem ->

//得到每一个对象详情Map dataDetail = dataItem as Map

}

}else{

log.info("未查询到数据");

}

6、促销

暂不做详细讲解

7、自增编号

本身有自增编号字段,当不满足时,可以使用自定义函数定义。

如下,根据对象的产品类型,确定其前缀。

Stringtype = context.data.field_fEz5m__c;

log.info(type);

def (Boolean error,Stringdata,String errorMessage) = Fx.object.getOptionName("object_5CF02__c","field_fEz5m__c",type);

String prefix = "";

if( data =="工业设备" ){

prefix = "i-";

}else{

prefix = "a-";

}

String now = Date.now() as String;

now = now.replaceAll("-", "");

log.info(now);

prefix = prefix + now + "-"// prefix = prefix + now.year + now.month + now.day + "-"// log.info(prefix);

IncrementNumber rule = IncrementNumber.builder()

.counter('object_5CF02__c_name') // 计数器的key,递增的自增编码需要保证key唯一,同理,更换counter可以重计自增编号

.condition('DAY') // 按年、月、日重计 `YEAR` `MONTH` `DAY` `NONE`

.postfix('') // 编码后缀

.prefix(prefix) // 编码前缀

.serialNumber(4) // 自增编码位数

.initialValue(1) // 编号起始值不能小于 0,且默认为 1

.steppingNumber(1) // 步进器默认为1,且不能小于1

.buildRule()

return rule

8、自定义控制器

初学时,一般用不到这里

9、导入

9.1、预处理

导入前执行一次,此时失败整个导入都将不能进行,必须在最后返回ValidateResult,代码逻辑内返回的不起作用

获取整个参数列表

log.info("执行设备导入的预处理代码");

List dataList = context.dataList as Listlog.info("导入的数据如下:"+dataList);

boolean flag = false;

if( dataList.size() > 0 ){

flag = true;

}

return ValidateResult.builder()

.success(flag)

.errorMessage("我是导入前预处理函数!!!!")

.build()

返回false时,导入将被取消,效果如下

9.2、前验证

每行数据都会触发,失败则当前行数据不能导入。

导入后context.data中单选框的值为id;

关联对象在表格中为主属性,函数取值时为数据id;

可以直接通过data.put()方式修改这个对象的值

log.info("查询【确认收入】检查是否可以创建【回款】");

Map data = context.data as Map;

String accountId = data["field_VulpB__c"] as String;

Date returnDate = data["field_sRf93__c"] asDate;

BigDecimal returnAmount = data["field_xWtSl__c"] as BigDecimal;

QueryTemplate template = QueryTemplate.AND(

["field_c8L4x__c": Operator.EQ(accountId)],

["field_wV3jw__c":Operator.EQ(returnDate)],

["field_rtXi1__c":Operator.EQ(returnAmount)]

);

APIResult ret = Fx.object.findOne("object_8We11__c", //

FQLAttribute.builder()

.columns(["_id", "name"]) //

.queryTemplate(template)

.build(),

SelectAttribute.builder()

.needInvalid(false)

.build());

if(ret.isError()){

log.info(ret.message());

}

boolean flag = ret.data;

return ValidateResult.builder()

// 返回 false 将终止本次导入

.success(flag)

.errorMessage("没有匹配的确认收入,不能新建")

.build()

10、自定义组件

用以进行一些定制化页面的开发

https://lexiangla.com/teams/k100014/docs/d829a73a510e11ed9515869c76e28517?company_from=050524eee61811e783175254005b9a60

相关手记

365bet线上网址 天天飞车

天天飞车

12-07 👁️ 4314
365bet投注网 巴西世界杯规则(世界杯8进4强规则)
365bet线上网址 汽车马达一般多久更换

汽车马达一般多久更换

01-04 👁️ 3435
365bet投注网 吃鸡最好去什么服务器?
365bet线上网址 反鸡汤歌曲,反鸡汤神曲,有点丧的反鸡汤歌曲
365bet线上网址 淋的字典解释

淋的字典解释

08-11 👁️ 7339