1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用Ant Design of Vue中的Checkbox 多选框实现多组全选和全不选

使用Ant Design of Vue中的Checkbox 多选框实现多组全选和全不选

时间:2023-11-09 16:41:24

相关推荐

使用Ant Design of Vue中的Checkbox 多选框实现多组全选和全不选

1、实现效果图如下:

2、代码实现如下(采用vue+antd):

template:

<template><!--多个区全选弹窗--><div class='sale_allot'><a-modal:maskClosable='false'class='sale_allot'title="多个全选弹窗"v-model="visible1":bodyStyle="{width:'100%'}"height='500px'><div style="min-height:300px;"><div class='item_check' v-for='(item,index) in totalRolesList' :key='index'><div><div :style="{ borderBottom: '1px solid #E9E9E9',marginTop:'15px'}"><a-checkbox :indeterminate="item.indeterminate" :checked="item.checkAll" @change="onCheckAllChange($event,index)">{{Name }}</a-checkbox></div><br /><a-checkbox-group v-model="item.checkedList" :options="item.userList" @change="onChange($event,index)" ><span slot='label' slot-scope='{value}'>{{value}}</span></a-checkbox-group></div></div></div><template slot="footer"><a-button key="back" @click="noOk">暂不选择</a-button><a-button key="submit" type="primary" :loading="loading" @click="onOk">确定选择</a-button></template></a-modal></div></template>

script部分:

<script>//多选框的数据const listData = [{orgName: "火影村",checkAll:false,indeterminate : false,checkedList : [],userList: [{label: "鸣人",value:1},{label: "佐助",value: 2},{label: "自来也",value: 3},{label: "卡卡西",value: 4},{label: "小樱",value: 5}]},{orgName: "晓组织",checkAll:false,indeterminate : false,checkedList : [],userList: [{label: "佩恩",value:1},{label: "角度",value: 2},{label: "长门",value: 3},{label: "蝎",value: 4},{label: "再不斩",value: 5}]}]export default {props:{selectedRowKeys:{type:Array, //类型require:false, //必传default:()=> []}},data() {return {visible1:false,totalRolesList:listData,//所有组员角色数据loading:false,//确定分配的按钮的响应状态}},methods: {onChange(e,index) {//单个选择this.totalRolesList[index].indeterminate = !!this.totalRolesList[index].checkedList.length && this.totalRolesList[index].checkedList.length < this.totalRolesList[index].userList.length;this.totalRolesList[index].checkAll = this.totalRolesList[index].checkedList.length === this.totalRolesList[index].userList.length;},onCheckAllChange(e,index) {//选择全部的事件//如果选中全选的话就遍历拿出当前相对项的数组的全部值let newArr = []if(e.target.checked){newArr = this.totalRolesList[index].userList.map(item=>{return item.value})}this.totalRolesList[index].checkedList = e.target.checked ? newArr:[]this.totalRolesList[index].indeterminate = falsethis.totalRolesList[index].checkAll = e.target.checked},//确定选择onOk(){//将所有选中的人员的id拿出来拼接到一个数组里面let userIds = []let sendData = {}this.totalRolesList.forEach(item=>{userIds = [...userIds,...item.checkedList]})},//暂不选择noOk(){this.loading=falsethis.visible1 = false}}}</script>

style部分:

<style lang='less'>.sale_allot.ant-modal{width: 700px!important;}.sale_allot .ant-modal-body{width: 100%;overflow: auto;max-height: 550px;}</style>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。