diff --git a/src/components/menu-permission.vue b/src/components/menu-permission.vue index 05c4b9923605eb42682f60842c8c08aa180dd810..101fa03b6661317f51d7a9ad2a4e47e8fa9ae738 100644 --- a/src/components/menu-permission.vue +++ b/src/components/menu-permission.vue @@ -190,17 +190,20 @@ export default { this.uppermissions(); }, initPermissionsList() { - this.permissionsList.forEach((item) => { - this.traverse(item, (item) => { - let selected = item.selected; - let child = item.Child || []; + const getSelectedState = (item) => { + let selected = item.selected; + let child = item.Child || []; + + if (child.length > 0 && selected !== 0) { let selectedLength1 = 0; let selectedLength2 = 0; child.forEach((v) => { - if (item.selected === 1) { + let v_selected = getSelectedState(v); + + if (v_selected === 1) { selectedLength1++; - } else if (item.selected === 2) { + } else if (v_selected === 2) { selectedLength2++; } }); @@ -211,8 +214,14 @@ export default { selected = 2; } - this.$set(item, "selected", selected); - }); + item.selected = selected; + } + + return selected; + }; + + this.permissionsList.forEach((item) => { + getSelectedState(item); }); // this.$emit("change-list", this.permissionsList);