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

能解决什么问题
| 诉求 | 思路 | 示例方向 |
|---|---|---|
| 自动算钱 | 加减乘除、汇总、四舍五入、中文大写 | 行金额、报销合计 |
| 处理日期 | 今天、日差、加减天/工作日 | 剩余天数、预计完成日 |
| 拼文案 | 拼接、截取、替换 | 姓名拼接、手机号脱敏 |
| 按条件取值 | IF / CASE | 会员折扣、成绩等级 |
| 汇总明细 | COLUMN + SUM 等 | 子表金额合计 |
简单「显不显示 / 是否必填」优先用逻辑条件;需要算出一个值,或判断难以用条件组表达时,再改用公式。
与逻辑条件二选一
在隐藏 / 必填 / 禁用 / 数据联动等同一条件配置里,逻辑条件与计算公式只能二选一:切换到「函数公式」后,以公式为准,不能与条件组同时叠加。需要「先算合计再判断」时,请用计算公式组件落结果字段,再在另一配置位用逻辑条件比较该字段。
在哪里找
常见入口:
- 计算公式组件:从组件列表拖入「计算公式」,在属性/高级中编辑表达式(专门算值,不涉及条件模式切换)。
- 高级配置条件入口:数据联动、隐藏/必填/禁用等弹窗中,可切换为「函数公式」模式(与逻辑条件二选一)。
- 事件流条件:部分条件支持切换为公式判断(同样与逻辑条件二选一,以界面为准)。
怎么配置(分步)
1. 准备依赖字段
先拖好会被引用的字段(如「数量」「单价」),并起好清晰标题,方便在字段列表里辨认。

2. 打开公式编辑器
选中目标组件(或联动目标)→ 进入公式设置。
3. 插入函数与字段
- 在左侧点选函数(如
MUL),函数会插入编辑区。 - 再点选「数量」「单价」字段,或手动补全参数。
- 鼠标悬停函数名,可查看说明与示例。


4. 保存并预览验证
保存后打开预览,修改数量/单价,确认结果即时变化。
引用字段时注意
公式里出现的是字段标识(点选插入即可)。下文示例为便于阅读,用中文名或英文名代表字段,配置时请改为你表单中的实际字段。
避免循环引用
公式引用「当前组件自身」且无条件时,可能循环计算导致页面卡顿。需要用当前值时,请加空值判断,例如:
IF(EMPTY(当前组件), 新值, 当前组件)或使用 DEFAULT_VALUE(...) 仅设置默认值(见高阶函数)。
业务示例(从入门到常用)
入门 1:未回款金额
背景:合同台账要展示还剩多少未回款。 字段:合同金额、已回款金额、未回款(公式)。
SUB(合同金额, 已回款金额)也可用运算符(若编辑器支持):合同金额 - 已回款金额。

入门 2:数量 × 单价
背景:采购明细每一行的金额。
ROUND(MUL(数量, 单价), 2)
入门 3:拼接姓名
CONCAT(姓, 名)常用 1:报销明细合计 + 中文大写
- 子表/表格表单列:费用类型、金额。
- 主表「合计金额」:
SUM(COLUMN(明细表, "金额字段标识"))- 「大写金额」:
TOCHINSESAMOUNT(合计金额)- 可选:合计 ≥ 1000 时,对「附件」另配必填条件,用逻辑条件比较「合计金额」字段(不要在必填弹窗里再叠一层公式)。

常用 2:会员折扣价
背景:原价按会员等级打折。
ROUND(
MUL(
原价,
CASE(
EQ(等级, "SVIP"), 0.7,
EQ(等级, "VIP"), 0.8,
1
)
),
2
)含义:SVIP 7 折,VIP 8 折,其它原价;结果保留两位小数。

常用 3:距截止日期还剩几天
DIFFDAYS(TODAY(), 截止日期)可再包一层提示文案(若结果用于文本展示,需按实际类型选用组件):
IF(LT(DIFFDAYS(TODAY(), 截止日期), 0), "已过期", CONCAT("剩余", DIFFDAYS(TODAY(), 截止日期), "天"))常用 4:手机号脱敏
CONCAT(SLICELEFT(手机号, 3), "****", SLICERIGHT(手机号, 4))输入 13812345678 → 138****5678。
常用 5:成绩等级
IF(GT(分数, 90), "优秀", "良好")多档可用 CASE:
CASE(
GE(分数, 90), "优秀",
GE(分数, 80), "良好",
GE(分数, 60), "及格",
"不及格"
)常用 6:空值时用今天填充
DEFAULT(日期字段, TODAY())或只给当前组件设默认值:
DEFAULT_VALUE(TODAY())函数一览
下面按类别列出内置函数:说明帮助选型,示例帮助对照结果。配置时以公式面板为准;悬停函数可查看同款说明。
数字函数
| 函数 | 说明 | 示例 |
|---|---|---|
| TONUMBER | 转为数字 | TONUMBER("1.5") → 1.5;非法时多为 0 |
| ADD / SUB / MUL / DIV | 加 / 减 / 乘 / 除 | ADD(1,2) → 3;MUL(2,2) → 4 |
| SUM | 合计(多个值或合集) | SUM(1,2,3) → 6;SUM([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) → 1;CEIL(1.93) → 2 |
| FIXED | 保留指定小数位 | FIXED(1.93, 1) → 1.9 |
| SQRT / POWER | 平方根 / 乘幂 | SQRT(9) → 3;POWER(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,否则 B | IF(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、文本与数字比较。
- 字段更名/删除:先改公式再删字段,避免公式失效。
- 性能:避免在「每次按键」的事件里跑过重公式;展示类结果用计算公式组件即可。
- 与联动、事件分工:公式负责算值;写回多个字段、打开模块等用数据联动或事件配置。


