diff --git a/packages/components/tree/src/composables/useCheckable.ts b/packages/components/tree/src/composables/useCheckable.ts index 07b07eaa2..5356e3ee9 100644 --- a/packages/components/tree/src/composables/useCheckable.ts +++ b/packages/components/tree/src/composables/useCheckable.ts @@ -80,14 +80,15 @@ export function useCheckable(props: TreeProps, mergedNodeMap: ComputedRef -1 + let tempKeys = [...allCheckedKeys.value] - if ( - checked || - (childrenKeys.length && + const checked = + index > -1 || + (!!childrenKeys.length && childrenKeys.every(key => tempKeys.includes(key) || indeterminateKeys.value.includes(key))) - ) { + + if (checked) { const parentKeys = cascaderEnabled ? getParentKeys(nodeMap, node, disabledKeys) : [] tempKeys.splice(index, 1) tempKeys = tempKeys.filter(key => !parentKeys.includes(key) && !childrenKeys.includes(key))