如何自定义帮助界面的内容原创
17人赞赏了该文章
2,117次浏览
编辑于2022年05月05日 17:45:45
关键词:
页面开发 单据 动态表单
一、需求
在苍穹标准产品业务云应用中,我们会发现右上角的“ ?”,点击始会弹出本页面帮助展示当前业务云产应用的一些产品知识。
图 1
而在我们自行开发的业务云及应用中,只会弹出本页面帮助,但是没有内容。
图 2
二、思路与方案
2.1 分析思路
要进行扩展,我们得要知道这个功能是从哪来的,以及标准产品是如何实现的。
我们可以看到这个是在应用首页的功能,首先F12调试下,可以发现响应了一个showHotQuestion的指令
图 3
阅读首页插件,可以在kd.bos.portal.plugin.BizAppHomePlugin中找到调用的位置
图 4
2.2 实现方案
通过调试标准插件代码,发现标准插件在这段逻辑中去查询了金蝶云社区的知识及课程,并展示到了前端,由于自定义开发的应用在社区是没有对应模块的。
那我们只需要对kd.bos.portal.plugin.BizAppHomePlugin进行干涉,覆盖掉其查询社区的逻辑,自己构造指令,将自定义的内容反馈到前端。
三、实现过程
@Override public void click(EventObject evt) { // TODO Auto-generated method stub super.click(evt); ClickEvent clickEvent = (ClickEvent)evt; Map<String, Object> paramsMap = clickEvent.getParamsMap(); Control c = (Control)evt.getSource(); String clickKey = c.getKey(); if (("_submaintab_".equals(clickKey)) && (null != paramsMap) && (paramsMap.get("controlKey").equals("pageHelp"))) { IClientViewProxy proxy = (IClientViewProxy)getView().getService(IClientViewProxy.class); Map<String, Object> o = new HashMap<String, Object>(); Map<String, Object> result = new HashMap<String, Object>(); List<Map<String, Object>> infotList = new ArrayList<Map<String, Object>>(); Map<String, Object> ainfo = new HashMap<String, Object>(); ainfo.put("typeName", "问答"); ainfo.put("type", "Question"); ainfo.put("title", "这是个自定义的帮助文档"); ainfo.put("url", "https://vip.kingdee.com/"); infotList.add(ainfo); result.put("list",infotList); o.put("pageId", getView().getPageId()); o.put("data", result); proxy.addAction("showHotQuestion", o); }
四、效果图
图5
五、开发环境版本
COSMICV4.0.014.0
六、参考资料
赞 17
17人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读