<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>菜單列表管理</title>
<link rel="stylesheet" href="/static/layui-v2.6.8/layui/css/layui.css" />
<script src="/static/layui-v2.6.8/layui/layui.js"></script>
</head>
<body style="padding: 10px;min-width:737px">
<div class="layui-item" >
<span style="color:#777;font-size:20px;height:30px;line-height:30px">首頁/</span>
<span style="color:#ccc">菜單列表</span>
<button class="layui-btn layui-btn-sm" style="float:right;margin:5px" onclick="add()">添加</button>
</div>
<table class="layui-table" >
<thead>
<tr>
<th>ID</th>
<th>菜單名稱</th>
<th>controller</th>
<th>action</th>
<th>是否隱藏</th>
<th>狀態(tài)</th>
<th>編輯</th>
</tr>
</thead>
<tbody>
{foreach $data as $menu}
<tr>
<td>{$menu['mid']}</td>
<td>{$menu['title']}</td>
<td>{$menu['controller']}</td>
<td>{$menu['action']}</td>
<td style="color:{$menu['ishidden']==0 ? 'green' : 'red'};">
{$menu['ishidden']==0 ? '不隱藏' : '隱藏'}
</td>
<td style="color:{$menu['status']==0 ? 'green' : 'red'};">
{$menu['status']==0 ? '開啟' : '關(guān)閉'}
</td>
<td>
<button class="layui-btn layui-btn-primary layui-btn-xs" onclick="lower({$menu['mid']})">下級菜單</button>
<button class="layui-btn layui-btn-xs" onclick="edit({$menu['mid']})">編輯</button>
<button class="layui-btn layui-btn-danger layui-btn-xs"onclick="dle({$menu['mid']})">刪除</button>
</td>
</tr>
{/foreach}
</tbody>
</table>
</body>
<script>
let $ = layui.jquery;
//編輯菜單
function edit(mid)
{
layer.open({
type:2,
title: '編輯菜單',
shadeClose: true,
shade: 0.8,
area: ['450px', '450px'],
content: '/admin/Menus/edit?mid='+mid
});
}
//刪除菜單
function dle(mid)
{
layer.confirm('確定刪除嗎?', {
btn: ['確定','取消'],
},
function(){
let date = {};
$.post('/admin/Menus/dle?mid='+mid,date,function(res){
if (res.id == 1) {
layer.alert(res.msg,{icon:1});
setTimeout(() => {
window.location.reload();
}, 1000);
}else{
layer.alert(res.msg,{icon:2});
}
},'json')
});
}
//添加菜單
function add()
{
layer.open({
type:2,
title: '添加菜單',
shadeClose: true,
shade: 0.8,
area: ['450px', '450px'],
content: '/admin/Menus/add'
});
}
//下級菜單
function lower(mid)
{
layer.open({
type:2,
title: '下級菜單',
shadeClose: true,
shade: 0.8,
area: ['800px', '600px'],
content: '/admin/Menus/lower?mid='+mid
});
}
</script>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>二級菜單</title>
<link rel="stylesheet" href="/static/layui-v2.6.8/layui/css/layui.css" />
<script src="/static/layui-v2.6.8/layui/layui.js"></script>
</head>
<body style="padding: 10px;">
<div class="layui-item" >
<span style="color:#777;font-size:20px;height:30px;line-height:30px">首頁/</span>
<span style="color:#ccc">二級菜單列表</span>
<button class="layui-btn layui-btn-sm" style="float:right;margin:5px" onclick="add({$data[0]['pid']})">添加</button>
</div>
<table class="layui-table" >
<thead>
<tr>
<th>ID</th>
<th>菜單名稱</th>
<th>controller</th>
<th>action</th>
<th>是否隱藏</th>
<th>狀態(tài)</th>
<th>編輯</th>
</tr>
</thead>
<tbody>
{foreach $data as $menu}
<tr>
<td>{$menu['mid']}</td>
<td>{$menu['title']}</td>
<td>{$menu['controller']}</td>
<td>{$menu['action']}</td>
<td style="color:{$menu['ishidden']==0 ? 'green' : 'red'};">
{$menu['ishidden']==0 ? '不隱藏' : '隱藏'}
</td>
<td style="color:{$menu['status']==0 ? 'green' : 'red'};">
{$menu['status']==0 ? '開啟' : '關(guān)閉'}
</td>
<td>
<button class="layui-btn layui-btn-xs" onclick="edit({$menu['mid']})">編輯</button>
<button class="layui-btn layui-btn-danger layui-btn-xs"onclick="dle({$menu['mid']})">刪除</button>
</td>
</tr>
{/foreach}
</tbody>
</table>
</body>
<script>
let $ = layui.jquery;
//編輯菜單
function edit(mid)
{
layer.open({
type:2,
title: '編輯菜單',
shadeClose: true,
shade: 0.8,
area: ['450px', '450px'],
content: '/admin/Menus/edit?mid='+mid
});
}
//刪除菜單
function dle(mid)
{
layer.confirm('確定刪除嗎?', {
btn: ['確定','取消'],
},
function(){
let date = {};
$.post('/admin/Menus/dle?mid='+mid,date,function(res){
if (res.id == 1) {
layer.alert(res.msg,{icon:1});
setTimeout(() => {
window.location.reload();
}, 1000);
}else{
layer.alert(res.msg,{icon:2});
}
},'json')
});
}
//添加菜單
function add(pid)
{
layer.open({
type:2,
title: '添加菜單',
shadeClose: true,
shade: 0.8,
area: ['450px', '450px'],
content: '/admin/Menus/add?pid='+pid
});
}
</script>
</html>
<?php
namespace app\admin\controller;
use app\admin\controller\Base;
use think\facade\Request;
use think\facade\Db;
use think\facade\View;
use think\facade\Session;
/**
* 菜單管理
*/
class Menus extends Base
{
//菜單列表
public function index()
{
//一級菜單
$data['menuList'] = Db::table('admin_menu')->where('pid',0)->select()->toArray();
// print_r($data);
// die;
View::assign([
'data' => $data['menuList']
]);
return View('/menus/index');
}
//菜單添加
public function add()
{
//如果pid 為空 則是一級菜單,如果不為空則是二級菜單
$pid = Request::param('pid');
if (Request::isPost()) {
//菜單信息
$data['pid'] = Request::post('pid');
$data['title'] = Request::post('title');
$data['controller'] = Request::post('controller');
$data['action'] = Request::post('action');
$data['ishidden'] = Request::post('ishidden');
$data['status'] = Request::post('status');
//當(dāng)前角色信息
$admin = $this->admin;
$MyGroup = $this->MyGroup;
if (!empty($data)) {
$insert = Db::table('admin_menu')->insert($data);
//插入的最大值行數(shù)
$count = (int)Db::table('admin_menu')->max('mid');
//再次插入到角色權(quán)限中
array_push($MyGroup['rights'],$count);
$MyGroup['rights'] = json_encode($MyGroup['rights']);
//更新角色權(quán)限
$mygroup = Db::table('admin_group')->where('gid',$MyGroup['gid'])->update([
'rights' => $MyGroup['rights']
]);
}else {
exit(json_encode(['id' => 0 ,'msg' => '輸入的信息錯(cuò)誤']));
}
if (!empty($insert)) {
echo json_encode(['id' => 1 ,'msg' => '添加成功']);
}else {
echo json_encode(['id' => 0 ,'msg' => '添加失敗']);
}
}else {
//菜單信息
$data['menu'] = Db::table('admin_menu')->where('pid',$pid)->find();
View::assign([
'pid' => $pid,
'data' => $data['menu']
]);
return View('/menus/add');
}
}
//下級菜單
public function lower()
{
//下級菜單查詢
$mid = Request::param('mid');
$data['MenuList'] = Db::table('admin_menu')->where('pid',$mid)->select()->toArray();
View::assign([
'data' => $data['MenuList']
]);
return View('/menus/lower');
}
//菜單修改
public function edit()
{
//菜單信息
if (Request::isPost()) {
$data['mid'] = Request::post('mid');
$data['title'] = Request::post('title');
$data['controller'] = Request::post('controller');
$data['action'] = Request::post('action');
$data['ishidden'] = Request::post('ishidden');
$data['status'] = Request::post('status');
if (!empty($data)) {
$update = Db::table('admin_menu')->where('mid',$data['mid'])->update($data);
}else {
exit(json_encode(['id' => 0 ,'msg' => '輸入的信息錯(cuò)誤']));
}
if (!empty($update)) {
echo json_encode(['id' => 1 ,'msg' => '修改成功']);
}else {
echo json_encode(['id' => 0 ,'msg' => '修改失敗']);
}
}else {
//菜單id
$mid = Request::get('mid');
//菜單信息
$data['menu'] = Db::table('admin_menu')->where('mid',$mid)->find();
View::assign([
'data' => $data['menu']
]);
return View('/menus/edit');
}
}
//菜單刪除
public function dle ()
{
$mid = (int)Request::param('mid');
//當(dāng)前角色信息
$admin = $this->admin;
$MyGroup = $this->MyGroup;
//刪除角色對應(yīng)的菜單權(quán)限
$GroupKey = (int)array_search($mid,$MyGroup['rights'],true);
array_splice($MyGroup['rights'],$GroupKey,1);
$MyGroup['rights'] = json_encode($MyGroup['rights']);
if (!empty($mid)) {
$delete = Db::table('admin_menu')->where('mid',$mid)->delete();
//更新角色權(quán)限
$mygroup = Db::table('admin_group')->where('gid',$MyGroup['gid'])->update([
'rights' => $MyGroup['rights']
]);
}
if (!empty($delete)) {
echo json_encode(['id' => 1 ,'msg' => '刪除成功']);
}else {
echo json_encode(['id' => 0 ,'msg' => '刪除失敗']);
}
}
}
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號