vue+element 循环多组 checkbox实现

			<el-form label-position="left" label-width="100px" :model="appDynamicForm" style="max-width: 800px">
				<el-form-item v-for="(item,index) in allColumnList" :label="item.name" label-width="150px" >
					<div style="width:100%;">
						<el-checkbox v-model="checkEntityAllData" :label="item.key" 
						:indeterminate="setIndeterminate(item)"
						 @change="(val) => handleCheckAll(val, item)">全部</el-checkbox>
					</div>
					<div style="width:100%">
						<el-checkbox-group  v-model="appDynamicForm.columnList">
							<el-checkbox v-for="(subItem) in item.propertyList" :key="subItem.key"
							:label="subItem.key" >{{subItem.name}}</el-checkbox>
						</el-checkbox-group>
					</div>
				</el-form-item>
			</el-form>
const allColumnList = ref([]);
const checkEntityAllData = ref([])
const isIndeterminate = ref(false);
const checkBoxSelectedData = ref([]);
const appDynamicDialog = ref(false);
const appDynamicForm = ref({
	columnList: []
});
function handleAppDynamicExport() {
	appDynamicDialog.value = true
	appDynamicForm.value.columnList = [];
	getDynamicColumnsList().then((res) => {
		allColumnList.value = res.data; 		
    });
}
function downloadAppDynamicExport() {
	const dateFormat = getNowDate();
	console.log("appDynamicForm=", appDynamicForm)
	proxy.downloadJson("/applicant/export/dynamic/export",  {...appDynamicForm.value}, `申报数据汇总_${dateFormat}.xlsx`);
	appDynamicDialog.value = false;
}


// 全选
function handleCheckAll(val, item){

	const next=item.propertyList.map(property=>property.key)
	if (val) {
		// true 求并集
		appDynamicForm.value.columnList = appDynamicForm.value.columnList.concat(next.filter(item => !appDynamicForm.value.columnList.includes(item)));
	} else {
		// false 求差集
		appDynamicForm.value.columnList = appDynamicForm.value.columnList.filter(item => !next.includes(item));
	}
}

function setIndeterminate(item) {
	const next=item.propertyList.map(property=>property.key);
	const checkArr = appDynamicForm.value.columnList.filter(item => next.includes(item));
	return checkArr.length > 0 && next.length != checkArr.length;
}

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值