首页 > 分享 > 后台框架

后台框架

后台框架--AdminLTE-2.3.0(系统菜单从后端动态加载)源码下载链接(https://download.csdn.net/download/hgq0916/11117488)

从网上找一个不错的后台框架,先来张截图:

只可惜这个框架的菜单是写死的,如果想要从后端动态加载系统菜单的话,还需要进行一番改造,今天花了半天时间对它进行改造,终于成功了,目前改造的框架可以从后端动态加载,后端只需要提供菜单列表的json数据即可。

下面是改造后的系统菜单效果:

下面是后端的json数据:

[

{

"id":1,

"name":"一级菜单1",

"url":"/AdminLTE-2.3.0/pages/examples/lockscreen.html"

},

{

"id":2,

"name":"一级菜单2",

"url":null,

"children":[

{

"id":3,

"name":"二级菜单1",

"url":"http://www.jd.com"

},

{

"id":4,

"name":"二级菜单2",

"url":"http://www.taobao.com"

}

]

},

{

"id":5,

"name":"一级菜单3",

"url":"http://www.baidu.com",

"icon":"dist/img/icon/chart.png",

"label":{

"name":"new",

"bgColor":"#5a3cbc"

}

},

{

"id":6,

"name":"一级菜单4",

"url":null,

"label":{

"name":"4",

"bgColor":"#f6153f"

},

"icon":"dist/img/icon/message.png",

"children":[

{

"id":7,

"name":"二级菜单1",

"url":"http://www.jd.com",

"children":[

{

"id":9,

"name":"三级菜单1",

"url":"http://www.jd.com"

},

{

"id":10,

"name":"三级菜单2",

"url":"http://www.taobao.com"

}

]

},

{

"id":8,

"name":"二级菜单2",

"url":"http://www.taobao.com"

}

]

}

]

下面是实现代码:

index.html页面代码:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<title>AdminLTE 2 | Dashboard</title>

<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">

<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">

<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">

<link rel="stylesheet" href="dist/css/AdminLTE.min.css">

<link rel="stylesheet" href="dist/css/skins/_all-skins.min.css">

<link rel="stylesheet" href="plugins/iCheck/flat/blue.css">

<link rel="stylesheet" href="plugins/morris/morris.css">

<link rel="stylesheet" href="plugins/jvectormap/jquery-jvectormap-1.2.2.css">

<link rel="stylesheet" href="plugins/datepicker/datepicker3.css">

<link rel="stylesheet" href="plugins/daterangepicker/daterangepicker-bs3.css">

<link rel="stylesheet" href="plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css">

</head>

<body class="hold-transition skin-blue sidebar-mini">

<div class="wrapper">

<header class="main-header">

<a href="index2.html" class="logo">

<span class="logo-mini"><b>A</b>LT</span>

<span class="logo-lg"><b>Admin</b>LTE</span>

</a>

<nav class="navbar navbar-static-top" role="navigation">

<a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">

<span class="sr-only">Toggle navigation</span>

</a>

<div class="navbar-custom-menu">

<ul class="nav navbar-nav">

<li class="dropdown messages-menu">

<a href="#" class="dropdown-toggle" data-toggle="dropdown">

<i class="fa fa-envelope-o"></i>

<span class="label label-success">4</span>

</a>

<ul class="dropdown-menu">

<li class="header">You have 4 messages</li>

<li>

<ul class="menu">

<li>

<a href="#">

<div class="pull-left">

<img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">

</div>

<h4>

Support Team

<small><i class="fa fa-clock-o"></i> 5 mins</small>

</h4>

<p>Why not buy a new awesome theme?</p>

</a>

</li>

<li>

<a href="#">

<div class="pull-left">

<img src="dist/img/user3-128x128.jpg" class="img-circle" alt="User Image">

</div>

<h4>

AdminLTE Design Team

<small><i class="fa fa-clock-o"></i> 2 hours</small>

</h4>

<p>Why not buy a new awesome theme?</p>

</a>

</li>

<li>

<a href="#">

<div class="pull-left">

<img src="dist/img/user4-128x128.jpg" class="img-circle" alt="User Image">

</div>

<h4>

Developers

<small><i class="fa fa-clock-o"></i> Today</small>

</h4>

<p>Why not buy a new awesome theme?</p>

</a>

</li>

<li>

<a href="#">

<div class="pull-left">

<img src="dist/img/user3-128x128.jpg" class="img-circle" alt="User Image">

</div>

<h4>

Sales Department

<small><i class="fa fa-clock-o"></i> Yesterday</small>

</h4>

<p>Why not buy a new awesome theme?</p>

</a>

</li>

<li>

<a href="#">

<div class="pull-left">

<img src="dist/img/user4-128x128.jpg" class="img-circle" alt="User Image">

</div>

<h4>

Reviewers

<small><i class="fa fa-clock-o"></i> 2 days</small>

</h4>

<p>Why not buy a new awesome theme?</p>

</a>

</li>

</ul>

</li>

<li class="footer"><a href="#">See All Messages</a></li>

</ul>

</li>

<li class="dropdown notifications-menu">

<a href="#" class="dropdown-toggle" data-toggle="dropdown">

<i class="fa fa-bell-o"></i>

<span class="label label-warning">10</span>

</a>

<ul class="dropdown-menu">

<li class="header">You have 10 notifications</li>

<li>

<ul class="menu">

<li>

<a href="#">

<i class="fa fa-users text-aqua"></i> 5 new members joined today

</a>

</li>

<li>

<a href="#">

<i class="fa fa-warning text-yellow"></i> Very long description here that may not fit into the page and may cause design problems

</a>

</li>

<li>

<a href="#">

<i class="fa fa-users text-red"></i> 5 new members joined

</a>

</li>

<li>

<a href="#">

<i class="fa fa-shopping-cart text-green"></i> 25 sales made

</a>

</li>

<li>

<a href="#">

<i class="fa fa-user text-red"></i> You changed your username

</a>

</li>

</ul>

</li>

<li class="footer"><a href="#">View all</a></li>

</ul>

</li>

<li class="dropdown tasks-menu">

<a href="#" class="dropdown-toggle" data-toggle="dropdown">

<i class="fa fa-flag-o"></i>

<span class="label label-danger">9</span>

</a>

<ul class="dropdown-menu">

<li class="header">You have 9 tasks</li>

<li>

<ul class="menu">

<li>

<a href="#">

<h3>

Design some buttons

<small class="pull-right">20%</small>

</h3>

<div class="progress xs">

<div class="progress-bar progress-bar-aqua" style="width: 20%" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">

<span class="sr-only">20% Complete</span>

</div>

</div>

</a>

</li>

<li>

<a href="#">

<h3>

Create a nice theme

<small class="pull-right">40%</small>

</h3>

<div class="progress xs">

<div class="progress-bar progress-bar-green" style="width: 40%" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">

<span class="sr-only">40% Complete</span>

</div>

</div>

</a>

</li>

<li>

<a href="#">

<h3>

Some task I need to do

<small class="pull-right">60%</small>

</h3>

<div class="progress xs">

<div class="progress-bar progress-bar-red" style="width: 60%" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">

<span class="sr-only">60% Complete</span>

</div>

</div>

</a>

</li>

<li>

<a href="#">

<h3>

Make beautiful transitions

<small class="pull-right">80%</small>

</h3>

<div class="progress xs">

<div class="progress-bar progress-bar-yellow" style="width: 80%" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">

<span class="sr-only">80% Complete</span>

</div>

</div>

</a>

</li>

</ul>

</li>

<li class="footer">

<a href="#">View all tasks</a>

</li>

</ul>

</li>

<li class="dropdown user user-menu">

<a href="#" class="dropdown-toggle" data-toggle="dropdown">

<img src="dist/img/user2-160x160.jpg" class="user-image" alt="User Image">

<span class="hidden-xs">Alexander Pierce</span>

</a>

<ul class="dropdown-menu">

<li class="user-header">

<img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">

<p>

Alexander Pierce - Web Developer

<small>Member since Nov. 2012</small>

</p>

</li>

<li class="user-body">

<div class="col-xs-4 text-center">

<a href="#">Followers</a>

</div>

<div class="col-xs-4 text-center">

<a href="#">Sales</a>

</div>

<div class="col-xs-4 text-center">

<a href="#">Friends</a>

</div>

</li>

<li class="user-footer">

<div class="pull-left">

<a href="#" class="btn btn-default btn-flat">Profile</a>

</div>

<div class="pull-right">

<a href="#" class="btn btn-default btn-flat">Sign out</a>

</div>

</li>

</ul>

</li>

<li>

<a href="#" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a>

</li>

</ul>

</div>

</nav>

</header>

<aside class="main-sidebar">

<section class="sidebar">

<div class="user-panel">

<div class="pull-left image">

<img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">

</div>

<div class="pull-left info">

<p>Alexander Pierce</p>

<a href="#"><i class="fa fa-circle text-success"></i> Online</a>

</div>

</div>

<form action="#" method="get" class="sidebar-form">

<div class="input-group">

<input type="text" name="q" class="form-control" placeholder="Search...">

<span class="input-group-btn">

<button type="submit" name="search" id="search-btn" class="btn btn-flat"><i class="fa fa-search"></i></button>

</span>

</div>

</form>

<ul class="sidebar-menu">

</ul>

</section>

</aside>

<div class="content-wrapper">

<iframe id="mainFrame" src="http://www.baidu.com" width="100%" height="916"></iframe>

</div>

<footer class="main-footer">

<div class="pull-right hidden-xs">

<b>Version</b> 2.3.0

</div>

<strong>Copyright &copy; 2014-2015 <a href="http://almsaeedstudio.com">Almsaeed Studio</a>.</strong> All rights reserved.

</footer>

<aside class="control-sidebar control-sidebar-dark">

<ul class="nav nav-tabs nav-justified control-sidebar-tabs">

<li><a href="#control-sidebar-home-tab" data-toggle="tab"><i class="fa fa-home"></i></a></li>

<li><a href="#control-sidebar-settings-tab" data-toggle="tab"><i class="fa fa-gears"></i></a></li>

</ul>

<div class="tab-content">

<div class="tab-pane" id="control-sidebar-home-tab">

<h3 class="control-sidebar-heading">Recent Activity</h3>

<ul class="control-sidebar-menu">

<li>

<a href="javascript::;">

<i class="menu-icon fa fa-birthday-cake bg-red"></i>

<div class="menu-info">

<h4 class="control-sidebar-subheading">Langdon's Birthday</h4>

<p>Will be 23 on April 24th</p>

</div>

</a>

</li>

<li>

<a href="javascript::;">

<i class="menu-icon fa fa-user bg-yellow"></i>

<div class="menu-info">

<h4 class="control-sidebar-subheading">Frodo Updated His Profile</h4>

<p>New phone +1(800)555-1234</p>

</div>

</a>

</li>

<li>

<a href="javascript::;">

<i class="menu-icon fa fa-envelope-o bg-light-blue"></i>

<div class="menu-info">

<h4 class="control-sidebar-subheading">Nora Joined Mailing List</h4>

<p>nora@example.com</p>

</div>

</a>

</li>

<li>

<a href="javascript::;">

<i class="menu-icon fa fa-file-code-o bg-green"></i>

<div class="menu-info">

<h4 class="control-sidebar-subheading">Cron Job 254 Executed</h4>

<p>Execution time 5 seconds</p>

</div>

</a>

</li>

</ul>

<h3 class="control-sidebar-heading">Tasks Progress</h3>

<ul class="control-sidebar-menu">

<li>

<a href="javascript::;">

<h4 class="control-sidebar-subheading">

Custom Template Design

<span class="label label-danger pull-right">70%</span>

</h4>

<div class="progress progress-xxs">

<div class="progress-bar progress-bar-danger" style="width: 70%"></div>

</div>

</a>

</li>

<li>

<a href="javascript::;">

<h4 class="control-sidebar-subheading">

Update Resume

<span class="label label-success pull-right">95%</span>

</h4>

<div class="progress progress-xxs">

<div class="progress-bar progress-bar-success" style="width: 95%"></div>

</div>

</a>

</li>

<li>

<a href="javascript::;">

<h4 class="control-sidebar-subheading">

Laravel Integration

<span class="label label-warning pull-right">50%</span>

</h4>

<div class="progress progress-xxs">

<div class="progress-bar progress-bar-warning" style="width: 50%"></div>

</div>

</a>

</li>

<li>

<a href="javascript::;">

<h4 class="control-sidebar-subheading">

Back End Framework

<span class="label label-primary pull-right">68%</span>

</h4>

<div class="progress progress-xxs">

<div class="progress-bar progress-bar-primary" style="width: 68%"></div>

</div>

</a>

</li>

</ul>

</div>

<div class="tab-pane" id="control-sidebar-stats-tab">Stats Tab Content</div>

<div class="tab-pane" id="control-sidebar-settings-tab">

<form method="post">

<h3 class="control-sidebar-heading">General Settings</h3>

<div class="form-group">

<label class="control-sidebar-subheading">

Report panel usage

<input type="checkbox" class="pull-right" checked>

</label>

<p>

Some information about this general settings option

</p>

</div>

<div class="form-group">

<label class="control-sidebar-subheading">

Allow mail redirect

<input type="checkbox" class="pull-right" checked>

</label>

<p>

Other sets of options are available

</p>

</div>

<div class="form-group">

<label class="control-sidebar-subheading">

Expose author name in posts

<input type="checkbox" class="pull-right" checked>

</label>

<p>

Allow the user to show his name in blog posts

</p>

</div>

<h3 class="control-sidebar-heading">Chat Settings</h3>

<div class="form-group">

<label class="control-sidebar-subheading">

Show me as online

<input type="checkbox" class="pull-right" checked>

</label>

</div>

<div class="form-group">

<label class="control-sidebar-subheading">

Turn off notifications

<input type="checkbox" class="pull-right">

</label>

</div>

<div class="form-group">

<label class="control-sidebar-subheading">

Delete chat history

<a href="javascript::;" class="text-red pull-right"><i class="fa fa-trash-o"></i></a>

</label>

</div>

</form>

</div>

</div>

</aside>

<div class="control-sidebar-bg"></div>

</div>

<script src="plugins/jQuery/jQuery-2.1.4.min.js"></script>

<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>

<script>

$.widget.bridge('uibutton', $.ui.button);

</script>

<script src="bootstrap/js/bootstrap.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>

<script src="plugins/morris/morris.min.js"></script>

<script src="plugins/sparkline/jquery.sparkline.min.js"></script>

<script src="plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script>

<script src="plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script>

<script src="plugins/knob/jquery.knob.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.2/moment.min.js"></script>

<script src="plugins/daterangepicker/daterangepicker.js"></script>

<script src="plugins/datepicker/bootstrap-datepicker.js"></script>

<script src="plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js"></script>

<script src="plugins/slimScroll/jquery.slimscroll.min.js"></script>

<script src="plugins/fastclick/fastclick.min.js"></script>

<script src="dist/js/app.min.js"></script>

<script src="dist/js/pages/dashboard.js"></script>

<script src="dist/js/demo.js"></script>

<script src="dist/js/index.js"></script>

<script src="dist/js/menu.js"></script>

</body>

</html>

这个index.html需要很多js和css文件的配合才能正常显示,文件太多,在此不一一列出,源码项目链接(https://download.csdn.net/download/hgq0916/11117488)。

接下来是前端js代码,负责将后端的json格式菜单列表渲染。

menu.js代码:

var menuObj = {

menuList:[],

config:{

pmenu_icon_class:"fa",

lmenu_icon_class:"fa",

pmenu_expand_class:"fa fa-angle-left pull-right",

label_icon_class:"label pull-right"

},

getMenuList:function () {

return this.menuList;

},

setMenuList:function (menuList) {

this.menuList = menuList;

this.showMenuList();

},

showMenuList:function () {

if(this.menuList!=null&&this.menuList.length>0){

var menuList = this.menuList;

var menuContainer = $(".sidebar-menu");

menuContainer.html("");

for(var i=0;i<menuList.length;i++){

var menu = menuList[i];

var mHtml = this.generateMenuHtml(menu);

menuContainer.append(mHtml);

}

}

},

generateMenuHtml:function (menu) {

var m_html = null;

if(menu.children==null||menu.children.length==0){

var li = $("<li></li>");

m_html = li;

li.prop("data-menuid",menu.id);

var a = $("<a></a>");

a.attr("href","javascript:;");

var menu_str = JSON.stringify(menu);

a.attr("onclick","navigateTo('"+menu_str+"')");

var i = $("<i></i>");

i.css("margin-right","8px");

i.css("width","14px");

i.css("height","14px");

if(menu.icon!=null&&menu.icon!=''){

i.addClass(this.config.lmenu_icon_class);

i.css("background","url("+menu.icon+") no-repeat");

i.css("background-size","14px 14px");

i.css("background-position","center center");

}else {

i.addClass(this.config.lmenu_icon_class);

i.addClass("fa-circle-o");

}

a.append(i);

var span = $("<span></span>");

span.html(menu.name);

a.append(span);

if(menu.label!=null&&menu.label.name!=null&&menu.label.name!=''){

var label = menu.label;

var small = $("<small></small>");

small.html(label.name);

if(label.bgColor!=null&&label.bgColor!=''){

small.addClass(this.config.label_icon_class);

small.css("background-color",label.bgColor+" !important");

}else {

small.addClass(this.config.label_icon_class);

small.addClass("bg-green");

}

a.append(small);

}

li.append(a);

}else{

var li = $("<li></li>");

m_html = li;

li.addClass("treeview");

var a = $("<a></a>");

a.attr("href","javascript:;");

li.append(a);

var i = $("<i></i>");

i.css("margin-right","8px");

i.css("width","14px");

i.css("height","14px");

if(menu.icon!=null&&menu.icon!=''){

i.addClass(this.config.lmenu_icon_class);

i.css("background","url("+menu.icon+") no-repeat");

i.css("background-size","14px 14px");

i.css("background-position","center center");

}else {

i.addClass(this.config.pmenu_icon_class);

i.addClass("fa-files-o");

}

a.append(i);

var span = $("<span></span>");

span.html(menu.name);

a.append(span);

if(menu.label!=null&&menu.label.name!=null&&menu.label.name!=''){

var label = menu.label;

var span = $("<span></span>");

span.html(label.name);

if(label.bgColor!=null&&label.bgColor!=''){

span.addClass(this.config.label_icon_class);

span.css("background-color",label.bgColor+" !important");

}else {

span.addClass(this.config.label_icon_class);

span.addClass("bg-green");

}

a.append(span);

}else{

var i = $("<i></i>");

i.addClass(this.config.pmenu_expand_class);

a.append(i);

}

var ul = $("<ul></ul>");

ul.addClass("treeview-menu");

li.append(ul);

var mchidren = menu.children;

for(var k=0;k<mchidren.length;k++){

var childHtml = this.generateMenuHtml(mchidren[k]);

ul.append(childHtml);

}

}

return m_html;

},

loadMenuList:function (url) {

$.ajax({

url:url,

method:"GET",

asyn:true,

dataType:"json",

success:(response)=>{

this.setMenuList(response);

}

});

}

};

menuObj.loadMenuList("dist/json/menuList.json");

function navigateTo(menu) {

var menu = JSON.parse(menu);

document.getElementById("mainFrame").src = menu.url;

}

源码包下载链接:https://download.csdn.net/download/hgq0916/11117488

欢迎大家批评指正,有兴趣可以一起交流学习,Java成长交流学习群:184998348

相关知识

Java SSM框架构建网上花店销售系统教程
后台模块
Python+Django框架淘宝零食销售数据可视化系统网站作品截图和开题报告参考
Java实现鲜花预定系统:Oracle数据库与Spring Boot框架整合实战
基于Java中的SSM框架实现在线订花系统项目【项目源码+论文说明】
基于Java中的SSM框架实现在线订花系统项目【项目源码+论文说明】计算机毕业设计
基于java中的SSM框架实现网上花店设计平台项目【附项目源码+论文说明】
springboot花店商城系统鲜花店系统含后台管理源码
摆放鲜花框架设计方案.docx
基于java中的SSM框架实现网上花店设计平台项目【内附项目源码+论文说明】

网址: 后台框架 https://m.huajiangbk.com/newsview949115.html

所属分类:花卉
上一篇: 教你如何编程搭建后台管理系统(网
下一篇: 教你如何编程搭建后台管理系统(网