Skip to content

使用计算公式

计算公式用于根据表单里已有字段,自动算出结果:金额合计、日期差、文本拼接、按条件返回不同内容等。写法类似表格函数,可在「计算公式」组件,以及隐藏 / 必填 / 禁用 / 数据联动等条件入口中使用。

公式能力总览

能解决什么问题

诉求思路示例方向
自动算钱加减乘除、汇总、四舍五入、中文大写行金额、报销合计
处理日期今天、日差、加减天/工作日剩余天数、预计完成日
拼文案拼接、截取、替换姓名拼接、手机号脱敏
按条件取值IF / CASE会员折扣、成绩等级
汇总明细COLUMN + SUM 等子表金额合计

简单「显不显示 / 是否必填」优先用逻辑条件;需要算出一个值,或判断难以用条件组表达时,再改用公式。

与逻辑条件二选一

在隐藏 / 必填 / 禁用 / 数据联动等同一条件配置里,逻辑条件与计算公式只能二选一:切换到「函数公式」后,以公式为准,不能与条件组同时叠加。需要「先算合计再判断」时,请用计算公式组件落结果字段,再在另一配置位用逻辑条件比较该字段。

在哪里找

常见入口:

  1. 计算公式组件:从组件列表拖入「计算公式」,在属性/高级中编辑表达式(专门算值,不涉及条件模式切换)。
  2. 高级配置条件入口:数据联动、隐藏/必填/禁用等弹窗中,可切换为「函数公式」模式(与逻辑条件二选一)。
  3. 事件流条件:部分条件支持切换为公式判断(同样与逻辑条件二选一,以界面为准)。

怎么配置(分步)

1. 准备依赖字段

先拖好会被引用的字段(如「数量」「单价」),并起好清晰标题,方便在字段列表里辨认。

依赖字段准备好

2. 打开公式编辑器

选中目标组件(或联动目标)→ 进入公式设置。

3. 插入函数与字段

  1. 在左侧点选函数(如 MUL),函数会插入编辑区。
  2. 再点选「数量」「单价」字段,或手动补全参数。
  3. 鼠标悬停函数名,可查看说明与示例。

点选函数插入

点选字段插入

4. 保存并预览验证

保存后打开预览,修改数量/单价,确认结果即时变化。

引用字段时注意

公式里出现的是字段标识(点选插入即可)。下文示例为便于阅读,用中文名或英文名代表字段,配置时请改为你表单中的实际字段。

避免循环引用

公式引用「当前组件自身」且无条件时,可能循环计算导致页面卡顿。需要用当前值时,请加空值判断,例如:

text
IF(EMPTY(当前组件), 新值, 当前组件)

或使用 DEFAULT_VALUE(...) 仅设置默认值(见高阶函数)。

业务示例(从入门到常用)

入门 1:未回款金额

背景:合同台账要展示还剩多少未回款。 字段:合同金额、已回款金额、未回款(公式)。

text
SUB(合同金额, 已回款金额)

也可用运算符(若编辑器支持):合同金额 - 已回款金额

未回款预览

入门 2:数量 × 单价

背景:采购明细每一行的金额。

text
ROUND(MUL(数量, 单价), 2)

行金额随数量变化

入门 3:拼接姓名

text
CONCAT(姓, 名)

常用 1:报销明细合计 + 中文大写

  1. 子表/表格表单列:费用类型、金额。
  2. 主表「合计金额」:
text
SUM(COLUMN(明细表, "金额字段标识"))
  1. 「大写金额」:
text
TOCHINSESAMOUNT(合计金额)
  1. 可选:合计 ≥ 1000 时,对「附件」另配必填条件,用逻辑条件比较「合计金额」字段(不要在必填弹窗里再叠一层公式)。

明细合计与大写

常用 2:会员折扣价

背景:原价按会员等级打折。

text
ROUND(
  MUL(
    原价,
    CASE(
      EQ(等级, "SVIP"), 0.7,
      EQ(等级, "VIP"), 0.8,
      1
    )
  ),
  2
)

含义:SVIP 7 折,VIP 8 折,其它原价;结果保留两位小数。

切换等级折扣变化

常用 3:距截止日期还剩几天

text
DIFFDAYS(TODAY(), 截止日期)

可再包一层提示文案(若结果用于文本展示,需按实际类型选用组件):

text
IF(LT(DIFFDAYS(TODAY(), 截止日期), 0), "已过期", CONCAT("剩余", DIFFDAYS(TODAY(), 截止日期), "天"))

常用 4:手机号脱敏

text
CONCAT(SLICELEFT(手机号, 3), "****", SLICERIGHT(手机号, 4))

输入 13812345678138****5678

常用 5:成绩等级

text
IF(GT(分数, 90), "优秀", "良好")

多档可用 CASE

text
CASE(
  GE(分数, 90), "优秀",
  GE(分数, 80), "良好",
  GE(分数, 60), "及格",
  "不及格"
)

常用 6:空值时用今天填充

text
DEFAULT(日期字段, TODAY())

或只给当前组件设默认值:

text
DEFAULT_VALUE(TODAY())

函数一览

下面按类别列出内置函数:说明帮助选型,示例帮助对照结果。配置时以公式面板为准;悬停函数可查看同款说明。

数字函数

函数说明示例
TONUMBER转为数字TONUMBER("1.5")1.5;非法时多为 0
ADD / SUB / MUL / DIV加 / 减 / 乘 / 除ADD(1,2)3MUL(2,2)4
SUM合计(多个值或合集)SUM(1,2,3)6SUM([5,6,7])18
MAX / MIN / AVG最大 / 最小 / 平均MAX(1,5,10)10
ABS绝对值ABS(-10)10
MOD取余MOD(10,3)1
ROUND四舍五入到指定位数ROUND(3.149, 2)3.15
FLOOR / CEIL向下 / 向上取整FLOOR(1.93)1CEIL(1.93)2
FIXED保留指定小数位FIXED(1.93, 1)1.9
SQRT / POWER平方根 / 乘幂SQRT(9)3POWER(2,4)16
RAND / PI随机数 / 圆周率RAND()PI()
TOCHINSESAMOUNT中文大写金额TOCHINSESAMOUNT(32.14)叁拾贰元壹角肆分
LN / LOG / LOG2对数LOG(100)2
SIN / COS / TAN / ASIN / ACOS / ATAN / EXP三角函数与指数按弧度计算,见面板示例

数字函数分类面板

文本函数

函数说明示例
CONCAT拼接文本CONCAT("张", "三")张三
SLICELEFT从左侧取指定长度SLICELEFT("ABCDE", 3)ABC
SLICERIGHT从右侧取指定长度SLICERIGHT("ABCDE", 3)CDE
TOLOWER / TOUPPER转小写 / 大写TOLOWER("AbC")abc
STARTSWITH是否以某串开头STARTSWITH("ABCDEF","ABC")true
INCLUDES是否包含某串见面板返回值说明
REPLACE / REPLACEALL替换首次 / 全部REPLACE("AbAc","A","1")1bAc
TRIM去掉首尾空白TRIM(" A BC ")A BC

时间函数

函数说明示例
NOW / TODAY当前时间 / 今天日期TODAY() → 如 2024-03-15
YEAR / MONTH / DAY / HOUR / MINUTE / SECOND取日期部件YEAR("2024-03-15")2024
DIFFDAYS / DIFFHOURS / DIFFMINUTES日差 / 小时差 / 分钟差DIFFDAYS("2024-01-15","2024-03-15")60
ADDYEAR / ADDMONTH / ADDDAY / ADDWEEK / ADDHOUR…日期时间加法ADDDAY("2024-03-15", 10)
SUBYEAR / SUBMONTH / SUBDAY…日期时间减法SUBDAY("2024-03-15", 10)
TIMESTAMP时间戳见面板
WEEKSTART / WEEKEND本周起止WEEKSTART("2024-03-15")
MONTHSTART / MONTHEND本月起止MONTHEND("2024-03-15")2024-03-31
YEARSTART / YEAREND本年起止
QUARTER / QUARTERSTART / QUARTEREND季度相关QUARTER("2024-05-15")2
WEEKOFYEAR / WEEKDAY / ISWEEKEND周序 / 星期 / 是否周末ISWEEKEND("2024-03-16")true
ADDWORKDAY加工作日(跳过周六日)ADDWORKDAY("2024-03-15", 1) → 下一工作日

合集函数

函数说明示例
COLUMN取子表某一列,返回合集COLUMN(明细, "金额")[10,20,30]
SUM + COLUMN明细列合计(常用组合)SUM(COLUMN(明细, "金额"))
LEN合集长度LEN(["a","b","c"])3
IN值是否在合集中IN([1,2,3], 2)true
UNION去重UNION(1,3,5,1,4)[1,3,5,4]
INTERSECTIONSET交集INTERSECTIONSET([1,3,5],[1,4,3])[1,3]
LIST组成集合LIST(1,2,3)
VALUE从对象/分组中取值见面板示例

逻辑函数

函数说明示例
IF条件成立返回 A,否则 BIF(GT(分数,90),"优秀","良好")
CASE多条件依次匹配,返回首个成立的值会员折扣
AND / OR / NOT并且 / 或者 / 取反AND(true,false)false
EQ / NE / GT / GE / LT / LE等于、不等于、大于等比较EQ(100,100)true(注意数字与文本 "100" 可能不相等)
EMPTY / NOTEMPTY是否为空EMPTY("")true
DEFAULT为空则用默认值DEFAULT(备注, "无")
ISNUMBER是否为数字ISNUMBER("2.34")true
TRUE / FALSE常量真假TRUE()

高阶函数

偏进阶,用于默认值、变量、权限文案等(是否可用取决于环境是否注入对应用户/变量数据)。

函数说明示例方向
DEFAULT_VALUE设置当前组件默认值DEFAULT_VALUE(TODAY())
GET_VARIABLE全局变量GET_VARIABLE("变量标识", "默认值")
GET_DATA读外部/上下文数据按面板说明传入键名
HAS_PERMISSION / HAS_ROLE是否具备权限或角色身份与权限
T取多语言词条配合国际化配置
CURRENT_RULE读当前组件规则上的某属性进阶
CALLBACK执行自定义计算并取返回值进阶;一般业务优先用上面函数组合

选用建议

你想…优先函数
四则运算、合计ADD/SUB/MUL/DIV、SUM、ROUND
明细列汇总COLUMN + SUM
文本拼接/截取CONCAT、SLICELEFT、SLICERIGHT
多档判断CASE 或嵌套 IF
日期差、工作日DIFFDAYS、ADDWORKDAY
金额打印大写TOCHINSESAMOUNT
空则默认DEFAULT、DEFAULT_VALUE

注意点

  • 与逻辑条件二选一:同一条件配置不可混用;跨字段可先公式算值,再逻辑条件判断。
  • 先预览再交付:改依赖字段看结果;注意空值、除以 0、文本与数字比较。
  • 字段更名/删除:先改公式再删字段,避免公式失效。
  • 性能:避免在「每次按键」的事件里跑过重公式;展示类结果用计算公式组件即可。
  • 与联动、事件分工:公式负责算值;写回多个字段、打开模块等用数据联动事件配置

相关阅读

相关技术文档