This commit is contained in:
taoser 2021-10-12 16:55:44 +08:00
parent 6740f501d1
commit 53939e8fed
5 changed files with 171 additions and 85 deletions

View File

@ -60,7 +60,7 @@ class AuthGroup extends AdminController
return json($res); return json($res);
} }
$menus = $this->getMenus(); $menus = $this->getMenus(1);
View::assign('menus',$menus); View::assign('menus',$menus);
return View::fetch('roleadd'); return View::fetch('roleadd');
@ -88,14 +88,15 @@ class AuthGroup extends AdminController
return json($res); return json($res);
} }
$menus = $this->getMenus(); $menus = $this->getMenus(1);
View::assign('menus',$menus); View::assign('menus',$menus);
$authGroup = AuthGroupModel::select(); $authGroup = AuthGroupModel::select();
$auth = AuthGroupModel::find(input('id')); $auth = AuthGroupModel::find(input('id'));
$ru = $auth->rules; $ru = $auth->rules;
$rus = explode(',',$ru);
View::assign(['authGroup'=>$authGroup,'auth'=>$auth,'ru'=>$ru]); View::assign(['authGroup'=>$authGroup,'auth'=>$auth,'ru'=>$ru,'rus'=>$rus]);
return View::fetch('roleedit'); return View::fetch('roleedit');
} }

View File

@ -109,6 +109,7 @@ class Index extends AdminController
->join('user u','a.user_id = u.id') ->join('user u','a.user_id = u.id')
->join('cate c','a.cate_id = c.id') ->join('cate c','a.cate_id = c.id')
->field('a.id as aid,title,name,catename,pv') ->field('a.id as aid,title,name,catename,pv')
->where('a.delete_time',0)
->whereWeek('a.create_time') ->whereWeek('a.create_time')
->order('a.create_time', 'desc') ->order('a.create_time', 'desc')
->paginate(10); ->paginate(10);
@ -138,6 +139,7 @@ class Index extends AdminController
->join('user u','a.user_id = u.id') ->join('user u','a.user_id = u.id')
->join('article c','a.article_id = c.id') ->join('article c','a.article_id = c.id')
->field('a.content as content,title,c.id as cid,name') ->field('a.content as content,title,c.id as cid,name')
->where('c.delete_time',0)
->whereWeek('a.create_time') ->whereWeek('a.create_time')
->order('a.create_time', 'desc') ->order('a.create_time', 'desc')
->paginate(10); ->paginate(10);

View File

@ -15,19 +15,22 @@
{volist name="menus" id="vo1"} {volist name="menus" id="vo1"}
<ul class="layui-input-block" style="margin-top: 10px ;"> <ul class="layui-input-block" style="margin-top: 10px ;">
<li> <li>
<input type="checkbox" name="rules" class="parent" lay-skin="primary" value="{$vo1.id}" title="{$vo1.title}"> <input type="checkbox" name="rules" class="parent" lay-skin="primary" data-level="{$vo1.level}" value="{$vo1.id}" title="{$vo1.title}------|">
<ul> <ul>
{if condition="isset($vo1['children'])"} {if condition="isset($vo1['children'])"}
{volist name="vo1['children']" id="vo2"} {volist name="vo1['children']" id="vo2"}
<li>
{if condition="isset($vo2['children'])"} {if condition="isset($vo2['children'])"}
<input type="checkbox" name="rules" lay-skin="primary" value="{$vo2.id}" title="{$vo2.title}"> <input type="checkbox" name="rules" class="parent" lay-skin="primary" data-level="{$vo2.level}" value="{$vo2.id}" title="{$vo2.title}">
{volist name="vo2['children']" id="vo3"} {volist name="vo2['children']" id="vo3"}
<input type="checkbox" name="rules" lay-skin="primary" id="{$vo3.id}" value="{$vo3.id}" title="{$vo3.title}"> <input type="checkbox" name="rules" lay-skin="primary" id="{$vo3.id}" data-level="{$vo3.level}" value="{$vo3.id}" title="{$vo3.title}">
{/volist} {/volist}
{else /} {else /}
<input type="checkbox" name="rules" lay-skin="primary" id="{$vo2.id}" value="{$vo2.id}" title="{$vo2.title}"> <input type="checkbox" name="rules" lay-skin="primary" id="{$vo2.id}" data-level="{$vo2.level}" value="{$vo2.id}" title="{$vo2.title}">
{/if} {/if}
</li>
{/volist} {/volist}
{/if} {/if}
</ul> </ul>
@ -59,38 +62,78 @@
,form = layui.form ; ,form = layui.form ;
form.on('checkbox()', function(data){ form.on('checkbox()', function(data){
var pc = data.elem.classList; //获取选中的checkbox的class属性 //var pc = data.elem.classList; //获取选中的checkbox的class属性
var othis = $(data.elem);
var level = $(data.elem).attr('data-level');
//选择
if(data.elem.checked==true){ if(data.elem.checked==true){
if(pc=="parent"){
var c =$(data.elem).siblings().children("input[type='checkbox']"); //主菜单
if(level === '0'){
var c =$(data.elem).siblings().find("input[type='checkbox']");
c.each(function(){ c.each(function(){
var e = $(this); var e = $(this);
e.next().addClass("layui-form-checked"); e.next().addClass("layui-form-checked");
}); });
}else{
$(data.elem).parent().prev().addClass("layui-form-checked"); }
//子菜单及子项
if(level === '1'){
var c = $(data.elem).siblings("input[type='checkbox']");
c.each(function(){
var e = $(this);
e.next().addClass("layui-form-checked");
});
$(data.elem).parent().parent().prev().addClass("layui-form-checked");
}
//子项
if(level === '2'){
$(data.elem).siblings('div:first').addClass("layui-form-checked");
$(data.elem).parent().parent().prev().addClass("layui-form-checked");
} }
}else{ }else{
if(pc=="parent"){ //取消
var c =$(data.elem).siblings().children("input[type='checkbox']");
if(level === '0'){
var c =$(data.elem).siblings().find("input[type='checkbox']");
c.each(function(){ c.each(function(){
var e = $(this); var e = $(this);
e.next().removeClass("layui-form-checked"); e.next().removeClass("layui-form-checked");
}); });
}else{
var c = $(data.elem).siblings("div");
var count =0;
c.each(function(){
var is = $(this).get(0).classList;
if(is.length==3){
count++;
}
});
if(count>0){
}else{ }
$(data.elem).parent().prev().removeClass("layui-form-checked");
if(level === '1'){
var c = $(data.elem).siblings("input[type='checkbox']");
c.each(function(){
var e = $(this);
e.next().removeClass("layui-form-checked");
});
//子项为0菜单取消选择
var s = $(data.elem).parent().parent().children('li').children('div:first-of-type .layui-form-checked');
if(s.length === 0){
$(data.elem).parent().parent().prev().removeClass("layui-form-checked");
}
}
//子项
if(level === '2'){
var t = othis.siblings('div .layui-form-checked');
if(t.length == 1){
$(data.elem).siblings('div:first').removeClass("layui-form-checked");
}
//子项为0菜单取消选择
var s = $(data.elem).parent().parent().children('li').children('div:first-of-type .layui-form-checked');
if(s.length === 0){
$(data.elem).parent().parent().prev().removeClass("layui-form-checked");
} }
} }
} }

View File

@ -23,19 +23,22 @@
{volist name="menus" id="vo1"} {volist name="menus" id="vo1"}
<ul class="layui-input-block" style="margin-top: 10px ;"> <ul class="layui-input-block" style="margin-top: 10px ;">
<li> <li>
<input type="checkbox" name="rules" class="parent" lay-skin="primary" value="{$vo1.id}" title="{$vo1.title}"> <input type="checkbox" name="rules" class="parent" lay-skin="primary" data-level="{$vo1.level}" value="{$vo1.id}" title="{$vo1.title}------|" {if (in_array($vo1.id,$rus))} checked {/if}>
<ul> <ul>
{if condition="isset($vo1['children'])"} {if condition="isset($vo1['children'])"}
{volist name="vo1['children']" id="vo2"} {volist name="vo1['children']" id="vo2"}
<li>
{if condition="isset($vo2['children'])"} {if condition="isset($vo2['children'])"}
<input type="checkbox" name="rules" class="parent" lay-skin="primary" value="{$vo2.id}" title="{$vo2.title}"> <input type="checkbox" name="rules" class="parent" lay-skin="primary" data-level="{$vo2.level}" value="{$vo2.id}" title="{$vo2.title}" {if (in_array($vo2.id,$rus))} checked {/if}>
{volist name="vo2['children']" id="vo3"} {volist name="vo2['children']" id="vo3"}
<input type="checkbox" name="rules" lay-skin="primary" id="{$vo3.id}" value="{$vo3.id}" title="{$vo3.title}"> <input type="checkbox" name="rules" lay-skin="primary" id="{$vo3.id}" data-level="{$vo3.level}" value="{$vo3.id}" title="{$vo3.title}" {if (in_array($vo3.id,$rus))} checked {/if}>
{/volist} {/volist}
{else /} {else /}
<input type="checkbox" name="rules" lay-skin="primary" id="{$vo2.id}" value="{$vo2.id}" title="{$vo2.title}"> <input type="checkbox" name="rules" lay-skin="primary" id="{$vo2.id}" data-level="{$vo2.level}" value="{$vo2.id}" title="{$vo2.title}" {if (in_array($vo2.id,$rus))} checked {/if}>
{/if} {/if}
</li>
{/volist} {/volist}
{/if} {/if}
</ul> </ul>
@ -59,20 +62,6 @@
{/block} {/block}
{block name="js"} {block name="js"}
<script type="text/javascript">
$(document).ready(function(){
var name = "{$ru}";
var names = name.split(",");
var inputs = $('input[name=rules]');
for (var i =0;i<inputs.length;i++) {
for (var n =0;n<names.length;n++) {
if (names[n]===inputs[i].value) {
inputs[i].checked = true;
}
}
}
});
</script>
<script> <script>
layui.config({ layui.config({
@ -84,39 +73,90 @@
,form = layui.form ,form = layui.form
,table = layui.table; ,table = layui.table;
// var name = "{$ru}";
// var names = name.split(",");
// var inputs = $('input[name=rules]');
// for (var i =0;i<inputs.length;i++) {
// for (var n =0;n<names.length;n++) {
// if (names[n]===inputs[i].value) {
// inputs[i].checked = true;
// }
// }
// }
form.on('checkbox()', function(data){ form.on('checkbox()', function(data){
var pc = data.elem.classList; //获取选中的checkbox的class属性 //var pc = data.elem.classList; //获取选中的checkbox的class属性
var othis = $(data.elem);
var level = $(data.elem).attr('data-level');
//选择
if(data.elem.checked==true){ if(data.elem.checked==true){
if(pc=="parent"){
var c =$(data.elem).siblings().children("input[type='checkbox']"); //主菜单
if(level === '0'){
var c =$(data.elem).siblings().find("input[type='checkbox']");
c.each(function(){ c.each(function(){
var e = $(this); var e = $(this);
e.next().addClass("layui-form-checked"); e.next().addClass("layui-form-checked");
}); });
}else{
$(data.elem).parent().prev().addClass("layui-form-checked"); }
//子菜单及子项
if(level === '1'){
var c = $(data.elem).siblings("input[type='checkbox']");
c.each(function(){
var e = $(this);
e.next().addClass("layui-form-checked");
});
$(data.elem).parent().parent().prev().addClass("layui-form-checked");
}
//子项
if(level === '2'){
$(data.elem).siblings('div:first').addClass("layui-form-checked");
$(data.elem).parent().parent().prev().addClass("layui-form-checked");
} }
}else{ }else{
if(pc=="parent"){ //取消
var c =$(data.elem).siblings().children("input[type='checkbox']");
if(level === '0'){
var c =$(data.elem).siblings().find("input[type='checkbox']");
c.each(function(){ c.each(function(){
var e = $(this); var e = $(this);
e.next().removeClass("layui-form-checked"); e.next().removeClass("layui-form-checked");
}); });
}else{
var c = $(data.elem).siblings("div");
var count =0;
c.each(function(){
var is = $(this).get(0).classList;
if(is.length==3){
count++;
}
});
if(count>0){
}else{ }
$(data.elem).parent().prev().removeClass("layui-form-checked");
if(level === '1'){
var c = $(data.elem).siblings("input[type='checkbox']");
c.each(function(){
var e = $(this);
e.next().removeClass("layui-form-checked");
});
//子项为0菜单取消选择
var s = $(data.elem).parent().parent().children('li').children('div:first-of-type .layui-form-checked');
if(s.length === 0){
$(data.elem).parent().parent().prev().removeClass("layui-form-checked");
}
}
//子项
if(level === '2'){
var t = othis.siblings('div .layui-form-checked');
if(t.length == 1){
$(data.elem).siblings('div:first').removeClass("layui-form-checked");
}
//子项为0菜单取消选择
var s = $(data.elem).parent().parent().children('li').children('div:first-of-type .layui-form-checked');
if(s.length === 0){
$(data.elem).parent().parent().prev().removeClass("layui-form-checked");
} }
} }
} }

View File

@ -53,10 +53,10 @@ class AdminController extends \app\BaseController
/** /**
* 获取角色菜单 * 获取角色菜单
*/ */
protected function getMenus() protected function getMenus($type)
{ {
$menu = []; $menu = [];
$auth_rule_list = Db::name('auth_rule')->where(['status'=> 1])->order(['sort' => 'ASC', 'id' => 'ASC'])->select(); $auth_rule_list = Db::name('auth_rule')->where(['status'=> 1])->where('type',$type)->order(['sort' => 'ASC', 'id' => 'ASC'])->select();
//var_export($auth_rule_list); //var_export($auth_rule_list);
foreach ($auth_rule_list as $value) { foreach ($auth_rule_list as $value) {