el-table复选框增加悬浮提示

<template>
  <div class='el-table-con'>
    <p>选中的数据:{{ selectionData }}</p>
    <el-table
      ref="multipleTable"
      :data="tableData"
      tooltip-effect="dark"
      border>
      <el-table-column align="center" width="55">
        <template slot="header" slot-scope="{row}">
          <div>
            <el-tooltip placement="top-start" effect="light" popper-class="table_select_tooltip">
              <div slot="content">
                <p>全选:悬浮展示的信息</p>
              </div>
              <el-checkbox v-model="isCheck" :indeterminate="indeterminate" @change="handleCheckAllChange"></el-checkbox>
            </el-tooltip>
          </div>
        </template>
        <template slot-scope="{row}">
          <el-checkbox-group v-model="selectionData">
            <el-tooltip placement="top-start" effect="light" popper-class="table_select_tooltip">
              <div slot="content">
                <p>{{ row.disabled ? '禁用:悬浮展示的信息':'悬浮展示的信息' }}</p>
              </div>
              <!-- 此处的label是复选框右边显示的值,也是选中后的值。如果要一行的数据,直接使用row即可 -->
              <!-- label的内容会显示在页面上,需要配合css把label的内容隐藏掉 -->
              <el-checkbox :disabled="row.disabled" :key="row.id" :label="row.id"></el-checkbox>
            </el-tooltip>
          </el-checkbox-group>
        </template>
      </el-table-column>
      <el-table-column
        prop="id"
        label="id"
        width="50">
      </el-table-column>
      <el-table-column
        prop="name"
        label="姓名">
      </el-table-column>
    </el-table>
  </div>
</template>


<script>
export default {
  name:'',
  components: {},
  props:[],
  data() {
    return {
      tableData: [{
        id: 1,
        name: '王小虎1',
        disabled: true
      }, {
        id: 2,
        name: '王小虎2',
        disabled: false
      }, {
        id: 3,
        name: '王小虎3',
        disabled: true
      }, {
        id: 4,
        name: '王小虎4',
        disabled: false
      }, {
        id: 5,
        name: '王小虎5',
        disabled: true
      }, {
        id: 6,
        name: '王小虎6',
        disabled: false
      }, {
        id: 7,
        name: '王小虎7',
        disabled: true
      }],

      enabledDataList: [],//这个指没有被禁用的行,进来组件的时候需要自己处理下
      isCheck: false,//全选按钮绑定值
      indeterminate: false,//全选按钮的不确定状态
      selectionData: [],//表格选中的数据
    };
  },
  computed: {},
  watch: {
    // 监听选中的数据
    selectionData: {
      handler(v) {
        if (this.enabledDataList.length) {
          let checkedCount = v.length;
          this.isCheck = checkedCount === this.enabledDataList.length;
          this.indeterminate = checkedCount > 0 && checkedCount < this.enabledDataList.length;
        }
      },
      immediate: true
    }
  },
  created() {
    // 给enabledDataList赋值,需要去掉被禁用的数据
    this.enabledDataList = this.tableData.filter(v=>!v.disabled)
  },
  mounted() {},
  methods: {
    // 全选
    handleCheckAllChange(value){
      this.selectionData = value ? this.enabledDataList.map(el=>el.id) : [];
      this.indeterminate = false;
    },
  }
};
</script>

<style lang='scss' scoped>
.el-table {
  /deep/ .el-checkbox__label {
    display: none;
  }
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值