elementPlus+vue3多选框的全选/全不选实现

效果图

在这里插入图片描述

后端接口返回的数据

在这里插入图片描述

template部分

  <div class="content">
        <h3>请选择公示的内容</h3>
        <div>

          <div class="basicEx">
            <el-checkbox
              v-model="basicCheckAllEx"
              :indeterminate="isbasicminateEx"
              @change="handleBasicAllChangeEx"
            >全选</el-checkbox>

            <el-checkbox-group v-model="basicValsEx" @change="handleCheckedBasicChangeEx">
              <el-checkbox
                v-for="(item,index) in basicNeed"
                :key="index"
                :label="item"
                border
                :size="small"
              >{{item.codeMeaning}}</el-checkbox>
            </el-checkbox-group>
          </div>
        </div>
      </div>

js部分


const basicNeed=ref([])

if(props.listPublicityOpen){
  getOutColumnNamesHandler()
}

// 从后端获取勾选框信息
async function getOutColumnNamesHandler(){
await getOutColumnNames().then(res=>{
  if(res.code==200){
    basicNeed.value=res.data
  }
})
}



// 多选框
const basicCheckAllEx = ref(false);
const isbasicminateEx = ref(false);
const basicValsEx = ref([]);
const handleBasicAllChangeEx = (val) => {
  // console.log(val,'1111');
basicValsEx.value = val ? basicNeed.value : [];
// console.log(basicValsEx.value,'22222');

isbasicminateEx.value = false;
};

const handleCheckedBasicChangeEx = (value) => {
const checkedCountBasicEx = value.length;
basicCheckAllEx.value = checkedCountBasicEx === basicNeed.value.length;

isbasicminateEx.value =checkedCountBasicEx > 0 && checkedCountBasicEx < basicNeed.value.length;

};

至此就完成了全选和全不选的功能了!我们需要的数据就在 basicValsEx.value这里

样式美化

<style lang="scss" scoped>

.content {
  .basicEx {
    display: flex;
  }
  .rightEx {
    flex: 1;
    .rigTitle {
      height: 150px;
      .sure {
        padding-top: 52px;
        float: right;
        bottom: 20px;
      }
    }
  }
}


h3{
  font-size: 0.5625rem;
  font-weight: bolder;
}


.el-checkbox.is-bordered {
  margin: 5px 10px;
  border-radius: var(--el-border-radius-base);
  border: var(--el-border);
  box-sizing: border-box;
  width: 146px;
}
.el-checkbox {
  background-color: #EDEDED;
  margin: 5px 0;
}

.basic>.el-checkbox{
      background-color: #FFFFFF;
    }

.basicEx>.el-checkbox{
      background-color: #FFFFFF;
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值