角色管理

master
jiangyunjie 6 years ago
parent c290cb9b83
commit 5f0787fcf3

@ -99,18 +99,18 @@
</div> </div>
<div style="padding-left: 15px;"> <div style="padding-left: 15px;">
<!--1--> <!--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;"> <div style="border-bottom: 1px solid #e9e9e9;height: 49px;line-height: 49px;">
<Checkbox :indeterminate="item.indeterminate" :value="item.check" <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> </div>
<!--2--> <!--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;"> <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"> <CheckboxGroup v-model="item.checkArr">
<Checkbox style="margin-left: 30px;color:#697882" :label="itemSon.id" <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" :key="itemSon.id"
:indeterminate="itemSon.indeterminate" :value="itemSon.check"> :indeterminate="itemSon.indeterminate" :value="itemSon.check">
{{itemSon.name}} {{itemSon.name}}
@ -120,8 +120,8 @@
</div> </div>
<!--3--> <!--3-->
<div style="float: left;width: 80%;height: 49px;line-height: 49px;border-bottom: 1px solid #E4E9F1;"> <div style="float: left;width: 80%;height: 49px;line-height: 49px;border-bottom: 1px solid #E4E9F1;">
<CheckboxGroup v-model="itemSon.checkArr"> <CheckboxGroup v-model="itemSon.checkArr" @on-change="handleGrandSonCheckChange(itemSon, item)">
<Checkbox v-for="itemGrandson in itemSon.sonPermissionList" @on-change="handleGrandSonCheckChange(itemSonIndex, index)" <Checkbox v-for="itemGrandson in itemSon.sonPermissionList"
:key="itemGrandson.id" :key="itemGrandson.id"
style="margin-left: 30px;color:#697882" :label="itemGrandson.id" :value="itemGrandson.check"> style="margin-left: 30px;color:#697882" :label="itemGrandson.id" :value="itemGrandson.check">
{{itemGrandson.name}} {{itemGrandson.name}}
@ -296,8 +296,8 @@
}, },
methods: { methods: {
//- //-
handleCheckAll (index) { handleItemCheckAll (item) {
let item = this.permissionList[index]; // let item = this.permissionList[index];
if (item.indeterminate) { if (item.indeterminate) {
item.check = false; item.check = false;
} else { } else {
@ -307,38 +307,28 @@
// //
if (item.check) { if (item.check) {
// //
item.checkArr = []; item.sonPermissionList.forEach(function (itemSon) {
for(let i = 0; i < item.sonPermissionList.length; i++) { itemSon.check = true;
item.sonPermissionList[i].check = true; item.checkArr.push(itemSon.id);
item.checkArr.push(item.sonPermissionList[i].id);
}
} else {
//
item.checkArr = [];
for(let i = 0; i < item.sonPermissionList.length; i++) {
item.sonPermissionList[i].check = false;
}
}
// //
let sonPermission = item.sonPermissionList; let itemGrandsonList = itemSon.sonPermissionList;
if (item.check) { itemGrandsonList.forEach(function (grandson) {
// itemSon.checkArr.push(grandson.id);
sonPermission.forEach(function (sonItem) {
let grandsonPermissionList = sonItem.sonPermissionList;
grandsonPermissionList.forEach(function (grandsonItem) {
sonItem.checkArr.push(grandsonItem.id);
})
}) })
});
} else { } else {
// //
sonPermission.checkArr = []; item.checkArr = [];
item.sonPermissionList.forEach(function (itemSon) {
itemSon.check = false;
itemSon.checkArr = [];
});
} }
// this.saveRolePermissionApi();
}, },
//- //-
handleSonCheckAll(itemSonIndex, index) { handleItemSonCheckAll(itemSon, item) {
let item = this.permissionList[index]; /*let item = this.permissionList[index];
let itemSon = this.permissionList[index].sonPermissionList[itemSonIndex]; let itemSon = this.permissionList[index].sonPermissionList[itemSonIndex];*/
if (itemSon.indeterminate) { if (itemSon.indeterminate) {
itemSon.check = false; itemSon.check = false;
} else { } else {
@ -349,7 +339,6 @@
let sonPermission = itemSon.sonPermissionList; let sonPermission = itemSon.sonPermissionList;
if (itemSon.check) { if (itemSon.check) {
// //
itemSon.checkArr = [];
sonPermission.forEach(function (sonItem) { sonPermission.forEach(function (sonItem) {
if (itemSon.checkArr.indexOf(sonItem.id) < 0) { if (itemSon.checkArr.indexOf(sonItem.id) < 0) {
itemSon.checkArr.push(sonItem.id); itemSon.checkArr.push(sonItem.id);
@ -359,10 +348,13 @@
item.checkArr.push(itemSon.id); item.checkArr.push(itemSon.id);
} }
} else { } else {
// //
itemSon.checkArr = []; itemSon.checkArr = [];
//
let curItemSonIndex = item.checkArr.indexOf(itemSon.id);
item.checkArr.splice(curItemSonIndex, curItemSonIndex + 1);
} }
// //
let sonPermissionCount = this.permissionList.length; let sonPermissionCount = this.permissionList.length;
if (item.checkArr.length === sonPermissionCount) { if (item.checkArr.length === sonPermissionCount) {
item.indeterminate = false; item.indeterminate = false;
@ -379,13 +371,14 @@
console.log(item); console.log(item);
}, },
//- //-
handleGrandSonCheckChange (itemSonIndex, index) { handleGrandSonCheckChange (itemSon, item) {
let item = this.permissionList[index]; /*let item = this.permissionList[index];
let itemSon = this.permissionList[index].sonPermissionList[itemSonIndex]; let itemSon = this.permissionList[index].sonPermissionList[itemSonIndex];*/
let sonPermissionCount = itemSon.sonPermissionList.length; let sonPermissionCount = itemSon.sonPermissionList.length;
if (itemSon.checkArr.length === sonPermissionCount) { if (itemSon.checkArr.length === sonPermissionCount) {
itemSon.indeterminate = false; itemSon.indeterminate = false;
itemSon.check = true; itemSon.check = true;
item.checkArr.push(itemSon.id);
} else if (itemSon.checkArr.length > 0) { } else if (itemSon.checkArr.length > 0) {
itemSon.indeterminate = true; itemSon.indeterminate = true;
itemSon.check = false; itemSon.check = false;

Loading…
Cancel
Save