EasyUI动态生成菜单

匿名 (未验证) 提交于 2019-12-02 23:34:01

  业务需求:不同角色有不同的权限,我们根据角色加载页面时展示不同的菜单。在easyUI中,菜单一般采用手风琴accordion组件进行展示,一级菜单下可以加载二级菜单,效果如下:

  普通用户看到的菜:

  管理员看到的菜单:

  点击二级菜单后将在右边添加一个tab页,支持多个tab页同时展示:

  接下来看实现:

  html我们把各种角色都需要展示的菜单列出来,比如:订单查询跟发票生成

<div data-options="region:'west',title:'菜单',split:true,iconCls:'icon-table'" style="width:180px;">     <div id="menus" class="easyui-accordion" data-options="fit:true,border:false,selected:false">         <div data-options="title:'订单查询',iconCls:'icon-page'" style="padding:8px;">             <ul class="easyui-tree" data-options="onBeforeSelect:function(node){return false;}">                 <li><a onclick="tab_add('订单查询','/orders.html')">订单查询</a></li>             </ul>         </div>         <div data-options="title:'发票生成',iconCls:'icon-page'" style="padding:8px;">             <ul class="easyui-tree" data-options="onBeforeSelect:function(node){return false;}">                 <li><a onclick="tab_add('发票生成','/invoice.html')">发票生成</a></li>             </ul>         </div>     </div> </div> <div data-options="region:'center',border:false">     <div class="easyui-tabs" fit="true" id="tt">     </div>     <div id="menu" class="easyui-menu">         <div data-options="iconCls:'icon-reload'" onclick="tab_refresh()">Refresh</div>         <div data-options="iconCls:'icon-cancel'" onclick="tab_close()">Close</div>     </div> </div>

  在js中动态根据权限添加菜单,生成tab页,支持右键刷新和关闭:

    // 菜单选中后添加tab     function tab_add(title, url) {         if ($('#tt').tabs('exists', title)) {             $('#tt').tabs('select', title)         } else {             var content = '<iframe scrolling="auto" frameborder="0" src="' + url + '" style="width:100%;height:100%;"></iframe>';             $('#tt').tabs('add', {                 title: title,                 content: content,                 closable: true             });         }     }      // 右键刷新     function tab_refresh() {         var content = $('#tt').tabs('getTab', menuOfTab).panel('options').content;         $('#tt').tabs('getTab', menuOfTab).panel({             content: content         });     }      // 右键关闭     function tab_close() {         $('#tt').tabs('close', menuOfTab);     }       // 当角色不同时,创建不同的菜单    function createMenu(roleValue) {         var content = "<ul id='Flow' style='padding:8px;'>";         content += "<li><a onclick=\"tab_add('评测查询','flows.html')\">评测查询</a></li>";         if (roleValue == '1') {             content += "<li><a onclick=\"tab_add('评测登记','register.html')\">评测登记</a></li>";             content += "<li><a onclick=\"tab_add('评测退款','refund.html')\">评测退款</a></li>";         } else if (roleValue == '2') {             content += "<li><a onclick=\"tab_add('评测审批','approve.html')\">评测审批</a></li>";         } else if (roleValue == '3') {             content += "<li><a onclick=\"tab_add('评测退款','refund.html')\">评测退款</a></li>";         }         content += "</ul>";         $('#menus').accordion('add', {             title: '评测管理',             content: content,             iconCls: 'icon-page',             selected: false         });         $('#Flow').tree({             onBeforeSelect: function (node) {                 return false;             }         });          // 当角色为admin时,添加merchant和user菜单         if (roleValue == '4') {             var content = "<ul id='Merchant' style='padding:8px;'>";             content += "<li><a onclick=\"tab_add('账户管理','merchant.html')\">账户管理</a></li></ul>";             $('#menus').accordion('add', {                 title: '账户管理',                 content: content,                 iconCls: 'icon-page',                 selected: false             });             $('#Merchant').tree({                 onBeforeSelect: function (node) {                     return false;                 }             });              content = "<ul id='User' style='padding:8px;'>";             content += "<li><a onclick=\"tab_add('用户管理','user.html')\">用户管理</a></li></ul>";             $('#menus').accordion('add', {                 title: '登陆用户管理',                 content: content,                 iconCls: 'icon-page',                 selected: false             });             $('#User').tree({                 onBeforeSelect: function (node) {                     return false;                 }             });              content = "<ul id='SKU' style='padding:8px;'>";             content += "<li><a onclick=\"tab_add('产品SKU配置','sku.html')\">产品SKU配置</a></li></ul>";             $('#menus').accordion('add', {                 title: '产品SKU中文配置',                 content: content,                 iconCls: 'icon-page',                 selected: false             });             $('#SKU').tree({                 onBeforeSelect: function (node) {                     return false;                 }             });              content = "<ul id='task' style='padding:8px;'>";             content += "<li><a onclick=\"tab_add('定时任务配置','task.html')\">定时任务执行时间配置</a></li></ul>";             $('#menus').accordion('add', {                 title: '定时任务配置',                 content: content,                 iconCls: 'icon-page',                 selected: false             });             $('#task').tree({                 onBeforeSelect: function (node) {                     return false;                 }             });         }     }

  上面的roleValue是在登陆时调用后台接口获取到的,可以参见。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!