菜单更新完善授权信息
This commit is contained in:
parent
650e5ff65b
commit
4d87561462
@ -24,23 +24,41 @@
|
||||
<div class="td module">{{item.meta.title}}</div>
|
||||
<div class="td check"><el-checkbox v-model="item.checked" :indeterminate="item.isCheck" @change="menuCheckChange(item)" :size="size" /></div>
|
||||
<div class="td tdChild">
|
||||
<div class="nextTd" v-for="(em,ind) in item.children" :key="ind">
|
||||
<div class="tdName menu">
|
||||
<el-checkbox @change="moduleCheckChange(item,em)" :indeterminate="em.isCheck" v-model="em.checked" :size="size">{{em.meta.title}}</el-checkbox>
|
||||
</div>
|
||||
<div class="tdName authority">
|
||||
<div class="childTr">
|
||||
<div class="preBox" v-for="(li,lidex) in em.meta.data_permission" :key="lidex">
|
||||
<span v-if="li.title.length<9">
|
||||
<el-checkbox @change="checkChange(item,em)" v-model="li.checked" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</span>
|
||||
<el-tooltip :content="li.title" placement="top" v-else>
|
||||
<el-checkbox @change="checkChange(item,em)" v-model="li.checked" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</el-tooltip>
|
||||
<template v-if="item.children">
|
||||
<div class="nextTd" v-for="(em,ind) in item.children" :key="ind">
|
||||
<div class="tdName menu">
|
||||
<el-checkbox @change="moduleCheckChange(item,em)" :indeterminate="em.isCheck" v-model="em.checked" :size="size">{{em.meta.title}}</el-checkbox>
|
||||
</div>
|
||||
<div class="tdName authority">
|
||||
<div class="childTr">
|
||||
<div class="preBox" v-for="(li,lidex) in em.meta.data_permission" :key="lidex">
|
||||
<span v-if="li.title.length<9">
|
||||
<el-checkbox @change="checkChange(item,em)" v-model="li.checked" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</span>
|
||||
<el-tooltip :content="li.title" placement="top" v-else>
|
||||
<el-checkbox @change="checkChange(item,em)" v-model="li.checked" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="nextTd">
|
||||
<div class="tdName tdNameNoneBorder authority">
|
||||
<div class="childTr">
|
||||
<div class="preBox" v-for="(li,lidex) in item.meta.data_permission" :key="lidex">
|
||||
<span v-if="li.title.length<9">
|
||||
<el-checkbox @change="checkChange(item)" v-model="li.checked" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</span>
|
||||
<el-tooltip :content="li.title" placement="top" v-else>
|
||||
<el-checkbox @change="checkChange(item)" v-model="li.checked" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -109,6 +127,15 @@ export default {
|
||||
let ed = item.children.length;
|
||||
item.isCheck = (check>0 && check != ed) || (isCheck>0 && check!=ed)?true:false;
|
||||
item.checked = check>0 && check== ed?true:false;
|
||||
}else{
|
||||
if(item.meta.data_permission && item.meta.data_permission.length>0){
|
||||
let check = item.meta.data_permission.filter((li)=>li.checked).length;
|
||||
let ed = item.meta.data_permission.length;
|
||||
item.isCheck = check>0 && check != ed?true:false;
|
||||
if(ed>0){
|
||||
item.checked = check>0 && check== ed?true:false;
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
this.list = res.data;
|
||||
@ -131,6 +158,12 @@ export default {
|
||||
if(item.checked){
|
||||
item.isCheck = false;
|
||||
}
|
||||
}else{
|
||||
if(item.meta.data_permission && item.meta.data_permission.length>0){
|
||||
item.meta.data_permission.forEach((li)=>{
|
||||
li.checked = e;
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
@ -149,6 +182,16 @@ export default {
|
||||
em.isCheck = false;
|
||||
}
|
||||
})
|
||||
}else{
|
||||
item.checked = e.checked;
|
||||
if(item.meta.data_permission && item.meta.data_permission.length>0){
|
||||
item.meta.data_permission.forEach((li)=>{
|
||||
li.checked = e.checked;
|
||||
})
|
||||
}
|
||||
if(item.checked){
|
||||
item.isCheck = false;
|
||||
}
|
||||
}
|
||||
if(item.checked){
|
||||
item.isCheck = false;
|
||||
@ -193,12 +236,19 @@ export default {
|
||||
em.isCheck = check>0 && check != ed?true:false;
|
||||
}
|
||||
})
|
||||
let check = item.children.filter((em)=>em.checked).length;
|
||||
let isCheck = item.children.filter((em)=>em.isCheck).length;
|
||||
let ed = item.children.length;
|
||||
item.checked = check>0 && check == ed?true:false;
|
||||
item.isCheck = (check>0 || isCheck>0) && ed!=check?true:false;
|
||||
|
||||
}else{
|
||||
let check = item.meta.data_permission.filter((em)=>em.checked).length;
|
||||
let ed = item.meta.data_permission.length;
|
||||
item.checked = check>0 && check == ed?true:false;
|
||||
item.isCheck = check>0 && check != ed?true:false;
|
||||
}
|
||||
let check = item.children.filter((em)=>em.checked).length;
|
||||
let isCheck = item.children.filter((em)=>em.isCheck).length;
|
||||
let ed = item.children.length;
|
||||
item.checked = check>0 && check == ed?true:false;
|
||||
item.isCheck = (check>0 || isCheck>0) && ed!=check?true:false;
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
@ -245,6 +295,19 @@ export default {
|
||||
})
|
||||
}
|
||||
})
|
||||
}else{
|
||||
if(item.meta.data_permission && item.meta.data_permission.length>0){
|
||||
let list = item.meta.data_permission.filter(e=>e.checked).map(u=>{
|
||||
let obj = {
|
||||
actions:u.actions,
|
||||
title:u.title
|
||||
}
|
||||
return obj
|
||||
});
|
||||
if(list.length>0){
|
||||
obj.data_permission.push({[item.meta.code]:list})
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
return obj
|
||||
@ -340,6 +403,9 @@ export default {
|
||||
.tdName:last-child{
|
||||
border-left: 1px solid var(--el-border-color-light);
|
||||
}
|
||||
.tdNameNoneBorder{
|
||||
border-left: none !important;
|
||||
}
|
||||
.tdName{
|
||||
padding: 0 10px;
|
||||
min-height: 33px;
|
||||
|
||||
@ -16,25 +16,43 @@
|
||||
</div>
|
||||
</div>
|
||||
<template v-if="item.show">
|
||||
<div class="tr" v-for="(em,ind) in item.children" :key="ind">
|
||||
<div class="td module">
|
||||
<el-checkbox :indeterminate="em.isCheck" v-model="em.checked" @change="moduleCheckChange(item,em)" :size="size">{{em.meta.title}}</el-checkbox>
|
||||
<template v-if="item.children">
|
||||
<div class="tr" v-for="(em,ind) in item.children" :key="ind">
|
||||
<div class="td module">
|
||||
<el-checkbox :indeterminate="em.isCheck" v-model="em.checked" @change="moduleCheckChange(item,em)" :size="size">{{em.meta.title}}</el-checkbox>
|
||||
</div>
|
||||
<div class="td tdChild">
|
||||
<div class="nextTd">
|
||||
<div class="tdName authority">
|
||||
<div class="boxName" v-for="(li,ind) in em.meta.data_permission" :key="ind">
|
||||
<span v-if="li.title.length<9">
|
||||
<el-checkbox v-model="li.checked" :size="size" @change="checkChange(item,em)"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</span>
|
||||
<el-tooltip :content="li.title" placement="top" v-else>
|
||||
<el-checkbox v-model="li.checked" :size="size" @change="checkChange(item,em)"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="td tdChild">
|
||||
<div class="nextTd">
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="tr">
|
||||
<div class="td tdChild">
|
||||
<div class="tdName authority">
|
||||
<div class="boxName" v-for="(li,ind) in em.meta.data_permission" :key="ind">
|
||||
<div class="boxName" v-for="(li,ind) in item.meta.data_permission" :key="ind">
|
||||
<span v-if="li.title.length<9">
|
||||
<el-checkbox v-model="li.checked" :size="size" @change="checkChange(item,em)"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
<el-checkbox v-model="li.checked" :size="size" @change="checkChange(item)"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</span>
|
||||
<el-tooltip :content="li.title" placement="top" v-else>
|
||||
<el-checkbox v-model="li.checked" :size="size" @change="checkChange(item,em)"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
<el-checkbox v-model="li.checked" :size="size" @change="checkChange(item)"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
@ -77,9 +95,17 @@ export default {
|
||||
|
||||
item.isCheck = (check>0 && check != ed) || (isCheck>0 && check != ed)?true:false;
|
||||
item.checked = check>0 && check== ed?true:false;
|
||||
}else{
|
||||
if(item.meta.data_permission && item.meta.data_permission.length>0){
|
||||
let check = item.meta.data_permission.filter((li)=>li.checked).length;
|
||||
let ed = item.meta.data_permission.length;
|
||||
item.isCheck = check>0 && check != ed?true:false;
|
||||
if(ed>0){
|
||||
item.checked = check>0 && check== ed?true:false;
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
this.list = JSON.parse(JSON.stringify(val));
|
||||
}
|
||||
}
|
||||
@ -103,6 +129,16 @@ export default {
|
||||
em.isCheck = false;
|
||||
}
|
||||
})
|
||||
}else{
|
||||
item.checked = e.checked;
|
||||
if(item.meta.data_permission && item.meta.data_permission.length>0){
|
||||
item.meta.data_permission.forEach((li)=>{
|
||||
li.checked = e.checked;
|
||||
})
|
||||
}
|
||||
if(item.checked){
|
||||
item.isCheck = false;
|
||||
}
|
||||
}
|
||||
if(item.checked){
|
||||
item.isCheck = false;
|
||||
@ -147,12 +183,17 @@ export default {
|
||||
em.isCheck = check>0 && check != ed?true:false;
|
||||
}
|
||||
})
|
||||
let check = item.children.filter((em)=>em.checked).length;
|
||||
let isCheck = item.children.filter((em)=>em.isCheck).length;
|
||||
let ed = item.children.length;
|
||||
item.checked = check>0 && check == ed?true:false;
|
||||
item.isCheck = (check>0 || isCheck>0) && ed!=check?true:false;
|
||||
}else{
|
||||
let check = item.meta.data_permission.filter((em)=>em.checked).length;
|
||||
let ed = item.meta.data_permission.length;
|
||||
item.checked = check>0 && check == ed?true:false;
|
||||
item.isCheck = check>0 && check != ed?true:false;
|
||||
}
|
||||
let check = item.children.filter((em)=>em.checked).length;
|
||||
let isCheck = item.children.filter((em)=>em.isCheck).length;
|
||||
let ed = item.children.length;
|
||||
item.checked = check>0 && check == ed?true:false;
|
||||
item.isCheck = (check>0 || isCheck>0) && ed!=check?true:false;
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@ -341,6 +341,19 @@
|
||||
})
|
||||
}
|
||||
})
|
||||
}else{
|
||||
if(item.meta.data_permission && item.meta.data_permission.length>0){
|
||||
let list = item.meta.data_permission.filter(e=>e.checked).map(u=>{
|
||||
let obj = {
|
||||
actions:u.actions,
|
||||
title:u.title
|
||||
}
|
||||
return obj
|
||||
});
|
||||
if(list.length>0){
|
||||
obj.data_permission.push({[item.meta.code]:list})
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
return obj
|
||||
|
||||
@ -31,23 +31,41 @@
|
||||
<div class="td module">{{item.meta.title}}</div>
|
||||
<div class="td check"><el-checkbox v-model="item.checked" :indeterminate="item.isCheck" @change="menuCheckChange(item)" :disabled="showPermission" :size="size" /></div>
|
||||
<div class="td tdChild">
|
||||
<div class="nextTd" v-for="(em,ind) in item.children" :key="ind">
|
||||
<div class="tdName menu">
|
||||
<el-checkbox @change="moduleCheckChange(item,em)" :indeterminate="em.isCheck" v-model="em.checked" :disabled="showPermission" :size="size">{{em.meta.title}}</el-checkbox>
|
||||
</div>
|
||||
<div class="tdName authority">
|
||||
<div class="childTr">
|
||||
<div class="preBox" v-for="(li,lidex) in em.meta.data_permission" :key="lidex">
|
||||
<span v-if="li.title.length < 9">
|
||||
<el-checkbox @change="checkChange(item,em,li)" v-model="li.checked" :disabled="showPermission" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</span>
|
||||
<el-tooltip :content="li.title" placement="top" v-else>
|
||||
<el-checkbox @change="checkChange(item,em,li)" v-model="li.checked" :disabled="showPermission" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</el-tooltip>
|
||||
<template v-if="item.children">
|
||||
<div class="nextTd" v-for="(em,ind) in item.children" :key="ind">
|
||||
<div class="tdName menu">
|
||||
<el-checkbox @change="moduleCheckChange(item,em)" :indeterminate="em.isCheck" v-model="em.checked" :disabled="showPermission" :size="size">{{em.meta.title}}</el-checkbox>
|
||||
</div>
|
||||
<div class="tdName authority">
|
||||
<div class="childTr">
|
||||
<div class="preBox" v-for="(li,lidex) in em.meta.data_permission" :key="lidex">
|
||||
<span v-if="li.title.length < 9">
|
||||
<el-checkbox @change="checkChange(item,em,li)" v-model="li.checked" :disabled="showPermission" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</span>
|
||||
<el-tooltip :content="li.title" placement="top" v-else>
|
||||
<el-checkbox @change="checkChange(item,em,li)" v-model="li.checked" :disabled="showPermission" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="nextTd">
|
||||
<div class="tdName tdNameNoneBorder authority">
|
||||
<div class="childTr">
|
||||
<div class="preBox" v-for="(li,lidex) in item.meta.data_permission" :key="lidex">
|
||||
<span v-if="li.title.length<9">
|
||||
<el-checkbox @change="checkChange(item)" v-model="li.checked" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</span>
|
||||
<el-tooltip :content="li.title" placement="top" v-else>
|
||||
<el-checkbox @change="checkChange(item)" v-model="li.checked" :size="size"><span class="name">{{li.title}}</span></el-checkbox>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -120,6 +138,15 @@ export default {
|
||||
let ed = item.children.length;
|
||||
item.isCheck = (check>0 && check != ed) || (isCheck>0 && check !=ed)?true:false;
|
||||
item.checked = check>0 && check== ed?true:false;
|
||||
}else{
|
||||
if(item.meta.data_permission && item.meta.data_permission.length>0){
|
||||
let check = item.meta.data_permission.filter((li)=>li.checked).length;
|
||||
let ed = item.meta.data_permission.length;
|
||||
item.isCheck = check>0 && check != ed?true:false;
|
||||
if(ed>0){
|
||||
item.checked = check>0 && check== ed?true:false;
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
this.list = res.data.menu;
|
||||
@ -231,6 +258,9 @@ export default {
|
||||
padding: 0 10px;
|
||||
min-height: 33px;
|
||||
}
|
||||
.tdNameNoneBorder{
|
||||
border-left: none !important;
|
||||
}
|
||||
.childTr{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user