vue 省市县三级联动

1、

<template>
  <div>
    所在省
    <el-select popper-class="eloption" :popper-append-to-body="true"
      @change="getShiList(obj.province)" v-model="obj.province" placeholder="请选择所在省" clearable
      @clear="removeSheng()">
      <el-option v-for="(item, index) in shengList" :key="item.code" :value="item.name" :label="item.name" />
    </el-select>
    所在市
    <el-select popper-class="eloption" :popper-append-to-body="true"
      @change="getAreaList(obj.city)" v-model="obj.city" placeholder="请选择所在市" clearable @clear="removeShi()">
      <el-option v-for="(item, index) in shiList" :key="item.code" :value="item.name" :label="item.name" />
    </el-select>
    所在区
    <el-select popper-class="eloption" :popper-append-to-body="true" @change="$forceUpdate()"
      v-model="obj.area" placeholder="请选择所在区" clearable>
      <el-option v-for="(item, index) in areaList" :key="item.code" :value="item.name" :label="item.name" />
    </el-select>
  </div>
</template>

<script>
const arr = require('@/assets/city.js');
export default {
  data() {
    return {
      shengList: arr.default,
      shiList: [],  //arr.default[0].code  北京市一个对象,其他省可有多个市
      areaList: [],
      obj: {
        // province:'',
        // city: '',
        // area: '',
      },

    }
  },
  methods:{
    // 获得市
    getShiList(shengName) {
      this.$forceUpdate()
      this.obj.city = ''
      this.obj.area = ''
      this.shengList.forEach(v => {
        if (v.name == shengName) {
          this.shiList = v.children
        }
      })
    },
    // 获得区
    getAreaList(shiName) {
      this.$forceUpdate()
      this.obj.area = ''
      this.shiList.forEach(v => {
        if (v.name == shiName) {
          this.areaList = v.children
        }
      })
    },
    removeSheng(e){
      console.log("删除省")
      this.$forceUpdate()
      // this.obj.sheng = ''
      // this.obj.city = ''
      // this.obj.area = ''
      this.shiList = []
      this.areaList = []
    },
    removeShi(e){
      console.log("删除shi")
      this.$forceUpdate()
      // this.obj.city = ''
      // this.obj.area = ''
      this.areaList = []
    },
  }
}
</script>

<style></style>

2、city.js
文件太大了(0积分,免费下载)
https://download.csdn.net/download/Ann_52547/87755408
格式是这样的:

const arr = [
{
    "code": "11",
    "name": "北京市",
    "children": [{
      "code": "1101",
      "name": "北京市",
      "children": [
      	{
          "code": "110101",
          "name": "东城区"
        },
        {
          "code": "110102",
          "name": "西城区"
        }]
    }]
 }

参考:
1、这个文件可以下载
省市区三级联动城市数据js文件。(复制后放入citys.js文件中,可自定义文件名)
2、distpicker插件编写
vue实现省市县三级联动,超简单
3、vue中实现省市区三级联动(V-Distpicker插件)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值