<div align="center" style="margin-top: 100px;margin-bottom: 100px;">
  <img src="./examples/assets/v-region.png" width="400" />
</div>

# [v-region](https://terryz.github.io/vue/#/region)

[![test](https://github.com/TerryZ/v-region/actions/workflows/npm-publish.yml/badge.svg?branch=master)](https://github.com/TerryZ/v-region/actions/workflows/npm-publish.yml)
[![code coverage](https://codecov.io/gh/TerryZ/v-region/branch/master/graph/badge.svg?token=FmdV7kVgIp)](https://codecov.io/gh/TerryZ/v-region)
[![npm version](https://img.shields.io/npm/v/v-region.svg)](https://www.npmjs.com/package/v-region)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
[![npm download](https://img.shields.io/npm/dy/v-region.svg)](https://www.npmjs.com/package/v-region)

简洁易用的的中国行政区划选择器，可选择 “省/直辖市”、“市”、“区/县”、“乡/镇/街道” 4 级行政区域
A simple region cascade selector for vue, provide 4 levels Chinese administrative division data

行政区划数据源更新日期：<!-- DATA_VERSION -->`2026-03-25`<!-- DATA_VERSION_END -->

如果你的项目正在使用 vue `2.x` 版本，请使用 [v-region 2.x](https://github.com/TerryZ/v-region/tree/dev-vue2) 版本

## 文档与实例（Documentation and Examples）

更多的文档与实例请浏览（Explorer on）

- [github-pages](https://terryz.github.io/docs-vue3/cn/region/)

## 功能特性（Features）

- “省/直辖市”、“市”、“区/县”、“乡/镇/街道” 4 级行政区域选择
- 丰富的使用形式，提供了
  - 下拉列表级联模式 `RegionSelects`
  - 分组模式 `RegionGroup`
  - 多列竖排模式 `RegionColumns`
  - 城市选择器模式 `RegionCityPicker`
  - 纯文本模式 `RegionText`
- 分组 `Group` 与多列 `Columns` 模式可直接使用核心模块 `RegionGroup 与 RegionColumns`，结合其他交互形式可自由组合更多种多样的使用形式，例如结合抽屉 `Drawer`、气泡 `Popover` 或对话框 `Dialog` 使用
- 部分模式允许使用作用域插槽 `Scoped Slots` 的方式自定义触发对象，让组件更灵活、方便地整合在业务场景中
- 除省级以外，其它行政区域级别可通过参数进行切换
- 支持 “直辖市”、“特别行政区” 、“直筒子市” 和 “省辖县/省辖县级市” 等特殊行政区域的数据和内容处理
- 3 级与 4 级行政级别（数据量较大）组件独立拆分使用，按需使用

## 安装插件（Installation）

[![https://nodei.co/npm/v-region.png?downloads=true&downloadRank=true&stars=true](https://nodei.co/npm/v-region.png?downloads=true&downloadRank=true&stars=true)](https://www.npmjs.com/package/v-region)

```sh
# npm
npm i v-region
# yarn
yarn add v-region
# pnpm
pnpm add v-region
```

在项目里全局安装所有功能模块

```js
import { createApp } from 'vue'
import App from './app.vue'
import Region from 'v-region'
// 全局安装以下模块
// RegionGroup
// RegionSelects
// RegionColumns
// RegionCityPicker
// RegionText
createApp(App).use(Region).mount('#app')
```

自定义全局安装模块

```js
import { RegionSelects } from 'v-region'

const app = createApp(App)
app.component('v-region-selects', RegionSelects)
```

## 在页面中使用（Usage）

```vue
<template>
  <RegionSelects
    v-model="region"
    @change="change"
  />
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { RegionSelects } from 'v-region'
import type { RegionValues, RegionModel } from 'v-region'

const region = ref<RegionValues>({
  province: '350000',
  city: '350100',
  area: '350104',
  town: '350104008'
})
function change (data: RegionModel): void {
  console.log(data)
}
</script>
```

## 数据源（Data Source）

Region data come from repo: [mumuy/data_location](https://github.com/mumuy/data_location)

> **原仓库数据说明**
> 省、市、区数据来自于民政局、国务院公告、国家统计局，确保及时更新和权威；
> 街道(镇、乡)数据由于数据庞大，各地各级之前公函较多，无法保证及时有效（最新数据2016年7月31日）；
> 数据是以行政区为单位的行政区划数据。行政管理区与行政区存在重合，不予收录;
> (行政管理区通常包含:***经济特区/经济开发区/高新区/新区/工业区；亦有部分行政管理区升为行政区，需加以区分)

## Star数趋势（Stargazers over time）

[![Stargazers over time](https://starchart.cc/TerryZ/v-region.svg)](https://starchart.cc/TerryZ/v-region)

# Activity

![Alt](https://repobeats.axiom.co/api/embed/b88b52778a2d98e078e741cc3e5d8ede27f73d3f.svg "Repobeats analytics image")

## License

[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FTerryZ%2Fv-region.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FTerryZ%2Fv-region?ref=badge_large)
