多级checkBox联动
<template>
<div></div>
</template>
<script>
export default {
data(){
return {
adrgMap: {},
adrgMapCopy: {},
upDown: {},
list:[
{
code:'mdca',
subList: [
{
code:'a1',
subList: [
{
code:'a11',
subList: [
{
code:'a111',
subList: [{code:'a1111'},{code:'a1112'}]
},
{
code:'a112',
},
{
code:'a113',
}
]
},
]
},
{
code:'a2',
subList: [
{
code:'a21',
},
{
code:'a21',
}
]
},
{
code:'a3',
}
]
},
{
code:'mdcb',
subList: [
{
code:'b1',
},
{
code:'b2',
},
{
code:'b3',
}
]
},
{
code:'mdcc',
subList: [
{
code:'c1',
},
{
code:'c2',
},
{
code:'c3',
}
]
},
{
code:'mdcd',
subList: [
{
code:'d1',
},
{
code:'d2',
},
{
code:'d3',
}
]
}
]
}
},
created(){
this.initData(this.list,['all'])
console.log(this.upDown);
console.log(this.adrgMapCopy);
},
methods: {
initData(data,arrF = []){
let arrFC = [...arrF],down = [],len=0
data.forEach((item,idx) => {
let code = item.code
this.adrgMap[code] = 0
down.push(code)
this.upDown[code] = {}
this.upDown[code].up = [...arrF]
if(item.subList){
let res = this.initData(item.subList,[...arrFC,code])
console.log(res.len,'>>>>>',code);
this.upDown[code].down = res.down
this.adrgMapCopy[code] = res.len
down = [...res.down,...down]
len+=res.len
}else{
this.adrgMapCopy[code] = 1
this.upDown[code].down = []
len+=1
}
console.log(code,'=>>',len,this.adrgMapCopy[code]);
});
return {
len: len,
down,
}
},
initData1(data,arrF = [],subLen = 0){
let down = [],lenDown = 0,arrFC = [...arrF]
data.forEach(item => {
let code = item.code
down.push(code)
this.upDown[code] = {}
this.upDown[code].up = [...arrFC,code]
if(item.subList){
let res = this.initData(item.subList,arrFC,subLen)
console.log(code,res);
}else{
this.adrgMapCopy[code] = 1
return {
len: data.length,
down: []
}
}
});
subLen = len
return {
len: 'kk',
down: ['ss'],
}
},
}
}
</script>
<style>
</style>