vue 城市选择器的使用 element-china-area-data

一、Element UI 中国省市区级联数据

本文参考:https://www.npmjs.com/package/element-china-area-data

1. 安装

npm install element-china-area-data -S

2. 使用

import { provinceAndCityData, regionData, provinceAndCityDataPlus, regionDataPlus, CodeToText, TextToCode } from 'element-china-area-data'

  1. provinceAndCityData是省市二级联动数据(不带“全部”选项)
  2. regionData是省市区三级联动数据(不带“全部”选项)
  3. provinceAndCityDataPlus是省市区三级联动数据(带“全部”选项)
  4. regionDataPlus是省市区三级联动数据(带“全部”选项)
  5. “全部"选项绑定的value是空字符串”"
  6. CodeToText是个大对象,属性是区域码,属性值是汉字 用法例如:CodeToText[‘110000’]输出北京市
  7. extToCode是个大对象,属性是汉字,属性值是区域码
    用法例如:TextToCode[‘北京市’].code输出110000,TextToCode[‘北京市’][‘市辖区’].code输出110100,TextToCode[‘北京市’][‘市辖区’][‘朝阳区’].code输出110105

3. 案例

3.1 省市二级联动(不带“全部”选项):

<template>
  <div id="app">
    <el-cascader
      size="large"
      :options="options"
      v-model="selectedOptions"
      @change="handleChange">
    </el-cascader>
  </div>
</template>
 
<script>
  import {
     
      provinceAndCityData } from 'element-china-area-data'
  export default {
     
     
    data () {
     
     
      return {
     
     
        options: provinceAndCityData,
        selectedOptions: []
      }
    },
 
    methods: {
     
     
      handleChange (value) {
     
     
        console.log(value)
      }
    }
  }
</script>

3.2 省市二级联动(带“全部”选项):

<template>
  <div id="app">
    <el-cascader
      size="large"
      :options="options"
      v-model="selectedOptions"
      @change="handleChange">
    </el-cascader>
  </div>
</template>
 
<script>
  import {
     
      provinceAndCityDataPlus } from 'element-china-area-data'
  export default {
     
     
    data () {
     
     
      return {
     
     
        options: provinceAndCityDataPlus,
        selectedOptions: []
      }
    },
 
    methods: {
     
     
      handleChange (value) {
     
     
        console.log(value)
      }
    }
  }
</script>

3.3 省市三级联动(不带“全部”选项):

<template>
  <div id="app">
    <el-cascader
      size="large"
      :options="options"
      v-model="selectedOptions"
      @change="handleChange">
    </el-cascader>
  </div>
</template>
 
<script>
  import {
     
      regionData } from 'element-china-area-data'
  export default {
     
     
    data () {
     
     
      return {
     
     
        options: regionData,
        selectedOptions: []
      }
    },
 
    methods: {
     
     
      handleChange (value) {
     
     
        console.log(value)
      }
    }
  }
</script>

3.4 省市三级联动(带“全部”选项):

<template>
  <div id="app">
    <el-cascader
      size="large"
      :options="options"
      v-model="selectedOptions"
      @change="handleChange">
    </el-cascader>
  </div>
</template>
 
<script>
  import {
     
      regionDataPlus } from 'element-china-area-data'
  export default {
     
     
    data () {
     
     
      return {
     
     
        options: regionDataPlus,
        selectedOptions: []
      }
    },
 
    methods: {
     
     
      handleChange (value) {
     
     
        console.log(value)
      }
    }
  }
</script>

4.绑定value格式

value是区域码"110000"

二、CodeToText的使用

参考:https://blog.csdn.net/s1441101265/article/details/104297300

数据示例:codeStr=‘110000,110100,110101’, codeArray=[110000,110100,110101]

getCodeToText(codeStr, codeArray) {
      if (null === codeStr && null === codeArray) {
        return null;
      } else if (null === codeArray) {
        codeArray = codeStr.split(",");
      }

      let area = "";
      switch (codeArray.length) {
        case 1:
          area += CodeToText[codeArray[0]];
          break;
        case 2:
          area += CodeToText[codeArray[0]] + "/" + CodeToText[codeArray[1]];
          break;
        case 3:
          area +=
            CodeToText[codeArray[0]] +
            "/" +
            CodeToText[codeArray[1]] +
            "/" +
            CodeToText[codeArray[2]];
          break;
        default:
          break;
      }
      return area;
    }

效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xiejnpeng/article/details/111400199