java 多级级联菜单回显_详解element-ui级联菜单(城市三级联动菜单)和回显问题...

代码最下面

fbc19401ff24a69fd58f7a86ed86805f.png

各项的参数截图

9b3c3df734b90f9bb4271a85568cc075.png

30798c05411eb5babd42c4c3dda26b49.png

98db2d84e5673764b398a9f76b5b3bfa.png

9d10562abbf2ec2bd2dc9f35582f8857.png

5e501ad637536715086dda2566115071.png

代码如下

v-model="ruleForm.censusLand"

style="width:180px;padding-left:7px;width:270px"

placeholder="请选择省市区"

:options="cascaderData1"

@expand-change="censusLandChange"

:props="{

value: 'id',

label: 'name',

children: 'cities'

}"

>

data (){

retutn {

ruleForm: {

censusLand // 双向绑定

},

cascaderData1: [], // 户籍省 一级菜单

}

}

// 户籍所在地-选中后下一级

censusLandChange(val) {

this.getCensusLand(val);

},

// 户籍所在地

getCensusLand(val) {

// console.log(val);

let idArea;

let sizeArea;

if (!val) {

idArea = null;

sizeArea = 0;

} else if (val.length === 1) {

idArea = val[0];

sizeArea = val.length; // 3:一级 4:二级 6:三级

} else if (val.length === 2) {

idArea = val[1];

sizeArea = val.length; // 3:一级 4:二级 6:三级

}

this.$get(

"/stu/student/getAreaId",

{

AreaId: idArea

},

res => {

// console.log("1111",res);

if (sizeArea === 1) {

// 点击一级 加载二级 市

this.cascaderData1.map((value, i) => {

if (value.id === val[0]) {

if (!value.cities.length) {

value.cities = res.data.map((value, i) => {

return {

id: value.id,

name: value.name,

cities: []

};

});

}

}

});

} else if (sizeArea === 2) {

// 点击二级 加载三级 区

this.cascaderData1.map((value, i) => {

if (value.id === val[0]) {

value.cities.map((value, i) => {

if (value.id === val[1]) {

if (!value.cities.length) {

value.cities = res.data.map((value, i) => {

return {

id: value.id,

name: value.name

};

});

}

}

});

}

});

}

// console.log(this.ruleForm.censusLand);

},

err => {}

);

},

回显时,注意要同步(通过new Promise)

this.getAllMe(); // 先获取一级的城市

// 在回显数据的res 里放入这段代码(视情况而定)

// 需要先加载市级菜单,再去加载省级的()

// 户口所在地

new Promise((resolve, reject) => {

let val = [res.data.getupdate.domicileProvinceId];

let idArea;

let sizeArea;

if (!val) {

idArea = null;

sizeArea = 0;

} else if (val.length === 1) {

idArea = val[0];

sizeArea = val.length; // 3:一级 4:二级 6:三级

}

this.$get(

"/stu/student/getAreaId",

{

AreaId: idArea

},

res => {

// console.log("1111", res);

if (sizeArea === 1) {

// 点击一级 加载二级 市

this.cascaderData1.map((value, i) => {

if (value.id === val[0]) {

if (!value.cities.length) {

value.cities = res.data.map((value, i) => {

return {

id: value.id,

name: value.name,

cities: []

};

});

}

}

});

}

resolve(res);

},

err => {

reject(err);

}

);

})

.then(data => {

// 通过他们去获取第三级的

this.getCensusLand([

res.data.getupdate.domicileProvinceId, // 一级

res.data.getupdate.domicileCityId // 二级

]); // 户口所在地

})

.catch(err => {

console.log(err);

});

最后再双向绑定给censusLand

// 户籍

censusLand: [

res.data.getupdate.domicileProvinceId * 1,

res.data.getupdate.domicileCityId * 1,

res.data.getupdate.domicileDistrictId * 1

],

大概就这些了,希望对大家有帮助。也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值