import { CodeToText } from 'element-china-area-data' /** * 地区工具类 */ class RegionUtil { /** * 根据区级code获取完整的省市区信息 * @param {string} districtCode 区级code * @returns {Object} 包含省市区信息的对象 */ static getFullRegionByDistrictCode(districtCode) { if (!districtCode) return null if (districtCode.endsWith('0000')) { return { province: { code: districtCode, name: CodeToText[districtCode] }, city: { code: '', name: '' }, district: { code: '', name: '' } } } else if (districtCode.endsWith('00')) { const provinceCode = districtCode.slice(0,2) + '0000' return { province: { code: provinceCode, name: CodeToText[provinceCode] }, city: { code: districtCode, name: CodeToText[districtCode] }, district: { code: '', name: '' } } } else { const cityCode = districtCode.slice(0,4) + '00' const provinceCode = districtCode.slice(0,2) + '0000' return { province: { code: provinceCode, name: CodeToText[provinceCode] }, city: { code: cityCode, name: CodeToText[cityCode] }, district: { code: districtCode, name: CodeToText[districtCode] } } } } /** * 将省市区code数组转换为对象形式 * @param {Array} codes 省市区code数组 [省code, 市code, 区code] * @returns {Object} 包含省市区信息的对象 */ static codesToRegionObject(codes) { if (!codes || codes.length !== 3) return null if (codes.length === 1) { return { province: { code: codes[0], name: CodeToText[codes[0]] || '' }, city: { code: '', name: '' }, district: { code: '', name: '' } } } else if (codes.length === 2) { return { province: { code: codes[0], name: CodeToText[codes[0]] || '' }, city: { code: codes[1], name: CodeToText[codes[1]] || '' }, district: { code: '', name: '' } } } else { return { province: { code: codes[0], name: CodeToText[codes[0]] || '' }, city: { code: codes[1], name: CodeToText[codes[1]] || '' }, district: { code: codes[2], name: CodeToText[codes[2]] || '' } } } } /** * 将省市区对象转换为字符串 * @param {Object} region 省市区对象 * @returns {string} 格式化后的地址字符串 */ static regionToString(region) { if (!region) return '' const { province, city, district } = region return `${province.name || ''}${city.name || ''}${district.name || ''}` } /** * 根据区级code获取格式化地址字符串 * @param {string} districtCode 区级code * @returns {string} 格式化后的地址字符串 */ static getRegionStringByDistrictCode(districtCode) { const region = this.getFullRegionByDistrictCode(districtCode) return this.regionToString(region) } /** * 根据区级code获取省市区code数组 * @param {string} districtCode 区级code * @returns {string} 省市区code数组 */ static getRegionCodeArrayByDistrictCode(districtCode) { const region = this.getFullRegionByDistrictCode(districtCode) console.log('getRegionCodeArrayByDistrictCode', region) if (!region || region.province.code === '') { return [] } else if (region.city.code === '') { return [region.province.code] }else if (region.district.code === '') { return [region.province.code, region.city.code] }else { return [region.province.code, region.city.code, region.district.code] } } } export default RegionUtil