【泛微】流程提交控制明细某一列字段值必须一致,不一致禁止提交

明细行选择时很多流程需要控制一单只能选择相同的科目, 或者相同的部门,需要控制不可以明细行同一个字段出现多个不同的值

实现效果:提交时提示错误信息

<script>
	//只需修改字段名和明细表数字即可
	var fieldname = "LGORT_OUT"; //明细表字段名
	var xmtable = "detail_1"; //明细表1就是detail_1,明细2就是detail_2
	jQuery(document).ready(function() {

		WfForm.registerCheckEvent(WfForm.OPER_SUBMIT,
		function(callback) {
			var fieldid = WfForm.convertFieldNameToId(fieldname, xmtable) var rowArr = WfForm.getDetailAllRowIndexStr(xmtable).split(",");
			var beforvalue = "";
			for (var i = 0; i < rowArr.length; i++) {
				var rowIndex = rowArr[i];
				if (rowIndex !== "") {
					var fieldMark = fieldid + "_" + rowIndex; //遍历明细行字段
					var fieldvalue = WfForm.getFieldValue(fieldMark);
					if (i == 0) {
						beforvalue = fieldvalue;
					} else {
						if (fieldvalue != beforvalue) {
							WfForm.showMessage("明细字段存在不同值,请重新选择", 2, 5);
							return;
						}
					}

				}
			}
			callback(); //继续提交需调用callback,不调用代表阻断
		});

	});
</script>

 

注册拦截事件,指定动作执行前触发,并可阻断/放行后续操作

支持多次注册,按注册顺序依次执行;支持异步ajax,避免请求卡住

场景1:表单提交、保存、退回、转发、强制收回等操作执行前,执行自定义逻辑并阻断/放行后续操作

场景2:明细添加行、删除行前,执行自定义逻辑并阻断/允许后续操作

动作类型 说明 最低版本要求
WfForm.OPER_SAVE 保存
WfForm.OPER_SUBMIT 提交/批准/提交需反馈/不需反馈等
WfForm.OPER_SUBMITCONFIRM 提交至确认页面,如果是确认界面,点确认触发的是SUBMIT
WfForm.OPER_REJECT 退回
WfForm.OPER_REMARK 批注提交
WfForm.OPER_INTERVENE 干预
WfForm.OPER_FORWARD 转发
WfForm.OPER_TAKEBACK 强制收回
WfForm.OPER_DELETE 删除
WfForm.OPER_ADDROW 添加明细行,需拼明细表序号
WfForm.OPER_DELROW 删除明细行,需拼明细表序号
WfForm.OPER_PRINTPREVIEW 打印预览 KB900190501
WfForm.OPER_EDITDETAILROW 移动端-编辑明细 KB900191101
WfForm.OPER_BEFOREVERIFY 校验必填前触发事件 KB900191201
WfForm.OPER_TURNHANDLE 转办 KB900201101
WfForm.OPER_ASKOPINION 意见征询 KB900201101
WfForm.OPER_TAKFROWARD 征询转办 KB900201101
WfForm.OPER_TURNREAD 传阅 KB900201101
WfForm.OPER_FORCEOVER 强制归档 KB900201101
WfForm.OPER_BEFORECLICKBTN 点右键按钮前 KB900201101
WfForm.OPER_SAVECOMPLETE 保存后页面跳转前 KB900210501
WfForm.OPER_WITHDRAW 撤回 KB900201101
WfForm.OPER_CLOSE 页面关闭 KB900201101

接口名称及参数说明:registerCheckEvent:function(type,fun)

参数 参数类型 必须 说明
type String 动作类型(详见上表),多个逗号分隔
fun Function 自定义函数,此函数入参为callback,执行自定义逻辑完成或异步ajax的success函数体内,放行需调用callback,不调用代表阻断后续操作

样例:

<script>
jQuery().ready(function(){
    WfForm.registerCheckEvent(WfForm.OPER_SUBMIT, function(callback){
      
      var field15201 = WfForm.getFieldValue("field15201");
      if(field15201 > 0 ){
        WfForm.showMessage("已发起过退料流程", 2, 5); 
        return ;
    } 
        callback();   
    });
});
</script>

jQuery().ready(function(){
    WfForm.registerCheckEvent(WfForm.OPER_SAVE, function(callback){
        jQuery("#field27495").val("保存自动赋值");
        callback();    //继续提交需调用callback,不调用代表阻断
    });
  WfForm.registerCheckEvent(WfForm.OPER_SAVE+","+WfForm.OPER_SUBMIT,function(callback){
        //... 执行自定义逻辑
        callback();
    });
    WfForm.registerCheckEvent(WfForm.OPER_ADDROW+"1", function(callback){
        alert("添加明细1前执行逻辑,明细1则是OPER_ADDROW+1,依次类推")
        callback();    //允许继续添加行调用callback,不调用代表阻断添加
    });
    WfForm.registerCheckEvent(WfForm.OPER_DELROW+"2", function(callback){
        alert("删除明细2前执行逻辑")
        callback();    //允许继续删除行调用callback,不调用代表阻断删除
    });
    WfForm.registerCheckEvent(WfForm.OPER_PRINTPREVIEW, function(callback){
        alert("控制默认弹出的打印预览窗口")
        alert("当打印含签字意见列表,此接口需要放到跳转路由前执行,组件库提供此机制");
        window.WfForm.printTimeout = 3000;  //产品是默认延时1s自动弹出,可通过此方式控制延时时间
        callback();    //允许继续弹出调用callback,不调用代表不自动弹预览
    });
    WfForm.registerCheckEvent(WfForm.OPER_EDITDETAILROW, function(callback,params){
        alert(JSON.stringify(params));    //参数含当前点击哪个明细表哪一行
        callback();    //允许跳转明细编辑窗口,不调用阻断跳转
    });
});

 

THE END
分享
二维码
打赏
海报
【泛微】流程提交控制明细某一列字段值必须一致,不一致禁止提交
明细行选择时很多流程需要控制一单只能选择相同的科目, 或者相同的部门,需要控制不可以明细行同一个字段出现多个不同的值 实现效果:提交时提示错误信息 <……
<<上一篇
下一篇>>