element-ui的樹型結構圖,半選狀態數據給後臺後,返回數據帶有半選父節點的剔除展現

// html
<h2 class="text-gray">功能權限</h2>
<el-tree
:data="permissionList"
:props="defaultProps"
show-checkbox
node-key="permissionId"
default-expand-all
ref="tree_permissions"
@check="change_permission"
v-if="current_roleId"
></el-tree>
//js 只展現返回數據到渲染的半選數據的父節點的剔除async find_function_permission_by_roleId(){
            this.isLoading = true;
            try {
                const res = await this.$http.get("scPermission/findScPermissionByRoleId/" + this.current_roleId);
                this.selectedPermissionsIds = res.data.data;
                // 將只有部分選擇子節點的父節點剔除
                let arr =[];
                let arrLength = 0;
                arr = this.selectedPermissionsIds;
                arrLength = arr.length;
                let array:any = [];
                function fun(value:any,data:any,arr:any) {
                    for( let i = 0;i < data.length;i++){
                        let mod = data[i];
                        if(mod.permissionId == value) {
                            if(mod.children.length == 0){
                                arr.push(mod.permissionId);
                                return true
                            }
                            return true
                        }else {
                            if(mod.children.length != 0) {
                                fun(value, mod.children, arr);
                            }
                        }
                    }
                    return true
                }
                for(let n = 0;n < arrLength;n++) {
                    fun(arr[n],this.permissionList,array);
                }
                this.selectedPermissionsIds = array;
                let tree_permissions = this.$refs.tree_permissions as Tree;
                tree_permissions.setCheckedKeys(this.selectedPermissionsIds);
                // 數據加載完以後,修改爲行內樣式
                setTimeout(()=>{
                    this.$nextTick(()=>{
                        this.treeChildInline();
                    });
                },50);
            } catch (e) {
                this.$httpErrorHandle(this, e);
            }finally {
                this.isLoading = false;
            }
        },
相關文章
相關標籤/搜索