业务需求:不同角色有不同的权限,我们根据角色加载页面时展示不同的菜单。在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是在登陆时调用后台接口获取到的,可以参见EasyUI动态展示用户信息

EasyUI动态生成菜单的更多相关文章

  1. easyui动态生成双列头

    实习时老大交给任务,让我做这样一个效果,选择日期并点击查询时,动态生成列头,下一列要求对应日期的星期. 效果图: 下面贴出查询的单击函数: //查询按钮 function queryByDate(){ ...

  2. Devexpress Ribbon 动态生成菜单

    /// <summary> /// 动态加载菜单 /// </summary> private void GetMenuBind() { //根据登录用户角色菜单动态创建 // ...

  3. EasyUI 动态生成列加分页

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...

  4. easyui动态生成列

    需求:一个id对应多个key value 将id作为标识列 key值作为表头 value作为值显示.数据表可分为两张表 param数据表: 下表一个id对应上表多个key及value 如下图 id_p ...

  5. Asp.Net Core MVC在View中,根据用户权限动态生成菜单

    1. 用户登录时,将用户的权限写入Cookie: //将需要的信息写入claims后 var identity = new ClaimsIdentity(claims, IdentityConstan ...

  6. Jquery EasyUI动态生成Tab

    function addTab(title, url) { if ($('#tt').tabs('exists', title)) { $('#tt').tabs('select', title); ...

  7. 巨蟒django之权限7:动态生成一级&&二级菜单

    内容回顾: . 权限的控制 . 表结构设计 存权限的信息 用户表 - name 用户名 - pwd 密码 - roles 多对多 角色表 - name - permissions 多对多 权限表 - ...

  8. python 全栈开发,Day109(客户管理之动态"二级"菜单)

    昨日内容回顾 1. 权限有几张表? 2. 简述权限流程? 3. 为什么要把权限放入session? 4. 静态文件和模块文件 5. 相关技术点 - orm查询 - 去空 - 去重 - 中间件 - in ...

  9. PHP+Mysql+easyui点击左侧tree菜单对应表名右侧动态生成datagrid加载表单数据(二)

    关于tree菜单生成,参考我的另一篇博文地址tree 菜单 实现功能:点击左侧tree菜单中的table,右侧通过datagrid加载出该表对用的所有数据 难点:获取该表的所有列名,动态生成datag ...

随机推荐

  1. 【转】oracle的 分表 详解 -----表分区

    转载:https://www.cnblogs.com/congcidaishangjiamianju/p/8045804.html 一 表空间及分区表的概念 表空间: 是一个或多个数据文件的集合,所有 ...

  2. Java原子类--AtomicLongArray

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/3514604.html AtomicLongArray介绍和函数列表 在"Java多线程系列-- ...

  3. GIL 信号量 event事件 线程queue

    GIL全局解释器锁 官方解释: In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple n ...

  4. sqlserver 删除表数据

    可以使用delete清空表delete from t表名 也可以使用truncate命令 truncate table 表名

  5. js的使用及语法

    通常,通过 JavaScript,您需要操作 HTML 元素. 1.通过 id 找到 HTML 元素 2.通过标签名找到 HTML 元素 3.通过类名找到 HTML 元素 提示:通过类名查找 HTML ...

  6. Python-sokect 示例

    server: #coding=utf-8 import socket _sokect =socket.socket() #创建sokect _host =socket.gethostname() # ...

  7. sql server 综合使用的例子

    exec sp_helptext prosampleoldstyle_usp -- ============================================= -- ========= ...

  8. P3802 小魔女帕琪 期望

    P3802 小魔女帕琪 期望 题面 题意稍微不清楚,题中的a[i]指的是属性i的魔法有a[i]个. 题目大意:有7种魔法,每种数量a[i],每次随机放出一个魔法,问放完为止出现7次魔法都不相同的期望次 ...

  9. TensorFlow(十四):谷歌图像识别网络inception-v3下载与查看结构

    上代码: import tensorflow as tf import os import tarfile import requests #inception模型下载地址 inception_pre ...

  10. 爬虫(十三):scrapy中pipeline的用法

    当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为, ...