/*
|
* @Company: hugeInfo
|
* @Author: lwh
|
* @Date: 2022-03-04 14:18:15
|
* @LastEditTime: 2022-05-16 17:12:14
|
* @LastEditors: lwh
|
* @Version: 1.0.0
|
* @Description: 树形结构全选或全不选效果方法
|
*/
|
//树形结构全选或全不选效果 (神秘代码,不要乱动!!!)
|
export default function threeFunction(data, treeList, checked) {
|
let list = treeList.map((apps) => ({
|
...apps,
|
checked: apps.value == data.value ? checked : apps.checked ? apps.checked : false,
|
children: (apps.children || []).map((moudles) => ({
|
...moudles,
|
checked: apps.value == data.value ? checked : moudles.value == data.value ? checked : moudles.checked,
|
test5: flatten(apps.children)
|
.filter((items) => items.labelType == '3')
|
.filter((funs) => funs.checked !== true),
|
children: moudles.children
|
? moudles.children.map((menus) => ({
|
...menus,
|
checked: apps.value == data.value ? checked : moudles.value == data.value ? checked : menus.value == data.value ? checked : menus.checked,
|
children: menus.children
|
? menus.children.map((funs) => ({
|
...funs,
|
checked:
|
apps.value == data.value
|
? checked
|
: moudles.value == data.value
|
? checked
|
: menus.value == data.value
|
? checked
|
: funs.value == data.value
|
? checked
|
: funs.checked,
|
}))
|
: [],
|
}))
|
: [],
|
})),
|
}));
|
list = list.map((apps) => ({
|
...apps,
|
indeterminate:
|
apps.value == data.value || flatten(apps.children).filter((menus) => menus.value == data.value).length > 0
|
? flatten(apps.children)
|
.filter((items) => items.labelType == '3')
|
.filter((funs) => funs.checked == true).length == 0 ||
|
flatten(apps.children)
|
.filter((items) => items.labelType == '3')
|
.filter((funs) => funs.checked !== true).length == 0
|
? false
|
: true
|
: apps.indeterminate,
|
test: flatten(apps.children),
|
test1:
|
flatten(apps.children)
|
.filter((items) => items.labelType == '3')
|
.filter((funs) => funs.checked == true).length == 0,
|
test2:
|
flatten(apps.children)
|
.filter((items) => items.labelType == '3')
|
.filter((funs) => funs.checked !== true).length == 0,
|
checked:
|
flatten(apps.children).filter((funs) => funs.value == data.value).length > 0
|
? flatten(apps.children)
|
.filter((items) => items.labelType == '3')
|
.filter((funs) => funs.checked == true).length > 0
|
? true
|
: false
|
: apps.checked,
|
children: apps.children.map((modules) => ({
|
...modules,
|
indeterminate:
|
apps.value == data.value || flatten(apps.children).filter((menus) => menus.value == data.value).length > 0
|
? flatten(modules.children)
|
.filter((items) => items.labelType == '3')
|
.filter((funs) => funs.checked == true).length == 0 ||
|
flatten(modules.children)
|
.filter((items) => items.labelType == '3')
|
.filter((funs) => funs.checked !== true).length == 0
|
? false
|
: true
|
: modules.indeterminate,
|
checked:
|
flatten(modules.children).filter((funs) => funs.value == data.value).length > 0
|
? flatten(modules.children)
|
.filter((items) => items.labelType == '3')
|
.filter((funs) => funs.checked == true).length > 0
|
? true
|
: false
|
: modules.checked,
|
children: modules.children.map((menus) => ({
|
...menus,
|
indeterminate:
|
apps.value == data.value || flatten(apps.children).filter((menus) => menus.value == data.value).length > 0
|
? flatten(menus.children)
|
.filter((items) => items.labelType == '3')
|
.filter((funs) => funs.checked == true).length == 0 ||
|
flatten(menus.children)
|
.filter((items) => items.labelType == '3')
|
.filter((funs) => funs.checked !== true).length == 0
|
? false
|
: true
|
: menus.indeterminate,
|
checked:
|
flatten(menus.children).filter((funs) => funs.value == data.value).length > 0
|
? flatten(menus.children).filter((funs) => funs.checked == true).length > 0
|
? true
|
: false
|
: menus.checked,
|
})),
|
})),
|
}));
|
|
return list;
|
}
|
|
// 递归处理多维数组转为一维数组
|
function flatten(arr) {
|
var res = [];
|
for (var i = 0; i < arr.length; i++) {
|
var item = arr[i];
|
if (Array.isArray(item)) {
|
var newArr = flatten(item);
|
res = res.concat(newArr);
|
} else {
|
res.push({
|
label: item.label,
|
appClient: item.appClient,
|
parentId: item.parentId,
|
value: item.value,
|
labelType: item.labelType,
|
checked: item.checked,
|
url:item.url,
|
tag:item.tag,
|
icon:item.icon,
|
});
|
}
|
|
if (Array.isArray(item.children)) {
|
var newArr = flatten(item.children, item.id);
|
res = res.concat(newArr);
|
}
|
}
|
return res;
|
}
|