29 lines
709 B
JavaScript
29 lines
709 B
JavaScript
import { codeToText, regionData } from 'element-china-area-data'
|
|
|
|
const buildMap = (nodes, map) => {
|
|
nodes.forEach((node) => {
|
|
if (node?.value && node?.label) {
|
|
map[node.value] = node.label
|
|
}
|
|
if (node?.children?.length) {
|
|
buildMap(node.children, map)
|
|
}
|
|
})
|
|
}
|
|
|
|
const fallbackMap = {}
|
|
if (!codeToText && Array.isArray(regionData)) {
|
|
buildMap(regionData, fallbackMap)
|
|
}
|
|
|
|
export const regionLabel = (code) => {
|
|
if (!code) return ''
|
|
const mapping = codeToText || fallbackMap
|
|
return mapping?.[code] || code
|
|
}
|
|
|
|
export const formatRegion = (province, city, district) => {
|
|
const parts = [province, city, district].filter(Boolean).map(regionLabel)
|
|
return parts.join(' ')
|
|
}
|