Table tree support selectAll status
This commit is contained in:
parent
725814b355
commit
1ce519d3ff
2 changed files with 111 additions and 11 deletions
|
@ -119,13 +119,25 @@
|
|||
isSelectAll () {
|
||||
let isSelectAll = true;
|
||||
if (!this.data.length) isSelectAll = false;
|
||||
if (!this.data.find(item => !item._disabled)) isSelectAll = false; // #1751
|
||||
for (let i = 0; i < this.data.length; i++) {
|
||||
if (!this.objData[this.data[i]._index]._isChecked && !this.objData[this.data[i]._index]._isDisabled) {
|
||||
|
||||
// 全部disabled且全false,#1751
|
||||
let isAllDisabledAndUnSelected = true;
|
||||
|
||||
for (let i in this.objData) {
|
||||
const objData = this.objData[i];
|
||||
if (!objData._isChecked && !objData._isDisabled) {
|
||||
isSelectAll = false;
|
||||
break;
|
||||
} else if (objData.children && objData.children.length) {
|
||||
isSelectAll = this.isChildrenSelected(objData, isSelectAll);
|
||||
}
|
||||
if (!(objData._isDisabled && !objData._isChecked)) {
|
||||
isAllDisabledAndUnSelected = false;
|
||||
} else if (objData.children && objData.children.length) {
|
||||
isAllDisabledAndUnSelected = this.isChildrenAllDisabledAndUnSelected(objData, isAllDisabledAndUnSelected);
|
||||
}
|
||||
}
|
||||
if (isAllDisabledAndUnSelected) isSelectAll = false;
|
||||
|
||||
return isSelectAll;
|
||||
},
|
||||
|
@ -331,6 +343,32 @@
|
|||
handleMouseOut () {
|
||||
if (this.$isServer) return;
|
||||
document.body.style.cursor = '';
|
||||
},
|
||||
isChildrenSelected (objData, isSelectAll) {
|
||||
let status = isSelectAll;
|
||||
if (objData.children && objData.children.length) {
|
||||
objData.children.forEach(row => {
|
||||
if (!row._isChecked && !row._isDisabled) {
|
||||
status = false;
|
||||
} else if (row.children && row.children.length) {
|
||||
status = this.isChildrenSelected(row, status);
|
||||
}
|
||||
});
|
||||
}
|
||||
return status;
|
||||
},
|
||||
isChildrenAllDisabledAndUnSelected (objData, isAllDisabledAndUnSelected) {
|
||||
let status = isAllDisabledAndUnSelected;
|
||||
if (objData.children && objData.children.length) {
|
||||
objData.children.forEach(row => {
|
||||
if (!(row._isDisabled && !row._isChecked)) {
|
||||
status = false;
|
||||
} else if (row.children && row.children.length) {
|
||||
status = this.isChildrenAllDisabledAndUnSelected(row, status);
|
||||
}
|
||||
});
|
||||
}
|
||||
return status;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue