Browse Source

复选框半选实现

quyx@nextosd.com 4 months ago
parent
commit
404e32c2f6
1 changed files with 6 additions and 2 deletions
  1. 6 2
      src/components/RegionNode.vue

+ 6 - 2
src/components/RegionNode.vue

@@ -88,8 +88,12 @@ const updateNodeChecked = (node, isChecked) => {
 const updateParentState = (parentNode) => {
   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>