公式计算
计算公式功能使用户能够通过公式计算表单组件的值,提供更强大的动态计算和数据处理能力,具体包括以下操作:
1. 功能简介
在表单逻辑设计中,计算公式是一种强大的动态规则引擎,允许开发者或业务人员通过函数公式对表单数据进行实时处理,并基于计算结果设置条件规则(如字段显示/隐藏、必填/禁用、数值校验等)。其核心功能覆盖数字运算、文本处理、时间计算、集合操作及逻辑判断,可满足复杂业务场景下的动态交互需求。
2. 功能说明
计算公式的使用如同excel的函数公式使用,支持使用表单中已经添加的字段进行字段计算。
示例: 表单中有合同金额与已回款金额字段,需要根据这两个字段计算未回款金额。
第一步:先选择SUM函数公式进行计算,点击函数即可将函数公式插入右侧内容区域;
第二步:选择合同金额与已回款字段,并手动敲上-号,简单的计算公式就添加完成啦~
同理,发挥您聪明的大脑进行创造吧~
3. 如何查看函数的作用
鼠标悬浮至函数上时,可以查看函数说明,及示例说明。
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,否则返回false | AND(true, true) = true, AND(true, false) = false |
OR | 将表达式用"或"链接,当有一个表达式为true时返回true,否则返回false | OR(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 | 返回逻辑值 true | TRUE() = true |
FALSE | 返回逻辑值 false | FALSE() = 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 |