vue-area-linkage
点这里看demo:https://dwqs.github.io/vue-area-linkage/
安装
这里安装v5之后的版本
npm i --save vue-area-linkage area-data
在mian.js里面注册
import VueAreaLinkage from 'vue-area-linkage';
import 'vue-area-linkage/dist/index.css';
Vue.use(VueAreaLinkage);
然后再具体使用的页面引入
import { AreaCascader } from "vue-area-linkage"
import { pca, pcaa } from 'area-data';
同时data数据中定义
selected: [], //数组对应的就是选中的那个省市区。根据type来确定是省市区汉字的数组还是编码组成的数组。
//selected[0]省。selected[1]市。selected[2]区。
pca: pca,
pcaa: pcaa
使用,可以选择两种方式来写都行。
1,使用area-select 来写
<area-select v-model="selected" :data="pca"></area-select> // 省市
// 省市区:<area-select v-model="selected" :data="pcaa"></area-select>
2,使用area-cascader 来写
<area-cascader v-model="selected2" :data="pca"></area-cascader> // 省市
// 省市区:<area-cascader v-model="selected2" :data="pcaa"></area-cascader>
area-select 组件 type可以指定返回的数据格式的类型是编码还是中文
参数 | 类型 | 可选值 | 默认值 | 说明 |
---|---|---|---|---|
type | String | all/code/text | code | 设置返回的数据格式 |
placeholders | Array | - | [] | 设置 placeholder text |
level | Number | 0/1/2 | 1 | 设置联动层级(0-只选省份/1-省市联动/2-省市区联动) |
size | String | small/medium/large | medium | 设置输入框的大小 |
disabled | Boolean | - | false | 是否禁用 |
data | Object | - | - | 地区数据(v5需要传入) |
icon | String | - | area-select-icon | 自定义下拉小图标 |
v4 仅支持省市区联动,即 v4 不再支持 level 的值为 3(省市区街联动)
area-cascader 组件
参数 | 类型 | 可选值 | 默认值 | 说明 |
---|---|---|---|---|
type | String | all/code/text | code | 设置返回的数据格式 |
placeholder | String | - | '' | 设置 placeholder text |
level | Number | 0/1 | 0 | 设置联动层级(0-省市联动/1-省市区联动) |
size | String | small/medium/large | medium | 设置输入框的大小 |
separator | String | - | '-' | 显示选中文本的分隔符 |
disabled | Boolean | - | false | 是否禁用 |
data | Object | - | - | 地区数据(v5需要传入) |
获取默认值。只能靠编码来显示,如果你只写对应的中文根本显示不出来啊。所以接口的数据是对应编码。
this.selected[0] = pcaa[86][res.data.addrprovinceid]; //res.data.addrprovinceid省对应的id
this.selected[1] = pcaa[res.data.addrprovinceid][res.data.addrcityid]; //res.data.addrcityid省对应的id
this.selected[2] = pcaa[res.data.addrcityid][res.data.addrcountyid]; //res.data.addrcountyid省对应的id