Files

37 lines
1.5 KiB
JavaScript

import { createRequestError } from './request-client.js'
import { normalizeResponseText } from './response-normalizers.js'
export const normalizeRegionParentCode = (value) => {
if (value === undefined || value === null || value === '') return '0'
if (typeof value !== 'string' || !value.trim()) throw new TypeError('地区父级标识无效')
return value.trim()
}
export const normalizeRegionCode = (value) => {
if (typeof value !== 'string' || !value.trim()) throw new TypeError('行政区划编码无效')
return value.trim()
}
export const normalizeRegionSelectorItems = (value) => {
if (!Array.isArray(value)) {
throw createRequestError('地区选择响应不是列表', 'REGION_RESPONSE_INVALID')
}
return value.map((item) => {
if (!item || typeof item !== 'object' || Array.isArray(item)) {
throw createRequestError('地区选择响应包含无效条目', 'REGION_RESPONSE_INVALID')
}
const regionCode = normalizeResponseText(item.regionCode ?? item.value, 'regionCode')
const label = normalizeResponseText(item.label ?? item.regionName, 'label')
if (!regionCode || !label) {
throw createRequestError('地区选择响应缺少地区名称或标识', 'REGION_RESPONSE_INVALID')
}
return {
regionCode,
label,
parentCode: normalizeResponseText(item.parentCode, 'parentCode'),
leaf: item.leaf === true,
regionLevel: Number.isInteger(item.regionLevel) ? item.regionLevel : null
}
})
}