应用菜单,根据条件打开不同的页面原创
4人赞赏了该文章
1,042次浏览
编辑于2023年05月10日 14:44:00
关键词:应用菜单
一、需求
应用菜单平台可以配置打开的页面,但是项目中往往需要比如根据组织或不同的人员来打开不同的页面,这种复杂情况通过配置菜单项没办法配置出来。
二、思路与方案
2.1分析思路
每个应用都有自己的首页,在开发平台中找到这个首页,需要配置左侧树节点的监听事件,按需打开不同的页面
2.2实现方案
菜单原始配置的界面也需要设置取消弹框,否则会同时打开两个页面
三、实现过程
1、为模拟案例,新建两个单据:源菜单单据,目标单
源菜单单据,没有实际业务意义的单据,只是为了保证有一个菜单项
2、配置菜单
3、应用首页添加插件
4、首页插件实现TreeMenuClickListener接口,在treeMenuClick事件中实现打开其他页面的逻辑
public class TreenodesPlugin extends AbstractFormPlugin implements TreeMenuClickListener { @Override public void registerListener(EventObject e) { super.registerListener(e); //监听左侧菜单栏 TreeMenu tree = this.getView().getControl("navigationbar"); tree.addTreeMenuClickListener(this); } @Override public void treeMenuClick(TreeNodeEvent treeNodeEvent) { //获取点击得当前菜单得源页面编码 String nodeId = (String) treeNodeEvent.getNodeId(); AppMenuInfo appMenuInfo = AppMetadataCache.getAppMenuInfo("lago_testapp", nodeId); if(appMenuInfo!=null && appMenuInfo.getFormId().equals("lago_demo1")){ //直接打开新页面 BillShowParameter shower=new BillShowParameter(); shower.setFormId("lago_demo2"); shower.getOpenStyle().setShowType(ShowType.MainNewTabPage); this.getView().showForm(shower); } } @Override public void treeMenuDoubleClick(TreeNodeEvent treeNodeEvent) { } }
5、在源菜单单据页面添加插件,取消页面的打开
@Override public void preOpenForm(PreOpenFormEventArgs e) { super.preOpenForm(e); e.setCancel(true); }
四、效果图
五、开发环境版本
V5.0.011
六、注意事项
1、源单必须要要添加取消打开方法,否则会同时打开两个页面
七、参考资料
八、源代码
源码.zip(8.71KB)
推荐阅读