# 内置函数
表达式支持的内置函数包括如下(有待扩展)
# 数字处理类
- 数学函数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
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
2
3
4
5
6
7