Skip to content

公式计算

计算公式功能使用户能够通过公式计算表单组件的值,提供更强大的动态计算和数据处理能力,具体包括以下操作:

1. 功能简介

在表单逻辑设计中,计算公式是一种强大的动态规则引擎,允许开发者或业务人员通过函数公式对表单数据进行实时处理,并基于计算结果设置条件规则(如字段显示/隐藏、必填/禁用、数值校验等)。其核心功能覆盖数字运算、文本处理、时间计算、集合操作及逻辑判断,可满足复杂业务场景下的动态交互需求。

2. 功能说明

计算公式的使用如同excel的函数公式使用,支持使用表单中已经添加的字段进行字段计算。

示例: 表单中有合同金额与已回款金额字段,需要根据这两个字段计算未回款金额。

第一步:先选择SUM函数公式进行计算,点击函数即可将函数公式插入右侧内容区域;

计算公式1.png

第二步:选择合同金额与已回款字段,并手动敲上-号,简单的计算公式就添加完成啦~

计算公式2.png

同理,发挥您聪明的大脑进行创造吧~

3. 如何查看函数的作用

鼠标悬浮至函数上时,可以查看函数说明,及示例说明。

计算公式3.png

4. 函数说明

函数名称函数说明函数示例
TONUMBER将参数转换为数字TONUMBER("1.5") = 1.5, TONUMBER("2.4e") = 2.4, TONUMBER("ABC") = 0
ADD获取两个数字相加的值ADD(1, 2) = 3
SUB获取两个数字相减的值SUB(10, 1) = 9
MUL获取两个数字相乘的值MUL(2, 2) = 4
DIV获取两个数字相除的值DIV(10, 2) = 5
SUM获取合集中数值的总和SUM(1,2,3) = 6, SUM([5, 6, 7]) = 18
MAX获取参数列表中的最大值MAX(1, 5, 10) = 10
MIN获取参数列表中的最小值MIN(1, 5, 10) = 1
ABS获取数字的绝对值SUM(1,2,3) = 6, SUM([5, 6, 7]) = 18
AVG获取参数列表的平均值获取参数列表的平均值
MOD获取两个数字的余数MOD(10, 3) = 1
SQRT获取一个数字的正平方根SQRT(9) = 3
POWER获取指定数字的乘幂POWER(2, 4) = 16
RAND将一个小数四舍五入到指定的位数RAND() = 0.75348173001531
PI获取圆周率PI() = 3.141592653589793
ROUND将一个小数四舍五入到指定的位数ROUND(3.149, 2) = 3.15, ROUND(3.149) = 3
FLOOR获取指定数字向下取整的值FLOOR(1.93) = 1
CEIL获取指定数字向上取整的值CEIL(1.93) = 2
FIXED将一个小数保留指定位数的小数FIXED(1.93, 1) = 1.9
TOCHINSESAMOUNT获取指定数字的中文大写金额TOCHINSESAMOUNT(32.14) = "叁拾贰元壹角肆分"
test扩展自定义计算函数示例test(val) == !!val
STARTSWITH检查字符串是否以指定字符串开头STARTSWITH("ABCDEF","ABC") = true, STARTSWITH("ABCDEF","AD") = false
SLICELEFT获取一个字符串从开头开始指定长度的字符串SLICELEFT("ABCDE", 3) = "ABC"
SLICERIGHT获取一个字符串从结尾开始指定长度的字符串SLICERIGHT("ABCDE", 3) = "CDE"
TOLOWER将字符串中所有大写字母转换为小写字母TOUPPER("ABCD") = "abcd"
TOUPPER将字符串中所有小写字母转换为大写字母TOUPPER("abcd") = "ABCD"
INCLUDES检查字符串中是否包含指定字符串INCLUDES("ABCD", "BC") = 1, INCLUDES("ABCD", "E") = -1
CONCAT将所有参数拼接,返回拼接后的字符串CONCAT("ABC", "DEF") = "ABCDEF"
REPLACE将字符串中的部分文本替换为不同的文本,只替换匹配到的第一个REPLACE("AbAc","A","1") = "1bAc"
REPLACEALL将字符串中的部分文本替换为不同的文本,替换所有匹配到的REPLACEALL("AbAc","A","1") = "1b1c"
TRIM将字符串前后的空格删除TRIM("\t\n A BC \t\n") = "A BC"
NOW获取当前的时间NOW() = "2024-03-15 12:08:31"
TODAY获取今天的日期TODAY() = "2024-03-15"
YEAR获取指定日期的年份YEAR("2024-03-15 12:08:31") = 2024
MONTH获取指定日期的月份SUBYEAR("2024-03-15 12:08:31", 2) = 2022-03-15 12:08:31, SUBYEAR("2024-03-15 12:08:31", 3, "YYYY-MM-DD") = 2021-03-15
DAY获取指定日期的天数SUBYEAR("2024-03-15 12:08:31", 2) = 2022-03-15 12:08:31, SUBYEAR("2024-03-15 12:08:31", 3, "YYYY-MM-DD") = 2021-03-15
HOUR获取指定日期的小时数HOUR("2024-03-15 12:08:31") = 12
MINUTE获取指定日期的分钟数MINUTE("2024-03-15 12:08:31") = 8
SECOND获取指定日期的秒数SECOND("2024-03-15 12:08:31") = 31
ADDYEAR增加指定日期的年份ADDYEAR("2024-03-15 12:08:31", 2) = 2026-03-15 12:08:31, ADDYEAR("2024-03-15 12:08:31", 3, "YYYY-MM-DD") = 2027-03-15
SUBYEAR减少指定日期的年份SUBYEAR("2024-03-15 12:08:31", 2) = 2022-03-15 12:08:31, SUBYEAR("2024-03-15 12:08:31", 3, "YYYY-MM-DD") = 2021-03-15
ADDMONTH增加指定日期的月份ADDMONTH("2024-03-15 12:08:31", 2) = 2024-05-15 12:08:31, ADDMONTH("2024-03-15 12:08:31", 10, "YYYY-MM-DD") = 2025-01-15
SUBWEEK减少指定日期的周数SUBWEEK("2024-03-15 12:08:31", 2) = 2024-03-01 12:08:31, SUBWEEK("2024-03-15 12:08:31", 4, "YYYY-MM-DD") = 2024-02-16
ADDMINUTE增加指定时间的分钟数ADDMINUTE("2024-03-15 12:08:31", 30) = 2024-03-15 12:38:31, ADDMINUTE("2024-03-15 12:08:31", 55, "HH:mm:ss") = 13:03:31
SUBMINUTE减少指定时间的分钟数SUBMINUTE("2024-03-15 12:08:31", 30) = 2024-03-15 11:38:31, SUBMINUTE("2024-03-15 12:08:31", 55, "HH:mm:ss") = 11:13:31
ADDSECOND增加指定时间的秒数ADDSECOND("2024-03-15 12:08:31", 20) = 2024-03-15 12:08:51, ADDSECOND("2024-03-15 12:08:31", 40, "HH:mm:ss") = 12:09:11
SUBSECOND减少指定时间的秒数SUBSECOND("2024-03-15 12:08:31", 20) = 2024-03-15 12:08:11, SUBSECOND("2024-03-15 12:08:31", 40, "HH:mm:ss") = 12:07:51
DIFFDAYS获取两个日期之间的天数DIFFDAYS("2024-01-15","2024-03-15") = 60
DIFFHOURS获取两个时间之间的小时数,保留两位小数DIFFHOURS("2024-01-15 12:00:00", "2024-01-16 15:00:00") = 27, DIFFHOURS("2024-01-15 12:00:00", "2024-01-15 12:30:00") = 0.5
DIFFMINUTES获取两个时间之间的分钟数DIFFMINUTES("2024-01-15 12:00:00", "2024-01-15 12:30:00") = 30
TIMESTAMP获取指定日期的时间戳TIMESTAMP("2024-03-15 12:08:31") = 1710475711000
IN检查第二个参数是否在合集中IN([1,2,3,4], 4) = true, IN([1,2,3,4], 5) = false
LEN获取指定合集的长度LEN(["a", "b", "c"]) = 3
UNION将合集/参数中的值去重,返回去重后的合集UNION(1, 3, 5, 1, 4, 3) = [1, 3, 5, 4], UNION([1, 2, 3, 1, 2, 3]) = [1, 2, 3]
COLUMN获取子表单中指定字段并返回合集COLUMN([{key: 1}, {key: 2}, {key: 3}],"key") = [1, 2, 3], COLUMN([[{key: 1}, {key: 2}], [{key: 3}, {key: 4}]], "key") = [1, 2, 3, 4]
VALUE获取分组表单中指定字段VALUE({key: 1}, "key", 2) = 1, VALUE({key: 1}, "value", 2) = 2, VALUE({list: {key: 1}}, "list.key") = 1
INTERSECTIONSET获取两个集合的交集INTERSECTIONSET([1, 3, 5], [1, 4, 3]) = [1, 3]
LIST获取所有参数组成的集合LIST([1, 3, 5], [1, 4, 3]) = [[1, 3, 5], [1, 4, 3]]
IF检查一个条件能否满足,如果满足返回第二个参数,否则返回第三个参数IF(false, 1, 0) = 0, IF(true, 1, 0) = 1
AND将表达式用"并且"链接,当所有表达式均为true时返回true,否则返回falseAND(true, true) = true, AND(true, false) = false
OR将表达式用"或"链接,当有一个表达式为true时返回true,否则返回falseOR(false, false) = false, OR(false, true) = true
CASE检查是否满足一个或多个条件,返回第一个满足条件的值CASE(IN([1,2,3,4], 5), 1, IN([1,2,3,4], 2), 2) = 2
NOT获取某个逻辑值的相反值NOT(true) = false, NOT(false) = true
EQ检查两个值是否相等EQ(100, 100) = true, EQ(100, 90) = false, EQ(100, "100") = false
NE检查两个值是否不相等NE(100, 90) = true, NE(100, 100) = false, NE(100, "100") = true
GE检查第一个值是否大于等于另一个值GE(100, 90) = true, GE(100, 100) = true, GE(100, 110) = false
GT检查第一个值是否大于另一个值GT(100, 90) = true, GT(100, 100) = false, GT(100, 110) = false
LE检查第一个值是否小于等于另一个值LE(100, 90) = false, LE(100, 100) = true, LE(100, 110) = true
LT检查第一个值是否小于另一个值LT(100, 90) = false, LT(100, 100) = false, LT(100, 110) = true
TRUE返回逻辑值 trueTRUE() = true
FALSE返回逻辑值 falseFALSE() = false
DEFAULT检查第一个参数,如果为空返回第二个参数,否则返回第一个参数DEFAULT("#FF7271", "#000") = "#FF7271", DEFAULT("", "#000") = "", DEFAULT(null, "#000") = "#000"
EMPTY检查参数是否为空EMPTY("") = true, EMPTY([]) = true, EMPTY("0") = false
NOTEMPTY检查参数是否不为空NOTEMPTY("") = false, NOTEMPTY([]) = false, NOTEMPTY("0") = true
ISNUMBER检查参数是否为数字ISNUMBER("2.34") = true, ISNUMBER("2.4e") = false