rabin 4 years ago
parent
commit
7b4255e319
5 changed files with 205 additions and 4 deletions
  1. 7 3
      assets/layadmin/html/inc/nav.html
  2. 26 0
      database/menu.php
  3. 120 0
      database/menu_group.php
  4. 48 1
      src/Menu.php
  5. 4 0
      template/layadmin/inc/nav.php

+ 7 - 3
assets/layadmin/html/inc/nav.html

@@ -3,13 +3,13 @@
 <div id="dever-name" style="display:none;"></div>
 <div class="layui-header" id="nav">
 <!-- 头部区域 -->
-<ul class="layui-nav layui-layout-left">
+<ul class="layui-nav layui-layout-left" id="top">
   <li class="layui-nav-item layadmin-flexible" lay-unselect>
     <a href="javascript:;" layadmin-event="flexible" title="侧边伸缩">
       <i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
     </a>
   </li>
-  <li class="layui-nav-item" lay-unselect>
+  <li class="layui-nav-item" lay-unselect style="display:none;">
     <a href="javascript:;" layadmin-event="back" title="上一页">
       <i class="layui-icon layui-icon-return"></i>
     </a>
@@ -27,7 +27,11 @@
   <li class="layui-nav-item layui-hide-xs" lay-unselect style="display:none;">
     <input type="text" placeholder="搜索..." autocomplete="off" class="layui-input layui-input-search" layadmin-event="serach" lay-action="template/search.html?keywords="> 
   </li>
+
+  <li class="layui-nav-item" style=""><a data-menu-node="m-1" href="#"><span>后台首页</span></a></li><li class="layui-nav-item" style=""><a data-menu-node="m-16" data-open="#"><span>微信管理</span></a></li><li class="layui-nav-item" style=""><a data-menu-node="m-37" data-open="#"><span>开放平台</span></a></li><li class="layui-nav-item" style=""><a data-menu-node="m-2" data-open="#"><span>系统管理</span></a></li><li class="layui-nav-item" style=""><a data-menu-node="m-62" data-open="#"><span>送钱券</span></a></li><li class="layui-nav-item layui-this" style=""><a data-menu-node="m-68" data-open="#"><span>优选店</span></a></li><li class="layui-nav-item" style=""><a data-menu-node="m-73" data-open="#"><span>用户管理</span></a></li>
+
 </ul>
+
 <ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right">
 
   <li class="layui-nav-item auth-top" lay-unselect style="display:none;">
@@ -57,7 +61,7 @@
       <i class="layui-icon layui-icon-note"></i>
     </a>
   </li>
-  <li class="layui-nav-item layui-hide-xs" lay-unselect>
+  <li class="layui-nav-item layui-hide-xs" lay-unselect style="display:none;">
     <a href="javascript:;" layadmin-event="fullscreen">
       <i class="layui-icon layui-icon-screen-full"></i>
     </a>

+ 26 - 0
database/menu.php

@@ -37,6 +37,17 @@ $menu = function()
 	return $array;
 };
 
+$group = function()
+{
+	$array = array();
+	$menu = Dever::db('manage/menu_group')->state();
+	if($menu)
+	{
+		$array += $menu;
+	}
+	return $array;
+};
+
 if (layadmin()) {
 	$link = 'https://www.layui.com/doc/element/icon.html';
 } else {
@@ -80,6 +91,20 @@ return array
 			'search'	=> 'order,fulltext',
 			'list'		=> true,
 		),
+
+		'group_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '选择分组',
+			'default' 	=> 1,
+			'desc' 		=> '请选择选择分组',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			'search'	=> 'select',
+			'list'		=> true,
+			'option' 	=> $group,
+			'edit'		=> true,
+		),
 		
 		'menu_id'		=> array
 		(
@@ -216,6 +241,7 @@ return array
 		'button' => array
 		(
 			'更新菜单' => 'manage/menu.update',
+			'菜单分组' => array('location', 'manage/project/database/list&project=manage&table=menu_group'),
 			//'全部清空' => 'manage/menu.delete',
 		),
 		# 每页显示条数,第一个为默认值

+ 120 - 0
database/menu_group.php

@@ -0,0 +1,120 @@
+<?php
+
+# 图标
+$icon = array
+(
+	1 => '默认',
+);
+
+
+if (layadmin()) {
+	$link = 'https://www.layui.com/doc/element/icon.html';
+} else {
+	$link = 'http://dwz.cn/1j8SP0';
+}
+return array
+(
+	# 表名
+	'name' => 'menu_group',
+	# 显示给用户看的名称
+	'lang' => '菜单分组设置',
+	'order' => 2,
+	'menu' => false,
+	# 不允许key重复
+	'start' => array
+	(
+		//'update' => 'manage/menu.checkKey',
+		//'insert' => 'manage/menu.checkKey',
+	),
+	//'check' => 'key',
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '分组ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'order'		=> 'desc',
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-50',
+			'name' 		=> '分组名称',
+			'default' 	=> '',
+			'desc' 		=> '请输入分组名称',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'search'	=> 'order,fulltext',
+			'list'		=> true,
+		),
+
+		'icon'		=> array
+		(
+			'type' 		=> 'varchar-100',
+			'name' 		=> '图标代码-请<a href="'.$link.'" target="_blank">点此</a>查看图标代码',
+			'default' 	=> 'glyphicon glyphicon-folder-close',
+			'desc' 		=> '请输入图标代码',
+			'match' 	=> 'is_string',
+			//'option' 	=> $icon,
+			'update'	=> 'text',
+		),
+
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'search'	=> 'order',
+			'list'		=> true,
+			'order'		=> 'desc',
+			'edit'		=> true,
+		),
+		
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+		
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+			'list'		=> 'date("Y-m-d H:i:s", {cdate})',
+		),
+	),
+
+	'default' => array
+	(
+		'col' => 'name,icon,reorder,state,cdate',
+		'value' => array
+		(
+			'"默认分组","layui-icon layui-icon-home",1,1,' . DEVER_TIME,
+		),
+	),
+	
+	'manage' => array
+	(
+		
+	),
+	
+	# request 请求接口定义
+	'request' => array
+	(
+		
+	),
+);

+ 48 - 1
src/Menu.php

@@ -515,6 +515,47 @@ class Menu
         return $info['id'];
     }
 
+    /**
+     * menu 生成顶部菜单
+     *
+     * @return array
+     */
+    public function getTop()
+    {
+        $data = Dever::db('manage/menu_group')->state();
+
+        $html = '<li class="layui-nav-item layadmin-flexible" lay-unselect>
+    <a href="javascript:;" layadmin-event="flexible" title="侧边伸缩">
+      <i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
+    </a>
+  </li><li class="layui-nav-item" lay-unselect>
+    <a href="javascript:;" layadmin-event="refresh" title="刷新">
+      <i class="layui-icon layui-icon-refresh-3"></i>
+    </a>
+  </li>';
+        if (layadmin() && count($data) > 1) {
+            foreach ($data as $k => $v) {
+                $v['icon'] = $v['icon'] ? "layui-icon " . $v['icon'] : "layui-icon layui-icon-home";
+                if ($v['id'] == 1) {
+                    $cur = 'layui-this';
+                } else {
+                    $cur = '';
+                }
+                $html .= '<li class="layui-nav-item '.$cur.'">';
+
+
+                $link = 'href="javascript:;" onclick="menuGroup('.$v['id'].', $(this))"';
+                $html .= '<a '.$link.' lay-tips="'.$v['name'].'">';
+                $html .= '<i class="'.$v['icon'].'"></i><cite style="margin-left:5px;">'.$v['name'].'</cite></a>';
+
+                $html .= '</li>';
+            }
+            $html .= '';
+        }
+
+        return $html;
+    }
+
     /**
      * menu 生成左侧的菜单 此处应加上权限来显示是否管理员有该菜单的权限
      *
@@ -528,7 +569,13 @@ class Menu
         if (layadmin()) {
             foreach ($data as $k => $v) {
                 $v['icon'] = $v['icon'] ? "layui-icon " . $v['icon'] : "layui-icon layui-icon-home";
-                $html .= '<li data-name="'.$v['key'].'" class="layui-nav-item">';
+                $style = '';
+                if ($v['group_id'] == 1) {
+                    $style = '';
+                } else {
+                    $style = 'style="display:none;"';
+                }
+                $html .= '<li data-name="'.$v['key'].'" class="layui-nav-item menu_group menu_group_'.$v['group_id'].'" '.$style.'>';
 
                 if (isset($v['child']) && $v['child']) {
                     $link = 'href="javascript:;"';

+ 4 - 0
template/layadmin/inc/nav.php

@@ -7,6 +7,9 @@
 
 $view
 
+
+->fetch('#top', 'manage/menu.getTop') 
+
 ->fetch('#load_style', 'manage/database.res#css')
 
 ->fetch('#nav@style', '<{Dever::load("manage/auth.loading") ? "display:none;" : ""}>')
@@ -26,5 +29,6 @@ $view
 
 ->fetch('#front-url@style', 'manage/auth.config#front_display')
 
+
 # display
 ->display();