如何扩展消息中心中的通知列表,使其超链接到单据上原创
金蝶云社区-范老师加油
范老师加油
1人赞赏了该文章 1,556次浏览 未经作者许可,禁止转载编辑于2022年12月28日 10:09:16
summary-icon摘要由AI智能服务提供

本文介绍了在消息中心列表中添加超链接以快速跳转到单据详情页的需求、实现思路、具体步骤及代码示例。首先,概述了原有消息列表查找单据内容的繁琐性,提出了增加超链接列的需求。接着,详细说明了通过扩展消息中心页面、注册插件等步骤实现该需求的过程,并提供了两种超链接实现方式的代码示例。最后,提到了开发环境版本和参考资料。

关键词:消息中心,超链接,列表扩展


一、需求

         消息中心中的通知列表,经常有单据的业务消息发送过来,而原有的都是需要展开点开详情之后才能找到对应的单据内容,而且有些模板没有配置跳转链接的话,需要手动搜索,比较麻烦。

        需求是在列表上增加一列,使其可以通过链接快速跳转到单据详情页。

image.png

二、思路与方案

     这个需求也是一个列表超链接的典型案例,只要我们在列表超链接跳转做二开就可以了

三、实现过程


1   构造测试消息

首先我们发送一个测试消息,发送消息可以看下整个案例:

如何实现在代码发送消息时使用消息模板


这里需要说明一点:发送消息时需要把单据实体编码,和单据的pkid发送过来,否则跳转的话就会找不到对象。


2    扩展消息中心


第二步我们就要扩展wf_msg_message页面,在列表页面添加业务单据ID字段,并把超链勾上。

image.png


3  注册插件

在列表上注册插件,附上插件代码:

public class MessageListLinkPlugin extends AbstractListPlugin {

	
	 @Override
	    public void billListHyperLinkClick(HyperLinkClickArgs args) {
	         
	        if ("bizdataid".equals(args.getFieldName()) && args.getHyperLinkClickEvent() instanceof BillListHyperLinkClickEvent) {
	                // 原来的超链接点击之后会打开单据详情,把它取消,开发者自己做打开逻辑
	                args.setCancel(true);

	                BillListHyperLinkClickEvent evt = (BillListHyperLinkClickEvent)args.getHyperLinkClickEvent();
	  	      
		        ListSelectedRow currentRow = evt.getCurrentRow();
		        Long msgId=(Long) currentRow.getPrimaryKeyValue();
		        DynamicObject object=BusinessDataServiceHelper.loadSingle(msgId, "wf_msg_message");
		        
		        BillShowParameter parameter= new BillShowParameter();
		        parameter.getOpenStyle().setShowType(ShowType.Modal);
		        parameter.setFormId((String) object.get("entitynumber"));
		        parameter.setPkId( object.get("bizdataid"));
		        this.getView().showForm(parameter);
	        }

	    }

}

这里也说下关于超链接有两种实现方式:

一种是上面的这种,另外一种就是通过监听器来实现的,下面的这种

这两种的区别是,上面的可以取消后续系统自带的跳转,

而下面的则不能取消,(会跳转两次,一次跳转到消息中心的页面,一次是我们想要的单据页面)


public class MessageListLinkPlugin extends AbstractListPlugin implements  HyperLinkClickListener{
	@Override
	public void registerListener(EventObject e) {
	    super.registerListener(e);
	    BillList billList = getControl("billlistap");
	    billList.addHyperClickListener(this);
	}
	
	 
	@Override
	public void hyperLinkClick(HyperLinkClickEvent args) {
		
	    if(args instanceof BillListHyperLinkClickEvent) {

	        BillListHyperLinkClickEvent evt = (BillListHyperLinkClickEvent)args;
	      
	        ListSelectedRow currentRow = evt.getCurrentRow();
	        Long msgId=(Long) currentRow.getPrimaryKeyValue();
	        DynamicObject object=BusinessDataServiceHelper.loadSingle(msgId, "wf_msg_message");
	        //获取单据体点击行,数据
	        Object source = args.getSource();
	        
	        BillShowParameter parameter= new BillShowParameter();
	        parameter.getOpenStyle().setShowType(ShowType.Modal);
	        parameter.setFormId((String) object.get("entitynumber"));
	        parameter.setPkId( object.get("bizdataid"));
	        this.getView().showForm(parameter);
	    }
	}
}


四、效果图


点击前:


image.png


点击后:


image.png




五、开发环境版本

COSMICV5.0.003.0

六、参考资料

【开发平台】指导手册

学习成长中心


图标赞 1
1人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!