vue 中国省市区级联数据 三级联动

vue 中国省市区级联数据 三级联动

  1. 安装插件 npm install element-china-area-data@5.0.2 -S 当前版本以测试,可用。
  2. 组件中使用了 element-ui, https://element.eleme.cn/#/zh-CN/component/installation 库 请注意安装。
  3. 插件文档 https://www.npmjs.com/package/element-china-area-data
  4. 先上图
    在这里插入图片描述
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b5a0ab5c8fdc4cadbd8061e8a791e7f6.png

在这里插入图片描述

  1. 在components文件夹下面新建 mpAreaSelect.vue
<template>
  <el-cascader
    :options="options"
    :disabled="disabled"
    :placeholder="placeholder"
    :value="selectedOptions"
    @change="handleChange"
    :clearable="clearable"
  >
  </el-cascader>
</template>

<script>
import  {
  provinceAndCityDataPlus,
  regionData,
  TextToCode,
  CodeToText,
} from 'element-china-area-data'
export default {
  name: 'mpAreaSelect',
  computed: {
    selectedOptions() {
      let selected = this.selected.filter((item) => item != '' && item != null)
      let len = selected.length
      let textArr = []
      switch (len) {
        case 1:
          if(TextToCode[selected[0]]){
            textArr.push(TextToCode[selected[0]].code)
          }else{
            textArr = []
          }
          
          break
        case 2:
         if(TextToCode[selected[0]]){
            textArr.push(TextToCode[selected[0]].code)
          }else{
            textArr = []
          }
           if(TextToCode[selected[0]] && TextToCode[selected[0]][selected[1]]){
            textArr.push(TextToCode[selected[0]][selected[1]].code)
          }else{
            textArr = []
          }
         
          break
        case 3:
           if(TextToCode[selected[0]]){
            textArr.push(TextToCode[selected[0]].code)
          }else{
            textArr = []
          }
           if(TextToCode[selected[0]] && TextToCode[selected[0]][selected[1]]){
            textArr.push(TextToCode[selected[0]][selected[1]].code)
          }else{
            textArr = []
          }
          if(TextToCode[selected[0]] && TextToCode[selected[0]][selected[1]] && TextToCode[selected[0]][selected[1]][selected[2]]){
            textArr.push(TextToCode[selected[0]][selected[1]][selected[2]].code)
          }else{
            textArr = []
          }
          break
        default:
          break
      }
      return textArr
    },

    options() {
      switch (this.level) {
        case 2:
          return provinceAndCityDataPlus
        case 3:
          return regionData
        default:
          return regionData
      }
    },
  },

  props: {
    selected: {
      type: Array,
      default: [],
    },
    disabled: {
      type: Boolean,
      default: false,
    },
    placeholder: {
      type: String,
      default: '',
    },
    level: {
      type: Number,
      default: 3,
    },
    clearable:{
      type: Boolean,
      default: false,
    }
  },
  methods: {
    handleChange(value) {
      console.log(TextToCode)
      console.log(CodeToText)
      console.log(provinceAndCityDataPlus)
      console.log(regionData)
      console.log(value)
      this.$emit(
        'change',
        value.map((item) => CodeToText[item]),value
      )
    },
  },
}
</script>

<style>
</style>
  1. 组件的使用
<template>
  <div>
    <div>
      <div>请选择地区:</div>
      <mp-area-select
        style="width: 400px"
        :selected="selected"
        placeholder="请选择地区"
        @change="changeAddress"
      ></mp-area-select>
      <div>回显地区:</div>
      <mp-area-select
        style="width: 400px"
        :selected="selectedView"
      ></mp-area-select>
    </div>
  </div>
</template>
<script>
import MpAreaSelect from '@/components/mpAreaSelect';
export default {
  components:{
    MpAreaSelect
  },
  data() {
    return {
      selected:[],
      selectedView:[],
    };
  },
  mounted(){
    this.$nextTick(()=>{
      this.selectedView = ["北京市", "市辖区", "朝阳区"]
    })
  },
  methods: {
    changeAddress(arr,code) {
      console.log(arr,77777777)
      console.log(code,88888888)
    },
  },
};
</script>
  1. 搞定!组件以及示例可直接复制使用!
  2. 另外 省市区JSON数据串 已经放在博客顶部,可自行下载后,自定义组件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/245401.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CANoe】CANoe中使用RS232

文章目录 1、CANoe中自带示例2、示例讲解2.1CANoe自带Port A和Port B通讯2.2CANoe自带Port A和串口助手通讯 1、CANoe中自带示例 我使用的事CANoe12&#xff0c;RS232路径如下&#xff1a; C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 12.0.75\IO_HIL\RS23…

如何安全运行别人上传的Python代码?

写后端的同学&#xff0c;有时候需要在网站上实现一个功能&#xff0c;让用户上传或者编写自己的Python代码。后端再运行这些代码。 涉及到用户自己上传代码&#xff0c;我们第一个想到的问题&#xff0c;就是如何避免用户编写危险命令。如果用户的代码里面涉及到下面两行&…

人工智能联盟的首件神兵利器——“Purple Llama” 项目,旨为保护工智能模型安全性

Meta公司&#xff08;Meta Platform Inc&#xff09;&#xff0c;原名Facebook&#xff0c;创立于2004年2月4日&#xff0c;市值5321.71亿美元。总部位于美国加利福尼亚州门洛帕克。 Meta 公司推出了名为“Purple Llama”的项目&#xff0c;旨在保护和加固其开源人工智能模型。…

部署Nextcloud详细步骤及优化方法

一、安装PHP8.0以上 我这里使用PHP8.0.30 [rootlocalhost ~]# php -v PHP 8.0.30 (cli) (built: Aug 3 2023 17:13:08) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.30, Copyright (c) Zend Technologies [rootlocalhost ~]# 安装方法参考 二、安装MY…

安卓版pytCharm怎么启动,安卓版手游免费下载

大家好&#xff0c;给大家分享一下安卓版python编辑器安装tkinter&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 我的GitHub 是的&#xff0c;Python 代码可以在 Android 平台上运行&#xff0c;尽管这并不是 Python 传统上最常用的运行环…

正则表达式(6):分组与后向引用

正则表达式&#xff08;6&#xff09;&#xff1a;分组与后向引用 总结 本博文转载自 在本博客中&#xff0c;”正则表达式”为一系列文章&#xff0c;如果你想要从头学习怎样在Linux中使用正则&#xff0c;可以参考此系列文章&#xff0c;直达链接如下&#xff1a; 在Linux中…

【Stm32-F407】Keil uVision5 下新建工程

①双击鼠标左键打开Keil uVision5&#xff0c;选择 Project 下的 New uVision Project &#xff1b; ②在期望的文件夹下创建一个工程&#xff0c;并按如下要求操作&#xff1b; ③添加文件类型&#xff0c;按如下要求操作 ④如有需要可添加相关启动文件在工程文件夹下并添加到…

RNN介绍及Pytorch源码解析

介绍一下RNN模型的结构以及源码&#xff0c;用作自己复习的材料。 RNN模型所对应的源码在&#xff1a;\PyTorch\Lib\site-packages\torch\nn\modules\RNN.py文件中。 RNN的模型图如下&#xff1a; 源码注释中写道&#xff0c;RNN的数学公式&#xff1a; 表示在时刻的隐藏状态…

渗透测试框架——Cobalt Strike

渗透测试框架——Cobalt Strike Cobalt Strike是一款非常成熟的渗透测试框架。Cobalt Strike在3.0版本之前是基于Metasploit框架工作的&#xff0c;可以使用Metasploit的漏洞库。从3.0版本开始&#xff0c;Cobalt Strike不再使用Metasploit的漏洞库&#xff0c;成为一个独立的…

每日好题:原来你也玩三国杀(DP动态规划)

I - 原来你也玩三国杀 Description 小 Q 最近听说 “很多” acmer 都爱上了一款游戏《三国杀》。因为小 Q 是一个初学者&#xff0c;所以想自己先偷偷学习一下&#xff0c;然后惊艳所有人。但又因为小 Q 不屑于使用一般的武将&#xff0c;因为他觉得唯有操作型武将才能显得自…

性能监控软件:优化系统运行的得力助手

随着科技的飞速发展&#xff0c;企业和组织对于其信息技术基础设施的性能要求也愈发提高。为了确保系统能够高效稳定地运行&#xff0c;性能监控软件成为不可或缺的工具。本文将探讨性能监控软件的主要作用&#xff0c;以及它们在提升系统性能和稳定性方面的关键作用。 1. 实时…

学习MS Dynamics AX 2012编程开发 1. 了解Dynamics AX 2012

在本章中&#xff0c;您将了解开发环境的结构以及Microsoft Dynamics AX中的开发人员可以访问哪些工具。在本书的第一步演练之后&#xff0c;您将很容易理解著名的Hello World代码&#xff0c;您将知道应用程序对象树中的不同节点代表什么。 以下是您将在本章中学习的一些主题…

10、ble_mesh_node服务节点示例

1。手机APP选择名字&#xff0c;点击provisioner App keys&#xff0c;识别&#xff0c;配网。 2。初始化流程&#xff0c; board_init()初始化IO,初始化存储&#xff0c; bluetooth_init()蓝牙初始化&#xff0c;ble_mesh_get_dev_uuid(dev_uuid)蓝牙组网初始化, 3、蓝牙组网初…

MyBatis缓存机制流程分析

前言 在进行分析之前&#xff0c;建议快速浏览之前写的理解MyBatis原理、思想&#xff0c;这样更容易阅读、理解本篇内容。 验证一级缓存 MyBatis的缓存有两级&#xff0c;一级缓存默认开启&#xff0c;二级缓存需要手动开启。 重复读取跑缓存 可以看到&#xff0c;第二次…

[MySQL] MySQL中的索引

文章目录 一、初识索引 1、1 索引的概念 1、2 索引案例 二、认识磁盘 2、1 磁盘结构 2、2 操作系统与磁盘的数据交互 2、3 磁盘随机访问与连续访问 2、4 MySQL与磁盘的数据交互 三、索引的理解 3、1 建立测试表 3、2 为何MySQL与磁盘IO交互是 Page 3、3 理解Page 3、3、1 页目录…

【WSL】Windows下的Linux子系统使用方法指南

▒ 目录 ▒ &#x1f6eb; 导读需求开发环境 1️⃣ WSL安装启用或关闭windows功能安装分发命令行启动Linux 2️⃣ WSL 的基本命令显示帮助列出可用的 Linux 发行版列出已安装的 Linux 发行版检查 WSL 版本更新 WSL通过 PowerShell 或 CMD 运行特定的 Linux 发行版关闭WSL全部服…

Centos7防火墙及端口开启

1、防火墙 1.1、查看防火墙是否开启 systemctl status firewalld 1.2、开启防火墙 firewall-cmd --list-ports 1.3、重启防火墙 firewall-cmd --reload 2、端口 2.1、查看所有已开启的端口号 firewall-cmd --list-ports 2.2、手动开启端口 启动防火墙后&#xff0c;默认没有开…

智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.共生生物算法4.实验参数设定5.算法结果6.…

1、springboot项目运行报错

问题1&#xff1a;获取不到配置文件的参数 我的配置文件获取的参数如下&#xff1a; public class Configures{Value("${configmdm.apk.apkName}")private static String apkName;private void setApkName(String apkName) {Configures.apkName apkName;}private …

【亚马逊云科技】通过高性能低延迟对象存储 S3实现网站资源托管

本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 文章目录 前言1 S3 介绍1.1 优点 2 使用步骤2.1 注册账户2.2 创建存储桶2.2.1 打开控制…