UNPKG

jiku-ui

Version:

A Component Library for Vue.js.

102 lines (97 loc) 2.54 kB
import { getAllProvince, getCities, getCounties, getTowns } from './api'; import get from 'lodash/get'; export default { props: { httpClient: { required: true }, apiUrlMap: { required: true }, responseProps: { required: true }, responsePath: { required: true }, addressIDs: { type: Array, default: () => ([]) }, level: { required: true }, disabled: { required: true }, clearable: { type: Boolean, default: false } }, computed: { addressHttpClient() { return this.httpClient || this.$axios || this.$fetch || window.fetch; } }, methods: { getAllProvince() { const { apiUrlMap, responseProps, responsePath, level } = this; return getAllProvince(this.addressHttpClient, apiUrlMap.province) .then(res => { return get(res, responsePath, res).map(v => ({ label: v[responseProps.provinceName], value: v[responseProps.provinceID], leaf: level === 1 })); }) .catch(() => { return []; }); }, getCities(provinceID) { const { apiUrlMap, responseProps, responsePath, level } = this; return getCities(this.addressHttpClient, apiUrlMap.city, provinceID) .then(res => { return get(res, responsePath, res).map(v => ({ label: v[responseProps.cityName], value: v[responseProps.cityID], leaf: level === 2 })); }) .catch(() => { return []; }); }, getCounties(cityID) { const { apiUrlMap, responseProps, responsePath, level } = this; return getCounties(this.addressHttpClient, apiUrlMap.county, cityID) .then(res => { return get(res, responsePath, res).map(v => ({ label: v[responseProps.countyName], value: v[responseProps.countyID], leaf: level === 3 })); }) .catch(() => { return []; }); }, getTowns(countyID) { const { apiUrlMap, responseProps, responsePath, level } = this; return getTowns(this.addressHttpClient, apiUrlMap.town, countyID) .then(res => { return get(res, responsePath, res).map(v => ({ label: v[responseProps.townName], value: v[responseProps.townID], leaf: level === 4 })); }) .catch(() => { return []; }); } } };