84 lines
1.7 KiB
Java
84 lines
1.7 KiB
Java
import Vue from 'vue'
|
|
/**
|
|
* 省市区
|
|
*/
|
|
export default class Area {
|
|
/**
|
|
* 构造器
|
|
* @param pcaa
|
|
*/
|
|
constructor (pcaa) {
|
|
if (!pcaa) {
|
|
pcaa = Vue.prototype.$Jpcaa
|
|
}
|
|
const arr = []
|
|
const province = pcaa['86']
|
|
Object.keys(province).map(key => {
|
|
arr.push({ id: key, text: province[key], pid: '86', index: 1 })
|
|
const city = pcaa[key]
|
|
Object.keys(city).map(key2 => {
|
|
arr.push({ id: key2, text: city[key2], pid: key, index: 2 })
|
|
const qu = pcaa[key2]
|
|
if (qu) {
|
|
Object.keys(qu).map(key3 => {
|
|
arr.push({ id: key3, text: qu[key3], pid: key2, index: 3 })
|
|
})
|
|
}
|
|
})
|
|
})
|
|
this.all = arr
|
|
}
|
|
|
|
get pca () {
|
|
return this.all
|
|
}
|
|
|
|
getCode (text) {
|
|
if (!text || text.length === 0) {
|
|
return ''
|
|
}
|
|
for (const item of this.all) {
|
|
if (item.text === text) {
|
|
return item.id
|
|
}
|
|
}
|
|
}
|
|
|
|
getText (code) {
|
|
if (!code || code.length === 0) {
|
|
return ''
|
|
}
|
|
const arr = []
|
|
this.getAreaBycode(code, arr, 3)
|
|
return arr.join('/')
|
|
}
|
|
|
|
getRealCode (code) {
|
|
const arr = []
|
|
this.getPcode(code, arr, 3)
|
|
return arr
|
|
}
|
|
|
|
getPcode (id, arr, index) {
|
|
for (const item of this.all) {
|
|
if (item.id === id && item.index === index) {
|
|
arr.unshift(id)
|
|
if (item.pid !== '86') {
|
|
this.getPcode(item.pid, arr, --index)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
getAreaBycode (code, arr, index) {
|
|
for (const item of this.all) {
|
|
if (item.id === code && item.index === index) {
|
|
arr.unshift(item.text)
|
|
if (item.pid !== '86') {
|
|
this.getAreaBycode(item.pid, arr, --index)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|