<el-table
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
max-height="600"
row-key="id"
:tree-props="{ children: 'testsetScenarioList', hasChildren: 'hasChildren' }"
:header-cell-style="{ backgroundColor: '#f5f6fa' }"
border
@selection-change="handleSelectionChange"
@select-all="selectAllFun"
@select="selectFun"
>
主要就是三个事件
setChildren(children, type) {
// 编辑多个子层级
children.map((j) => {
this.toggleSelection(j, type)
if (j.testsetScenarioList) {
this.setChildren(j.testsetScenarioList, type)
}
})
},
selectFun(selection, row) {
console.log(selection,row);
const hasSelect = selection.some((el) => {
return row.id === el.id
})
if (hasSelect) {
if (row.testsetScenarioList) {
// 解决子组件没有被勾选到
this.setChildren(row.testsetScenarioList, true)
}
} else {
if (row.testsetScenarioList) {
this.setChildren(row.testsetScenarioList, false)
}
}
},
toggleSelection(row, select) {
if (row) {
this.$nextTick(() => {
this.$refs.multipleTable && this.$refs.multipleTable.toggleRowSelection(row, select)
})
}
},
selectAllFun(selection) {
// tabledata第一层只要有在selection里面就是全选
const isSelect = selection.some((el) => {
const tableDataIds = this.tableData.map((j) => j.id)
return tableDataIds.includes(el.id)
})
// tableDate第一层只要有不在selection里面就是全不选
const isCancel = !this.tableData.every((el) => {
const selectIds = selection.map((j) => j.id)
return selectIds.includes(el.id)
})
if (isSelect) {
selection.map((el) => {
if (el.testsetScenarioList) {
// 解决子组件没有被勾选到
this.setChildren(el.testsetScenarioList, true)
}
})
}
if (isCancel) {
this.tableData.map((el) => {
if (el.testsetScenarioList) {
// 解决子组件没有被勾选到
this.setChildren(el.testsetScenarioList, false)
}
})
}
},