关键词:界面规则,移动列表
一、需求
在移动列表里面,根据单据中的到期时间来判断,如果到期时间大于当前时间,则显示红色加粗的”已过期”控件来提醒当前人员.如果到期时间小于当前时间,则不显示提醒控件.
二、思路与方案
这是比较典型的界面规则实现的案例, 但是我们在实际操作过程中却发现移动列表不支持时间函数,所以没办法直接使用,这里我们可以使用插件赋值+界面规则的方式共同来实现这个功能.
三、实现过程
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)
推荐阅读
如何在移动端展示消息列表
关键词:移动列表 一、需求 移动端展示消息列表 二、思路与方案 找到消息实体,对其进行移动布局,再维护移动列表页面即可 三、实现过程 消息实体为wf_msg_m …
- 文章
2,872
如何实现移动列表自定义筛选—以页签展示为例
关键词: 页面开发,移动列表 一、需求 [图片] 图 1 这(图 1 )是标准产品移动列表过滤条件的实现样式,我不想要,想要改成图 2 这样一排页签展示,要怎么 …
- 文章
3,306
如何在移动端展示树形基础资料列表界面
问题描述 如何在移动端展示树形基础资料列表界面? 解决方案 请参阅案例:[链接]如何在移动端实现树形列表结构
- 知识
1,780