使用vue实现四级联动

一、使用vue+elementUI实现四级联动

1、json数据: pcas-code

2、简单粗暴:代码如下

<template>
	<div>
		<p>当前您选择了: {{form.province}}-{{form.city}}-{{form.region}}-{{form.street}}</p>
		<el-form >
		<el-form-item label="行政区划">
			<div>
				<el-select v-model="form.province" placeholder="省级" @change="changePr">
					<el-option v-for="item in provinceList" :key="item.code" :label="item.label" :value="item.name">
					</el-option>
				</el-select>
				<el-select v-model="form.city" placeholder="市级" @change="changeCi">
					<el-option v-for="item in cityList" :key="item.code" :label="item.label" :value="item.name">
					</el-option>
				</el-select>
				<el-select v-model="form.region" placeholder="区级" @change="changeRe">
					<el-option v-for="item in regionList" :key="item.code" :label="item.label" :value="item.name">
					</el-option>
				</el-select>
				<el-select v-model="form.street" placeholder="街道" >
					<el-option v-for="item in streetList" :key="item.code" :label="item.label" :value="item.name">
					</el-option>
				</el-select>
			</div>
		</el-form-item>
	</el-form>
	
	</div>
</template>

<script>
	import pacas from '@/assets/pacas.json'
	export default {
      data () {
		  return {
			  data: pacas,
			  form: { // 创建单位管理form
			          province: '', // 行政区划——省
			          city: '', // 行政区划——市
			          region: '', // 行政区划——区
			          street: '', // 行政区划
			        },
					provinceList: [], // 存放省数据集合
					cityList: [], // 存放市数据集合
				    regionList: [], // 存放区数据集合
					streetList: [], //存放街道数据集合
		  }
	  },
	  created() {
		//获取省
		this.provinceList = this.data
	  },
	  computed: {
		 
	  },
	  methods: {
		  changePr() {
			  for(var key of this.data) {
			  	if(key.name == this.form.province) {
			  		this.cityList = key.children
					this.form.city = key.children[0].name //默认选择第一个显示
				}
			  }
			  this.changeCi()
			  this.changeRe()
		  },
		 changeCi() {
		 			 this.cityList.forEach((item,index) => {
		 				 if(item.name == this.form.city) {
		 					 this.regionList = item.children
		 					 this.form.region = item.children[0].name //默认选择第一个显示
		 				 }
		 			 })
					 this.changeRe()
		 },
		 changeRe() {
			 this.regionList.forEach((item1,index1) => {
				 if(item1.name == this.form.region) {
				 	this.streetList = item1.children
				    this.form.street = item1.children[0].name  //默认选择第一个显示
				    return;
				 }
			 })
		 }
	  }
	}
</script>

<style>
</style>

3、over

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值