应用菜单,根据条件打开不同的页面原创
金蝶云社区-技术支持与赋能部_ZH
技术支持与赋能部_ZH
4人赞赏了该文章 922次浏览 未经作者许可,禁止转载编辑于2023年05月10日 14:44:00

关键词:应用菜单

一、需求

应用菜单平台可以配置打开的页面,但是项目中往往需要比如根据组织或不同的人员来打开不同的页面,这种复杂情况通过配置菜单项没办法配置出来。

二、思路与方案

2.1分析思路

每个应用都有自己的首页,在开发平台中找到这个首页,需要配置左侧树节点的监听事件,按需打开不同的页面

2.2实现方案

菜单原始配置的界面也需要设置取消弹框,否则会同时打开两个页面

三、实现过程

1、为模拟案例,新建两个单据:源菜单单据,目标单

源菜单单据,没有实际业务意义的单据,只是为了保证有一个菜单项

2、配置菜单

image.png

3、应用首页添加插件

image.png

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);
}

四、效果图

image.png

image.png

五、开发环境版本

V5.0.011

六、注意事项

1、源单必须要要添加取消打开方法,否则会同时打开两个页面

七、参考资料

开发平台

学习成长中心

八、源代码



源码.zip(8.71KB)

赞 4