element-ui之Checkbox 多选框

本文介绍了如何利用Element-UI的Checkbox组件实现下载功能。首先在Vue项目中引入Checkbox,然后从后台获取下载字段,用户可以根据需求选择多选框后提交下载。此外,还添加了全选功能,通过v-model绑定数组并比较长度来实现全选操作。

需求:下载功能要展示所有的下载字段,用户根据需要使用多选框选中后提交,并完成下载。
这里 我使用了element-ui的Checkbox 多选框

1.引用Checkbox 多选框

<el-checkbox-group sortable="cistom">
          <el-checkbox
          v-for="tag in downloadDisplay" //遍历展示下载字段
          :label="tag.id" :key="tag.id" 
          :title="tag.tagName" 
          v-model="saveSelected"
          >
          {{tag.tagName}}
          </el-checkbox>
        </el-checkbox-group>

data()中添加组件状态和存放组件的数组:

 	  downloadDisplay:[],//下载展示内容存放
      saveSelected:[],//存放已选内容
      checkAll:false,//选框状态
      checkboxDialogVisible: false,//下载框对话框状态
      isIndeterminate: true,//下载全选

2.从后台获取下载字段

getdownloadDisplay(){
      let _self = this
      _self.axios.get(process.env.VUE_APP_ANA_URL+"这是后台接口")
      .then(response=>{
        if (response.data.returnCode == "111111") {
          _self.downloadDisplay=response.data.data;//数据保存到downloadDisplay数组
        }
      }).catch(error=>{
        console.log(error.respons);
      })
      // console.log(JSON.stringify(_self.downloadDisplay));
    },

3.选中后提交下载

handleDownloadSubmit(){
      let _self = this;
      if(_self.saveSelected.length == 0){
        _self.$message.error("请选择需要下载的字段")
      }else{
        _self.checkboxDialogVisible=false;//点击确认后关闭对话框
        this.axios({
          url:process.env.VUE_APP_ANA_URL+"提交的后台接口"+
        _self.downloadTaskId+
        "&tagIds="+
        _self.saveSelected.join(","),
        method:"get",
        responseType: "blob",//这个很重要,如果没有下载的文件无法打开
        })
        .then((response) => {//下载器
        const url = window.URL.createObjectURL(new Blob([response.data]));
        const link = document.createElement("a");
        link.href = url;
        link.setAttribute("download","客户清单" + ".xlsx");
        document.body.appendChild(link);
        link.click();
        _self.$message({
          message:'正在下载,请在下载完成后查看',
          type:'success'
        })
        _self.saveSelected = [];
        _self.downloadTaskId = [];
      });
      }
    },

4.全选功能

下载功能的新的需求:提供一个全选按钮。这里使用v-model绑定saveSelected数组。

<div class="container">
      <el-checkbox 
      :indeterminate="isIndeterminate"
      @change="getCheckAll()"
      >全选
      </el-checkbox>
      <div style="margin:15px 0;"></div>
        <el-checkbox-group v-model="saveSelected" sortable="cistom">

下面是全选的方法:
通过对比两个数组的长度,来进行全选操作

getCheckAll(){
      if (this.downloadDisplay.length != this.saveSelected.length) {
        let lag = this.downloadDisplay.map(item=>item.id);
        this.saveSelected = lag;
      }else{
      this.saveSelected = [];
      }
    },

最后的页面效果是这样的
在这里插入图片描述

element-ui 多选框是一种用户界面组件,可以让用户从多个选项中选择一个或多个选项。它是基于Vue.js开发的,具有丰富的功能和灵活的配置选项。在element-ui中,多选框组件被称为Checkbox。您可以使用Checkbox组件在表单中创建多个选项,并且可以通过v-model绑定一个变量来获取用户的选择结果。您还可以使用Checkbox组件的其他属性和事件来自定义其外观和行为。官方文档提供了详细的使用说明和示例,您可以在官方文档中查找更多关于element-ui多选框的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题](https://download.youkuaiyun.com/download/weixin_38596093/12924091)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue+elementUI 添加多个可以全选的多选框](https://blog.youkuaiyun.com/Start2019/article/details/111978006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [element-uiCheckbox 多选框](https://blog.youkuaiyun.com/demo_020/article/details/112718217)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值