基于vue封装的城市择器组件

基于vue封装的城市择器组件

基本功能:

支持全选、反选以及全部清空。
支持按拼音筛选。
勾选省份将会勾选省份下所有城市。
支持数据回显

在这里插入图片描述
在这里插入图片描述
项目目录图
在这里插入图片描述

1、regions.js

export default [{
    "city": [{"name": "北京市", "shortName": "北京", "id": "1101", "cityIndex": 0, "pinYin": "beijing"}],
    "province": {"name": "北京市", "shortName": "北京", "id": "1100", "provinceIndex": 0, "pinYin": "beijing"}
}, {
    "city": [{"name": "天津市", "shortName": "天津", "id": "1201", "cityIndex": 1, "pinYin": "tianjin"}],
    "province": {"name": "天津市", "shortName": "天津", "id": "1200", "provinceIndex": 1, "pinYin": "tianjin"}
}, {
    "city": [{
        "name": "石家庄市",
        "shortName": "石家庄",
        "id": "1301",
        "cityIndex": 2,
        "pinYin": "shijiazhuang"
    }, {"name": "唐山市", "shortName": "唐山", "id": "1302", "cityIndex": 3, "pinYin": "tangshan"}, {
        "name": "秦皇岛市",
        "shortName": "秦皇岛",
        "id": "1303",
        "cityIndex": 4,
        "pinYin": "qinhuangdao"
    }, {"name": "邯郸市", "shortName": "邯郸", "id": "1304", "cityIndex": 5, "pinYin": "handan"}, {
        "name": "邢台市",
        "shortName": "邢台",
        "id": "1305",
        "cityIndex": 6,
        "pinYin": "xingtai"
    }, {"name": "保定市", "shortName": "保定", "id": "1306", "cityIndex": 7, "pinYin": "baoding"}, {
        "name": "张家口市",
        "shortName": "张家口",
        "id": "1307",
        "cityIndex": 8,
        "pinYin": "zhangjiakou"
    }, {"name": "承德市", "shortName": "承德", "id": "1308", "cityIndex": 9, "pinYin": "chengde"}, {
        "name": "沧州市",
        "shortName": "沧州",
        "id": "1309",
        "cityIndex": 10,
        "pinYin": "cangzhou"
    }, {"name": "廊坊市", "shortName": "廊坊", "id": "1310", "cityIndex": 11, "pinYin": "langfang"}, {
        "name": "衡水市",
        "shortName": "衡水",
        "id": "1311",
        "cityIndex": 12,
        "pinYin": "hengshui"
    }], "province": {"name": "河北省", "shortName": "河北", "id": "1300", "provinceIndex": 2, "pinYin": "hebei"}
}, {
    "city": [{"name": "太原市", "shortName": "太原", "id": "1401", "cityIndex": 13, "pinYin": "taiyuan"}, {
        "name": "大同市",
        "shortName": "大同",
        "id": "1402",
        "cityIndex": 14,
        "pinYin": "datong"
    }, {"name": "阳泉市", "shortName": "阳泉", "id": "1403", "cityIndex": 15, "pinYin": "yangquan"}, {
        "name": "长治市",
        "shortName": "长治",
        "id": "1404",
        "cityIndex": 16,
        "pinYin": "changzhi"
    }, {"name": "晋城市", "shortName": "晋城", "id": "1405", "cityIndex": 17, "pinYin": "jincheng"}, {
        "name": "朔州市",
        "shortName": "朔州",
        "id": "1406",
        "cityIndex": 18,
        "pinYin": "shuozhou"
    }, {"name": "晋中市", "shortName": "晋中", "id": "1407", "cityIndex": 19, "pinYin": "jinzhong"}, {
        "name": "运城市",
        "shortName": "运城",
        "id": "1408",
        "cityIndex": 20,
        "pinYin": "yuncheng"
    }, {"name": "忻州市", "shortName": "忻州", "id": "1409", "cityIndex": 21, "pinYin": "xinzhou"}, {
        "name": "临汾市",
        "shortName": "临汾",
        "id": "1410",
        "cityIndex": 22,
        "pinYin": "linfen"
    }, {"name": "吕梁市", "shortName": "吕梁", "id": "1411", "cityIndex": 23, "pinYin": "lvliang"}],
    "province": {"name": "山西省", "shortName": "山西", "id": "1400", "provinceIndex": 3, "pinYin": "shanxi"}
}, {
    "city": [{
        "name": "呼和浩特市",
        "shortName": "呼和浩特",
        "id": "1501",
        "cityIndex": 24,
        "pinYin": "huhehaote"
    }, {"name": "包头市", "shortName": "包头", "id": "1502", "cityIndex": 25, "pinYin": "baotou"}, {
        "name": "乌海市",
        "shortName": "乌海",
        "id": "1503",
        "cityIndex": 26,
        "pinYin": "wuhai"
    }, {"name": "赤峰市", "shortName": "赤峰", "id": "1504", "cityIndex": 27, "pinYin": "chifeng"}, {
        "name": "通辽市",
        "shortName": "通辽",
        "id": "1505",
        "cityIndex": 28,
        "pinYin": "tongliao"
    }, {"name": "鄂尔多斯市", "shortName": "鄂尔多斯", "id": "1506", "cityIndex": 29, "pinYin": "eerduosi"}, {
        "name": "呼伦贝尔市",
        "shortName": "呼伦贝尔",
        "id": "1507",
        "cityIndex": 30,
        "pinYin": "hulunbeier"
    }, {"name": "巴彦淖尔市", "shortName": "巴彦淖尔", "id": "1508", "cityIndex": 31, "pinYin": "bayannaoer"}, {
        "name": "乌兰察布市",
        "shortName": "乌兰察布",
        "id": "1509",
        "cityIndex": 32,
        "pinYin": "wulanchabu"
    }, {"name": "兴安盟", "shortName": "兴安盟", "id": "1522", "cityIndex": 33, "pinYin": "xinganmeng"}, {
        "name": "锡林郭勒盟",
        "shortName": "锡林郭勒盟",
        "id": "1525",
        "cityIndex": 34,
        "pinYin": "xilinguoleimeng"
    }, {"name": "阿拉善盟", "shortName": "阿拉善盟", "id": "1529", "cityIndex": 35, "pinYin": "alashanmeng"}],
    "province": {"name": "内蒙古自治区", "shortName": "内蒙古", "id": "1500", "provinceIndex": 4, "pinYin": "neimenggu"}
}, {
    "city": [{"name": "沈阳市", "shortName": "沈阳", "id": "2101", "cityIndex": 36, "pinYin": "shenyang"}, {
        "name": "大连市",
        "shortName": "大连",
        "id": "2102",
        "cityIndex": 37,
        "pinYin": "dalian"
    }, {"name": "鞍山市", "shortName": "鞍山", "id": "2103", "cityIndex": 38, "pinYin": "anshan"}, {
        "name": "抚顺市",
        "shortName": "抚顺",
        "id": "2104",
        "cityIndex": 39,
        "pinYin": "fushun"
    }, {"name": "本溪市", "shortName": "本溪", "id": "2105", "cityIndex": 40, "pinYin": "benxi"}, {
        "name": "丹东市",
        "shortName": "丹东",
        "id": "2106",
        "cityIndex": 41,
        "pinYin": "dandong"
    }, {"name": "锦州市", "shortName": "锦州", "id": "2107", "cityIndex": 42, "pinYin": "jinzhou"}, {
        "name": "营口市",
        "shortName": "营口",
        "id": "2108",
        "cityIndex": 43,
        "pinYin": "yingkou"
    }, {"name": "阜新市", "shortName": "阜新", "id": "2109", "cityIndex": 44, "pinYin": "fuxin"}, {
        "name": "辽阳市",
        "shortName": "辽阳",
        "id": "2110",
        "cityIndex": 45,
        "pinYin": "liaoyang"
    }, {"name": "盘锦市", "shortName": "盘锦", "id": "2111", "cityIndex": 46, "pinYin": "panjin"}, {
        "name": "铁岭市",
        "shortName": "铁岭",
        "id": "2112",
        "cityIndex": 47,
        "pinYin": "tieling"
    }, {"name": "朝阳市", "shortName": "朝阳", "id": "2113", "cityIndex": 48, "pinYin": "chaoyang"}, {
        "name": "葫芦岛市",
        "shortName": "葫芦岛",
        "id": "2114",
        "cityIndex": 49,
        "pinYin": "huludao"
    }, {"name": "金普新区", "shortName": "金普新区", "id": "2115", "cityIndex": 50, "pinYin": "jinpuxinqu"}],
    "province": {"name": "辽宁省", "shortName": "辽宁", "id": "2100", "provinceIndex": 5, "pinYin": "liaoning"}
}, {
    "city": [{"name": "长春市", "shortName": "长春", "id": "2201", "cityIndex": 51, "pinYin": "changchun"}, {
        "name": "吉林市",
        "shortName": "吉林",
        "id": "2202",
        "cityIndex": 52,
        "pinYin": "jilin"
    }, {"name": "四平市", "shortName": "四平", "id": "2203", "cityIndex": 53, "pinYin": "siping"}, {
        "name": "辽源市",
        "shortName": "辽源",
        "id": "2204",
        "cityIndex": 54,
        "pinYin": "liaoyuan"
    }, {"name": "通化市", "shortName": "通化", "id": "2205", "cityIndex": 55, "pinYin": "tonghua"}, {
        "name": "白山市",
        "shortName": "白山",
        "id": "2206",
        "cityIndex": 56,
        "pinYin": "baishan"
    }, {"name": "松原市", "shortName": "松原", "id": "2207", "cityIndex": 57, "pinYin": "songyuan"}, {
        "name": "白城市",
        "shortName": "白城",
        "id": "2208",
        "cityIndex": 58,
        "pinYin": "baicheng"
    }, {"name": "延边朝鲜族自治州", "shortName": "延边", "id": "2224", "cityIndex": 59, "pinYin": "yanbian"}],
    "province": {"name": "吉林省", "shortName": "吉林", "id": "2200", "provinceIndex": 6, "pinYin": "jilin"}
}, {
    "city": [{"name": "哈尔滨市", "shortName": "哈尔滨", "id": "2301", "cityIndex": 60, "pinYin": "haerbin"}, {
        "name": "齐齐哈尔市",
        "shortName": "齐齐哈尔",
        "id": "2302",
        "cityIndex": 61,
        "pinYin": "qiqihaer"
    }, {"name": "鸡西市", "shortName": "鸡西", "id": "2303", "cityIndex": 62, "pinYin": "jixi"}, {
        "name": "鹤岗市",
        "shortName": "鹤岗",
        "id": "2304",
        "cityIndex": 63,
        "pinYin": "hegang"
    }, {"name": "双鸭山市", "shortName": "双鸭山", "id": "2305", "cityIndex": 64, "pinYin": "shuangyashan"}, {
        "name": "大庆市",
        "shortName": "大庆",
        "id": "2306",
        "cityIndex": 65,
        "pinYin": "daqing"
    }, {"name": "伊春市", "shortName": "伊春", "id": "2307", "cityIndex": 66, "pinYin": "yichun"}, {
        "name": "佳木斯市",
        "shortName": "佳木斯",
        "id": "2308",
        "cityIndex": 67,
        "pinYin": "jiamusi"
    }, {"name": "七台河市", "shortName": "七台河", "id": "2309", "cityIndex": 68, "pinYin": "qitaihe"}, {
        "name": "牡丹江市",
        "shortName": "牡丹江",
        "id": "2310",
        "cityIndex": 69,
        "pinYin": "mudanjiang"
    }, {"name": "黑河市", "shortName": "黑河", "id": "2311", "cityIndex": 70, "pinYin": "heihe"}, {
        "name": "绥化市",
        "shortName": "绥化",
        "id": "2312",
        "cityIndex": 71,
        "pinYin": "suihua"
    }, {"name": "大兴安岭地区", "shortName": "大兴安岭", "id": "2327", "cityIndex": 72, "pinYin": "daxinganling"}],
    "province": {"name": "黑龙江省", "shortName": "黑龙江", "id": "2300", "provinceIndex": 7, "pinYin": "heilongjiang"}
}, {
    "city": [{"name": "上海市", "shortName": "上海", "id": "3101", "cityIndex": 73, "pinYin": "shanghai"}],
    "province": {"name": "上海市", "shortName": "上海", "id": "3100", "provinceIndex": 8, "pinYin": "shanghai"}
}, {
    "city": [{"name": "南京市", "shortName": "南京", "id": "3201", "cityIndex": 74, "pinYin": "nanjing"}, {
        "name": "无锡市",
        "shortName": "无锡",
        "id": "3202",
        "cityIndex": 75,
        "pinYin": "wuxi"
    }, {"name": "徐州市", "shortName": "徐州", "id": "3203", "cityIndex": 76, "pinYin": "xuzhou"}, {
        "name": "常州市",
        "shortName": "常州",
        "id": "3204",
        "cityIndex": 77,
        "pinYin": "changzhou"
    }, {"name": "苏州市", "shortName": "苏州", "id": "3205", "cityIndex": 78, "pinYin": "suzhou"}, {
        "name": "南通市",
        "shortName": "南通",
        "id": "3206",
        "cityIndex": 79,
        "pinYin": "nantong"
    }, {"name": "连云港市", "shortName": "连云港", "id": "3207", "cityIndex": 80, "pinYin": "lianyungang"}, {
        "name": "淮安市",
        "shortName": "淮安",
        "id": "3208",
        "cityIndex": 81,
        "pinYin": "huaian"
    }, {"name": "盐城市", "shortName": "盐城", "id": "3209", "cityIndex": 82, "pinYin": "yancheng"}, {
        "name": "扬州市",
        "shortName": "扬州",
        "id": "3210",
        "cityIndex": 83,
        "pinYin": "yangzhou"
    }, {"name": "镇江市", "shortName": "镇江", "id": "3211", "cityIndex": 84, "pinYin": "zhenjiang"}, {
        "name": "泰州市",
        "shortName": "泰州",
        "id": "3212",
        "cityIndex": 85,
        "pinYin": "taizhou"
    }, {"name": "宿迁市", "shortName": "宿迁", "id": "3213", "cityIndex": 86, "pinYin": "suqian"}],
    "province": {"name": "江苏省", "shortName": "江苏", "id": "3200", "provinceIndex": 9, "pinYin": "jiangsu"}
}, {
    "city": [{"name": "杭州市", "shortName": "杭州", "id": "3301", "cityIndex": 87, "pinYin": "hangzhou"}, {
        "name": "宁波市",
        "shortName": "宁波",
        "id": "3302",
        "cityIndex": 88,
        "pinYin": "ningbo"
    }, {"name": "温州市", "shortName": "温州", "id": "3303", "cityIndex": 89, "pinYin": "wenzhou"}, {
        "name": "嘉兴市",
        "shortName": "嘉兴",
        "id": "3304",
        "cityIndex": 90,
        "pinYin": "jiaxing"
    }, {"name": "湖州市", "shortName": "湖州", "id": "3305", "cityIndex": 91, "pinYin": "huzhou"}, {
        "name": "绍兴市",
        "shortName": "绍兴",
        "id": "3306",
        "cityIndex": 92,
        "pinYin": "shaoxing"
    }, {"name": "金华市", "shortName": "金华", "id": "3307", "cityIndex": 93, "pinYin": "jinhua"}, {
        "name": "衢州市",
        "shortName": "衢州",
        "id": "3308",
        "cityIndex": 94,
        "pinYin": "quzhou"
    }, {"name": "舟山市", "shortName": "舟山", "id": "3309", "cityIndex": 95, "pinYin": "zhoushan"}, {
        "name": "台州市",
        "shortName": "台州",
        "id": "3310",
        "cityIndex": 96,
        "pinYin": "taizhou"
    }, {"name": "丽水市", "shortName": "丽水", "id": "3311", "cityIndex": 97, "pinYin": "lishui"}, {
        "name": "舟山群岛新区",
        "shortName": "舟山新区",
        "id": "3312",
        "cityIndex": 98,
        "pinYin": "zhoushanxinqu"
    }], "province": {"name": "浙江省", "shortName": "浙江", "id": "3300", "provinceIndex": 10, "pinYin": "zhejiang"}
}, {
    "city": [{"name": "合肥市", "shortName": "合肥", "id": "3401", "cityIndex": 99, "pinYin": "hefei"}, {
        "name": "芜湖市",
        "shortName": "芜湖",
        "id": "3402",
        "cityIndex": 100,
        "pinYin": "wuhu"
    }, {"name": "蚌埠市", "shortName": "蚌埠", "id": "3403", "cityIndex": 101, "pinYin": "bangbu"}, {
        "name": "淮南市",
        "shortName": "淮南",
        "id": "3404",
        "cityIndex": 102,
        "pinYin": "huainan"
    }, {"name": "马鞍山市", "shortName": "马鞍山", "id": "3405", "cityIndex": 103, "pinYin": "maanshan"}, {
        "name": "淮北市",
        "shortName": "淮北",
        "id": "3406",
        "cityIndex": 104,
        "pinYin": "huaibei"
    }, {"name": "铜陵市", "shortName": "铜陵", "id": "3407", "cityIndex": 105, "pinYin": "tongling"}, {
        "name": "安庆市",
        "shortName": "安庆",
        "id": "3408",
        "cityIndex": 106,
        "pinYin": "anqing"
    }, {"name": "黄山市", "shortName": "黄山", "id": "3410", "cityIndex": 107, "pinYin": "huangshan"}, {
        "name": "滁州市",
        "shortName": "滁州",
        "id": "3411",
        "cityIndex": 108,
        "pinYin": "chuzhou"
    }, {"name": "阜阳市", "shortName": "阜阳", "id": "3412", "cityIndex": 109, "pinYin": "fuyang"}, {
        "name": "宿州市",
        "shortName": "宿州",
        "id": "3413",
        "cityIndex": 110,
        "pinYin": "suzhou"
    }, {"name": "六安市", "shortName": "六安", "id": "3415", "cityIndex": 111, "pinYin": "liuan"}, {
        "name": "亳州市",
        "shortName": "亳州",
        "id": "3416",
        "cityIndex": 112,
        "pinYin": "bozhou"
    }, {"name": "池州市", "shortName": "池州", "id": "3417", "cityIndex": 113, "pinYin": "chizhou"}, {
        "name": "宣城市",
        "shortName": "宣城",
        "id": "3418",
        "cityIndex": 114,
        "pinYin": "xuancheng"
    }], "province": {"name": "安徽省", "shortName": "安徽", "id": "3400", "provinceIndex": 11, "pinYin": "anhui"}
}, {
    "city": [{"name": "福州市", "shortName": "福州", "id": "3501", "cityIndex": 115, "pinYin": "fuzhou"}, {
        "name": "厦门市",
        "shortName": "厦门",
        "id": "3502",
        "cityIndex": 116,
        "pinYin": "shamen"
    }, {"name": "莆田市", "shortName": "莆田", "id": "3503", "cityIndex": 117, "pinYin": "putian"}, {
        "name": "三明市",
        "shortName": "三明",
        "id": "3504",
        "cityIndex": 118,
        "pinYin": "sanming"
    }, {"name": "泉州市", "shortName": "泉州", "id": "3505", "cityIndex": 119, "pinYin": "quanzhou"}, {
        "name": "漳州市",
        "shortName": "漳州",
        "id": "3506",
        "cityIndex": 120,
        "pinYin": "zhangzhou"
    }, {"name": "南平市", "shortName": "南平", "id": "3507", "cityIndex": 121, "pinYin": "nanping"}, {
        "name": "龙岩市",
        "shortName": "龙岩",
        "id": "3508",
        "cityIndex": 122,
        "pinYin": "longyan"
    }, {"name": "宁德市", "shortName": "宁德", "id": "3509", "cityIndex": 123, "pinYin": "ningde"}],
    "province": {"name": "福建省", "shortName": "福建", "id": "3500", "provinceIndex": 12, "pinYin": "fujian"}
}, {
    "city": [{"name": "南昌市", "shortName": "南昌", "id": "3601", "cityIndex": 124, "pinYin": "nanchang"}, {
        "name": "景德镇市",
        "shortName": "景德镇",
        "id": "3602",
        "cityIndex": 125,
        "pinYin": "jingdezhen"
    }, {"name": "萍乡市", "shortName": "萍乡", "id": "3603", "cityIndex": 126, "pinYin": "pingxiang"}, {
        "name": "九江市",
        "shortName": "九江",
        "id": "3604",
        "cityIndex": 127,
        "pinYin": "jiujiang"
    }, {"name": "新余市", "shortName": "新余", "id": "3605", "cityIndex": 128, "pinYin": "xinyu"}, {
        "name": "鹰潭市",
        "shortName": "鹰潭",
        "id": "3606",
        "cityIndex": 129,
        "pinYin": "yingtan"
    }, {"name": "赣州市", "shortName": "赣州", "id": "3607", "cityIndex": 130, "pinYin": "ganzhou"}, {
        "name": "吉安市",
        "shortName": "吉安",
        "id": "3608",
        "cityIndex": 131,
        "pinYin": "jian"
    }, {"name": "宜春市", "shortName": "宜春", "id": "3609", "cityIndex": 132, "pinYin": "yichun"}, {
        "name": "抚州市",
        "shortName": "抚州",
        "id": "3610",
        "cityIndex": 133,
        "pinYin": "fuzhou"
    }, {"name": "上饶市", "shortName": "上饶", "id": "3611", "cityIndex": 134, "pinYin": "shangrao"}],
    "province": {"name": "江西省", "shortName": "江西", "id": "3600", "provinceIndex": 13, "pinYin": "jiangxi"}
}, {
    "city": [{"name": "济南市", "shortName": "济南", "id": "3701", "cityIndex": 135, "pinYin": "jinan"}, {
        "name": "青岛市",
        "shortName": "青岛",
        "id": "3702",
        "cityIndex": 136,
        "pinYin": "qingdao"
    }, {"name": "淄博市", "shortName": "淄博", "id": "3703", "cityIndex": 137, "pinYin": "zibo"}, {
        "name": "枣庄市",
        "shortName": "枣庄",
        "id": "3704",
        "cityIndex": 138,
        "pinYin": "zaozhuang"
    }, {"name": "东营市", "shortName": "东营", "id": "3705", "cityIndex": 139, "pinYin": "dongying"}, {
        "name": "烟台市",
        "shortName": "烟台",
        "id": "3706",
        "cityIndex": 140,
        "pinYin": "yantai"
    }, {"name": "潍坊市", "shortName": "潍坊", "id": "3707", "cityIndex": 141, "pinYin": "weifang"}, {
        "name": "济宁市",
        "shortName": "济宁",
        "id": "3708",
        "cityIndex": 142,
        "pinYin": "jining"
    }, {"name": "泰安市", "shortName": "泰安", "id": "3709", "cityIndex": 143, "pinYin": "taian"}, {
        "name": "威海市",
        "shortName": "威海",
        "id": "3710",
        "cityIndex": 144,
        "pinYin": "weihai"
    }, {"name": "日照市", "shortName": "日照", "id": "3711", "cityIndex": 145, "pinYin": "rizhao"}, {
        "name": "莱芜市",
        "shortName": "莱芜",
        "id": "3712",
        "cityIndex": 146,
        "pinYin": "laiwu"
    }, {"name": "临沂市", "shortName": "临沂", "id": "3713", "cityIndex": 147, "pinYin": "linyi"}, {
        "name": "德州市",
        "shortName": "德州",
        "id": "3714",
        "cityIndex": 148,
        "pinYin": "dezhou"
    }, {"name": "聊城市", "shortName": "聊城", "id": "3715", "cityIndex": 149, "pinYin": "liaocheng"}, {
        "name": "滨州市",
        "shortName": "滨州",
        "id": "3716",
        "cityIndex": 150,
        "pinYin": "binzhou"
    }, {"name": "菏泽市", "shortName": "菏泽", "id": "3717", "cityIndex": 151, "pinYin": "heze"}],
    "province": {"name": "山东省", "shortName": "山东", "id": "3700", "provinceIndex": 14, "pinYin": "shandong"}
}, {
    "city": [{"name": "郑州市", "shortName": "郑州", "id": "4101", "cityIndex": 152, "pinYin": "zhengzhou"}, {
        "name": "开封市",
        "shortName": "开封",
        "id": "4102",
        "cityIndex": 153,
        "pinYin": "kaifeng"
    }, {"name": "洛阳市", "shortName": "洛阳", "id": "4103", "cityIndex": 154, "pinYin": "luoyang"}, {
        "name": "平顶山市",
        "shortName": "平顶山",
        "id": "4104",
        "cityIndex": 155,
        "pinYin": "pingdingshan"
    }, {"name": "安阳市", "shortName": "安阳", "id": "4105", "cityIndex": 156, "pinYin": "anyang"}, {
        "name": "鹤壁市",
        "shortName": "鹤壁",
        "id": "4106",
        "cityIndex": 157,
        "pinYin": "hebi"
    }, {"name": "新乡市", "shortName": "新乡", "id": "4107", "cityIndex": 158, "pinYin": "xinxiang"}, {
        "name": "焦作市",
        "shortName": "焦作",
        "id": "4108",
        "cityIndex": 159,
        "pinYin": "jiaozuo"
    }, {"name": "濮阳市", "shortName": "濮阳", "id": "4109", "cityIndex": 160, "pinYin": "puyang"}, {
        "name": "许昌市",
        "shortName": "许昌",
        "id": "4110",
        "cityIndex": 161,
        "pinYin": "xuchang"
    }, {"name": "漯河市", "shortName": "漯河", "id": "4111", "cityIndex": 162, "pinYin": "luohe"}, {
        "name": "三门峡市",
        "shortName": "三门峡",
        "id": "4112",
        "cityIndex": 163,
        "pinYin": "sanmenxia"
    }, {"name": "南阳市", "shortName": "南阳", "id": "4113", "cityIndex": 164, "pinYin": "nanyang"}, {
        "name": "商丘市",
        "shortName": "商丘",
        "id": "4114",
        "cityIndex": 165,
        "pinYin": "shangqiu"
    }, {"name": "信阳市", "shortName": "信阳", "id": "4115", "cityIndex": 166, "pinYin": "xinyang"}, {
        "name": "周口市",
        "shortName": "周口",
        "id": "4116",
        "cityIndex": 167,
        "pinYin": "zhoukou"
    }, {"name": "驻马店市", "shortName": "驻马店", "id": "4117", "cityIndex": 168, "pinYin": "zhumadian"}, {
        "name": "直辖县级",
        "shortName": "直辖县",
        "id": "4190",
        "cityIndex": 169,
        "pinYin": "zhixiaxian"
    }], "province": {"name": "河南省", "shortName": "河南", "id": "4100", "provinceIndex": 15, "pinYin": "henan"}
}, {
    "city": [{"name": "武汉市", "shortName": "武汉", "id": "4201", "cityIndex": 170, "pinYin": "wuhan"}, {
        "name": "黄石市",
        "shortName": "黄石",
        "id": "4202",
        "cityIndex": 171,
        "pinYin": "huangshi"
    }, {"name": "十堰市", "shortName": "十堰", "id": "4203", "cityIndex": 172, "pinYin": "shiyan"}, {
        "name": "宜昌市",
        "shortName": "宜昌",
        "id": "4205",
        "cityIndex": 173,
        "pinYin": "yichang"
    }, {"name": "襄阳市", "shortName": "襄阳", "id": "4206", "cityIndex": 174, "pinYin": "xiangyang"}, {
        "name": "鄂州市",
        "shortName": "鄂州",
        "id": "4207",
        "cityIndex": 175,
        "pinYin": "ezhou"
    }, {"name": "荆门市", "shortName": "荆门", "id": "4208", "cityIndex": 176, "pinYin": "jingmen"}, {
        "name": "孝感市",
        "shortName": "孝感",
        "id": "4209",
        "cityIndex": 177,
        "pinYin": "xiaogan"
    }, {"name": "荆州市", "shortName": "荆州", "id": "4210", "cityIndex": 178, "pinYin": "jingzhou"}, {
        "name": "黄冈市",
        "shortName": "黄冈",
        "id": "4211",
        "cityIndex": 179,
        "pinYin": "huanggang"
    }, {"name": "咸宁市", "shortName": "咸宁", "id": "4212", "cityIndex": 180, "pinYin": "xianning"}, {
        "name": "随州市",
        "shortName": "随州",
        "id": "4213",
        "cityIndex": 181,
        "pinYin": "suizhou"
    }, {"name": "恩施土家族苗族自治州", "shortName": "恩施", "id": "4228", "cityIndex": 182, "pinYin": "enshi"}, {
        "name": "直辖县级",
        "shortName": "直辖县",
        "id": "4290",
        "cityIndex": 183,
        "pinYin": "zhixiaxian"
    }, {"name": "仙桃市", "shortName": "仙桃", "id": "4290", "cityIndex": 184, "pinYin": "xiantao"}, {
        "name": "潜江市",
        "shortName": "潜江",
        "id": "4290",
        "cityIndex": 185,
        "pinYin": "qianjiang"
    }, {"name": "天门市", "shortName": "天门市", "id": "4290", "cityIndex": 186, "pinYin": "tianmenshi"}, {
        "name": "神农架林区",
        "shortName": "神农架",
        "id": "4290",
        "cityIndex": 187,
        "pinYin": "shennongjia"
    }], "province": {"name": "湖北省", "shortName": "湖北", "id": "4200", "provinceIndex": 16, "pinYin": "hubei"}
}, {
    "city": [{"name": "长沙市", "shortName": "长沙", "id": "4301", "cityIndex": 188, "pinYin": "changsha"}, {
        "name": "株洲市",
        "shortName": "株洲",
        "id": "4302",
        "cityIndex": 189,
        "pinYin": "zhuzhou"
    }, {"name": "湘潭市", "shortName": "湘潭", "id": "4303", "cityIndex": 190, "pinYin": "xiangtan"}, {
        "name": "衡阳市",
        "shortName": "衡阳",
        "id": "4304",
        "cityIndex": 191,
        "pinYin": "hengyang"
    }, {"name": "邵阳市", "shortName": "邵阳", "id": "4305", "cityIndex": 192, "pinYin": "shaoyang"}, {
        "name": "岳阳市",
        "shortName": "岳阳",
        "id": "4306",
        "cityIndex": 193,
        "pinYin": "yueyang"
    }, {"name": "常德市", "shortName": "常德", "id": "4307", "cityIndex": 194, "pinYin": "changde"}, {
        "name": "张家界市",
        "shortName": "张家界",
        "id": "4308",
        "cityIndex": 195,
        "pinYin": "zhangjiajie"
    }, {"name": "益阳市", "shortName": "益阳", "id": "4309", "cityIndex": 196, "pinYin": "yiyang"}, {
        "name": "郴州市",
        "shortName": "郴州",
        "id": "4310",
        "cityIndex": 197,
        "pinYin": "chenzhou"
    }, {"name": "永州市", "shortName": "永州", "id": "4311", "cityIndex": 198, "pinYin": "yongzhou"}, {
        "name": "怀化市",
        "shortName": "怀化",
        "id": "4312",
        "cityIndex": 199,
        "pinYin": "huaihua"
    }, {"name": "娄底市", "shortName": "娄底", "id": "4313", "cityIndex": 200, "pinYin": "loudi"}, {
        "name": "湘西土家族苗族自治州",
        "shortName": "湘西",
        "id": "4331",
        "cityIndex": 201,
        "pinYin": "xiangxi"
    }], "province": {"name": "湖南省", "shortName": "湖南", "id": "4300", "provinceIndex": 17, "pinYin": "hunan"}
}, {
    "city": [{"name": "广州市", "shortName": "广州", "id": "4401", "cityIndex": 202, "pinYin": "guangzhou"}, {
        "name": "韶关市",
        "shortName": "韶关",
        "id": "4402",
        "cityIndex": 203,
        "pinYin": "shaoguan"
    }, {"name": "深圳市", "shortName": "深圳", "id": "4403", "cityIndex": 204, "pinYin": "shenzhen"}, {
        "name": "珠海市",
        "shortName": "珠海",
        "id": "4404",
        "cityIndex": 205,
        "pinYin": "zhuhai"
    }, {"name": "汕头市", "shortName": "汕头", "id": "4405", "cityIndex": 206, "pinYin": "shantou"}, {
        "name": "佛山市",
        "shortName": "佛山",
        "id": "4406",
        "cityIndex": 207,
        "pinYin": "fushan"
    }, {"name": "江门市", "shortName": "江门", "id": "4407", "cityIndex": 208, "pinYin": "jiangmen"}, {
        "name": "湛江市",
        "shortName": "湛江",
        "id": "4408",
        "cityIndex": 209,
        "pinYin": "zhanjiang"
    }, {"name": "茂名市", "shortName": "茂名", "id": "4409", "cityIndex": 210, "pinYin": "maoming"}, {
        "name": "肇庆市",
        "shortName": "肇庆",
        "id": "4412",
        "cityIndex": 211,
        "pinYin": "zhaoqing"
    }, {"name": "惠州市", "shortName": "惠州", "id": "4413", "cityIndex": 212, "pinYin": "huizhou"}, {
        "name": "梅州市",
        "shortName": "梅州",
        "id": "4414",
        "cityIndex": 213,
        "pinYin": "meizhou"
    }, {"name": "汕尾市", "shortName": "汕尾", "id": "4415", "cityIndex": 214, "pinYin": "shanwei"}, {
        "name": "河源市",
        "shortName": "河源",
        "id": "4416",
        "cityIndex": 215,
        "pinYin": "heyuan"
    }, {"name": "阳江市", "shortName": "阳江", "id": "4417", "cityIndex": 216, "pinYin": "yangjiang"}, {
        "name": "清远市",
        "shortName": "清远",
        "id": "4418",
        "cityIndex": 217,
        "pinYin": "qingyuan"
    }, {"name": "东莞市", "shortName": "东莞", "id": "4419", "cityIndex": 218, "pinYin": "dongguan"}, {
        "name": "中山市",
        "shortName": "中山",
        "id": "4420",
        "cityIndex": 219,
        "pinYin": "zhongshan"
    }, {"name": "潮州市", "shortName": "潮州", "id": "4451", "cityIndex": 220, "pinYin": "chaozhou"}, {
        "name": "揭阳市",
        "shortName": "揭阳",
        "id": "4452",
        "cityIndex": 221,
        "pinYin": "jieyang"
    }, {"name": "云浮市", "shortName": "云浮", "id": "4453", "cityIndex": 222, "pinYin": "yunfu"}],
    "province": {"name": "广东省", "shortName": "广东", "id": "4400", "provinceIndex": 18, "pinYin": "guangdong"}
}, {
    "city": [{"name": "南宁市", "shortName": "南宁", "id": "4501", "cityIndex": 223, "pinYin": "nanning"}, {
        "name": "柳州市",
        "shortName": "柳州",
        "id": "4502",
        "cityIndex": 224,
        "pinYin": "liuzhou"
    }, {"name": "桂林市", "shortName": "桂林", "id": "4503", "cityIndex": 225, "pinYin": "guilin"}, {
        "name": "梧州市",
        "shortName": "梧州",
        "id": "4504",
        "cityIndex": 226,
        "pinYin": "wuzhou"
    }, {"name": "北海市", "shortName": "北海", "id": "4505", "cityIndex": 227, "pinYin": "beihai"}, {
        "name": "防城港市",
        "shortName": "防城港",
        "id": "4506",
        "cityIndex": 228,
        "pinYin": "fangchenggang"
    }, {"name": "钦州市", "shortName": "钦州", "id": "4507", "cityIndex": 229, "pinYin": "qinzhou"}, {
        "name": "贵港市",
        "shortName": "贵港",
        "id": "4508",
        "cityIndex": 230,
        "pinYin": "guigang"
    }, {"name": "玉林市", "shortName": "玉林", "id": "4509", "cityIndex": 231, "pinYin": "yulin"}, {
        "name": "百色市",
        "shortName": "百色",
        "id": "4510",
        "cityIndex": 232,
        "pinYin": "baise"
    }, {"name": "贺州市", "shortName": "贺州", "id": "4511", "cityIndex": 233, "pinYin": "hezhou"}, {
        "name": "河池市",
        "shortName": "河池",
        "id": "4512",
        "cityIndex": 234,
        "pinYin": "hechi"
    }, {"name": "来宾市", "shortName": "来宾", "id": "4513", "cityIndex": 235, "pinYin": "laibin"}, {
        "name": "崇左市",
        "shortName": "崇左",
        "id": "4514",
        "cityIndex": 236,
        "pinYin": "chongzuo"
    }], "province": {"name": "广西壮族自治区", "shortName": "广西", "id": "4500", "provinceIndex": 19, "pinYin": "guangxi"}
}, {
    "city": [{"name": "海口市", "shortName": "海口", "id": "4601", "cityIndex": 237, "pinYin": "haikou"}, {
        "name": "三亚市",
        "shortName": "三亚",
        "id": "4602",
        "cityIndex": 238,
        "pinYin": "sanya"
    }, {"name": "三沙市", "shortName": "三沙", "id": "4603", "cityIndex": 239, "pinYin": "sansha"}, {
        "name": "直辖县级",
        "shortName": "直辖县",
        "id": "4690",
        "cityIndex": 240,
        "pinYin": "zhixiaxian"
    }], "province": {"name": "海南省", "shortName": "海南", "id": "4600", "provinceIndex": 20, "pinYin": "hainan"}
}, {
    "city": [{"name": "重庆市", "shortName": "重庆", "id": "5001", "cityIndex": 241, "pinYin": "zhongqing"}, {
        "name": "两江新区",
        "shortName": "两江新区",
        "id": "5003",
        "cityIndex": 242,
        "pinYin": "liangjiangxinqu"
    }], "province": {"name": "重庆市", "shortName": "重庆", "id": "5000", "provinceIndex": 21, "pinYin": "zhongqing"}
}, {
    "city": [{"name": "成都市", "shortName": "成都", "id": "5101", "cityIndex": 243, "pinYin": "chengdou"}, {
        "name": "自贡市",
        "shortName": "自贡",
        "id": "5103",
        "cityIndex": 244,
        "pinYin": "zigong"
    }, {"name": "攀枝花市", "shortName": "攀枝花", "id": "5104", "cityIndex": 245, "pinYin": "panzhihua"}, {
        "name": "泸州市",
        "shortName": "泸州",
        "id": "5105",
        "cityIndex": 246,
        "pinYin": "luzhou"
    }, {"name": "德阳市", "shortName": "德阳", "id": "5106", "cityIndex": 247, "pinYin": "deyang"}, {
        "name": "绵阳市",
        "shortName": "绵阳",
        "id": "5107",
        "cityIndex": 248,
        "pinYin": "mianyang"
    }, {"name": "广元市", "shortName": "广元", "id": "5108", "cityIndex": 249, "pinYin": "guangyuan"}, {
        "name": "遂宁市",
        "shortName": "遂宁",
        "id": "5109",
        "cityIndex": 250,
        "pinYin": "suining"
    }, {"name": "内江市", "shortName": "内江", "id": "5110", "cityIndex": 251, "pinYin": "neijiang"}, {
        "name": "乐山市",
        "shortName": "乐山",
        "id": "5111",
        "cityIndex": 252,
        "pinYin": "leshan"
    }, {"name": "南充市", "shortName": "南充", "id": "5113", "cityIndex": 253, "pinYin": "nanchong"}, {
        "name": "眉山市",
        "shortName": "眉山",
        "id": "5114",
        "cityIndex": 254,
        "pinYin": "meishan"
    }, {"name": "宜宾市", "shortName": "宜宾", "id": "5115", "cityIndex": 255, "pinYin": "yibin"}, {
        "name": "广安市",
        "shortName": "广安",
        "id": "5116",
        "cityIndex": 256,
        "pinYin": "guangan"
    }, {"name": "达州市", "shortName": "达州", "id": "5117", "cityIndex": 257, "pinYin": "dazhou"}, {
        "name": "雅安市",
        "shortName": "雅安",
        "id": "5118",
        "cityIndex": 258,
        "pinYin": "yaan"
    }, {"name": "巴中市", "shortName": "巴中", "id": "5119", "cityIndex": 259, "pinYin": "bazhong"}, {
        "name": "资阳市",
        "shortName": "资阳",
        "id": "5120",
        "cityIndex": 260,
        "pinYin": "ziyang"
    }, {"name": "阿坝藏族羌族自治州", "shortName": "阿坝", "id": "5132", "cityIndex": 261, "pinYin": "aba"}, {
        "name": "甘孜藏族自治州",
        "shortName": "甘孜",
        "id": "5133",
        "cityIndex": 262,
        "pinYin": "ganzi"
    }, {"name": "凉山彝族自治州", "shortName": "凉山", "id": "5134", "cityIndex": 263, "pinYin": "liangshan"}],
    "province": {"name": "四川省", "shortName": "四川", "id": "5100", "provinceIndex": 22, "pinYin": "sichuan"}
}, {
    "city": [{"name": "贵阳市", "shortName": "贵阳", "id": "5201", "cityIndex": 264, "pinYin": "guiyang"}, {
        "name": "六盘水市",
        "shortName": "六盘水",
        "id": "5202",
        "cityIndex": 265,
        "pinYin": "liupanshui"
    }, {"name": "遵义市", "shortName": "遵义", "id": "5203", "cityIndex": 266, "pinYin": "zunyi"}, {
        "name": "安顺市",
        "shortName": "安顺",
        "id": "5204",
        "cityIndex": 267,
        "pinYin": "anshun"
    }, {"name": "毕节市", "shortName": "毕节", "id": "5205", "cityIndex": 268, "pinYin": "bijie"}, {
        "name": "铜仁市",
        "shortName": "铜仁",
        "id": "5206",
        "cityIndex": 269,
        "pinYin": "tongren"
    }, {
        "name": "黔西南布依族苗族自治州",
        "shortName": "黔西南",
        "id": "5223",
        "cityIndex": 270,
        "pinYin": "qianxinan"
    }, {
        "name": "黔东南苗族侗族自治州",
        "shortName": "黔东南",
        "id": "5226",
        "cityIndex": 271,
        "pinYin": "qiandongnan"
    }, {"name": "黔南布依族苗族自治州", "shortName": "黔南", "id": "5227", "cityIndex": 272, "pinYin": "qiannan"}],
    "province": {"name": "贵州省", "shortName": "贵州", "id": "5200", "provinceIndex": 23, "pinYin": "guizhou"}
}, {
    "city": [{"name": "昆明市", "shortName": "昆明", "id": "5301", "cityIndex": 273, "pinYin": "kunming"}, {
        "name": "曲靖市",
        "shortName": "曲靖",
        "id": "5303",
        "cityIndex": 274,
        "pinYin": "qujing"
    }, {"name": "玉溪市", "shortName": "玉溪", "id": "5304", "cityIndex": 275, "pinYin": "yuxi"}, {
        "name": "保山市",
        "shortName": "保山",
        "id": "5305",
        "cityIndex": 276,
        "pinYin": "baoshan"
    }, {"name": "昭通市", "shortName": "昭通", "id": "5306", "cityIndex": 277, "pinYin": "zhaotong"}, {
        "name": "丽江市",
        "shortName": "丽江",
        "id": "5307",
        "cityIndex": 278,
        "pinYin": "lijiang"
    }, {"name": "普洱市", "shortName": "普洱", "id": "5308", "cityIndex": 279, "pinYin": "puer"}, {
        "name": "临沧市",
        "shortName": "临沧",
        "id": "5309",
        "cityIndex": 280,
        "pinYin": "lincang"
    }, {
        "name": "楚雄彝族自治州",
        "shortName": "楚雄",
        "id": "5323",
        "cityIndex": 281,
        "pinYin": "chuxiong"
    }, {
        "name": "红河哈尼族彝族自治州",
        "shortName": "红河",
        "id": "5325",
        "cityIndex": 282,
        "pinYin": "honghe"
    }, {
        "name": "文山壮族苗族自治州",
        "shortName": "文山",
        "id": "5326",
        "cityIndex": 283,
        "pinYin": "wenshan"
    }, {
        "name": "西双版纳傣族自治州",
        "shortName": "西双版纳",
        "id": "5328",
        "cityIndex": 284,
        "pinYin": "xishuangbanna"
    }, {"name": "大理白族自治州", "shortName": "大理", "id": "5329", "cityIndex": 285, "pinYin": "dali"}, {
        "name": "德宏傣族景颇族自治州",
        "shortName": "德宏",
        "id": "5331",
        "cityIndex": 286,
        "pinYin": "dehong"
    }, {"name": "怒江傈僳族自治州", "shortName": "怒江", "id": "5333", "cityIndex": 287, "pinYin": "nujiang"}, {
        "name": "迪庆藏族自治州",
        "shortName": "迪庆",
        "id": "5334",
        "cityIndex": 288,
        "pinYin": "diqing"
    }], "province": {"name": "云南省", "shortName": "云南", "id": "5300", "provinceIndex": 24, "pinYin": "yunnan"}
}, {
    "city": [{"name": "拉萨市", "shortName": "拉萨", "id": "5401", "cityIndex": 289, "pinYin": "lasa"}, {
        "name": "日喀则市",
        "shortName": "日喀则",
        "id": "5402",
        "cityIndex": 290,
        "pinYin": "rikaze"
    }, {"name": "昌都市", "shortName": "昌都", "id": "5403", "cityIndex": 291, "pinYin": "changdou"}, {
        "name": "山南地区",
        "shortName": "山南",
        "id": "5422",
        "cityIndex": 292,
        "pinYin": "shannan"
    }, {"name": "那曲地区", "shortName": "那曲", "id": "5424", "cityIndex": 293, "pinYin": "naqu"}, {
        "name": "阿里地区",
        "shortName": "阿里",
        "id": "5425",
        "cityIndex": 294,
        "pinYin": "ali"
    }, {"name": "林芝地区", "shortName": "林芝", "id": "5426", "cityIndex": 295, "pinYin": "linzhi"}],
    "province": {"name": "西藏自治区", "shortName": "西藏", "id": "5400", "provinceIndex": 25, "pinYin": "xicang"}
}, {
    "city": [{"name": "西安市", "shortName": "西安", "id": "6101", "cityIndex": 296, "pinYin": "xian"}, {
        "name": "铜川市",
        "shortName": "铜川",
        "id": "6102",
        "cityIndex": 297,
        "pinYin": "tongchuan"
    }, {"name": "宝鸡市", "shortName": "宝鸡", "id": "6103", "cityIndex": 298, "pinYin": "baoji"}, {
        "name": "咸阳市",
        "shortName": "咸阳",
        "id": "6104",
        "cityIndex": 299,
        "pinYin": "xianyang"
    }, {"name": "渭南市", "shortName": "渭南", "id": "6105", "cityIndex": 300, "pinYin": "weinan"}, {
        "name": "延安市",
        "shortName": "延安",
        "id": "6106",
        "cityIndex": 301,
        "pinYin": "yanan"
    }, {"name": "汉中市", "shortName": "汉中", "id": "6107", "cityIndex": 302, "pinYin": "hanzhong"}, {
        "name": "榆林市",
        "shortName": "榆林",
        "id": "6108",
        "cityIndex": 303,
        "pinYin": "yulin"
    }, {"name": "安康市", "shortName": "安康", "id": "6109", "cityIndex": 304, "pinYin": "ankang"}, {
        "name": "商洛市",
        "shortName": "商洛",
        "id": "6110",
        "cityIndex": 305,
        "pinYin": "shangluo"
    }, {"name": "西咸新区", "shortName": "西咸", "id": "6111", "cityIndex": 306, "pinYin": "xixian"}],
    "province": {"name": "陕西省", "shortName": "陕西", "id": "6100", "provinceIndex": 26, "pinYin": "shanxi"}
}, {
    "city": [{"name": "兰州市", "shortName": "兰州", "id": "6201", "cityIndex": 307, "pinYin": "lanzhou"}, {
        "name": "嘉峪关市",
        "shortName": "嘉峪关",
        "id": "6202",
        "cityIndex": 308,
        "pinYin": "jiayuguan"
    }, {"name": "金昌市", "shortName": "金昌", "id": "6203", "cityIndex": 309, "pinYin": "jinchang"}, {
        "name": "白银市",
        "shortName": "白银",
        "id": "6204",
        "cityIndex": 310,
        "pinYin": "baiyin"
    }, {"name": "天水市", "shortName": "天水", "id": "6205", "cityIndex": 311, "pinYin": "tianshui"}, {
        "name": "武威市",
        "shortName": "武威",
        "id": "6206",
        "cityIndex": 312,
        "pinYin": "wuwei"
    }, {"name": "张掖市", "shortName": "张掖", "id": "6207", "cityIndex": 313, "pinYin": "zhangye"}, {
        "name": "平凉市",
        "shortName": "平凉",
        "id": "6208",
        "cityIndex": 314,
        "pinYin": "pingliang"
    }, {"name": "酒泉市", "shortName": "酒泉", "id": "6209", "cityIndex": 315, "pinYin": "jiuquan"}, {
        "name": "庆阳市",
        "shortName": "庆阳",
        "id": "6210",
        "cityIndex": 316,
        "pinYin": "qingyang"
    }, {"name": "定西市", "shortName": "定西", "id": "6211", "cityIndex": 317, "pinYin": "dingxi"}, {
        "name": "陇南市",
        "shortName": "陇南",
        "id": "6212",
        "cityIndex": 318,
        "pinYin": "longnan"
    }, {"name": "临夏回族自治州", "shortName": "临夏", "id": "6229", "cityIndex": 319, "pinYin": "linxia"}, {
        "name": "甘南藏族自治州",
        "shortName": "甘南",
        "id": "6230",
        "cityIndex": 320,
        "pinYin": "gannan"
    }], "province": {"name": "甘肃省", "shortName": "甘肃", "id": "6200", "provinceIndex": 27, "pinYin": "gansu"}
}, {
    "city": [{"name": "西宁市", "shortName": "西宁", "id": "6301", "cityIndex": 321, "pinYin": "xining"}, {
        "name": "海东市",
        "shortName": "海东",
        "id": "6302",
        "cityIndex": 322,
        "pinYin": "haidong"
    }, {"name": "海北藏族自治州", "shortName": "海北", "id": "6322", "cityIndex": 323, "pinYin": "haibei"}, {
        "name": "黄南藏族自治州",
        "shortName": "黄南",
        "id": "6323",
        "cityIndex": 324,
        "pinYin": "huangnan"
    }, {"name": "海南藏族自治州", "shortName": "海南", "id": "6325", "cityIndex": 325, "pinYin": "hainan"}, {
        "name": "果洛藏族自治州",
        "shortName": "果洛",
        "id": "6326",
        "cityIndex": 326,
        "pinYin": "guoluo"
    }, {"name": "玉树藏族自治州", "shortName": "玉树", "id": "6327", "cityIndex": 327, "pinYin": "yushu"}, {
        "name": "海西蒙古族藏族自治州",
        "shortName": "海西",
        "id": "6328",
        "cityIndex": 328,
        "pinYin": "haixi"
    }], "province": {"name": "青海省", "shortName": "青海", "id": "6300", "provinceIndex": 28, "pinYin": "qinghai"}
}, {
    "city": [{"name": "银川市", "shortName": "银川", "id": "6401", "cityIndex": 329, "pinYin": "yinchuan"}, {
        "name": "石嘴山市",
        "shortName": "石嘴山",
        "id": "6402",
        "cityIndex": 330,
        "pinYin": "shizuishan"
    }, {"name": "吴忠市", "shortName": "吴忠", "id": "6403", "cityIndex": 331, "pinYin": "wuzhong"}, {
        "name": "固原市",
        "shortName": "固原",
        "id": "6404",
        "cityIndex": 332,
        "pinYin": "guyuan"
    }, {"name": "中卫市", "shortName": "中卫", "id": "6405", "cityIndex": 333, "pinYin": "zhongwei"}],
    "province": {"name": "宁夏回族自治区", "shortName": "宁夏", "id": "6400", "provinceIndex": 29, "pinYin": "ningxia"}
}, {
    "city": [{
        "name": "乌鲁木齐市",
        "shortName": "乌鲁木齐",
        "id": "6501",
        "cityIndex": 334,
        "pinYin": "wulumuqi"
    }, {"name": "克拉玛依市", "shortName": "克拉玛依", "id": "6502", "cityIndex": 335, "pinYin": "kelamayi"}, {
        "name": "吐鲁番地区",
        "shortName": "吐鲁番",
        "id": "6521",
        "cityIndex": 336,
        "pinYin": "tulufan"
    }, {"name": "哈密地区", "shortName": "哈密", "id": "6522", "cityIndex": 337, "pinYin": "hami"}, {
        "name": "昌吉回族自治州",
        "shortName": "昌吉",
        "id": "6523",
        "cityIndex": 338,
        "pinYin": "changji"
    }, {
        "name": "博尔塔拉蒙古自治州",
        "shortName": "博尔塔拉",
        "id": "6527",
        "cityIndex": 339,
        "pinYin": "boertala"
    }, {
        "name": "巴音郭楞蒙古自治州",
        "shortName": "巴音郭楞",
        "id": "6528",
        "cityIndex": 340,
        "pinYin": "bayinguoleng"
    }, {"name": "阿克苏地区", "shortName": "阿克苏", "id": "6529", "cityIndex": 341, "pinYin": "akesu"}, {
        "name": "克孜勒苏柯尔克孜自治州",
        "shortName": "克孜勒苏",
        "id": "6530",
        "cityIndex": 342,
        "pinYin": "kezileisu"
    }, {"name": "喀什地区", "shortName": "喀什", "id": "6531", "cityIndex": 343, "pinYin": "kashen"}, {
        "name": "和田地区",
        "shortName": "和田",
        "id": "6532",
        "cityIndex": 344,
        "pinYin": "hetian"
    }, {"name": "伊犁哈萨克自治州", "shortName": "伊犁", "id": "6540", "cityIndex": 345, "pinYin": "yili"}, {
        "name": "塔城地区",
        "shortName": "塔城",
        "id": "6542",
        "cityIndex": 346,
        "pinYin": "tacheng"
    }, {"name": "阿勒泰地区", "shortName": "阿勒泰", "id": "6543", "cityIndex": 347, "pinYin": "aleitai"}, {
        "name": "直辖县级",
        "shortName": "直辖县",
        "id": "6590",
        "cityIndex": 348,
        "pinYin": "zhixiaxian"
    }], "province": {"name": "新疆维吾尔自治区", "shortName": "新疆", "id": "6500", "provinceIndex": 30, "pinYin": "xinjiang"}
}, {
    "city": [{"name": "台北市", "shortName": "台北", "id": "7101", "cityIndex": 349, "pinYin": "taibei"}, {
        "name": "高雄市",
        "shortName": "高雄",
        "id": "7102",
        "cityIndex": 350,
        "pinYin": "gaoxiong"
    }, {"name": "基隆市", "shortName": "基隆", "id": "7103", "cityIndex": 351, "pinYin": "jilong"}, {
        "name": "台中市",
        "shortName": "台中",
        "id": "7104",
        "cityIndex": 352,
        "pinYin": "taizhong"
    }, {"name": "台南市", "shortName": "台南", "id": "7105", "cityIndex": 353, "pinYin": "tainan"}, {
        "name": "新竹市",
        "shortName": "新竹",
        "id": "7106",
        "cityIndex": 354,
        "pinYin": "xinzhu"
    }, {"name": "嘉义市", "shortName": "嘉义", "id": "7107", "cityIndex": 355, "pinYin": "jiayi"}, {
        "name": "新北市",
        "shortName": "新北",
        "id": "7108",
        "cityIndex": 356,
        "pinYin": "xinbei"
    }, {"name": "宜兰县", "shortName": "宜兰", "id": "7122", "cityIndex": 357, "pinYin": "yilan"}, {
        "name": "桃园县",
        "shortName": "桃园",
        "id": "7123",
        "cityIndex": 358,
        "pinYin": "taoyuan"
    }, {"name": "新竹县", "shortName": "新竹", "id": "7124", "cityIndex": 359, "pinYin": "xinzhu"}, {
        "name": "苗栗县",
        "shortName": "苗栗",
        "id": "7125",
        "cityIndex": 360,
        "pinYin": "miaoli"
    }, {"name": "彰化县", "shortName": "彰化", "id": "7127", "cityIndex": 361, "pinYin": "zhanghua"}, {
        "name": "南投县",
        "shortName": "南投",
        "id": "7128",
        "cityIndex": 362,
        "pinYin": "nantou"
    }, {"name": "云林县", "shortName": "云林", "id": "7129", "cityIndex": 363, "pinYin": "yunlin"}, {
        "name": "嘉义县",
        "shortName": "嘉义",
        "id": "7130",
        "cityIndex": 364,
        "pinYin": "jiayi"
    }, {"name": "屏东县", "shortName": "屏东", "id": "7133", "cityIndex": 365, "pinYin": "pingdong"}, {
        "name": "台东县",
        "shortName": "台东",
        "id": "7134",
        "cityIndex": 366,
        "pinYin": "taidong"
    }, {"name": "花莲县", "shortName": "花莲", "id": "7135", "cityIndex": 367, "pinYin": "hualian"}, {
        "name": "澎湖县",
        "shortName": "澎湖",
        "id": "7136",
        "cityIndex": 368,
        "pinYin": "penghu"
    }, {"name": "金门县", "shortName": "金门", "id": "7137", "cityIndex": 369, "pinYin": "jinmen"}, {
        "name": "连江县",
        "shortName": "连江",
        "id": "7138",
        "cityIndex": 370,
        "pinYin": "lianjiang"
    }], "province": {"name": "台湾省", "shortName": "台湾", "id": "7100", "provinceIndex": 31, "pinYin": "taiwan"}
}, {
    "city": [{
        "name": "香港岛",
        "shortName": "香港岛",
        "id": "8101",
        "cityIndex": 371,
        "pinYin": "xianggangdao"
    }, {"name": "九龙", "shortName": "九龙", "id": "8102", "cityIndex": 372, "pinYin": "jiulong"}, {
        "name": "新界",
        "shortName": "新界",
        "id": "8103",
        "cityIndex": 373,
        "pinYin": "xinjie"
    }], "province": {"name": "香港特别行政区", "shortName": "香港", "id": "8100", "provinceIndex": 32, "pinYin": "xianggang"}
}, {
    "city": [{
        "name": "澳门半岛",
        "shortName": "澳门半岛",
        "cityIndex": 374,
        "id": "8201",
        "pinYin": "aomenbandao"
    }, {"name": "氹仔岛", "shortName": "氹仔岛", "cityIndex": 375, "id": "8202", "pinYin": "dangzaidao"}, {
        "name": "路环岛",
        "shortName": "路环岛",
        "cityIndex": 376,
        "id": "8203",
        "pinYin": "luhuandao"
    }], "province": {"name": "澳门特别行政区", "shortName": "澳门", "id": "8200", "provinceIndex": 33, "pinYin": "aomen"}
}]

2、index.js

import RegionPicker from './region-picker'

RegionPicker.install = Vue => Vue.component(RegionPicker.name, RegionPicker)

export default RegionPicker

3、picker.scss

.outer {
  .input-area {
    position: relative;
  }
  .input-close {
    position: absolute;
    right: 0;
    top: 8px;
    width: 32px;
    height: 32px;
    opacity: 0.3;
    cursor: pointer;
    transition: 0.3s all;
  }
  .input-close:hover {
    opacity: 1;
  }
  .input-close:before,
  .input-close:after {
    position: absolute;
    left: 15px;
    content: " ";
    height: 14px;
    width: 2px;
    background-color: #333;
  }
  .input-close:before {
    transform: rotate(45deg);
  }
  .input-close:after {
    transform: rotate(-45deg);
  }
}
.picker-bg {
  width: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  outline: 0;
  background: #000000a1;
  z-index: 9999;

  .picker {
    width: 50%;
    height: 600px;
    position: absolute;
    left: 0;
    right: 0;
    margin: 4% auto;
    overflow: scroll;
    background-color: #fff;
    border-radius: 8px;
    line-height: 13px;
    z-index: 1;

    .setting {
      position: fixed;
      left: 0;
      right: 0;
      margin: auto;
      width: 48%;
      padding: 1%;
      background-color: #fff;
      border-bottom: 1px solid #e5e5e5;
      z-index: 99;
      border-radius: 8px 8px 0 0;
    }
    .content {
      margin-top: 15%;
      padding: 0 4%;

      .province {
        display: flex;
        flex-wrap: wrap;
        font-weight: bold;
        margin-bottom: 5px;

        label {
          font-size: 14px;
          font-weight: bold;
        }
      }
      .city {
        display: flex;
        flex-wrap: wrap;
        margin-bottom: 20px;

        label {
          font-size: 13.3px;
        }

        .city-item {
          width: 100px;
          text-align: left;
        }
      }
    }
    .sort {
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
    }
    .button-area {
      text-align: right;
      margin-bottom: 12px;
      padding-right: 40px;
      position: relative;

      .clear {
        margin-right: 40px;
      }
      .warn {
        background-color: #6c757d;
        border-color: #6c757d;
      }
      .confirm {
        background-color: #409eff;
        border-color: #409eff;
      }
      .color-button {
        color: #fff;
        border: none;
      }
      .close {
        position: absolute;
        right: 1px;
        top: 9px;
        width: 32px;
        height: 32px;
        opacity: 0.3;
        cursor: pointer;
        transition: 0.3s all;
      }
      .close:hover {
        opacity: 1;
      }
      .close:before,
      .close:after {
        position: absolute;
        left: 15px;
        content: " ";
        height: 16px;
        width: 2px;
        background-color: #333;
      }
      .close:before {
        transform: rotate(45deg);
      }
      .close:after {
        transform: rotate(-45deg);
      }

      button {
        background: #fff;
        border: 1px solid #dcdfe6;
        outline: none;
        cursor: pointer;
        padding: 7px 20px;
        border-radius: 4px;
        border-color: #dcdfe6;
        color: #595a5e;
        margin-right: 12px;
      }
    }
    .letter-item {
      color: #333;
      font-weight: bold;
      padding: 5px;
      font-size: 13px;
      border-radius: 4px;
      cursor: pointer;
      margin: 0 3px;
      transition: 0.3s all;

      &.active {
        background-color: #337ab7;
        color: #fff;
      }
      &:hover {
        background-color: #337ab7;
        color: #fff;
      }
    }
    label {
      cursor: pointer;
    }
    input[type="checkbox"] {
      width: 13px;
      height: 13px;
      opacity: 0;
      vertical-align: middle;
      margin-right: 5px;
    }
    &::-webkit-scrollbar {
      width: 0 !important;
    }
    & {
      -ms-overflow-style: none;
    }
    & {
      overflow: -moz-scrollbars-none;
    }
  }
  .check-box {
    width: 18px;
    height: 18px;
    position: absolute;
    margin-top: -1px;
  }
}

.cn-picker-input {
  border: 1px solid #c0c4cc;
  line-height: 30px;
  cursor: pointer;
  padding: 0 20px 0 10px;
  border-radius: 4px;
  color: #333;
  text-overflow: ellipsis;
  outline: none;

  &::-webkit-input-placeholder {
    color: #c9ccd8;
  }
  &::-moz-placeholder {
    /* Firefox 19+ */
    color: #c9ccd8;
  }
  &:-ms-input-placeholder {
    /* IE 10+ */
    color: #c9ccd8;
  }
  &:-moz-placeholder {
    /* Firefox 18- */
    color: #c9ccd8;
  }
}
.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
  opacity: 0;
}

4、region-picker.vue

<template>
    <div class="outer">
        <div class="input-area" :style="`width: ${width + 30}px;`">
            <input
                    type="text"
                    @focus="showPicker = true"
                    :value="showPickedCity"
                    :title="showPickedCity"
                    :class="`${inputClass || 'cn-picker-input'}`"
                    :placeholder="placeholder"
                    :style="`width: ${width}px;`"
            />
            <span class="input-close" v-if="showCloseBtn" @click.stop.prevent="handleAllStatus(false)"></span>
        </div>
        <transition name="fade">
            <div class="picker-bg" v-show="showPicker" @click.stop.self="closeModalPicker">
                <!-- 此处不能prevent -->
                <div class="picker">
                    <div class="setting">
                        <div class="button-area">
                            <button
                                    class="clear warn color-button"
                                    @click.stop.prevent="handleAllStatus(false)"
                            >全部清空
                            </button>
                            <button @click.stop.prevent="handleAllStatus(true)">全选</button>
                            <button @click.stop.prevent="inverse">反选</button>
                            <button class="confirm color-button" @click.stop.prevent="pick">确认</button>
                            <div class="close" @click.stop.prevent="showPicker = false"></div>
                        </div>
                        <div class="sort">
              <span
                      :class="`letter-item ${activeLetter === item ? 'active' : ''}`"
                      v-for="item in letter"
                      :key="item"
                      @click="clickLetter(item)"
              >{{item}}</span>
                        </div>
                    </div>
                    <div class="content">
                        <CheckboxGroup v-for="(item, index) in originCityData" :key="item.id">
                            <div class="province">
                                <label>
                                    {{item.province.shortName}}
                                </label>
                            </div>
                            <div class="city">
                                <CheckboxGroup>
                                    <Checkbox v-for="cityItem in item.city" :key="cityItem.index"
                                              :label="cityItem.index" v-model="cityStatus[Number(cityItem.id)]">
                                        {{cityItem.shortName}}
                                    </Checkbox>
                                </CheckboxGroup>
                            </div>
                        </CheckboxGroup>
                    </div>
                </div>
            </div>
        </transition>
    </div>
</template>

<script>
    import regions from "@/assets/regions";

    export default {
        name: "CnRegionPicker",

        data() {
            return {
                provinceSelect: false,
                indeterminateProvinceSelect: false,
                provinceStatus: [],
                cityStatus: [],
                showPicker: false,
                originCityData: Object.freeze(regions),
                letter: [
                    "全部",
                    "A",
                    "B",
                    "C",
                    "D",
                    "E",
                    "F",
                    "G",
                    "H",
                    "I",
                    "J",
                    "K",
                    "L",
                    "M",
                    "N",
                    "O",
                    "P",
                    "Q",
                    "R",
                    "S",
                    "T",
                    "U",
                    "V",
                    "W",
                    "X",
                    "Y",
                    "Z"
                ],
                activeLetter: "全部",
                pickData: []
            };
        },
        props: {
            placeholder: {
                type: [String],
                default: "选择城市"
            },
            showCloseBtn: {
                type: [Boolean],
                default: true
            },
            clickModal: {
                type: [Boolean],
                default: true
            },
            inputClass: {
                type: [String],
                default: null
            },
            width: {
                type: [Number],
                default: 250
            },
            pickedCity: {
                type: String,
                default: null
            }
        },
        methods: {
            clearAll(bool) {
                regions.forEach(item => {
                    item.city.forEach((cityItem) => {
                        this.cityStatus[Number(cityItem.id)] = bool;
                    });
                });
            },
            pick() {
                let checkedCity = []; // 勾选的城市index
                let outPutArr = [];
                this.cityStatus.forEach((cityItem, index) => {
                    if (cityItem) {
                        checkedCity.push(index);
                    }
                });
                regions.forEach(item => {
                    item.city.forEach((cityItem) => {
                        if (checkedCity.indexOf(Number(cityItem.id)) !== -1) {
                            outPutArr.push(cityItem);
                        }
                    });
                });
                this.$emit("on-pick-city", outPutArr.map(item => item.id).join(","));
                this.pickData = outPutArr;
                this.showPicker = false;
            },

            inverse() {
                this.cityStatus.forEach((item, index) => {
                    this.$set(this.cityStatus, index, !item);
                });
            },

            handleAllStatus(bool) {
                this.cityStatus.forEach((item, index) => {
                    this.$set(this.cityStatus, index, bool);
                });
                if (!bool) {
                    this.pickData = [];
                }
            },

            clickLetter(letter) {
                this.activeLetter = letter;
                let originCityData = [];

                regions.forEach(item => {
                    let sortCity = [];
                    item.city.forEach(cityItem => {
                        if (cityItem.pinYin[0].toUpperCase() === letter) {
                            sortCity.push(cityItem);
                        }
                    });
                    if (sortCity.length > 0) {
                        originCityData.push({
                            city: sortCity,
                            province: item.province
                        });
                    }
                });
                this.originCityData =
                    letter === "全部"
                        ? Object.freeze(regions)
                        : Object.freeze(originCityData);
            },
            closeModalPicker() {
                if (this.clickModal) {
                    this.showPicker = false;
                }
            }
        },
        computed: {
            showPickedCity() {
                console.log("this.pickedCity==", this.pickedCity);
                let result = "";
                this.pickData.forEach(city => {
                    this.cityStatus[Number(city.id)] = true;
                    result += `${city.name} `;
                });
                this.pickData = [];
                return result;
            }
        },
        watch: {
            pickedCity: {
                handler(newOne) {
                    regions.forEach(item => {
                        item.city.forEach((cityItem) => {
                            this.cityStatus[Number(cityItem.id)] = false;
                            if (newOne.split(",").indexOf(cityItem.id) != -1) {
                                this.pickData.push(cityItem);
                            }
                        });
                    });
                }
            },
            pickData: {
                handler(newOne) {
                    newOne.forEach(city => {
                        this.cityStatus[Number(city.id)] = true;
                    });
                }
            }
        },
        created: function () {
            this.clearAll(false);
        }
    };
</script>

<style lang="scss" scoped>
    @import './picker.scss';
</style>


5、父组件应用

<RegionPicker
     :pickedCity="pickedCitys"
      @on-pick-city="pickedCity"
      placeholder="排除地域">
</RegionPicker>

pickedCitys 传入逗号分隔的城市id即可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值