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
    评论
假设你有一个包含多个复选框的表单,你可以使用 Element UI 的 el-checkbox 组件来实现。要对这些复选框进行校验,可以使用 Element UI 的表单验证功能。 以下是一个示例,展示如何循环渲染复选框并对它们进行校验: ``` <template> <el-form :model="form" :rules="rules" ref="form" label-width="100px"> <el-form-item label="选择语言"> <el-checkbox-group v-model="form.languages"> <el-checkbox v-for="language in languages" :key="language.value" :label="language.value">{{ language.label }}</el-checkbox> </el-checkbox-group> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { languages: [] }, languages: [ { label: 'Java', value: 'java' }, { label: 'Python', value: 'python' }, { label: 'JavaScript', value: 'javascript' }, { label: 'C++', value: 'c++' } ], rules: { languages: [ { required: true, message: '请至少选择一种语言', type: 'array', min: 1 } ] } } }, methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 表单校验通过,可以提交表单数据 console.log(this.form.languages) } else { // 表单校验不通过,需要处理错误信息 console.log('校验不通过') } }) } } } </script> ``` 在这个示例中,我们使用了 el-checkbox-group 组件来绑定表单数据中的 languages 字段,使用 v-for 指令循环渲染复选框。在表单验证规则中,我们使用了 required 规则来保证至少选择一种语言,并设置了错误提示信息。在提交表单时,我们调用了表单的 validate 方法进行校验,如果校验通过,就可以提交表单数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值