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"来写 如果不对应会报错,如下图:

经验分享 程序员 微信小程序 职场和发展