// @ts-nocheck
|
|
import _areaList from './city-china.json';
|
|
export const areaList = _areaList
|
|
// #ifndef UNI-APP-X
|
|
type UTSJSONObject = Record<string, string>
|
|
// #endif
|
|
// #ifdef UNI-APP-X
|
|
type Object = UTSJSONObject
|
|
// #endif
|
|
type AreaList = {
|
|
province_list : Map<string, string>;
|
|
city_list : Map<string, string>;
|
|
county_list : Map<string, string>;
|
|
}
|
|
// type CascaderOption = {
|
|
// text : string;
|
|
// value : string;
|
|
// children ?: CascaderOption[];
|
|
// };
|
|
|
|
const makeOption = (
|
|
label : string,
|
|
value : string,
|
|
children ?: UTSJSONObject[],
|
|
) : UTSJSONObject => ({
|
|
label,
|
|
value,
|
|
children,
|
|
});
|
|
|
|
|
|
|
|
export function useCascaderAreaData() : UTSJSONObject[] {
|
|
const city = areaList['city_list'] as UTSJSONObject
|
|
const county = areaList['county_list'] as UTSJSONObject
|
|
const province = areaList['province_list'] as UTSJSONObject
|
|
const provinceMap = new Map<string, UTSJSONObject>();
|
|
Object.keys(province).forEach((code) => {
|
|
provinceMap.set(code.slice(0, 2), makeOption(`${province[code]}`, code, []));
|
|
});
|
|
|
|
const cityMap = new Map<string, UTSJSONObject>();
|
|
|
|
Object.keys(city).forEach((code) => {
|
|
const option = makeOption(`${city[code]}`, code, []);
|
|
cityMap.set(code.slice(0, 4), option);
|
|
|
|
const _province = provinceMap.get(code.slice(0, 2));
|
|
if (_province != null) {
|
|
(_province['children'] as UTSJSONObject[]).push(option)
|
|
}
|
|
});
|
|
|
|
Object.keys(county).forEach((code) => {
|
|
const _city = cityMap.get(code.slice(0, 4));
|
|
if (_city != null) {
|
|
(_city['children'] as UTSJSONObject[]).push(makeOption(`${county[code]}`, code, null));
|
|
}
|
|
});
|
|
|
|
// #ifndef APP-ANDROID || APP-IOS
|
|
return Array.from(provinceMap.values());
|
|
// #endif
|
|
// #ifdef APP-ANDROID || APP-IOS
|
|
const obj : UTSJSONObject[] = []
|
|
provinceMap.forEach((value, code) => {
|
|
obj.push(value)
|
|
})
|
|
return obj
|
|
// #endif
|
|
}
|