|
|
|
@ -99,18 +99,18 @@
|
|
|
|
|
</div>
|
|
|
|
|
<div style="padding-left: 15px;">
|
|
|
|
|
<!--1-->
|
|
|
|
|
<div v-for="(item, index) in permissionList" :key="item.id">
|
|
|
|
|
<div v-for="item in permissionList" :key="item.id">
|
|
|
|
|
<div style="border-bottom: 1px solid #e9e9e9;height: 49px;line-height: 49px;">
|
|
|
|
|
<Checkbox :indeterminate="item.indeterminate" :value="item.check"
|
|
|
|
|
@click.prevent.native="handleCheckAll(index)" style="color:#697882;margin-right: 20px;">{{item.name}}</Checkbox>
|
|
|
|
|
@click.prevent.native="handleItemCheckAll(item)" style="color:#697882;margin-right: 20px;">{{item.name}}</Checkbox>
|
|
|
|
|
</div>
|
|
|
|
|
<!--2-->
|
|
|
|
|
<div v-for="(itemSon, itemSonIndex) in item.sonPermissionList" :key="itemSon.id" style="height: 49px;">
|
|
|
|
|
<div v-for="itemSon in item.sonPermissionList" :key="itemSon.id" style="height: 49px;">
|
|
|
|
|
<div style="float: left;width: 20%;border-right: 1px solid #E4E9F1;border-bottom: 1px solid #E4E9F1;height: 49px;line-height: 49px;">
|
|
|
|
|
<CheckboxGroup v-model="item.checkArr">
|
|
|
|
|
|
|
|
|
|
<Checkbox style="margin-left: 30px;color:#697882" :label="itemSon.id"
|
|
|
|
|
@click.prevent.native="handleSonCheckAll(itemSonIndex, index)"
|
|
|
|
|
@click.prevent.native="handleItemSonCheckAll(itemSon, item)"
|
|
|
|
|
:key="itemSon.id"
|
|
|
|
|
:indeterminate="itemSon.indeterminate" :value="itemSon.check">
|
|
|
|
|
{{itemSon.name}}
|
|
|
|
@ -120,8 +120,8 @@
|
|
|
|
|
</div>
|
|
|
|
|
<!--3-->
|
|
|
|
|
<div style="float: left;width: 80%;height: 49px;line-height: 49px;border-bottom: 1px solid #E4E9F1;">
|
|
|
|
|
<CheckboxGroup v-model="itemSon.checkArr">
|
|
|
|
|
<Checkbox v-for="itemGrandson in itemSon.sonPermissionList" @on-change="handleGrandSonCheckChange(itemSonIndex, index)"
|
|
|
|
|
<CheckboxGroup v-model="itemSon.checkArr" @on-change="handleGrandSonCheckChange(itemSon, item)">
|
|
|
|
|
<Checkbox v-for="itemGrandson in itemSon.sonPermissionList"
|
|
|
|
|
:key="itemGrandson.id"
|
|
|
|
|
style="margin-left: 30px;color:#697882" :label="itemGrandson.id" :value="itemGrandson.check">
|
|
|
|
|
{{itemGrandson.name}}
|
|
|
|
@ -296,8 +296,8 @@
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
//一级权限-点击事件
|
|
|
|
|
handleCheckAll (index) {
|
|
|
|
|
let item = this.permissionList[index];
|
|
|
|
|
handleItemCheckAll (item) {
|
|
|
|
|
// let item = this.permissionList[index];
|
|
|
|
|
if (item.indeterminate) {
|
|
|
|
|
item.check = false;
|
|
|
|
|
} else {
|
|
|
|
@ -307,38 +307,28 @@
|
|
|
|
|
//二级权限全选
|
|
|
|
|
if (item.check) {
|
|
|
|
|
//全选
|
|
|
|
|
item.checkArr = [];
|
|
|
|
|
for(let i = 0; i < item.sonPermissionList.length; i++) {
|
|
|
|
|
item.sonPermissionList[i].check = true;
|
|
|
|
|
item.checkArr.push(item.sonPermissionList[i].id);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//取消全部选择
|
|
|
|
|
item.checkArr = [];
|
|
|
|
|
for(let i = 0; i < item.sonPermissionList.length; i++) {
|
|
|
|
|
item.sonPermissionList[i].check = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
item.sonPermissionList.forEach(function (itemSon) {
|
|
|
|
|
itemSon.check = true;
|
|
|
|
|
item.checkArr.push(itemSon.id);
|
|
|
|
|
//三级权限全选
|
|
|
|
|
let sonPermission = item.sonPermissionList;
|
|
|
|
|
if (item.check) {
|
|
|
|
|
//全选
|
|
|
|
|
sonPermission.forEach(function (sonItem) {
|
|
|
|
|
let grandsonPermissionList = sonItem.sonPermissionList;
|
|
|
|
|
grandsonPermissionList.forEach(function (grandsonItem) {
|
|
|
|
|
sonItem.checkArr.push(grandsonItem.id);
|
|
|
|
|
})
|
|
|
|
|
let itemGrandsonList = itemSon.sonPermissionList;
|
|
|
|
|
itemGrandsonList.forEach(function (grandson) {
|
|
|
|
|
itemSon.checkArr.push(grandson.id);
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
//取消全部选择
|
|
|
|
|
sonPermission.checkArr = [];
|
|
|
|
|
item.checkArr = [];
|
|
|
|
|
item.sonPermissionList.forEach(function (itemSon) {
|
|
|
|
|
itemSon.check = false;
|
|
|
|
|
itemSon.checkArr = [];
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// this.saveRolePermissionApi();
|
|
|
|
|
},
|
|
|
|
|
//二级权限-点击事件
|
|
|
|
|
handleSonCheckAll(itemSonIndex, index) {
|
|
|
|
|
let item = this.permissionList[index];
|
|
|
|
|
let itemSon = this.permissionList[index].sonPermissionList[itemSonIndex];
|
|
|
|
|
handleItemSonCheckAll(itemSon, item) {
|
|
|
|
|
/*let item = this.permissionList[index];
|
|
|
|
|
let itemSon = this.permissionList[index].sonPermissionList[itemSonIndex];*/
|
|
|
|
|
if (itemSon.indeterminate) {
|
|
|
|
|
itemSon.check = false;
|
|
|
|
|
} else {
|
|
|
|
@ -349,7 +339,6 @@
|
|
|
|
|
let sonPermission = itemSon.sonPermissionList;
|
|
|
|
|
if (itemSon.check) {
|
|
|
|
|
//全选
|
|
|
|
|
itemSon.checkArr = [];
|
|
|
|
|
sonPermission.forEach(function (sonItem) {
|
|
|
|
|
if (itemSon.checkArr.indexOf(sonItem.id) < 0) {
|
|
|
|
|
itemSon.checkArr.push(sonItem.id);
|
|
|
|
@ -359,10 +348,13 @@
|
|
|
|
|
item.checkArr.push(itemSon.id);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//取消全部选择
|
|
|
|
|
//取消三级全部选择
|
|
|
|
|
itemSon.checkArr = [];
|
|
|
|
|
//从二级选中数组中移除当前二级权限
|
|
|
|
|
let curItemSonIndex = item.checkArr.indexOf(itemSon.id);
|
|
|
|
|
item.checkArr.splice(curItemSonIndex, curItemSonIndex + 1);
|
|
|
|
|
}
|
|
|
|
|
//处理一级权限勾选
|
|
|
|
|
//处理一级权限勾选图标
|
|
|
|
|
let sonPermissionCount = this.permissionList.length;
|
|
|
|
|
if (item.checkArr.length === sonPermissionCount) {
|
|
|
|
|
item.indeterminate = false;
|
|
|
|
@ -379,13 +371,14 @@
|
|
|
|
|
console.log(item);
|
|
|
|
|
},
|
|
|
|
|
//三级权限-点击事件
|
|
|
|
|
handleGrandSonCheckChange (itemSonIndex, index) {
|
|
|
|
|
let item = this.permissionList[index];
|
|
|
|
|
let itemSon = this.permissionList[index].sonPermissionList[itemSonIndex];
|
|
|
|
|
handleGrandSonCheckChange (itemSon, item) {
|
|
|
|
|
/*let item = this.permissionList[index];
|
|
|
|
|
let itemSon = this.permissionList[index].sonPermissionList[itemSonIndex];*/
|
|
|
|
|
let sonPermissionCount = itemSon.sonPermissionList.length;
|
|
|
|
|
if (itemSon.checkArr.length === sonPermissionCount) {
|
|
|
|
|
itemSon.indeterminate = false;
|
|
|
|
|
itemSon.check = true;
|
|
|
|
|
item.checkArr.push(itemSon.id);
|
|
|
|
|
} else if (itemSon.checkArr.length > 0) {
|
|
|
|
|
itemSon.indeterminate = true;
|
|
|
|
|
itemSon.check = false;
|
|
|
|
|