zhey 发表于 2017-3-24 16:42:28

多级菜单

本帖最后由 zhey 于 2017-3-24 17:15 编辑

修改ListtoMenu类,替换getACESubMenu、getHplusSubMenu和getLeafOfHplusTree三个函数:private static String getACESubMenu(TSFunction parent,int level,Map<Integer, List<TSFunction>> map){
                StringBuffer menuString = new StringBuffer();
                List<TSFunction> list = map.get(level);
                for (TSFunction function : list) {
                        if (function.getTSFunction().getId().equals(parent.getId())){
                                if(!function.hasSubFunction(map)){
                                        menuString.append(getLeafOfACETree(function,map));
                                }else {
                                        /* 20160830 wangkun TASK #1330 【改造】ace首页风格,菜单不支持三级菜单,改造支持三级*/
                                        menuString.append("<li>");
                                        if(function.getFunctionIconStyle()!=null&&!function.getFunctionIconStyle().trim().equals("")){
                                                menuString.append("<a href=\"#\" class=\"dropdown-toggle\" ><i class=\""+function.getFunctionIconStyle()+"\"></i>");
                                        }else{
                                                menuString.append("<a href=\"#\" class=\"dropdown-toggle\" ><i class=\""+SysACEIconEnum.toEnum(function.getTSIcon().getIconClas()).getThemes()+"\"></i>");
                                        }
                                        menuString.append("<span class=\"menu-text\">");
                                        menuString.append(getMutiLang(function.getFunctionName()));
                                        menuString.append("</span>");
                                        menuString.append("<b class=\"arrow icon-angle-down\"></b></a><ulclass=\"submenu\" >");
                                        menuString.append(getACESubMenu(function,level+1,map));
                                        menuString.append("</ul></li>");
                                        /* 20160830 wangkun TASK #1330 【改造】ace首页风格,菜单不支持三级菜单,改造支持三级*/
                                }
                        }
                }
                return menuString.toString();
        }
private static String getHplusSubMenu(TSFunction parent, int level, Map<Integer, List<TSFunction>> map) {
                StringBuffer menuString = new StringBuffer();
                String icon = "folder";

                List<TSFunction> list = map.get(level);
                for (TSFunction function : list) {
                        if (function.getTSFunction().getId().equals(parent.getId())){
                                if(function.hasSubFunction(map)){
                                        if (function.getTSIcon() != null) {
                                                icon = ResourceUtil.allTSIcons.get(function.getTSIcon().getId()).getIconClas();
                                        }
                                        String name = getMutiLang(function.getFunctionName()) ;
                                        menuString.append("<li> <a class=\"J_menuItem\" href=\"").append(function.getFunctionUrl()).append("\">");
                                        if(function.getFunctionIconStyle()!=null&&!function.getFunctionIconStyle().trim().equals("")){
                                                menuString.append("<i class=\"fa "+function.getFunctionIconStyle()+"\"></i>");
                                        }else{
                                                menuString.append("<i class=\"fa fa-columns\"></i>");
                                        }
                                        menuString.append("<span class=\"menu-text\">");
                                        menuString.append(name);
                                        menuString.append("</span>");
                                        menuString.append("<span class=\"fa arrow\">");
                                        menuString.append("</span>");
                                        menuString.append("</a>");
                                        menuString.append("<ul class=\"nav nav-third-level\" >");
                                        menuString.append(getHplusSubMenu(function,level+1,map));
                                        menuString.append("</ul></li>");
                                }else{
                                        menuString.append(getLeafOfHplusTree(function,map));
                                }
                        }
                }
                return menuString.toString();
        }

        private static String getLeafOfHplusTree(TSFunction function,Map<Integer, List<TSFunction>> map) {
                StringBuffer menuString = new StringBuffer();
                String icon = "folder";
                if (function.getTSIcon() != null) {
                        icon = ResourceUtil.allTSIcons.get(function.getTSIcon().getId()).getIconClas();
                }
                //addTabs({id:'home',title:'首页',close: false,url: 'loginController.do?home'});
                String name = getMutiLang(function.getFunctionName()) ;
                menuString.append("<li> <a class=\"J_menuItem\" href=\"").append(function.getFunctionUrl()).append("\">");
                        if(function.getFunctionIconStyle()!=null&&!function.getFunctionIconStyle().trim().equals("")){
                                menuString.append("<i class=\"fa "+function.getFunctionIconStyle()+"\"></i>");
                        }
                        menuString.append("<span class=\"menu-text\">");
                        menuString.append(name);
                        menuString.append("</span>");
                        menuString.append("</a>");
                        menuString.append("</li>");

                return menuString.toString();
        }

风一样的吹 发表于 2017-4-6 10:45:34

你TSFunction这个实体映射类不改吗,你上边的函数方法好多映射类都没有还要添加的吧

zhey 发表于 2017-4-7 14:25:07

风一样的吹 发表于 2017-4-6 10:45 static/image/common/back.gif
你TSFunction这个实体映射类不改吗,你上边的函数方法好多映射类都没有还要添加的吧 ...

在3.6.6中TSFunction已经支持多级菜单,菜单的级数只涉及前端代码的拼接,我只是把生成页面的部分做了一些更改,其他的没有变动。

风一样的吹 发表于 2017-4-7 15:36:57

zhey 发表于 2017-4-7 14:25 static/image/common/back.gif
在3.6.6中TSFunction已经支持多级菜单,菜单的级数只涉及前端代码的拼接,我只是把生成页面的部分做了一 ...

3.6.6才支持啊,不好意思,我用的365的,看了半天总觉得不对劲,哈哈

zhey 发表于 2017-4-7 16:26:58

风一样的吹 发表于 2017-4-7 15:36 static/image/common/back.gif
3.6.6才支持啊,不好意思,我用的365的,看了半天总觉得不对劲,哈哈

3.6.6中添加菜单的页面做了修改,可以和3.6.5作一下比较
页: [1]
查看完整版本: 多级菜单