本文介绍: 明细当前check选中,其余明细check框置灰,并将当前明细行中某字段赋值主表字段


1、描述效果

1.1 描述

泛微OA流程引擎中,明细字段不能够做为出口条件进行判断,所以我们要将明细行中,需要判断字段值赋予到主表中,才能在出口条件进行判断

明细表是不确定因素为什么说明细表是不确定因素呢?明细表在终端系统支持的情况下,基本可以无限量增加或删减,这就代表着,明细表有着无限可能

既然明细表有着无限可能,那我们就把明细表的无限变成唯一

我们先来看一下需求流程图流程表单

流程图

在这里插入图片描述
流程表单
在这里插入图片描述

1.2 效果

1.2.1 当前明细行check选中后,其余明细行check框置灰

示例图1-1:
在这里插入图片描述

1.2.2 如果当前明细行“单价”字段填写,在当前明细行选中check框时,提醒填写清空check框所有值

示例图1-2:
在这里插入图片描述

1.2.3 当前明细行check框选中,并将当前明细行“单价”字段值赋到主表字段“单价”中

示例图1-3:
在这里插入图片描述


2、思路

无限唯一通过获取明细表所有行标示,循环遍历明细行,再以选中明细行的check框值进行判断,只要不是等于当前明细行标示,check框都变成置灰。

有了唯一值,赋值主表中,轻而易举。

3、步骤

3.1 本次使用E9流程表单前端接口API介绍

具体《E9流程表单前端接口API》详情,请参考泛微官方文献本篇介绍需要用到的API。

3.1.1 明细字段值变化触发事件

绑定后对新添加的明细行字段以及加载的已有行明细字段,值变更触发绑定事件

bindDetailFieldChangeEvent: function(fieldMarkStr,funobj)

参数说明

参数 参数类型 必须 说明
fieldMarkStr String 绑定的明细字段标示,不能有下划线标示,可多个拼接逗号隔开,例如field110,field111
funobj Function 字段值变更触发自定义函数函数默认传递以下三个参数,参数1:字段标示(field27583),参数2:行标示,参数3:修改后的值

样例

jQuery(document).ready(function(){
    WfForm.bindDetailFieldChangeEvent("field27583,field27584",function(id,rowIndex,value){
        console.log("WfForm.bindDetailFieldChangeEvent--",id,rowIndex,value);
    });
});

3.1.2 获取单个字段值

getFieldValue: function(fieldMark)

参数说明

参数 参数类型 必须 说明
fieldMark String 字段标示,格式 field${字段ID}

样例

var fieldvalue = WfForm.getFieldValue("field110");

3.1.3 获取明细行所有行标示

getDetailAllRowIndexStrfunction(detailMark)

参数说明

参数 参数类型 必须 说明
detailMark String 明细表标示,明细1就是detail_1,以此递增类推

样例

console.log(WfForm.getDetailAllRowIndexStr("detail_2"));    //输出1,3...等等

特别注意:

//遍历明细行的写法

var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
for(var i=0; i<rowArr.length; i++){
    var rowIndex = rowArr[i];
    if(rowIndex !== ""){
        var fieldMark = "field111_"+rowIndex;    //遍历明细行字段
    }
}

3.1.4 系统样式的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.2 上代码准备:明细表check框字段加“id”值

说明:在明细表check框字段加上“id”值,是为了在添加移除check样式时,不会影响主表或明细表其他的check框。
在这里插入图片描述

3.3 上代码

WfForm.bindDetailFieldChangeEvent("field35274",function(id,rowIndex,value){
	//无限唯一  
    var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");//获取明细行所有行标示
    for(var i = 0; i < rowArr.length; i++){//遍历明细行
      if(i !== rowIndex &amp;&amp; value == 1){//当i不等于当前明细行标示,且明细行check框选中时,其他明细行check框置灰并清空选中样式
     	//“.ant-checkbox-disabled”为check框置灰样式
        //“.ant-checkbox-checked”、“.ant-checkbox-checked-1”这两个check框选样式
        $("#checkedYes span").addClass("ant-checkbox-disabled").removeClass("ant-checkbox-checked ant-checkbox-checked-1");
      }else{
        $("#checkedYes span").removeClass("ant-checkbox-disabled");
        WfForm.changeFieldValue("field34427", {value:""});
      };
    };
	//赋值主表
	var unitPrice = WfForm.getFieldValue("field35273_" + rowIndex);//获取当前选中明细行的“单价”字段值
    if(value == "1" &amp;&amp; unitPrice == ""){//当前明细行check框已选中时,当前明细行的“单价”字段值为空时,进行提醒并清空选中check框
      WfForm.showConfirm("请填写“单价”", function(){//确认事件
        WfForm.changeFieldValue("field35274_" + rowIndex, {value:""});//清空明细行选中的check框值
      },function(){//取消事件,不添加取消事件,当用户点击“取消”按钮时,会无事件触发效果
        WfForm.changeFieldValue("field35274_" + rowIndex, {value:""});//清空明细行选中的check框值
      });
    }else if(value == "1"){//明细行check框已选中时,将当前选中明细行“单价”字段值带到主表"单价”字段中
      $("#field30612").val(unitPrice);
    }else{//明细行check框取消选中时,主表"单价”字段清空值
      WfForm.changeFieldValue("field30612", {value:""});
    };
  });

4、总结

刚开始接手泛微OA_E9开发时,这个需求让我无从下手。听取一位朋友的建议,过一段时间回头去看,说不定就能想到办法。加上手头上有另外的项目,就搁置了。时隔两个月,回头再看时,没一会就找到了解决方法

感慨一下,思绪很重要!

哈哈,再会!

原文地址:https://blog.csdn.net/qq_43182317/article/details/127110934

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_27344.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注