UNPKG

@aurouscia/vue-china-area-select

Version:

vue3中国大陆地区省市区(2025)联动选择器

65 lines (57 loc) 2.4 kB
# vue3中国大陆地区省市区(2025)联动选择器 ## 行为 - 选择一般的三级地区,将会出现三个select标签 - 选择直辖市、省直辖县(无所属地级)、直筒子市(地级但无下辖县),将会出现两个select标签 - 港澳台地区,只会出现一个select标签 - 事件触发时返回的数组长度等于select标签的数量 ## 引入 ```js import ChinaAreaSelect from "@aurouscia/vue-china-area-select" ``` ## 使用 ```vue <div class="my-selects"> <ChinaAreaSelect :names-init="['湖北省','武汉市','江岸区']" :code-init="'000000'" @change="changeHandler" ></ChinaAreaSelect> </div> ``` ### Props - `:names-init` 初始化选择的省市区名称 - `:code-init` 初始化选择的省市区六位代码(优先级高于`names-init`) - `:emit-on-inited` 初始化时是否emit一次?(默认为`false`### Emits - `@change` 选择器值改变时触发的事件 - 返回值为当前选中的省市区名称数组`names`(长度可能为123)和六位代码`code`,以及当前状态是否正确即`valid`布尔值(有可选项时必须选择一个) - 初始化时默认不会触发,但使用expose重新初始化时若改变了当前值则会触发 ### Expose - `initByProps()`使用组件当前的props重新初始化选择器(覆盖当前的值) - `getEmitData()`获取当前数据,和`@change`获取的一样 ### 自定义样式 本组件不提供任何样式,需自定义样式请在外面套上容器,并编写**非scoped**`style`标签,例如: ```css .my-selects select{ font-size: 18px; height: 26px; } .my-selects select.cas_not_selected{ border: 2px solid red; } ``` 其中`cas_not_selected`为未选择选项的select的类名,需重点强调,提示用户选择该项 ### 自定义布局 本组件内是1-3select标签,没有用容器包起来。需自定义布局请在外面套上容器,并指定容器的布局,例如: ```css .my-selects{ display: flex; justify-content: space-between; } ``` 由于select标签的数量和长度不确定,建议使用`flex`布局,并设置`flex-wrap: wrap` ## 数据来源 [@aurouscia/china-areas](https://www.npmjs.com/package/@aurouscia/china-areas) 该包也是我负责维护,如果行政区划有变动,请在gitee上提issue,我会及时更新 ## 许可证 MIT