Skip to content

省市区选择器组件

概述

RegionSelector 是一个省市区级联选择器组件,支持最多五级行政区划(省、市、区、街道、村庄),支持静态数据和动态 API 懒加载两种模式。

组件路径web/apps/web-ele/src/components/zq-form/region-selector/

组件名称RegionSelector

功能特性

  • 五级行政区划:省、市、区、街道、村庄
  • 支持静态数据和 API 懒加载
  • 可配置选择级别
  • 支持搜索过滤
  • 显示完整路径或仅显示最后一级
  • 支持任意级别选择(checkStrictly)

Props

属性类型默认值说明
modelValuestring | string[]-选中的区域编码数组
level1 | 2 | 3 | 4 | 53选择级别
placeholderstring-占位符(自动根据级别生成)
disabledbooleanfalse是否禁用
clearablebooleantrue是否可清除
multiplebooleanfalse是否多选
showAllLevelsbooleantrue是否显示完整路径
separatorstring'/'路径分隔符
dataSource'static' | 'api''api'数据源类型
apiUrlstring'/api/core/regions'API 地址
lazybooleantrue是否懒加载
checkStrictlybooleanfalse是否可选任意级别
expandTrigger'click' | 'hover''click'展开触发方式

级别说明

级别说明默认占位符
1仅省份请选择省份
2省/市请选择省/市
3省/市/区请选择省/市/区
4省/市/区/街道请选择省/市/区/街道
5省/市/区/街道/村庄请选择省/市/区/街道/村庄

Events

事件参数说明
update:modelValuestring[] | undefined值更新(区域编码数组)
changestring[] | undefined, RegionItem[]值变化,返回编码数组和区域对象数组

使用示例

省市区三级选择

vue
<template>
  <RegionSelector
    v-model="regionCodes"
    :level="3"
    placeholder="请选择省市区"
  />
</template>

<script setup>
import { ref } from 'vue';

const regionCodes = ref([]);
// 选中后值为:['110000', '110100', '110101']
</script>

仅省市两级

vue
<template>
  <RegionSelector
    v-model="regionCodes"
    :level="2"
  />
</template>

五级完整选择

vue
<template>
  <RegionSelector
    v-model="regionCodes"
    :level="5"
    :lazy="true"
  />
</template>

使用静态数据

vue
<template>
  <RegionSelector
    v-model="regionCodes"
    data-source="static"
    :level="3"
  />
</template>

允许选择任意级别

vue
<template>
  <RegionSelector
    v-model="regionCodes"
    :level="3"
    :check-strictly="true"
  />
</template>

与表单设计器集成

在表单设计器中,该组件作为 region-selector 类型的表单项使用:

json
{
  "type": "region-selector",
  "field": "region",
  "label": "所在地区",
  "props": {
    "level": 3,
    "dataSource": "api",
    "lazy": true,
    "showAllLevels": true,
    "clearable": true
  }
}

API 依赖

  • RegionApi.getProvinces() - 获取省份列表
  • RegionApi.getCities(provinceCode) - 获取城市列表
  • RegionApi.getAreas(cityCode) - 获取区县列表
  • RegionApi.getStreets(areaCode) - 获取街道列表
  • RegionApi.getVillages(streetCode) - 获取村庄列表

典型应用场景

  • 地址选择:用户收货地址、公司地址
  • 区域配置:配置服务覆盖区域
  • 数据统计:按区域筛选数据

Released under the MIT License.