国,省,市,区(县)(四级联动)

国,省,市,区(县)(四级联动)

一, 技术栈:Vue + Quasar + Vuelidate + axios
二, 具体代码(表单验证规则Vuelidate上篇文章已经写过了,这里就不多做介绍咯)
					<q-field 
                      icon="location_on"
                      :error="readonly == false? $v.baseInfoForm.country.$error: false"
                      error-label="国家不能为空"
                      class="col-lg-4 col-md-6 col-sm-12 col-xs-12">
                      <q-select
                        :readonly="readonly"  
                        :float-label="$t('国家')"
                        filter
                        :options="countryOptions"
                        @blur="$v.baseInfoForm.country.$touch"
                        v-model="baseInfoForm.country"></q-select>
                    </q-field>
                    <q-field 
                      icon="place"
                      :error="readonly == false? $v.baseInfoForm.province.$error: false"
                      error-label="省份不能为空"
                      class="col-lg-4 col-md-6 col-sm-12 col-xs-12">
                      <q-select
                        :readonly="readonly"  
                        :float-label="$t('省份')"
                        filter
                        :options="provinceOptions"
                        @blur="$v.baseInfoForm.province.$touch"
                        v-model="baseInfoForm.province"></q-select>
                    </q-field>
                    <q-field 
                      icon="place"
                      :error="readonly == false? $v.baseInfoForm.city.$error: false"
                      error-label="城市不能为空"
                      class="col-lg-4 col-md-6 col-sm-12 col-xs-12">
                      <q-select
                        :readonly="readonly"  
                        :float-label="$t('城市')"
                        filter
                        :options="cityOptions"
                        @blur="$v.baseInfoForm.city.$touch"
                        v-model="baseInfoForm.city"></q-select>
                    </q-field>
                     <q-field 
                      icon="place"
                      :error="readonly == false? $v.baseInfoForm.district.$error: false"
                      error-label="区(县)不能为空"
                      class="col-lg-4 col-md-6 col-sm-12 col-xs-12">
                      <q-select
                        :readonly="readonly"  
                        :float-label="$t('区(县)')"
                        filter
                        :options="districtOptions"
                        @blur="$v.baseInfoForm.district.$touch"
                        v-model="baseInfoForm.district"></q-select>
                    </q-field>

                  // 获取国家数据
		          	getCountryData: function() {
		            var that = this
		         	axios({
		              method: 'post',
		              url: ''
		            })
		            .then(function(data) {
		            var _arr = []
		              data.map(function(item) {
		               var _obj = {}
		               _obj.label = item.name
		               _obj.value = item.id
		                _arr.push(_obj)
		              })
		             that.countryOptions = _arr
		            })
		           .catch(function(err) {
		              console.log(err, '获取国家数据异常')
		            })
		           }
		            // 获取省份数据
			        getProvinceData: function(country) {
			          var that = this
			          axios({
			            method: 'post',
			            url: '' + country  //选择省份前需要先选择国家
			          })
			          .then(function(data) {
			              var _arr = []
			              if (data.length > 0) {
			                data.map(function(item) {
			                  var _obj = {}
			                  _obj.label = item.name
			                  _obj.value = item.id
			                  _arr.push(_obj)
			                })
			                that.provinceOptions = _arr
			            })
				      .catch(function(err) {
			            console.log(err, '获取省份数据异常')
			          })
三,具体效果如下

原始图
效果图

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值