首先需要两个字段分别存储当前行选中数据和所有选中数据;
@selection-change="handleSelectionChange"//selected
@select="selectCur"写进el-table标签里;//selectCurRow
之后从vue里引入watch。当选中数据变化后,先判断当前点击数据是取消还是选中,如果是选中,那么selected数组里一定有selectCurRow的数据(selected.value.indexOf(selectCurRow.value) > -1)此条件为true,否则就是取消选中;然后根据自己系统业务需求从字段里找出和让select合并的同一个字段进行判断,将合并的数据同步勾选状态。
watch(
selected,
(newValue: any) => {
console.log(newValue, "watch");
if (selected.value.indexOf(selectCurRow.value) > -1) {
console.log("选中进来了");
tableData.value.forEach((item: any) => {
if (selectCurRow.value.logicId === item.logicId && selectCurRow.value.id !== item.id) {
proTableRef.value.element.toggleRowSelection(item, true);
}
});
} else {
console.log("取消进来了");
tableData.value.forEach((item: any) => {
if (selectCurRow.value.logicId === item.logicId) {
proTableRef.value.element.toggleRowSelection(item, false);
}
});
}
console.log("selected", selected.value);
},
{ immediate: true }
);