|
|
@@ -25,6 +25,7 @@
|
|
|
@component('layouts.menu')@endcomponent
|
|
|
</div>
|
|
|
</nav>
|
|
|
+ <div id="menu"></div>
|
|
|
@yield('content')
|
|
|
<hr>
|
|
|
</div>
|
|
|
@@ -32,6 +33,90 @@
|
|
|
<!-- Scripts -->
|
|
|
@yield('script')
|
|
|
{{-- 必须在app.js前边--}}
|
|
|
+<script type="text/javascript">
|
|
|
+ let menuList = JSON.parse(localStorage.getItem("menus"));
|
|
|
+ let baseUrl = "{{url('')}}";
|
|
|
+ let relativeUrl = window.location.href.slice(baseUrl.length+1).split(/[/?]/);
|
|
|
+ (function () {
|
|
|
+ if ("{{\Illuminate\Support\Facades\Auth::id()}}")createMenu();
|
|
|
+ }());
|
|
|
+ function createMenu(type = 1,menus=menuList) {
|
|
|
+ return new Promise(function () {
|
|
|
+ let dom = createBeforeMenu(type);
|
|
|
+ for (let i=0;i<menus.length;i++){
|
|
|
+ if (!menus[i].route)continue;
|
|
|
+ let uri = menus[i].route.split(/[/?]/)[type-1];
|
|
|
+ let isEquals = uri==='*' || uri===relativeUrl[type-1];
|
|
|
+ dom.appendChild(createChildElement(type,menus[i],isEquals));
|
|
|
+ if (isEquals && menus[i].child && menus[i].child.length>0){
|
|
|
+ createMenu(type+1,menus[i].child);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ function createBeforeMenu(type) {
|
|
|
+ let dom = undefined;
|
|
|
+ switch (type) {
|
|
|
+ case 2:
|
|
|
+ dom = document.createElement("div");
|
|
|
+ dom.className="container-fluid nav2";
|
|
|
+ let div = document.createElement("div");
|
|
|
+ div.className="card";
|
|
|
+ let ul = document.createElement("ul");
|
|
|
+ ul.className="nav nav-pills";
|
|
|
+ div.appendChild(ul);
|
|
|
+ dom.appendChild(div);
|
|
|
+ document.getElementById("menu").appendChild(dom);
|
|
|
+ return ul;
|
|
|
+ case 3:
|
|
|
+ dom = document.createElement("div");
|
|
|
+ dom.className="container-fluid nav3";
|
|
|
+ let dom2 = document.createElement("div");
|
|
|
+ dom2.className = "card menu-third";
|
|
|
+ let dom3 = document.createElement("ul");
|
|
|
+ dom3.className="nav nav-pills";
|
|
|
+ dom2.appendChild(dom3);
|
|
|
+ dom.appendChild(dom2);
|
|
|
+ document.getElementById("menu").appendChild(dom);
|
|
|
+ return dom3;
|
|
|
+ default:
|
|
|
+ dom = document.createElement("ul");
|
|
|
+ dom.className = "navbar-nav mr-auto nav-tabs nav font-weight-bold";
|
|
|
+ dom.style.paddingTop = "10px";
|
|
|
+ document.getElementById("mainMenu").appendChild(dom);
|
|
|
+ return dom;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ function createChildElement(type,menu,isEquals) {
|
|
|
+ let li = document.createElement("li");
|
|
|
+ let a = document.createElement("a");
|
|
|
+ li.className="nav-item";
|
|
|
+ a.href = baseUrl+'/'+menu.route;
|
|
|
+ a.className = "nav-link";
|
|
|
+ if (isEquals)a.className += " active";
|
|
|
+ a.target = menu.route;
|
|
|
+ switch (type) {
|
|
|
+ case 2:
|
|
|
+ a.innerText = menu.name;
|
|
|
+ li.appendChild(a);
|
|
|
+ return li;
|
|
|
+ case 3:
|
|
|
+ a.innerText = menu.name;
|
|
|
+ li.appendChild(a);
|
|
|
+ return li;
|
|
|
+ default:
|
|
|
+ if (menu.font){
|
|
|
+ let span = document.createElement("span");
|
|
|
+ span.className = menu.font;
|
|
|
+ span.style.cssText = menu.fontStyle;
|
|
|
+ a.appendChild(span);
|
|
|
+ }
|
|
|
+ a.appendChild(document.createTextNode(menu.name));
|
|
|
+ li.appendChild(a);
|
|
|
+ return li;
|
|
|
+ }
|
|
|
+ }
|
|
|
+</script>
|
|
|
<script src="{{ mix('js/app.js') }}"></script>
|
|
|
<script>
|
|
|
let isActive=function (name,atSlashLevel) {
|
|
|
@@ -43,12 +128,12 @@
|
|
|
if(atSlashLevel>uriParts.length||!atSlashLevel)return false;
|
|
|
return uriParts[atSlashLevel]===name;
|
|
|
};
|
|
|
- new Vue({
|
|
|
+ /*new Vue({
|
|
|
el:'#nav1',
|
|
|
methods:{
|
|
|
isActive:isActive,
|
|
|
}
|
|
|
- });
|
|
|
+ });*/
|
|
|
if($('#nav2').length>0)
|
|
|
new Vue({
|
|
|
el:'#nav2',
|