返回列表 发布新帖

表格內對某一欄位做全量校驗怎麼寫?

85 4
发表于 2025-8-5 17:50:38 | 查看全部 阅读模式
问答

紧急程度

已完结
需求是
image.png
之前試寫過很多種邏輯但是某些場景就會失靈,

花了兩三天時間了有點內耗
需要支援一下解法
感謝>"<
{
          schema: 'acctg_year',
          path: 'tableData',
          key: 'custom',
          validatorType: 'error',
          errorMessage: this.translateService.instant('dj-bmc-会计年度需要连续'),
          trigger: {
            condition:// eslint-disable-next-line max-len
              "(()=>{if(currentControl.parent.parent.controls.length<2){return false;};let result = false;result = !currentControl.parent.parent.controls.every((item,rowIndex)=>rowIndex===0 || (rowIndex>0 && (Number(currentControl.parent.parent.controls[rowIndex].get('acctg_year').value) === Number(currentControl.parent.parent.controls[rowIndex-1].get('acctg_year').value)+1)));return result;})()",
              // 'currentControl.parent.parent.controls.filter((data,index)=> {return index>0 && (Number(currentControl.parent.parent.controls[index-1].get("acctg_year").value)+1 !== Number(currentControl.parent.parent.controls[index].get("acctg_year").value))});',
              // 'currentControl.parent.parent.controls.filter((data,index)=> {return index>0 && (Number(currentControl.parent.parent.controls[index-1].value.acctg_year)+1 !== Number(data.value.acctg_year))});',
              // '!currentControl.parent.parent.controls.every((control, index, array) => {if(array.length<2 || index===0){return true;};if(array.length>1 & index>0){let prev = Number(array[index - 1].get("acctg_year").value);let curr = Number(control.get("acctg_year").value);return prev + 1 === curr;}})',
            type: 'sync',
            point: 'default',
          },
        }




最佳答案

查看完整内容

本帖最后由 翁俊 于 2025-8-5 18:27 编辑 你这属于业务需求了,没有一个规范和样例的 给你一个思路,这种场景不建议使用规则来实现,因为如果是规则会比较复杂,要写多个规则联动触发才能满足场景 建议方式: 使用hooks中的表格change事件,当表格数据发生变化时,获取表格实例,拿到表格所有数据,去获取最后一行数据,就是新增的数据,找到需要判断的栏位值和表格所有数据对比,当不满足条件是,使用hooks中的setError事件给 ...

评论4

翁俊Lv.7 发表于 2025-8-5 18:11:56 | 查看全部
本帖最后由 翁俊 于 2025-8-5 18:27 编辑

你这属于业务需求了,没有一个规范和样例的

给你一个思路,这种场景不建议使用规则来实现,因为如果是规则会比较复杂,要写多个规则联动触发才能满足场景
建议方式:
使用hooks中的表格change事件,当表格数据发生变化时,获取表格实例,拿到表格所有数据,去获取最后一行数据,就是新增的数据,找到需要判断的栏位值和表格所有数据对比,当不满足条件是,使用hooks中的setError事件给出提示

李雅慧楼主Lv.3 发表于 2025-8-6 09:00:08 | 查看全部
這是定制也可以用hooks嗎?
翁俊Lv.7 发表于 2025-8-6 09:17:31 | 查看全部
本帖最后由 翁俊 于 2025-8-6 09:19 编辑
李雅慧 发表于 2025-8-6 09:00
這是定制也可以用hooks嗎?

定制支持hooks的,有平台文档说明如何接入
平台hooks文档
image.png
image.png

image.png
李雅慧楼主Lv.3 发表于 2025-8-6 14:52:00 | 查看全部
後來解了
某些場景會有問題是因為只觸發了當前行的校驗
所以rules寫

{
          schema: 'acctg_year',
          path: 'tableData',
          key: 'custom',
          validatorType: 'error',
          errorMessage: this.translateService.instant('dj-bmc-会计年度需要连续'),
          trigger: {

            condition:
              // eslint-disable-next-line max-len
              "(()=>{if(currentControl.parent.parent.controls.length<2){return false;};let result = false;result = !currentControl.parent.parent.controls.every((item,rowIndex)=>rowIndex===0 || (rowIndex>0 && (Number(currentControl.parent.parent.controls[rowIndex].get('acctg_year').value) === Number(currentControl.parent.parent.controls[rowIndex-1].get('acctg_year').value)+1)));return result;})()",
            type: 'sync',
            point: 'default',
          },
        },



之外
還要在修改資料的地方forEach觸發這個列的校驗

image.png




大家来答
    热门讨论
    精选文章
    排错技巧 - 地中台查不到调用日志
    问题描述客户反馈:系统今天都有正常交易,但在EAI上却查不到日志记录,可能是什么原
    私有化效能问题排查
     需求背景在私有化环境中,客户的服务器环境可能在本地,也可能在云端,可能会受
    设定高代码应用的作业权限控制(纯DAP前后端)
    场景比较常见的运作场景是纯DAP的前端页面, 通常会有选单, 这时候, 就会有一个需求,
    数据驱动2.0_组合场景, 任务结束后走不同分支设定方式说明
    场景以下图为例, 当[订单签核]任务结束后, 希望依条件决定后面要走到[工单待签核]或[
    低代码的标准表格中高级查询指定字段的列值支持下拉配置
        需求背景            当用户在使用低代
    • 关注公众号
    Copyright © 2025 鼎捷数智股份有限公司 版权所有 All Rights Reserved. Powered by Discuz! X5.0
    关灯 在本版发帖
    即将开放
    返回顶部
    快速回复 返回顶部 返回列表