1.數據結構介紹
[
{
"pid":1028,
"id":"2c91851f6b6f07b8016bd19ab465000b",
"siteId":"2c9185c36a262618016ad3f8c2a4001c",
"shape":"",
"name":"item1",
"category":"voice",
"point":"10",
"type":1,
"url":"",
"icon":"smile",
"parentId":null,
"isInherit":false,
"createTime":"2019-07-08T12:41:45.000+0000",
"isParent":null,
"childs":[
{
"pid":1028,
"id":"2c91851f6b6f07b8016bqwqw00b",
"siteId":"2c9185c36a262618016ad3f8c2a4001c",
"shape":"",
"name":"item3",
"category":"voice",
"point":"10",
"type":1,
"url":"",
"icon":"smile",
"parentId":null,
"isInherit":false,
"createTime":"2019-07-08T12:41:45.000+0000",
"isParent":null,
"childs":[
{
"pid":1028,
"id":"2c91851f6bsdafaf07ddddw00b",
"siteId":"2c9185c36a262618016ad3f8c2a4001c",
"shape":"",
"name":"item7",
"category":"voice",
"point":"10",
"type":1,
"url":"",
"icon":"smile",
"parentId":null,
"isInherit":false,
"createTime":"2019-07-08T12:41:45.000+0000",
"isParent":null,
"childs":null
}
]
},
{
"pid":1028,
"id":"2c91851f6b6asas6bqwqw00b",
"siteId":"2c9185c36a262618016ad3f8c2a4001c",
"shape":"",
"name":"item4",
"category":"voice",
"point":"10",
"type":1,
"url":"",
"icon":"smile",
"parentId":null,
"isInherit":false,
"createTime":"2019-07-08T12:41:45.000+0000",
"isParent":null,
"childs":null
}
]
},
{
"pid":1029,
"id":"2c91851f6b6f07b8016bd19c9431000c",
"siteId":"2c9185c36a262618016ad3f8c2a4001c",
"shape":"voice",
"name":"item2",
"category":"act",
"point":"15101",
"type":2,
"url":"",
"icon":"crown",
"parentId":"2c91851f6b6f07b8016bd19ab465000b",
"isInherit":false,
"createTime":"2019-07-08T12:43:48.000+0000",
"isParent":null,
"childs":[
{
"pid":1028,
"id":"2c91851f6b6f07ddddw00b",
"siteId":"2c9185c36a262618016ad3f8c2a4001c",
"shape":"",
"name":"item5",
"category":"voice",
"point":"10",
"type":1,
"url":"",
"icon":"smile",
"parentId":null,
"isInherit":false,
"createTime":"2019-07-08T12:41:45.000+0000",
"isParent":null,
"childs":null
},
{
"pid":1028,
"id":"2c91851f6b6asasaaaqwqw00b",
"siteId":"2c9185c36a262618016ad3f8c2a4001c",
"shape":"",
"name":"item6",
"category":"voice",
"point":"10",
"type":1,
"url":"",
"icon":"smile",
"parentId":null,
"isInherit":false,
"createTime":"2019-07-08T12:41:45.000+0000",
"isParent":null,
"childs":null
}
]
}]
1.1根據勾選的最底層 子節點 ,獲取權限樹 數據
getPriTreeDataBySelectedPriIdList(treeData, priIdList){
//根據最底層子節點,獲取權限樹數據
return treeData.filter(item=>{
if(item.childs && item.childs.length > 0 ){
item.childs = this.getPriTreeDataBySelectedPriIdList(item.childs,priIdList);
return item.childs && item.childs.length >0;
}else {
return priIdList.indexOf(item.id) > -1;
}
});
},
1.2重置權限樹數據
resetTreeData(priTreeData){
//重置權限樹數據
priTreeData.map(item => {
item.isInherit = false;
if(item.childs && item.childs.length>0){
this.resetTreeData(item.childs);
}
})
},
1.3根據任意ID獲取item對象
getItemFromPriTreeData(priTreeData, priId){
//根據任意ID獲取item對象
let result = null;
for(let priItemIndex in priTreeData){
if(result !== null){
break;//這裏是關鍵
}
let priItem = priTreeData[priItemIndex];
if(priItem.id === priId){
result = priItem;
break;
}else if(priItem.childs && priItem.childs.length > 0){
result = this.getItemFromPriTreeData(priItem.childs, priId);
}
}
return result;
},
1.4父節點勾選了,勾選所有的子節點
setIsInheritValueWithParentPri(priList, isInherit){
// 遞歸的設置"是否繼承屬性"
// 父節點勾選是否繼承,子節點跟隨父節點變化 子節點變化,父節點不跟隨變化
priList.map(priItem => {
if(priItem.type !== 3){
priItem.isInherit = isInherit;
}
if(priItem.childs && priItem.childs.length > 0){
this.setIsInheritValueWithParentPri(priItem.childs, isInherit);
}
})
},
1.5設置詳情頁中---展示樹數據中的isInherit
setInheritOfShowPriTreeData(showPriTreeData, priTreeDataPriIdAndHeritObject){
// 設置詳情頁中---展示樹數據中的isInherit
showPriTreeData.map(priItem => {
priItem.isInherit = priTreeDataPriIdAndHeritObject[priItem.id];
if(priItem.childs && priItem.childs.length > 0){
this.setInheritOfShowPriTreeData(priItem.childs, priTreeDataPriIdAndHeritObject )
}
})
},
1.6設置選中的權限樹數據相關信息到priTreeDataPriIdAndHeritObject,priIdListIncludeParentPriId中
setPriTreeDataPriIdAndHeritObject(priTreeDataBySelectedPriIdList, priTreeDataPriIdAndHeritObject,priIdListIncludeParentPriId){
// 設置選中的權限樹數據相關信息到priTreeDataPriIdAndHeritObject,priIdListIncludeParentPriId中
//priTreeDataPriIdAndHeritObject是對象,key是權限ID,value是isInherit
//priIdListIncludeParentPriId 根據最底層子節點獲得的權限樹數據,把所有的權限ID都放到列表中
priTreeDataBySelectedPriIdList.map(priItem => {
priIdListIncludeParentPriId.push( priItem.id);
if(priItem.isInherit){
priTreeDataPriIdAndHeritObject[ipriItem.id] = priItem.isInherit;
}else{
priTreeDataPriIdAndHeritObject[priItem.id] = false;
}
if(priItem.childs && priItem.childs.length>0){
this.setPriTreeDataPriIdAndHeritObject(priItem.childs, priTreeDataPriIdAndHeritObject,priIdListIncludeParentPriId)
}
})
}