UNPKG

element-china-area-data-new2

Version:
217 lines (204 loc) 6.63 kB
import REGION_DATA from 'china-area-data-new' import {cloneDeep} from 'lodash-es' // code转汉字大对象 const CodeToText = {} // 汉字转code大对象 const TextToCode = {} const provinceObject = REGION_DATA['86'] // 省份对象 const useRegionData = [] let regionData = [] let provinceAndCityData = [] let areaData = [] CodeToText[''] = '全部' // 计算省 for (const prop in provinceObject) { useRegionData.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 = useRegionData.length; i < len; i++) { const provinceCode = useRegionData[i].value const provinceText = useRegionData[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) { useRegionData[i].children = provinceChildren } } provinceAndCityData = cloneDeep(useRegionData) // 计算区 for (let i = 0, len = useRegionData.length; i < len; i++) { const province = useRegionData[i].children const provinceText = useRegionData[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 } } } } regionData = cloneDeep(useRegionData) // 计算街道 for (let i = 0, len = useRegionData.length; i < len; i++) { const province = useRegionData[i].children const provinceText = useRegionData[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]) { //todo const areaChildren = [] for (const areaprop in REGION_DATA[prop]) { areaChildren.push({ value: areaprop, label: REGION_DATA[prop][areaprop] }) CodeToText[areaprop] = REGION_DATA[prop][areaprop] TextToCode[provinceText][cityText][REGION_DATA[cityCode][prop]][REGION_DATA[prop][areaprop]] = { code: areaprop } } if (areaChildren.length) { let index = province[j].children.findIndex(v => { return v.value == prop }) province[j].children[index].children = areaChildren //REGION_DATA[cityCode][prop].children = areaChildren } } } } } areaData = cloneDeep(useRegionData) // 添加“全部”选项 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: '全部' }) } } } } const areaDataPlus = cloneDeep(areaData) // areaDataPlus.unshift({ // value: '', // label: '全部' // }) for (let i = 0, len = areaDataPlus.length; i < len; i++) { const province = areaDataPlus[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: '全部' }) for (let k = 0, len = city.length; k < len; k++) { let area = city[k].children if (area && area.length) { area.unshift({ value: '', label: '全部' }) }else { city[k].children=[{ value: '', label: '全部' }] } } } } } } console.log('regionData',regionData) export { provinceAndCityData, provinceAndCityDataPlus, regionData, regionDataPlus, areaData, areaDataPlus, CodeToText, TextToCode }