【】SpringBoot-LayUI之左側菜單欄動態實現


SpringBoot后台管理項目之環境部署
SpringBoot后台管理之Mybatis-GeneratorConfig
SpringBoot后台管理項目之數據庫
SpringBoot項目之Resuful接口+工具類設計
【待補】SpringBoot項目之shiro
【待補】SpringBoot項目之cache

<!DOCTYPE html> 

<html lang="en" xmlns:th="http://www.thymeleaf.org"> 

<head> 

        <meta charset="UTF-8">

        <title>管理平台</title>

        <meta name="renderer" content="webkit|ie-comp|ie-stand">

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

        <meta name="viewport" content="width=device-width, 
initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, 
user-scalable=0">

        <meta http-equiv="Cache-Control" content="no-siteapp" />

        <link rel="stylesheet" href="../layui/css/layui.css" />

        <style>

            iframe{

                width: 100%;

                height: 100%;

            }

        </style>

    </head>

    <body class="layui-layout-body">

<div class="layui-layout layui-layout-admin">

  <div class="layui-header">

    <div class="layui-logo">后台管理系統</div>

  

    <ul class="layui-nav layui-layout-left">

   

        <li class="layui-nav-item  layui-this"><a href="">最新活動</a></li>

        <li class="layui-nav-item ">

          <a href="javascript:;">產品</a>

          <dl class="layui-nav-child">

            <dd><a href="">選項1</a></dd>

            <dd><a href="">選項2</a></dd>

            <dd><a href="">選項3</a></dd>

          </dl>

        </li>

        <li class="layui-nav-item"><a href="">大數據</a></li>

        <li class="layui-nav-item">

          <a href="javascript:;">解決方案</a>

          <dl class="layui-nav-child">

            <dd><a href="">移動模塊</a></dd>

            <dd><a href="">后台模版</a></dd>

            <dd class="layui-this"><a href="">選中項</a></dd>

            <dd><a href="">電商平台</a></dd>

            

          </dl>

        </li>

        <li class="layui-nav-item"><a href="">社區</a></li>

      </ul>

    <ul class="layui-nav layui-layout-right">

      <li class="layui-nav-item">

        <a href="javascript:;">

          <img src="http://t.cn/RCzsdCq" class="layui-nav-img">

          

         用戶名:  <span  th:text="'hello, ' + ${session.user.username} + 
'!'" ></span>

      

        </a>

        <dl class="layui-nav-child">

          <dd><a href="">基本資料</a></dd>

          <dd><a href="">安全設置</a></dd>

        

        </dl>

      </li>

      <li class="layui-nav-item"><a th:href="/logout">退出</a></li>

    </ul>

  </div>

  

  <div class="layui-side layui-bg-black">

    <div class="layui-side-scroll">

      <!-- 左側導航區域(可配合<u>layui</u>已有的垂直導航) -->

      <ul id="left_nav" class="layui-nav layui-nav-tree"  
<u>lay-filter</u>="test">

      </ul>

    </div>

  </div>

  

  <div class="layui-body" style="overflow-y: hidden;">

    <!-- 內容主體區域 -->

    <div class="layui-tab" <u>lay-filter</u>="demo" <u>lay-allowClose</u>="true">

      <ul class="layui-tab-title">

      </ul>

      <div class="layui-tab-content" >

      </div>

    </div>

  </div>

  

  <div class="layui-footer">

    <!-- 底部固定區域 -->

    © layui.com - 底部固定區域

  </div>

</div>





      <script src="../layui/layui.js"></script>

<script>

layui.use(['element','layer'], function(){

      var element = layui.element

      ,layer = layui.layer

      ,element = layui.element

      ,$ = layui.jquery;

       var base="http://localhost:8080"; 

       var get_nav=base+"/permission/list";

       var layer;

    

    

     network();

      /*

       * @todo 重新計算iframe高度

       */

      function FrameWH() { 

          var h = $(window).height() - 164;

          //console.log("高度問題=="+h);

          $("iframe").css("height", h + "px");

      }

      

      function network(){

        $.ajax({

            url:"/permission/list",  

            type: "get",

            async: true,

            success: function(res) {

              //console.log("首頁請求結果=="+JSON.stringify(res));

              if (res.code===0) {

                  console.log("請求數據成功");

                  loadnav(res.data);

              } else{

                  layer.msg('暫無數據');

              }

            },

            error:function() { 

              layer.msg("請求失敗!");

            } 

          });        

      }

      

      

      function loadnav (navdata) {

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

              var  first_menu=navdata[i];

               var  childMenus=first_menu.list; 

               //console.log("子菜單=="+JSON.stringify(childMenus));

               
if(childMenus==null||childMenus==undefined||childMenus==""){

                   //console.log("沒有子菜單=="+first_menu.name);

                   loadTopMenu(first_menu);

               }else{

                    //console.log("有子菜單=="+first_menu.name);

                    loadHasChildMenu(first_menu);

                }

          }

         //列表添加完后再次執行渲染

         xuanran();

      }

      

      

      //加載帶有子菜單的

      function loadHasChildMenu(data){

          var fragment = document.getElementById("left_nav");

          var list = document.createElement('li');

          list.className="layui-nav-item ";

          var child_one_Html='<a 
href="javascript:;">'+data.permissionName+'</a>';

          var childmenus=data.list;

          var child_two_Html='<dl class="layui-nav-child">';

          var childHtmls="";

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

              var childmenu=childmenus[i];

              //console.log("1.=多級菜單列表=="+childmenu.name+"=="); 
data-title

              var childHtml='<dd><a class="site-demo-active" 
data-id='+childmenu.id+' data-src='+childmenu.url+' 
data-title='+childmenu.permissionName+'>'+childmenu.permissionName+'</a></dd>';

              childHtmls+=childHtml; 

          }

          child_two_Html +=childHtmls+'</dl>';

          list.innerHTML=child_one_Html+child_two_Html;

          fragment.appendChild(list);

          //console.log("2.=多級菜單列表加載完畢");

      }

            

      //加載頂級菜單(沒有子菜單)

      function loadTopMenu(data){

          var fragment = document.getElementById("left_nav");

          var list = document.createElement('li'); 

          list.className="layui-nav-item";

      //aa

          list.innerHTML='<a class="site-demo-active" 
data-id='+data.id+' data-src='+data.url+'>'+data.permissionName+'</a>';

          fragment.appendChild(list);

          //console.log("1.=頂級菜單列表加載完畢"); 

      }

      

      function xuanran() {

          layui.use(['element','layer'], function(){

            var element = layui.element;

            layer=layui.layer;

            

            var layFilter = $("#left_nav").attr('lay-filter');

            element.render('nav', layFilter); 

            

            var active = {

              //在這里給active綁定幾項事件,后面可通過active調用這些事件

              tabAdd: function (url, id, name) {

                  //新增一個Tab項 傳入三個參數,分別對應其標題,tab頁面的地址,還有一個規定的id,是標簽中data-id的屬性值

                  var body_url=url+".html";

                  console.log("要切換的頁面地址="+body_url);

                  element.tabAdd('demo', {

                      title: name,

                      content: '<iframe data-frameid="' + id + '" 
scrolling="auto" frameborder="0" src="' + body_url + '"></iframe>',

                      id: id //規定好的id

                  })

                  FrameWH();  //計算ifram層的大小

              },

              tabChange: function (id) {

                  //切換到指定Tab項

                  element.tabChange('demo', id); //根據傳入的id傳入到指定的tab項

              },

              tabDelete: function (id) {

                  element.tabDelete("demo", id);//刪除

              }

            };    

            

       //當點擊有site-demo-active屬性的標簽時,即左側菜單欄中內容 ,觸發點擊事件

      $('.site-demo-active').on('click', function () {

           var dataid = $(this);

           if ($(".layui-tab-title li[lay-id]").length <= 0) {

               //如果比零小,則直接打開新的tab項

               //console.log("1.沒有tab頁,新建tab頁");

               console.log("2.沒有tab頁,新建tab頁=="+dataid.text()+"=="+dataid.attr("data-id")+"==="+dataid.attr("data-title"));

               active.tabAdd(dataid.attr("data-src"), 
dataid.attr("data-id"),dataid.attr("data-title"));

           } else {

              //否則判斷該tab項是否以及存在

              var isData = false; //初始化一個標志,為false說明未打開該tab項 為true則說明已有

              $.each($(".layui-tab-title li[lay-id]"), function () {

                  //如果點擊左側菜單欄所傳入的id 在右側tab項中的lay-id屬性可以找到,則說明該tab項已經打開

                  if ($(this).attr("lay-id") == dataid.attr("data-id")) {

                    console.log("如果點擊左側菜單欄所傳入的id 在右側tab項中的lay-id屬性可以找到,則說明該tab項已經打開");

                    isData = true;                     

               }

              })

              if (isData == false) {

                //標志為false 新增一個tab項

                console.log("新增一個tab項")

                active.tabAdd(dataid.attr("data-src"), 
dataid.attr("data-id"),dataid.attr("data-title"));

              }

         }

        //最后不管是否新增tab,最后都轉到要打開的選項頁面上

        active.tabChange(dataid.attr("data-id"));

      });

    })

    console.log("==列表添加完后再次執行渲染");

}

})

</script>        

    </body>

</html>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM