本文介绍了在移动列表界面中,根据单据的到期时间显示提醒控件的实现方法。由于移动列表不支持直接使用时间函数,采取了插件赋值结合界面规则的方式来实现。通过构建页面,添加插件代码来比较到期时间与当前时间,并根据比较结果设置到期标识。最后,通过配置界面规则,在到期标识为Y时显示红色加粗的“已过期”控件,否则隐藏控件。开发环境为COSMICV4.0.003.0,并提供了参考资料和附件。
关键词:界面规则,移动列表
一、需求
在移动列表里面,根据单据中的到期时间来判断,如果到期时间大于当前时间,则显示红色加粗的”已过期”控件来提醒当前人员.如果到期时间小于当前时间,则不显示提醒控件.
二、思路与方案
这是比较典型的界面规则实现的案例, 但是我们在实际操作过程中却发现移动列表不支持时间函数,所以没办法直接使用,这里我们可以使用插件赋值+界面规则的方式共同来实现这个功能.
三、实现过程
1 准备工作: 首先我们来构建页面.
表单页面简单的加一个到期时间就可以了.
在移动列表页面:把到期时间加上,并添加一个红色的标签.
构建完页面下面就是实现方案了.
2 首先第一步,我们在表单页面添加一个文本字段,并设置为不可见,这个字段不承载业务涵义的字段,只是为了移动列表中的界面规则生效而添加的,并且也要在移动列表添加.
3 在移动列表添加插件,编写插件代码.
这里插件方法的意义就是当到期时间大于当前时间时,则把到期的标识设为Y.
import java.util.Date; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.form.events.BeforeCreateListDataProviderArgs; import kd.bos.list.plugin.AbstractMobListPlugin; import kd.bos.mvc.list.ListDataProvider; public class TestMobListPlugin1 extends AbstractMobListPlugin{ /** * (通用)获取数据 - 数据重新组装 */ @Override public void beforeCreateListDataProvider(BeforeCreateListDataProviderArgs args) { super.beforeCreateListDataProvider(args); args.setListDataProvider(new ListDataProvider() { @Override public DynamicObjectCollection getData(int arg0, int arg1) { // 获取列表数据 DynamicObjectCollection collection = super.getData(arg0, arg1); // 设置 自定义列 数据 String pkIdStr = null; for (DynamicObject dynObj : collection) { Date datetime=(Date) dynObj.get("kded_expiretime"); if(datetime!=null) { Long dateLongtime=datetime.getTime(); Long nowTime=new Date().getTime(); if(dateLongtime<nowTime) { dynObj.set("kded_expireflag", "Y"); } } } return collection; } }); } }
4 配置界面规则:
通过配置界面规则: 主要逻辑就是 当到期标识为Y时显示控件,其他情况下隐藏控件.
四、效果图
如下图所示的,我们就实现了当到期时间大于当前时间,则显示红色加粗的”已过期”控件,没有的话就不显示
五、开发环境版本
COSMICV4.0.003.0
六、参考资料
七、附件
kded_testmoblist (2).zip(9.74KB)
推荐阅读