本文介绍了在单据开发中,如何通过插件实现组织和项目基础资料字段的联动过滤。首先设置这两个字段为常用过滤条件,然后通过创建插件并编写特定方法,根据选择的组织过滤对应的项目,实现数据的有效过滤,最终部署插件并查看效果。
在单据开发的时候,列表过滤经常需要增加多个常用条件,有些过滤条件本身也有关联关系,但是列表没有做联动过滤,导致我们在进行数据过滤时可能会做一些无用功。例如:某张单据包含组织和项目两个基础资料字段,两个字段同时增加在常用过滤条件上,如下图所示
项目基础资料本身与组织存在关联关系,如果我们想要根据组织字段对项目字段的过滤条件进行过滤该如何实现,今天就给大家介绍一下。
首先创建一张单据,增加组织(edge_orgfield)、项目基础资料(edge_basedatafield)字段
创建完成后把组织以及项目设置为常用过滤条件并新增几条数据
接下来就是用插件让两个基础资料联动起来。先创建一个列表插件,增加一个FilterContainerInitArgs属性,重写filterContainerInit、filterContainerSearchClick两个方法。
先从filterContainerSearchClick分析,从参数args中先拿到所有的常用条件过滤列表,从自定义过滤条件中拿到是否选择了组织,如果选择了组织过滤,并且组织的值不为空,就把这个组织的值放入到缓存中。如果组织的值为空,就把缓存中组织清空。然后调用初始化方法初始化过滤条件列表
接着分析filterContainerInit方法,第一步就是把参数args给initArgs方法赋值方便filterContainerSearchClick方法调用filterContainerInit方法时传参。然后获取所有的常用条件,遍历常用过滤条件,如果过滤条件为项目时,判断缓存中是否有组织的id,如果有组织信息,那么根据组织信息,查询该组织下所有的项目基础资料,并给项目过滤条件赋值。赋值之后,列表的过滤条件为最新的过滤条件。
完成之后,部署插件就可以了,看效果