el-select多选数据时,支持全选

实现效果图:

在这里插入图片描述

功能描述:

el-select支持多选时,在用户需要全选所有数据时需要挨个去点,操作起来过于繁琐,因此增加“全选”功能。

关键代码

<template>
  <el-select
    v-model="searchData.companyList"
    multiple
    collapse-tags
    size="mini"
    placeholder="所属公司"
    clearable
    style="width: 290px"
    @change="getCompanyList"
    @clear="clearCompanyList"
  >
    <el-checkbox v-model="checked" @change="selectAll">全选</el-checkbox>
    <el-option
      v-for="(item, index) in companyListArray"
      :key="index"
      :label="item.name"
      :value="item.value"
    />
  </el-select>
</template>

<script>
export default {
  data() {
    return {
      // select列表数据
      companyListArray: [
        {
          name: "XXX",
          value: "XXX",
        },
      ],
      searchData: {
        companyList: [
          // 默认勾选上时,需要默认给变量赋值
        ],
      },
      checked: true,
    };
  },
  methods: {
    // 点选数据时,判断数据都被选中时就将全选小框勾上,否则就不勾选中“全选”小框
    getCompanyList() {
      if (
        (this.searchData.companyList.length > 0) &
        (this.searchData.companyList.length === this.companyListArray.length)
      ) {
        this.checked = true;
      } else {
        this.checked = false;
      }
    },
    // 当点击select组件清空按钮时将“全选”小框取消勾选状态
    clearCompanyList() {
      this.checked = false;
    },
    // 点击“全选”小框时,将select数据都勾选上,取消全选时将勾选中的数据变量清空
    selectAll() {
      this.searchData.companyList = [];
      if (this.checked) {
        this.companyListArray.forEach((item) => {
          this.searchData.companyList.push(item.value);
        });
      } else {
        this.searchData.companyList = [];
      }
    },
  },
};
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值