UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

285 lines (280 loc) 6.94 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var city_data = require('./data.js'); /* eslint-disable @typescript-eslint/prefer-for-of */ /** * 获取如下格式的城市列表,包含`全国``全省`选项 * @returns {Array} 城市列表 * @example * * const res = getAreaDataAll(); * // [ * // { * // text: '全国', * // code: '0', * // children: [{ * // text: '不限', * // code: '0', * // }], * // }, * // { * // text: '北京', * // code: '11', * // children: [{ * // text: '北京', * // code: '0', * // }], * // }, * // { * // text: '天津', * // code: '12', * // children: [{ * // text: '天津', * // code: '0', * // }], * // }, * // { * // text: '河北', * // code: '13', * // children: [{ * // text: '全省', * // code: '0', * // }, * // { * // text: '石家庄', * // code: '1', * // }, * // { * // text: '唐山', * // code: '2', * // }, * // // ... * // ], * // }, * // // ... * // ]; * */ function getAreaDataAll() { var areaArray = []; // 全国 var provObject = {}; provObject.text = '全国'; provObject.code = '0'; provObject.children = [{ text: '不限', code: '0' }]; areaArray.push(provObject); getAreaData(city_data.RAW_CITY_DATA, areaArray, true); return areaArray; } /** * 获取城市列表,默认不包含`全省`选项 * @param {object} [data] 原始数据 * @param {array} [areaArray = []] 结果列表 * @param {boolean} [allProvFlag = false] 是否包含`全省`选项 * @returns {Array} 城市列表 * @example * * const res = getAreaData(); * // [ * // { * // text: '北京', * // code: '11', * // children: [{ * // text: '北京', * // code: '0', * // }], * // }, * // { * // text: '天津', * // code: '12', * // children: [{ * // text: '天津', * // code: '0', * // }], * // }, * // { * // text: '河北', * // code: '13', * // { * // text: '石家庄', * // code: '1', * // }, * // { * // text: '唐山', * // code: '2', * // }, * // // ... * // ], * // }, * // // ... * // ]; * */ function getAreaData(data, areaArray, allProvFlag) { if (data === void 0) { data = city_data.RAW_CITY_DATA; } if (areaArray === void 0) { areaArray = []; } if (allProvFlag === void 0) { allProvFlag = false; } var cityData = data.cityData, provData = data.provData; Object.keys(provData).forEach(function (key) { var provObject = {}; provObject.text = provData[key]; provObject.code = key; areaArray.push(provObject); }); Object.keys(cityData).forEach(function (key1) { var cityList = cityData[key1]; var array = []; if (Array.isArray(cityList)) { var cityObject = {}; cityObject.text = cityList[0]; cityObject.code = '0'; array.push(cityObject); } else { if (allProvFlag) { // 全省 array.push({ text: '全省', code: '0' }); } Object.keys(cityList).forEach(function (key2) { var cityObject = {}; cityObject.text = cityList[key2]; cityObject.code = key2; array.push(cityObject); }); } for (var index = 0; index < areaArray.length; index++) { var element = areaArray[index]; if (element.code === key1) { element.children = array; } } }); return areaArray; } /** * 根据省份城市转化为`id`数组 * @param {string} provinceStr * @param {string} cityStr * @returns {Array} 包含省份、城市ID的数组 * * @example * const res = getAreaCode('山东', '德州'); * // ['37', '14'] */ function getAreaCode(provinceStr, cityStr) { if (provinceStr === void 0) { provinceStr = ''; } if (cityStr === void 0) { cityStr = ''; } if (typeof provinceStr === 'undefined') { return []; } provinceStr = provinceStr.replace('省', '').replace('市', ''); // 考虑直辖市 cityStr = cityStr.replace('市', ''); var areaList = getAreaData(); var codes = []; for (var i = 0; i < areaList.length; i++) { if (provinceStr == areaList[i].text) { codes[0] = areaList[i].code; for (var j = 0; j < areaList[i].children.length; j++) { if (cityStr == areaList[i].children[j].text) { codes[1] = areaList[i].children[j].code; return codes; } } } } return codes; } /** * 根据`id`将省份城市转化为字符串数组 * @param {string | number} provinceId * @param {string | number} cityId * @returns {Array} 包含省份、城市名字的数组 * * @example * const res = getProvName(37, 14) * // ['山东', '德州'] * * const res2 = getCityName(11) * // ['北京', '北京'] */ function getAreaName(provinceId, cityId) { var provName = ''; // eslint-disable-next-line no-prototype-builtins if (city_data.RAW_CITY_DATA.provData.hasOwnProperty(provinceId)) { provName = city_data.RAW_CITY_DATA.provData[provinceId]; } var cityName = ''; var cityList = {}; // eslint-disable-next-line no-prototype-builtins if (city_data.RAW_CITY_DATA.cityData.hasOwnProperty(provinceId)) { cityList = city_data.RAW_CITY_DATA.cityData[provinceId]; } if (Array.isArray(cityList)) { cityName = provName; } else if (cityId) { cityName = cityList[cityId]; } return [provName, cityName]; } /** * 根据`id`获取省份名字 * @param {string | number} provinceId * @returns {string} 省份名字 * * @example * const res = getProvName(37) * // 山东 * * const res2 = getCityName(11) * // 北京 */ function getProvName(provinceId) { var provName = city_data.RAW_CITY_DATA.provData[provinceId]; return provName; } /** * 根据`id`获取城市名字 * @param {string | number} provinceId * @param {string | number} cityId * @returns {string} 城市名字 * * @example * const res = getCityName(37, 14) * // 德州 * * const res2 = getCityName(11) * // 北京 */ function getCityName(provinceId, cityId) { var provName = city_data.RAW_CITY_DATA.provData[provinceId]; var cityName = ''; var cityList = city_data.RAW_CITY_DATA.cityData[provinceId]; if (Array.isArray(cityList)) { cityName = provName; } else if (cityId && cityList) { cityName = cityList[cityId]; } return cityName; } exports.getAreaCode = getAreaCode; exports.getAreaData = getAreaData; exports.getAreaDataAll = getAreaDataAll; exports.getAreaName = getAreaName; exports.getCityName = getCityName; exports.getProvName = getProvName;