<el-tree
ref="tree"
node-key="id"
default-expand-all
:data="treeData"
:props="defaultProps"
:expand-on-click-node="false"
:default-checked-keys="defaultCheck"
:current-node-key="currentCheck"
:highlight-current="true"
@node-click="handleNodeClick"
/>
treeData: [],
defaultProps: {
children: 'children',
label: 'label'
},
defaultCheck: [], // 默认选中节点
currentCheck: '' // 当前选中的节点
watch: {
treeData: {
handler(value) {
this.expandTree(value)
},
immediate: true
},
currentCheck: {
handler(value) {
if (value.toString()) {
// setCurrentKey函数必须放到$nextTick里面,否则tree还未渲染上,找不到tree
this.$nextTick(() => {
this.$refs['tree'].setCurrentKey(value)
})
}
},
immediate: true
}
},
methods: {
handleNodeClick(data) {
if (data.type === 'pro') {
this.$emit('proNodeSubmit', data.id)
} else {
this.$message.error('请点击项目!')
}
},
// 默认展示
expandTree() {
const tree = this.treeData
if (tree.length > 0) {
this.getDefaultShow(tree)
}
},
getDefaultShow(list) {
list.map(x => {
if (x.id == this.project_id) {
this.defaultCheck = [x.id]
this.currentCheck = x.id
this.handleNodeClick(x)
} else if (x.children) {
this.getDefaultShow(x.children)
}
})
}
}