/* * @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; }