jimu-mobile
Version:
积木组件库助力移动端开发
1,883 lines (1,869 loc) • 43.9 kB
JavaScript
import React, { Component } from 'react';
/*
<City
cityArr={cityArr} // 城市数组
dataAttrName={ // 城市对象的默认属性为// city_id、city_name、first_char,如果对象不是这三个属性名,请把属性名传进去
{
id:'city_id',
name:'city_name',
firstChar:'first_char'
}
}
position= {cityArr[0]} 定位城市
callBack={this.selectCallBack.bind(this)} 选择完以后,回调函数
/>
*/
class City extends Component {
constructor(props) {
super(props);
let i = 0;
const firstChar = ['*'];
// 把26个字母放进数组里
while (i < 26) {
firstChar.push(String.fromCharCode(i + 97).toLocaleUpperCase());
i++;
}
this.fast_charTouchMove = this.fast_charTouchMove.bind(this);
this.fast_charTouchEnd = this.fast_charTouchEnd.bind(this);
this.fast_charClick = this.fast_charClick.bind(this);
this.delCity = this.delCity.bind(this);
this.addCity = this.addCity.bind(this);
this.cityClick = this.cityClick.bind(this);
this.positionAddrClick = this.positionAddrClick.bind(this);
this.delSelect = this.delSelect.bind(this);
this.initSelectCityCon = this.initSelectCityCon.bind(this);
this.initMaxChar = this.initMaxChar.bind(this);
this.initPositionCon = this.initPositionCon.bind(this);
this.initCityCon = this.initCityCon.bind(this);
this.init_fast_char = this.init_fast_char.bind(this);
this.state = {
selectCity: [],
max_char: 'A',
isRadio: true,
showMaxChar: false,
firstChar,
};
}
componentWillMount () {
const self = this;
let {
cityArr,
dataAttrName,
aaa,
} = this.props;
if (cityArr) {
// 如果是对象的话,需要转换一下
if (!cityArr.length) {
const cityObj = cityArr;
cityArr = [];
this.state.firstChar.map((char, index) => {
if (cityObj[char]) {
cityObj[char].map((ele, index) => {
ele[self.props.dataAttrName.firstChar] = char;
cityArr.push(ele);
});
}
});
}
const Obj = {};
/* 把城市分成数组,字母相同的在一组 */
cityArr.map((ele, i) => {
const firstChar = ele[dataAttrName.firstChar];
if (!Obj[firstChar]) {
Obj[firstChar] = [];
}
Obj[firstChar].push(cityArr[i]);
});
this.setState({ cityObj: Obj });
}
}
/* 初始化右侧字母栏 */
init_fast_char () {
const self = this;
const {
fast_charTouchMove,
fast_charTouchEnd,
fast_charClick,
state,
} = this;
const {
cityObj,
firstChar,
} = state;
// console.log(firstChar, 12345, cityObj)
return (
<div
className="fast_char"
onTouchMove={fast_charTouchMove}
onTouchEnd={fast_charTouchEnd}
>
{firstChar.map((char, i) => {
console.log(cityObj[char], 1234587654)
// if (cityObj[char]) {
return (<a
href="javascript:;"
data-char={char}
key={i}
onClick={fast_charClick.bind(self)}
>{char}
</a>
);
//}
return null;
})}
</div>
);
}
/* 解决锚点会产生历史记录,点后退,退不出当前页面的问题 */
fast_charClick (e) {
const fastCharEle = e.currentTarget;
const ele = document.querySelector(`#first_char_${fastCharEle.dataset.char == "*" ? "rm" : fastCharEle.dataset.char}`);
const _cityCon = document.querySelector('._cityCon');
_cityCon.scrollTop = ele.offsetTop;
}
/* 城市点击事件 */
cityClick (e) {
const {
isRadio,
} = this.state;
const {
callBack,
} = this.props;
const target = e.currentTarget,
target_class = target.className,
inp = target.querySelector('input'),
{ checked } = inp,
cityObj = JSON.parse(target.dataset.cityobj);
/* if(!checked&&this.props.selectCity.length===10){
return;
} */
if (isRadio) {
callBack && callBack(cityObj);
return;
}
if (checked) {
inp.checked = false;
target.className = (` ${target_class} `).replace(' select ', ' ');
this.delCity(cityObj);
} else {
inp.checked = true;
target.className += ' select';
this.addCity(cityObj);
}
}
/* 点击城市-城市是未选中的时候,走到这里,把城市ID放入已选城市的数组里 */
addCity (cityData) {
const selectCity = this.state.selectCity.slice(0);
selectCity.push(cityData);
this.setState({
selectCity,
});
}
/* 点击城市-城市是已选中的时候,走到这里,从已选城市的数组里删除城市ID */
delCity (cityData) {
const {
dataAttrName,
} = this.props;
const cityId = cityData[dataAttrName.id];
const selectCityArr = this.state.selectCity.slice(0);
selectCityArr.map((ele, index) => {
Number(cityId) === Number(ele[dataAttrName.id]) && selectCityArr.splice(index, 1);
});
this.setState({
selectCity: selectCityArr,
});
}
/* 点击头部已选城市的删除按钮 */
delSelect (a) {
const { cityid } = a.currentTarget.dataset;
const ele = document.getElementById(`city_${cityid}`);
try {
// oppo r8007 安卓4.3手机运行会报错
ele.click();
} catch (e) {
const ev = document.createEvent('HTMLEvents');
ev.initEvent('click', true, true);
ele.dispatchEvent(ev);
}
}
componentDidUpdate () {
const selectCon = document.getElementById('selectCon');
if (selectCon) {
selectCon.scrollTop = selectCon.scrollHeight;
}
}
fast_charTouchMove (e) {
const {
clientX,
} = e.targetTouches[0];
const {
clientY,
} = e.targetTouches[0];
const ele = document.elementFromPoint(clientX, clientY) || {};
const { dataset } = ele;
if (ele && dataset.char) {
this.setState({
maxChar: dataset.char,
showMaxChar: true,
});
ele.click();
}
e.preventDefault();
}
fast_charTouchEnd () {
this.setState({
showMaxChar: false,
});
}
initCityCon () {
const self = this;
const {
cityObj,
isRadio,
selectCity,
} = this.state;
const {
dataAttrName,
} = this.props;
if (!cityObj) {
return null;
}
return (
<ul className="cityCon">
{
(function () {
const arr = [];
for (const a in cityObj) {
arr.push(<li key={a} id={`first_char_${a == '*' ? 'rm' : a}`}>
<a
className="first_char"
href="javascript:;"
>
{a == '*' ? '* 热门城市' : a}
</a>
{
cityObj[a].map((ele, index) => {
let isCheck = false;
selectCity.map((_ele = {}) => {
if (Number(ele.city_id) === Number(_ele.city_id)) {
isCheck = true;
}
});
{ /* div不用label是因为label click 会触发两次 */ }
return (
<div
className={`list${isCheck ? ' select' : ''}`}
key={index}
id={`city_${ele.city_id}`}
data-cityobj={JSON.stringify(ele)}
onClick={self.cityClick}
>
<input
className="none"
defaultChecked={isCheck}
name="cityInp"
type="checkbox"
/>
{
!isRadio && <span
className="check"
>
<span
className="icon icon-popup_right"
/>
</span>
}
<span
className="cityName"
>
{ele[dataAttrName.name]}
</span>
</div>
);
})
}
</li>);
}
return arr;
}())
}
</ul>
);
}
/* 点击定位城市的事件 */
positionAddrClick (e) {
document.getElementById(`city_${e.currentTarget.dataset.cityid}`).click();
}
initPositionCon () {
const {
position,
dataAttrName,
} = this.props;
if (!position) {
return null;
}
return (
<div>
<div className="selectTitle">定位城市</div>
<div
className="positionAddr"
data-cityid={position.city_id}
onClick={this.positionAddrClick}
>
<span className="icon icon-addr" />
<span className="positionCityName">{position[dataAttrName.name]}</span>
</div>
</div>
);
}
initMaxChar () {
const {
maxChar,
showMaxChar,
} = this.state;
if (!showMaxChar) {
return null;
}
return <div className="max_char">{maxChar}</div>;
}
initSelectCityCon () {
const {
selectCity,
} = this.state;
const {
dataAttrName,
} = this.props;
if (!selectCity || !(selectCity && selectCity.length)) {
return null;
}
return (
<div className="selectCon" id="selectCon">
{
selectCity.map((ele = {}, index) => (
<div
className="list"
key={index}
>
<span
className="icon icon-addr"
/>
<span>
{ele[dataAttrName.name]}
</span>
<a
className="icon icon-close"
data-cityid={ele.city_id}
onClick={this.delSelect}
href="javascript:;"
/>
</div>
))
}
</div>
);
}
render () {
if (!this.state) {
return null;
}
const {
isRadio,
} = this.state;
const {
position,
cityArr,
dataAttrName,
callBack,
show,
...other
} = this.props;
if (!show) {
return null;
}
return (
<div className="selectCity">
{/* 如果不是单选,显示已选择的城市 */}
{!isRadio ? this.initSelectCityCon() : null}
{/* <div className="selectTitle">请选择城市</div> */}
{/* 滑动右侧字母时,中间显示的大字母 */}
{this.initMaxChar()}
{/* 城市列表 */}
<div className="_cityCon" {...other} >
{position ? this.initPositionCon() : null}
{this.initCityCon()}
</div>
{/* 初始化右侧首字母 */}
{this.init_fast_char()}
</div>
);
}
}
City.defaultProps = {
dataAttrName: {
id: 'city_id',
name: 'city_name',
firstChar: 'first_char',
},
cityArr: [
{
first_char: '*', city_id: 1, lat: 39.90403, lng: 116.407526, city_name: '北京',
}, {
first_char: '*', city_id: 4, lat: 31.230416, lng: 121.473701, city_name: '上海',
}, {
first_char: '*', city_id: 3, lat: 23.129163, lng: 113.264435, city_name: '广州',
}, {
first_char: '*', city_id: 2, lat: 22.543099, lng: 114.057868, city_name: '深圳',
}, {
first_char: '*', city_id: 17, lat: 30.572269, lng: 104.066541, city_name: '成都',
}, {
first_char: '*', city_id: 5, lat: 30.274085, lng: 120.15507, city_name: '杭州',
}, {
first_char: '*', city_id: 6, lat: 30.593099, lng: 114.305393, city_name: '武汉',
},
{ first_char: "*", city_name: "苏州", city_id: 23 },
{ first_char: "*", city_name: "南京", city_id: 11 },
{ first_char: "*", city_name: "东莞", city_id: 21 },
{ first_char: "*", city_name: "西安", city_id: 10 },
{ first_char: "*", city_name: "天津", city_id: 7 },
{ first_char: "*", city_name: "成都", city_id: 17 }, {
first_char: '*',
city_name: '\u91cd\u5e86',
city_id: 18,
},
{
first_char: 'A',
city_name: '\u978d\u5c71',
city_id: 64,
}, {
first_char: 'A',
city_name: '\u5b89\u5e86',
city_id: 149,
}, {
first_char: 'A',
city_name: '\u5b89\u9633',
city_id: 174,
}, {
first_char: 'A',
city_name: '\u963f\u62c9\u5584\u76df',
city_id: 202,
}, {
first_char: 'A',
city_name: '\u5b89\u987a',
city_id: 294,
}, {
first_char: 'A',
city_name: '\u5b89\u5eb7',
city_id: 320,
}, {
first_char: 'A',
city_name: '\u963f\u514b\u82cf\u5730\u533a',
city_id: 348,
}, {
first_char: 'A',
city_name: '\u963f\u52d2\u6cf0\u5730\u533a',
city_id: 355,
}, {
first_char: 'A',
city_name: '\u963f\u62c9\u5c14',
city_id: 356,
}, {
first_char: 'B',
city_name: '\u5317\u4eac',
city_id: 1,
}, {
first_char: 'B',
city_name: '\u4fdd\u5b9a',
city_id: 62,
}, {
first_char: 'B',
city_name: '\u5305\u5934',
city_id: 63,
}, {
first_char: 'B',
city_name: '\u672c\u6eaa',
city_id: 77,
}, {
first_char: 'B',
city_name: '\u868c\u57e0',
city_id: 100,
}, {
first_char: 'B',
city_name: '\u5317\u6d77',
city_id: 161,
}, {
first_char: 'B',
city_name: '\u6ee8\u5dde',
city_id: 166,
}, {
first_char: 'B',
city_name: '\u5b9d\u9e21',
city_id: 170,
}, {
first_char: 'B',
city_name: '\u4eb3\u5dde',
city_id: 189,
}, {
first_char: 'B',
city_name: '\u5df4\u5f66\u6dd6\u5c14',
city_id: 199,
}, {
first_char: 'B',
city_name: '\u767d\u5c71',
city_id: 208,
}, {
first_char: 'B',
city_name: '\u767d\u57ce',
city_id: 210,
}, {
first_char: 'B',
city_name: '\u767e\u8272',
city_id: 263,
}, {
first_char: 'B',
city_name: '\u767d\u6c99\u9ece\u65cf\u81ea\u6cbb\u53bf',
city_id: 278,
}, {
first_char: 'B',
city_name: '\u5df4\u4e2d',
city_id: 288,
}, {
first_char: 'B',
city_name: '\u6bd5\u8282\u5730\u533a',
city_id: 296,
}, {
first_char: 'B',
city_name: '\u4fdd\u5c71',
city_id: 301,
}, {
first_char: 'B',
city_name: '\u767d\u94f6',
city_id: 323,
}, {
first_char: 'B',
city_name: '\u5df4\u97f3\u90ed\u695e\u5dde',
city_id: 350,
}, {
first_char: 'B',
city_name: '\u535a\u5c14\u5854\u62c9\u5dde',
city_id: 352,
}, {
first_char: 'B',
city_name: '\u4fdd\u4ead\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf',
city_id: 364,
}, {
first_char: 'C',
city_name: '\u6210\u90fd',
city_id: 17,
}, {
first_char: 'C',
city_name: '\u91cd\u5e86',
city_id: 18,
}, {
first_char: 'C',
city_name: '\u957f\u6c99',
city_id: 24,
}, {
first_char: 'C',
city_name: '\u957f\u6625',
city_id: 25,
}, {
first_char: 'C',
city_name: '\u5e38\u5dde',
city_id: 45,
}, {
first_char: 'C',
city_name: '\u6ca7\u5dde',
city_id: 59,
}, {
first_char: 'C',
city_name: '\u627f\u5fb7',
city_id: 72,
}, {
first_char: 'C',
city_name: '\u5e38\u5fb7',
city_id: 106,
}, {
first_char: 'C',
city_name: '\u90f4\u5dde',
city_id: 107,
}, {
first_char: 'C',
city_name: '\u957f\u6cbb',
city_id: 127,
}, {
first_char: 'C',
city_name: '\u6ec1\u5dde',
city_id: 148,
}, {
first_char: 'C',
city_name: '\u6c60\u5dde',
city_id: 187,
}, {
first_char: 'C',
city_name: '\u8d64\u5cf0',
city_id: 196,
}, {
first_char: 'C',
city_name: '\u6f6e\u5dde',
city_id: 257,
}, {
first_char: 'C',
city_name: '\u5d07\u5de6',
city_id: 267,
}, {
first_char: 'C',
city_name: '\u6f84\u8fc8\u53bf',
city_id: 274,
}, {
first_char: 'C',
city_name: '\u695a\u96c4\u5dde',
city_id: 308,
}, {
first_char: 'C',
city_name: '\u660c\u90fd\u5730\u533a',
city_id: 313,
}, {
first_char: 'C',
city_name: '\u660c\u5409\u5dde',
city_id: 351,
}, {
first_char: 'C',
city_name: '\u660c\u6c5f\u9ece\u65cf\u81ea\u6cbb\u53bf',
city_id: 363,
}, {
first_char: 'D',
city_name: '\u5927\u8fde',
city_id: 14,
}, {
first_char: 'D',
city_name: '\u4e1c\u839e',
city_id: 21,
}, {
first_char: 'D',
city_name: '\u5927\u5e86',
city_id: 48,
}, {
first_char: 'D',
city_name: '\u4e1c\u8425',
city_id: 73,
}, {
first_char: 'D',
city_name: '\u5fb7\u5dde',
city_id: 120,
}, {
first_char: 'D',
city_name: '\u5927\u540c',
city_id: 125,
}, {
first_char: 'D',
city_name: '\u5927\u7406\u5dde',
city_id: 136,
}, {
first_char: 'D',
city_name: '\u4e39\u4e1c',
city_id: 163,
}, {
first_char: 'D',
city_name: '\u5fb7\u9633',
city_id: 173,
}, {
first_char: 'D',
city_name: '\u5927\u5174\u5b89\u5cad\u5730\u533a',
city_id: 218,
}, {
first_char: 'D',
city_name: '\u510b\u5dde',
city_id: 270,
}, {
first_char: 'D',
city_name: '\u4e1c\u65b9',
city_id: 273,
}, {
first_char: 'D',
city_name: '\u5b9a\u5b89\u53bf',
city_id: 275,
}, {
first_char: 'D',
city_name: '\u8fbe\u5dde',
city_id: 285,
}, {
first_char: 'D',
city_name: '\u5fb7\u5b8f\u5dde',
city_id: 309,
}, {
first_char: 'D',
city_name: '\u8fea\u5e86\u5dde',
city_id: 311,
}, {
first_char: 'D',
city_name: '\u5b9a\u897f',
city_id: 330,
}, {
first_char: 'E',
city_name: '\u9102\u5c14\u591a\u65af',
city_id: 43,
}, {
first_char: 'E',
city_name: '\u9102\u5dde',
city_id: 230,
}, {
first_char: 'E',
city_name: '\u6069\u65bd\u5dde',
city_id: 235,
}, {
first_char: 'F',
city_name: '\u798f\u5dde',
city_id: 34,
}, {
first_char: 'F',
city_name: '\u4f5b\u5c71',
city_id: 36,
}, {
first_char: 'F',
city_name: '\u629a\u987a',
city_id: 66,
}, {
first_char: 'F',
city_name: '\u961c\u65b0',
city_id: 164,
}, {
first_char: 'F',
city_name: '\u961c\u9633',
city_id: 188,
}, {
first_char: 'F',
city_name: '\u629a\u5dde',
city_id: 223,
}, {
first_char: 'F',
city_name: '\u9632\u57ce\u6e2f',
city_id: 260,
}, {
first_char: 'G',
city_name: '\u5e7f\u5dde',
city_id: 3,
}, {
first_char: 'G',
city_name: '\u8d35\u9633',
city_id: 82,
}, {
first_char: 'G',
city_name: '\u8d63\u5dde',
city_id: 102,
}, {
first_char: 'G',
city_name: '\u6842\u6797',
city_id: 135,
}, {
first_char: 'G',
city_name: '\u8d35\u6e2f',
city_id: 262,
}, {
first_char: 'G',
city_name: '\u5e7f\u5143',
city_id: 280,
}, {
first_char: 'G',
city_name: '\u5e7f\u5b89',
city_id: 284,
}, {
first_char: 'G',
city_name: '\u7518\u5b5c\u5dde',
city_id: 291,
}, {
first_char: 'G',
city_name: '\u7518\u5357\u5dde',
city_id: 333,
}, {
first_char: 'G',
city_name: '\u56fa\u539f',
city_id: 336,
}, {
first_char: 'G',
city_name: '\u679c\u6d1b\u5dde',
city_id: 342,
}, {
first_char: 'H',
city_name: '\u676d\u5dde',
city_id: 5,
}, {
first_char: 'H',
city_name: '\u5408\u80a5',
city_id: 15,
}, {
first_char: 'H',
city_name: '\u54c8\u5c14\u6ee8',
city_id: 16,
}, {
first_char: 'H',
city_name: '\u547c\u548c\u6d69\u7279',
city_id: 41,
}, {
first_char: 'H',
city_name: '\u90af\u90f8',
city_id: 60,
}, {
first_char: 'H',
city_name: '\u846b\u82a6\u5c9b',
city_id: 70,
}, {
first_char: 'H',
city_name: '\u8861\u6c34',
city_id: 80,
}, {
first_char: 'H',
city_name: '\u6d77\u53e3',
city_id: 83,
}, {
first_char: 'H',
city_name: '\u6e56\u5dde',
city_id: 90,
}, {
first_char: 'H',
city_name: '\u6dee\u5b89',
city_id: 97,
}, {
first_char: 'H',
city_name: '\u8861\u9633',
city_id: 105,
}, {
first_char: 'H',
city_name: '\u6c49\u4e2d',
city_id: 115,
}, {
first_char: 'H',
city_name: '\u83cf\u6cfd',
city_id: 124,
}, {
first_char: 'H',
city_name: '\u60e0\u5dde',
city_id: 133,
}, {
first_char: 'H',
city_name: '\u9ec4\u5c71',
city_id: 141,
}, {
first_char: 'H',
city_name: '\u6dee\u5357',
city_id: 150,
}, {
first_char: 'H',
city_name: '\u6dee\u5317',
city_id: 183,
}, {
first_char: 'H',
city_name: '\u547c\u4f26\u8d1d\u5c14',
city_id: 198,
}, {
first_char: 'H',
city_name: '\u5174\u5b89\u76df',
city_id: 203,
}, {
first_char: 'H',
city_name: '\u9e64\u5c97',
city_id: 212,
}, {
first_char: 'H',
city_name: '\u9ed1\u6cb3',
city_id: 217,
}, {
first_char: 'H',
city_name: '\u9ec4\u77f3',
city_id: 227,
}, {
first_char: 'H',
city_name: '\u9ec4\u5188',
city_id: 232,
}, {
first_char: 'H',
city_name: '\u6000\u5316',
city_id: 244,
}, {
first_char: 'H',
city_name: '\u9e64\u58c1',
city_id: 247,
}, {
first_char: 'H',
city_name: '\u6cb3\u6e90',
city_id: 254,
}, {
first_char: 'H',
city_name: '\u8d3a\u5dde',
city_id: 264,
}, {
first_char: 'H',
city_name: '\u6cb3\u6c60',
city_id: 265,
}, {
first_char: 'H',
city_name: '\u7ea2\u6cb3\u5dde',
city_id: 306,
}, {
first_char: 'H',
city_name: '\u6d77\u4e1c\u5730\u533a',
city_id: 338,
}, {
first_char: 'H',
city_name: '\u6d77\u5317\u5dde',
city_id: 339,
}, {
first_char: 'H',
city_name: '\u9ec4\u5357\u5dde',
city_id: 340,
}, {
first_char: 'H',
city_name: '\u6d77\u5357\u5dde',
city_id: 341,
}, {
first_char: 'H',
city_name: '\u6d77\u897f\u5dde',
city_id: 344,
}, {
first_char: 'H',
city_name: '\u54c8\u5bc6\u5730\u533a',
city_id: 346,
}, {
first_char: 'H',
city_name: '\u548c\u7530\u5730\u533a',
city_id: 347,
}, {
first_char: 'I',
city_name: '\u4f0a\u7281\u5dde',
city_id: 353,
}, {
first_char: 'J',
city_name: '\u6d4e\u5357',
city_id: 12,
}, {
first_char: 'J',
city_name: '\u9526\u5dde',
city_id: 68,
}, {
first_char: 'J',
city_name: '\u664b\u4e2d',
city_id: 71,
}, {
first_char: 'J',
city_name: '\u5409\u6797',
city_id: 74,
}, {
first_char: 'J',
city_name: '\u6d4e\u5b81',
city_id: 79,
}, {
first_char: 'J',
city_name: '\u91d1\u534e',
city_id: 86,
}, {
first_char: 'J',
city_name: '\u5609\u5174',
city_id: 88,
}, {
first_char: 'J',
city_name: '\u4e5d\u6c5f',
city_id: 101,
}, {
first_char: 'J',
city_name: '\u8346\u5dde',
city_id: 109,
}, {
first_char: 'J',
city_name: '\u666f\u5fb7\u9547',
city_id: 151,
}, {
first_char: 'J',
city_name: '\u6c5f\u95e8',
city_id: 153,
}, {
first_char: 'J',
city_name: '\u63ed\u9633',
city_id: 154,
}, {
first_char: 'J',
city_name: '\u7126\u4f5c',
city_id: 175,
}, {
first_char: 'J',
city_name: '\u664b\u57ce',
city_id: 190,
}, {
first_char: 'J',
city_name: '\u9e21\u897f',
city_id: 211,
}, {
first_char: 'J',
city_name: '\u4f73\u6728\u65af',
city_id: 215,
}, {
first_char: 'J',
city_name: '\u5409\u5b89',
city_id: 221,
}, {
first_char: 'J',
city_name: '\u8346\u95e8',
city_id: 229,
}, {
first_char: 'J',
city_name: '\u6d4e\u6e90',
city_id: 252,
}, {
first_char: 'J',
city_name: '\u91d1\u660c',
city_id: 322,
}, {
first_char: 'J',
city_name: '\u5609\u5cea\u5173',
city_id: 324,
}, {
first_char: 'J',
city_name: '\u9152\u6cc9',
city_id: 328,
}, {
first_char: 'K',
city_name: '\u6606\u660e',
city_id: 19,
}, {
first_char: 'K',
city_name: '\u5f00\u5c01',
city_id: 110,
}, {
first_char: 'K',
city_name: '\u5580\u4ec0\u5730\u533a',
city_id: 179,
}, {
first_char: 'K',
city_name: '\u514b\u62c9\u739b\u4f9d',
city_id: 180,
}, {
first_char: 'K',
city_name: '\u514b\u5b5c\u52d2\u82cf\u67ef\u5dde',
city_id: 349,
}, {
first_char: 'L',
city_name: '\u6d1b\u9633',
city_id: 27,
}, {
first_char: 'L',
city_name: '\u5170\u5dde',
city_id: 30,
}, {
first_char: 'L',
city_name: '\u5eca\u574a',
city_id: 46,
}, {
first_char: 'L',
city_name: '\u4e34\u6c82',
city_id: 58,
}, {
first_char: 'L',
city_name: '\u8fbd\u9633',
city_id: 75,
}, {
first_char: 'L',
city_name: '\u8fde\u4e91\u6e2f',
city_id: 96,
}, {
first_char: 'L',
city_name: '\u6cf8\u5dde',
city_id: 117,
}, {
first_char: 'L',
city_name: '\u83b1\u829c',
city_id: 122,
}, {
first_char: 'L',
city_name: '\u804a\u57ce',
city_id: 123,
}, {
first_char: 'L',
city_name: '\u67f3\u5dde',
city_id: 134,
}, {
first_char: 'L',
city_name: '\u4e3d\u6c5f',
city_id: 137,
}, {
first_char: 'L',
city_name: '\u4e3d\u6c34',
city_id: 139,
}, {
first_char: 'L',
city_name: '\u62c9\u8428',
city_id: 178,
}, {
first_char: 'L',
city_name: '\u516d\u5b89',
city_id: 186,
}, {
first_char: 'L',
city_name: '\u4e34\u6c7e',
city_id: 193,
}, {
first_char: 'L',
city_name: '\u5415\u6881',
city_id: 194,
}, {
first_char: 'L',
city_name: '\u8fbd\u6e90',
city_id: 206,
}, {
first_char: 'L',
city_name: '\u9f99\u5ca9',
city_id: 226,
}, {
first_char: 'L',
city_name: '\u5a04\u5e95',
city_id: 245,
}, {
first_char: 'L',
city_name: '\u6f2f\u6cb3',
city_id: 248,
}, {
first_char: 'L',
city_name: '\u6765\u5bbe',
city_id: 266,
}, {
first_char: 'L',
city_name: '\u4e34\u9ad8\u53bf',
city_id: 277,
}, {
first_char: 'L',
city_name: '\u4e50\u5c71',
city_id: 283,
}, {
first_char: 'L',
city_name: '\u51c9\u5c71\u5dde',
city_id: 292,
}, {
first_char: 'L',
city_name: '\u516d\u76d8\u6c34',
city_id: 293,
}, {
first_char: 'L',
city_name: '\u4e34\u6ca7',
city_id: 304,
}, {
first_char: 'L',
city_name: '\u6797\u829d\u5730\u533a',
city_id: 317,
}, {
first_char: 'L',
city_name: '\u9647\u5357',
city_id: 331,
}, {
first_char: 'L',
city_name: '\u4e34\u590f\u5dde',
city_id: 332,
}, {
first_char: 'L',
city_name: '\u9675\u6c34\u9ece\u65cf\u81ea\u6cbb\u53bf',
city_id: 360,
}, {
first_char: 'L',
city_name: '\u4e50\u4e1c\u9ece\u65cf\u81ea\u6cbb\u53bf',
city_id: 362,
}, {
first_char: 'M',
city_name: '\u7ef5\u9633',
city_id: 50,
}, {
first_char: 'M',
city_name: '\u9a6c\u978d\u5c71',
city_id: 99,
}, {
first_char: 'M',
city_name: '\u7261\u4e39\u6c5f',
city_id: 129,
}, {
first_char: 'M',
city_name: '\u8302\u540d',
city_id: 155,
}, {
first_char: 'M',
city_name: '\u6885\u5dde',
city_id: 156,
}, {
first_char: 'M',
city_name: '\u7709\u5c71',
city_id: 286,
}, {
first_char: 'N',
city_name: '\u5357\u4eac',
city_id: 11,
}, {
first_char: 'N',
city_name: '\u5b81\u6ce2',
city_id: 20,
}, {
first_char: 'N',
city_name: '\u5357\u5b81',
city_id: 33,
}, {
first_char: 'N',
city_name: '\u5357\u660c',
city_id: 38,
}, {
first_char: 'N',
city_name: '\u5357\u5145',
city_id: 53,
}, {
first_char: 'N',
city_name: '\u5357\u901a',
city_id: 92,
}, {
first_char: 'N',
city_name: '\u5357\u9633',
city_id: 113,
}, {
first_char: 'N',
city_name: '\u5b81\u5fb7',
city_id: 144,
}, {
first_char: 'N',
city_name: '\u5357\u5e73',
city_id: 145,
}, {
first_char: 'N',
city_name: '\u5185\u6c5f',
city_id: 282,
}, {
first_char: 'N',
city_name: '\u963f\u575d\u5dde',
city_id: 290,
}, {
first_char: 'N',
city_name: '\u6012\u6c5f\u5dde',
city_id: 310,
}, {
first_char: 'N',
city_name: '\u90a3\u66f2\u5730\u533a',
city_id: 312,
}, {
first_char: 'P',
city_name: '\u5e73\u9876\u5c71',
city_id: 103,
}, {
first_char: 'P',
city_name: '\u6500\u679d\u82b1',
city_id: 119,
}, {
first_char: 'P',
city_name: '\u8386\u7530',
city_id: 143,
}, {
first_char: 'P',
city_name: '\u76d8\u9526',
city_id: 165,
}, {
first_char: 'P',
city_name: '\u6fee\u9633',
city_id: 176,
}, {
first_char: 'P',
city_name: '\u840d\u4e61',
city_id: 219,
}, {
first_char: 'P',
city_name: '\u666e\u6d31',
city_id: 303,
}, {
first_char: 'P',
city_name: '\u5e73\u51c9',
city_id: 327,
}, {
first_char: 'Q',
city_name: '\u9752\u5c9b',
city_id: 13,
}, {
first_char: 'Q',
city_name: '\u6cc9\u5dde',
city_id: 35,
}, {
first_char: 'Q',
city_name: '\u79e6\u7687\u5c9b',
city_id: 61,
}, {
first_char: 'Q',
city_name: '\u9f50\u9f50\u54c8\u5c14',
city_id: 65,
}, {
first_char: 'Q',
city_name: '\u66f2\u9756',
city_id: 138,
}, {
first_char: 'Q',
city_name: '\u8862\u5dde',
city_id: 140,
}, {
first_char: 'Q',
city_name: '\u6e05\u8fdc',
city_id: 157,
}, {
first_char: 'Q',
city_name: '\u4e03\u53f0\u6cb3',
city_id: 216,
}, {
first_char: 'Q',
city_name: '\u6f5c\u6c5f',
city_id: 238,
}, {
first_char: 'Q',
city_name: '\u94a6\u5dde',
city_id: 261,
}, {
first_char: 'Q',
city_name: '\u743c\u6d77',
city_id: 269,
}, {
first_char: 'Q',
city_name: '\u9ed4\u897f\u5357\u5dde',
city_id: 297,
}, {
first_char: 'Q',
city_name: '\u9ed4\u4e1c\u5357\u5dde',
city_id: 298,
}, {
first_char: 'Q',
city_name: '\u9ed4\u5357\u5dde',
city_id: 299,
}, {
first_char: 'Q',
city_name: '\u5e86\u9633',
city_id: 329,
}, {
first_char: 'Q',
city_name: '\u743c\u4e2d\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf',
city_id: 365,
}, {
first_char: 'R',
city_name: '\u65e5\u7167',
city_id: 167,
}, {
first_char: 'S',
city_name: '\u6df1\u5733',
city_id: 2,
}, {
first_char: 'S',
city_name: '\u4e0a\u6d77',
city_id: 4,
}, {
first_char: 'S',
city_name: '\u6c88\u9633',
city_id: 8,
}, {
first_char: 'S',
city_name: '\u77f3\u5bb6\u5e84',
city_id: 22,
}, {
first_char: 'S',
city_name: '\u82cf\u5dde',
city_id: 23,
}, {
first_char: 'S',
city_name: '\u4e09\u4e9a',
city_id: 37,
}, {
first_char: 'S',
city_name: '\u7ecd\u5174',
city_id: 89,
}, {
first_char: 'S',
city_name: '\u7ee5\u5316',
city_id: 128,
}, {
first_char: 'S',
city_name: '\u56db\u5e73',
city_id: 130,
}, {
first_char: 'S',
city_name: '\u5bbf\u8fc1',
city_id: 147,
}, {
first_char: 'S',
city_name: '\u6c55\u5934',
city_id: 158,
}, {
first_char: 'S',
city_name: '\u5546\u4e18',
city_id: 177,
}, {
first_char: 'S',
city_name: '\u77f3\u6cb3\u5b50',
city_id: 181,
}, {
first_char: 'S',
city_name: '\u5bbf\u5dde',
city_id: 185,
}, {
first_char: 'S',
city_name: '\u6714\u5dde',
city_id: 191,
}, {
first_char: 'S',
city_name: '\u677e\u539f',
city_id: 209,
}, {
first_char: 'S',
city_name: '\u53cc\u9e2d\u5c71',
city_id: 213,
}, {
first_char: 'S',
city_name: '\u4e0a\u9976',
city_id: 224,
}, {
first_char: 'S',
city_name: '\u4e09\u660e',
city_id: 225,
}, {
first_char: 'S',
city_name: '\u5341\u5830',
city_id: 228,
}, {
first_char: 'S',
city_name: '\u968f\u5dde',
city_id: 234,
}, {
first_char: 'S',
city_name: '\u795e\u519c\u67b6\u6797\u533a',
city_id: 239,
}, {
first_char: 'S',
city_name: '\u90b5\u9633',
city_id: 240,
}, {
first_char: 'S',
city_name: '\u4e09\u95e8\u5ce1',
city_id: 249,
}, {
first_char: 'S',
city_name: '\u97f6\u5173',
city_id: 253,
}, {
first_char: 'S',
city_name: '\u6c55\u5c3e',
city_id: 255,
}, {
first_char: 'S',
city_name: '\u9042\u5b81',
city_id: 281,
}, {
first_char: 'S',
city_name: '\u5c71\u5357\u5730\u533a',
city_id: 314,
}, {
first_char: 'S',
city_name: '\u65e5\u5580\u5219\u5730\u533a',
city_id: 315,
}, {
first_char: 'S',
city_name: '\u5546\u6d1b',
city_id: 321,
}, {
first_char: 'S',
city_name: '\u77f3\u5634\u5c71',
city_id: 334,
}, {
first_char: 'S',
city_name: '\u4e09\u6c99',
city_id: 361,
}, {
first_char: 'T',
city_name: '\u5929\u6d25',
city_id: 7,
}, {
first_char: 'T',
city_name: '\u592a\u539f',
city_id: 26,
}, {
first_char: 'T',
city_name: '\u5510\u5c71',
city_id: 40,
}, {
first_char: 'T',
city_name: '\u94c1\u5cad',
city_id: 69,
}, {
first_char: 'T',
city_name: '\u53f0\u5dde',
city_id: 87,
}, {
first_char: 'T',
city_name: '\u6cf0\u5dde',
city_id: 95,
}, {
first_char: 'T',
city_name: '\u6cf0\u5b89',
city_id: 121,
}, {
first_char: 'T',
city_name: '\u5929\u6c34',
city_id: 169,
}, {
first_char: 'T',
city_name: '\u94dc\u9675',
city_id: 184,
}, {
first_char: 'T',
city_name: '\u901a\u8fbd',
city_id: 197,
}, {
first_char: 'T',
city_name: '\u901a\u5316',
city_id: 207,
}, {
first_char: 'T',
city_name: '\u5929\u95e8',
city_id: 237,
}, {
first_char: 'T',
city_name: '\u5c6f\u660c\u53bf',
city_id: 276,
}, {
first_char: 'T',
city_name: '\u94dc\u4ec1\u5730\u533a',
city_id: 295,
}, {
first_char: 'T',
city_name: '\u94dc\u5ddd',
city_id: 318,
}, {
first_char: 'T',
city_name: '\u5410\u9c81\u756a\u5730\u533a',
city_id: 345,
}, {
first_char: 'T',
city_name: '\u5854\u57ce\u5730\u533a',
city_id: 354,
}, {
first_char: 'U',
city_name: '\u4e4c\u9c81\u6728\u9f50',
city_id: 52,
}, {
first_char: 'W',
city_name: '\u6b66\u6c49',
city_id: 6,
}, {
first_char: 'W',
city_name: '\u5a01\u6d77',
city_id: 42,
}, {
first_char: 'W',
city_name: '\u65e0\u9521',
city_id: 47,
}, {
first_char: 'W',
city_name: '\u6f4d\u574a',
city_id: 81,
}, {
first_char: 'W',
city_name: '\u6e29\u5dde',
city_id: 85,
}, {
first_char: 'W',
city_name: '\u829c\u6e56',
city_id: 98,
}, {
first_char: 'W',
city_name: '\u4e4c\u6d77',
city_id: 195,
}, {
first_char: 'W',
city_name: '\u4e4c\u5170\u5bdf\u5e03',
city_id: 200,
}, {
first_char: 'W',
city_name: '\u68a7\u5dde',
city_id: 259,
}, {
first_char: 'W',
city_name: '\u4e94\u6307\u5c71',
city_id: 268,
}, {
first_char: 'W',
city_name: '\u6587\u660c',
city_id: 271,
}, {
first_char: 'W',
city_name: '\u4e07\u5b81',
city_id: 272,
}, {
first_char: 'W',
city_name: '\u6587\u5c71\u5dde',
city_id: 305,
}, {
first_char: 'W',
city_name: '\u6e2d\u5357',
city_id: 319,
}, {
first_char: 'W',
city_name: '\u6b66\u5a01',
city_id: 325,
}, {
first_char: 'W',
city_name: '\u5434\u5fe0',
city_id: 335,
}, {
first_char: 'X',
city_name: '\u897f\u5b89',
city_id: 10,
}, {
first_char: 'X',
city_name: '\u897f\u5b81',
city_id: 28,
}, {
first_char: 'X',
city_name: '\u53a6\u95e8',
city_id: 32,
}, {
first_char: 'X',
city_name: '\u5f90\u5dde',
city_id: 39,
}, {
first_char: 'X',
city_name: '\u6e58\u6f6d',
city_id: 55,
}, {
first_char: 'X',
city_name: '\u90a2\u53f0',
city_id: 67,
}, {
first_char: 'X',
city_name: '\u8944\u9633',
city_id: 108,
}, {
first_char: 'X',
city_name: '\u65b0\u4e61',
city_id: 111,
}, {
first_char: 'X',
city_name: '\u8bb8\u660c',
city_id: 112,
}, {
first_char: 'X',
city_name: '\u54b8\u9633',
city_id: 116,
}, {
first_char: 'X',
city_name: '\u65b0\u4f59',
city_id: 152,
}, {
first_char: 'X',
city_name: '\u5ba3\u57ce',
city_id: 182,
}, {
first_char: 'X',
city_name: '\u5ffb\u5dde',
city_id: 192,
}, {
first_char: 'X',
city_name: '\u9521\u6797\u90ed\u52d2\u76df',
city_id: 201,
}, {
first_char: 'X',
city_name: '\u5b5d\u611f',
city_id: 231,
}, {
first_char: 'X',
city_name: '\u54b8\u5b81',
city_id: 233,
}, {
first_char: 'X',
city_name: '\u4ed9\u6843',
city_id: 236,
}, {
first_char: 'X',
city_name: '\u6e58\u897f\u5dde',
city_id: 246,
}, {
first_char: 'X',
city_name: '\u4fe1\u9633',
city_id: 250,
}, {
first_char: 'X',
city_name: '\u897f\u53cc\u7248\u7eb3\u5dde',
city_id: 307,
}, {
first_char: 'Y',
city_name: '\u70df\u53f0',
city_id: 29,
}, {
first_char: 'Y',
city_name: '\u94f6\u5ddd',
city_id: 49,
}, {
first_char: 'Y',
city_name: '\u5b9c\u660c',
city_id: 51,
}, {
first_char: 'Y',
city_name: '\u5cb3\u9633',
city_id: 56,
}, {
first_char: 'Y',
city_name: '\u8425\u53e3',
city_id: 76,
}, {
first_char: 'Y',
city_name: '\u626c\u5dde',
city_id: 91,
}, {
first_char: 'Y',
city_name: '\u76d0\u57ce',
city_id: 94,
}, {
first_char: 'Y',
city_name: '\u8fd0\u57ce',
city_id: 104,
}, {
first_char: 'Y',
city_name: '\u5b9c\u5bbe',
city_id: 118,
}, {
first_char: 'Y',
city_name: '\u9633\u6cc9',
city_id: 126,
}, {
first_char: 'Y',
city_name: '\u5ef6\u5409',
city_id: 131,
}, {
first_char: 'Y',
city_name: '\u7389\u6797',
city_id: 162,
}, {
first_char: 'Y',
city_name: '\u5ef6\u5b89',
city_id: 171,
}, {
first_char: 'Y',
city_name: '\u6986\u6797',
city_id: 172,
}, {
first_char: 'Y',
city_name: '\u4f0a\u6625',
city_id: 214,
}, {
first_char: 'Y',
city_name: '\u9e70\u6f6d',
city_id: 220,
}, {
first_char: 'Y',
city_name: '\u5b9c\u6625',
city_id: 222,
}, {
first_char: 'Y',
city_name: '\u76ca\u9633',
city_id: 242,
}, {
first_char: 'Y',
city_name: '\u6c38\u5dde',
city_id: 243,
}, {
first_char: 'Y',
city_name: '\u9633\u6c5f',
city_id: 256,
}, {
first_char: 'Y',
city_name: '\u4e91\u6d6e',
city_id: 258,
}, {
first_char: 'Y',
city_name: '\u96c5\u5b89',
city_id: 287,
}, {
first_char: 'Y',
city_name: '\u7389\u6eaa',
city_id: 300,
}, {
first_char: 'Y',
city_name: '\u7389\u6811\u5dde',
city_id: 343,
}, {
first_char: 'Z',
city_name: '\u90d1\u5dde',
city_id: 9,
}, {
first_char: 'Z',
city_name: '\u9075\u4e49',
city_id: 44,
}, {
first_char: 'Z',
city_name: '\u682a\u6d32',
city_id: 54,
}, {
first_char: 'Z',
city_name: '\u6dc4\u535a',
city_id: 57,
}, {
first_char: 'Z',
city_name: '\u5f20\u5bb6\u53e3',
city_id: 78,
}, {
first_char: 'Z',
city_name: '\u73e0\u6d77',
city_id: 84,
}, {
first_char: 'Z',
city_name: '\u9547\u6c5f',
city_id: 93,
}, {
first_char: 'Z',
city_name: '\u5468\u53e3',
city_id: 114,
}, {
first_char: 'Z',
city_name: '\u4e2d\u5c71',
city_id: 132,
}, {
first_char: 'Z',
city_name: '\u6f33\u5dde',
city_id: 142,
}, {
first_char: 'Z',
city_name: '\u821f\u5c71',
city_id: 146,
}, {
first_char: 'Z',
city_name: '\u6e5b\u6c5f',
city_id: 159,
}, {
first_char: 'Z',
city_name: '\u8087\u5e86',
city_id: 160,
}, {
first_char: 'Z',
city_name: '\u67a3\u5e84',
city_id: 168,
}, {
first_char: 'Z',
city_name: '\u5f20\u5bb6\u754c',
city_id: 241,
}, {
first_char: 'Z',
city_name: '\u9a7b\u9a6c\u5e97',
city_id: 251,
}, {
first_char: 'Z',
city_name: '\u81ea\u8d21',
city_id: 279,
}, {
first_char: 'Z',
city_name: '\u8d44\u9633',
city_id: 289,
}, {
first_char: 'Z',
city_name: '\u662d\u901a',
city_id: 302,
}, {
first_char: 'Z',
city_name: '\u5f20\u6396',
city_id: 326,
}, {
first_char: 'Z',
city_name: '\u4e2d\u536b',
city_id: 337,
},
{ "city_id": "372", "city_name": "\u6768\u51cc\u793a\u8303\u533a", "first_char": "Y" }
],
};
module.exports = City;