使用el-table,多选选择的时候,可以最多选择N条数据
有时候使用全选的时候,不想选择全部,而是选择10条数据,而界面上有20条数据,这样的话,就回全部选中,达不到要求,所以上代码
<el-table ref="regTable" :data="tableData" @selection-change="handleSelectionChange" @select-all="handleSelectionAllChange" @row-click="rowClick">
...
</el-table>
data() {
return {
tableData: [], // 表格数据
checkTableList: [], // 选中的list
checkNumber: 10 // 设置选中的条数
}
}
methods: {
handleSelectionChange(val, row) {
// 选中赋值
this.checkTableList = val
},
handleSelectionAllChange(data) {
// 过滤当前表格数据
this.tableData.forEach((v, index) => {
if (index >= this.checkNumber) {
// 大于设置的条数,取消选择
this.$refs['regTable'].toggleRowSelection(v, false)
}
})
},
rowClick(row) {
// 单击行,设置选中
const check = this.checkTableList.find((v) => {return v.id == row.id})
if (!check && this.checkTableList.length >= this.checkNumber) {
this.$message.warning(`最多只能选${this.checkNumber}条!`)
return
}
this.$refs['regTable'].toggleRowSelection(row)
},
checkboxInit(row) {
// 设置checkbox,选中状态,是否可选
const check = this.checkTableList.find((v) => {return v.id == row.id})
if (!check && this.checkTableList.length == this.checkNumber) {
return 0
} else {
return 1
}
}
}