更新记录

1.1.0(2026-02-26) 下载此版本

处理无法显示的问题

1.0.0(2026-02-26) 下载此版本

省市区三级联动地址选择器组件

组件描述

这是一个基于 Vue3 + uni-app 开发的省市区三级联动地址选择器组件,提供优雅的底部弹窗式地址选择体验。组件自动处理各级行政区域的数据联动,并智能应对直辖市、无下级区域等特殊情况。

核心功能

1. 三级联动选择

  • 省 → 市 → 区 三级数据联动
  • 点击省级自动加载对应市级列表
  • 点击市级自动加载对应区级列表
  • 实时显示已选中的项目(✓ 标记)

2. 智能数据处理

  • 自动处理直辖市:北京、天津、上海、重庆直接跳过市级选择
  • 自动处理无下级区域:当某级无数据时,自动停留在当前层级
  • 数据完整性保障:智能补全缺失的数据层级

3. 记忆功能

  • 记住上次选择:再次打开时自动显示已选中的省市区
  • 支持默认值传入:可通过 defaultAddress 属性预设选中项
  • 自动定位选项卡:根据已选数据自动切换到对应层级

4. 流畅的交互体验

  • 底部弹窗设计:从屏幕底部滑出,符合移动端操作习惯
  • 固定高度:70vh 固定高度,避免滚动回弹
  • 选项卡切换:点击顶部标签可自由切换省/市/区
  • 实时反馈:选择项即时显示,确认后返回完整数据

5. 完善的数据返回

确认后返回完整的地址对象,包含:

  • 省份信息(名称、编码)
  • 城市信息(名称、编码)
  • 区域信息(名称、编码)
  • 完整地址字符串(如:广东省广州市天河区)

使用场景

  • 电商收货地址:用户填写收货地址时选择省市区
  • 个人信息编辑:编辑用户资料中的所在地信息
  • 地区筛选:按地区筛选商品、店铺等
  • 表单填写:各类需要选择地区的业务表单

平台兼容性

uni-app(3.6.17)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

省市区地址选择器组件使用说明

快速开始

1. 引入组件

<template>
  <view>
    <!-- 触发按钮 -->
    <button @click="showAddressPicker">选择地址</button>

    <!-- 地址选择器组件 -->
    <AddressPicker 
      ref="addressPickerRef"
      @confirm="handleAddressConfirm"
      @cancel="handleAddressCancel"
    />
  </view>
</template>

<script setup>
import { ref } from 'vue'
import AddressPicker from '@/components/AddressPicker.vue'

const addressPickerRef = ref()

// 打开弹窗
function showAddressPicker() {
  addressPickerRef.value?.showPopup()
}

// 确认选择
function handleAddressConfirm(address) {
  console.log('选择的地址:', address)
  // address包含:省、市、区信息和完整地址字符串
}

// 取消选择
function handleAddressCancel() {
  console.log('已取消')
}
</script>

API说明

属性 Props

属性名 类型 说明
defaultAddress Object 默认选中的地址(用于回显)

事件 Events

事件名 返回值 说明
confirm Object 点击确定时返回地址对象
cancel - 点击取消时触发

方法 Methods

方法名 说明
showPopup() 打开弹窗

返回数据格式

{
  province: { name: "广东省", code: "440000" },
  city: { name: "广州市", code: "440100" },
  area: { name: "天河区", code: "440106" },
  fullAddress: "广东省广州市天河区"
}

带默认值的用法

<template>
  <AddressPicker 
    ref="addressPickerRef"
    :default-address="userAddress"
    @confirm="handleAddressConfirm"
  />
</template>

<script setup>
// 默认地址数据格式
const userAddress = {
  province: { name: "广东省", code: "440000" },
  city: { name: "广州市", code: "440100" },
  area: { name: "天河区", code: "440106" }
}
</script>

环境要求

  • HBuilderX 3.0+
  • 需要安装 uni-popup 组件

就这么简单,开箱即用!

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议