vue2 element-ui el-cascader地址省市区分开单独写

 

  1. 使用 npm 或 yarn 安装 element-china-area-data 包:
    npm install element-china-area-data
  2. 在你的代码中导入 element-china-area-data 
    import {  regionData } from 'element-china-area-data'
    let that;

    完整代码

    <template>
      <div>
          <el-form ref="dataForm" :rules="detailRules" inline :model="detail" label-position="right" label-width="140px" style="width: 100%; padding-left: 20px">
            <el-form-item label="所属省:" prop="type">
              <el-cascader v-model="detail.province" :options="optionsProvince" placeholder="请选择省份" @change="changeProvince" clearable></el-cascader>
            </el-form-item>
            <el-form-item label="所属市:" prop="type">
              <el-cascader :options="optionsCity" placeholder="请选择市" @change="changeCity" clearable></el-cascader>
            </el-form-item>
            <el-form-item label="所属区:" prop="type">
              <el-cascader :options="optionsArea" placeholder="请选择区" clearable></el-cascader>
            </el-form-item>
          </el-form>
          
    </div>
    </template>
    
    <script>
    import {  regionData } from 'element-china-area-data'
    let that;
    export default {
      name: "",
      data() {
        return {
          regionData: regionData,
          optionsProvince: [],//省
          optionsCity: [],//市
          optionsArea: [],//区
          optionsCityAll: [],//市+区
        };
      },
      created() {
        this.getoptions()
      },
      methods: {
        // 选择省份后
        changeProvince(val) {
          this.getoptionsCity(val[0])
        },
        // 选择市
        changeCity(val) {
          console.log("changeCity", val);
          this.getoptionsArea(val[0])
    
        },
        // 处理地区数组
        // 获取省
        getoptions() {
          this.optionsProvince = this.regionData.map(item => {
            return { value: item.value, label: item.label };
          });
        },
        // 市
        getoptionsCity(provinceCode) {
          const cityItem = this.regionData.filter(item => {
            return item.value == provinceCode;
          })
          this.optionsCityAll = cityItem[0].children;
          for (let item1 of cityItem[0].children) {
            this.optionsCity.push({
              value: item1.value, label: item1.label
            })
          }
        },
        // 区
        getoptionsArea(val) {
          const AreaItem = this.optionsCityAll.filter(item => {
            return item.value == val;
          })
          console.log(AreaItem);
          if (AreaItem[0].children.length > 0) {
            for (let item1 of AreaItem[0].children) {
              this.optionsArea.push({
                value: item1.value, label: item1.label
              })
            }
            console.log("optionsArea+++", this.optionsArea);
          }
        },
      },
    };
    </script>
    
    <style lang="scss" scoped>
    </style>
    

    效果图

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值