element ui + vue 表格多选后选中行高亮/变色

element ui官网的table多选后的样式如下图
​​​​​​​​在这里插入图片描述
我们想要的效果如下图(选中的是有底色/高亮的)
在这里插入图片描述
用到的主要知识点如下图(2张)
在这里插入图片描述在这里插入图片描述

为了方便后期修改颜色,我们把样式写在了公共样式中–common.less

 //table选中高亮
  .el-table .slecleRowColor {
    background: #EAF4FF !important;
  }
  //改变element ui自带的hover高亮颜色
  .el-table tbody tr:hover > td {
    background-color: #EAF4FF !important;
  }

在界面组件中—index.vue
主要代码 :row-class-name="rowClass" ,@selection-change="handleSelectionChange"
html:

  <el-table ref="inspectTable"
 :data="inspectTable.data"
  size="mini"
  :row-class-name="rowClass"
  @selection-change="handleSelectionChange">
  <el-table-column type="selection"
    width="55"></el-table-column>
  <el-table-column v-for="item in inspectTable.columns"
    :key="item[inspectTable.key]"
    :show-overflow-tooltip="true"
    :prop="item.prop"
    :label="item.label"
    :width="item.width"
    :sortable="item.sortable"
    :formatter="item.formatter"></el-table-column>
  <el-table-column label="操作"
    width="150px">
    <template slot-scope="scope">
      <el-button size="mini"
        type="text"
        v-if="judge('inspection-list:update')"
        @click="btnEvent('edit',scope.row)">编辑</el-button>
      <el-button size="mini"
        type="text"
        v-if="judge('inspection-list:delete')"
        @click="btnEvent('deleteInfo',scope.row)">删除</el-button>
      <el-button size="mini"
        type="text"
        @click="btnEvent('detail',scope.row)">详情</el-button>
    </template>
  </el-table-column>
</el-table>

script:

<script>
export default {
  data () {
    return {
      selectRow: [],//选中的行
      selectData: [],//选中的数据
      },
  watch: {
  //监听多选的选择状态、数据
    selectData (data) {
      this.selectRow = []
      if (data.length > 0) {
        data.forEach((item, index) => {
          this.selectRow.push(this.inspectTable.data.indexOf(item))
        })
      }
    }
  },
  //勾选数据行的 Checkbox 时触发的事件
    rowClass ({ row, rowIndex }) {
      if (this.selectRow.includes(rowIndex)) {
        return 'slecleRowColor ';
      }
    },
    // 选中的信息
    handleSelectionChange (val) {
      this.selectData = val
    },
}

style:
(这个路径根据自己文件的来)

<style lang="less">
  @import '../../assets/css/Common.less';
</style>

注意
watch中的 this.selectRow.push(this.inspectTable.data.indexOf(item))中的inspectTable.data是根据html部分的 :data="inspectTable.data"来写
如果不对应会报错,如下图:
在这里插入图片描述


版权声明:本文为weixin_42555643原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。