From 0d336d439c7ea269f58fe7b1cf8dc8dd915b23c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E4=BC=9F=E6=9D=B0?= <674416404@qq.com> Date: Sat, 29 Nov 2025 17:01:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(EnhancedTable):=20=E6=A0=91=E5=BD=A2?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E8=A1=8C=E9=80=89=E4=B8=AD=E6=94=B6=E7=BC=A9?= =?UTF-8?q?=E5=90=8E=20header=20=E5=85=A8=E9=80=89=20checkbox=20=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/components/table/hooks/useRowSelect.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/components/table/hooks/useRowSelect.tsx b/packages/components/table/hooks/useRowSelect.tsx index b540333c6b..6519ed34a2 100644 --- a/packages/components/table/hooks/useRowSelect.tsx +++ b/packages/components/table/hooks/useRowSelect.tsx @@ -83,11 +83,16 @@ export default function useRowSelect( function getSelectedHeader() { return () => { - const isIndeterminate = intersectionKeys.length > 0 && intersectionKeys.length < canSelectedRows.length; + const isIndeterminate = + // 一些可见的行已被选中,但不是全部 + (intersectionKeys.length > 0 && intersectionKeys.length < canSelectedRows.length) || + // 某些被选中的行不可见(例如折叠的树子节点) + intersectionKeys.length < tSelectedRowKeys.length; const isChecked = - intersectionKeys.length !== 0 && canSelectedRows.length !== 0 && - intersectionKeys.length === canSelectedRows.length; + intersectionKeys.length === canSelectedRows.length && + // 确保所有已选中的行都是可见的(没有被折叠而隐藏的选中项) + intersectionKeys.length === tSelectedRowKeys.length; return (