forked from gzzfw/frontEnd/gzDyh

xusd
2024-09-18 3ae864f005e8a874de01c15e14b83196a3f6f11b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/*
 * @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;
}