运用背景:泛微OA在设置流程时,流程条件通过表单字段设置条件时发现无法使用明细字段信息,无法直接设置,只能选择主表字段信息。
运用思路:把明细字段转换为主表可选择字段,可以是下拉框,文本 、数字等。本次采用转换为下拉框是否的方式解决。案例如下:
1、业务部门需求:在费用报销时,希望通过明细表的费用项目来设置不同的审批人,选择培训费时,单独增加审批人
2、修改思路:在主表中增加字段,下拉为是和否,通过这个字段判断是否有培训费,费用项目也为下拉选择框
3、填写时,通过js代码轮询明细字段有培训费时,增加的是否包含培训费字段设置为是
js代码如下:
备注:字段field8816为明细表费用项目字段名称,field22637为是否包含培训费字段名称,培训费下拉枚举值为30, detail_1表示明细表1,如果是明细表2则为detail_2
使用的方法为bindDetailFieldChangeEvent绑定费用项目变更时轮询明细表所有行,防止第一次选择错误后变更的情况导致判断错误
测试时可以通过alert方法打印相关字段值信息到浏览器查看
<script>
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent("field8816",function(id,rowIndex,value){
WfForm.changeFieldValue("field22637", {
value: 1,
});
var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
for(var i=0; i<rowArr.length; i++){
var rowIndex = rowArr[i];
if(rowIndex !== ""){
var fieldMark = "field8816_"+rowIndex; //遍历明细行字段
var fieldValue = WfForm.getFieldValue(fieldMark);
if(fieldValue==30){
WfForm.changeFieldValue("field22637", {
value: 0,
});
}
}
}
});
});
</script>
4、通过以上转换后就可以获取到明细表中字段进行正确判断了,设置流程条件选择如下:
总结:通过以上方法可以解决大部分流程设置条件需求,OA开发运用中大多数情况一般解决通过以下几种方式:
(1)可以直接根据表单主表字段判断,直接使用
(2)明细表字段较少的情况通过转换成主表字段解决
(3)复杂逻辑多字段条件的,可以考虑数据建模后通过关联字段方式带出结果进行判断
综合以上三种可以结合使用。
(4)扩展:致远OA系统对于明细表在流程设置中控制是可以直接选择对应明细行字段进行条件判断,比如费用项目枚举,可以直接选择字段选择对应枚举是否包含培训费进行设置,致远OA也提供获取明细行数据进行计算的一些通用方法,泛微OA则需要自身开发实现(备注:由于本地没有按照致远OA暂时没有界面,后期有机会安装补充)
(5)题外:对于并列审批设置,泛微OA中需要单独设置合并开始节点和合并结束节点的方式来实现,无法直接通过流程图中设置并排的方式直接进行判断,导致如果发起就是并列审批的时候无法直接实现,需要增加额外合并开始节点、结束节点。致远OA直接根据流程图中是否并列的方式直接实现。