vue3使用Cascader联级选择器的懒加载+回显

效果图
在这里插入图片描述
页面代码

// separator是改变文字链接的方式,
<el-cascader
	separator="-"
	v-model="currentRegionList"
	:props="DeptRegionList"
	:options="getRegionList"
	@change="handleRegionListFun"
	ref="deptRegionListRef"
	clearable
/>

逻辑代码

let deptRegionListRef = ref();
const getRegionList = ref([]);
const currentRegionList = ref([]);
const DeptRegionList = {
	lazy: true,
	async lazyLoad(node, resolve) {
		const { level } = node;
		const nodes = [];
		// 当他层级是第一层的时候 发送的接口
		if (level == 0) {
			let res: any = await regionListPage({ current: 1, size: 100 });
			res.data.records.map(item => {
			// 这棵树这一层渲染的数据,根据需求来
				let obj = {
					value: item.code,
					label: item.name,
					hasChild: 1,
					// 有子集就是false  最后一层就是true
					leaf: false
				};
				nodes.push(obj);
			});
			resolve(nodes);
		} else {
		// 判断如果第二层的时候
			if (node.data.hasChild == "1") {
				let res: any = await regionListPage({ current: 1, size: 100, code: node.data.value });
				res.data.records.map(item => {
					let obj = {
						value: item.code,
						label: item.name,
						hasChild: item.hasChild,
						leaf: false
					};
					nodes.push(obj);
				});
				resolve(nodes);
			} else {
				let res: any = await regionListPage({ current: 1, size: 100, code: node.data.value });
				res.data.records.map(item => {
					let obj = {
						value: item.code,
						label: item.name,
						leaf: true
					};
					nodes.push(obj);
				});
				resolve(nodes);
			}
		}
	}
};
// 当他改变选中的值的时候
const handleRegionListFun = value => {
	// 树的ref(deptRegionListRef)  cascaderPanelRef(element自带的方法)
	deptRegionListRef.value.cascaderPanelRef.menuList.forEach((element, index) => {
		element.nodes.map(item => {
			if (item.data.value == value[index]) {
			// 后端需要这些数据,根据需求来
				formLabelAlign.value.placeVisitingRelativesName += item.data.label;
				formLabelAlign.value.placeVisitingRelatives += index == value.length - 1 ? item.data.value : item.data.value + ",";
			}
		});
	});
	
};

回显

回显的内容要根据value里面的内容回显的,通过数组组合在一起(value里面是什么,就组合什么样的数组),比如我item.code是51000这个数,每一层的item.code不一样,那么要给这个v-model的currentRegionList赋值[51000,510001… ],这样去赋值

在这里插入图片描述

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值