<el-tree style=" width: 100%;" :props="propss" :highlight-current="true" ref="tree_ext" @node-click="handleNodeClick" @node-expand="handleNodeExpand" @node-collapse="handleNodeCollapse" :expand-on-click-node="false" @check="handleCheckboxClick" node-key="node_id" :show-checkbox="ib_isCheckBox" :check-strictly="ib_checkStrictly" :data="ia_treeData" > </el-tree> handleCheckboxClick(data,node) {//系统权限树操作(多个树同时存在可用名称区别) this.handleCheck(data, node); }, handleCheck(data, node) { console.log("Node",data, node); const isChecked = this.$refs.tree_ext.getNode(data).checked; // 如果当前节点被选中,则遍历下级子节点并选中,如果当前节点取消选中,则遍历下级节点并取消选中 if(isChecked){ //判断是否有上级节点,如果有那么遍历设置上级节点选中 if(data.node_pid){ this.setParentChecked(data,true) } // 判断该节点是否有下级节点,如果有那么遍历设置下级节点为选中 data.node_child && data.node_child.length>0 && this.setChildreChecked(data.node_child,true) }else{ // 如果节点取消选中,则取消该节点下的子节点选中 data.node_child && data.node_child.length>0 && this.setChildreChecked(data.node_child,false) } }, setChildreChecked(node,isChecked){ node.forEach(item => { item.node_child && item.node_child.length>0 && this.setChildreChecked(item.node_child,isChecked) this.$refs.tree_ext.setChecked(item.node_id,isChecked); }) }, setParentChecked(node,isChecked){ // node_child:(...) // node_data:(...) // node_id:(...) // node_pid:(...) // node_text:(...) console.log("setParentChecked",node,isChecked); if(node.node_pid === 'ROOT_'){ //设置节点选中 this.$refs.tree_ext.setChecked(node.node_id,isChecked); }else{ this.$refs.tree_ext.setChecked(node.node_id,isChecked); //设置父节点 let parentNode = this.$refs.tree_ext.getNode(node.node_pid); console.log(parentNode); this.setParentChecked(parentNode.data,isChecked); } },