Skip to content
本页目录

一、前端表达式

配合视图设置,可实现基本计算、校验、赋值、比较等页面操作。

说明

  • 常规四则运算
  • 实时赋值、计算、比较、限制操作
  • 跨模块汇总计算、赋值
  • 简单 JavaScript 脚本支持

前端表达式说明

1、常规计算及赋值

普通的加减乘除四则运算

javascript
job_salary + level_salary + basic_salary
job_salary + level_salary + basic_salary

2、自定义函数

为方便计算,前端自定义一些业务中经常使用的函数,表达式可以组合使用。

方法说明示例备注
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.56num:要格式化的数据,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)最小值为 0numberPositive(a+b-c)若计算结果小于 0,则返回 0

【tips:补充说明】手动触发跨表计算调用 create-form-view 组件的 toggleCalc 方法手动触发 跨表计算

javascript
createFormRef?.value?.toggleCalc(getAttribute)
createFormRef?.value?.toggleCalc(getAttribute)

3、自定义函数

支持基本的 JavaScript 脚本,用于处理特殊情况 alt text

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、保存检验

alt text

  • 简单相等比较
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、列表字段组合

alt text

2、要素字段转译

alt text

预算单位软件产品开发部