Files
jiapuapp/services/api/region-service.js
T

44 lines
1.4 KiB
JavaScript

import { hasRemoteConfig } from '@/utils/runtime-config.js'
import {
normalizeRegionCode,
normalizeRegionParentCode,
normalizeRegionSelectorItems
} from './region-contract.js'
import {
createRequestError,
requestStrict
} from './request-client.js'
const requireRemoteRegion = (label) => {
if (hasRemoteConfig()) return
throw createRequestError(`${label}读取需要真实服务,当前本地预览不会伪造结果`, 'REMOTE_READ_REQUIRED')
}
export const regionApi = {
async getRegionChildren(parentCode, requestOptions = {}) {
requireRemoteRegion('地区选择')
const regionChildren = await requestStrict({
url: '/genealogy/app/region/children',
method: 'GET',
data: { parentCode: normalizeRegionParentCode(parentCode) }
}, {
requestController: requestOptions.requestController ?? null
})
return normalizeRegionSelectorItems(regionChildren)
},
async getRegionPath(regionCode, requestOptions = {}) {
requireRemoteRegion('行政区划路径')
const regionPath = await requestStrict({
url: `/genealogy/app/region/path/${encodeURIComponent(normalizeRegionCode(regionCode))}`,
method: 'GET'
}, {
requestController: requestOptions.requestController ?? null
})
if (!Array.isArray(regionPath)) {
throw createRequestError('行政区划路径响应不是列表', 'REGION_PATH_RESPONSE_INVALID')
}
return regionPath
}
}