|
@@ -88,8 +88,12 @@ const updateNodeChecked = (node, isChecked) => {
|
|
|
const updateParentState = (parentNode) => {
|
|
const updateParentState = (parentNode) => {
|
|
|
if (!parentNode || !parentNode.children || parentNode.children.length === 0) return;
|
|
if (!parentNode || !parentNode.children || parentNode.children.length === 0) return;
|
|
|
|
|
|
|
|
- parentNode.checked = parentNode.children.some(child => child.checked);
|
|
|
|
|
- parentNode.indeterminate = false;
|
|
|
|
|
|
|
+ const checkedStatus = parentNode.children.map(child => child.checked);
|
|
|
|
|
+ const allChecked = checkedStatus.every(checked => checked);
|
|
|
|
|
+ const hasChecked = checkedStatus.some(checked => checked);
|
|
|
|
|
+
|
|
|
|
|
+ parentNode.checked = allChecked;
|
|
|
|
|
+ parentNode.indeterminate = hasChecked && !allChecked; // 半选条件:部分选中
|
|
|
};
|
|
};
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|