el-cascader 级联选择器 省市区动态获取

news/2024/7/19 13:26:00 标签: javascript, 开发语言, ecmascript, js, 前端

根据获取省市区码的接口拿到当前的省市区编码,再将编码传到获取该地区数据的接口,拿到返回值传回父组件。

1.通过lazy开启动态加载,通过lazyload来设置加载数据源的方法,对节点数据添加是否为叶子节点的标志leaf,如果后台数据没有该标志,可自己手动循环添加)
2.通过props.checkStrictly=true来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
3.我的项目中获取省市区县接口有两个参数:第一个参数是type类型:省PROVINCE,市CITY,区县COUNTY,第二个参数为省市区编码,可针对自己项目接口实际情况进行调整。

javascript"><template>
  <div class="cascader">
    <el-cascader
      :props="props"
      ref="cascader"
      clearable
      @change="handleChange"
      :options="dataList"
      v-model="cascaderData"
    >
    </el-cascader>
  </div>
</template>
<script>
export default {
  props: [],
  data() {
    return {
      cityList: [], //市数据
      countyList: [], //区县数据
      dataList: [
        {
          code: "",
          name: "",
        },
      ],
      props: {
        checkStrictly: true, //开启可以只选择一级
        value: "code",
        label: "name",
        lazy: true, // 此处必须为true
        lazyLoad: (node, resolve) => {
          if (node.data.name) {
            this.getChildData(node.data, resolve, node.level);
          }
        },
      },
      provinceCode: "",
      cityCode: "",
      cascaderData: null,
    };
  },
  created() {
    this.getProvince();
  },
  methods: {
    getChildData(data, resolve, level) {
      if (level == 1) {
        //市
        this.provinceCode = data.code;
        this.getCity(this.provinceCode, resolve);
      } else if (level == 2) {
        //区
        this.cityCode = data.code;
        this.getCounty(this.cityCode, resolve);
      }
    },
    handleChange(value) {
      if (value.length > 0) {
        this.$ajax
          .get(this.$urls.fastDistribute.getCityGeo + value[value.length-1])
          .then((res) => {
            if (res.data.code == 200) {
              // 将当前选中节点数据和当前路径数组返回给父组件
              this.$emit("getCascaderData", res.data.data);
            }
          });
      } else {
        this.$emit("getCascaderData", "");
      }
    },
    //获取省
    getProvince() {
      this.$ajax
        .get(this.$urls.getCityList, { type: "PROVINCE" })
        .then((res) => {
          if (res.data.code == 200) {
            this.dataList = res.data.data;
          }
        });
    },
    //获取市
    getCity(code, resolve) {
      this.$ajax
        .get(this.$urls.getCityList, {
          type: "CITY",
          code: code,
        })
        .then((res) => {
          if (res.data.code == 200) {
            this.cityList = res.data.data;
            resolve(this.cityList);
          }
        });
    },
    //获取区县
    getCounty(code, resolve) {
      this.$ajax
        .get(this.$urls.getCityList, {
          type: "COUNTY",
          code: code,
        })
        .then((res) => {
          if (res.data.code == 200) {
            let data = res.data.data;
            data.forEach((item) => {
              item.leaf = true; //手动添加叶子节点
            });
            this.countyList = data;
            resolve(this.countyList);
          }
        });
    },
  },
};
</script>

http://www.niftyadmin.cn/n/5477543.html

相关文章

【Unity实战100例】Unity入门小地图位置同步(第一第三人称)

unity小地图制作包括第一人称控制器和第三人称控制器 目录 一.选择合适自身的人称控制器 二.小地图制作

【测试篇】Selenium + Java环境搭建

文章目录 Selenium Java环境搭建配置系统环境变量PATH验证环境是否搭建成功常见问题&解决办法 Selenium Java环境搭建 Java版本最低要求为8&#xff0c;这里默认大家都下载好了Java。&#x1f606; 下载chrome浏览器&#xff08;点我下载&#xff09; 观察chrome版本。…

一口气说完Pandas数据结构简介

接下来我将对 pandas 的基本数据结构进行快速、非全面的概述&#xff0c;以帮助您入门。有关数据类型、索引、轴标签和对齐的基本行为适用于所有对象。首先&#xff0c;导入 NumPy 并将 pandas 加载到您的命名空间中&#xff1a; import numpy as npimport pandas as pd从根本…

textcnn做多分类

textcnn.py代码文件 import jieba import pickle import numpy as np from tensorflow.keras import Model, models from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing import sequence from tensorflow.keras.layers import…

华为OD机试 - 求字符串中所有整数的最小和(Java JS Python C C++)

须知 哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 文章目录 须知题目描述说明:输入描述输出描述用例1输入输出用例2输入输出解析代码题目描述 输入字符串s,输出s中包含所有整数的最小和。 说明: 字符串s,只包含 a-z A-Z 合…

java中的set集合及其子类

Set系列集合&#xff1a;添加的元素是无序&#xff08;添加的数据的顺序和获取出数据顺序不一样&#xff09;&#xff0c;不重复&#xff0c;无索引 如&#xff1a;HashSet:无序&#xff0c;不可重复&#xff0c;无索引 LinkedHashSet:有序&#xff0c;不重复&#xff0c;无索…

ZLMediaKit ubantu 下编译

1、获取代码 #国内用户推荐从同步镜像网站gitee下载 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit #千万不要忘记执行这句命令 git submodule update --init二、依赖库 Debian系(包括ubuntu&#xff09;系统下安装依赖的方法&#xff1a; #除了…

Vue 打包或运行时报错Error: error:0308010C

问题描述&#xff1a; 报错&#xff1a;Error: error:0308010C 报错原因&#xff1a; 主要是因为 nodeJs V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制&#xff0c;nodeJs v17 之前版本没影响&#xff0c;但 V17 和之后版本会出现这个错误…