一、前端表达式
配合视图设置,可实现基本计算、校验、赋值、比较等页面操作。
说明
- 常规四则运算
- 实时赋值、计算、比较、限制操作
- 跨模块汇总计算、赋值
- 简单 JavaScript 脚本支持
前端表达式说明
1、常规计算及赋值
普通的加减乘除四则运算
javascript
job_salary + level_salary + basic_salaryjob_salary + level_salary + basic_salary2、自定义函数
为方便计算,前端自定义一些业务中经常使用的函数,表达式可以组合使用。
| 方法 | 说明 | 示例 | 备注 |
|---|---|---|---|
| toArray | 转数组 | toArray(a,b,c) | |
| join(arr: [], separator = '/') | 字符串拼接 join(arr: [], separator = '/') | join([a,b,c],'-') | arr:数组类型,非数组可用 toArray 转换,separator:分隔符,默认'/'连接,可自定义 |
| toFixed(num: any, p = 2) | 数值、金额精度处理 | toFixed(1234.567,2),结果:1234.56 | num:要格式化的数据,p:精度,默认 2 位 |
| dateCalc | 时间间隔计算 | dateCalc(toArray(start_date,end_date)) type 为'date',或者不传(注意 date 要加上单引号) | 使用 dateCalc 函数,时间区间计算,直接使用该函数,多个字段的需要加一个 toArray 函数,该函数会根据两个时间是否带时分去按日期计算还是按时间计算,按日期计算的话会在默认算出的结果加 1,比如 2024-05-31 到 2024-06-01 会算出来 2 天,type 为’date’或者不传,传了‘date’之后不管是否有时分秒,都按日期计算 |
| min | 录入最小值 | min=10 // 最小值为 10 min=pay_money // 最小值为 pay_money | 目前支持的都是在同一个表中 |
| max | 录入最大值 | max=50 // 最小值为 50 或 max=pay_money // 最小值为 pay_money | 目前支持的都是在同一个表中 |
| multiSum | 跨表计算合计 | multiSum(MAIN_BILL_DTO[test_money], BILL_LIST[last_month_amount+current_month_amount]) | MAIN_BILL_DTO[test_money] 参数中以 MAIN_BILL_DTO 为对象名称,英文的[]内是需要计算的字段,可以是单个字段,也可以为简单的表达式(加减乘除)。 |
| setDomVisible(doms,value) | 设置元素的显隐, | doms 数数组,需要隐藏的元素 id,规则是 getattribute+''+field_code,value 是隐藏时的值 | |
| numberPositive(num) | 最小值为 0 | numberPositive(a+b-c) | 若计算结果小于 0,则返回 0 |
【tips:补充说明】手动触发跨表计算调用 create-form-view 组件的 toggleCalc 方法手动触发 跨表计算
javascript
createFormRef?.value?.toggleCalc(getAttribute)createFormRef?.value?.toggleCalc(getAttribute)3、自定义函数
支持基本的 JavaScript 脚本,用于处理特殊情况
javascript
//record为当前行数据;formData为全部表单数据;dataSource为当前表格数据;
function doCalculate(record, formData, dataSource) {
console.log('Hello, world!')
}//record为当前行数据;formData为全部表单数据;dataSource为当前表格数据;
function doCalculate(record, formData, dataSource) {
console.log('Hello, world!')
}参数说明
- formData:全部表单数据对象
- dataSource:当前表格数据对象
注意事项:(1) (2)
应用场景
- 字段:字段变化时,使用脚本处理数据或赋值
- 表单:保存时,对整个单据的数据校验等
示例
javascript
//record为当前行数据;formData为全部表单数据;dataSource为当前表格数据;
//注意:对象为空时引用报错问题,防止脚本报错,引发程序异常
function doCalculate(record, formData, dataSource) {
formData.BILL_LIST.total_cost = formData.DETAIL_LIST?.pay_money
formData.BILL_LIST.pro_name =
formData.BIZ_RECEPTION_DTO?.code + formData.BIZ_RECEPTION_DTO?.pro_name
}//record为当前行数据;formData为全部表单数据;dataSource为当前表格数据;
//注意:对象为空时引用报错问题,防止脚本报错,引发程序异常
function doCalculate(record, formData, dataSource) {
formData.BILL_LIST.total_cost = formData.DETAIL_LIST?.pay_money
formData.BILL_LIST.pro_name =
formData.BIZ_RECEPTION_DTO?.code + formData.BIZ_RECEPTION_DTO?.pro_name
}4、保存检验

- 简单相等比较
javascript
BILL_LIST[total_cost] == DETAIL_LIST[pay_money]BILL_LIST[total_cost] == DETAIL_LIST[pay_money]- 嵌套简单计算
javascript
BIZ_RECEPTION_DTO[meal_money + fete_money + car_money + stay_money] == DETAIL_LIST[pay_money] // 嵌套简单计算BIZ_RECEPTION_DTO[meal_money + fete_money + car_money + stay_money] == DETAIL_LIST[pay_money] // 嵌套简单计算- 常量比较
javascript
PAY_BUSINESS_INFO_DTO[check_money] >= 0 // 常量比较PAY_BUSINESS_INFO_DTO[check_money] >= 0 // 常量比较- 连续比较
javascript
;(BILL_LIST[total_cost] == DETAIL_LIST[pay_money]) == PAY_BUSINESS_INFO_DTO[check_money] // 连续比较;(BILL_LIST[total_cost] == DETAIL_LIST[pay_money]) == PAY_BUSINESS_INFO_DTO[check_money] // 连续比较- 简单合计计算
javascript
BILL_LIST[total_cost] + PAY_BUSINESS_INFO_DTO[check_money] == DETAIL_LIST[pay_money] //简单合计计算
BILL_LIST[total_cost] * 20 == DETAIL_LIST[pay_money] - 10 // 简单合计计算BILL_LIST[total_cost] + PAY_BUSINESS_INFO_DTO[check_money] == DETAIL_LIST[pay_money] //简单合计计算
BILL_LIST[total_cost] * 20 == DETAIL_LIST[pay_money] - 10 // 简单合计计算场景应用示例
一级列表视图
1、列表字段组合

2、要素字段转译

