<vxe-table
:data="retrievalList"
:row-class-name="setRowClass"
@cell-click="selectRow">
<vxe-column field="name" title="姓名"></vxe-column>
</vxe-table>
后端返回的JSON格式 (合并单元格需要对数据处理后,通过setMergeCells合并) 注:
相关单元格全部选中
效果图:
data() {
return {
sourceList: [],
retrievalList: [],
}
},
methods: {
setRowClass({row}) {
if (row.patId === this.currentRow.patId) {
return 'current-pat';
}
},
selectRow({row}) {
this.currentRow = this.sourceList.find(item => item.patId === row.patId);
}
}
// scss
.vxe-table {
.current-pat, .current-pat > td {
background-color: #CBECFC !important;
}
}
所选单元格整体增加背景色,但仅选中单元格特殊标识
注 : (1)第一列被合并单元格选中样式默认跟随合并后的第一行。 (2)可自行变形,使首列单元格底色与单项选中的单元格一致。 (3)此处存在个BUG,首次点击单元格时未出现选中效果;由于已选择第一种方案,此处未深究,仅做记录。
data() {
return {
sourceList: [],
retrievalList: [],
}
},
methods: {
setRowClass({row}) {
if (row.itemId === this.firstItemId) {
return 'current-first'
} else if (row.patId === this.currentRow.patId) {
return 'current-pat'
}
},
selectRow({row}) {
this.currentRow = this.sourceList.find(item => item.patId === row.patId);
let firstItem = this.retrievalList.find(item => item.patId === row.patId);
this.firstItemId = firstItem.itemId;
}
.vxe-table {
.current-pat {
background-color: #f00;
}
.current-first {
// 此处不使用important是为了避免背景与选中效果冲突
background-color: #f00;
& > .vxe-body--column:first-child {
background-color: #f00 !important;
}
}
}
|