element-plus-china-area
Version:
Element PLUS 级联 中国省市区港澳台数据
152 lines (136 loc) • 4.06 kB
JavaScript
import ORIGINAL_DATA from './pca-code.json'
import { cloneDeep } from 'lodash-es'
let REGION_DATA = {
86: {}
}
ORIGINAL_DATA.map((item, index) => {
REGION_DATA['86'][item.value + '0000'] = item.label
REGION_DATA[item.value + '0000'] = {}
item.children.map((items, indexs) => {
REGION_DATA[item.value + '0000'][items.value + '00'] = items.label
REGION_DATA[items.value + '00'] = {}
items.children.map((itemss, indexss) => {
REGION_DATA[items.value + '00'][itemss.value] = itemss.label
})
})
})
// console.log(REGION_DATAS)
// console.log(REGION_DATA)
// code转汉字大对象
const CodeToText = {}
// 汉字转code大对象
const TextToCode = {}
const provinceObject = REGION_DATA['86'] // 省份对象
const regionData = []
let provinceAndCityData = []
CodeToText[''] = '全部'
// 计算省
for (const prop in provinceObject) {
regionData.push({
value: prop, // 省份code值
label: provinceObject[prop] // 省份汉字
})
CodeToText[prop] = provinceObject[prop]
TextToCode[provinceObject[prop]] = {
code: prop
}
TextToCode[provinceObject[prop]]['全部'] = {
code: ''
}
}
// 计算市
for (let i = 0, len = regionData.length; i < len; i++) {
const provinceCode = regionData[i].value
const provinceText = regionData[i].label
const provinceChildren = []
for (const prop in REGION_DATA[provinceCode]) {
provinceChildren.push({
value: prop,
label: REGION_DATA[provinceCode][prop]
})
CodeToText[prop] = REGION_DATA[provinceCode][prop]
TextToCode[provinceText][REGION_DATA[provinceCode][prop]] = {
code: prop
}
TextToCode[provinceText][REGION_DATA[provinceCode][prop]]['全部'] = {
code: ''
}
}
if (provinceChildren.length) {
regionData[i].children = provinceChildren
}
}
provinceAndCityData = cloneDeep(regionData)
// 计算区
for (let i = 0, len = regionData.length; i < len; i++) {
const province = regionData[i].children
const provinceText = regionData[i].label
if (province) {
for (let j = 0, len = province.length; j < len; j++) {
const cityCode = province[j].value
const cityText = province[j].label
const cityChildren = []
for (const prop in REGION_DATA[cityCode]) {
cityChildren.push({
value: prop,
label: REGION_DATA[cityCode][prop]
})
CodeToText[prop] = REGION_DATA[cityCode][prop]
TextToCode[provinceText][cityText][REGION_DATA[cityCode][prop]] = {
code: prop
}
}
if (cityChildren.length) {
province[j].children = cityChildren
}
}
}
}
// 添加“全部”选项
const provinceAndCityDataPlus = cloneDeep(provinceAndCityData)
provinceAndCityDataPlus.unshift({
value: '',
label: '全部'
})
for (let i = 0, len = provinceAndCityDataPlus.length; i < len; i++) {
const province = provinceAndCityDataPlus[i].children
if (province && province.length) {
province.unshift({
value: '',
label: '全部'
})
for (let j = 0, len = province.length; j < len; j++) {
const city = province[j].children
if (city && city.length) {
city.unshift({
value: '',
label: '全部'
})
}
}
}
}
const regionDataPlus = cloneDeep(regionData)
regionDataPlus.unshift({
value: '',
label: '全部'
})
for (let i = 0, len = regionDataPlus.length; i < len; i++) {
const province = regionDataPlus[i].children
if (province && province.length) {
province.unshift({
value: '',
label: '全部'
})
for (let j = 0, len = province.length; j < len; j++) {
const city = province[j].children
if (city && city.length) {
city.unshift({
value: '',
label: '全部'
})
}
}
}
}
export { provinceAndCityData, regionData, provinceAndCityDataPlus, regionDataPlus, CodeToText, TextToCode }