实现效果:
1. 用户/业务需求
以付款业务为例,明细表中添加多条同一个供应商的付款计划进行付款审批,审批后接口传入其他系统进行付款。
2. 需求分析
审批完成后的接口仅支持接收一个账户相关的付款申请。
明细表中浏览计划申请记录,以第一个行明细数据作为基准,并记录已选择的数据进行供应商和已选择信息过滤。
3. 实现思路
1.js代码块控制第一行check框勾选禁用,获取第一行选择的数据ID和已添加明细行选择的数据ID;
2.建模浏览框无条件查询增加sql查询条件过滤;
3.当第一行数据删除或变化时删除已有数据。
4. 解决方案
1.新增主表字段:账号(field28168)、第一行数据ID(field28196)、明细表数据ID(field28195);
3.新增明细表一字段申请流程(field28182);
3.明细表属性设置:关闭允许复制、开启新增默认一行空的明细;
4.流程表单插入代码块:
<script>
//获取第一行供应商银行账号
jQuery(document).ready(function(){
WfForm.controlDetailRowDisableCheck("detail_1", "0", true);//禁用第一行删除
WfForm.bindDetailFieldChangeEvent("field28182",function(id,rowIndex,value){
//获取明细表第一行申请流程和主表第一行数据ID
var field28182_0 = WfForm.getFieldValue("field28182_0");
var field28196 = WfForm.getFieldValue("field28196");
if(field28182_0!=field28196){
WfForm.changeFieldValue("field28196", {value:field28182_0})
}
});
WfForm.bindFieldChangeEvent("field28168", function(obj,id,value){
//获取明细表一除了第一行得行标
var dt1AllRowIndexStr = WfForm.getDetailAllRowIndexStr("detail_1");
var parts = dt1AllRowIndexStr.split(','); // 分割成数组
parts.shift(); // 移除数组的第一个元素
var dt1delRowIndexStr = parts.join(','); // 再将数组合并成字符串
WfForm.delDetailRow("detail_1",dt1delRowIndexStr);
});
});
</script>
5.建模浏览框列表无条件查询增加条件查询:
SELECT id, lcbh, lcbh FROM uf_hkjhjfk_fw WHERE (zh = IFNULL('$zh$', '') OR ('$zh$' = '' OR '$zh$' IS NULL)) AND ( ('$mxbsjid$' != '' AND '$mxbsjid$' IS NOT NULL AND id NOT IN ($mxbsjid$)) OR ('$mxbsjid$' = '' OR '$mxbsjid$' IS NULL) )
总结:
重点在于系统功能和js代码块结合使用;
如果流程表单涉及多个明细根据主表不同字段显示需要动态获取对应明细行第一行的下表实现控制check框勾选禁用,如下所属:
// 找出最小值
var rId=WfForm.getDetailAllRowIndexStr("detail_1");
var numbers = rId.split(",").filter(Boolean).map(Number);
var minValue = Math.min(...numbers);
标签:第一行,明细,明细表,框内,WfForm,var,check,field28182
From: https://blog.csdn.net/qq_52618133/article/details/140398744