目录
1、描述及效果
1.1 描述
根据实际需求,以相应字段做为条件,获取每日、每月流程提交次数。
下面以申请人、申请日期字段为例,限制每日、每月只能提交一次流程。
1.2 效果
1.2.1 同一申请人,每日只能提交一次流程,弹出提示
示例图1-1:
1.2.2 同一申请人,每月只能提交一次流程,弹出提示
示例图1-2:
2、思路
获取流程提交次数,必须要有字段做为SQL语句查询条件。可以是申请人、部门、日期等,条件字段以实际需求来定。
通过SQL查询出来的次数,再写JS提示、不允许再次提交等控制。
3、步骤
3.1 设置字段属性SQL查询语句
3.1.1 每日提交次数
新建一个单行文本–整数字段:“提交次数”,用来存储。
选中“提交次数”字段中,在表单上方菜单栏中,选择“字段属性–字段属性”,如示例图3-1:
SQL代码:
SELECT COUNT(*) FROM formtable_main_68 where sqr = '$main.sqrq$' and sqrq = '$main.sqrq$' and (select DATEPART(DD,GETDATE())) = DATEPART(dd,sqrq)
SQL代码说明:
SELECT COUNT(*) FROM 数据库表名 where 数字库字段名称 = 表单字段 and 数字库字段名称 = 表单字段 and (select DATEPART(DD,GETDATE())) = DATEPART(dd,数字库字段名称)
如示例图3-2:
3.1.2 每月提交次数
获取每月提交次数,与每日是一致的操作,只需要将SQL后面的“dd”改成为“mm”就行。
SQL代码:
SELECT COUNT(*) FROM formtable_main_68 where sqr = '$main.sqrq$' and sqrq = '$main.sqrq$' and (select DATEPART(DD,GETDATE())) = DATEPART(mm,sqrq)
3.2 本次使用E9流程表单前端接口API介绍
具体《E9流程表单前端接口API》详情,请参考泛微官方文献,本篇只介绍需要用到的API。
3.2.1 表单提交操作执行前,执行自定义逻辑并阻断/放行后续操作
动作类型 | 说明 |
---|---|
WfForm.OPER_SUBMIT | 提交/批准/提交需反馈/不需反馈等 |
接口名称及参数说明:
registerCheckEvent:function(type,fun)
样例:
$().ready(function(){
WfForm.registerCheckEvent(WfForm.OPER_SUBMIT,function(callback){
//... 执行自定义逻辑
callback();
});
});
3.2.2 获取单个字段值
getFieldValue: function(fieldMark)
参数说明
参数 | 参数类型 | 必须 | 说明 |
---|---|---|---|
fieldMark | String | 是 | 字段标示,格式 field${字段ID} |
样例:
var fieldvalue = WfForm.getFieldValue("field110");
3.2.3 系统样式的Confirm确认框
说明:兼容移动端,可自定义确认内容及按钮名称
showConfirm: function(content, okEvent, cancelEvent, otherInfo={})
参数说明
参数 | 参数类型 | 必须 | 说明 |
---|---|---|---|
content | String | 是 | 确认信息 |
okEvent | Function | 是 | 点击确认事件 |
cancelEvent | Function | 否 | 点击取消事件 |
otherInfo | Object | 否 | 自定义信息(按钮名称) |
样例:
WfForm.showConfirm("确认删除吗?", function(){
alert("删除成功");
});
WfForm.showConfirm("请问你是否需要技术协助?",function(){
alert("点击确认调用的事件");
},function(){
alert("点击取消调用的事件");
},{
title:"信息确认", //弹确认框的title,仅PC端有效
okText:"需要", //自定义确认按钮名称
cancelText:"不需要" //自定义取消按钮名称
});
3.3 上代码
WfForm.registerCheckEvent(WfForm.OPER_SUBMIT,function(callback){
var fieldvalue = WfForm.getFieldValue("field36021");
if(fieldvalue >= '1'){
WfForm.showConfirm("当日已提交一次本流程,请于明天再来提交,谢谢!", function(){});
}else{
callback(); //继续提交需调用callback,不调用代表阻断
}
});
说明:每日、每月的代码都是一样的,提示文字内容修改一下即可。如需区分,可以再新建一个字段,用于区分每日、每月的提交次数。
4、总结
各位,好久不见,抱拳!
距离上一次更新半年有余了,这期间发生了一些事情,让我没办法沉下心来。
还好,一切都会过去的,是吗?
再会!