# 内置函数

表达式支持的内置函数包括如下(有待扩展)

# 数字处理类

  • 数学函数isNaN parseInt parseFloat abs acos asin atan atan2 ceil cos exp floor log max min pow random round sin sqrt tan 其中isNaN是对Number.isNaN的封装,parseInt和parseFloat和js中原生的两个解析int float类型的函数作用相同,其余函数和Math类里的同名方法作用相同,详细请参考javascript文档。
  • toFixed(number,fix) 对number的第fix位进行四舍五入
  • chineseAmount(value) 小写金额转化为中文大写金额

# 文本处理类

  • concat(value[, gapString, property]) 拼接value,以gapString为间隔,如果value不是string而是一个对象,那么可以用property指定拼接对象的某个属性,拼接的如果是一个数字就转换成string,如果是布尔则true转换成字串‘1’,false转换成字串‘0’
  • reduce(value[,repeat,gapString]) 拼接value,repeat为重复次数,gapString为间隔,目的是将重复节表中的字段拼接一个隐藏字段供公式使用,对于数据的转换规则和concat一致
  • length(value) 计算value的长度(字符串长度或者数组长度)
  • startWith(value, prefix) 判断一个字符串是否以prefix开头
  • endWith(value, prefix) 判断一个字符串是否以suffix结尾
  • left(value, length) 获取字符串左边length长度个字符
  • right(value, length) 获取字符串右边length长度个字符

# 日期处理类

  • dateSpan(dateFrom, dateTo) 计算dateFrom和dateTo之间的天数
  • getBirthday(id) 根据身份证号取生日
  • formatDate(date,format) 格式化显示参数date指定的日期,format支持yyyy(年),MM(月),dd(日),例如formatDate($fieldDate,'yyyy年MM月dd日')
  • formatTime(time,format) 格式化显示参数time指定的时间,format支持hh(小时),mm(分),ss(秒) ,例如formatTime($fieldTime,'hh:mm')

# 统计类

  • sum(value[,condition]) 对value数组进行求和,condition是和value长度一致的一个数组,可以不填,如果填了就统计condition为true的value之和
  • avg(value[,condition]) 对value数组进行求平均,condition处理如同sum
  • count(value[,condition]) 对value数组求数量,condition处理如同sum
  • some(condition) 对condition数组进行判断,是否condition数组中存在元素为true;注意此函数并不适合在动态脚本中使用,动态脚本中请直接调用Array.prototype.some方法
  • every(condition) 对condition数组进行判断,是否condition数组中每个元素都为true;注意此函数并不适合在动态脚本中使用,动态脚本中请直接调用Array.prototype.every方法

# uri处理类

  • encodeURI(uri) 对uri进行编码,封装encodeURI方法
  • encodeURIComponent 对uri进行编码,封装encodeURIComponent方法

# 工具类

  • isEmpty(field) 判空方法,判断字段是否没有填值
  • guid() 产生一串随机guid
  • code(value,displayValue) 由参数value,displayValue组装一个代码值,可用于给Code类型数据赋值,其中value是代码值,displayValue是代码显示值
  • user(account,name) 由参数account,name组装一个用户值,可用于给User类型数据赋值,其中account是用户账号,name是用户姓名
  • org(code,name) 由参数code,name组装一个部门值,可用于给Organize类型数据赋值,其中code是部门代码,name是部门名称
  • codes(codes[,names]) 由代码列表和名称列表产生代码表(Code的数组),用作select或者CheckList,OptionList的动态datasource,names不填的时候组装的代码code和name一致,按照codes来组装,如果codes或names是String类型,那么先按照回车分割后再组装
  • iif(expression,trueValue,falseValue) 当第一个参数传入true时函数返回值为第二个参数(trueValue),当第一个参数传入false时函数返回值为第三个参数(falseValue)

# 特殊处理类

  • params 可以将传递给这个函数的参数传递给动态动作,用于支持动态动作的多参数。params函数可以省略函数名,即只用一对小括号将参数括起来即可,例如params($fieldUser.organize,true)和($fieldUser.organize,true)是等价的。

# 用户交互类

# messageBox(content [, buttons] [, options])

对话框,用于显示提示信息,仅适合在动态脚本中使用

参数说明

名称 必填 说明
content 消息内容
buttons 按钮数组,数组中每个按钮数据结构为{text, click},text为按钮显示文字,click为按钮点击后的回调函数
如果text想多语言显示,那么请传递对象,例如text:{"zh":"确定","en":"OK"},该参数不传时默认一个确定按钮
options 其他选项,对象格式{title,width}

目前options参数支持title、width两个属性,说明如下

名称 说明
title 对话框标题
width 最大宽度,可不设置,缺省pc端最大宽度600,移动端最大90%
示例 提示对话框
// 假设此段脚本设置在选项列表字段$fieldOptionList上
if (!$INIT){
    var selectValue = this.value.displayValue;
    messageBox("真的要选择" + selectValue + "吗?", [
        {
            text: "确定",
            click: function() {
                $fieldLabel.control.val(selectValue);
            }
        }
    ], {width:500});
}
1
2
3
4
5
6
7
8
9
10
11
12

# confirmBox(content [, okClick] [, cancelClick] [, options])

确认对话框,仅适合在动态脚本中使用,可以认为confirmBox是messageBox的语法糖。

参数说明

名称 必填 说明
content 消息内容
okClick 点击确认或者是按钮的回调
cancelClick 点击取消或者否按钮的回调
options 其他选项,对象格式{type,title,width}

目前options参数支持type、title、width属性,说明如下

名称 说明
type 确认按钮类型,'1':按钮为确认和取消,缺省值; '2':按钮为是和否
title 对话框标题
width 最大宽度,可不设置,缺省pc端最大宽度600,移动端最大90%
示例 确认对话框
// 假设此段脚本设置在选项列表字段$fieldOptionList上
if (!$INIT){
    var selectValue = this.value.displayValue;
    confirmBox("真的要选择"+selectValue+"吗?", function() {
        $fieldLabel.control.val(selectValue);
    });
}
1
2
3
4
5
6
7