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 获取明细行所有行标示
getDetailAllRowIndexStr: function(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 && 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" && 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进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。