element在table中使用多选框

35 篇文章 1 订阅

先贴效果图

先说下怎么实现

<template v-for="(item, index) in makeProcess">
        <vd-table-column
          width="120"
          align="center"
        >
          <template
            slot-scope="scope"
            slot="header"
          >
            <el-checkbox
              :label="index"
              :indeterminate="checkList[index].isIndeterminate"
              v-model="checkList[index].selectedAll"
              @change="val=>handleCheckAllChange(val,index)"
            >
              {{ item.name }}
            </el-checkbox>
          </template>
          <template slot-scope="scope">
            <el-checkbox-group v-model="checkList[index].selected">
              <el-checkbox
                :label="scope.row.makeProcess[index].cpId"
                @change="val=>selectOne(val,index)"
              >
                <el-button
                  :type="scope.row.makeProcess[index].curStatus?'warning':'success'"
                  @click="dbClick(scope.row.makeProcess[index].cpId,scope.row.makeProcess[index].curStatus)"
                >
                  {{scope.row.makeProcess[index].curStatus?'取消':'汇报'}}
                </el-button>
              </el-checkbox>
            </el-checkbox-group>
          </template>
        </vd-table-column>
      </template>

上图中的数据如下

makeProcess  的数据如下

 

checkList  的数据    

注:checkList  是在页面初始化时创建的

this.checkList.map(() => {
          this.checkList.push({ selectedAll: false, isIndeterminate: false, selected: [] });
        });
   

 

逻辑实现

 

全选功能

// 全选
    handleCheckAllChange (val, index, i) {
      console.log(val);
      this.checkList[index].selectedAll = val;
      this.checkList[index].isIndeterminate = false;
      if (val) {
        this.checkList[index].selected = [];
        const canSelected = this.$refs.myTables.list;
        canSelected.map(item => {
          this.checkList[index].selected.push(item.makeProcess[index].cpId);
        });
      } else {
        this.checkList[index].selected = [];
      }
      console.log(this.checkList[index]);

    },

单选功能

selectOne (val, index) {
      this.checkList[index].selectedAll = this.checkList[index].selected.length === this.$refs.myTables.list.length;
      this.checkList[index].isIndeterminate = this.checkList[index].selected.length !== this.$refs.myTables.list.length
        && this.checkList[index].selected.length !== 0;
    },

 

dbClick  为点击  取消 / 汇报  时的双击事件,具体逻辑根据自己的业务决定

 

点击提交汇报可以拿到所选中下所绑定的值

let arr = [];
this.checkList.forEach((item, index) => {
   arr = [...arr, ...item.selected];
});
console.log(arr)

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值