diff --git a/src/components/tree/node.vue b/src/components/tree/node.vue index f79b5a92..49b8b46d 100644 --- a/src/components/tree/node.vue +++ b/src/components/tree/node.vue @@ -66,7 +66,7 @@ classes () { return [ `${prefixCls}-children` - ] + ]; }, selectedCls () { return [ @@ -112,7 +112,13 @@ }, handleCheck () { if (this.disabled) return; - this.data.checked = !this.data.checked; + const checked = !this.data.checked; + if (!checked || this.indeterminate) { + findComponentsDownward(this, 'TreeNode').forEach(node => node.data.checked = false); + } else { + findComponentsDownward(this, 'TreeNode').forEach(node => node.data.checked = true); + } + this.data.checked = checked; this.dispatch('Tree', 'checked'); }, setIndeterminate () { @@ -126,7 +132,7 @@ mounted () { this.$on('indeterminate', () => { this.setIndeterminate(); - }) + }); } }; \ No newline at end of file diff --git a/src/components/tree/tree.vue b/src/components/tree/tree.vue index e59f22ce..a9a6de34 100644 --- a/src/components/tree/tree.vue +++ b/src/components/tree/tree.vue @@ -1,7 +1,7 @@