element 循环动态Checkbox 多选框

14 篇文章 1 订阅

直接放图,这里做的是权限控制
在这里插入图片描述

<table width="100%">
	<tbody>
			<tr v-for="(permissionTop,topIndex) in tableData" :key="topIndex">
				<th style="line-height:48px;border:1px solid #1E9FFF;padding:0 10px;width: 150px;">
					
					<el-checkbox :indeterminate="permissionTop.indeterminate" 
					:key="topIndex" v-model="permissionTop.mychecked"
					 :label="permissionTop.id" 
					 @change="onChangeTop(topIndex, permissionTop.id, $event)">
					 {{permissionTop.name}}</el-checkbox>
				</th>
				<td style="border:1px solid #1E9FFF;padding:0 10px">
					
					<el-checkbox-group  v-model="checkedCities">
						<el-checkbox
						v-model="permissionSon.mychecked"
						
						v-for="permissionSon in permissionTop.dataList" :key="permissionSon.id"
						 @change="onChangeSon(topIndex, permissionSon.id, permissionTop.id, $event)"
						 :label="permissionSon.id" >{{permissionSon.name}}</el-checkbox>
					 </el-checkbox-group>
				</td>
			</tr>
		</tbody>
	</table>
onChangeTop(index, topId, e) { //父级change事件
				let that = this
				that.tableData[index].mychecked = e //父级勾选后,子级全部勾选或者取消
				if (e == false) that.tableData[index].indeterminate = false //去掉不确定状态
				
				var childrenArray = that.tableData[index].dataList //这里注意是选取一级下的二级数据
				var	len = childrenArray.length;
				if (that.tableData[index].mychecked == true){
					// 点击全选往v-model添加选中的id
					for (var i = 0;  i < childrenArray.length; i++)
						that.checkedCities.push(childrenArray[i].id)
				}else{
					//取消全选删除重复的id
					that.checkedCities = that.checkedCities.filter(item => !childrenArray.some(ele=>ele.id===item));
					
				}
			},
			onChangeSon(topIndex, sonId, topId, e) { //子级change事件
				let that = this
				var childrenArray = that.tableData[topIndex].dataList//这里注意是选取一级下的二级数据
				var tickCount = 0,
					unTickCount = 0,
					len = childrenArray.length
				console.log(childrenArray)
				for (var i = 0; i < len; i++) {
					if (sonId == childrenArray[i].id) childrenArray[i].mychecked = e
					if (childrenArray[i].mychecked == true) tickCount++
					if (childrenArray[i].mychecked == false) unTickCount++
					
				}
				if (tickCount == len) { //子级全勾选
					that.tableData[topIndex].mychecked = true
					that.tableData[topIndex].indeterminate = false
				} else if (unTickCount == len) { //子级全不勾选
					that.tableData[topIndex].mychecked = false
					that.tableData[topIndex].indeterminate = false
				} else {
					that.tableData[topIndex].mychecked = true
					that.tableData[topIndex].indeterminate = true //添加不确定状态
				}
			},

数据格式

{
    "data":[
        {
            "id":1,
            "name":"角色管理",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":1,
                    "typeID":1,
                    "name":"角色查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":2,
                    "typeID":1,
                    "name":"新增角色",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":3,
                    "typeID":1,
                    "name":"删除角色",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":4,
                    "typeID":1,
                    "name":"权限设置",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":12,
                    "typeID":1,
                    "name":"导出",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":2,
            "name":"员工管理",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":5,
                    "typeID":2,
                    "name":"员工查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":6,
                    "typeID":2,
                    "name":"添加员工",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":8,
                    "typeID":2,
                    "name":"删除员工",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":9,
                    "typeID":2,
                    "name":"登录限制",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":10,
                    "typeID":2,
                    "name":"修改密码",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":11,
                    "typeID":2,
                    "name":"导出数据",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":78,
                    "typeID":2,
                    "name":"导入员工",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":3,
            "name":"员工穿着",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":13,
                    "typeID":3,
                    "name":"穿着查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":14,
                    "typeID":3,
                    "name":"添加穿着",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":16,
                    "typeID":3,
                    "name":"删除穿着",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":18,
                    "typeID":3,
                    "name":"批量导入",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":19,
                    "typeID":3,
                    "name":"批量导出",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":4,
            "name":"员工终端",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":20,
                    "typeID":4,
                    "name":"终端查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":21,
                    "typeID":4,
                    "name":"添加终端",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":22,
                    "typeID":4,
                    "name":"删除终端",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":23,
                    "typeID":4,
                    "name":"终端启用",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":24,
                    "typeID":4,
                    "name":"批量导入",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":25,
                    "typeID":4,
                    "name":"批量导出",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":5,
            "name":"员工奖惩",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":26,
                    "typeID":5,
                    "name":"奖惩查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":6,
            "name":"排班管理",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":27,
                    "typeID":6,
                    "name":"排班查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":28,
                    "typeID":6,
                    "name":"添加排班",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":29,
                    "typeID":6,
                    "name":"排班导出",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":79,
                    "typeID":6,
                    "name":"删除排班",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":7,
            "name":"考勤管理",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":30,
                    "typeID":7,
                    "name":"打卡记录",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":31,
                    "typeID":7,
                    "name":"统计分析",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":32,
                    "typeID":7,
                    "name":"请假记录",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":8,
            "name":"车辆类别",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":33,
                    "typeID":8,
                    "name":"类别查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":34,
                    "typeID":8,
                    "name":"添加类别",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":35,
                    "typeID":8,
                    "name":"删除类别",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":36,
                    "typeID":8,
                    "name":"类别启用",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":9,
            "name":"车辆信息",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":37,
                    "typeID":9,
                    "name":"车辆查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":38,
                    "typeID":9,
                    "name":"添加车辆",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":39,
                    "typeID":9,
                    "name":"删除车辆",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":41,
                    "typeID":9,
                    "name":"车辆导入",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":42,
                    "typeID":9,
                    "name":"车辆导出",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":10,
            "name":"车辆异常统计",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":43,
                    "typeID":10,
                    "name":"异常查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":44,
                    "typeID":10,
                    "name":"删除",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":45,
                    "typeID":10,
                    "name":"处理",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":11,
            "name":"车辆费用",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":46,
                    "typeID":11,
                    "name":"费用分析",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":47,
                    "typeID":11,
                    "name":"费用统计",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":48,
                    "typeID":11,
                    "name":"分析导出",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":49,
                    "typeID":11,
                    "name":"统计导出",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":12,
            "name":"用油管理",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":50,
                    "typeID":12,
                    "name":"用油查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":51,
                    "typeID":12,
                    "name":"添加用油",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":52,
                    "typeID":12,
                    "name":"导入用油",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":53,
                    "typeID":12,
                    "name":"导出用油",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":77,
                    "typeID":12,
                    "name":"删除用油",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":13,
            "name":"维保管理",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":54,
                    "typeID":13,
                    "name":"维保查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":55,
                    "typeID":13,
                    "name":"添加维保",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":56,
                    "typeID":13,
                    "name":"删除维保",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":57,
                    "typeID":13,
                    "name":"导出维保",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":58,
                    "typeID":13,
                    "name":"维保提醒",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":59,
                    "typeID":13,
                    "name":"统计分析",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":14,
            "name":"保险管理",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":60,
                    "typeID":14,
                    "name":"保险查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":61,
                    "typeID":14,
                    "name":"添加保险",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":62,
                    "typeID":14,
                    "name":"删除保险",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":63,
                    "typeID":14,
                    "name":"导出保险",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":64,
                    "typeID":14,
                    "name":"保险提醒",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":15,
            "name":"年检管理",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":65,
                    "typeID":15,
                    "name":"年检查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":66,
                    "typeID":15,
                    "name":"添加年检",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":67,
                    "typeID":15,
                    "name":"删除年检",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":68,
                    "typeID":15,
                    "name":"导入年检",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":70,
                    "typeID":15,
                    "name":"导出年检",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":71,
                    "typeID":15,
                    "name":"年检提醒",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        },
        {
            "id":16,
            "name":"违规管理",
            "remark":"",
            "mychecked":false,
            "indeterminate":false,
            "dataList":[
                {
                    "id":72,
                    "typeID":16,
                    "name":"违规查询",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":73,
                    "typeID":16,
                    "name":"添加违规",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":74,
                    "typeID":16,
                    "name":"删除违规",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":75,
                    "typeID":16,
                    "name":"导入违规",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                },
                {
                    "id":76,
                    "typeID":16,
                    "name":"导出违规",
                    "remark":"",
                    "mychecked":false,
                    "indeterminate":false
                }
            ]
        }
    ],
    "state":10001,
    "msg":"ok",
    "code":0,
    "count":0,
    "extraParams":null
}
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值