diff --git a/packages/components/table/__tests__/table.test.ts b/packages/components/table/__tests__/table.test.ts index 77fda98d43..f5929ca7b3 100644 --- a/packages/components/table/__tests__/table.test.ts +++ b/packages/components/table/__tests__/table.test.ts @@ -1848,12 +1848,14 @@ describe('Table.vue', () => { const testData = getTestData() as any testData[1].childrenTest = [ { + id: 21, name: "A Bug's Life copy 1", release: '1998-11-25-1', director: 'John Lasseter', runtime: 95, }, { + id: 22, name: "A Bug's Life copy 2", release: '1998-11-25-2', director: 'John Lasseter', @@ -1892,6 +1894,19 @@ describe('Table.vue', () => { await doubleWait() expect(wrapper.vm.selected.length).toEqual(2) expect(wrapper.findAll('.el-checkbox')[3].classes()).include('is-checked') + + await (wrapper.vm.treeProps.checkStrictly = false) + wrapper.findAll('.el-checkbox')[0].trigger('click') + wrapper.findAll('.el-checkbox')[0].trigger('click') + await doubleWait() + expect(wrapper.vm.selected.length).toEqual(0) + wrapper.findAll('.el-checkbox')[0].trigger('click') + await doubleWait() + wrapper.findAll('.el-checkbox')[3].trigger('click') + await doubleWait() + wrapper.findAll('.el-checkbox')[0].trigger('click') + await doubleWait() + expect(wrapper.vm.selected.length).toEqual(getTestData().length + 2) }) }) diff --git a/packages/components/table/src/util.ts b/packages/components/table/src/util.ts index d22e063e9e..07dbfc98d5 100644 --- a/packages/components/table/src/util.ts +++ b/packages/components/table/src/util.ts @@ -318,7 +318,7 @@ export function toggleRowStatus( isArray(row[tableTreeProps.children]) ) { row[tableTreeProps.children].forEach((item) => { - toggleRowStatus( + const childChanged = toggleRowStatus( statusArr, item, newVal ?? !included, @@ -327,6 +327,9 @@ export function toggleRowStatus( _rowIndex + 1 ) _rowIndex += getChildrenCount(item) + 1 + if (childChanged) { + changed = childChanged + } }) } return changed