<?php
namespace app\admins\controller;
use think\Controller;
use Util\SysDb;
class Menu extends Base{
public function index(){
$pid = (int)input('get.pid');
$where['pid'] = $pid;
// 加载菜单列表
$data['lists'] = $this->db->table('admin_menus')->where($where)->lists();
$data['pid'] = $pid;
// 子菜单
if($pid>0){
$parent = $this->db->table('admin_menus')->where(array('mid'=>$pid))->item();
$data['backid'] = $parent['pid'];
}
return $this->fetch('',$data);
}
// 添加、编辑菜单
public function add(){
$pid = (int)input('get.pid');
$mid = (int)input('get.mid');
$data['parent_menu'] = $this->db->table('admin_menus')->where(array('mid'=>$pid))->item();
$data['menu'] = $this->db->table('admin_menus')->where(array('mid'=>$mid))->item();
return $this->fetch('',$data);
}
// 保存菜单
public function save(){
$mid = (int)input('post.mid');
$data['pid'] = (int)input('post.pid');
$data['title'] = trim(input('post.title'));
$data['controller'] = trim(input('post.controller'));
$data['method'] = trim(input('post.method'));
$data['ord'] = (int)input('post.ord');
$data['ishidden'] = (int)input('post.ishidden');
$data['status'] = (int)input('post.status');
if($data['title'] == ''){
exit(json_encode(array('code'=>1,'msg'=>'菜单名称不能为空')));
}
if($data['pid']>0 && $data['controller'] == ''){
exit(json_encode(array('code'=>1,'msg'=>'控制器名称不能为空')));
}
if($data['pid']>0 && $data['method'] == ''){
exit(json_encode(array('code'=>1,'msg'=>'方法名称不能为空')));
}
if($mid){
$res = $this->db->table('admin_menus')->where(array('mid'=>$mid))->update($data);
}else{
$res = $this->db->table('admin_menus')->insert($data);
}
if(!$res){
exit(json_encode(array('code'=>1,'msg'=>'保存失败')));
}
exit(json_encode(array('code'=>0,'msg'=>'保存成功')));
}
// 删除菜单
public function delete(){
$mid = (int)input('post.mid');
$res = $this->db->table('admin_menus')->where(array('mid'=>$mid))->delete();
if(!$res){
exit(json_encode(array('code'=>1,'msg'=>'删除失败')));
}
exit(json_encode(array('code'=>0,'msg'=>'删除成功')));
}
}
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="/static/plugins/layui/css/layui.css">
<script type="text/javascript" src="/static/plugins/layui/layui.js"></script>
<style type="text/css">
.header span{background: #009688;margin-left: 30px;padding: 10px;color: #ffffff;}
.header button{float: right;margin-top: -5px;}
.header div{border-bottom: solid 2px #009688;margin-top: 8px;}
</style>
</head>
<body style="padding: 10px;">
<input type="hidden" id="pid" value="{$pid}">
<div class="header">
<span>菜单列表</span>
<button class="layui-btn layui-btn-sm" onclick="add()">添加</button>
<div></div>
</div>
<?php if($pid>0){?>
<button class="layui-btn layui-btn-primary layui-btn-sm" style="float: right;margin-top: 5px;margin-bottom: 5px;" onclick="backs({$backid})">返回上级菜单</button>
<?php }?>
<table class="layui-table">
<thead>
<tr>
<th>ID</th>
<th>排序</th>
<th>菜单名称</th>
<th>控制器</th>
<th>方法</th>
<th>是否隐藏</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name='$lists' id="vo"}
<tr>
<td>{$vo.mid}</td>
<td>{$vo.ord}</td>
<td>{$vo.title}</td>
<td>{$vo.controller}</td>
<td>{$vo.method}</td>
<td>{$vo.ishidden==1?'隐藏':'显示'}</td>
<td>{$vo.status==1?'禁用':'正常'}</td>
<td>
<button class="layui-btn layui-btn-xs" onclick="childs({$vo.mid})">子菜单</button>
<button class="layui-btn layui-btn-warm layui-btn-xs" onclick="add({$vo.mid})">编辑</button>
<button class="layui-btn layui-btn-danger layui-btn-xs" onclick="del({$vo.mid})">删除</button>
</td>
</tr>
{/volist}
</tbody>
</table>
</body>
</html>
<script type="text/javascript">
layui.use(['layer'],function(){
layer = layui.layer;
$ = layui.jquery;
});
// 添加
function add(mid){
var pid = $('#pid').val();
layer.open({
type:2,
title:mid>0?'编辑菜单':'添加菜单',
shade:0.3,
area:['480px','420px'],
content:'/index.php/admins/menu/add?mid='+mid+'&pid='+pid
});
}
// 删除
function del(mid){
layer.confirm('确定要删除吗?',{
icon:3,
btn:['确定','取消']
},function(){
$.post('/index.php/admins/menu/delete',{'mid':mid},function(res){
if(res.code>0){
layer.alert(res.msg,{'icon':2});
}else{
layer.msg(res.msg,{'icon':1});
setTimeout(function(){window.location.reload();},1000);
}
},'json');
});
}
// 子菜单
function childs(mid){
window.location.href = '?pid='+mid;
}
// 返回上级菜单
function backs(pid){
window.location.href = '?pid='+pid;
}
</script>
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="/static/plugins/layui/css/layui.css">
<script type="text/javascript" src="/static/plugins/layui/layui.js"></script>
</head>
<body style="padding: 10px;">
<form class="layui-form">
<!-- 编辑需要隐藏的id; -->
<input type="hidden" name="pid" value="{$parent_menu.mid}">
<input type="hidden" name="mid" value="{$menu.mid}">
<?php if($parent_menu){?>
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: green;">上级菜单</span></label>
<div class="layui-input-inline">
<input type="text" class="layui-input" disabled="true" style="color: green;" value="{$parent_menu.title}">
</div>
</div>
<?php }?>
<div class="layui-form-item">
<label class="layui-form-label">菜单名称</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="title" value="{$menu.title}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="ord" value="{$menu.ord}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">控制器</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="controller" value="{$menu.controller}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">方法</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="method" value="{$menu.method}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline">
<input type="checkbox" name="ishidden" lay-skin="primary" title="是否隐藏" value="1" {$menu.ishidden==1?'checked':''}>
<input type="checkbox" name="status" lay-skin="primary" title="是否禁用" value="1" {$menu.status==1?'checked':''}>
</div>
</div>
</form>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" onclick="save()">保存</button>
</div>
</div>
</body>
</html>
<script type="text/javascript">
layui.use(['layer','form'],function(){
var form = layui.form;
layer = layui.layer;
$ = layui.jquery;
});
function save(){
var pid = parseInt($('input[name="pid"]').val());
var title = $.trim($('input[name="title"]').val());
var controller = $.trim($('input[name="controller"]').val());
var method = $.trim($('input[name="method"]').val());
if(title==''){
layer.alert('请输入菜单名称',{'icon':2});
return;
}
if(pid>0 && controller==''){
layer.alert('请输入控制器',{'icon':2});
return;
}
if(pid>0 && method==''){
layer.alert('请输入方法名称',{'icon':2});
return;
}
$.post('/index.php/admins/menu/save',$('form').serialize(),function(res){
if(res.code>0){
layer.alert(res.msg,{'icon':2});
}else{
layer.msg(res.msg,{'icon':1});
setTimeout(function(){parent.window.location.reload();},1000);
}
},'json');
}
</script>