# 如何限制补打卡流程每月提交次数

来源快照：`result_data_new_260518.json`

- 来源 ID：`1972423080232159802`
- 模块：低代码平台e-builder
- 目录：专题学习 - 场景专题 - 流程专题
- space ID：`1157961794811633670`
- 原文链接：未提供
- 产品基线：未提供

## 正文

**1.  ****编写目的  **

在公司日常管理中，常常需要对某些流程的提交次数进行限制，例如在员工补打卡申请流程中，每位员工每月只能提交3次补打卡流程，超过之后就会禁止提交并进行提示。展示效果如下：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693995155587111&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

** **

**2.  ****思路分析**  

对于上述场景，我们可以利用流程中的【节点字段校验】功能实现此效果。首先在发起节点开启节点字段校验，设置校验方式为函数，选择流程自带的“历史流程发起次数”函数，之后设置参数，进行函数数值的映射，最后设置不合规提示语即可。

** **

**3.  ****操作说明**  

**3.1****新建流程及表单**

如下图所示，新建补打卡信息表，可以套用系统提供的一些样式模版进行美化。之后依据此表新建eb流程，根据实际情况设置流程节点及操作者（这里的表单字段及流程节点仅做为示例）：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693999425388546&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693999322783767&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

**3.2****设置节点字段校验**

进入流程设置-流转设置中，点击发起节点更多进行设置（或者直接在流程图中点击发起节点）：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693999322783791&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

在更多设置的下面，找到节点字段校验点击进入，添加节点字段校验规则：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157693999313657924&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

设置规则名称，进入下一步设置规则内容，选择函数，搜索“历史流程发起次数”，之后自定义一个参数，本场景中，需要不能超过3次，因此设置＜3。（注意：很多人在这里设置≤3，如果这样设置，员工第4次提交的时候，还是符合条件的，因为在这之前他提交了3次，刚好等于3，所以要设置＜3）：

 ![](https://weapp.eteams.cn/papi/file/preview?fileId=1157694003587022897&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

点击添加，之后点击下一步，首次会自动弹出函数映射，进行映射设置，本场景是每人每月不能超过3次，因此参数设置如下：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157694003668082740&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

之后点击保存，点击下一步，设置合规/不合规提示语，本场景中合规不做提示，流程自动流转，因此填写不合规提示语即可，并设置不合规时禁止提交：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157694003787464801&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

设置完成后，即可实现相应的效果。后期如果需要对函数映射条件做出修改，例如将每月改成每年，点击下图所示位置即可：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157694008074928147&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

** **

**3.3****扩展内容：表单数据保存时实现校验效果**

若是直接保存表单数据，没有走流程，想实现这样的效果，则可以利用动作流实现：首先配置保存按钮“执行前”触发：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157694012210511890&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

之后利用【数据源查询】或者【DML】查询历史数据：首先查询对应的人员and查询日期属于当前年月的（当前年月可以用contact函数拼接出来）：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157694016639696916&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

然后根据查到的数据总量进行条件分支判断：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157694016437485623&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

当查询到的数据≥3时，说明其本月不能再提交了，因此最后添加组件【页面交互】，设置提醒内容并阻止后续提交：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157694016437485654&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

最后的展示效果如下：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1157694020901109822&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)
