commit 681d63db5282cb4be4d5edbc3b6fe22f3ffb7b74 Author: W夏日 <1241133727@qq.com> Date: Wed Dec 27 13:13:29 2023 +0800 基础文件提交 diff --git a/api.js b/api.js new file mode 100644 index 0000000..b636d64 --- /dev/null +++ b/api.js @@ -0,0 +1,238 @@ +var _api_root = 'https://hsyg.yguixi.cn/api/'; +// var _api_root = 'http://localhost:443/api/'; + + +var api = { + default: { + img_server: 'http://39.106.212.32:2020', + submitFormId:_api_root + 'member/submitFormId', + store: _api_root + 'default/store', + index: _api_root + 'applet/index', + indexList: _api_root + 'applet/indexList', + bannerList: _api_root + 'applet/bannerList', + + goods_list: _api_root + 'pms/product/queryProductList1', + //VIP产品列表 + vip_list: _api_root + 'pms/vip/product', + bzj_list: _api_root + 'pms/bzj/product', + category_list: _api_root + 'pms/category/list', + + goods_shop: _api_root + 'pms/product/queryAllProductBySupplyId', + // cat_list: _api_root + 'pms/getProductCategoryDto', + time_list: _api_root + 'pms/goods/timeList', + date_list: _api_root + 'pms/goods/dateList', + five_day_order_count: _api_root + 'pms/five_day', + future_count: _api_root + 'pms/future_count', + + + + cat_list: _api_root + 'pms/listWithChildren', + workerTechList: _api_root + 'pms/workerTechList', + + + goods: _api_root + 'pms/product/queryProductDetail', + groupOrderList: _api_root + 'pms/groupOrderList', + + district: 'https://www.91weiyi.xyz/addons/zjhj_mall/core/web/index.php?store_id=21&r=api/default/district', + goods_attr_info: _api_root + "home/attr/list", + upload_image: _api_root + "aliyun/oss/upload", + + comment_list: _api_root + "order/comment_list", + article_list: _api_root + "member/article_list", + article_detail: _api_root + "member/article_detail", + video_list: _api_root + "default/video-list", + goods_qrcode: _api_root + "default/goods-qrcode", + coupon_list: _api_root + "member/coupon/alllist", + topic_list: _api_root + "home/subjectList", + topic: _api_root + "home/subjectDetail", + video_list: _api_root + "member/video_list", + + }, + cart: { + list: _api_root + 'cart/list', + add_cart: _api_root + 'cart/addCart', + delete: _api_root + 'cart/delete', + add_favorite: _api_root + 'cart/add_favorite', + + update_quantity: _api_root + 'cart/update/quantity', + }, + passport: { + login: _api_root + 'applet/master_login_by_weixin', + quick_login: _api_root + 'applet/master_quick_login', + on_login: _api_root + 'passport/on-login', + }, + order: { + orderVip: _api_root + 'order/generateVipOrder', + orderBzj: _api_root + 'order/generateBzjOrder', + submit_preview: _api_root + 'order/submitPreview', + submit: _api_root + 'order/generateOrder', + pay_data: _api_root + 'pay/prepay', + masterPayPrepay: _api_root + 'pay/masterPayPrepay', + + masterPlantformPayPrepay: _api_root + 'pay/masterPlantformPayPrepay', + + + exportOrder: _api_root + 'order/exportOrder', + + changeAddress: _api_root + 'member/change-address', + + pay_vip: _api_root + 'pay/vipPayPrepay', + earnest_money_prepay: _api_root + 'pay/earnestMoneyPrepay', + + orderStatic: _api_root + 'order/orderStatic', + + orderStaticJingjia: _api_root + 'order/orderStaticJingjia', + orderStaticQingyun: _api_root + 'order/orderStaticQingyun', + + my_worker_order_total: _api_root + 'order/my_worker_order_total', + + //师傅订单统计数据 + daily_worker_order_total: _api_root + 'order/daily_worker_order_total', + + addProductForOrder: _api_root + 'order/addProductForOrder', + + updateOrderQuantity: _api_root + 'order/updateQuantityForOrder', + updateOrderItemPrice: _api_root + 'order/updatePriceForOrder', + + updateQingyunOrder: _api_root + 'order/updateQingyunOrder', + updateQingyunName: _api_root + 'order/updateQingyunName', + + + sendMessage: _api_root + 'member/sendMessage', + + deleteOrderItem: _api_root + 'order/deleteOrderItem', + + confirmOrder: _api_root + 'order/confirmOrder', + + + supply_order_list: _api_root + 'order/supply_order_list', + + worker_order_list: _api_root + 'order/worker_order_list', + worker_order_list_count: _api_root + 'order/worker_order_list_count', + + + //工人订单列表 + my_worker_order_list: _api_root + 'order/my_worker_order', + + + unprice_order_list: _api_root + 'order/unprice_order_list', + + export_order_list: _api_root + 'order/export_order_list', + + + + + send_worker_order: _api_root + 'order/update/get_worker_order', + + set_order_price: _api_root + 'order/update/set_order_price', + + + + + chongzhi: _api_root + 'pay/chongzhi', + tixian: _api_root + 'pay/tixian', + getMasterQR: _api_root + 'oms/getMasterQR', + getOrderQR: _api_root + 'oms/getOrderQR', + + + + search: _api_root + 'oms/search', + list: _api_root + 'order/list', + admin_list: _api_root + 'order/admin_list', + undo_admin_list: _api_root + 'order/undo_admin_list', + get_my_order: _api_root + 'order/update/get_my_order', + + deliver: _api_root + 'order/update/delivery', + updateTime: _api_root + 'order/update/updateTime', + updateWorkerState: _api_root + 'order/update/updateWorkerState', + + + + revoke: _api_root + 'order/cancelOrder', + //师傅取消订单 + cancelWorkerOrder: _api_root + 'order/cancelWorkerOrder', + + //导入人取消订单 + cancelInputOrder: _api_root + 'order/cancelInputOrder', + + updateServiceDate: _api_root + 'order/updateServiceDate', + + markWorkerOrder: _api_root + 'order/markWorkerOrder', + + markConnectOrder: _api_root + 'order/markConnectOrder', + + + confirm: _api_root + 'order/querenOrder', + testcomment: _api_root + 'order/commentOrder', + updateMember: _api_root + 'member/updateMember', + + count_data: _api_root + 'order/count-data', + detail: _api_root + 'order/detail', + getWayBillInfo: _api_root + 'order/getWayBillInfo', + refund_preview: _api_root + 'order/refund-preview', + refund: _api_root + 'pay/refund', + refund_detail: _api_root + 'order/refund-detail', + comment_preview: _api_root + 'order/comment-preview', + comment: _api_root + 'order/comment', + express_detail: _api_root + 'order/express-detail', + clerk: _api_root + "order/clerk", + clerk_detail: _api_root + 'order/clerk-detail', + get_qrcode: _api_root + 'order/get-qrcode', + }, + user: { + feedback: _api_root + 'member/feedback', + applyInput: _api_root + 'member/apply_input', + area_list: _api_root + 'member/area_list', + get_brokerage: _api_root + 'member/brokerage/getBrokerage', + get_blance: _api_root + 'member/blance/getBlance', + get_chongzhi: _api_root + 'member/blance/getCongzhi', + get_chongzhilog: _api_root + 'member/blance/getWorkerCongzhi', + + getWorkerInput: _api_root + 'member/blance/getWorkerInput', + + supply_worker_list: _api_root + 'member/worker_list', + get_fans: _api_root + 'applet/list', + address_list: _api_root + 'address/list', + address_detail: _api_root + 'address/detail', + address_save: _api_root + 'address/save', + address_set_default: _api_root + 'address/address-set-default', + address_delete: _api_root + 'address/delete', + save_form_id: _api_root + "collection/save-form-id", + favorite_add: _api_root + "ums/collect/create", + favorite_remove: _api_root + "collection/favorite-remove", + favorite_list: _api_root + "ums/collect/list", + index: _api_root + "applet/user", + wechat_district: _api_root + "user/wechat-district", + add_wechat_address: _api_root + "user/add-wechat-address", + topic_favorite: _api_root + "collection/topic-favorite", + topic_favorite_list: _api_root + "collection/topic-listCollect", + }, + share: { + joinWork: _api_root + 'member/createWorker', + //申请成为区域管理员 + join: _api_root + 'member/createBusiness', + create_admin: _api_root + 'member/createAdmin', + + check: _api_root + 'share/check', + get_info: _api_root + 'share/get-info', + get_price: _api_root + 'share/get-price', + apply: _api_root + 'share/apply', + cash_detail: _api_root + 'share/cash-detail', + get_qrcode: _api_root + 'share/get-qrcode', + shop_share: _api_root + 'share/shop-share', + bind_parent: _api_root + 'share/bind-parent', + get_team: _api_root + 'share/get-team', + get_order: _api_root + 'share/get-order', + }, + coupon: { + alllist: _api_root + 'member/coupon/alllist', + index: _api_root + 'member/coupon/list', + share_send: _api_root + 'coupon/share-send', + receive: _api_root + 'member/coupon/add', + }, + red: { + index: _api_root + 'redPacket/list', + receive: _api_root + 'redPacket/accept', + }, +}; +module.exports = api; \ No newline at end of file diff --git a/api.tpl.js b/api.tpl.js new file mode 100644 index 0000000..1d6ed8f --- /dev/null +++ b/api.tpl.js @@ -0,0 +1,31 @@ +var _api_root = '{$_api_root}'; +var api = { + index: _api_root + 'default/index', + default: { + store: _api_root + 'default/store', + index: _api_root + 'default/index', + + }, + cart: { + list: _api_root + 'cart/list', + }, + passport: { + login: _api_root + 'passport/login', + on_login: _api_root + 'passport/on-login', + }, + order: { + + list: _api_root + 'order/list', + }, + user: { + + index: _api_root + "user/index", + }, + share: { + + }, + coupon: { + + }, +}; +module.exports = api; \ No newline at end of file diff --git a/app.js b/app.js new file mode 100644 index 0000000..1543e73 --- /dev/null +++ b/app.js @@ -0,0 +1,392 @@ +//app.js +var util = require('./utils/utils.js'); +var api = require('./api.js'); +App({ + is_on_launch: true, + onLaunch: function () { + console.log(wx.getSystemInfoSync()); + // this.getStoreData(); + this.getCatList(); + var access_token = wx.getStorageSync("access_token"); + console.log('token:' + access_token); + wx.setStorageSync('token', ""); + this.autoUpdate(); + + wx.login({ + success: function (res) { + if (res.code) { + var code = res.code; + console.log("7777777") + console.log(res) + getApp().loginrequest({ + url: api.passport.quick_login, + method: "post", + data: { + code: code + }, + success: function (res) { + console.log("quickLoginSuccessful") + console.log(res) + wx.hideLoading(); + if (res.code == 200) { + const tokenStr = res.data.tokenHead + res.data.token + wx.setStorageSync('loginToken', tokenStr) + wx.setStorageSync('token', res.data.token); + wx.setStorageSync("access_token", res.data.userId); + wx.setStorageSync("user_info", { + avatar_url: res.data.img, + nickname: res.data.username, + avatar_url: res.data.icon, + // parent: res.data.parent, + id: res.data.id + }); + wx.setStorageSync("my_info", { + supplyId: res.data.myInfo.supplyId, + supplyState: res.data.myInfo.supplyState, + myMoney: res.data.myInfo.myMoney, + brokerage: res.data.myInfo.brokerage, + brokerageTixian: res.data.myInfo.brokerageTixian, + + moneyTotal: res.data.myInfo.moneyTotal, + buyTotal: res.data.myInfo.buyTotal, + + icon: res.data.myInfo.icon, + nickname: res.data.myInfo.nickname, + memberLevelId: res.data.myInfo.memberLevelId, + id: res.data.myInfo.id, + city: res.data.myInfo.city, + gender: res.data.myInfo.gender, + job: res.data.myInfo.job, + phone: res.data.myInfo.phone, + birthday: res.data.myInfo.birthday, + + + // parent: res.data.parent, + }); + + // if (wx.reLaunch) { + // wx.reLaunch({ + // url: '/pages/index/index' + // }) + // } else { + // this.location('/pages/index/index'); + // } + + } else { + wx.setStorageSync('token', ''); + wx.setStorageSync("access_token", ''); + } + } + }); + } + + + } + }); + + + // if (access_token) { + // if (wx.reLaunch) { + // wx.reLaunch({ + // url: '/pages/index/index' + // }) + // } else { + // this.location('/pages/index/index'); + // } + // } else { + // wx.reLaunch({ + // url: '/pages/allow/allow' + // }) + // } + // if (!access_token) + // this.login(); + }, +//获取小程序更新机制的兼容,由于更新的功能基础库要1.9.90以上版本才支持,所以此处要做低版本的兼容处理 + +autoUpdate: function () { + let _this = this + // 获取小程序更新机制的兼容,由于更新的功能基础库要1.9.90以上版本才支持,所以此处要做低版本的兼容处理 + if (wx.canIUse('getUpdateManager')) { + // wx.getUpdateManager接口,可以获知是否有新版本的小程序、新版本是否下载好以及应用新版本的能力,会返回一个UpdateManager实例 + const updateManager = wx.getUpdateManager() + // 检查小程序是否有新版本发布,onCheckForUpdate:当小程序向后台请求完新版本信息,会通知这个版本告知检查结果 + updateManager.onCheckForUpdate(function (res) { + // 请求完新版本信息的回调 + if (res.hasUpdate) { + // 检测到新版本,需要更新,给出提示 + wx.showModal({ + title: '更新提示', + content: '检测到新版本,是否下载新版本并重启小程序', + success: function (res) { + if (res.confirm) { + // 用户确定更新小程序,小程序下载和更新静默进行 + _this.downLoadAndUpdate(updateManager) + } else if (res.cancel) { + // 若用户点击了取消按钮,二次弹窗,强制更新,如果用户选择取消后不需要进行任何操作,则以下内容可忽略 + wx.showModal({ + title: '提示', + content: '本次版本更新涉及到新功能的添加,旧版本将无法正常使用', + showCancel: false, // 隐藏取消按钮 + confirmText: '确认更新', // 只保留更新按钮 + success: function (res) { + if (res.confirm) { + // 下载新版本,重启应用 + _this.downLoadAndUpdate(updateManager) + } + } + }) + } + } + }) + } + }) + } else { + // 在最新版本客户端上体验小程序 + wx.showModal({ + title: '提示', + content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试', + }) + } +}, +// 下载小程序最新版本并重启 +downLoadAndUpdate: function (updateManager) { + wx.showLoading() + // 静默下载更新小程序新版本,onUpdateReady:当新版本下载完成回调 + updateManager.onUpdateReady(function () { + wx.hideLoading() + // applyUpdate:强制当前小程序应用上新版本并重启 + updateManager.applyUpdate() + }) + // onUpdateFailed:当新版本下载失败回调 + updateManager.onUpdateFailed(function () { + // 下载新版本失败 + wx.showModal({ + title: '已有新版本', + content: '新版本已经上线了,请删除当前小程序,重新搜索打开', + }) + }) +} +, + + + getCatList: function () { + this.request({ + url: api.default.cat_list, + data: { + limit: 15 + }, + success: function (res) { + if (res.code == 200) { + var cat_list = res.data || []; + wx.setStorageSync("cat_list", cat_list); + } + } + }); + }, + + + login: function () { + var pages = getCurrentPages(); + var page = pages[(pages.length - 1)]; + + wx.login({ + success: function (res) { + if (res.code) { + var code = res.code; + getApp().request({ + url: api.passport.quick_login, + method: "post", + data: { + code: code + }, + success: function (res) { + console.log("quickLoginSuccessful") + console.log(res) + wx.hideLoading(); + if (res.code == 200) { + const tokenStr = res.data.tokenHead+res.data.token + wx.setStorageSync('loginToken', tokenStr) + wx.setStorageSync('token', res.data.token); + wx.setStorageSync("access_token", res.data.userId); + wx.setStorageSync("user_info", { + avatar_url: res.data.img, + nickname: res.data.username, + avatar_url: res.data.icon, + // parent: res.data.parent, + id: res.data.id + }); + wx.setStorageSync("my_info", { + supplyId: res.data.myInfo.supplyId, + supplyState: res.data.myInfo.supplyState, + myMoney: res.data.myInfo.myMoney, + icon: res.data.myInfo.icon, + nickname: res.data.myInfo.nickname, + // parent: res.data.parent, + }); + + var parent_id = wx.getStorageSync("parent_id"); + var p = getCurrentPages(); + // var parent_id = 0; + + + if (p[0].options.user_id != undefined) { + + parent_id = p[0].options.user_id; + } + else if (p[0].options.scene != undefined) { + parent_id = p[0].options.scene; + } + console.log('parentid:' + parent_id, p[0].options.scene, p[0].options.user_id); + + + if (page == undefined) { + return; + + } + wx.redirectTo({ + url: "/" + page.route + "?" + util.objectToUrlParams(page.options), + fail: function () { + wx.switchTab({ + url: "/" + page.route, + }); + }, + }); + } else { + // wx.reLaunch({ + // url: '/pages/allow/allow' + // }) + // wx.showToast({ + // title: res.msg + // }); + } + } + }); + } + + + } + }); + }, + request: function (object) { + var access_token = wx.getStorageSync("access_token"); + console.log('token:' + access_token); + if (access_token) { + if (!object.data) + object.data = {}; + // object.data.access_token = access_token; + } + wx.request({ + url: object.url, + header: object.header || { + 'content-type': 'application/x-www-form-urlencoded', + 'Authorization':wx.getStorageSync('loginToken') // 让每个请求携带自定义token 请根据实际情况自行修改 + + }, + data: object.data || {}, + method: object.method || "GET", + dataType: object.dataType || "json", + success: function (res) { + if (res.data.code == -1) { + getApp().login(); + } else { + if (object.success) + object.success(res.data); + } + }, + fail: function (res) { + var app = getApp(); + if (app.is_on_launch) { + app.is_on_launch = false; + wx.showModal({ + title: "网络请求出错", + content: res.errMsg, + showCancel: false, + success: function (res) { + if (res.confirm) { + if (object.fail) + object.fail(res); + } + } + }); + } else { + wx.showToast({ + title: res.errMsg, + image: "/images/icon-warning.png", + }); + if (object.fail) + object.fail(res); + } + }, + complete: function (res) { + if (object.complete) + object.complete(res); + } + }); + }, + loginrequest: function (object) { + var access_token = wx.getStorageSync("access_token"); + console.log('token:' + access_token); + if (access_token) { + if (!object.data) + object.data = {}; + // object.data.access_token = access_token; + } + wx.request({ + url: object.url, + header: object.header || { + 'content-type': 'application/x-www-form-urlencoded' + + }, + data: object.data || {}, + method: object.method || "GET", + dataType: object.dataType || "json", + success: function (res) { + if (res.data.code == -1) { + getApp().login(); + } else { + if (object.success) + object.success(res.data); + } + }, + fail: function (res) { + var app = getApp(); + if (app.is_on_launch) { + app.is_on_launch = false; + wx.showModal({ + title: "网络请求出错", + content: res.errMsg, + showCancel: false, + success: function (res) { + if (res.confirm) { + if (object.fail) + object.fail(res); + } + } + }); + } else { + wx.showToast({ + title: res.errMsg, + image: "/images/icon-warning.png", + }); + if (object.fail) + object.fail(res); + } + }, + complete: function (res) { + if (object.complete) + object.complete(res); + } + }); + }, + saveFormId: function (form_id) { + this.request({ + url: api.user.save_form_id, + data: { + form_id: form_id, + } + }); + }, + + + +}); \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..b60231d --- /dev/null +++ b/app.json @@ -0,0 +1,31 @@ +{ + "pages": [ + "pages/merchant-login/merchant-login" + ], + "requiredPrivateInfos": [ + "chooseAddress" + ], + "window": { + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "排队支付", + "navigationBarTextStyle": "black", + "backgroundColor": "#fff" + }, + "debug": false, + "sitemapLocation": "sitemap.json", + "usingComponents": { + "van-popup": "lib/vant/popup/index" + }, + "permission": { + "scope.userLocation": { + "desc": "你的位置信息将用于小程序定位" + } + }, + "plugins": { + "chooseLocation": { + "version": "1.0.9", + "provider": "wx76a9a06e5b4e693e" + } + } +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..3c760c5 --- /dev/null +++ b/app.wxss @@ -0,0 +1,353 @@ +/**app.wxss**/ + +@import "/area-picker/area-picker.wxss"; + +page { + height: 100%; + font-size: 24rpx; + color: #555; + background: #f7f7f7; + overflow-x: hidden; +} + +page, +block, +view, +scroll-view, +swiper, +movable-view, +icon, +text, +progress, +button, +checkbox, +form, +input, +label, +picker, +picker-view, +radio, +slider, +switch, +textarea, +navigator, +audio, +image, +video, +map, +canvas, +contact-button { + box-sizing: border-box; +} +button{ + font-size: 11pt; + font-family: inherit; +} +.flex { + display: -webkit-box; + display: -webkit-flex; + display: flex; +} + +.flex-row { + display: -webkit-box; + display: -webkit-flex; + display: flex; + + -webkit-box-orient: horizontal; + -webkit-flex-direction: row; + flex-direction: row; +} + +.flex-col{ + display: -webkit-box; + display: -webkit-flex; + display: flex; + + -webkit-box-orient: vertical; + -webkit-flex-direction: column; + flex-direction: column; +} + +.flex-grow-0{ + min-width: 0; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; +} +.my-order-bg-style{ + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + border-radius: 20rpx; + background: #fff; + margin-bottom:30rpx; + +} +.flex-grow-1{ + min-width: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.flex-x-center{ + display: -webkit-box; + display: -webkit-flex; + display: flex; + + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} +.flex-y-center{ + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + -ms-grid-row-align: center; + align-items: center; +} +.flex-y-bottom{ + display: -webkit-box; + display: -webkit-flex; + display: flex; + + -webkit-box-align: end; + -webkit-align-items: flex-end; + -ms-flex-align: end; + -ms-grid-row-align: flex-end; + align-items: flex-end; +} + + + +.spinner { + margin: 0 auto; + width: 100rpx; + height: 50rpx; + text-align: center; + font-size: 10rpx; +} + +.spinner > view { + background-color: #8c949a; + height: 100%; + width: 10rpx; + display: inline-block; + margin: 0 2rpx; + animation: sk-stretchdelay 1.2s infinite ease-in-out; +} + +.spinner .rect2 { + animation-delay: -1.1s; +} + +.spinner .rect3 { + animation-delay: -1.0s; +} + +.spinner .rect4 { + animation-delay: -0.9s; +} + +.spinner .rect5 { + animation-delay: -0.8s; +} + +@keyframes sk-stretchdelay { + 0%, 40%, 100% { + transform: scaleY(0.4); + -webkit-transform: scaleY(0.4); + } 20% { + transform: scaleY(1.0); + -webkit-transform: scaleY(1.0); + } +} + +.copy-text-btn{ + line-height: normal; + height: auto; + display: inline-block; + font-size: 9pt; + color: #888; + border: 1rpx solid #ddd; + border-radius: 5rpx; + padding: 6rpx 12rpx; + background-color: #fff !important; + box-shadow: none; +} + +.no-data-tip{ + padding: 150rpx 0; + text-align: center; + color: #888; +} + +.no-data-tip .no-data-icon{ + width: 160rpx; + height: 160rpx; + font-size: 0; + border-radius: 9999rpx; + background: rgba(0,0,0,.1); + margin-left: auto; + margin-right: auto; + margin-bottom: 32rpx; +} + +.bg-white{ + background-color: #fff; +} + +.mb-20{ + margin-bottom: 1rpx; +} + +.mb-10{ + margin-bottom: 10rpx; +} + +button[plain]{ + border: none; + color: inherit; +} + +.nowrap{ + white-space: nowrap; +} + +.fs-0{ + font-size: 0; +} + +.get-coupon{ + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0,0,0,.75); + z-index: 999; +} +.get-coupon .get-coupon-box{ + position: relative; + width: 100%; +} + +.get-coupon .get-coupon-bg{ + width: 100%; + position: absolute; + left: 0; + top:-210rpx; + z-index: -1; +} + +.get-coupon .coupon-list{ + height: 330rpx; + width: 550rpx; + margin: 0 auto; +} + +.get-coupon .coupon-item{ + width: 520rpx; + height: 264rpx; + margin-bottom: 20rpx; + position: relative; + color: #fff; + padding: 0 40rpx; +} + + +.get-coupon .coupon-item image{ + position: absolute; + z-index: -1; + left: 0; + top:0; + width: 100%; +} + +.get-coupon .coupon-item:last-child{ + margin-bottom: 0; +} + +.get-coupon .use-now{ + display: block; + text-align: center; + height: 60rpx; + line-height: 60rpx; + color: #ff4544; + background: #fff; + border-radius: 6rpx; + margin: 15rpx 0; + font-size: 9pt; +} + +.fs-sm{ + font-size: 9pt; +} + +.p-10{ + padding: 10rpx 10rpx; +} + +.px-24{ + padding-left: 24rpx; + padding-right: 24rpx; +} + +.float-icon{ + position: fixed; + z-index: 20; + right: 50rpx; + bottom: 50rpx; +} + +.bar-bottom~.float-icon{ + bottom: 150rpx; +} + +.float-icon .float-icon-btn{ + display: block; + padding: 0; + margin: 0; + border: none; + background: none; +} +.float-icon .float-icon-btn:after{ + display: none; +} + +.float-icon .float-icon-btn:active{ + opacity: .75; +} + +.float-icon .float-icon-btn image{ + width: 100rpx; + height: 100rpx; + display: block; +} + +.w-100{ + width: 100%; +} + +.h-100{ + height: 100%; +} + +.wh-100{ + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/area-picker/area-picker.js b/area-picker/area-picker.js new file mode 100644 index 0000000..f07d0f3 --- /dev/null +++ b/area-picker/area-picker.js @@ -0,0 +1,93 @@ +var area_picker = { + page: null, + data: null, + old_value: [0, 0, 0], + result: [null, null, null], + init: function (args) { + var picker = this; + picker.page = args.page; + picker.data = args.data; + picker.page.showAreaPicker = function () { + picker.page.setData({ + area_picker_show: true, + }); + }; + picker.page.hideAreaPicker = function () { + picker.page.setData({ + area_picker_show: false, + }); + }; + + var city_list = picker.data[0].list || []; + var district_list = []; + if (city_list.length > 0) + district_list = city_list[0].list || []; + + picker.page.setData({ + area_picker_province_list: picker.data, + area_picker_city_list: city_list, + area_picker_district_list: district_list, + }); + + picker.result[0] = picker.data[0] || null; + if (picker.data[0].list) { + picker.result[1] = picker.data[0].list[0]; + if (picker.data[0].list[0].list) + picker.result[2] = picker.data[0].list[0].list[0]; + } + + picker.page.areaPickerChange = function (e) { + var province_index = e.detail.value[0]; + var city_index = e.detail.value[1]; + var district_index = e.detail.value[2]; + if (e.detail.value[0] != picker.old_value[0]) {//省份改变 + city_index = 0; + district_index = 0; + city_list = picker.data[province_index].list; + district_list = city_list[0].list; + + picker.page.setData({ + area_picker_city_list: [], + area_picker_district_list: [], + }); + setTimeout(function () { + picker.page.setData({ + area_picker_city_list: city_list, + area_picker_district_list: district_list, + }); + }, 0); + + } + if (e.detail.value[1] != picker.old_value[1]) {//城市改变 + district_index = 0; + district_list = picker.data[province_index].list[city_index].list; + picker.page.setData({ + area_picker_district_list: [], + }); + setTimeout(function () { + picker.page.setData({ + area_picker_district_list: district_list, + }); + }, 0); + } + if (e.detail.value[2] != picker.old_value[2]) {//区改变 + } + picker.old_value = [province_index, city_index, district_index]; + picker.result[0] = picker.data[province_index]; + picker.result[1] = picker.data[province_index].list[city_index]; + picker.result[2] = picker.data[province_index].list[city_index].list[district_index]; + }; + + + picker.page.areaPickerConfirm = function () { + picker.page.hideAreaPicker(); + // console.log(1); + // console.log(picker.page); + // console.log(typeof picker.page.onAreaPickerConfirm); + if (picker.page.onAreaPickerConfirm) + picker.page.onAreaPickerConfirm(picker.result); + }; + return this; + }, +}; +module.exports = area_picker; \ No newline at end of file diff --git a/area-picker/area-picker.wxml b/area-picker/area-picker.wxml new file mode 100644 index 0000000..f7e72bc --- /dev/null +++ b/area-picker/area-picker.wxml @@ -0,0 +1,26 @@ + + + + + + + + 取消 + 确认 + + + + + {{item.name}} + + + {{item.name}} + + + {{item.name}} + + + + + + \ No newline at end of file diff --git a/area-picker/area-picker.wxss b/area-picker/area-picker.wxss new file mode 100644 index 0000000..92c9773 --- /dev/null +++ b/area-picker/area-picker.wxss @@ -0,0 +1,66 @@ +.area-picker{ + position: fixed; + z-index: 10000; + left: 0; + top:0; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + transform: translateY(100%); + transition: 250ms opacity; + opacity: 0; + background: rgba(0,0,0,.3); +} + +.area-picker.active{ + transform: translateY(0); + opacity: 1; +} + +.area-picker .area-picker-bg{ + flex-grow: 1; + position: relative; +} +.area-picker .area-picker-bg > scroll-view{ + left: 0; + top:0; + height: 100%; + width: 100%; + position: absolute; +} +.area-picker .area-picker-body{ + flex-grow: 0; + height: 600rpx; + background: #fff; + transform: translateY(100%); + transition: 250ms transform; + position: relative; +} + +.area-picker.active .area-picker-body{ + transform: translateY(0); +} +.area-picker .area-picker-body > scroll-view{ + left: 0; + top:0; + height: 100%; + width: 100%; + position: absolute; +} +.area-picker .area-picker-cancel, +.area-picker .area-picker-confirm { + display: inline-block; + padding: 24rpx; + color: #888; +} + +.area-picker .area-picker-confirm{ + float: right; + color: #00aa00; +} + +.area-picker .area-picker-row{ + width: 100%; + height: 500rpx; +} \ No newline at end of file diff --git a/commons/copyright/copyright.wxml b/commons/copyright/copyright.wxml new file mode 100644 index 0000000..85bcdb4 --- /dev/null +++ b/commons/copyright/copyright.wxml @@ -0,0 +1,12 @@ + + + + + + + + + {{store.copyright}} + + + \ No newline at end of file diff --git a/commons/float-icon/float-icon.wxml b/commons/float-icon/float-icon.wxml new file mode 100644 index 0000000..bae8654 --- /dev/null +++ b/commons/float-icon/float-icon.wxml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/commons/get-coupon/get-coupon.wxml b/commons/get-coupon/get-coupon.wxml new file mode 100644 index 0000000..239dc17 --- /dev/null +++ b/commons/get-coupon/get-coupon.wxml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + {{item.sub_price}} + + + 满{{item.min_price}}元可用 + + + 立即使用 + {{item.desc}} + + + + + + + + + \ No newline at end of file diff --git a/lib/city.js b/lib/city.js new file mode 100644 index 0000000..d3cb9dc --- /dev/null +++ b/lib/city.js @@ -0,0 +1,5698 @@ +module.exports = { + "all": { + "":[ + { + "id": "000000", + "name": "全国", + "fullname": "全国", + "pinyin": [ + "an", + "shan" + ], + "location": { + "lat": 41.10777, + "lng": 122.9946 + }, + "cidx": [ + 411, + 417 + ] + } + ], + "A": [ + { + "id": "210300", + "name": "鞍山", + "fullname": "鞍山市", + "pinyin": [ + "an", + "shan" + ], + "location": { + "lat": 41.10777, + "lng": 122.9946 + }, + "cidx": [ + 411, + 417 + ] + }, + { + "id": "340800", + "name": "安庆", + "fullname": "安庆市", + "pinyin": [ + "an", + "qing" + ], + "location": { + "lat": 30.54294, + "lng": 117.06354 + }, + "cidx": [ + 907, + 916 + ] + }, + { + "id": "410500", + "name": "安阳", + "fullname": "安阳市", + "pinyin": [ + "an", + "yang" + ], + "location": { + "lat": 36.09771, + "lng": 114.3931 + }, + "cidx": [ + 1335, + 1343 + ] + }, + { + "id": "520400", + "name": "安顺", + "fullname": "安顺市", + "pinyin": [ + "an", + "shun" + ], + "location": { + "lat": 26.25367, + "lng": 105.9462 + }, + "cidx": [ + 2125, + 2130 + ] + }, + { + "id": "610900", + "name": "安康", + "fullname": "安康市", + "pinyin": [ + "an", + "kang" + ], + "location": { + "lat": 32.68486, + "lng": 109.02932 + }, + "cidx": [ + 2478, + 2487 + ] + }, + { + "id": "659002", + "name": "阿拉尔", + "fullname": "阿拉尔市", + "pinyin": [ + "a", + "la", + "er" + ], + "location": { + "lat": 40.54798, + "lng": 81.28067 + } + } + ], + "B": [ + { + "id": "110000", + "name": "北京", + "fullname": "北京市", + "pinyin": [ + "bei", + "jing" + ], + "location": { + "lat": 39.90469, + "lng": 116.40717 + }, + "cidx": [ + 0, + 15 + ] + }, + { + "id": "130600", + "name": "保定", + "fullname": "保定市", + "pinyin": [ + "bao", + "ding" + ], + "location": { + "lat": 38.87396, + "lng": 115.46459 + }, + "cidx": [ + 79, + 101 + ] + }, + { + "id": "150200", + "name": "包头", + "fullname": "包头市", + "pinyin": [ + "bao", + "tou" + ], + "location": { + "lat": 40.65781, + "lng": 109.84021 + }, + "cidx": [ + 294, + 302 + ] + }, + { + "id": "150800", + "name": "巴彦淖尔", + "fullname": "巴彦淖尔市", + "pinyin": [ + "ba", + "yan", + "nao", + "er" + ], + "location": { + "lat": 40.74317, + "lng": 107.38773 + }, + "cidx": [ + 349, + 355 + ] + }, + { + "id": "210500", + "name": "本溪", + "fullname": "本溪市", + "pinyin": [ + "ben", + "xi" + ], + "location": { + "lat": 41.29413, + "lng": 123.76686 + }, + "cidx": [ + 425, + 430 + ] + }, + { + "id": "220600", + "name": "白山", + "fullname": "白山市", + "pinyin": [ + "bai", + "shan" + ], + "location": { + "lat": 41.9408, + "lng": 126.42443 + }, + "cidx": [ + 524, + 529 + ] + }, + { + "id": "220800", + "name": "白城", + "fullname": "白城市", + "pinyin": [ + "bai", + "cheng" + ], + "location": { + "lat": 45.6196, + "lng": 122.83871 + }, + "cidx": [ + 535, + 539 + ] + }, + { + "id": "340300", + "name": "蚌埠", + "fullname": "蚌埠市", + "pinyin": [ + "beng", + "bu" + ], + "location": { + "lat": 32.91548, + "lng": 117.38932 + }, + "cidx": [ + 879, + 885 + ] + }, + { + "id": "341600", + "name": "亳州", + "fullname": "亳州市", + "pinyin": [ + "bo", + "zhou" + ], + "location": { + "lat": 33.84461, + "lng": 115.77931 + }, + "cidx": [ + 952, + 955 + ] + }, + { + "id": "371600", + "name": "滨州", + "fullname": "滨州市", + "pinyin": [ + "bin", + "zhou" + ], + "location": { + "lat": 37.38211, + "lng": 117.97279 + }, + "cidx": [ + 1273, + 1279 + ] + }, + { + "id": "450500", + "name": "北海", + "fullname": "北海市", + "pinyin": [ + "bei", + "hai" + ], + "location": { + "lat": 21.48112, + "lng": 109.12008 + }, + "cidx": [ + 1837, + 1840 + ] + }, + { + "id": "451000", + "name": "百色", + "fullname": "百色市", + "pinyin": [ + "bai", + "se" + ], + "location": { + "lat": 23.90216, + "lng": 106.61838 + }, + "cidx": [ + 1861, + 1872 + ] + }, + { + "id": "511900", + "name": "巴中", + "fullname": "巴中市", + "pinyin": [ + "ba", + "zhong" + ], + "location": { + "lat": 31.86715, + "lng": 106.74733 + }, + "cidx": [ + 2041, + 2045 + ] + }, + { + "id": "520500", + "name": "毕节", + "fullname": "毕节市", + "pinyin": [ + "bi", + "jie" + ], + "location": { + "lat": 27.29847, + "lng": 105.30504 + }, + "cidx": [ + 2131, + 2138 + ] + }, + { + "id": "530500", + "name": "保山", + "fullname": "保山市", + "pinyin": [ + "bao", + "shan" + ], + "location": { + "lat": 25.11205, + "lng": 99.16181 + }, + "cidx": [ + 2217, + 2221 + ] + }, + { + "id": "610300", + "name": "宝鸡", + "fullname": "宝鸡市", + "pinyin": [ + "bao", + "ji" + ], + "location": { + "lat": 34.36194, + "lng": 107.23732 + }, + "cidx": [ + 2405, + 2416 + ] + }, + { + "id": "620400", + "name": "白银", + "fullname": "白银市", + "pinyin": [ + "bai", + "yin" + ], + "location": { + "lat": 36.5447, + "lng": 104.13773 + }, + "cidx": [ + 2507, + 2511 + ] + }, + { + "id": "659005", + "name": "北屯", + "fullname": "北屯市", + "pinyin": [ + "bei", + "tun" + ], + "location": { + "lat": 47.36327, + "lng": 87.80014 + } + } + ], + "C": [ + { + "id": "500000", + "name": "重庆", + "fullname": "重庆市", + "pinyin": [ + "chong", + "qing" + ], + "location": { + "lat": 29.56471, + "lng": 106.55073 + }, + "cidx": [ + 300, + 337 + ] + }, + { + "id": "130800", + "name": "承德", + "fullname": "承德市", + "pinyin": [ + "cheng", + "de" + ], + "location": { + "lat": 40.9515, + "lng": 117.9634 + }, + "cidx": [ + 118, + 128 + ] + }, + { + "id": "130900", + "name": "沧州", + "fullname": "沧州市", + "pinyin": [ + "cang", + "zhou" + ], + "location": { + "lat": 38.30441, + "lng": 116.83869 + }, + "cidx": [ + 129, + 144 + ] + }, + { + "id": "140400", + "name": "长治", + "fullname": "长治市", + "pinyin": [ + "chang", + "zhi" + ], + "location": { + "lat": 36.19581, + "lng": 113.11649 + }, + "cidx": [ + 192, + 204 + ] + }, + { + "id": "150400", + "name": "赤峰", + "fullname": "赤峰市", + "pinyin": [ + "chi", + "feng" + ], + "location": { + "lat": 42.2586, + "lng": 118.88894 + }, + "cidx": [ + 306, + 317 + ] + }, + { + "id": "211300", + "name": "朝阳", + "fullname": "朝阳市", + "pinyin": [ + "chao", + "yang" + ], + "location": { + "lat": 41.57347, + "lng": 120.4508 + }, + "cidx": [ + 475, + 481 + ] + }, + { + "id": "220100", + "name": "长春", + "fullname": "长春市", + "pinyin": [ + "chang", + "chun" + ], + "location": { + "lat": 43.81602, + "lng": 125.32357 + }, + "cidx": [ + 488, + 497 + ] + }, + { + "id": "320400", + "name": "常州", + "fullname": "常州市", + "pinyin": [ + "chang", + "zhou" + ], + "location": { + "lat": 31.81072, + "lng": 119.97365 + }, + "cidx": [ + 705, + 710 + ] + }, + { + "id": "341100", + "name": "滁州", + "fullname": "滁州市", + "pinyin": [ + "chu", + "zhou" + ], + "location": { + "lat": 32.30181, + "lng": 118.31683 + }, + "cidx": [ + 924, + 931 + ] + }, + { + "id": "341700", + "name": "池州", + "fullname": "池州市", + "pinyin": [ + "chi", + "zhou" + ], + "location": { + "lat": 30.66469, + "lng": 117.49142 + }, + "cidx": [ + 956, + 959 + ] + }, + { + "id": "430100", + "name": "长沙", + "fullname": "长沙市", + "pinyin": [ + "chang", + "sha" + ], + "location": { + "lat": 28.22778, + "lng": 112.93886 + }, + "cidx": [ + 1545, + 1553 + ] + }, + { + "id": "430700", + "name": "常德", + "fullname": "常德市", + "pinyin": [ + "chang", + "de" + ], + "location": { + "lat": 29.03158, + "lng": 111.69854 + }, + "cidx": [ + 1601, + 1609 + ] + }, + { + "id": "431000", + "name": "郴州", + "fullname": "郴州市", + "pinyin": [ + "chen", + "zhou" + ], + "location": { + "lat": 25.77063, + "lng": 113.01485 + }, + "cidx": [ + 1620, + 1630 + ] + }, + { + "id": "445100", + "name": "潮州", + "fullname": "潮州市", + "pinyin": [ + "chao", + "zhou" + ], + "location": { + "lat": 23.6567, + "lng": 116.62296 + }, + "cidx": [ + 1778, + 1780 + ] + }, + { + "id": "451400", + "name": "崇左", + "fullname": "崇左市", + "pinyin": [ + "chong", + "zuo" + ], + "location": { + "lat": 22.37895, + "lng": 107.36485 + }, + "cidx": [ + 1895, + 1901 + ] + }, + { + "id": "510100", + "name": "成都", + "fullname": "成都市", + "pinyin": [ + "cheng", + "du" + ], + "location": { + "lat": 30.5702, + "lng": 104.06476 + }, + "cidx": [ + 1914, + 1933 + ] + }, + { + "id": "540300", + "name": "昌都", + "fullname": "昌都市", + "pinyin": [ + "chang", + "du" + ], + "location": { + "lat": 31.14073, + "lng": 97.17225 + }, + "cidx": [ + 2340, + 2350 + ] + } + ], + "D": [ + { + "id": "139001", + "name": "定州", + "fullname": "定州市", + "pinyin": [ + "ding", + "zhou" + ], + "location": { + "lat": 38.51626, + "lng": 114.99025 + } + }, + { + "id": "140200", + "name": "大同", + "fullname": "大同市", + "pinyin": [ + "da", + "tong" + ], + "location": { + "lat": 40.07637, + "lng": 113.30001 + }, + "cidx": [ + 176, + 186 + ] + }, + { + "id": "210200", + "name": "大连", + "fullname": "大连市", + "pinyin": [ + "da", + "lian" + ], + "location": { + "lat": 38.91369, + "lng": 121.61476 + }, + "cidx": [ + 401, + 410 + ] + }, + { + "id": "210600", + "name": "丹东", + "fullname": "丹东市", + "pinyin": [ + "dan", + "dong" + ], + "location": { + "lat": 39.9998, + "lng": 124.35601 + }, + "cidx": [ + 431, + 436 + ] + }, + { + "id": "230600", + "name": "大庆", + "fullname": "大庆市", + "pinyin": [ + "da", + "qing" + ], + "location": { + "lat": 46.58758, + "lng": 125.10307 + }, + "cidx": [ + 607, + 615 + ] + }, + { + "id": "370500", + "name": "东营", + "fullname": "东营市", + "pinyin": [ + "dong", + "ying" + ], + "location": { + "lat": 37.43365, + "lng": 118.67466 + }, + "cidx": [ + 1186, + 1190 + ] + }, + { + "id": "371400", + "name": "德州", + "fullname": "德州市", + "pinyin": [ + "de", + "zhou" + ], + "location": { + "lat": 37.4355, + "lng": 116.35927 + }, + "cidx": [ + 1254, + 1264 + ] + }, + { + "id": "441900", + "name": "东莞", + "fullname": "东莞市", + "pinyin": [ + "dong", + "guan" + ], + "location": { + "lat": 23.02067, + "lng": 113.75179 + }, + "cidx": [ + 1776, + 1776 + ] + }, + { + "id": "460400", + "name": "儋州", + "fullname": "儋州市", + "pinyin": [ + "dan", + "zhou" + ], + "location": { + "lat": 19.52093, + "lng": 109.58069 + }, + "cidx": [ + 1913, + 1913 + ] + }, + { + "id": "469007", + "name": "东方", + "fullname": "东方市", + "pinyin": [ + "dong", + "fang" + ], + "location": { + "lat": 19.09614, + "lng": 108.65367 + } + }, + { + "id": "510600", + "name": "德阳", + "fullname": "德阳市", + "pinyin": [ + "de", + "yang" + ], + "location": { + "lat": 31.12679, + "lng": 104.3979 + }, + "cidx": [ + 1952, + 1957 + ] + }, + { + "id": "511700", + "name": "达州", + "fullname": "达州市", + "pinyin": [ + "da", + "zhou" + ], + "location": { + "lat": 31.20864, + "lng": 107.46791 + }, + "cidx": [ + 2026, + 2032 + ] + }, + { + "id": "621100", + "name": "定西", + "fullname": "定西市", + "pinyin": [ + "ding", + "xi" + ], + "location": { + "lat": 35.58113, + "lng": 104.62524 + }, + "cidx": [ + 2551, + 2557 + ] + } + ], + "E": [ + { + "id": "150600", + "name": "鄂尔多斯", + "fullname": "鄂尔多斯市", + "pinyin": [ + "e", + "er", + "duo", + "si" + ], + "location": { + "lat": 39.60845, + "lng": 109.78087 + }, + "cidx": [ + 326, + 334 + ] + }, + { + "id": "420700", + "name": "鄂州", + "fullname": "鄂州市", + "pinyin": [ + "e", + "zhou" + ], + "location": { + "lat": 30.39085, + "lng": 114.89495 + }, + "cidx": [ + 1495, + 1497 + ] + } + ], + "F": [ + { + "id": "210400", + "name": "抚顺", + "fullname": "抚顺市", + "pinyin": [ + "fu", + "shun" + ], + "location": { + "lat": 41.87971, + "lng": 123.95722 + }, + "cidx": [ + 418, + 424 + ] + }, + { + "id": "210900", + "name": "阜新", + "fullname": "阜新市", + "pinyin": [ + "fu", + "xin" + ], + "location": { + "lat": 42.02166, + "lng": 121.67011 + }, + "cidx": [ + 450, + 456 + ] + }, + { + "id": "341200", + "name": "阜阳", + "fullname": "阜阳市", + "pinyin": [ + "fu", + "yang" + ], + "location": { + "lat": 32.88963, + "lng": 115.81495 + }, + "cidx": [ + 932, + 939 + ] + }, + { + "id": "350100", + "name": "福州", + "fullname": "福州市", + "pinyin": [ + "fu", + "zhou" + ], + "location": { + "lat": 26.07421, + "lng": 119.29647 + }, + "cidx": [ + 967, + 979 + ] + }, + { + "id": "361000", + "name": "抚州", + "fullname": "抚州市", + "pinyin": [ + "fu", + "zhou" + ], + "location": { + "lat": 27.94781, + "lng": 116.35809 + }, + "cidx": [ + 1129, + 1139 + ] + }, + { + "id": "440600", + "name": "佛山", + "fullname": "佛山市", + "pinyin": [ + "fo", + "shan" + ], + "location": { + "lat": 23.02185, + "lng": 113.12192 + }, + "cidx": [ + 1707, + 1711 + ] + }, + { + "id": "450600", + "name": "防城港", + "fullname": "防城港市", + "pinyin": [ + "fang", + "cheng", + "gang" + ], + "location": { + "lat": 21.68713, + "lng": 108.35472 + }, + "cidx": [ + 1841, + 1844 + ] + } + ], + "G": [ + { + "id": "360700", + "name": "赣州", + "fullname": "赣州市", + "pinyin": [ + "gan", + "zhou" + ], + "location": { + "lat": 25.83109, + "lng": 114.93476 + }, + "cidx": [ + 1088, + 1105 + ] + }, + { + "id": "440100", + "name": "广州", + "fullname": "广州市", + "pinyin": [ + "guang", + "zhou" + ], + "location": { + "lat": 23.12908, + "lng": 113.26436 + }, + "cidx": [ + 1667, + 1677 + ] + }, + { + "id": "450300", + "name": "桂林", + "fullname": "桂林市", + "pinyin": [ + "gui", + "lin" + ], + "location": { + "lat": 25.27361, + "lng": 110.29002 + }, + "cidx": [ + 1813, + 1829 + ] + }, + { + "id": "450800", + "name": "贵港", + "fullname": "贵港市", + "pinyin": [ + "gui", + "gang" + ], + "location": { + "lat": 23.11306, + "lng": 109.59764 + }, + "cidx": [ + 1849, + 1853 + ] + }, + { + "id": "510800", + "name": "广元", + "fullname": "广元市", + "pinyin": [ + "guang", + "yuan" + ], + "location": { + "lat": 32.43549, + "lng": 105.84357 + }, + "cidx": [ + 1967, + 1973 + ] + }, + { + "id": "511600", + "name": "广安", + "fullname": "广安市", + "pinyin": [ + "guang", + "an" + ], + "location": { + "lat": 30.45596, + "lng": 106.63322 + }, + "cidx": [ + 2020, + 2025 + ] + }, + { + "id": "520100", + "name": "贵阳", + "fullname": "贵阳市", + "pinyin": [ + "gui", + "yang" + ], + "location": { + "lat": 26.64702, + "lng": 106.63024 + }, + "cidx": [ + 2097, + 2106 + ] + }, + { + "id": "640400", + "name": "固原", + "fullname": "固原市", + "pinyin": [ + "gu", + "yuan" + ], + "location": { + "lat": 36.0158, + "lng": 106.24259 + }, + "cidx": [ + 2643, + 2647 + ] + }, + { + "id": "710200", + "name": "高雄", + "fullname": "高雄市", + "pinyin": [ + "gao", + "xiong" + ], + "location": { + "lat": 22.630576, + "lng": 120.306839 + }, + "cidx": [ + 2759, + 2796 + ] + } + ], + "H": [ + { + "id": "130400", + "name": "邯郸", + "fullname": "邯郸市", + "pinyin": [ + "han", + "dan" + ], + "location": { + "lat": 36.62556, + "lng": 114.53918 + }, + "cidx": [ + 42, + 59 + ] + }, + { + "id": "131100", + "name": "衡水", + "fullname": "衡水市", + "pinyin": [ + "heng", + "shui" + ], + "location": { + "lat": 37.73886, + "lng": 115.67054 + }, + "cidx": [ + 155, + 165 + ] + }, + { + "id": "150100", + "name": "呼和浩特", + "fullname": "呼和浩特市", + "pinyin": [ + "hu", + "he", + "hao", + "te" + ], + "location": { + "lat": 40.84149, + "lng": 111.75199 + }, + "cidx": [ + 285, + 293 + ] + }, + { + "id": "150700", + "name": "呼伦贝尔", + "fullname": "呼伦贝尔市", + "pinyin": [ + "hu", + "lun", + "bei", + "er" + ], + "location": { + "lat": 49.21163, + "lng": 119.76584 + }, + "cidx": [ + 335, + 348 + ] + }, + { + "id": "211400", + "name": "葫芦岛", + "fullname": "葫芦岛市", + "pinyin": [ + "hu", + "lu", + "dao" + ], + "location": { + "lat": 40.711, + "lng": 120.83699 + }, + "cidx": [ + 482, + 487 + ] + }, + { + "id": "230100", + "name": "哈尔滨", + "fullname": "哈尔滨市", + "pinyin": [ + "ha", + "er", + "bin" + ], + "location": { + "lat": 45.80216, + "lng": 126.5358 + }, + "cidx": [ + 548, + 565 + ] + }, + { + "id": "230400", + "name": "鹤岗", + "fullname": "鹤岗市", + "pinyin": [ + "he", + "gang" + ], + "location": { + "lat": 47.34989, + "lng": 130.29785 + }, + "cidx": [ + 591, + 598 + ] + }, + { + "id": "231100", + "name": "黑河", + "fullname": "黑河市", + "pinyin": [ + "hei", + "he" + ], + "location": { + "lat": 50.24523, + "lng": 127.52852 + }, + "cidx": [ + 657, + 662 + ] + }, + { + "id": "320800", + "name": "淮安", + "fullname": "淮安市", + "pinyin": [ + "huai", + "an" + ], + "location": { + "lat": 33.61016, + "lng": 119.01595 + }, + "cidx": [ + 734, + 740 + ] + }, + { + "id": "330100", + "name": "杭州", + "fullname": "杭州市", + "pinyin": [ + "hang", + "zhou" + ], + "location": { + "lat": 30.27415, + "lng": 120.15515 + }, + "cidx": [ + 773, + 785 + ] + }, + { + "id": "330500", + "name": "湖州", + "fullname": "湖州市", + "pinyin": [ + "hu", + "zhou" + ], + "location": { + "lat": 30.89305, + "lng": 120.08805 + }, + "cidx": [ + 814, + 818 + ] + }, + { + "id": "340100", + "name": "合肥", + "fullname": "合肥市", + "pinyin": [ + "he", + "fei" + ], + "location": { + "lat": 31.82057, + "lng": 117.22901 + }, + "cidx": [ + 862, + 870 + ] + }, + { + "id": "340400", + "name": "淮南", + "fullname": "淮南市", + "pinyin": [ + "huai", + "nan" + ], + "location": { + "lat": 32.62549, + "lng": 116.9998 + }, + "cidx": [ + 886, + 892 + ] + }, + { + "id": "340600", + "name": "淮北", + "fullname": "淮北市", + "pinyin": [ + "huai", + "bei" + ], + "location": { + "lat": 33.95479, + "lng": 116.79834 + }, + "cidx": [ + 899, + 902 + ] + }, + { + "id": "341000", + "name": "黄山", + "fullname": "黄山市", + "pinyin": [ + "huang", + "shan" + ], + "location": { + "lat": 29.71517, + "lng": 118.33866 + }, + "cidx": [ + 917, + 923 + ] + }, + { + "id": "371700", + "name": "菏泽", + "fullname": "菏泽市", + "pinyin": [ + "he", + "ze" + ], + "location": { + "lat": 35.23363, + "lng": 115.48115 + }, + "cidx": [ + 1280, + 1288 + ] + }, + { + "id": "410600", + "name": "鹤壁", + "fullname": "鹤壁市", + "pinyin": [ + "he", + "bi" + ], + "location": { + "lat": 35.747, + "lng": 114.29745 + }, + "cidx": [ + 1344, + 1348 + ] + }, + { + "id": "420200", + "name": "黄石", + "fullname": "黄石市", + "pinyin": [ + "huang", + "shi" + ], + "location": { + "lat": 30.19953, + "lng": 115.0389 + }, + "cidx": [ + 1459, + 1464 + ] + }, + { + "id": "421100", + "name": "黄冈", + "fullname": "黄冈市", + "pinyin": [ + "huang", + "gang" + ], + "location": { + "lat": 30.45347, + "lng": 114.87238 + }, + "cidx": [ + 1518, + 1527 + ] + }, + { + "id": "430400", + "name": "衡阳", + "fullname": "衡阳市", + "pinyin": [ + "heng", + "yang" + ], + "location": { + "lat": 26.89324, + "lng": 112.57195 + }, + "cidx": [ + 1568, + 1579 + ] + }, + { + "id": "431200", + "name": "怀化", + "fullname": "怀化市", + "pinyin": [ + "huai", + "hua" + ], + "location": { + "lat": 27.56974, + "lng": 110.0016 + }, + "cidx": [ + 1642, + 1653 + ] + }, + { + "id": "441300", + "name": "惠州", + "fullname": "惠州市", + "pinyin": [ + "hui", + "zhou" + ], + "location": { + "lat": 23.11075, + "lng": 114.41679 + }, + "cidx": [ + 1741, + 1745 + ] + }, + { + "id": "441600", + "name": "河源", + "fullname": "河源市", + "pinyin": [ + "he", + "yuan" + ], + "location": { + "lat": 23.74365, + "lng": 114.70065 + }, + "cidx": [ + 1758, + 1763 + ] + }, + { + "id": "451100", + "name": "贺州", + "fullname": "贺州市", + "pinyin": [ + "he", + "zhou" + ], + "location": { + "lat": 24.40346, + "lng": 111.56655 + }, + "cidx": [ + 1873, + 1877 + ] + }, + { + "id": "451200", + "name": "河池", + "fullname": "河池市", + "pinyin": [ + "he", + "chi" + ], + "location": { + "lat": 24.69291, + "lng": 108.0854 + }, + "cidx": [ + 1878, + 1888 + ] + }, + { + "id": "460100", + "name": "海口", + "fullname": "海口市", + "pinyin": [ + "hai", + "kou" + ], + "location": { + "lat": 20.04422, + "lng": 110.19989 + }, + "cidx": [ + 1902, + 1905 + ] + }, + { + "id": "610700", + "name": "汉中", + "fullname": "汉中市", + "pinyin": [ + "han", + "zhong" + ], + "location": { + "lat": 33.06761, + "lng": 107.02377 + }, + "cidx": [ + 2455, + 2465 + ] + }, + { + "id": "630200", + "name": "海东", + "fullname": "海东市", + "pinyin": [ + "hai", + "dong" + ], + "location": { + "lat": 36.48209, + "lng": 102.40173 + }, + "cidx": [ + 2590, + 2595 + ] + }, + { + "id": "650500", + "name": "哈密", + "fullname": "哈密市", + "pinyin": [ + "ha", + "mi" + ], + "location": { + "lat": 42.81855, + "lng": 93.51538 + }, + "cidx": [ + 2666, + 2668 + ] + } + ], + "J": [ + { + "id": "140500", + "name": "晋城", + "fullname": "晋城市", + "pinyin": [ + "jin", + "cheng" + ], + "location": { + "lat": 35.49039, + "lng": 112.85113 + }, + "cidx": [ + 205, + 210 + ] + }, + { + "id": "140700", + "name": "晋中", + "fullname": "晋中市", + "pinyin": [ + "jin", + "zhong" + ], + "location": { + "lat": 37.68702, + "lng": 112.75278 + }, + "cidx": [ + 217, + 227 + ] + }, + { + "id": "210700", + "name": "锦州", + "fullname": "锦州市", + "pinyin": [ + "jin", + "zhou" + ], + "location": { + "lat": 41.09515, + "lng": 121.12703 + }, + "cidx": [ + 437, + 443 + ] + }, + { + "id": "220200", + "name": "吉林", + "fullname": "吉林市", + "pinyin": [ + "ji", + "lin" + ], + "location": { + "lat": 43.83784, + "lng": 126.54944 + }, + "cidx": [ + 498, + 506 + ] + }, + { + "id": "230300", + "name": "鸡西", + "fullname": "鸡西市", + "pinyin": [ + "ji", + "xi" + ], + "location": { + "lat": 45.29524, + "lng": 130.96954 + }, + "cidx": [ + 582, + 590 + ] + }, + { + "id": "230800", + "name": "佳木斯", + "fullname": "佳木斯市", + "pinyin": [ + "jia", + "mu", + "si" + ], + "location": { + "lat": 46.79977, + "lng": 130.31882 + }, + "cidx": [ + 633, + 642 + ] + }, + { + "id": "330400", + "name": "嘉兴", + "fullname": "嘉兴市", + "pinyin": [ + "jia", + "xing" + ], + "location": { + "lat": 30.74501, + "lng": 120.7555 + }, + "cidx": [ + 807, + 813 + ] + }, + { + "id": "330700", + "name": "金华", + "fullname": "金华市", + "pinyin": [ + "jin", + "hua" + ], + "location": { + "lat": 29.07812, + "lng": 119.64759 + }, + "cidx": [ + 825, + 833 + ] + }, + { + "id": "360200", + "name": "景德镇", + "fullname": "景德镇市", + "pinyin": [ + "jing", + "de", + "zhen" + ], + "location": { + "lat": 29.26869, + "lng": 117.17839 + }, + "cidx": [ + 1061, + 1064 + ] + }, + { + "id": "360400", + "name": "九江", + "fullname": "九江市", + "pinyin": [ + "jiu", + "jiang" + ], + "location": { + "lat": 29.70548, + "lng": 116.00146 + }, + "cidx": [ + 1070, + 1082 + ] + }, + { + "id": "360800", + "name": "吉安", + "fullname": "吉安市", + "pinyin": [ + "ji", + "an" + ], + "location": { + "lat": 27.11382, + "lng": 114.99376 + }, + "cidx": [ + 1106, + 1118 + ] + }, + { + "id": "370100", + "name": "济南", + "fullname": "济南市", + "pinyin": [ + "ji", + "nan" + ], + "location": { + "lat": 36.65184, + "lng": 117.12009 + }, + "cidx": [ + 1152, + 1161 + ] + }, + { + "id": "370800", + "name": "济宁", + "fullname": "济宁市", + "pinyin": [ + "ji", + "ning" + ], + "location": { + "lat": 35.41459, + "lng": 116.58724 + }, + "cidx": [ + 1215, + 1225 + ] + }, + { + "id": "410800", + "name": "焦作", + "fullname": "焦作市", + "pinyin": [ + "jiao", + "zuo" + ], + "location": { + "lat": 35.21563, + "lng": 113.24201 + }, + "cidx": [ + 1361, + 1370 + ] + }, + { + "id": "419001", + "name": "济源", + "fullname": "济源市", + "pinyin": [ + "ji", + "yuan" + ], + "location": { + "lat": 35.06707, + "lng": 112.60273 + } + }, + { + "id": "420800", + "name": "荆门", + "fullname": "荆门市", + "pinyin": [ + "jing", + "men" + ], + "location": { + "lat": 31.03546, + "lng": 112.19945 + }, + "cidx": [ + 1498, + 1502 + ] + }, + { + "id": "421000", + "name": "荆州", + "fullname": "荆州市", + "pinyin": [ + "jing", + "zhou" + ], + "location": { + "lat": 30.33479, + "lng": 112.24069 + }, + "cidx": [ + 1510, + 1517 + ] + }, + { + "id": "440700", + "name": "江门", + "fullname": "江门市", + "pinyin": [ + "jiang", + "men" + ], + "location": { + "lat": 22.57865, + "lng": 113.08161 + }, + "cidx": [ + 1712, + 1718 + ] + }, + { + "id": "445200", + "name": "揭阳", + "fullname": "揭阳市", + "pinyin": [ + "jie", + "yang" + ], + "location": { + "lat": 23.54972, + "lng": 116.37271 + }, + "cidx": [ + 1781, + 1785 + ] + }, + { + "id": "620200", + "name": "嘉峪关", + "fullname": "嘉峪关市", + "pinyin": [ + "jia", + "yu", + "guan" + ], + "location": { + "lat": 39.77201, + "lng": 98.29011 + }, + "cidx": [ + 2503, + 2504 + ] + }, + { + "id": "620300", + "name": "金昌", + "fullname": "金昌市", + "pinyin": [ + "jin", + "chang" + ], + "location": { + "lat": 38.52006, + "lng": 102.18759 + }, + "cidx": [ + 2505, + 2506 + ] + }, + { + "id": "620900", + "name": "酒泉", + "fullname": "酒泉市", + "pinyin": [ + "jiu", + "quan" + ], + "location": { + "lat": 39.73255, + "lng": 98.49394 + }, + "cidx": [ + 2536, + 2542 + ] + }, + { + "id": "710700", + "name": "基隆", + "fullname": "基隆市", + "pinyin": [ + "ji", + "long" + ], + "location": { + "lat": 25.122105, + "lng": 121.741526 + }, + "cidx": [ + 2876, + 2882 + ] + }, + { + "id": "710900", + "name": "嘉义", + "fullname": "嘉义市", + "pinyin": [ + "jia", + "yi" + ], + "location": { + "lat": 23.485079, + "lng": 120.472462 + }, + "cidx": [ + 2886, + 2887 + ] + } + ], + "K": [ + { + "id": "410200", + "name": "开封", + "fullname": "开封市", + "pinyin": [ + "kai", + "feng" + ], + "location": { + "lat": 34.79726, + "lng": 114.30731 + }, + "cidx": [ + 1301, + 1309 + ] + }, + { + "id": "530100", + "name": "昆明", + "fullname": "昆明市", + "pinyin": [ + "kun", + "ming" + ], + "location": { + "lat": 24.87966, + "lng": 102.83322 + }, + "cidx": [ + 2185, + 2198 + ] + }, + { + "id": "650200", + "name": "克拉玛依", + "fullname": "克拉玛依市", + "pinyin": [ + "ke", + "la", + "ma", + "yi" + ], + "location": { + "lat": 45.57999, + "lng": 84.88927 + }, + "cidx": [ + 2659, + 2662 + ] + }, + { + "id": "659008", + "name": "可克达拉", + "fullname": "可克达拉市", + "pinyin": [ + "ke", + "ke", + "da", + "la" + ], + "location": { + "lat": 43.94799, + "lng": 81.04476 + } + }, + { + "id": "659009", + "name": "昆玉", + "fullname": "昆玉市", + "pinyin": [ + "kun", + "yu" + ], + "location": { + "lat": 37.20948, + "lng": 79.29133 + } + } + ], + "L": [ + { + "id": "131000", + "name": "廊坊", + "fullname": "廊坊市", + "pinyin": [ + "lang", + "fang" + ], + "location": { + "lat": 39.53775, + "lng": 116.68376 + }, + "cidx": [ + 145, + 154 + ] + }, + { + "id": "141000", + "name": "临汾", + "fullname": "临汾市", + "pinyin": [ + "lin", + "fen" + ], + "location": { + "lat": 36.08822, + "lng": 111.51962 + }, + "cidx": [ + 255, + 271 + ] + }, + { + "id": "141100", + "name": "吕梁", + "fullname": "吕梁市", + "pinyin": [ + "lv", + "liang" + ], + "location": { + "lat": 37.51934, + "lng": 111.14165 + }, + "cidx": [ + 272, + 284 + ] + }, + { + "id": "211000", + "name": "辽阳", + "fullname": "辽阳市", + "pinyin": [ + "liao", + "yang" + ], + "location": { + "lat": 41.26809, + "lng": 123.23736 + }, + "cidx": [ + 457, + 463 + ] + }, + { + "id": "220400", + "name": "辽源", + "fullname": "辽源市", + "pinyin": [ + "liao", + "yuan" + ], + "location": { + "lat": 42.88805, + "lng": 125.14368 + }, + "cidx": [ + 513, + 516 + ] + }, + { + "id": "320700", + "name": "连云港", + "fullname": "连云港市", + "pinyin": [ + "lian", + "yun", + "gang" + ], + "location": { + "lat": 34.59669, + "lng": 119.22295 + }, + "cidx": [ + 728, + 733 + ] + }, + { + "id": "331100", + "name": "丽水", + "fullname": "丽水市", + "pinyin": [ + "li", + "shui" + ], + "location": { + "lat": 28.4672, + "lng": 119.92293 + }, + "cidx": [ + 853, + 861 + ] + }, + { + "id": "341500", + "name": "六安", + "fullname": "六安市", + "pinyin": [ + "liu", + "an" + ], + "location": { + "lat": 31.73488, + "lng": 116.52324 + }, + "cidx": [ + 945, + 951 + ] + }, + { + "id": "350800", + "name": "龙岩", + "fullname": "龙岩市", + "pinyin": [ + "long", + "yan" + ], + "location": { + "lat": 25.07504, + "lng": 117.01722 + }, + "cidx": [ + 1036, + 1042 + ] + }, + { + "id": "371200", + "name": "莱芜", + "fullname": "莱芜市", + "pinyin": [ + "lai", + "wu" + ], + "location": { + "lat": 36.21359, + "lng": 117.67667 + }, + "cidx": [ + 1240, + 1241 + ] + }, + { + "id": "371300", + "name": "临沂", + "fullname": "临沂市", + "pinyin": [ + "lin", + "yi" + ], + "location": { + "lat": 35.10465, + "lng": 118.35646 + }, + "cidx": [ + 1242, + 1253 + ] + }, + { + "id": "371500", + "name": "聊城", + "fullname": "聊城市", + "pinyin": [ + "liao", + "cheng" + ], + "location": { + "lat": 36.45702, + "lng": 115.98549 + }, + "cidx": [ + 1265, + 1272 + ] + }, + { + "id": "410300", + "name": "洛阳", + "fullname": "洛阳市", + "pinyin": [ + "luo", + "yang" + ], + "location": { + "lat": 34.61812, + "lng": 112.45361 + }, + "cidx": [ + 1310, + 1324 + ] + }, + { + "id": "411100", + "name": "漯河", + "fullname": "漯河市", + "pinyin": [ + "luo", + "he" + ], + "location": { + "lat": 33.58149, + "lng": 114.01681 + }, + "cidx": [ + 1383, + 1387 + ] + }, + { + "id": "431300", + "name": "娄底", + "fullname": "娄底市", + "pinyin": [ + "lou", + "di" + ], + "location": { + "lat": 27.69728, + "lng": 111.99458 + }, + "cidx": [ + 1654, + 1658 + ] + }, + { + "id": "450200", + "name": "柳州", + "fullname": "柳州市", + "pinyin": [ + "liu", + "zhou" + ], + "location": { + "lat": 24.32543, + "lng": 109.41552 + }, + "cidx": [ + 1803, + 1812 + ] + }, + { + "id": "451300", + "name": "来宾", + "fullname": "来宾市", + "pinyin": [ + "lai", + "bin" + ], + "location": { + "lat": 23.7521, + "lng": 109.22238 + }, + "cidx": [ + 1889, + 1894 + ] + }, + { + "id": "510500", + "name": "泸州", + "fullname": "泸州市", + "pinyin": [ + "lu", + "zhou" + ], + "location": { + "lat": 28.8717, + "lng": 105.44257 + }, + "cidx": [ + 1945, + 1951 + ] + }, + { + "id": "511100", + "name": "乐山", + "fullname": "乐山市", + "pinyin": [ + "le", + "shan" + ], + "location": { + "lat": 29.55221, + "lng": 103.76539 + }, + "cidx": [ + 1984, + 1994 + ] + }, + { + "id": "520200", + "name": "六盘水", + "fullname": "六盘水市", + "pinyin": [ + "liu", + "pan", + "shui" + ], + "location": { + "lat": 26.59336, + "lng": 104.83023 + }, + "cidx": [ + 2107, + 2110 + ] + }, + { + "id": "530700", + "name": "丽江", + "fullname": "丽江市", + "pinyin": [ + "li", + "jiang" + ], + "location": { + "lat": 26.85648, + "lng": 100.2271 + }, + "cidx": [ + 2233, + 2237 + ] + }, + { + "id": "530900", + "name": "临沧", + "fullname": "临沧市", + "pinyin": [ + "lin", + "cang" + ], + "location": { + "lat": 23.88426, + "lng": 100.08884 + }, + "cidx": [ + 2248, + 2255 + ] + }, + { + "id": "540100", + "name": "拉萨", + "fullname": "拉萨市", + "pinyin": [ + "la", + "sa" + ], + "location": { + "lat": 29.64415, + "lng": 91.1145 + }, + "cidx": [ + 2314, + 2321 + ] + }, + { + "id": "540400", + "name": "林芝", + "fullname": "林芝市", + "pinyin": [ + "lin", + "zhi" + ], + "location": { + "lat": 29.64895, + "lng": 94.36155 + }, + "cidx": [ + 2351, + 2357 + ] + }, + { + "id": "620100", + "name": "兰州", + "fullname": "兰州市", + "pinyin": [ + "lan", + "zhou" + ], + "location": { + "lat": 36.06138, + "lng": 103.83417 + }, + "cidx": [ + 2495, + 2502 + ] + }, + { + "id": "621200", + "name": "陇南", + "fullname": "陇南市", + "pinyin": [ + "long", + "nan" + ], + "location": { + "lat": 33.401, + "lng": 104.92166 + }, + "cidx": [ + 2558, + 2566 + ] + } + ], + "M": [ + { + "id": "231000", + "name": "牡丹江", + "fullname": "牡丹江市", + "pinyin": [ + "mu", + "dan", + "jiang" + ], + "location": { + "lat": 44.55269, + "lng": 129.63244 + }, + "cidx": [ + 647, + 656 + ] + }, + { + "id": "340500", + "name": "马鞍山", + "fullname": "马鞍山市", + "pinyin": [ + "ma", + "an", + "shan" + ], + "location": { + "lat": 31.67067, + "lng": 118.50611 + }, + "cidx": [ + 893, + 898 + ] + }, + { + "id": "440900", + "name": "茂名", + "fullname": "茂名市", + "pinyin": [ + "mao", + "ming" + ], + "location": { + "lat": 21.66329, + "lng": 110.92523 + }, + "cidx": [ + 1728, + 1732 + ] + }, + { + "id": "441400", + "name": "梅州", + "fullname": "梅州市", + "pinyin": [ + "mei", + "zhou" + ], + "location": { + "lat": 24.28844, + "lng": 116.12264 + }, + "cidx": [ + 1746, + 1753 + ] + }, + { + "id": "510700", + "name": "绵阳", + "fullname": "绵阳市", + "pinyin": [ + "mian", + "yang" + ], + "location": { + "lat": 31.46751, + "lng": 104.6796 + }, + "cidx": [ + 1958, + 1966 + ] + }, + { + "id": "511400", + "name": "眉山", + "fullname": "眉山市", + "pinyin": [ + "mei", + "shan" + ], + "location": { + "lat": 30.07563, + "lng": 103.84851 + }, + "cidx": [ + 2004, + 2009 + ] + } + ], + "N": [ + { + "id": "320100", + "name": "南京", + "fullname": "南京市", + "pinyin": [ + "nan", + "jing" + ], + "location": { + "lat": 32.05838, + "lng": 118.79647 + }, + "cidx": [ + 677, + 687 + ] + }, + { + "id": "320600", + "name": "南通", + "fullname": "南通市", + "pinyin": [ + "nan", + "tong" + ], + "location": { + "lat": 31.97958, + "lng": 120.89371 + }, + "cidx": [ + 720, + 727 + ] + }, + { + "id": "330200", + "name": "宁波", + "fullname": "宁波市", + "pinyin": [ + "ning", + "bo" + ], + "location": { + "lat": 29.87386, + "lng": 121.55027 + }, + "cidx": [ + 786, + 795 + ] + }, + { + "id": "350700", + "name": "南平", + "fullname": "南平市", + "pinyin": [ + "nan", + "ping" + ], + "location": { + "lat": 27.33175, + "lng": 118.12043 + }, + "cidx": [ + 1026, + 1035 + ] + }, + { + "id": "350900", + "name": "宁德", + "fullname": "宁德市", + "pinyin": [ + "ning", + "de" + ], + "location": { + "lat": 26.66571, + "lng": 119.54819 + }, + "cidx": [ + 1043, + 1051 + ] + }, + { + "id": "360100", + "name": "南昌", + "fullname": "南昌市", + "pinyin": [ + "nan", + "chang" + ], + "location": { + "lat": 28.68202, + "lng": 115.85794 + }, + "cidx": [ + 1052, + 1060 + ] + }, + { + "id": "411300", + "name": "南阳", + "fullname": "南阳市", + "pinyin": [ + "nan", + "yang" + ], + "location": { + "lat": 32.99073, + "lng": 112.52851 + }, + "cidx": [ + 1394, + 1406 + ] + }, + { + "id": "450100", + "name": "南宁", + "fullname": "南宁市", + "pinyin": [ + "nan", + "ning" + ], + "location": { + "lat": 22.81673, + "lng": 108.3669 + }, + "cidx": [ + 1791, + 1802 + ] + }, + { + "id": "511000", + "name": "内江", + "fullname": "内江市", + "pinyin": [ + "nei", + "jiang" + ], + "location": { + "lat": 29.58015, + "lng": 105.05844 + }, + "cidx": [ + 1979, + 1983 + ] + }, + { + "id": "511300", + "name": "南充", + "fullname": "南充市", + "pinyin": [ + "nan", + "chong" + ], + "location": { + "lat": 30.83731, + "lng": 106.11073 + }, + "cidx": [ + 1995, + 2003 + ] + } + ], + "P": [ + { + "id": "211100", + "name": "盘锦", + "fullname": "盘锦市", + "pinyin": [ + "pan", + "jin" + ], + "location": { + "lat": 41.11996, + "lng": 122.07078 + }, + "cidx": [ + 464, + 467 + ] + }, + { + "id": "350300", + "name": "莆田", + "fullname": "莆田市", + "pinyin": [ + "pu", + "tian" + ], + "location": { + "lat": 25.454, + "lng": 119.00771 + }, + "cidx": [ + 986, + 990 + ] + }, + { + "id": "360300", + "name": "萍乡", + "fullname": "萍乡市", + "pinyin": [ + "ping", + "xiang" + ], + "location": { + "lat": 27.62289, + "lng": 113.85427 + }, + "cidx": [ + 1065, + 1069 + ] + }, + { + "id": "410400", + "name": "平顶山", + "fullname": "平顶山市", + "pinyin": [ + "ping", + "ding", + "shan" + ], + "location": { + "lat": 33.76609, + "lng": 113.19241 + }, + "cidx": [ + 1325, + 1334 + ] + }, + { + "id": "410900", + "name": "濮阳", + "fullname": "濮阳市", + "pinyin": [ + "pu", + "yang" + ], + "location": { + "lat": 35.76189, + "lng": 115.02932 + }, + "cidx": [ + 1371, + 1376 + ] + }, + { + "id": "510400", + "name": "攀枝花", + "fullname": "攀枝花市", + "pinyin": [ + "pan", + "zhi", + "hua" + ], + "location": { + "lat": 26.58228, + "lng": 101.71872 + }, + "cidx": [ + 1940, + 1944 + ] + }, + { + "id": "530800", + "name": "普洱", + "fullname": "普洱市", + "pinyin": [ + "pu", + "er" + ], + "location": { + "lat": 22.82521, + "lng": 100.96624 + }, + "cidx": [ + 2238, + 2247 + ] + }, + { + "id": "620800", + "name": "平凉", + "fullname": "平凉市", + "pinyin": [ + "ping", + "liang" + ], + "location": { + "lat": 35.54303, + "lng": 106.6653 + }, + "cidx": [ + 2529, + 2535 + ] + } + ], + "Q": [ + { + "id": "130300", + "name": "秦皇岛", + "fullname": "秦皇岛市", + "pinyin": [ + "qin", + "huang", + "dao" + ], + "location": { + "lat": 39.93545, + "lng": 119.59964 + }, + "cidx": [ + 35, + 41 + ] + }, + { + "id": "230200", + "name": "齐齐哈尔", + "fullname": "齐齐哈尔市", + "pinyin": [ + "qi", + "qi", + "ha", + "er" + ], + "location": { + "lat": 47.35431, + "lng": 123.91796 + }, + "cidx": [ + 566, + 581 + ] + }, + { + "id": "230900", + "name": "七台河", + "fullname": "七台河市", + "pinyin": [ + "qi", + "tai", + "he" + ], + "location": { + "lat": 45.77065, + "lng": 131.00306 + }, + "cidx": [ + 643, + 646 + ] + }, + { + "id": "330800", + "name": "衢州", + "fullname": "衢州市", + "pinyin": [ + "qu", + "zhou" + ], + "location": { + "lat": 28.93592, + "lng": 118.87419 + }, + "cidx": [ + 834, + 839 + ] + }, + { + "id": "350500", + "name": "泉州", + "fullname": "泉州市", + "pinyin": [ + "quan", + "zhou" + ], + "location": { + "lat": 24.87389, + "lng": 118.67587 + }, + "cidx": [ + 1003, + 1014 + ] + }, + { + "id": "370200", + "name": "青岛", + "fullname": "青岛市", + "pinyin": [ + "qing", + "dao" + ], + "location": { + "lat": 36.06623, + "lng": 120.38299 + }, + "cidx": [ + 1162, + 1171 + ] + }, + { + "id": "429005", + "name": "潜江", + "fullname": "潜江市", + "pinyin": [ + "qian", + "jiang" + ], + "location": { + "lat": 30.40147, + "lng": 112.8993 + } + }, + { + "id": "441800", + "name": "清远", + "fullname": "清远市", + "pinyin": [ + "qing", + "yuan" + ], + "location": { + "lat": 23.68201, + "lng": 113.05615 + }, + "cidx": [ + 1768, + 1775 + ] + }, + { + "id": "450700", + "name": "钦州", + "fullname": "钦州市", + "pinyin": [ + "qin", + "zhou" + ], + "location": { + "lat": 21.9797, + "lng": 108.65431 + }, + "cidx": [ + 1845, + 1848 + ] + }, + { + "id": "469002", + "name": "琼海", + "fullname": "琼海市", + "pinyin": [ + "qiong", + "hai" + ], + "location": { + "lat": 19.25838, + "lng": 110.47464 + } + }, + { + "id": "530300", + "name": "曲靖", + "fullname": "曲靖市", + "pinyin": [ + "qu", + "jing" + ], + "location": { + "lat": 25.49002, + "lng": 103.79625 + }, + "cidx": [ + 2199, + 2207 + ] + }, + { + "id": "621000", + "name": "庆阳", + "fullname": "庆阳市", + "pinyin": [ + "qing", + "yang" + ], + "location": { + "lat": 35.70978, + "lng": 107.64292 + }, + "cidx": [ + 2543, + 2550 + ] + } + ], + "R": [ + { + "id": "371100", + "name": "日照", + "fullname": "日照市", + "pinyin": [ + "ri", + "zhao" + ], + "location": { + "lat": 35.41646, + "lng": 119.52719 + }, + "cidx": [ + 1236, + 1239 + ] + }, + { + "id": "540200", + "name": "日喀则", + "fullname": "日喀则市", + "pinyin": [ + "ri", + "ka", + "ze" + ], + "location": { + "lat": 29.26705, + "lng": 88.88116 + }, + "cidx": [ + 2322, + 2339 + ] + } + ], + "S": [ + { + "id": "310000", + "name": "上海", + "fullname": "上海市", + "pinyin": [ + "shang", + "hai" + ], + "location": { + "lat": 31.23037, + "lng": 121.4737 + }, + "cidx": [ + 104, + 119 + ] + }, + { + "id": "130100", + "name": "石家庄", + "fullname": "石家庄市", + "pinyin": [ + "shi", + "jia", + "zhuang" + ], + "location": { + "lat": 38.04276, + "lng": 114.5143 + }, + "cidx": [ + 0, + 20 + ] + }, + { + "id": "140600", + "name": "朔州", + "fullname": "朔州市", + "pinyin": [ + "shuo", + "zhou" + ], + "location": { + "lat": 39.33155, + "lng": 112.43286 + }, + "cidx": [ + 211, + 216 + ] + }, + { + "id": "210100", + "name": "沈阳", + "fullname": "沈阳市", + "pinyin": [ + "shen", + "yang" + ], + "location": { + "lat": 41.67718, + "lng": 123.4631 + }, + "cidx": [ + 388, + 400 + ] + }, + { + "id": "220300", + "name": "四平", + "fullname": "四平市", + "pinyin": [ + "si", + "ping" + ], + "location": { + "lat": 43.16646, + "lng": 124.35036 + }, + "cidx": [ + 507, + 512 + ] + }, + { + "id": "220700", + "name": "松原", + "fullname": "松原市", + "pinyin": [ + "song", + "yuan" + ], + "location": { + "lat": 45.1411, + "lng": 124.82515 + }, + "cidx": [ + 530, + 534 + ] + }, + { + "id": "230500", + "name": "双鸭山", + "fullname": "双鸭山市", + "pinyin": [ + "shuang", + "ya", + "shan" + ], + "location": { + "lat": 46.64658, + "lng": 131.1591 + }, + "cidx": [ + 599, + 606 + ] + }, + { + "id": "231200", + "name": "绥化", + "fullname": "绥化市", + "pinyin": [ + "sui", + "hua" + ], + "location": { + "lat": 46.65246, + "lng": 126.96932 + }, + "cidx": [ + 663, + 672 + ] + }, + { + "id": "320500", + "name": "苏州", + "fullname": "苏州市", + "pinyin": [ + "su", + "zhou" + ], + "location": { + "lat": 31.29834, + "lng": 120.58319 + }, + "cidx": [ + 711, + 719 + ] + }, + { + "id": "321300", + "name": "宿迁", + "fullname": "宿迁市", + "pinyin": [ + "su", + "qian" + ], + "location": { + "lat": 33.96193, + "lng": 118.27549 + }, + "cidx": [ + 768, + 772 + ] + }, + { + "id": "330600", + "name": "绍兴", + "fullname": "绍兴市", + "pinyin": [ + "shao", + "xing" + ], + "location": { + "lat": 30.03033, + "lng": 120.5802 + }, + "cidx": [ + 819, + 824 + ] + }, + { + "id": "341300", + "name": "宿州", + "fullname": "宿州市", + "pinyin": [ + "su", + "zhou" + ], + "location": { + "lat": 33.64614, + "lng": 116.96391 + }, + "cidx": [ + 940, + 944 + ] + }, + { + "id": "350400", + "name": "三明", + "fullname": "三明市", + "pinyin": [ + "san", + "ming" + ], + "location": { + "lat": 26.26385, + "lng": 117.63922 + }, + "cidx": [ + 991, + 1002 + ] + }, + { + "id": "361100", + "name": "上饶", + "fullname": "上饶市", + "pinyin": [ + "shang", + "rao" + ], + "location": { + "lat": 28.45463, + "lng": 117.94357 + }, + "cidx": [ + 1140, + 1151 + ] + }, + { + "id": "411200", + "name": "三门峡", + "fullname": "三门峡市", + "pinyin": [ + "san", + "men", + "xia" + ], + "location": { + "lat": 34.77261, + "lng": 111.2003 + }, + "cidx": [ + 1388, + 1393 + ] + }, + { + "id": "411400", + "name": "商丘", + "fullname": "商丘市", + "pinyin": [ + "shang", + "qiu" + ], + "location": { + "lat": 34.41427, + "lng": 115.65635 + }, + "cidx": [ + 1407, + 1415 + ] + }, + { + "id": "420300", + "name": "十堰", + "fullname": "十堰市", + "pinyin": [ + "shi", + "yan" + ], + "location": { + "lat": 32.62918, + "lng": 110.79801 + }, + "cidx": [ + 1465, + 1472 + ] + }, + { + "id": "421300", + "name": "随州", + "fullname": "随州市", + "pinyin": [ + "sui", + "zhou" + ], + "location": { + "lat": 31.69013, + "lng": 113.38262 + }, + "cidx": [ + 1534, + 1536 + ] + }, + { + "id": "430500", + "name": "邵阳", + "fullname": "邵阳市", + "pinyin": [ + "shao", + "yang" + ], + "location": { + "lat": 27.2389, + "lng": 111.4677 + }, + "cidx": [ + 1580, + 1591 + ] + }, + { + "id": "440200", + "name": "韶关", + "fullname": "韶关市", + "pinyin": [ + "shao", + "guan" + ], + "location": { + "lat": 24.81039, + "lng": 113.59723 + }, + "cidx": [ + 1678, + 1687 + ] + }, + { + "id": "440300", + "name": "深圳", + "fullname": "深圳市", + "pinyin": [ + "shen", + "zhen" + ], + "location": { + "lat": 22.54286, + "lng": 114.05956 + }, + "cidx": [ + 1688, + 1695 + ] + }, + { + "id": "440500", + "name": "汕头", + "fullname": "汕头市", + "pinyin": [ + "shan", + "tou" + ], + "location": { + "lat": 23.3535, + "lng": 116.68221 + }, + "cidx": [ + 1700, + 1706 + ] + }, + { + "id": "441500", + "name": "汕尾", + "fullname": "汕尾市", + "pinyin": [ + "shan", + "wei" + ], + "location": { + "lat": 22.78566, + "lng": 115.37514 + }, + "cidx": [ + 1754, + 1757 + ] + }, + { + "id": "460200", + "name": "三亚", + "fullname": "三亚市", + "pinyin": [ + "san", + "ya" + ], + "location": { + "lat": 18.25248, + "lng": 109.51209 + }, + "cidx": [ + 1906, + 1909 + ] + }, + { + "id": "460300", + "name": "三沙", + "fullname": "三沙市", + "pinyin": [ + "san", + "sha" + ], + "location": { + "lat": 16.83272, + "lng": 112.33356 + }, + "cidx": [ + 1910, + 1912 + ] + }, + { + "id": "510900", + "name": "遂宁", + "fullname": "遂宁市", + "pinyin": [ + "sui", + "ning" + ], + "location": { + "lat": 30.53286, + "lng": 105.59273 + }, + "cidx": [ + 1974, + 1978 + ] + }, + { + "id": "540500", + "name": "山南", + "fullname": "山南市", + "pinyin": [ + "shan", + "nan" + ], + "location": { + "lat": 29.23705, + "lng": 91.77313 + }, + "cidx": [ + 2358, + 2369 + ] + }, + { + "id": "611000", + "name": "商洛", + "fullname": "商洛市", + "pinyin": [ + "shang", + "luo" + ], + "location": { + "lat": 33.87036, + "lng": 109.94041 + }, + "cidx": [ + 2488, + 2494 + ] + }, + { + "id": "640200", + "name": "石嘴山", + "fullname": "石嘴山市", + "pinyin": [ + "shi", + "zui", + "shan" + ], + "location": { + "lat": 38.9841, + "lng": 106.38418 + }, + "cidx": [ + 2635, + 2637 + ] + }, + { + "id": "659001", + "name": "石河子", + "fullname": "石河子市", + "pinyin": [ + "shi", + "he", + "zi" + ], + "location": { + "lat": 44.30653, + "lng": 86.07893 + } + }, + { + "id": "659007", + "name": "双河", + "fullname": "双河市", + "pinyin": [ + "shuang", + "he" + ], + "location": { + "lat": 44.84418, + "lng": 82.35501 + } + } + ], + "T": [ + { + "id": "120000", + "name": "天津", + "fullname": "天津市", + "pinyin": [ + "tian", + "jin" + ], + "location": { + "lat": 39.0851, + "lng": 117.19937 + }, + "cidx": [ + 16, + 31 + ] + }, + { + "id": "130200", + "name": "唐山", + "fullname": "唐山市", + "pinyin": [ + "tang", + "shan" + ], + "location": { + "lat": 39.63048, + "lng": 118.18058 + }, + "cidx": [ + 21, + 34 + ] + }, + { + "id": "140100", + "name": "太原", + "fullname": "太原市", + "pinyin": [ + "tai", + "yuan" + ], + "location": { + "lat": 37.87059, + "lng": 112.55067 + }, + "cidx": [ + 166, + 175 + ] + }, + { + "id": "150500", + "name": "通辽", + "fullname": "通辽市", + "pinyin": [ + "tong", + "liao" + ], + "location": { + "lat": 43.65247, + "lng": 122.24469 + }, + "cidx": [ + 318, + 325 + ] + }, + { + "id": "211200", + "name": "铁岭", + "fullname": "铁岭市", + "pinyin": [ + "tie", + "ling" + ], + "location": { + "lat": 42.2862, + "lng": 123.84241 + }, + "cidx": [ + 468, + 474 + ] + }, + { + "id": "220500", + "name": "通化", + "fullname": "通化市", + "pinyin": [ + "tong", + "hua" + ], + "location": { + "lat": 41.72829, + "lng": 125.9399 + }, + "cidx": [ + 517, + 523 + ] + }, + { + "id": "321200", + "name": "泰州", + "fullname": "泰州市", + "pinyin": [ + "tai", + "zhou" + ], + "location": { + "lat": 32.45546, + "lng": 119.92554 + }, + "cidx": [ + 762, + 767 + ] + }, + { + "id": "331000", + "name": "台州", + "fullname": "台州市", + "pinyin": [ + "tai", + "zhou" + ], + "location": { + "lat": 28.65611, + "lng": 121.42056 + }, + "cidx": [ + 844, + 852 + ] + }, + { + "id": "340700", + "name": "铜陵", + "fullname": "铜陵市", + "pinyin": [ + "tong", + "ling" + ], + "location": { + "lat": 30.94486, + "lng": 117.81232 + }, + "cidx": [ + 903, + 906 + ] + }, + { + "id": "370900", + "name": "泰安", + "fullname": "泰安市", + "pinyin": [ + "tai", + "an" + ], + "location": { + "lat": 36.19994, + "lng": 117.0884 + }, + "cidx": [ + 1226, + 1231 + ] + }, + { + "id": "429006", + "name": "天门", + "fullname": "天门市", + "pinyin": [ + "tian", + "men" + ], + "location": { + "lat": 30.66339, + "lng": 113.16614 + } + }, + { + "id": "520600", + "name": "铜仁", + "fullname": "铜仁市", + "pinyin": [ + "tong", + "ren" + ], + "location": { + "lat": 27.69066, + "lng": 109.18099 + }, + "cidx": [ + 2139, + 2148 + ] + }, + { + "id": "610200", + "name": "铜川", + "fullname": "铜川市", + "pinyin": [ + "tong", + "chuan" + ], + "location": { + "lat": 34.89673, + "lng": 108.94515 + }, + "cidx": [ + 2401, + 2404 + ] + }, + { + "id": "620500", + "name": "天水", + "fullname": "天水市", + "pinyin": [ + "tian", + "shui" + ], + "location": { + "lat": 34.58085, + "lng": 105.72486 + }, + "cidx": [ + 2512, + 2518 + ] + }, + { + "id": "650400", + "name": "吐鲁番", + "fullname": "吐鲁番市", + "pinyin": [ + "tu", + "lu", + "fan" + ], + "location": { + "lat": 42.9513, + "lng": 89.18954 + }, + "cidx": [ + 2663, + 2665 + ] + }, + { + "id": "659003", + "name": "图木舒克", + "fullname": "图木舒克市", + "pinyin": [ + "tu", + "mu", + "shu", + "ke" + ], + "location": { + "lat": 39.86495, + "lng": 79.06902 + } + }, + { + "id": "659006", + "name": "铁门关", + "fullname": "铁门关市", + "pinyin": [ + "tie", + "men", + "guan" + ], + "location": { + "lat": 41.86868, + "lng": 85.67583 + } + }, + { + "id": "710100", + "name": "台北", + "fullname": "台北市", + "pinyin": [ + "tai", + "bei" + ], + "location": { + "lat": 25.030724, + "lng": 121.520076 + }, + "cidx": [ + 2747, + 2758 + ] + }, + { + "id": "710300", + "name": "台南", + "fullname": "台南市", + "pinyin": [ + "tai", + "nan" + ], + "location": { + "lat": 22.998601, + "lng": 120.187817 + }, + "cidx": [ + 2797, + 2833 + ] + }, + { + "id": "710400", + "name": "台中", + "fullname": "台中市", + "pinyin": [ + "tai", + "zhong" + ], + "location": { + "lat": 24.143171, + "lng": 120.679882 + }, + "cidx": [ + 2834, + 2862 + ] + }, + { + "id": "711400", + "name": "桃园", + "fullname": "桃园市", + "pinyin": [ + "tao", + "yuan" + ], + "location": { + "lat": 24.982757, + "lng": 121.213608 + }, + "cidx": [ + 2942, + 2954 + ] + } + ], + "W": [ + { + "id": "150300", + "name": "乌海", + "fullname": "乌海市", + "pinyin": [ + "wu", + "hai" + ], + "location": { + "lat": 39.65384, + "lng": 106.79546 + }, + "cidx": [ + 303, + 305 + ] + }, + { + "id": "150900", + "name": "乌兰察布", + "fullname": "乌兰察布市", + "pinyin": [ + "wu", + "lan", + "cha", + "bu" + ], + "location": { + "lat": 40.99391, + "lng": 113.13376 + }, + "cidx": [ + 356, + 366 + ] + }, + { + "id": "320200", + "name": "无锡", + "fullname": "无锡市", + "pinyin": [ + "wu", + "xi" + ], + "location": { + "lat": 31.49099, + "lng": 120.31237 + }, + "cidx": [ + 688, + 694 + ] + }, + { + "id": "330300", + "name": "温州", + "fullname": "温州市", + "pinyin": [ + "wen", + "zhou" + ], + "location": { + "lat": 27.99492, + "lng": 120.69939 + }, + "cidx": [ + 796, + 806 + ] + }, + { + "id": "340200", + "name": "芜湖", + "fullname": "芜湖市", + "pinyin": [ + "wu", + "hu" + ], + "location": { + "lat": 31.35246, + "lng": 118.43313 + }, + "cidx": [ + 871, + 878 + ] + }, + { + "id": "370700", + "name": "潍坊", + "fullname": "潍坊市", + "pinyin": [ + "wei", + "fang" + ], + "location": { + "lat": 36.70686, + "lng": 119.16176 + }, + "cidx": [ + 1203, + 1214 + ] + }, + { + "id": "371000", + "name": "威海", + "fullname": "威海市", + "pinyin": [ + "wei", + "hai" + ], + "location": { + "lat": 37.51348, + "lng": 122.12171 + }, + "cidx": [ + 1232, + 1235 + ] + }, + { + "id": "420100", + "name": "武汉", + "fullname": "武汉市", + "pinyin": [ + "wu", + "han" + ], + "location": { + "lat": 30.59276, + "lng": 114.30525 + }, + "cidx": [ + 1446, + 1458 + ] + }, + { + "id": "450400", + "name": "梧州", + "fullname": "梧州市", + "pinyin": [ + "wu", + "zhou" + ], + "location": { + "lat": 23.47691, + "lng": 111.27917 + }, + "cidx": [ + 1830, + 1836 + ] + }, + { + "id": "469001", + "name": "五指山", + "fullname": "五指山市", + "pinyin": [ + "wu", + "zhi", + "shan" + ], + "location": { + "lat": 18.77515, + "lng": 109.51696 + } + }, + { + "id": "469005", + "name": "文昌", + "fullname": "文昌市", + "pinyin": [ + "wen", + "chang" + ], + "location": { + "lat": 19.54329, + "lng": 110.79774 + } + }, + { + "id": "469006", + "name": "万宁", + "fullname": "万宁市", + "pinyin": [ + "wan", + "ning" + ], + "location": { + "lat": 18.79532, + "lng": 110.38975 + } + }, + { + "id": "610500", + "name": "渭南", + "fullname": "渭南市", + "pinyin": [ + "wei", + "nan" + ], + "location": { + "lat": 34.49997, + "lng": 109.51015 + }, + "cidx": [ + 2431, + 2441 + ] + }, + { + "id": "620600", + "name": "武威", + "fullname": "武威市", + "pinyin": [ + "wu", + "wei" + ], + "location": { + "lat": 37.9282, + "lng": 102.63797 + }, + "cidx": [ + 2519, + 2522 + ] + }, + { + "id": "640300", + "name": "吴忠", + "fullname": "吴忠市", + "pinyin": [ + "wu", + "zhong" + ], + "location": { + "lat": 37.99755, + "lng": 106.19879 + }, + "cidx": [ + 2638, + 2642 + ] + }, + { + "id": "650100", + "name": "乌鲁木齐", + "fullname": "乌鲁木齐市", + "pinyin": [ + "wu", + "lu", + "mu", + "qi" + ], + "location": { + "lat": 43.82663, + "lng": 87.61688 + }, + "cidx": [ + 2651, + 2658 + ] + }, + { + "id": "659004", + "name": "五家渠", + "fullname": "五家渠市", + "pinyin": [ + "wu", + "jia", + "qu" + ], + "location": { + "lat": 44.16799, + "lng": 87.54017 + } + } + ], + "X": [ + { + "id": "130500", + "name": "邢台", + "fullname": "邢台市", + "pinyin": [ + "xing", + "tai" + ], + "location": { + "lat": 37.07055, + "lng": 114.50443 + }, + "cidx": [ + 60, + 78 + ] + }, + { + "id": "139002", + "name": "辛集", + "fullname": "辛集市", + "pinyin": [ + "xin", + "ji" + ], + "location": { + "lat": 37.94316, + "lng": 115.21792 + } + }, + { + "id": "140900", + "name": "忻州", + "fullname": "忻州市", + "pinyin": [ + "xin", + "zhou" + ], + "location": { + "lat": 38.4167, + "lng": 112.73418 + }, + "cidx": [ + 241, + 254 + ] + }, + { + "id": "320300", + "name": "徐州", + "fullname": "徐州市", + "pinyin": [ + "xu", + "zhou" + ], + "location": { + "lat": 34.2044, + "lng": 117.28577 + }, + "cidx": [ + 695, + 704 + ] + }, + { + "id": "341800", + "name": "宣城", + "fullname": "宣城市", + "pinyin": [ + "xuan", + "cheng" + ], + "location": { + "lat": 30.94078, + "lng": 118.75866 + }, + "cidx": [ + 960, + 966 + ] + }, + { + "id": "350200", + "name": "厦门", + "fullname": "厦门市", + "pinyin": [ + "xia", + "men" + ], + "location": { + "lat": 24.47951, + "lng": 118.08948 + }, + "cidx": [ + 980, + 985 + ] + }, + { + "id": "360500", + "name": "新余", + "fullname": "新余市", + "pinyin": [ + "xin", + "yu" + ], + "location": { + "lat": 27.81776, + "lng": 114.91713 + }, + "cidx": [ + 1083, + 1084 + ] + }, + { + "id": "410700", + "name": "新乡", + "fullname": "新乡市", + "pinyin": [ + "xin", + "xiang" + ], + "location": { + "lat": 35.30323, + "lng": 113.92675 + }, + "cidx": [ + 1349, + 1360 + ] + }, + { + "id": "411000", + "name": "许昌", + "fullname": "许昌市", + "pinyin": [ + "xu", + "chang" + ], + "location": { + "lat": 34.0357, + "lng": 113.85233 + }, + "cidx": [ + 1377, + 1382 + ] + }, + { + "id": "411500", + "name": "信阳", + "fullname": "信阳市", + "pinyin": [ + "xin", + "yang" + ], + "location": { + "lat": 32.14714, + "lng": 114.09279 + }, + "cidx": [ + 1416, + 1425 + ] + }, + { + "id": "420600", + "name": "襄阳", + "fullname": "襄阳市", + "pinyin": [ + "xiang", + "yang" + ], + "location": { + "lat": 32.009, + "lng": 112.12255 + }, + "cidx": [ + 1486, + 1494 + ] + }, + { + "id": "420900", + "name": "孝感", + "fullname": "孝感市", + "pinyin": [ + "xiao", + "gan" + ], + "location": { + "lat": 30.92483, + "lng": 113.91645 + }, + "cidx": [ + 1503, + 1509 + ] + }, + { + "id": "421200", + "name": "咸宁", + "fullname": "咸宁市", + "pinyin": [ + "xian", + "ning" + ], + "location": { + "lat": 29.84126, + "lng": 114.32245 + }, + "cidx": [ + 1528, + 1533 + ] + }, + { + "id": "429004", + "name": "仙桃", + "fullname": "仙桃市", + "pinyin": [ + "xian", + "tao" + ], + "location": { + "lat": 30.36251, + "lng": 113.4545 + } + }, + { + "id": "430300", + "name": "湘潭", + "fullname": "湘潭市", + "pinyin": [ + "xiang", + "tan" + ], + "location": { + "lat": 27.82975, + "lng": 112.94411 + }, + "cidx": [ + 1563, + 1567 + ] + }, + { + "id": "610100", + "name": "西安", + "fullname": "西安市", + "pinyin": [ + "xi", + "an" + ], + "location": { + "lat": 34.34127, + "lng": 108.93984 + }, + "cidx": [ + 2388, + 2400 + ] + }, + { + "id": "610400", + "name": "咸阳", + "fullname": "咸阳市", + "pinyin": [ + "xian", + "yang" + ], + "location": { + "lat": 34.32932, + "lng": 108.70929 + }, + "cidx": [ + 2417, + 2430 + ] + }, + { + "id": "630100", + "name": "西宁", + "fullname": "西宁市", + "pinyin": [ + "xi", + "ning" + ], + "location": { + "lat": 36.61729, + "lng": 101.77782 + }, + "cidx": [ + 2583, + 2589 + ] + }, + { + "id": "710800", + "name": "新竹", + "fullname": "新竹市", + "pinyin": [ + "xin", + "zhu" + ], + "location": { + "lat": 24.784924, + "lng": 120.990745 + }, + "cidx": [ + 2883, + 2885 + ] + }, + { + "id": "711100", + "name": "新北", + "fullname": "新北市", + "pinyin": [ + "xin", + "bei" + ], + "location": { + "lat": 25.1853, + "lng": 121.663675 + }, + "cidx": [ + 2888, + 2916 + ] + } + ], + "Y": [ + { + "id": "140300", + "name": "阳泉", + "fullname": "阳泉市", + "pinyin": [ + "yang", + "quan" + ], + "location": { + "lat": 37.85668, + "lng": 113.58047 + }, + "cidx": [ + 187, + 191 + ] + }, + { + "id": "140800", + "name": "运城", + "fullname": "运城市", + "pinyin": [ + "yun", + "cheng" + ], + "location": { + "lat": 35.02628, + "lng": 111.00699 + }, + "cidx": [ + 228, + 240 + ] + }, + { + "id": "210800", + "name": "营口", + "fullname": "营口市", + "pinyin": [ + "ying", + "kou" + ], + "location": { + "lat": 40.66683, + "lng": 122.2349 + }, + "cidx": [ + 444, + 449 + ] + }, + { + "id": "230700", + "name": "伊春", + "fullname": "伊春市", + "pinyin": [ + "yi", + "chun" + ], + "location": { + "lat": 47.72752, + "lng": 128.84049 + }, + "cidx": [ + 616, + 632 + ] + }, + { + "id": "320900", + "name": "盐城", + "fullname": "盐城市", + "pinyin": [ + "yan", + "cheng" + ], + "location": { + "lat": 33.34951, + "lng": 120.16164 + }, + "cidx": [ + 741, + 749 + ] + }, + { + "id": "321000", + "name": "扬州", + "fullname": "扬州市", + "pinyin": [ + "yang", + "zhou" + ], + "location": { + "lat": 32.39358, + "lng": 119.41269 + }, + "cidx": [ + 750, + 755 + ] + }, + { + "id": "360600", + "name": "鹰潭", + "fullname": "鹰潭市", + "pinyin": [ + "ying", + "tan" + ], + "location": { + "lat": 28.26019, + "lng": 117.06919 + }, + "cidx": [ + 1085, + 1087 + ] + }, + { + "id": "360900", + "name": "宜春", + "fullname": "宜春市", + "pinyin": [ + "yi", + "chun" + ], + "location": { + "lat": 27.81443, + "lng": 114.41612 + }, + "cidx": [ + 1119, + 1128 + ] + }, + { + "id": "370600", + "name": "烟台", + "fullname": "烟台市", + "pinyin": [ + "yan", + "tai" + ], + "location": { + "lat": 37.46353, + "lng": 121.44801 + }, + "cidx": [ + 1191, + 1202 + ] + }, + { + "id": "420500", + "name": "宜昌", + "fullname": "宜昌市", + "pinyin": [ + "yi", + "chang" + ], + "location": { + "lat": 30.69186, + "lng": 111.28642 + }, + "cidx": [ + 1473, + 1485 + ] + }, + { + "id": "430600", + "name": "岳阳", + "fullname": "岳阳市", + "pinyin": [ + "yue", + "yang" + ], + "location": { + "lat": 29.35728, + "lng": 113.12919 + }, + "cidx": [ + 1592, + 1600 + ] + }, + { + "id": "430900", + "name": "益阳", + "fullname": "益阳市", + "pinyin": [ + "yi", + "yang" + ], + "location": { + "lat": 28.55391, + "lng": 112.35516 + }, + "cidx": [ + 1614, + 1619 + ] + }, + { + "id": "431100", + "name": "永州", + "fullname": "永州市", + "pinyin": [ + "yong", + "zhou" + ], + "location": { + "lat": 26.42034, + "lng": 111.61225 + }, + "cidx": [ + 1631, + 1641 + ] + }, + { + "id": "441700", + "name": "阳江", + "fullname": "阳江市", + "pinyin": [ + "yang", + "jiang" + ], + "location": { + "lat": 21.85829, + "lng": 111.98256 + }, + "cidx": [ + 1764, + 1767 + ] + }, + { + "id": "445300", + "name": "云浮", + "fullname": "云浮市", + "pinyin": [ + "yun", + "fu" + ], + "location": { + "lat": 22.91525, + "lng": 112.04453 + }, + "cidx": [ + 1786, + 1790 + ] + }, + { + "id": "450900", + "name": "玉林", + "fullname": "玉林市", + "pinyin": [ + "yu", + "lin" + ], + "location": { + "lat": 22.65451, + "lng": 110.18098 + }, + "cidx": [ + 1854, + 1860 + ] + }, + { + "id": "511500", + "name": "宜宾", + "fullname": "宜宾市", + "pinyin": [ + "yi", + "bin" + ], + "location": { + "lat": 28.7513, + "lng": 104.6417 + }, + "cidx": [ + 2010, + 2019 + ] + }, + { + "id": "511800", + "name": "雅安", + "fullname": "雅安市", + "pinyin": [ + "ya", + "an" + ], + "location": { + "lat": 30.01053, + "lng": 103.0424 + }, + "cidx": [ + 2033, + 2040 + ] + }, + { + "id": "530400", + "name": "玉溪", + "fullname": "玉溪市", + "pinyin": [ + "yu", + "xi" + ], + "location": { + "lat": 24.3518, + "lng": 102.54714 + }, + "cidx": [ + 2208, + 2216 + ] + }, + { + "id": "610600", + "name": "延安", + "fullname": "延安市", + "pinyin": [ + "yan", + "an" + ], + "location": { + "lat": 36.58529, + "lng": 109.48978 + }, + "cidx": [ + 2442, + 2454 + ] + }, + { + "id": "610800", + "name": "榆林", + "fullname": "榆林市", + "pinyin": [ + "yu", + "lin" + ], + "location": { + "lat": 38.2852, + "lng": 109.73458 + }, + "cidx": [ + 2466, + 2477 + ] + }, + { + "id": "640100", + "name": "银川", + "fullname": "银川市", + "pinyin": [ + "yin", + "chuan" + ], + "location": { + "lat": 38.48644, + "lng": 106.23248 + }, + "cidx": [ + 2629, + 2634 + ] + } + ], + "Z": [ + { + "id": "130700", + "name": "张家口", + "fullname": "张家口市", + "pinyin": [ + "zhang", + "jia", + "kou" + ], + "location": { + "lat": 40.82444, + "lng": 114.88755 + }, + "cidx": [ + 102, + 117 + ] + }, + { + "id": "321100", + "name": "镇江", + "fullname": "镇江市", + "pinyin": [ + "zhen", + "jiang" + ], + "location": { + "lat": 32.18959, + "lng": 119.425 + }, + "cidx": [ + 756, + 761 + ] + }, + { + "id": "330900", + "name": "舟山", + "fullname": "舟山市", + "pinyin": [ + "zhou", + "shan" + ], + "location": { + "lat": 29.98539, + "lng": 122.20778 + }, + "cidx": [ + 840, + 843 + ] + }, + { + "id": "350600", + "name": "漳州", + "fullname": "漳州市", + "pinyin": [ + "zhang", + "zhou" + ], + "location": { + "lat": 24.51347, + "lng": 117.64725 + }, + "cidx": [ + 1015, + 1025 + ] + }, + { + "id": "370300", + "name": "淄博", + "fullname": "淄博市", + "pinyin": [ + "zi", + "bo" + ], + "location": { + "lat": 36.8131, + "lng": 118.0548 + }, + "cidx": [ + 1172, + 1179 + ] + }, + { + "id": "370400", + "name": "枣庄", + "fullname": "枣庄市", + "pinyin": [ + "zao", + "zhuang" + ], + "location": { + "lat": 34.81071, + "lng": 117.32196 + }, + "cidx": [ + 1180, + 1185 + ] + }, + { + "id": "410100", + "name": "郑州", + "fullname": "郑州市", + "pinyin": [ + "zheng", + "zhou" + ], + "location": { + "lat": 34.74725, + "lng": 113.62493 + }, + "cidx": [ + 1289, + 1300 + ] + }, + { + "id": "411600", + "name": "周口", + "fullname": "周口市", + "pinyin": [ + "zhou", + "kou" + ], + "location": { + "lat": 33.62583, + "lng": 114.69695 + }, + "cidx": [ + 1426, + 1435 + ] + }, + { + "id": "411700", + "name": "驻马店", + "fullname": "驻马店市", + "pinyin": [ + "zhu", + "ma", + "dian" + ], + "location": { + "lat": 33.01142, + "lng": 114.02299 + }, + "cidx": [ + 1436, + 1445 + ] + }, + { + "id": "430200", + "name": "株洲", + "fullname": "株洲市", + "pinyin": [ + "zhu", + "zhou" + ], + "location": { + "lat": 27.82767, + "lng": 113.13396 + }, + "cidx": [ + 1554, + 1562 + ] + }, + { + "id": "430800", + "name": "张家界", + "fullname": "张家界市", + "pinyin": [ + "zhang", + "jia", + "jie" + ], + "location": { + "lat": 29.11667, + "lng": 110.47839 + }, + "cidx": [ + 1610, + 1613 + ] + }, + { + "id": "440400", + "name": "珠海", + "fullname": "珠海市", + "pinyin": [ + "zhu", + "hai" + ], + "location": { + "lat": 22.27073, + "lng": 113.57668 + }, + "cidx": [ + 1696, + 1699 + ] + }, + { + "id": "440800", + "name": "湛江", + "fullname": "湛江市", + "pinyin": [ + "zhan", + "jiang" + ], + "location": { + "lat": 21.27134, + "lng": 110.35894 + }, + "cidx": [ + 1719, + 1727 + ] + }, + { + "id": "441200", + "name": "肇庆", + "fullname": "肇庆市", + "pinyin": [ + "zhao", + "qing" + ], + "location": { + "lat": 23.0469, + "lng": 112.46528 + }, + "cidx": [ + 1733, + 1740 + ] + }, + { + "id": "442000", + "name": "中山", + "fullname": "中山市", + "pinyin": [ + "zhong", + "shan" + ], + "location": { + "lat": 22.51595, + "lng": 113.3926 + }, + "cidx": [ + 1777, + 1777 + ] + }, + { + "id": "510300", + "name": "自贡", + "fullname": "自贡市", + "pinyin": [ + "zi", + "gong" + ], + "location": { + "lat": 29.3392, + "lng": 104.77844 + }, + "cidx": [ + 1934, + 1939 + ] + }, + { + "id": "512000", + "name": "资阳", + "fullname": "资阳市", + "pinyin": [ + "zi", + "yang" + ], + "location": { + "lat": 30.12859, + "lng": 104.62798 + }, + "cidx": [ + 2046, + 2048 + ] + }, + { + "id": "520300", + "name": "遵义", + "fullname": "遵义市", + "pinyin": [ + "zun", + "yi" + ], + "location": { + "lat": 27.72545, + "lng": 106.92723 + }, + "cidx": [ + 2111, + 2124 + ] + }, + { + "id": "530600", + "name": "昭通", + "fullname": "昭通市", + "pinyin": [ + "zhao", + "tong" + ], + "location": { + "lat": 27.33817, + "lng": 103.7168 + }, + "cidx": [ + 2222, + 2232 + ] + }, + { + "id": "620700", + "name": "张掖", + "fullname": "张掖市", + "pinyin": [ + "zhang", + "ye" + ], + "location": { + "lat": 38.92592, + "lng": 100.44981 + }, + "cidx": [ + 2523, + 2528 + ] + }, + { + "id": "640500", + "name": "中卫", + "fullname": "中卫市", + "pinyin": [ + "zhong", + "wei" + ], + "location": { + "lat": 37.50026, + "lng": 105.19676 + }, + "cidx": [ + 2648, + 2650 + ] + } + ] + }, + "hot": [ + { + "id": "110000", + "name": "北京", + "fullname": "北京市", + "pinyin": [ + "bei", + "jing" + ], + "location": { + "lat": 39.90469, + "lng": 116.40717 + }, + "cidx": [ + 0, + 15 + ] + }, + { + "id": "310000", + "name": "上海", + "fullname": "上海市", + "pinyin": [ + "shang", + "hai" + ], + "location": { + "lat": 31.23037, + "lng": 121.4737 + }, + "cidx": [ + 104, + 119 + ] + }, + { + "id": "320500", + "name": "苏州", + "fullname": "苏州市", + "pinyin": [ + "su", + "zhou" + ], + "location": { + "lat": 31.29834, + "lng": 120.58319 + }, + "cidx": [ + 711, + 719 + ] + }, + { + "id": "330100", + "name": "杭州", + "fullname": "杭州市", + "pinyin": [ + "hang", + "zhou" + ], + "location": { + "lat": 30.27415, + "lng": 120.15515 + }, + "cidx": [ + 773, + 785 + ] + }, + { + "id": "440100", + "name": "广州", + "fullname": "广州市", + "pinyin": [ + "guang", + "zhou" + ], + "location": { + "lat": 23.12908, + "lng": 113.26436 + }, + "cidx": [ + 1667, + 1677 + ] + }, + { + "id": "440300", + "name": "深圳", + "fullname": "深圳市", + "pinyin": [ + "shen", + "zhen" + ], + "location": { + "lat": 22.54286, + "lng": 114.05956 + }, + "cidx": [ + 1688, + 1695 + ] + }, + { + "id": "510100", + "name": "成都", + "fullname": "成都市", + "pinyin": [ + "cheng", + "du" + ], + "location": { + "lat": 30.5702, + "lng": 104.06476 + }, + "cidx": [ + 1914, + 1933 + ] + } + ] +}; \ No newline at end of file diff --git a/lib/vant/common/color.d.ts b/lib/vant/common/color.d.ts new file mode 100644 index 0000000..386f307 --- /dev/null +++ b/lib/vant/common/color.d.ts @@ -0,0 +1,7 @@ +export declare const RED = "#ee0a24"; +export declare const BLUE = "#1989fa"; +export declare const WHITE = "#fff"; +export declare const GREEN = "#07c160"; +export declare const ORANGE = "#ff976a"; +export declare const GRAY = "#323233"; +export declare const GRAY_DARK = "#969799"; diff --git a/lib/vant/common/color.js b/lib/vant/common/color.js new file mode 100644 index 0000000..6b285bd --- /dev/null +++ b/lib/vant/common/color.js @@ -0,0 +1,7 @@ +export const RED = '#ee0a24'; +export const BLUE = '#1989fa'; +export const WHITE = '#fff'; +export const GREEN = '#07c160'; +export const ORANGE = '#ff976a'; +export const GRAY = '#323233'; +export const GRAY_DARK = '#969799'; diff --git a/lib/vant/common/component.d.ts b/lib/vant/common/component.d.ts new file mode 100644 index 0000000..307a96c --- /dev/null +++ b/lib/vant/common/component.d.ts @@ -0,0 +1,3 @@ +import { VantComponentOptions, CombinedComponentInstance } from '../definitions/index'; +declare function VantComponent(vantOptions?: VantComponentOptions>): void; +export { VantComponent }; diff --git a/lib/vant/common/component.js b/lib/vant/common/component.js new file mode 100644 index 0000000..63ef1a9 --- /dev/null +++ b/lib/vant/common/component.js @@ -0,0 +1,48 @@ +import { basic } from '../mixins/basic'; +import { observe } from '../mixins/observer/index'; +function mapKeys(source, target, map) { + Object.keys(map).forEach(key => { + if (source[key]) { + target[map[key]] = source[key]; + } + }); +} +function VantComponent(vantOptions = {}) { + const options = {}; + mapKeys(vantOptions, options, { + data: 'data', + props: 'properties', + mixins: 'behaviors', + methods: 'methods', + beforeCreate: 'created', + created: 'attached', + mounted: 'ready', + relations: 'relations', + destroyed: 'detached', + classes: 'externalClasses' + }); + const { relation } = vantOptions; + if (relation) { + options.relations = Object.assign(options.relations || {}, { + [`../${relation.name}/index`]: relation + }); + } + // add default externalClasses + options.externalClasses = options.externalClasses || []; + options.externalClasses.push('custom-class'); + // add default behaviors + options.behaviors = options.behaviors || []; + options.behaviors.push(basic); + // map field to form-field behavior + if (vantOptions.field) { + options.behaviors.push('wx://form-field'); + } + // add default options + options.options = { + multipleSlots: true, + addGlobalClass: true + }; + observe(vantOptions, options); + Component(options); +} +export { VantComponent }; diff --git a/lib/vant/common/index.wxss b/lib/vant/common/index.wxss new file mode 100644 index 0000000..6e6891f --- /dev/null +++ b/lib/vant/common/index.wxss @@ -0,0 +1 @@ +.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3}.van-clearfix:after{display:table;clear:both;content:""}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid #eee;-webkit-transform:scale(.5);transform:scale(.5)}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px} \ No newline at end of file diff --git a/lib/vant/common/style/clearfix.wxss b/lib/vant/common/style/clearfix.wxss new file mode 100644 index 0000000..a0ca838 --- /dev/null +++ b/lib/vant/common/style/clearfix.wxss @@ -0,0 +1 @@ +.van-clearfix:after{display:table;clear:both;content:""} \ No newline at end of file diff --git a/lib/vant/common/style/ellipsis.wxss b/lib/vant/common/style/ellipsis.wxss new file mode 100644 index 0000000..1e9dbc9 --- /dev/null +++ b/lib/vant/common/style/ellipsis.wxss @@ -0,0 +1 @@ +.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3} \ No newline at end of file diff --git a/lib/vant/common/style/hairline.wxss b/lib/vant/common/style/hairline.wxss new file mode 100644 index 0000000..f64e2f8 --- /dev/null +++ b/lib/vant/common/style/hairline.wxss @@ -0,0 +1 @@ +.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid #eee;-webkit-transform:scale(.5);transform:scale(.5)}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px} \ No newline at end of file diff --git a/lib/vant/common/style/mixins/clearfix.wxss b/lib/vant/common/style/mixins/clearfix.wxss new file mode 100644 index 0000000..e69de29 diff --git a/lib/vant/common/style/mixins/ellipsis.wxss b/lib/vant/common/style/mixins/ellipsis.wxss new file mode 100644 index 0000000..e69de29 diff --git a/lib/vant/common/style/mixins/hairline.wxss b/lib/vant/common/style/mixins/hairline.wxss new file mode 100644 index 0000000..e69de29 diff --git a/lib/vant/common/style/theme.wxss b/lib/vant/common/style/theme.wxss new file mode 100644 index 0000000..e69de29 diff --git a/lib/vant/common/style/var.wxss b/lib/vant/common/style/var.wxss new file mode 100644 index 0000000..e69de29 diff --git a/lib/vant/common/utils.d.ts b/lib/vant/common/utils.d.ts new file mode 100644 index 0000000..9fad27d --- /dev/null +++ b/lib/vant/common/utils.d.ts @@ -0,0 +1,8 @@ +/// +export declare function isDef(value: any): boolean; +export declare function isObj(x: any): boolean; +export declare function isNumber(value: any): boolean; +export declare function range(num: number, min: number, max: number): number; +export declare function nextTick(fn: Function): void; +export declare function getSystemInfoSync(): WechatMiniprogram.GetSystemInfoSuccessCallbackResult; +export declare function addUnit(value?: string | number): string | undefined; diff --git a/lib/vant/common/utils.js b/lib/vant/common/utils.js new file mode 100644 index 0000000..cc0f8f1 --- /dev/null +++ b/lib/vant/common/utils.js @@ -0,0 +1,32 @@ +export function isDef(value) { + return value !== undefined && value !== null; +} +export function isObj(x) { + const type = typeof x; + return x !== null && (type === 'object' || type === 'function'); +} +export function isNumber(value) { + return /^\d+(\.\d+)?$/.test(value); +} +export function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} +export function nextTick(fn) { + setTimeout(() => { + fn(); + }, 1000 / 30); +} +let systemInfo = null; +export function getSystemInfoSync() { + if (systemInfo == null) { + systemInfo = wx.getSystemInfoSync(); + } + return systemInfo; +} +export function addUnit(value) { + if (!isDef(value)) { + return undefined; + } + value = String(value); + return isNumber(value) ? `${value}px` : value; +} diff --git a/lib/vant/icon/index.d.ts b/lib/vant/icon/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/lib/vant/icon/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/vant/icon/index.js b/lib/vant/icon/index.js new file mode 100644 index 0000000..8d83ff1 --- /dev/null +++ b/lib/vant/icon/index.js @@ -0,0 +1,39 @@ +import { VantComponent } from '../common/component'; +import { addUnit } from '../common/utils'; +VantComponent({ + props: { + dot: Boolean, + info: null, + size: { + type: null, + observer: 'setSizeWithUnit' + }, + color: String, + customStyle: String, + classPrefix: { + type: String, + value: 'van-icon' + }, + name: { + type: String, + observer(val) { + this.setData({ + isImageName: val.indexOf('/') !== -1 + }); + } + } + }, + data: { + sizeWithUnit: null, + }, + methods: { + onClick() { + this.$emit('click'); + }, + setSizeWithUnit(size) { + this.setData({ + sizeWithUnit: addUnit(size) + }); + } + } +}); diff --git a/lib/vant/icon/index.json b/lib/vant/icon/index.json new file mode 100644 index 0000000..bf0ebe0 --- /dev/null +++ b/lib/vant/icon/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-info": "../info/index" + } +} diff --git a/lib/vant/icon/index.wxml b/lib/vant/icon/index.wxml new file mode 100644 index 0000000..c568b58 --- /dev/null +++ b/lib/vant/icon/index.wxml @@ -0,0 +1,18 @@ + + + + diff --git a/lib/vant/icon/index.wxss b/lib/vant/icon/index.wxss new file mode 100644 index 0000000..8fa5efc --- /dev/null +++ b/lib/vant/icon/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';@font-face{font-weight:400;font-family:vant-icon;font-style:normal;font-display:auto;src:url(https://img.yzcdn.cn/vant/vant-icon-0bc654.woff2) format("woff2"),url(https://img.yzcdn.cn/vant/vant-icon-0bc654.woff) format("woff"),url(https://img.yzcdn.cn/vant/vant-icon-0bc654.ttf) format("truetype")}.van-icon{position:relative;font:normal normal normal 14px/1 vant-icon;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased}.van-icon,.van-icon:before{display:inline-block}.van-icon-add-o:before{content:"\F000"}.van-icon-add-square:before{content:"\F001"}.van-icon-add:before{content:"\F002"}.van-icon-after-sale:before{content:"\F003"}.van-icon-aim:before{content:"\F004"}.van-icon-alipay:before{content:"\F005"}.van-icon-apps-o:before{content:"\F006"}.van-icon-arrow-down:before{content:"\F007"}.van-icon-arrow-left:before{content:"\F008"}.van-icon-arrow-up:before{content:"\F009"}.van-icon-arrow:before{content:"\F00A"}.van-icon-ascending:before{content:"\F00B"}.van-icon-audio:before{content:"\F00C"}.van-icon-award-o:before{content:"\F00D"}.van-icon-award:before{content:"\F00E"}.van-icon-bag-o:before{content:"\F00F"}.van-icon-bag:before{content:"\F010"}.van-icon-balance-list-o:before{content:"\F011"}.van-icon-balance-list:before{content:"\F012"}.van-icon-balance-o:before{content:"\F013"}.van-icon-balance-pay:before{content:"\F014"}.van-icon-bar-chart-o:before{content:"\F015"}.van-icon-bars:before{content:"\F016"}.van-icon-bell:before{content:"\F017"}.van-icon-bill-o:before{content:"\F018"}.van-icon-bill:before{content:"\F019"}.van-icon-birthday-cake-o:before{content:"\F01A"}.van-icon-bookmark-o:before{content:"\F01B"}.van-icon-bookmark:before{content:"\F01C"}.van-icon-browsing-history-o:before{content:"\F01D"}.van-icon-browsing-history:before{content:"\F01E"}.van-icon-brush-o:before{content:"\F01F"}.van-icon-bulb-o:before{content:"\F020"}.van-icon-bullhorn-o:before{content:"\F021"}.van-icon-calender-o:before{content:"\F022"}.van-icon-card:before{content:"\F023"}.van-icon-cart-circle-o:before{content:"\F024"}.van-icon-cart-circle:before{content:"\F025"}.van-icon-cart-o:before{content:"\F026"}.van-icon-cart:before{content:"\F027"}.van-icon-cash-back-record:before{content:"\F028"}.van-icon-cash-on-deliver:before{content:"\F029"}.van-icon-cashier-o:before{content:"\F02A"}.van-icon-certificate:before{content:"\F02B"}.van-icon-chart-trending-o:before{content:"\F02C"}.van-icon-chat-o:before{content:"\F02D"}.van-icon-chat:before{content:"\F02E"}.van-icon-checked:before{content:"\F02F"}.van-icon-circle:before{content:"\F030"}.van-icon-clear:before{content:"\F031"}.van-icon-clock-o:before{content:"\F032"}.van-icon-clock:before{content:"\F033"}.van-icon-close:before{content:"\F034"}.van-icon-closed-eye:before{content:"\F035"}.van-icon-cluster-o:before{content:"\F036"}.van-icon-cluster:before{content:"\F037"}.van-icon-column:before{content:"\F038"}.van-icon-comment-circle-o:before{content:"\F039"}.van-icon-comment-circle:before{content:"\F03A"}.van-icon-comment-o:before{content:"\F03B"}.van-icon-comment:before{content:"\F03C"}.van-icon-completed:before{content:"\F03D"}.van-icon-contact:before{content:"\F03E"}.van-icon-coupon-o:before{content:"\F03F"}.van-icon-coupon:before{content:"\F040"}.van-icon-credit-pay:before{content:"\F041"}.van-icon-cross:before{content:"\F042"}.van-icon-debit-pay:before{content:"\F043"}.van-icon-delete:before{content:"\F044"}.van-icon-descending:before{content:"\F045"}.van-icon-description:before{content:"\F046"}.van-icon-desktop-o:before{content:"\F047"}.van-icon-diamond-o:before{content:"\F048"}.van-icon-diamond:before{content:"\F049"}.van-icon-discount:before{content:"\F04A"}.van-icon-down:before{content:"\F04B"}.van-icon-ecard-pay:before{content:"\F04C"}.van-icon-edit:before{content:"\F04D"}.van-icon-ellipsis:before{content:"\F04E"}.van-icon-empty:before{content:"\F04F"}.van-icon-envelop-o:before{content:"\F050"}.van-icon-exchange:before{content:"\F051"}.van-icon-expand-o:before{content:"\F052"}.van-icon-expand:before{content:"\F053"}.van-icon-eye-o:before{content:"\F054"}.van-icon-eye:before{content:"\F055"}.van-icon-fail:before{content:"\F056"}.van-icon-failure:before{content:"\F057"}.van-icon-filter-o:before{content:"\F058"}.van-icon-fire-o:before{content:"\F059"}.van-icon-fire:before{content:"\F05A"}.van-icon-flag-o:before{content:"\F05B"}.van-icon-flower-o:before{content:"\F05C"}.van-icon-free-postage:before{content:"\F05D"}.van-icon-friends-o:before{content:"\F05E"}.van-icon-friends:before{content:"\F05F"}.van-icon-gem-o:before{content:"\F060"}.van-icon-gem:before{content:"\F061"}.van-icon-gift-card-o:before{content:"\F062"}.van-icon-gift-card:before{content:"\F063"}.van-icon-gift-o:before{content:"\F064"}.van-icon-gift:before{content:"\F065"}.van-icon-gold-coin-o:before{content:"\F066"}.van-icon-gold-coin:before{content:"\F067"}.van-icon-good-job-o:before{content:"\F068"}.van-icon-good-job:before{content:"\F069"}.van-icon-goods-collect-o:before{content:"\F06A"}.van-icon-goods-collect:before{content:"\F06B"}.van-icon-graphic:before{content:"\F06C"}.van-icon-home-o:before{content:"\F06D"}.van-icon-hot-o:before{content:"\F06E"}.van-icon-hot-sale-o:before{content:"\F06F"}.van-icon-hot-sale:before{content:"\F070"}.van-icon-hot:before{content:"\F071"}.van-icon-hotel-o:before{content:"\F072"}.van-icon-idcard:before{content:"\F073"}.van-icon-info-o:before{content:"\F074"}.van-icon-info:before{content:"\F075"}.van-icon-invition:before{content:"\F076"}.van-icon-label-o:before{content:"\F077"}.van-icon-label:before{content:"\F078"}.van-icon-like-o:before{content:"\F079"}.van-icon-like:before{content:"\F07A"}.van-icon-live:before{content:"\F07B"}.van-icon-location-o:before{content:"\F07C"}.van-icon-location:before{content:"\F07D"}.van-icon-lock:before{content:"\F07E"}.van-icon-logistics:before{content:"\F07F"}.van-icon-manager-o:before{content:"\F080"}.van-icon-manager:before{content:"\F081"}.van-icon-map-marked:before{content:"\F082"}.van-icon-medel-o:before{content:"\F083"}.van-icon-medel:before{content:"\F084"}.van-icon-more-o:before{content:"\F085"}.van-icon-more:before{content:"\F086"}.van-icon-music-o:before{content:"\F087"}.van-icon-music:before{content:"\F088"}.van-icon-new-arrival-o:before{content:"\F089"}.van-icon-new-arrival:before{content:"\F08A"}.van-icon-new-o:before{content:"\F08B"}.van-icon-new:before{content:"\F08C"}.van-icon-newspaper-o:before{content:"\F08D"}.van-icon-notes-o:before{content:"\F08E"}.van-icon-orders-o:before{content:"\F08F"}.van-icon-other-pay:before{content:"\F090"}.van-icon-paid:before{content:"\F091"}.van-icon-passed:before{content:"\F092"}.van-icon-pause-circle-o:before{content:"\F093"}.van-icon-pause-circle:before{content:"\F094"}.van-icon-pause:before{content:"\F095"}.van-icon-peer-pay:before{content:"\F096"}.van-icon-pending-payment:before{content:"\F097"}.van-icon-phone-circle-o:before{content:"\F098"}.van-icon-phone-circle:before{content:"\F099"}.van-icon-phone-o:before{content:"\F09A"}.van-icon-phone:before{content:"\F09B"}.van-icon-photo-o:before{content:"\F09C"}.van-icon-photo:before{content:"\F09D"}.van-icon-photograph:before{content:"\F09E"}.van-icon-play-circle-o:before{content:"\F09F"}.van-icon-play-circle:before{content:"\F0A0"}.van-icon-play:before{content:"\F0A1"}.van-icon-plus:before{content:"\F0A2"}.van-icon-point-gift-o:before{content:"\F0A3"}.van-icon-point-gift:before{content:"\F0A4"}.van-icon-points:before{content:"\F0A5"}.van-icon-printer:before{content:"\F0A6"}.van-icon-qr-invalid:before{content:"\F0A7"}.van-icon-qr:before{content:"\F0A8"}.van-icon-question-o:before{content:"\F0A9"}.van-icon-question:before{content:"\F0AA"}.van-icon-records:before{content:"\F0AB"}.van-icon-refund-o:before{content:"\F0AC"}.van-icon-replay:before{content:"\F0AD"}.van-icon-scan:before{content:"\F0AE"}.van-icon-search:before{content:"\F0AF"}.van-icon-send-gift-o:before{content:"\F0B0"}.van-icon-send-gift:before{content:"\F0B1"}.van-icon-service-o:before{content:"\F0B2"}.van-icon-service:before{content:"\F0B3"}.van-icon-setting-o:before{content:"\F0B4"}.van-icon-setting:before{content:"\F0B5"}.van-icon-share:before{content:"\F0B6"}.van-icon-shop-collect-o:before{content:"\F0B7"}.van-icon-shop-collect:before{content:"\F0B8"}.van-icon-shop-o:before{content:"\F0B9"}.van-icon-shop:before{content:"\F0BA"}.van-icon-shopping-cart-o:before{content:"\F0BB"}.van-icon-shopping-cart:before{content:"\F0BC"}.van-icon-shrink:before{content:"\F0BD"}.van-icon-sign:before{content:"\F0BE"}.van-icon-smile-comment-o:before{content:"\F0BF"}.van-icon-smile-comment:before{content:"\F0C0"}.van-icon-smile-o:before{content:"\F0C1"}.van-icon-smile:before{content:"\F0C2"}.van-icon-star-o:before{content:"\F0C3"}.van-icon-star:before{content:"\F0C4"}.van-icon-stop-circle-o:before{content:"\F0C5"}.van-icon-stop-circle:before{content:"\F0C6"}.van-icon-stop:before{content:"\F0C7"}.van-icon-success:before{content:"\F0C8"}.van-icon-thumb-circle-o:before{content:"\F0C9"}.van-icon-thumb-circle:before{content:"\F0CA"}.van-icon-todo-list-o:before{content:"\F0CB"}.van-icon-todo-list:before{content:"\F0CC"}.van-icon-tosend:before{content:"\F0CD"}.van-icon-tv-o:before{content:"\F0CE"}.van-icon-umbrella-circle:before{content:"\F0CF"}.van-icon-underway-o:before{content:"\F0D0"}.van-icon-underway:before{content:"\F0D1"}.van-icon-upgrade:before{content:"\F0D2"}.van-icon-user-circle-o:before{content:"\F0D3"}.van-icon-user-o:before{content:"\F0D4"}.van-icon-video-o:before{content:"\F0D5"}.van-icon-video:before{content:"\F0D6"}.van-icon-vip-card-o:before{content:"\F0D7"}.van-icon-vip-card:before{content:"\F0D8"}.van-icon-volume-o:before{content:"\F0D9"}.van-icon-volume:before{content:"\F0DA"}.van-icon-wap-home-o:before{content:"\F0DB"}.van-icon-wap-home:before{content:"\F0DC"}.van-icon-wap-nav:before{content:"\F0DD"}.van-icon-warn-o:before{content:"\F0DE"}.van-icon-warning-o:before{content:"\F0DF"}.van-icon-warning:before{content:"\F0E0"}.van-icon-weapp-nav:before{content:"\F0E1"}.van-icon-wechat:before{content:"\F0E2"}.van-icon-youzan-shield:before{content:"\F0E3"}:host{display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.van-icon--image{width:1em;height:1em}.van-icon__image{width:100%;height:100%}.van-icon__info{z-index:1} \ No newline at end of file diff --git a/lib/vant/info/index.d.ts b/lib/vant/info/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/lib/vant/info/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/vant/info/index.js b/lib/vant/info/index.js new file mode 100644 index 0000000..8e34c0f --- /dev/null +++ b/lib/vant/info/index.js @@ -0,0 +1,8 @@ +import { VantComponent } from '../common/component'; +VantComponent({ + props: { + dot: Boolean, + info: null, + customStyle: String + } +}); diff --git a/lib/vant/info/index.json b/lib/vant/info/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/lib/vant/info/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/lib/vant/info/index.wxml b/lib/vant/info/index.wxml new file mode 100644 index 0000000..3112dfc --- /dev/null +++ b/lib/vant/info/index.wxml @@ -0,0 +1,7 @@ + + +{{ dot ? '' : info }} diff --git a/lib/vant/info/index.wxss b/lib/vant/info/index.wxss new file mode 100644 index 0000000..16e3f32 --- /dev/null +++ b/lib/vant/info/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-info{position:absolute;top:0;right:0;box-sizing:border-box;white-space:nowrap;text-align:center;-webkit-transform:translate(50%,-50%);transform:translate(50%,-50%);-webkit-transform-origin:100%;transform-origin:100%;min-width:16px;min-width:var(--info-size,16px);padding:0 3px;padding:var(--info-padding,0 3px);color:#fff;color:var(--info-color,#fff);font-weight:500;font-weight:var(--info-font-weight,500);font-size:12px;font-size:var(--info-font-size,12px);font-family:PingFang SC,Helvetica Neue,Arial,sans-serif;font-family:var(--info-font-family,PingFang SC,Helvetica Neue,Arial,sans-serif);line-height:14px;line-height:calc(var(--info-size, 16px) - var(--info-border-width, 1px)*2);background-color:#ee0a24;background-color:var(--info-background-color,#ee0a24);border:1px solid #fff;border:var(--info-border-width,1px) solid var(--white,#fff);border-radius:16px;border-radius:var(--info-size,16px)}.van-info--dot{min-width:0;border-radius:100%;width:8px;width:var(--info-dot-size,8px);height:8px;height:var(--info-dot-size,8px);background-color:#ee0a24;background-color:var(--info-dot-color,#ee0a24)} \ No newline at end of file diff --git a/lib/vant/mixins/basic.d.ts b/lib/vant/mixins/basic.d.ts new file mode 100644 index 0000000..b273369 --- /dev/null +++ b/lib/vant/mixins/basic.d.ts @@ -0,0 +1 @@ +export declare const basic: string; diff --git a/lib/vant/mixins/basic.js b/lib/vant/mixins/basic.js new file mode 100644 index 0000000..2fdd634 --- /dev/null +++ b/lib/vant/mixins/basic.js @@ -0,0 +1,22 @@ +export const basic = Behavior({ + methods: { + $emit(...args) { + this.triggerEvent(...args); + }, + getRect(selector, all) { + return new Promise(resolve => { + wx.createSelectorQuery() + .in(this)[all ? 'selectAll' : 'select'](selector) + .boundingClientRect(rect => { + if (all && Array.isArray(rect) && rect.length) { + resolve(rect); + } + if (!all && rect) { + resolve(rect); + } + }) + .exec(); + }); + } + } +}); diff --git a/lib/vant/mixins/button.d.ts b/lib/vant/mixins/button.d.ts new file mode 100644 index 0000000..b51db87 --- /dev/null +++ b/lib/vant/mixins/button.d.ts @@ -0,0 +1 @@ +export declare const button: string; diff --git a/lib/vant/mixins/button.js b/lib/vant/mixins/button.js new file mode 100644 index 0000000..5d3b4dc --- /dev/null +++ b/lib/vant/mixins/button.js @@ -0,0 +1,18 @@ +export const button = Behavior({ + externalClasses: ['hover-class'], + properties: { + id: String, + lang: { + type: String, + value: 'en' + }, + businessId: Number, + sessionFrom: String, + sendMessageTitle: String, + sendMessagePath: String, + sendMessageImg: String, + showMessageCard: Boolean, + appParameter: String, + ariaLabel: String + } +}); diff --git a/lib/vant/mixins/link.d.ts b/lib/vant/mixins/link.d.ts new file mode 100644 index 0000000..d58043b --- /dev/null +++ b/lib/vant/mixins/link.d.ts @@ -0,0 +1 @@ +export declare const link: string; diff --git a/lib/vant/mixins/link.js b/lib/vant/mixins/link.js new file mode 100644 index 0000000..d7aed0c --- /dev/null +++ b/lib/vant/mixins/link.js @@ -0,0 +1,17 @@ +export const link = Behavior({ + properties: { + url: String, + linkType: { + type: String, + value: 'navigateTo' + } + }, + methods: { + jumpLink(urlKey = 'url') { + const url = this.data[urlKey]; + if (url) { + wx[this.data.linkType]({ url }); + } + } + } +}); diff --git a/lib/vant/mixins/observer/behavior.d.ts b/lib/vant/mixins/observer/behavior.d.ts new file mode 100644 index 0000000..3da2a64 --- /dev/null +++ b/lib/vant/mixins/observer/behavior.d.ts @@ -0,0 +1 @@ +export declare const behavior: string; diff --git a/lib/vant/mixins/observer/behavior.js b/lib/vant/mixins/observer/behavior.js new file mode 100644 index 0000000..948f446 --- /dev/null +++ b/lib/vant/mixins/observer/behavior.js @@ -0,0 +1,14 @@ +export const behavior = Behavior({ + methods: { + set(data, callback) { + return new Promise(resolve => { + this.setData(data, () => { + if (callback && typeof callback === 'function') { + callback.call(this); + } + resolve(); + }); + }); + } + } +}); diff --git a/lib/vant/mixins/observer/index.d.ts b/lib/vant/mixins/observer/index.d.ts new file mode 100644 index 0000000..4e54b2e --- /dev/null +++ b/lib/vant/mixins/observer/index.d.ts @@ -0,0 +1 @@ +export declare function observe(vantOptions: any, options: any): void; diff --git a/lib/vant/mixins/observer/index.js b/lib/vant/mixins/observer/index.js new file mode 100644 index 0000000..d6f608d --- /dev/null +++ b/lib/vant/mixins/observer/index.js @@ -0,0 +1,19 @@ +import { behavior } from './behavior'; +export function observe(vantOptions, options) { + const { watch } = vantOptions; + options.behaviors.push(behavior); + if (watch) { + const props = options.properties || {}; + Object.keys(watch).forEach(key => { + if (key in props) { + let prop = props[key]; + if (prop === null || !('type' in prop)) { + prop = { type: prop }; + } + prop.observer = watch[key]; + props[key] = prop; + } + }); + options.properties = props; + } +} diff --git a/lib/vant/mixins/open-type.d.ts b/lib/vant/mixins/open-type.d.ts new file mode 100644 index 0000000..64b023d --- /dev/null +++ b/lib/vant/mixins/open-type.d.ts @@ -0,0 +1 @@ +export declare const openType: string; diff --git a/lib/vant/mixins/open-type.js b/lib/vant/mixins/open-type.js new file mode 100644 index 0000000..514517e --- /dev/null +++ b/lib/vant/mixins/open-type.js @@ -0,0 +1,25 @@ +export const openType = Behavior({ + properties: { + openType: String + }, + methods: { + bindGetUserInfo(event) { + this.$emit('getuserinfo', event.detail); + }, + bindContact(event) { + this.$emit('contact', event.detail); + }, + bindGetPhoneNumber(event) { + this.$emit('getphonenumber', event.detail); + }, + bindError(event) { + this.$emit('error', event.detail); + }, + bindLaunchApp(event) { + this.$emit('launchapp', event.detail); + }, + bindOpenSetting(event) { + this.$emit('opensetting', event.detail); + }, + } +}); diff --git a/lib/vant/mixins/touch.d.ts b/lib/vant/mixins/touch.d.ts new file mode 100644 index 0000000..35ee831 --- /dev/null +++ b/lib/vant/mixins/touch.d.ts @@ -0,0 +1 @@ +export declare const touch: string; diff --git a/lib/vant/mixins/touch.js b/lib/vant/mixins/touch.js new file mode 100644 index 0000000..7566cb3 --- /dev/null +++ b/lib/vant/mixins/touch.js @@ -0,0 +1,27 @@ +export const touch = Behavior({ + methods: { + touchStart(event) { + const touch = event.touches[0]; + this.direction = ''; + this.deltaX = 0; + this.deltaY = 0; + this.offsetX = 0; + this.offsetY = 0; + this.startX = touch.clientX; + this.startY = touch.clientY; + }, + touchMove(event) { + const touch = event.touches[0]; + this.deltaX = touch.clientX - this.startX; + this.deltaY = touch.clientY - this.startY; + this.offsetX = Math.abs(this.deltaX); + this.offsetY = Math.abs(this.deltaY); + this.direction = + this.offsetX > this.offsetY + ? 'horizontal' + : this.offsetX < this.offsetY + ? 'vertical' + : ''; + } + } +}); diff --git a/lib/vant/mixins/transition.d.ts b/lib/vant/mixins/transition.d.ts new file mode 100644 index 0000000..ee7b6ca --- /dev/null +++ b/lib/vant/mixins/transition.d.ts @@ -0,0 +1 @@ +export declare const transition: (showDefaultValue: boolean) => any; diff --git a/lib/vant/mixins/transition.js b/lib/vant/mixins/transition.js new file mode 100644 index 0000000..a64df6a --- /dev/null +++ b/lib/vant/mixins/transition.js @@ -0,0 +1,120 @@ +import { isObj } from '../common/utils'; +const getClassNames = (name) => ({ + enter: `van-${name}-enter van-${name}-enter-active enter-class enter-active-class`, + 'enter-to': `van-${name}-enter-to van-${name}-enter-active enter-to-class enter-active-class`, + leave: `van-${name}-leave van-${name}-leave-active leave-class leave-active-class`, + 'leave-to': `van-${name}-leave-to van-${name}-leave-active leave-to-class leave-active-class` +}); +const nextTick = () => new Promise(resolve => setTimeout(resolve, 1000 / 30)); +export const transition = function (showDefaultValue) { + return Behavior({ + properties: { + customStyle: String, + // @ts-ignore + show: { + type: Boolean, + value: showDefaultValue, + observer: 'observeShow' + }, + // @ts-ignore + duration: { + type: null, + value: 300, + observer: 'observeDuration' + }, + name: { + type: String, + value: 'fade' + } + }, + data: { + type: '', + inited: false, + display: false + }, + attached() { + if (this.data.show) { + this.enter(); + } + }, + methods: { + observeShow(value) { + value ? this.enter() : this.leave(); + }, + enter() { + const { duration, name } = this.data; + const classNames = getClassNames(name); + const currentDuration = isObj(duration) ? duration.enter : duration; + this.status = 'enter'; + this.$emit('before-enter'); + Promise.resolve() + .then(nextTick) + .then(() => { + this.checkStatus('enter'); + this.$emit('enter'); + this.setData({ + inited: true, + display: true, + classes: classNames.enter, + currentDuration + }); + }) + .then(nextTick) + .then(() => { + this.checkStatus('enter'); + this.transitionEnded = false; + this.setData({ + classes: classNames['enter-to'] + }); + }) + .catch(() => { }); + }, + leave() { + if (!this.data.display) { + return; + } + const { duration, name } = this.data; + const classNames = getClassNames(name); + const currentDuration = isObj(duration) ? duration.leave : duration; + this.status = 'leave'; + this.$emit('before-leave'); + Promise.resolve() + .then(nextTick) + .then(() => { + this.checkStatus('leave'); + this.$emit('leave'); + this.setData({ + classes: classNames.leave, + currentDuration + }); + }) + .then(nextTick) + .then(() => { + this.checkStatus('leave'); + this.transitionEnded = false; + setTimeout(() => this.onTransitionEnd(), currentDuration); + this.setData({ + classes: classNames['leave-to'] + }); + }) + .catch(() => { }); + }, + checkStatus(status) { + if (status !== this.status) { + throw new Error(`incongruent status: ${status}`); + } + }, + onTransitionEnd() { + if (this.transitionEnded) { + return; + } + this.transitionEnded = true; + this.$emit(`after-${this.status}`); + const { show, display } = this.data; + if (!show && display) { + this.setData({ display: false }); + } + } + } + }); +}; diff --git a/lib/vant/overlay/index.d.ts b/lib/vant/overlay/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/lib/vant/overlay/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/vant/overlay/index.js b/lib/vant/overlay/index.js new file mode 100644 index 0000000..f579113 --- /dev/null +++ b/lib/vant/overlay/index.js @@ -0,0 +1,22 @@ +import { VantComponent } from '../common/component'; +VantComponent({ + props: { + show: Boolean, + customStyle: String, + duration: { + type: null, + value: 300 + }, + zIndex: { + type: Number, + value: 1 + } + }, + methods: { + onClick() { + this.$emit('click'); + }, + // for prevent touchmove + noop() { } + } +}); diff --git a/lib/vant/overlay/index.json b/lib/vant/overlay/index.json new file mode 100644 index 0000000..c14a65f --- /dev/null +++ b/lib/vant/overlay/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-transition": "../transition/index" + } +} diff --git a/lib/vant/overlay/index.wxml b/lib/vant/overlay/index.wxml new file mode 100644 index 0000000..d3e2b5f --- /dev/null +++ b/lib/vant/overlay/index.wxml @@ -0,0 +1,8 @@ + diff --git a/lib/vant/overlay/index.wxss b/lib/vant/overlay/index.wxss new file mode 100644 index 0000000..b7da22c --- /dev/null +++ b/lib/vant/overlay/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-overlay{position:fixed;top:0;left:0;bottom:0;width:100%;height:100%;background-color:rgba(0,0,0,.7);background-color:var(--overlay-background-color,rgba(0,0,0,.7))} \ No newline at end of file diff --git a/lib/vant/popup/index.d.ts b/lib/vant/popup/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/lib/vant/popup/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/vant/popup/index.js b/lib/vant/popup/index.js new file mode 100644 index 0000000..4a2e7af --- /dev/null +++ b/lib/vant/popup/index.js @@ -0,0 +1,80 @@ +import { VantComponent } from '../common/component'; +import { transition } from '../mixins/transition'; +VantComponent({ + classes: [ + 'enter-class', + 'enter-active-class', + 'enter-to-class', + 'leave-class', + 'leave-active-class', + 'leave-to-class' + ], + mixins: [transition(false)], + props: { + round: Boolean, + closeable: Boolean, + customStyle: String, + overlayStyle: String, + transition: { + type: String, + observer: 'observeClass' + }, + zIndex: { + type: Number, + value: 100 + }, + overlay: { + type: Boolean, + value: true + }, + closeIcon: { + type: String, + value: 'cross' + }, + closeIconPosition: { + type: String, + value: 'top-right' + }, + closeOnClickOverlay: { + type: Boolean, + value: true + }, + position: { + type: String, + value: 'center', + observer: 'observeClass' + }, + safeAreaInsetBottom: { + type: Boolean, + value: true + }, + safeAreaInsetTop: { + type: Boolean, + value: false + } + }, + created() { + this.observeClass(); + }, + methods: { + onClickCloseIcon() { + this.$emit('close'); + }, + onClickOverlay() { + this.$emit('click-overlay'); + if (this.data.closeOnClickOverlay) { + this.$emit('close'); + } + }, + observeClass() { + const { transition, position } = this.data; + const updateData = { + name: transition || position + }; + if (transition === 'none') { + updateData.duration = 0; + } + this.setData(updateData); + } + } +}); diff --git a/lib/vant/popup/index.json b/lib/vant/popup/index.json new file mode 100644 index 0000000..88a6eab --- /dev/null +++ b/lib/vant/popup/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index", + "van-overlay": "../overlay/index" + } +} diff --git a/lib/vant/popup/index.wxml b/lib/vant/popup/index.wxml new file mode 100644 index 0000000..a384686 --- /dev/null +++ b/lib/vant/popup/index.wxml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/lib/vant/popup/index.wxss b/lib/vant/popup/index.wxss new file mode 100644 index 0000000..6e477ac --- /dev/null +++ b/lib/vant/popup/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-popup{position:fixed;box-sizing:border-box;max-height:100%;overflow-y:auto;transition-timing-function:ease;-webkit-animation:ease both;animation:ease both;-webkit-overflow-scrolling:touch;background-color:#fff;background-color:var(--popup-background-color,#fff)}.van-popup--center{top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.van-popup--center.van-popup--round{border-radius:20px;border-radius:var(--popup-round-border-radius,20px)}.van-popup--top{top:0;left:0;width:100%}.van-popup--top.van-popup--round{border-radius:0 0 20px 20px;border-radius:0 0 var(--popup-round-border-radius,20px) var(--popup-round-border-radius,20px)}.van-popup--right{top:50%;right:0;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.van-popup--right.van-popup--round{border-radius:20px 0 0 20px;border-radius:var(--popup-round-border-radius,20px) 0 0 var(--popup-round-border-radius,20px)}.van-popup--bottom{bottom:0;left:0;width:100%}.van-popup--bottom.van-popup--round{border-radius:20px 20px 0 0;border-radius:var(--popup-round-border-radius,20px) var(--popup-round-border-radius,20px) 0 0}.van-popup--left{top:50%;left:0;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.van-popup--left.van-popup--round{border-radius:0 20px 20px 0;border-radius:0 var(--popup-round-border-radius,20px) var(--popup-round-border-radius,20px) 0}.van-popup--bottom.van-popup--safe{padding-bottom:env(safe-area-inset-bottom)}.van-popup--safeTop{padding-top:env(safe-area-inset-top)}.van-popup__close-icon{position:absolute;z-index:1;z-index:var(--popup-close-icon-z-index,1);color:#969799;color:var(--popup-close-icon-color,#969799);font-size:18px;font-size:var(--popup-close-icon-size,18px)}.van-popup__close-icon--top-left{top:16px;top:var(--popup-close-icon-margin,16px);left:16px;left:var(--popup-close-icon-margin,16px)}.van-popup__close-icon--top-right{top:16px;top:var(--popup-close-icon-margin,16px);right:16px;right:var(--popup-close-icon-margin,16px)}.van-popup__close-icon--bottom-left{bottom:16px;bottom:var(--popup-close-icon-margin,16px);left:16px;left:var(--popup-close-icon-margin,16px)}.van-popup__close-icon--bottom-right{right:16px;right:var(--popup-close-icon-margin,16px);bottom:16px;bottom:var(--popup-close-icon-margin,16px)}.van-popup__close-icon:active{opacity:.6}.van-scale-enter-active,.van-scale-leave-active{transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.van-scale-enter,.van-scale-leave-to{-webkit-transform:translate3d(-50%,-50%,0) scale(.7);transform:translate3d(-50%,-50%,0) scale(.7);opacity:0}.van-fade-enter-active,.van-fade-leave-active{transition-property:opacity}.van-fade-enter,.van-fade-leave-to{opacity:0}.van-center-enter-active,.van-center-leave-active{transition-property:opacity}.van-center-enter,.van-center-leave-to{opacity:0}.van-bottom-enter-active,.van-bottom-leave-active,.van-left-enter-active,.van-left-leave-active,.van-right-enter-active,.van-right-leave-active,.van-top-enter-active,.van-top-leave-active{transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.van-bottom-enter,.van-bottom-leave-to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.van-top-enter,.van-top-leave-to{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.van-left-enter,.van-left-leave-to{-webkit-transform:translate3d(-100%,-50%,0);transform:translate3d(-100%,-50%,0)}.van-right-enter,.van-right-leave-to{-webkit-transform:translate3d(100%,-50%,0);transform:translate3d(100%,-50%,0)} \ No newline at end of file diff --git a/lib/vant/transition/index.d.ts b/lib/vant/transition/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/lib/vant/transition/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/vant/transition/index.js b/lib/vant/transition/index.js new file mode 100644 index 0000000..a920f1f --- /dev/null +++ b/lib/vant/transition/index.js @@ -0,0 +1,13 @@ +import { VantComponent } from '../common/component'; +import { transition } from '../mixins/transition'; +VantComponent({ + classes: [ + 'enter-class', + 'enter-active-class', + 'enter-to-class', + 'leave-class', + 'leave-active-class', + 'leave-to-class' + ], + mixins: [transition(true)] +}); diff --git a/lib/vant/transition/index.json b/lib/vant/transition/index.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/lib/vant/transition/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/lib/vant/transition/index.wxml b/lib/vant/transition/index.wxml new file mode 100644 index 0000000..412e8af --- /dev/null +++ b/lib/vant/transition/index.wxml @@ -0,0 +1,8 @@ + + + diff --git a/lib/vant/transition/index.wxss b/lib/vant/transition/index.wxss new file mode 100644 index 0000000..d459f5c --- /dev/null +++ b/lib/vant/transition/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-transition{transition-timing-function:ease}.van-fade-enter-active,.van-fade-leave-active{transition-property:opacity}.van-fade-enter,.van-fade-leave-to{opacity:0}.van-fade-down-enter-active,.van-fade-down-leave-active,.van-fade-left-enter-active,.van-fade-left-leave-active,.van-fade-right-enter-active,.van-fade-right-leave-active,.van-fade-up-enter-active,.van-fade-up-leave-active{transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.van-fade-up-enter,.van-fade-up-leave-to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);opacity:0}.van-fade-down-enter,.van-fade-down-leave-to{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);opacity:0}.van-fade-left-enter,.van-fade-left-leave-to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);opacity:0}.van-fade-right-enter,.van-fade-right-leave-to{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);opacity:0}.van-slide-down-enter-active,.van-slide-down-leave-active,.van-slide-left-enter-active,.van-slide-left-leave-active,.van-slide-right-enter-active,.van-slide-right-leave-active,.van-slide-up-enter-active,.van-slide-up-leave-active{transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.van-slide-up-enter,.van-slide-up-leave-to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.van-slide-down-enter,.van-slide-down-leave-to{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.van-slide-left-enter,.van-slide-left-leave-to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.van-slide-right-enter,.van-slide-right-leave-to{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)} \ No newline at end of file diff --git a/lib/vant/wxs/array.wxs b/lib/vant/wxs/array.wxs new file mode 100644 index 0000000..610089c --- /dev/null +++ b/lib/vant/wxs/array.wxs @@ -0,0 +1,5 @@ +function isArray(array) { + return array && array.constructor === 'Array'; +} + +module.exports.isArray = isArray; diff --git a/lib/vant/wxs/bem.wxs b/lib/vant/wxs/bem.wxs new file mode 100644 index 0000000..93b2777 --- /dev/null +++ b/lib/vant/wxs/bem.wxs @@ -0,0 +1,38 @@ +var array = require('./array.wxs'); +var object = require('./object.wxs'); +var PREFIX = 'van-'; + +function join(name, mods) { + name = PREFIX + name; + mods = mods.map(function(mod) { + return name + '--' + mod; + }); + mods.unshift(name); + return mods.join(' '); +} + +function traversing(mods, conf) { + if (!conf) { + return; + } + + if (typeof conf === 'string' || typeof conf === 'number') { + mods.push(conf); + } else if (array.isArray(conf)) { + conf.forEach(function(item) { + traversing(mods, item); + }); + } else if (typeof conf === 'object') { + object.keys(conf).forEach(function(key) { + conf[key] && mods.push(key); + }); + } +} + +function bem(name, conf) { + var mods = []; + traversing(mods, conf); + return join(name, mods); +} + +module.exports.bem = bem; diff --git a/lib/vant/wxs/memoize.wxs b/lib/vant/wxs/memoize.wxs new file mode 100644 index 0000000..261ae67 --- /dev/null +++ b/lib/vant/wxs/memoize.wxs @@ -0,0 +1,54 @@ +/** + * Simple memoize + * wxs doesn't support fn.apply, so this memoize only support up to 2 args + */ + +function isPrimitive(value) { + var type = typeof value; + return ( + type === 'boolean' || + type === 'number' || + type === 'string' || + type === 'undefined' || + value === null + ); +} + +// mock simple fn.call in wxs +function call(fn, args) { + if (args.length === 2) { + return fn(args[0], args[1]); + } + + if (args.length === 1) { + return fn(args[0]); + } + + return fn(); +} + +function serializer(args) { + if (args.length === 1 && isPrimitive(args[0])) { + return args[0]; + } + var obj = {}; + for (var i = 0; i < args.length; i++) { + obj['key' + i] = args[i]; + } + return JSON.stringify(obj); +} + +function memoize(fn) { + var cache = {}; + + return function() { + var key = serializer(arguments); + if (cache[key] === undefined) { + cache[key] = call(fn, arguments); + } + + return cache[key]; + }; +} + +module.exports.memoize = memoize; diff --git a/lib/vant/wxs/object.wxs b/lib/vant/wxs/object.wxs new file mode 100644 index 0000000..e077107 --- /dev/null +++ b/lib/vant/wxs/object.wxs @@ -0,0 +1,13 @@ +/* eslint-disable */ +var REGEXP = getRegExp('{|}|"', 'g'); + +function keys(obj) { + return JSON.stringify(obj) + .replace(REGEXP, '') + .split(',') + .map(function(item) { + return item.split(':')[0]; + }); +} + +module.exports.keys = keys; diff --git a/lib/vant/wxs/utils.wxs b/lib/vant/wxs/utils.wxs new file mode 100644 index 0000000..a18662d --- /dev/null +++ b/lib/vant/wxs/utils.wxs @@ -0,0 +1,7 @@ +var bem = require('./bem.wxs').bem; +var memoize = require('./memoize.wxs').memoize; + +module.exports = { + bem: memoize(bem), + memoize: memoize +}; diff --git a/pages/merchant-login/merchant-login.js b/pages/merchant-login/merchant-login.js new file mode 100644 index 0000000..a38581c --- /dev/null +++ b/pages/merchant-login/merchant-login.js @@ -0,0 +1,127 @@ +// pages/pregnant-mother/pregnant-mother.js + + +Page({ + + /** + * 页面的初始数据 + */ + data: { + background: ['demo-text-1', 'demo-text-2', 'demo-text-3'], + indicatorDots: true, + vertical: false, + autoplay: true, + interval: 2000, + duration: 500, + nvabarData: { + title: '', //导航栏 中间的标题 + keyWord: '', + search: true + }, + height: '' + }, + + + changeIndicatorDots() { + this.setData({ + indicatorDots: !this.data.indicatorDots + }) + }, + + changeAutoplay() { + this.setData({ + autoplay: !this.data.autoplay + }) + }, + + intervalChange(e) { + this.setData({ + interval: e.detail.value + }) + }, + + durationChange(e) { + this.setData({ + duration: e.detail.value + }) + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + // 清除搜索框 调用子组件的清空函数 + this.selectComponent('#bar').clearInput(); + // 每个机型的尺寸不一致 + // 在app.js中获取到的 statusBarHeight 用于控制头部的高度 + + this.setData({ + // height: app.globalData.height, + }) + this.setData({ + 'nvabarData.inputValue': '' + }) + + if (typeof this.getTabBar === 'function' && + this.getTabBar()) { + this.getTabBar().setData({ + selected: 1 + }) + } + }, + + search: function(e) { + this.getTask(e.detail); +}, + + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/merchant-login/merchant-login.json b/pages/merchant-login/merchant-login.json new file mode 100644 index 0000000..ae23ce6 --- /dev/null +++ b/pages/merchant-login/merchant-login.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "商户登录", + "enablePullDownRefresh": false, + "navigationBarBackgroundColor": "#F52F3E", + "navigationBarTextStyle": "white" +} \ No newline at end of file diff --git a/pages/merchant-login/merchant-login.wxml b/pages/merchant-login/merchant-login.wxml new file mode 100644 index 0000000..adf42f8 --- /dev/null +++ b/pages/merchant-login/merchant-login.wxml @@ -0,0 +1,2 @@ + + diff --git a/pages/merchant-login/merchant-login.wxss b/pages/merchant-login/merchant-login.wxss new file mode 100644 index 0000000..9a31a46 --- /dev/null +++ b/pages/merchant-login/merchant-login.wxss @@ -0,0 +1,4 @@ +page{ + background: #f7f7f7; +} + diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..98a2fdd --- /dev/null +++ b/project.config.json @@ -0,0 +1,55 @@ +{ + "description": "项目配置文件", + "packOptions": { + "ignore": [], + "include": [] + }, + "setting": { + "urlCheck": false, + "es6": true, + "enhance": true, + "postcss": true, + "preloadBackgroundData": false, + "minified": true, + "newFeature": false, + "coverView": true, + "nodeModules": false, + "autoAudits": false, + "showShadowRootInWxmlPanel": true, + "scopeDataCheck": false, + "uglifyFileName": false, + "checkInvalidKey": true, + "checkSiteMap": true, + "uploadWithSourceMap": true, + "compileHotReLoad": false, + "lazyloadPlaceholderEnable": false, + "useMultiFrameRuntime": true, + "useApiHook": true, + "useApiHostProcess": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "useIsolateContext": false, + "userConfirmedBundleSwitch": false, + "packNpmManually": false, + "packNpmRelationList": [], + "minifyWXSS": true, + "disableUseStrict": false, + "minifyWXML": true, + "showES6CompileOption": false, + "useCompilerPlugins": false, + "ignoreUploadUnusedFiles": true, + "condition": false + }, + "compileType": "miniprogram", + "libVersion": "2.25.3", + "appid": "wx1fd0ad2d16dce86a", + "projectname": "hsyg-applet-master", + "editorSetting": { + "tabIndent": "insertSpaces", + "tabSize": 2 + }, + "condition": {} +} \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json new file mode 100644 index 0000000..58d1b6a --- /dev/null +++ b/project.private.config.json @@ -0,0 +1,9 @@ +{ + "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "projectname": "muyin-client", + "setting": { + "compileHotReLoad": true, + "bigPackageSizeSupport": false, + "preloadBackgroundData": true + } +} \ No newline at end of file diff --git a/sitemap.json b/sitemap.json new file mode 100644 index 0000000..ca02add --- /dev/null +++ b/sitemap.json @@ -0,0 +1,7 @@ +{ + "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", + "rules": [{ + "action": "allow", + "page": "*" + }] +} \ No newline at end of file diff --git a/tpl/image.wxml b/tpl/image.wxml new file mode 100644 index 0000000..ffffb24 --- /dev/null +++ b/tpl/image.wxml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/tpl/netError/netError.wxml b/tpl/netError/netError.wxml new file mode 100644 index 0000000..f7213dd --- /dev/null +++ b/tpl/netError/netError.wxml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/tpl/timeUtil.wxs b/tpl/timeUtil.wxs new file mode 100644 index 0000000..158e2e8 --- /dev/null +++ b/tpl/timeUtil.wxs @@ -0,0 +1,82 @@ + +var formatNumber = function(n){ + n = n.toString() + return n[1] ? n : '0' + n +} + +var regYear = getRegExp("(y+)", "i"); + +var orderStatus = function(status){ +// 0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单 + if(status==5){ + return '取消待审'; + }else if(status==0){ + return '待上门'; + }else if(status==1){ + return '待揽收'; + }else if(status==2){ + return '待支付'; + }else if(status==3){ + return '待评价'; + }else if(status==4){ + return '已取消'; + } + else if (status == 8) { + return '已完成'; + } +} + +var redPacketStatus = function(status){ +// // 1随机红包 2等额红包 + if(status==1){ + return '随机红包'; + }else if(status==2){ + return '等额红包'; + } +} +var dateFormat = function(timestamp,format){ + if (!format) { + format = "yyyy-MM-dd hh:mm:ss"; + } + if(timestamp == undefined|| timestamp ==null){ + return ""; + } + timestamp = parseInt(timestamp); + var realDate = getDate(timestamp); + function timeFormat(num) { + return num < 10 ? '0' + num : num; + } + var date = [ + ["M+", timeFormat(realDate.getMonth() + 1)], + ["d+", timeFormat(realDate.getDate())], + ["h+", timeFormat(realDate.getHours())], + ["m+", timeFormat(realDate.getMinutes())], + ["s+", timeFormat(realDate.getSeconds())], + ["q+", Math.floor((realDate.getMonth() + 3) / 3)], + ["S+", realDate.getMilliseconds()], + ]; + var reg1 = regYear.exec(format); + // console.log(reg1[0]); + if (reg1) { + + format = format.replace(reg1[1], (realDate.getFullYear() + '').substring(4 - reg1[1].length)); + } + for (var i=0;i 0&&_tmp_str_list[0]) { + res[_tmp_str_list[0]] = _tmp_str_list[1] || null; + } + } + return res; + } +}; +module.exports = utils; \ No newline at end of file diff --git a/utils/CurvePainter.js b/utils/CurvePainter.js new file mode 100644 index 0000000..ac64e2b --- /dev/null +++ b/utils/CurvePainter.js @@ -0,0 +1,406 @@ +const utils = require('./util'); + +const STYLE_DEFAULT = { + TEXT_ALIGN: 'center', + COLOR: '#000000', + LIGHT_COLOR: '#fff', + FONT_SIZE: 24, + AXLE_COLOR: '#e5e5e5' +}; + +function CurvePainter(ctx, config) { + this.ctx = ctx; + this.windowWidth = config.windowWidth; + this.canvasWidth = config.canvasWidth; + this.canvasHeight = config.canvasHeight; + this.marginTop = config.marginTop; // 画布上边留白 + this.marginBottom = config.marginBottom; // 画布底边留白 + this.marginLeft = config.marginLeft; // 画布左边留白 + this.marginRight = config.marginRight; // 画布右边留白 + this.drawWidth = this.canvasWidth - this.marginLeft - this.marginRight; // 绘制宽度 + this.drawHeight = this.canvasHeight - this.marginTop - this.marginBottom; // 绘制高度 +} + +CurvePainter.prototype = { + setData(data) { + this.hAxleData = data.hAxleData || []; // x轴刻度 + this.hAxleTitle = data.hAxleTitle || ''; // x轴标题 + this.vAxleData = data.vAxleData || []; // y轴刻度 + this.vAxleTitle = data.vAxleTitle || ''; // y轴标题 + this.originDataList = data.dataList || []; // 原始数据集 + this.selectedIndex = data.selectedIndex; // 被选中的序号 + this.reference = data.reference || 0; // 参考值 + this.unit = data.unit || ''; // 数值单位 + this.drawHAxle = data.drawHAxle || false; // 是否绘制横轴 + this.drawVAxle = data.drawVAxle || false; // 是否绘制纵轴 + this.drawCurveDecorate = data.drawCurveDecorate || false; // 是否绘制背景 + this.drawCurveDataPoint = data.drawCurveDataPoint || false; // 是否绘制数据点 + this.drawCurveDataText = data.drawCurveDataText || false; // 是否绘制数据值 + }, + setOffset(data) { + this.topOffset = data.topOffset; // 最大数据点距画布顶部距离 + this.bottomOffset = data.bottomOffset; // 最小数据点距画布底部距离 + }, + setStyle(config) { + this.curveWidth = config.curveWidth || this.toPx(6); // 曲线宽度 + this.curveColor = config.curveColor || STYLE_DEFAULT.COLOR; // 曲线颜色 + this.curveDecorateColors = config.curveDecorateColors || [STYLE_DEFAULT.LIGHT_COLOR, STYLE_DEFAULT.LIGHT_COLOR]; // 背景颜色 + this.scaleColor = config.scaleColor || STYLE_DEFAULT.COLOR; // 刻度字体颜色 + this.selectedScaleColor = config.selectedScaleColor || STYLE_DEFAULT.COLOR; // 选中刻度的字体颜色 + this.scaleFontSize = config.scaleFontSize || this.toPx(STYLE_DEFAULT.FONT_SIZE); // 刻度字体大小 + this.selectedScaleFontSize = config.selectedScaleFontSize || this.toPx(STYLE_DEFAULT.FONT_SIZE); // 选中的刻度字体大小 + this.dataPointFontColor = config.dataPointFontColor || STYLE_DEFAULT.COLOR; // 数据值颜色 + this.selectedDataPointFontColor = config.selectedDataPointFontColor || STYLE_DEFAULT.COLOR; // 选中的数据值颜色 + this.dataPointFontSize = config.dataPointFontSize || this.toPx(STYLE_DEFAULT.FONT_SIZE); // 数据值字体大小 + this.selectedDataPointFontSize = config.selectedDataPointFontSize || this.toPx(STYLE_DEFAULT.FONT_SIZE); // 选中的数据值字体大小 + this.textAlign = config.textAlign || 'center'; // 文字对其方式 + this.hAxleTitleColor = config.hAxleTitleColor || STYLE_DEFAULT.COLOR; // x轴标题颜色 + this.vAxleTitleColor = config.vAxleTitleColor || STYLE_DEFAULT.COLOR; // y轴标题颜色 + this.hAxleColor = config.hAxleColor || STYLE_DEFAULT.AXLE_COLOR; // x轴线颜色 + this.hAxleWidth = config.hAxleWidth || 1; // x轴宽度 + this.vAxleColor = config.vAxleColor || STYLE_DEFAULT.AXLE_COLOR; // y轴颜色 + this.vAxleWidth = config.vAxleWidth || 1; // y轴宽度 + this.pointMarginColor = config.pointMarginColor || STYLE_DEFAULT.COLOR; // 数据点外圆颜色 + this.pointMarginRadius = config.pointMarginRadius || this.toPx(24 / 2); // 数据点外缘半径 + this.pointColor = config.pointColor || STYLE_DEFAULT.COLOR;// 数据点颜色 + this.pointRadius = config.pointRadius || this.toPx(12 / 2); // 数据点半径 + }, + addAction(fn) { + if (!utils.isFunction(fn)) return; + + if (!this.actions) { + this.actions = []; + } + + this.actions.push(fn); + }, + prepare() { + let self = this; + let data = this.originDataList; + + dataToPos(); + + function dataToPos() { + if (!self.isValid(data)) { + return; + } + + let {max, min} = self.getMaxAndMin(data, self.reference); + let range = max !== min ? max - min : 1; // 需要考虑最大值等于最小值,也就是所有值都一样的情况 + let drawWidth = self.drawWidth; + let drawHeight = self.drawHeight; + let dataPointMaxHeight = drawHeight - self.topOffset - self.bottomOffset; // 数据点最大高度 + let xOffset = drawWidth / (data.length - 1); + + let calcData = []; + for (let i = 0; i < data.length; i++) { + if (data[i]) { + calcData.push({ + x: i * xOffset, + y: self.topOffset + dataPointMaxHeight - self.calcRate(data, max, min, range, i) * dataPointMaxHeight, + value: data[i], + }); + } else { + calcData.push({ + value: data[i] + }); + } + } + + self.calcData = calcData; + } + + return this; + }, + // 数据合法化处理 + calcRate(list, max, min, range, idx) { + if(max === min) { + return 1; + } + + let diff = list[idx] - min; + if (diff === 0) { + return 0; + } else { + if (range === 0) { + return list[idx] / max; + } else { + return diff / range; + } + } + + }, + getMaxAndMin(list, target) { + let max = 0, min = 0, self = this; + + let listWithoutZero = this.filterZero(list); + if (listWithoutZero.length > 1) { + return { + max: self.max(listWithoutZero), + min: self.minWithoutZero(listWithoutZero) + }; + } else { + let only = listWithoutZero[0]; + max = only > target ? only : target; + min = only > target ? target: only; + + return { max, min }; + } + }, + max(obj) { + if (!this.isValid(obj)) { + return void 0; + } + + let max = obj[0]; + obj.forEach(item => { + if (item > max) { + max = item; + } + }); + + return max; + }, + minWithoutZero(obj) { + if (!this.isValid(obj)) { + return void 0; + } + + let min = obj[0]; + obj.forEach(item => { + if (item > 0 && item <= min) { + min = item; + } + }); + + return min; + }, + filterZero(list) { + return list.filter(item => item); + }, + draw(reDraw) { + reDraw && this.clear(); + this.performDraw(); + }, + performDraw() { + // 坐标轴变换方便计算 + this.resetCurvesCoordinate(); + // 绘制轴线 + this.drawAxle(); + // 绘制曲线 + this.drawCurve(); + + this.ctx.draw(); + }, + clear() { + this.ctx && this.ctx.clearRect(0, 0, this.drawHeight, this.drawHeight); + }, + resetCurvesCoordinate() { + let xCut = this.marginLeft; + let yCut = this.marginTop; + + this.ctx.translate(xCut, yCut); + }, + drawAxle() { + let ctx = this.ctx; + let drawWidth = this.drawWidth; + let drawHeight = this.drawHeight; + let defaultColor = STYLE_DEFAULT.COLOR; + let drawHAxle = this.drawHAxle; + + if (drawHAxle) { + let hAxleData = this.hAxleData; + let dataLen = hAxleData.length; + let selectedIndex = this.selectedIndex; + let selectedScaleColor = this.selectedScaleColor; + let scaleFontSize = this.scaleFontSize; + let selectedScaleFontSize = this.selectedScaleFontSize; + let hAxleTitle = this.hAxleTitle; + let hAxleTitleColor = this.hAxleTitleColor; + let hAxleWidth = this.hAxleWidth; + let hAxleColor = this.hAxleColor; + + // 绘制刻度 + ctx.setFontSize(scaleFontSize); + ctx.setTextAlign(this.textAlign); + + let item; + let xOffset = dataLen - 1 ? drawWidth / (dataLen - 1) : 0; + for (let i = 0, len = dataLen; i < len; i++) { + item = hAxleData[i]; + ctx.setFillStyle(i === selectedIndex ? selectedScaleColor : defaultColor); + ctx.setFontSize(i === selectedIndex ? selectedScaleFontSize : scaleFontSize); + ctx.fillText(item, xOffset * i, drawHeight); + } + + // 绘制刻度标题 + ctx.setFillStyle(hAxleTitleColor); + ctx.setFontSize(scaleFontSize); + ctx.fillText(hAxleTitle, drawWidth + this.toPx(45), drawHeight); // 45 = 偏离y轴的距离 + + // 画轴线 + ctx.setLineWidth(hAxleWidth); + ctx.setStrokeStyle(hAxleColor); + ctx.beginPath(); + ctx.moveTo(0, drawHeight - this.toPx(36)); // 36 = 刻度文字与x轴的距离 + 文字大小 + ctx.lineTo(drawWidth + this.toPx(55), drawHeight - this.toPx(36)); + ctx.stroke(); + } + }, + drawCurve() { + let self = this; + let ctx = this.ctx; + let drawWidth = this.drawWidth; + let drawHeight = this.drawHeight; + let calcData = this.calcData; + let selectedIndex = self.selectedIndex; + + if (calcData && calcData.length) { + let curveWidth = this.curveWidth; + let curveColor = this.curveColor; + + ctx.setLineWidth(curveWidth); + + let pos, lastPos = calcData[0]; + ctx.beginPath(); + ctx.moveTo(lastPos.x, lastPos.y); + for (let i = 1, len = calcData.length; i < len; i++) { + pos = calcData[i]; + if (!pos.value) continue; + + // 这里每次都得创建一个新的渐变 + // FIXME 这里是为了解决,android,在同一个canvas内, + // FIXME 先用gradient绘制了线条后,无法setStrokeStyle设置为普通颜色的Bug + let gd = ctx.createLinearGradient(0, 0, pos.x, pos.y); + gd.addColorStop(0, curveColor); + gd.addColorStop(1, curveColor); + ctx.setStrokeStyle(gd); + + if (i === 1) { + ctx.lineTo(pos.x, pos.y); + } else { + ctx.beginPath(); + ctx.moveTo(lastPos.x, lastPos.y); + ctx.lineTo(pos.x, pos.y); + } + ctx.stroke(); + lastPos = pos; + } + + drawCurveDecorate(); // 绘制曲线修饰 + drawCurveDataPoint(); // 绘制数据点 + drawCurveDataText(); // 绘制数据值 + drawCustom(); // 绘制自定义内容 + } + + function drawCurveDecorate() { + let drawCurveDecorate = self.drawCurveDecorate; + if (!drawCurveDecorate || calcData.length <= 1) return; + + let curveDecorateColors = self.curveDecorateColors; + let lg = ctx.createLinearGradient(0, 0, 0, drawHeight); + lg.addColorStop(0, curveDecorateColors[0]); + lg.addColorStop(1, curveDecorateColors[1]); + + ctx.setFillStyle(lg); + ctx.beginPath(); + ctx.moveTo(calcData[0].x || 0, calcData[0].y || 0); + + for(let i = 0, len = calcData.length; i < len; i++) { + let pos = calcData[i]; + if (!pos.value) continue; + + ctx.lineTo(pos.x, pos.y); + } + + ctx.lineTo(getNonZeroPos(calcData).x, drawHeight); + ctx.lineTo(calcData[0].x || 0, drawHeight); + ctx.lineTo(calcData[0].x || 0, calcData[0].y || 0); + ctx.closePath(); + ctx.fill(); + } + + function getNonZeroPos(list) { + let len = list.length; + for (let i = len - 1, end = 0; i >= end; i--) { + let temp = list[i]; + if (!temp.value) continue; + + return temp; + } + } + + function drawCurveDataPoint() { + let drawCurveDataPoint = self.drawCurveDataPoint; + if (!drawCurveDataPoint) return; + + let pointMarginColor = self.pointMarginColor; + let pointColor = self.pointColor; + + for (let i = 0, len = calcData.length; i < len; i++) { + let pos = calcData[i]; + if (!pos.value) continue; + + // 被选中的数据点有外边框 + if (i === selectedIndex) { + ctx.setFillStyle(pointMarginColor); + ctx.beginPath(); + ctx.arc(pos.x, pos.y, self.toPx(24 / 2), 0, 2 * Math.PI); + ctx.fill(); + } + + // 再画颜色小圆 + ctx.setFillStyle(pointColor); + ctx.beginPath(); + ctx.arc(pos.x, pos.y, self.toPx(12 / 2), 0, 2 * Math.PI); + ctx.fill(); + } + } + + function drawCurveDataText() { + let drawCurveDataText = self.drawCurveDataText; + if (!drawCurveDataText) return; + + let textAlign = self.textAlign; + let dataPointFontSize = self.dataPointFontSize; + let selectedDataPointFontSize = self.selectedDataPointFontSize; + let dataPointFontColor = self.dataPointFontColor; + let selectedDataPointFontColor = self.selectedDataPointFontColor; + ctx.setTextAlign(textAlign); + + for (let i = 0, len = calcData.length; i < len; i++) { + let pos = calcData[i]; + if (!pos.value) continue; + + ctx.setFontSize( i === selectedIndex ? selectedDataPointFontSize : dataPointFontSize); + ctx.setFillStyle( i === selectedIndex ? selectedDataPointFontColor : dataPointFontColor); + + ctx.fillText( + `${pos.value.toFixed(1)}`, + pos.x, + pos.y - self.toPx(25)); // 25 = 数据点和数据文字的距离 + } + } + + function drawCustom() { + let actions = self.actions; + actions && actions.forEach(action => { + action.apply(self); + }); + } + }, + toPx(rpx) { + let windowWidth = this.windowWidth; + return utils.rpx_to_px(rpx, windowWidth); + }, + isValid(obj) { + let isArray = utils.isArray(obj); + if (isArray) { + return obj.length > 0; + } else { + return isArray; + } + } +}; + +module.exports = CurvePainter; \ No newline at end of file diff --git a/utils/checkinUtil.js b/utils/checkinUtil.js new file mode 100644 index 0000000..8f8ef1c --- /dev/null +++ b/utils/checkinUtil.js @@ -0,0 +1,113 @@ +const app = getApp(); +const Crypto = require('./lib/crypto1/crypto'); +const Base64 = require('./lib/crypto1/base64'); + +const IMG_SIZE_TYPE = { + TYPE_WIDTH: (750 / 570) * 100 | 0, + TYPE_HEIGHT: (750 / 900) * 100 | 0, + TYPE_EQUAL: (750 / 750) * 100 | 0 +}; + +module.exports = { + // 是否是本地默认打卡图片 + isDefaultRecordImage(imgPath) { + return imgPath && imgPath.startsWith('/img'); + }, + // 添加图片裁剪参数 + addImageCutParam (owidth, oheight, imgPath) { + let ratio = owidth / oheight, width = owidth, height = oheight; + let result = {}; + + if ((ratio * 100 | 0) >= IMG_SIZE_TYPE.TYPE_WIDTH) { + width = parseInt(oheight * 750 / 570); + imgPath += "?imageView2/1/w/" + width + "/h/" + (height); + + result.width = width; + result.height = height; + } else if ((ratio * 100 | 0) <= IMG_SIZE_TYPE.TYPE_HEIGHT) { + height = parseInt(width * 900 / 750); + imgPath += "?imageView2/1/w/" + (width) + "/h/" + height; + + result.width = width; + result.height = height; + } else { + imgPath += "?imageView2/1/w/" + (owidth) + "/h/" + (owidth); + + result.width = result.height = width; + } + result.imgPath = imgPath; + + return result; + }, + // 添加图片缩放、裁剪参数 + addImageCutParamAli(owidth, oheight, imgPath) { + const MAX_LEN = 4096; + let ratio = owidth / oheight, width = owidth, height = oheight; + + imgPath += '?x-oss-process=image'; + + // 图片宽高大于4096时,需要先进行缩放 + if (owidth > MAX_LEN || oheight > MAX_LEN) { + imgPath += `/resize,h_${MAX_LEN},w_${MAX_LEN}`; + + // 这里需要重新计算缩放后的图片大小 + if (owidth > oheight) { + width = MAX_LEN; + let zoomRatio = width / owidth; + height = parseInt(zoomRatio * oheight); + } else if (owidth < oheight) { + height = MAX_LEN; + let zoomRatio = height / oheight; + width = parseInt(zoomRatio * owidth); + } else { + width = height = MAX_LEN; + } + } + + // 裁剪 + ratio = width / height; + + let result = {}; + if ((ratio * 100 | 0) >= IMG_SIZE_TYPE.TYPE_WIDTH) { + width = parseInt(oheight * 750 / 570); + imgPath += `/crop,w_${width},h_${height},g_center`; + + result.width = width; + result.height = height; + } else if ((ratio * 100 | 0) <= IMG_SIZE_TYPE.TYPE_HEIGHT) { + height = parseInt(width * 900 / 750); + imgPath += `/crop,w_${width},h_${height},g_center`; + + result.width = width; + result.height = height; + } else { + imgPath += `/crop,w_${width},h_${width},g_center`; + + result.width = result.height = width; + } + result.imgPath = imgPath; + + return result; + }, + getMultipartParams() { + let policyText = { + "expiration": "2020-01-01T12:00:00.000Z", // 设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了 + "conditions": [ + ["content-length-range", 0, 1048576000] // 设置上传文件的大小限制 + ] + }; + + let policyBase64 = Base64.encode(JSON.stringify(policyText)); + let bytes = Crypto.HMAC(Crypto.SHA1, policyBase64, app.globalData.config.aliAccessKey, { asBytes: true }) ; + let signature = Crypto.util.bytesToBase64(bytes); + + return { + 'Filename': 'wx-applet-fittime/' + '${filename}', + 'key': '', + 'policy': policyBase64, + 'OSSAccessKeyId': app.globalData.config.aliAccessId, + 'success_action_status': '200', // 让服务端返回200,不然,默认会返回204 + 'signature': signature + }; + } +}; \ No newline at end of file diff --git a/utils/city.js b/utils/city.js new file mode 100644 index 0000000..a77f52f --- /dev/null +++ b/utils/city.js @@ -0,0 +1,4 @@ +var cityData = [{ "name": "北京市", "id": 110000, "cityList": [{ "districtList": [], "name": "东城区", "pid": 110000, "id": 110101 }, { "districtList": [], "name": "西城区", "pid": 110000, "id": 110102 }, { "districtList": [], "name": "朝阳区", "pid": 110000, "id": 110105 }, { "districtList": [], "name": "丰台区", "pid": 110000, "id": 110106 }, { "districtList": [], "name": "石景山区", "pid": 110000, "id": 110107 }, { "districtList": [], "name": "海淀区", "pid": 110000, "id": 110108 }, { "districtList": [], "name": "门头沟区", "pid": 110000, "id": 110109 }, { "districtList": [], "name": "房山区", "pid": 110000, "id": 110111 }, { "districtList": [], "name": "通州区", "pid": 110000, "id": 110112 }, { "districtList": [], "name": "顺义区", "pid": 110000, "id": 110113 }, { "districtList": [], "name": "昌平区", "pid": 110000, "id": 110114 }, { "districtList": [], "name": "大兴区", "pid": 110000, "id": 110115 }, { "districtList": [], "name": "怀柔区", "pid": 110000, "id": 110116 }, { "districtList": [], "name": "平谷区", "pid": 110000, "id": 110117 }, { "districtList": [], "name": "密云县", "pid": 110000, "id": 110228 }, { "districtList": [], "name": "延庆县", "pid": 110000, "id": 110229 }] }, { "name": "天津市", "id": 120000, "cityList": [{ "districtList": [], "name": "和平区", "pid": 120000, "id": 120101 }, { "districtList": [], "name": "河东区", "pid": 120000, "id": 120102 }, { "districtList": [], "name": "河西区", "pid": 120000, "id": 120103 }, { "districtList": [], "name": "南开区", "pid": 120000, "id": 120104 }, { "districtList": [], "name": "河北区", "pid": 120000, "id": 120105 }, { "districtList": [], "name": "红桥区", "pid": 120000, "id": 120106 }, { "districtList": [], "name": "东丽区", "pid": 120000, "id": 120110 }, { "districtList": [], "name": "西青区", "pid": 120000, "id": 120111 }, { "districtList": [], "name": "津南区", "pid": 120000, "id": 120112 }, { "districtList": [], "name": "北辰区", "pid": 120000, "id": 120113 }, { "districtList": [], "name": "武清区", "pid": 120000, "id": 120114 }, { "districtList": [], "name": "宝坻区", "pid": 120000, "id": 120115 }, { "districtList": [], "name": "滨海新区", "pid": 120000, "id": 120116 }, { "districtList": [], "name": "宁河县", "pid": 120000, "id": 120221 }, { "districtList": [], "name": "静海县", "pid": 120000, "id": 120223 }, { "districtList": [], "name": "蓟县", "pid": 120000, "id": 120225 }] }, { "name": "河北省", "id": 130000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 130100, "id": 130101 }, { "name": "长安区", "pid": 130100, "id": 130102 }, { "name": "桥东区", "pid": 130100, "id": 130103 }, { "name": "桥西区", "pid": 130100, "id": 130104 }, { "name": "新华区", "pid": 130100, "id": 130105 }, { "name": "井陉矿区", "pid": 130100, "id": 130107 }, { "name": "裕华区", "pid": 130100, "id": 130108 }, { "name": "井陉县", "pid": 130100, "id": 130121 }, { "name": "正定县", "pid": 130100, "id": 130123 }, { "name": "栾城县", "pid": 130100, "id": 130124 }, { "name": "行唐县", "pid": 130100, "id": 130125 }, { "name": "灵寿县", "pid": 130100, "id": 130126 }, { "name": "高邑县", "pid": 130100, "id": 130127 }, { "name": "深泽县", "pid": 130100, "id": 130128 }, { "name": "赞皇县", "pid": 130100, "id": 130129 }, { "name": "无极县", "pid": 130100, "id": 130130 }, { "name": "平山县", "pid": 130100, "id": 130131 }, { "name": "元氏县", "pid": 130100, "id": 130132 }, { "name": "赵县", "pid": 130100, "id": 130133 }, { "name": "辛集市", "pid": 130100, "id": 130181 }, { "name": "藁城市", "pid": 130100, "id": 130182 }, { "name": "晋州市", "pid": 130100, "id": 130183 }, { "name": "新乐市", "pid": 130100, "id": 130184 }, { "name": "鹿泉市", "pid": 130100, "id": 130185 }], "name": "石家庄市", "pid": 130000, "id": 130100 }, { "districtList": [{ "name": "市辖区", "pid": 130200, "id": 130201 }, { "name": "路南区", "pid": 130200, "id": 130202 }, { "name": "路北区", "pid": 130200, "id": 130203 }, { "name": "古冶区", "pid": 130200, "id": 130204 }, { "name": "开平区", "pid": 130200, "id": 130205 }, { "name": "丰南区", "pid": 130200, "id": 130207 }, { "name": "丰润区", "pid": 130200, "id": 130208 }, { "name": "曹妃甸区", "pid": 130200, "id": 130209 }, { "name": "滦县", "pid": 130200, "id": 130223 }, { "name": "滦南县", "pid": 130200, "id": 130224 }, { "name": "乐亭县", "pid": 130200, "id": 130225 }, { "name": "迁西县", "pid": 130200, "id": 130227 }, { "name": "玉田县", "pid": 130200, "id": 130229 }, { "name": "遵化市", "pid": 130200, "id": 130281 }, { "name": "迁安市", "pid": 130200, "id": 130283 }], "name": "唐山市", "pid": 130000, "id": 130200 }, { "districtList": [{ "name": "市辖区", "pid": 130300, "id": 130301 }, { "name": "海港区", "pid": 130300, "id": 130302 }, { "name": "山海关区", "pid": 130300, "id": 130303 }, { "name": "北戴河区", "pid": 130300, "id": 130304 }, { "name": "青龙满族自治县", "pid": 130300, "id": 130321 }, { "name": "昌黎县", "pid": 130300, "id": 130322 }, { "name": "抚宁县", "pid": 130300, "id": 130323 }, { "name": "卢龙县", "pid": 130300, "id": 130324 }], "name": "秦皇岛市", "pid": 130000, "id": 130300 }, { "districtList": [{ "name": "市辖区", "pid": 130400, "id": 130401 }, { "name": "邯山区", "pid": 130400, "id": 130402 }, { "name": "丛台区", "pid": 130400, "id": 130403 }, { "name": "复兴区", "pid": 130400, "id": 130404 }, { "name": "峰峰矿区", "pid": 130400, "id": 130406 }, { "name": "邯郸县", "pid": 130400, "id": 130421 }, { "name": "临漳县", "pid": 130400, "id": 130423 }, { "name": "成安县", "pid": 130400, "id": 130424 }, { "name": "大名县", "pid": 130400, "id": 130425 }, { "name": "涉县", "pid": 130400, "id": 130426 }, { "name": "磁县", "pid": 130400, "id": 130427 }, { "name": "肥乡县", "pid": 130400, "id": 130428 }, { "name": "永年县", "pid": 130400, "id": 130429 }, { "name": "邱县", "pid": 130400, "id": 130430 }, { "name": "鸡泽县", "pid": 130400, "id": 130431 }, { "name": "广平县", "pid": 130400, "id": 130432 }, { "name": "馆陶县", "pid": 130400, "id": 130433 }, { "name": "魏县", "pid": 130400, "id": 130434 }, { "name": "曲周县", "pid": 130400, "id": 130435 }, { "name": "武安市", "pid": 130400, "id": 130481 }], "name": "邯郸市", "pid": 130000, "id": 130400 }, { "districtList": [{ "name": "市辖区", "pid": 130500, "id": 130501 }, { "name": "桥东区", "pid": 130500, "id": 130502 }, { "name": "桥西区", "pid": 130500, "id": 130503 }, { "name": "邢台县", "pid": 130500, "id": 130521 }, { "name": "临城县", "pid": 130500, "id": 130522 }, { "name": "内丘县", "pid": 130500, "id": 130523 }, { "name": "柏乡县", "pid": 130500, "id": 130524 }, { "name": "隆尧县", "pid": 130500, "id": 130525 }, { "name": "任县", "pid": 130500, "id": 130526 }, { "name": "南和县", "pid": 130500, "id": 130527 }, { "name": "宁晋县", "pid": 130500, "id": 130528 }, { "name": "巨鹿县", "pid": 130500, "id": 130529 }, { "name": "新河县", "pid": 130500, "id": 130530 }, { "name": "广宗县", "pid": 130500, "id": 130531 }, { "name": "平乡县", "pid": 130500, "id": 130532 }, { "name": "威县", "pid": 130500, "id": 130533 }, { "name": "清河县", "pid": 130500, "id": 130534 }, { "name": "临西县", "pid": 130500, "id": 130535 }, { "name": "南宫市", "pid": 130500, "id": 130581 }, { "name": "沙河市", "pid": 130500, "id": 130582 }], "name": "邢台市", "pid": 130000, "id": 130500 }, { "districtList": [{ "name": "市辖区", "pid": 130600, "id": 130601 }, { "name": "新市区", "pid": 130600, "id": 130602 }, { "name": "北市区", "pid": 130600, "id": 130603 }, { "name": "南市区", "pid": 130600, "id": 130604 }, { "name": "满城县", "pid": 130600, "id": 130621 }, { "name": "清苑县", "pid": 130600, "id": 130622 }, { "name": "涞水县", "pid": 130600, "id": 130623 }, { "name": "阜平县", "pid": 130600, "id": 130624 }, { "name": "徐水县", "pid": 130600, "id": 130625 }, { "name": "定兴县", "pid": 130600, "id": 130626 }, { "name": "唐县", "pid": 130600, "id": 130627 }, { "name": "高阳县", "pid": 130600, "id": 130628 }, { "name": "容城县", "pid": 130600, "id": 130629 }, { "name": "涞源县", "pid": 130600, "id": 130630 }, { "name": "望都县", "pid": 130600, "id": 130631 }, { "name": "安新县", "pid": 130600, "id": 130632 }, { "name": "易县", "pid": 130600, "id": 130633 }, { "name": "曲阳县", "pid": 130600, "id": 130634 }, { "name": "蠡县", "pid": 130600, "id": 130635 }, { "name": "顺平县", "pid": 130600, "id": 130636 }, { "name": "博野县", "pid": 130600, "id": 130637 }, { "name": "雄县", "pid": 130600, "id": 130638 }, { "name": "涿州市", "pid": 130600, "id": 130681 }, { "name": "定州市", "pid": 130600, "id": 130682 }, { "name": "安国市", "pid": 130600, "id": 130683 }, { "name": "高碑店市", "pid": 130600, "id": 130684 }], "name": "保定市", "pid": 130000, "id": 130600 }, { "districtList": [{ "name": "市辖区", "pid": 130700, "id": 130701 }, { "name": "桥东区", "pid": 130700, "id": 130702 }, { "name": "桥西区", "pid": 130700, "id": 130703 }, { "name": "宣化区", "pid": 130700, "id": 130705 }, { "name": "下花园区", "pid": 130700, "id": 130706 }, { "name": "宣化县", "pid": 130700, "id": 130721 }, { "name": "张北县", "pid": 130700, "id": 130722 }, { "name": "康保县", "pid": 130700, "id": 130723 }, { "name": "沽源县", "pid": 130700, "id": 130724 }, { "name": "尚义县", "pid": 130700, "id": 130725 }, { "name": "蔚县", "pid": 130700, "id": 130726 }, { "name": "阳原县", "pid": 130700, "id": 130727 }, { "name": "怀安县", "pid": 130700, "id": 130728 }, { "name": "万全县", "pid": 130700, "id": 130729 }, { "name": "怀来县", "pid": 130700, "id": 130730 }, { "name": "涿鹿县", "pid": 130700, "id": 130731 }, { "name": "赤城县", "pid": 130700, "id": 130732 }, { "name": "崇礼县", "pid": 130700, "id": 130733 }], "name": "张家口市", "pid": 130000, "id": 130700 }, { "districtList": [{ "name": "市辖区", "pid": 130800, "id": 130801 }, { "name": "双桥区", "pid": 130800, "id": 130802 }, { "name": "双滦区", "pid": 130800, "id": 130803 }, { "name": "鹰手营子矿区", "pid": 130800, "id": 130804 }, { "name": "承德县", "pid": 130800, "id": 130821 }, { "name": "兴隆县", "pid": 130800, "id": 130822 }, { "name": "平泉县", "pid": 130800, "id": 130823 }, { "name": "滦平县", "pid": 130800, "id": 130824 }, { "name": "隆化县", "pid": 130800, "id": 130825 }, { "name": "丰宁满族自治县", "pid": 130800, "id": 130826 }, { "name": "宽城满族自治县", "pid": 130800, "id": 130827 }, { "name": "围场满族蒙古族自治县", "pid": 130800, "id": 130828 }], "name": "承德市", "pid": 130000, "id": 130800 }, { "districtList": [{ "name": "市辖区", "pid": 130900, "id": 130901 }, { "name": "新华区", "pid": 130900, "id": 130902 }, { "name": "运河区", "pid": 130900, "id": 130903 }, { "name": "沧县", "pid": 130900, "id": 130921 }, { "name": "青县", "pid": 130900, "id": 130922 }, { "name": "东光县", "pid": 130900, "id": 130923 }, { "name": "海兴县", "pid": 130900, "id": 130924 }, { "name": "盐山县", "pid": 130900, "id": 130925 }, { "name": "肃宁县", "pid": 130900, "id": 130926 }, { "name": "南皮县", "pid": 130900, "id": 130927 }, { "name": "吴桥县", "pid": 130900, "id": 130928 }, { "name": "献县", "pid": 130900, "id": 130929 }, { "name": "孟村回族自治县", "pid": 130900, "id": 130930 }, { "name": "泊头市", "pid": 130900, "id": 130981 }, { "name": "任丘市", "pid": 130900, "id": 130982 }, { "name": "黄骅市", "pid": 130900, "id": 130983 }, { "name": "河间市", "pid": 130900, "id": 130984 }], "name": "沧州市", "pid": 130000, "id": 130900 }, { "districtList": [{ "name": "市辖区", "pid": 131000, "id": 131001 }, { "name": "安次区", "pid": 131000, "id": 131002 }, { "name": "广阳区", "pid": 131000, "id": 131003 }, { "name": "固安县", "pid": 131000, "id": 131022 }, { "name": "永清县", "pid": 131000, "id": 131023 }, { "name": "香河县", "pid": 131000, "id": 131024 }, { "name": "大城县", "pid": 131000, "id": 131025 }, { "name": "文安县", "pid": 131000, "id": 131026 }, { "name": "大厂回族自治县", "pid": 131000, "id": 131028 }, { "name": "霸州市", "pid": 131000, "id": 131081 }, { "name": "三河市", "pid": 131000, "id": 131082 }], "name": "廊坊市", "pid": 130000, "id": 131000 }, { "districtList": [{ "name": "市辖区", "pid": 131100, "id": 131101 }, { "name": "桃城区", "pid": 131100, "id": 131102 }, { "name": "枣强县", "pid": 131100, "id": 131121 }, { "name": "武邑县", "pid": 131100, "id": 131122 }, { "name": "武强县", "pid": 131100, "id": 131123 }, { "name": "饶阳县", "pid": 131100, "id": 131124 }, { "name": "安平县", "pid": 131100, "id": 131125 }, { "name": "故城县", "pid": 131100, "id": 131126 }, { "name": "景县", "pid": 131100, "id": 131127 }, { "name": "阜城县", "pid": 131100, "id": 131128 }, { "name": "冀州市", "pid": 131100, "id": 131181 }, { "name": "深州市", "pid": 131100, "id": 131182 }], "name": "衡水市", "pid": 130000, "id": 131100 }] }, { "name": "山西省", "id": 140000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 140100, "id": 140101 }, { "name": "小店区", "pid": 140100, "id": 140105 }, { "name": "迎泽区", "pid": 140100, "id": 140106 }, { "name": "杏花岭区", "pid": 140100, "id": 140107 }, { "name": "尖草坪区", "pid": 140100, "id": 140108 }, { "name": "万柏林区", "pid": 140100, "id": 140109 }, { "name": "晋源区", "pid": 140100, "id": 140110 }, { "name": "清徐县", "pid": 140100, "id": 140121 }, { "name": "阳曲县", "pid": 140100, "id": 140122 }, { "name": "娄烦县", "pid": 140100, "id": 140123 }, { "name": "古交市", "pid": 140100, "id": 140181 }], "name": "太原市", "pid": 140000, "id": 140100 }, { "districtList": [{ "name": "市辖区", "pid": 140200, "id": 140201 }, { "name": "城区", "pid": 140200, "id": 140202 }, { "name": "矿区", "pid": 140200, "id": 140203 }, { "name": "南郊区", "pid": 140200, "id": 140211 }, { "name": "新荣区", "pid": 140200, "id": 140212 }, { "name": "阳高县", "pid": 140200, "id": 140221 }, { "name": "天镇县", "pid": 140200, "id": 140222 }, { "name": "广灵县", "pid": 140200, "id": 140223 }, { "name": "灵丘县", "pid": 140200, "id": 140224 }, { "name": "浑源县", "pid": 140200, "id": 140225 }, { "name": "左云县", "pid": 140200, "id": 140226 }, { "name": "大同县", "pid": 140200, "id": 140227 }], "name": "大同市", "pid": 140000, "id": 140200 }, { "districtList": [{ "name": "市辖区", "pid": 140300, "id": 140301 }, { "name": "城区", "pid": 140300, "id": 140302 }, { "name": "矿区", "pid": 140300, "id": 140303 }, { "name": "郊区", "pid": 140300, "id": 140311 }, { "name": "平定县", "pid": 140300, "id": 140321 }, { "name": "盂县", "pid": 140300, "id": 140322 }], "name": "阳泉市", "pid": 140000, "id": 140300 }, { "districtList": [{ "name": "市辖区", "pid": 140400, "id": 140401 }, { "name": "城区", "pid": 140400, "id": 140402 }, { "name": "郊区", "pid": 140400, "id": 140411 }, { "name": "长治县", "pid": 140400, "id": 140421 }, { "name": "襄垣县", "pid": 140400, "id": 140423 }, { "name": "屯留县", "pid": 140400, "id": 140424 }, { "name": "平顺县", "pid": 140400, "id": 140425 }, { "name": "黎城县", "pid": 140400, "id": 140426 }, { "name": "壶关县", "pid": 140400, "id": 140427 }, { "name": "长子县", "pid": 140400, "id": 140428 }, { "name": "武乡县", "pid": 140400, "id": 140429 }, { "name": "沁县", "pid": 140400, "id": 140430 }, { "name": "沁源县", "pid": 140400, "id": 140431 }, { "name": "潞城市", "pid": 140400, "id": 140481 }], "name": "长治市", "pid": 140000, "id": 140400 }, { "districtList": [{ "name": "市辖区", "pid": 140500, "id": 140501 }, { "name": "城区", "pid": 140500, "id": 140502 }, { "name": "沁水县", "pid": 140500, "id": 140521 }, { "name": "阳城县", "pid": 140500, "id": 140522 }, { "name": "陵川县", "pid": 140500, "id": 140524 }, { "name": "泽州县", "pid": 140500, "id": 140525 }, { "name": "高平市", "pid": 140500, "id": 140581 }], "name": "晋城市", "pid": 140000, "id": 140500 }, { "districtList": [{ "name": "市辖区", "pid": 140600, "id": 140601 }, { "name": "朔城区", "pid": 140600, "id": 140602 }, { "name": "平鲁区", "pid": 140600, "id": 140603 }, { "name": "山阴县", "pid": 140600, "id": 140621 }, { "name": "应县", "pid": 140600, "id": 140622 }, { "name": "右玉县", "pid": 140600, "id": 140623 }, { "name": "怀仁县", "pid": 140600, "id": 140624 }], "name": "朔州市", "pid": 140000, "id": 140600 }, { "districtList": [{ "name": "市辖区", "pid": 140700, "id": 140701 }, { "name": "榆次区", "pid": 140700, "id": 140702 }, { "name": "榆社县", "pid": 140700, "id": 140721 }, { "name": "左权县", "pid": 140700, "id": 140722 }, { "name": "和顺县", "pid": 140700, "id": 140723 }, { "name": "昔阳县", "pid": 140700, "id": 140724 }, { "name": "寿阳县", "pid": 140700, "id": 140725 }, { "name": "太谷县", "pid": 140700, "id": 140726 }, { "name": "祁县", "pid": 140700, "id": 140727 }, { "name": "平遥县", "pid": 140700, "id": 140728 }, { "name": "灵石县", "pid": 140700, "id": 140729 }, { "name": "介休市", "pid": 140700, "id": 140781 }], "name": "晋中市", "pid": 140000, "id": 140700 }, { "districtList": [{ "name": "市辖区", "pid": 140800, "id": 140801 }, { "name": "盐湖区", "pid": 140800, "id": 140802 }, { "name": "临猗县", "pid": 140800, "id": 140821 }, { "name": "万荣县", "pid": 140800, "id": 140822 }, { "name": "闻喜县", "pid": 140800, "id": 140823 }, { "name": "稷山县", "pid": 140800, "id": 140824 }, { "name": "新绛县", "pid": 140800, "id": 140825 }, { "name": "绛县", "pid": 140800, "id": 140826 }, { "name": "垣曲县", "pid": 140800, "id": 140827 }, { "name": "夏县", "pid": 140800, "id": 140828 }, { "name": "平陆县", "pid": 140800, "id": 140829 }, { "name": "芮城县", "pid": 140800, "id": 140830 }, { "name": "永济市", "pid": 140800, "id": 140881 }, { "name": "河津市", "pid": 140800, "id": 140882 }], "name": "运城市", "pid": 140000, "id": 140800 }, { "districtList": [{ "name": "市辖区", "pid": 140900, "id": 140901 }, { "name": "忻府区", "pid": 140900, "id": 140902 }, { "name": "定襄县", "pid": 140900, "id": 140921 }, { "name": "五台县", "pid": 140900, "id": 140922 }, { "name": "代县", "pid": 140900, "id": 140923 }, { "name": "繁峙县", "pid": 140900, "id": 140924 }, { "name": "宁武县", "pid": 140900, "id": 140925 }, { "name": "静乐县", "pid": 140900, "id": 140926 }, { "name": "神池县", "pid": 140900, "id": 140927 }, { "name": "五寨县", "pid": 140900, "id": 140928 }, { "name": "岢岚县", "pid": 140900, "id": 140929 }, { "name": "河曲县", "pid": 140900, "id": 140930 }, { "name": "保德县", "pid": 140900, "id": 140931 }, { "name": "偏关县", "pid": 140900, "id": 140932 }, { "name": "原平市", "pid": 140900, "id": 140981 }], "name": "忻州市", "pid": 140000, "id": 140900 }, { "districtList": [{ "name": "市辖区", "pid": 141000, "id": 141001 }, { "name": "尧都区", "pid": 141000, "id": 141002 }, { "name": "曲沃县", "pid": 141000, "id": 141021 }, { "name": "翼城县", "pid": 141000, "id": 141022 }, { "name": "襄汾县", "pid": 141000, "id": 141023 }, { "name": "洪洞县", "pid": 141000, "id": 141024 }, { "name": "古县", "pid": 141000, "id": 141025 }, { "name": "安泽县", "pid": 141000, "id": 141026 }, { "name": "浮山县", "pid": 141000, "id": 141027 }, { "name": "吉县", "pid": 141000, "id": 141028 }, { "name": "乡宁县", "pid": 141000, "id": 141029 }, { "name": "大宁县", "pid": 141000, "id": 141030 }, { "name": "隰县", "pid": 141000, "id": 141031 }, { "name": "永和县", "pid": 141000, "id": 141032 }, { "name": "蒲县", "pid": 141000, "id": 141033 }, { "name": "汾西县", "pid": 141000, "id": 141034 }, { "name": "侯马市", "pid": 141000, "id": 141081 }, { "name": "霍州市", "pid": 141000, "id": 141082 }], "name": "临汾市", "pid": 140000, "id": 141000 }, { "districtList": [{ "name": "市辖区", "pid": 141100, "id": 141101 }, { "name": "离石区", "pid": 141100, "id": 141102 }, { "name": "文水县", "pid": 141100, "id": 141121 }, { "name": "交城县", "pid": 141100, "id": 141122 }, { "name": "兴县", "pid": 141100, "id": 141123 }, { "name": "临县", "pid": 141100, "id": 141124 }, { "name": "柳林县", "pid": 141100, "id": 141125 }, { "name": "石楼县", "pid": 141100, "id": 141126 }, { "name": "岚县", "pid": 141100, "id": 141127 }, { "name": "方山县", "pid": 141100, "id": 141128 }, { "name": "中阳县", "pid": 141100, "id": 141129 }, { "name": "交口县", "pid": 141100, "id": 141130 }, { "name": "孝义市", "pid": 141100, "id": 141181 }, { "name": "汾阳市", "pid": 141100, "id": 141182 }], "name": "吕梁市", "pid": 140000, "id": 141100 }] }, { "name": "内蒙古自治区", "id": 150000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 150100, "id": 150101 }, { "name": "新城区", "pid": 150100, "id": 150102 }, { "name": "回民区", "pid": 150100, "id": 150103 }, { "name": "玉泉区", "pid": 150100, "id": 150104 }, { "name": "赛罕区", "pid": 150100, "id": 150105 }, { "name": "土默特左旗", "pid": 150100, "id": 150121 }, { "name": "托克托县", "pid": 150100, "id": 150122 }, { "name": "和林格尔县", "pid": 150100, "id": 150123 }, { "name": "清水河县", "pid": 150100, "id": 150124 }, { "name": "武川县", "pid": 150100, "id": 150125 }], "name": "呼和浩特市", "pid": 150000, "id": 150100 }, { "districtList": [{ "name": "市辖区", "pid": 150200, "id": 150201 }, { "name": "东河区", "pid": 150200, "id": 150202 }, { "name": "昆都仑区", "pid": 150200, "id": 150203 }, { "name": "青山区", "pid": 150200, "id": 150204 }, { "name": "石拐区", "pid": 150200, "id": 150205 }, { "name": "白云鄂博矿区", "pid": 150200, "id": 150206 }, { "name": "九原区", "pid": 150200, "id": 150207 }, { "name": "土默特右旗", "pid": 150200, "id": 150221 }, { "name": "固阳县", "pid": 150200, "id": 150222 }, { "name": "达尔罕茂明安联合旗", "pid": 150200, "id": 150223 }], "name": "包头市", "pid": 150000, "id": 150200 }, { "districtList": [{ "name": "市辖区", "pid": 150300, "id": 150301 }, { "name": "海勃湾区", "pid": 150300, "id": 150302 }, { "name": "海南区", "pid": 150300, "id": 150303 }, { "name": "乌达区", "pid": 150300, "id": 150304 }], "name": "乌海市", "pid": 150000, "id": 150300 }, { "districtList": [{ "name": "市辖区", "pid": 150400, "id": 150401 }, { "name": "红山区", "pid": 150400, "id": 150402 }, { "name": "元宝山区", "pid": 150400, "id": 150403 }, { "name": "松山区", "pid": 150400, "id": 150404 }, { "name": "阿鲁科尔沁旗", "pid": 150400, "id": 150421 }, { "name": "巴林左旗", "pid": 150400, "id": 150422 }, { "name": "巴林右旗", "pid": 150400, "id": 150423 }, { "name": "林西县", "pid": 150400, "id": 150424 }, { "name": "克什克腾旗", "pid": 150400, "id": 150425 }, { "name": "翁牛特旗", "pid": 150400, "id": 150426 }, { "name": "喀喇沁旗", "pid": 150400, "id": 150428 }, { "name": "宁城县", "pid": 150400, "id": 150429 }, { "name": "敖汉旗", "pid": 150400, "id": 150430 }], "name": "赤峰市", "pid": 150000, "id": 150400 }, { "districtList": [{ "name": "市辖区", "pid": 150500, "id": 150501 }, { "name": "科尔沁区", "pid": 150500, "id": 150502 }, { "name": "科尔沁左翼中旗", "pid": 150500, "id": 150521 }, { "name": "科尔沁左翼后旗", "pid": 150500, "id": 150522 }, { "name": "开鲁县", "pid": 150500, "id": 150523 }, { "name": "库伦旗", "pid": 150500, "id": 150524 }, { "name": "奈曼旗", "pid": 150500, "id": 150525 }, { "name": "扎鲁特旗", "pid": 150500, "id": 150526 }, { "name": "霍林郭勒市", "pid": 150500, "id": 150581 }], "name": "通辽市", "pid": 150000, "id": 150500 }, { "districtList": [{ "name": "市辖区", "pid": 150600, "id": 150601 }, { "name": "东胜区", "pid": 150600, "id": 150602 }, { "name": "达拉特旗", "pid": 150600, "id": 150621 }, { "name": "准格尔旗", "pid": 150600, "id": 150622 }, { "name": "鄂托克前旗", "pid": 150600, "id": 150623 }, { "name": "鄂托克旗", "pid": 150600, "id": 150624 }, { "name": "杭锦旗", "pid": 150600, "id": 150625 }, { "name": "乌审旗", "pid": 150600, "id": 150626 }, { "name": "伊金霍洛旗", "pid": 150600, "id": 150627 }], "name": "鄂尔多斯市", "pid": 150000, "id": 150600 }, { "districtList": [{ "name": "市辖区", "pid": 150700, "id": 150701 }, { "name": "海拉尔区", "pid": 150700, "id": 150702 }, { "name": "扎赉诺尔区", "pid": 150700, "id": 150703 }, { "name": "阿荣旗", "pid": 150700, "id": 150721 }, { "name": "莫力达瓦达斡尔族自治旗", "pid": 150700, "id": 150722 }, { "name": "鄂伦春自治旗", "pid": 150700, "id": 150723 }, { "name": "鄂温克族自治旗", "pid": 150700, "id": 150724 }, { "name": "陈巴尔虎旗", "pid": 150700, "id": 150725 }, { "name": "新巴尔虎左旗", "pid": 150700, "id": 150726 }, { "name": "新巴尔虎右旗", "pid": 150700, "id": 150727 }, { "name": "满洲里市", "pid": 150700, "id": 150781 }, { "name": "牙克石市", "pid": 150700, "id": 150782 }, { "name": "扎兰屯市", "pid": 150700, "id": 150783 }, { "name": "额尔古纳市", "pid": 150700, "id": 150784 }, { "name": "根河市", "pid": 150700, "id": 150785 }], "name": "呼伦贝尔市", "pid": 150000, "id": 150700 }, { "districtList": [{ "name": "市辖区", "pid": 150800, "id": 150801 }, { "name": "临河区", "pid": 150800, "id": 150802 }, { "name": "五原县", "pid": 150800, "id": 150821 }, { "name": "磴口县", "pid": 150800, "id": 150822 }, { "name": "乌拉特前旗", "pid": 150800, "id": 150823 }, { "name": "乌拉特中旗", "pid": 150800, "id": 150824 }, { "name": "乌拉特后旗", "pid": 150800, "id": 150825 }, { "name": "杭锦后旗", "pid": 150800, "id": 150826 }], "name": "巴彦淖尔市", "pid": 150000, "id": 150800 }, { "districtList": [{ "name": "市辖区", "pid": 150900, "id": 150901 }, { "name": "集宁区", "pid": 150900, "id": 150902 }, { "name": "卓资县", "pid": 150900, "id": 150921 }, { "name": "化德县", "pid": 150900, "id": 150922 }, { "name": "商都县", "pid": 150900, "id": 150923 }, { "name": "兴和县", "pid": 150900, "id": 150924 }, { "name": "凉城县", "pid": 150900, "id": 150925 }, { "name": "察哈尔右翼前旗", "pid": 150900, "id": 150926 }, { "name": "察哈尔右翼中旗", "pid": 150900, "id": 150927 }, { "name": "察哈尔右翼后旗", "pid": 150900, "id": 150928 }, { "name": "四子王旗", "pid": 150900, "id": 150929 }, { "name": "丰镇市", "pid": 150900, "id": 150981 }], "name": "乌兰察布市", "pid": 150000, "id": 150900 }, { "districtList": [{ "name": "乌兰浩特市", "pid": 152200, "id": 152201 }, { "name": "阿尔山市", "pid": 152200, "id": 152202 }, { "name": "科尔沁右翼前旗", "pid": 152200, "id": 152221 }, { "name": "科尔沁右翼中旗", "pid": 152200, "id": 152222 }, { "name": "扎赉特旗", "pid": 152200, "id": 152223 }, { "name": "突泉县", "pid": 152200, "id": 152224 }], "name": "兴安盟", "pid": 150000, "id": 152200 }, { "districtList": [{ "name": "二连浩特市", "pid": 152500, "id": 152501 }, { "name": "锡林浩特市", "pid": 152500, "id": 152502 }, { "name": "阿巴嘎旗", "pid": 152500, "id": 152522 }, { "name": "苏尼特左旗", "pid": 152500, "id": 152523 }, { "name": "苏尼特右旗", "pid": 152500, "id": 152524 }, { "name": "东乌珠穆沁旗", "pid": 152500, "id": 152525 }, { "name": "西乌珠穆沁旗", "pid": 152500, "id": 152526 }, { "name": "太仆寺旗", "pid": 152500, "id": 152527 }, { "name": "镶黄旗", "pid": 152500, "id": 152528 }, { "name": "正镶白旗", "pid": 152500, "id": 152529 }, { "name": "正蓝旗", "pid": 152500, "id": 152530 }, { "name": "多伦县", "pid": 152500, "id": 152531 }], "name": "锡林郭勒盟", "pid": 150000, "id": 152500 }, { "districtList": [{ "name": "阿拉善左旗", "pid": 152900, "id": 152921 }, { "name": "阿拉善右旗", "pid": 152900, "id": 152922 }, { "name": "额济纳旗", "pid": 152900, "id": 152923 }], "name": "阿拉善盟", "pid": 150000, "id": 152900 }] }, { "name": "辽宁省", "id": 210000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 210100, "id": 210101 }, { "name": "和平区", "pid": 210100, "id": 210102 }, { "name": "沈河区", "pid": 210100, "id": 210103 }, { "name": "大东区", "pid": 210100, "id": 210104 }, { "name": "皇姑区", "pid": 210100, "id": 210105 }, { "name": "铁西区", "pid": 210100, "id": 210106 }, { "name": "苏家屯区", "pid": 210100, "id": 210111 }, { "name": "东陵区", "pid": 210100, "id": 210112 }, { "name": "沈北新区", "pid": 210100, "id": 210113 }, { "name": "于洪区", "pid": 210100, "id": 210114 }, { "name": "辽中县", "pid": 210100, "id": 210122 }, { "name": "康平县", "pid": 210100, "id": 210123 }, { "name": "法库县", "pid": 210100, "id": 210124 }, { "name": "新民市", "pid": 210100, "id": 210181 }], "name": "沈阳市", "pid": 210000, "id": 210100 }, { "districtList": [{ "name": "市辖区", "pid": 210200, "id": 210201 }, { "name": "中山区", "pid": 210200, "id": 210202 }, { "name": "西岗区", "pid": 210200, "id": 210203 }, { "name": "沙河口区", "pid": 210200, "id": 210204 }, { "name": "甘井子区", "pid": 210200, "id": 210211 }, { "name": "旅顺口区", "pid": 210200, "id": 210212 }, { "name": "金州区", "pid": 210200, "id": 210213 }, { "name": "长海县", "pid": 210200, "id": 210224 }, { "name": "瓦房店市", "pid": 210200, "id": 210281 }, { "name": "普兰店市", "pid": 210200, "id": 210282 }, { "name": "庄河市", "pid": 210200, "id": 210283 }], "name": "大连市", "pid": 210000, "id": 210200 }, { "districtList": [{ "name": "市辖区", "pid": 210300, "id": 210301 }, { "name": "铁东区", "pid": 210300, "id": 210302 }, { "name": "铁西区", "pid": 210300, "id": 210303 }, { "name": "立山区", "pid": 210300, "id": 210304 }, { "name": "千山区", "pid": 210300, "id": 210311 }, { "name": "台安县", "pid": 210300, "id": 210321 }, { "name": "岫岩满族自治县", "pid": 210300, "id": 210323 }, { "name": "海城市", "pid": 210300, "id": 210381 }], "name": "鞍山市", "pid": 210000, "id": 210300 }, { "districtList": [{ "name": "市辖区", "pid": 210400, "id": 210401 }, { "name": "新抚区", "pid": 210400, "id": 210402 }, { "name": "东洲区", "pid": 210400, "id": 210403 }, { "name": "望花区", "pid": 210400, "id": 210404 }, { "name": "顺城区", "pid": 210400, "id": 210411 }, { "name": "抚顺县", "pid": 210400, "id": 210421 }, { "name": "新宾满族自治县", "pid": 210400, "id": 210422 }, { "name": "清原满族自治县", "pid": 210400, "id": 210423 }], "name": "抚顺市", "pid": 210000, "id": 210400 }, { "districtList": [{ "name": "市辖区", "pid": 210500, "id": 210501 }, { "name": "平山区", "pid": 210500, "id": 210502 }, { "name": "溪湖区", "pid": 210500, "id": 210503 }, { "name": "明山区", "pid": 210500, "id": 210504 }, { "name": "南芬区", "pid": 210500, "id": 210505 }, { "name": "本溪满族自治县", "pid": 210500, "id": 210521 }, { "name": "桓仁满族自治县", "pid": 210500, "id": 210522 }], "name": "本溪市", "pid": 210000, "id": 210500 }, { "districtList": [{ "name": "市辖区", "pid": 210600, "id": 210601 }, { "name": "元宝区", "pid": 210600, "id": 210602 }, { "name": "振兴区", "pid": 210600, "id": 210603 }, { "name": "振安区", "pid": 210600, "id": 210604 }, { "name": "宽甸满族自治县", "pid": 210600, "id": 210624 }, { "name": "东港市", "pid": 210600, "id": 210681 }, { "name": "凤城市", "pid": 210600, "id": 210682 }], "name": "丹东市", "pid": 210000, "id": 210600 }, { "districtList": [{ "name": "市辖区", "pid": 210700, "id": 210701 }, { "name": "古塔区", "pid": 210700, "id": 210702 }, { "name": "凌河区", "pid": 210700, "id": 210703 }, { "name": "太和区", "pid": 210700, "id": 210711 }, { "name": "黑山县", "pid": 210700, "id": 210726 }, { "name": "义县", "pid": 210700, "id": 210727 }, { "name": "凌海市", "pid": 210700, "id": 210781 }, { "name": "北镇市", "pid": 210700, "id": 210782 }], "name": "锦州市", "pid": 210000, "id": 210700 }, { "districtList": [{ "name": "市辖区", "pid": 210800, "id": 210801 }, { "name": "站前区", "pid": 210800, "id": 210802 }, { "name": "西市区", "pid": 210800, "id": 210803 }, { "name": "鲅鱼圈区", "pid": 210800, "id": 210804 }, { "name": "老边区", "pid": 210800, "id": 210811 }, { "name": "盖州市", "pid": 210800, "id": 210881 }, { "name": "大石桥市", "pid": 210800, "id": 210882 }], "name": "营口市", "pid": 210000, "id": 210800 }, { "districtList": [{ "name": "市辖区", "pid": 210900, "id": 210901 }, { "name": "海州区", "pid": 210900, "id": 210902 }, { "name": "新邱区", "pid": 210900, "id": 210903 }, { "name": "太平区", "pid": 210900, "id": 210904 }, { "name": "清河门区", "pid": 210900, "id": 210905 }, { "name": "细河区", "pid": 210900, "id": 210911 }, { "name": "阜新蒙古族自治县", "pid": 210900, "id": 210921 }, { "name": "彰武县", "pid": 210900, "id": 210922 }], "name": "阜新市", "pid": 210000, "id": 210900 }, { "districtList": [{ "name": "市辖区", "pid": 211000, "id": 211001 }, { "name": "白塔区", "pid": 211000, "id": 211002 }, { "name": "文圣区", "pid": 211000, "id": 211003 }, { "name": "宏伟区", "pid": 211000, "id": 211004 }, { "name": "弓长岭区", "pid": 211000, "id": 211005 }, { "name": "太子河区", "pid": 211000, "id": 211011 }, { "name": "辽阳县", "pid": 211000, "id": 211021 }, { "name": "灯塔市", "pid": 211000, "id": 211081 }], "name": "辽阳市", "pid": 210000, "id": 211000 }, { "districtList": [{ "name": "市辖区", "pid": 211100, "id": 211101 }, { "name": "双台子区", "pid": 211100, "id": 211102 }, { "name": "兴隆台区", "pid": 211100, "id": 211103 }, { "name": "大洼县", "pid": 211100, "id": 211121 }, { "name": "盘山县", "pid": 211100, "id": 211122 }], "name": "盘锦市", "pid": 210000, "id": 211100 }, { "districtList": [{ "name": "市辖区", "pid": 211200, "id": 211201 }, { "name": "银州区", "pid": 211200, "id": 211202 }, { "name": "清河区", "pid": 211200, "id": 211204 }, { "name": "铁岭县", "pid": 211200, "id": 211221 }, { "name": "西丰县", "pid": 211200, "id": 211223 }, { "name": "昌图县", "pid": 211200, "id": 211224 }, { "name": "调兵山市", "pid": 211200, "id": 211281 }, { "name": "开原市", "pid": 211200, "id": 211282 }], "name": "铁岭市", "pid": 210000, "id": 211200 }, { "districtList": [{ "name": "市辖区", "pid": 211300, "id": 211301 }, { "name": "双塔区", "pid": 211300, "id": 211302 }, { "name": "龙城区", "pid": 211300, "id": 211303 }, { "name": "朝阳县", "pid": 211300, "id": 211321 }, { "name": "建平县", "pid": 211300, "id": 211322 }, { "name": "喀喇沁左翼蒙古族自治县", "pid": 211300, "id": 211324 }, { "name": "北票市", "pid": 211300, "id": 211381 }, { "name": "凌源市", "pid": 211300, "id": 211382 }], "name": "朝阳市", "pid": 210000, "id": 211300 }, { "districtList": [{ "name": "市辖区", "pid": 211400, "id": 211401 }, { "name": "连山区", "pid": 211400, "id": 211402 }, { "name": "龙港区", "pid": 211400, "id": 211403 }, { "name": "南票区", "pid": 211400, "id": 211404 }, { "name": "绥中县", "pid": 211400, "id": 211421 }, { "name": "建昌县", "pid": 211400, "id": 211422 }, { "name": "兴城市", "pid": 211400, "id": 211481 }], "name": "葫芦岛市", "pid": 210000, "id": 211400 }] }, { "name": "吉林省", "id": 220000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 220100, "id": 220101 }, { "name": "南关区", "pid": 220100, "id": 220102 }, { "name": "宽城区", "pid": 220100, "id": 220103 }, { "name": "朝阳区", "pid": 220100, "id": 220104 }, { "name": "二道区", "pid": 220100, "id": 220105 }, { "name": "绿园区", "pid": 220100, "id": 220106 }, { "name": "双阳区", "pid": 220100, "id": 220112 }, { "name": "农安县", "pid": 220100, "id": 220122 }, { "name": "九台市", "pid": 220100, "id": 220181 }, { "name": "榆树市", "pid": 220100, "id": 220182 }, { "name": "德惠市", "pid": 220100, "id": 220183 }], "name": "长春市", "pid": 220000, "id": 220100 }, { "districtList": [{ "name": "市辖区", "pid": 220200, "id": 220201 }, { "name": "昌邑区", "pid": 220200, "id": 220202 }, { "name": "龙潭区", "pid": 220200, "id": 220203 }, { "name": "船营区", "pid": 220200, "id": 220204 }, { "name": "丰满区", "pid": 220200, "id": 220211 }, { "name": "永吉县", "pid": 220200, "id": 220221 }, { "name": "蛟河市", "pid": 220200, "id": 220281 }, { "name": "桦甸市", "pid": 220200, "id": 220282 }, { "name": "舒兰市", "pid": 220200, "id": 220283 }, { "name": "磐石市", "pid": 220200, "id": 220284 }], "name": "吉林市", "pid": 220000, "id": 220200 }, { "districtList": [{ "name": "市辖区", "pid": 220300, "id": 220301 }, { "name": "铁西区", "pid": 220300, "id": 220302 }, { "name": "铁东区", "pid": 220300, "id": 220303 }, { "name": "梨树县", "pid": 220300, "id": 220322 }, { "name": "伊通满族自治县", "pid": 220300, "id": 220323 }, { "name": "公主岭市", "pid": 220300, "id": 220381 }, { "name": "双辽市", "pid": 220300, "id": 220382 }], "name": "四平市", "pid": 220000, "id": 220300 }, { "districtList": [{ "name": "市辖区", "pid": 220400, "id": 220401 }, { "name": "龙山区", "pid": 220400, "id": 220402 }, { "name": "西安区", "pid": 220400, "id": 220403 }, { "name": "东丰县", "pid": 220400, "id": 220421 }, { "name": "东辽县", "pid": 220400, "id": 220422 }], "name": "辽源市", "pid": 220000, "id": 220400 }, { "districtList": [{ "name": "市辖区", "pid": 220500, "id": 220501 }, { "name": "东昌区", "pid": 220500, "id": 220502 }, { "name": "二道江区", "pid": 220500, "id": 220503 }, { "name": "通化县", "pid": 220500, "id": 220521 }, { "name": "辉南县", "pid": 220500, "id": 220523 }, { "name": "柳河县", "pid": 220500, "id": 220524 }, { "name": "梅河口市", "pid": 220500, "id": 220581 }, { "name": "集安市", "pid": 220500, "id": 220582 }], "name": "通化市", "pid": 220000, "id": 220500 }, { "districtList": [{ "name": "市辖区", "pid": 220600, "id": 220601 }, { "name": "浑江区", "pid": 220600, "id": 220602 }, { "name": "江源区", "pid": 220600, "id": 220605 }, { "name": "抚松县", "pid": 220600, "id": 220621 }, { "name": "靖宇县", "pid": 220600, "id": 220622 }, { "name": "长白朝鲜族自治县", "pid": 220600, "id": 220623 }, { "name": "临江市", "pid": 220600, "id": 220681 }], "name": "白山市", "pid": 220000, "id": 220600 }, { "districtList": [{ "name": "市辖区", "pid": 220700, "id": 220701 }, { "name": "宁江区", "pid": 220700, "id": 220702 }, { "name": "前郭尔罗斯蒙古族自治县", "pid": 220700, "id": 220721 }, { "name": "长岭县", "pid": 220700, "id": 220722 }, { "name": "乾安县", "pid": 220700, "id": 220723 }, { "name": "扶余市", "pid": 220700, "id": 220781 }], "name": "松原市", "pid": 220000, "id": 220700 }, { "districtList": [{ "name": "市辖区", "pid": 220800, "id": 220801 }, { "name": "洮北区", "pid": 220800, "id": 220802 }, { "name": "镇赉县", "pid": 220800, "id": 220821 }, { "name": "通榆县", "pid": 220800, "id": 220822 }, { "name": "洮南市", "pid": 220800, "id": 220881 }, { "name": "大安市", "pid": 220800, "id": 220882 }], "name": "白城市", "pid": 220000, "id": 220800 }, { "districtList": [{ "name": "延吉市", "pid": 222400, "id": 222401 }, { "name": "图们市", "pid": 222400, "id": 222402 }, { "name": "敦化市", "pid": 222400, "id": 222403 }, { "name": "珲春市", "pid": 222400, "id": 222404 }, { "name": "龙井市", "pid": 222400, "id": 222405 }, { "name": "和龙市", "pid": 222400, "id": 222406 }, { "name": "汪清县", "pid": 222400, "id": 222424 }, { "name": "安图县", "pid": 222400, "id": 222426 }], "name": "延边朝鲜族自治州", "pid": 220000, "id": 222400 }] }, { "name": "黑龙江省", "id": 230000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 230100, "id": 230101 }, { "name": "道里区", "pid": 230100, "id": 230102 }, { "name": "南岗区", "pid": 230100, "id": 230103 }, { "name": "道外区", "pid": 230100, "id": 230104 }, { "name": "平房区", "pid": 230100, "id": 230108 }, { "name": "松北区", "pid": 230100, "id": 230109 }, { "name": "香坊区", "pid": 230100, "id": 230110 }, { "name": "呼兰区", "pid": 230100, "id": 230111 }, { "name": "阿城区", "pid": 230100, "id": 230112 }, { "name": "依兰县", "pid": 230100, "id": 230123 }, { "name": "方正县", "pid": 230100, "id": 230124 }, { "name": "宾县", "pid": 230100, "id": 230125 }, { "name": "巴彦县", "pid": 230100, "id": 230126 }, { "name": "木兰县", "pid": 230100, "id": 230127 }, { "name": "通河县", "pid": 230100, "id": 230128 }, { "name": "延寿县", "pid": 230100, "id": 230129 }, { "name": "双城市", "pid": 230100, "id": 230182 }, { "name": "尚志市", "pid": 230100, "id": 230183 }, { "name": "五常市", "pid": 230100, "id": 230184 }], "name": "哈尔滨市", "pid": 230000, "id": 230100 }, { "districtList": [{ "name": "市辖区", "pid": 230200, "id": 230201 }, { "name": "龙沙区", "pid": 230200, "id": 230202 }, { "name": "建华区", "pid": 230200, "id": 230203 }, { "name": "铁锋区", "pid": 230200, "id": 230204 }, { "name": "昂昂溪区", "pid": 230200, "id": 230205 }, { "name": "富拉尔基区", "pid": 230200, "id": 230206 }, { "name": "碾子山区", "pid": 230200, "id": 230207 }, { "name": "梅里斯达斡尔族区", "pid": 230200, "id": 230208 }, { "name": "龙江县", "pid": 230200, "id": 230221 }, { "name": "依安县", "pid": 230200, "id": 230223 }, { "name": "泰来县", "pid": 230200, "id": 230224 }, { "name": "甘南县", "pid": 230200, "id": 230225 }, { "name": "富裕县", "pid": 230200, "id": 230227 }, { "name": "克山县", "pid": 230200, "id": 230229 }, { "name": "克东县", "pid": 230200, "id": 230230 }, { "name": "拜泉县", "pid": 230200, "id": 230231 }, { "name": "讷河市", "pid": 230200, "id": 230281 }], "name": "齐齐哈尔市", "pid": 230000, "id": 230200 }, { "districtList": [{ "name": "市辖区", "pid": 230300, "id": 230301 }, { "name": "鸡冠区", "pid": 230300, "id": 230302 }, { "name": "恒山区", "pid": 230300, "id": 230303 }, { "name": "滴道区", "pid": 230300, "id": 230304 }, { "name": "梨树区", "pid": 230300, "id": 230305 }, { "name": "城子河区", "pid": 230300, "id": 230306 }, { "name": "麻山区", "pid": 230300, "id": 230307 }, { "name": "鸡东县", "pid": 230300, "id": 230321 }, { "name": "虎林市", "pid": 230300, "id": 230381 }, { "name": "密山市", "pid": 230300, "id": 230382 }], "name": "鸡西市", "pid": 230000, "id": 230300 }, { "districtList": [{ "name": "市辖区", "pid": 230400, "id": 230401 }, { "name": "向阳区", "pid": 230400, "id": 230402 }, { "name": "工农区", "pid": 230400, "id": 230403 }, { "name": "南山区", "pid": 230400, "id": 230404 }, { "name": "兴安区", "pid": 230400, "id": 230405 }, { "name": "东山区", "pid": 230400, "id": 230406 }, { "name": "兴山区", "pid": 230400, "id": 230407 }, { "name": "萝北县", "pid": 230400, "id": 230421 }, { "name": "绥滨县", "pid": 230400, "id": 230422 }], "name": "鹤岗市", "pid": 230000, "id": 230400 }, { "districtList": [{ "name": "市辖区", "pid": 230500, "id": 230501 }, { "name": "尖山区", "pid": 230500, "id": 230502 }, { "name": "岭东区", "pid": 230500, "id": 230503 }, { "name": "四方台区", "pid": 230500, "id": 230505 }, { "name": "宝山区", "pid": 230500, "id": 230506 }, { "name": "集贤县", "pid": 230500, "id": 230521 }, { "name": "友谊县", "pid": 230500, "id": 230522 }, { "name": "宝清县", "pid": 230500, "id": 230523 }, { "name": "饶河县", "pid": 230500, "id": 230524 }], "name": "双鸭山市", "pid": 230000, "id": 230500 }, { "districtList": [{ "name": "市辖区", "pid": 230600, "id": 230601 }, { "name": "萨尔图区", "pid": 230600, "id": 230602 }, { "name": "龙凤区", "pid": 230600, "id": 230603 }, { "name": "让胡路区", "pid": 230600, "id": 230604 }, { "name": "红岗区", "pid": 230600, "id": 230605 }, { "name": "大同区", "pid": 230600, "id": 230606 }, { "name": "肇州县", "pid": 230600, "id": 230621 }, { "name": "肇源县", "pid": 230600, "id": 230622 }, { "name": "林甸县", "pid": 230600, "id": 230623 }, { "name": "杜尔伯特蒙古族自治县", "pid": 230600, "id": 230624 }], "name": "大庆市", "pid": 230000, "id": 230600 }, { "districtList": [{ "name": "市辖区", "pid": 230700, "id": 230701 }, { "name": "伊春区", "pid": 230700, "id": 230702 }, { "name": "南岔区", "pid": 230700, "id": 230703 }, { "name": "友好区", "pid": 230700, "id": 230704 }, { "name": "西林区", "pid": 230700, "id": 230705 }, { "name": "翠峦区", "pid": 230700, "id": 230706 }, { "name": "新青区", "pid": 230700, "id": 230707 }, { "name": "美溪区", "pid": 230700, "id": 230708 }, { "name": "金山屯区", "pid": 230700, "id": 230709 }, { "name": "五营区", "pid": 230700, "id": 230710 }, { "name": "乌马河区", "pid": 230700, "id": 230711 }, { "name": "汤旺河区", "pid": 230700, "id": 230712 }, { "name": "带岭区", "pid": 230700, "id": 230713 }, { "name": "乌伊岭区", "pid": 230700, "id": 230714 }, { "name": "红星区", "pid": 230700, "id": 230715 }, { "name": "上甘岭区", "pid": 230700, "id": 230716 }, { "name": "嘉荫县", "pid": 230700, "id": 230722 }, { "name": "铁力市", "pid": 230700, "id": 230781 }], "name": "伊春市", "pid": 230000, "id": 230700 }, { "districtList": [{ "name": "市辖区", "pid": 230800, "id": 230801 }, { "name": "向阳区", "pid": 230800, "id": 230803 }, { "name": "前进区", "pid": 230800, "id": 230804 }, { "name": "东风区", "pid": 230800, "id": 230805 }, { "name": "郊区", "pid": 230800, "id": 230811 }, { "name": "桦南县", "pid": 230800, "id": 230822 }, { "name": "桦川县", "pid": 230800, "id": 230826 }, { "name": "汤原县", "pid": 230800, "id": 230828 }, { "name": "抚远县", "pid": 230800, "id": 230833 }, { "name": "同江市", "pid": 230800, "id": 230881 }, { "name": "富锦市", "pid": 230800, "id": 230882 }], "name": "佳木斯市", "pid": 230000, "id": 230800 }, { "districtList": [{ "name": "市辖区", "pid": 230900, "id": 230901 }, { "name": "新兴区", "pid": 230900, "id": 230902 }, { "name": "桃山区", "pid": 230900, "id": 230903 }, { "name": "茄子河区", "pid": 230900, "id": 230904 }, { "name": "勃利县", "pid": 230900, "id": 230921 }], "name": "七台河市", "pid": 230000, "id": 230900 }, { "districtList": [{ "name": "市辖区", "pid": 231000, "id": 231001 }, { "name": "东安区", "pid": 231000, "id": 231002 }, { "name": "阳明区", "pid": 231000, "id": 231003 }, { "name": "爱民区", "pid": 231000, "id": 231004 }, { "name": "西安区", "pid": 231000, "id": 231005 }, { "name": "东宁县", "pid": 231000, "id": 231024 }, { "name": "林口县", "pid": 231000, "id": 231025 }, { "name": "绥芬河市", "pid": 231000, "id": 231081 }, { "name": "海林市", "pid": 231000, "id": 231083 }, { "name": "宁安市", "pid": 231000, "id": 231084 }, { "name": "穆棱市", "pid": 231000, "id": 231085 }], "name": "牡丹江市", "pid": 230000, "id": 231000 }, { "districtList": [{ "name": "市辖区", "pid": 231100, "id": 231101 }, { "name": "爱辉区", "pid": 231100, "id": 231102 }, { "name": "嫩江县", "pid": 231100, "id": 231121 }, { "name": "逊克县", "pid": 231100, "id": 231123 }, { "name": "孙吴县", "pid": 231100, "id": 231124 }, { "name": "北安市", "pid": 231100, "id": 231181 }, { "name": "五大连池市", "pid": 231100, "id": 231182 }], "name": "黑河市", "pid": 230000, "id": 231100 }, { "districtList": [{ "name": "市辖区", "pid": 231200, "id": 231201 }, { "name": "北林区", "pid": 231200, "id": 231202 }, { "name": "望奎县", "pid": 231200, "id": 231221 }, { "name": "兰西县", "pid": 231200, "id": 231222 }, { "name": "青冈县", "pid": 231200, "id": 231223 }, { "name": "庆安县", "pid": 231200, "id": 231224 }, { "name": "明水县", "pid": 231200, "id": 231225 }, { "name": "绥棱县", "pid": 231200, "id": 231226 }, { "name": "安达市", "pid": 231200, "id": 231281 }, { "name": "肇东市", "pid": 231200, "id": 231282 }, { "name": "海伦市", "pid": 231200, "id": 231283 }], "name": "绥化市", "pid": 230000, "id": 231200 }, { "districtList": [{ "name": "呼玛县", "pid": 232700, "id": 232721 }, { "name": "塔河县", "pid": 232700, "id": 232722 }, { "name": "漠河县", "pid": 232700, "id": 232723 }], "name": "大兴安岭地区", "pid": 230000, "id": 232700 }] }, { "name": "上海市", "id": 310000, "cityList": [{ "districtList": [], "name": "黄浦区", "pid": 310000, "id": 310101 }, { "districtList": [], "name": "徐汇区", "pid": 310000, "id": 310104 }, { "districtList": [], "name": "长宁区", "pid": 310000, "id": 310105 }, { "districtList": [], "name": "静安区", "pid": 310000, "id": 310106 }, { "districtList": [], "name": "普陀区", "pid": 310000, "id": 310107 }, { "districtList": [], "name": "闸北区", "pid": 310000, "id": 310108 }, { "districtList": [], "name": "虹口区", "pid": 310000, "id": 310109 }, { "districtList": [], "name": "杨浦区", "pid": 310000, "id": 310110 }, { "districtList": [], "name": "闵行区", "pid": 310000, "id": 310112 }, { "districtList": [], "name": "宝山区", "pid": 310000, "id": 310113 }, { "districtList": [], "name": "嘉定区", "pid": 310000, "id": 310114 }, { "districtList": [], "name": "浦东新区", "pid": 310000, "id": 310115 }, { "districtList": [], "name": "金山区", "pid": 310000, "id": 310116 }, { "districtList": [], "name": "松江区", "pid": 310000, "id": 310117 }, { "districtList": [], "name": "青浦区", "pid": 310000, "id": 310118 }, { "districtList": [], "name": "奉贤区", "pid": 310000, "id": 310120 }, { "districtList": [], "name": "崇明县", "pid": 310000, "id": 310230 }] }, { "name": "江苏省", "id": 320000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 320100, "id": 320101 }, { "name": "玄武区", "pid": 320100, "id": 320102 }, { "name": "秦淮区", "pid": 320100, "id": 320104 }, { "name": "建邺区", "pid": 320100, "id": 320105 }, { "name": "鼓楼区", "pid": 320100, "id": 320106 }, { "name": "浦口区", "pid": 320100, "id": 320111 }, { "name": "栖霞区", "pid": 320100, "id": 320113 }, { "name": "雨花台区", "pid": 320100, "id": 320114 }, { "name": "江宁区", "pid": 320100, "id": 320115 }, { "name": "六合区", "pid": 320100, "id": 320116 }, { "name": "溧水区", "pid": 320100, "id": 320117 }, { "name": "高淳区", "pid": 320100, "id": 320118 }], "name": "南京市", "pid": 320000, "id": 320100 }, { "districtList": [{ "name": "市辖区", "pid": 320200, "id": 320201 }, { "name": "崇安区", "pid": 320200, "id": 320202 }, { "name": "南长区", "pid": 320200, "id": 320203 }, { "name": "北塘区", "pid": 320200, "id": 320204 }, { "name": "锡山区", "pid": 320200, "id": 320205 }, { "name": "惠山区", "pid": 320200, "id": 320206 }, { "name": "滨湖区", "pid": 320200, "id": 320211 }, { "name": "江阴市", "pid": 320200, "id": 320281 }, { "name": "宜兴市", "pid": 320200, "id": 320282 }], "name": "无锡市", "pid": 320000, "id": 320200 }, { "districtList": [{ "name": "市辖区", "pid": 320300, "id": 320301 }, { "name": "鼓楼区", "pid": 320300, "id": 320302 }, { "name": "云龙区", "pid": 320300, "id": 320303 }, { "name": "贾汪区", "pid": 320300, "id": 320305 }, { "name": "泉山区", "pid": 320300, "id": 320311 }, { "name": "铜山区", "pid": 320300, "id": 320312 }, { "name": "丰县", "pid": 320300, "id": 320321 }, { "name": "沛县", "pid": 320300, "id": 320322 }, { "name": "睢宁县", "pid": 320300, "id": 320324 }, { "name": "新沂市", "pid": 320300, "id": 320381 }, { "name": "邳州市", "pid": 320300, "id": 320382 }], "name": "徐州市", "pid": 320000, "id": 320300 }, { "districtList": [{ "name": "市辖区", "pid": 320400, "id": 320401 }, { "name": "天宁区", "pid": 320400, "id": 320402 }, { "name": "钟楼区", "pid": 320400, "id": 320404 }, { "name": "戚墅堰区", "pid": 320400, "id": 320405 }, { "name": "新北区", "pid": 320400, "id": 320411 }, { "name": "武进区", "pid": 320400, "id": 320412 }, { "name": "溧阳市", "pid": 320400, "id": 320481 }, { "name": "金坛市", "pid": 320400, "id": 320482 }], "name": "常州市", "pid": 320000, "id": 320400 }, { "districtList": [{ "name": "市辖区", "pid": 320500, "id": 320501 }, { "name": "虎丘区", "pid": 320500, "id": 320505 }, { "name": "吴中区", "pid": 320500, "id": 320506 }, { "name": "相城区", "pid": 320500, "id": 320507 }, { "name": "姑苏区", "pid": 320500, "id": 320508 }, { "name": "吴江区", "pid": 320500, "id": 320509 }, { "name": "常熟市", "pid": 320500, "id": 320581 }, { "name": "张家港市", "pid": 320500, "id": 320582 }, { "name": "昆山市", "pid": 320500, "id": 320583 }, { "name": "太仓市", "pid": 320500, "id": 320585 }], "name": "苏州市", "pid": 320000, "id": 320500 }, { "districtList": [{ "name": "市辖区", "pid": 320600, "id": 320601 }, { "name": "崇川区", "pid": 320600, "id": 320602 }, { "name": "港闸区", "pid": 320600, "id": 320611 }, { "name": "通州区", "pid": 320600, "id": 320612 }, { "name": "海安县", "pid": 320600, "id": 320621 }, { "name": "如东县", "pid": 320600, "id": 320623 }, { "name": "启东市", "pid": 320600, "id": 320681 }, { "name": "如皋市", "pid": 320600, "id": 320682 }, { "name": "海门市", "pid": 320600, "id": 320684 }], "name": "南通市", "pid": 320000, "id": 320600 }, { "districtList": [{ "name": "市辖区", "pid": 320700, "id": 320701 }, { "name": "连云区", "pid": 320700, "id": 320703 }, { "name": "新浦区", "pid": 320700, "id": 320705 }, { "name": "海州区", "pid": 320700, "id": 320706 }, { "name": "赣榆县", "pid": 320700, "id": 320721 }, { "name": "东海县", "pid": 320700, "id": 320722 }, { "name": "灌云县", "pid": 320700, "id": 320723 }, { "name": "灌南县", "pid": 320700, "id": 320724 }], "name": "连云港市", "pid": 320000, "id": 320700 }, { "districtList": [{ "name": "市辖区", "pid": 320800, "id": 320801 }, { "name": "清河区", "pid": 320800, "id": 320802 }, { "name": "淮安区", "pid": 320800, "id": 320803 }, { "name": "淮阴区", "pid": 320800, "id": 320804 }, { "name": "清浦区", "pid": 320800, "id": 320811 }, { "name": "涟水县", "pid": 320800, "id": 320826 }, { "name": "洪泽县", "pid": 320800, "id": 320829 }, { "name": "盱眙县", "pid": 320800, "id": 320830 }, { "name": "金湖县", "pid": 320800, "id": 320831 }], "name": "淮安市", "pid": 320000, "id": 320800 }, { "districtList": [{ "name": "市辖区", "pid": 320900, "id": 320901 }, { "name": "亭湖区", "pid": 320900, "id": 320902 }, { "name": "盐都区", "pid": 320900, "id": 320903 }, { "name": "响水县", "pid": 320900, "id": 320921 }, { "name": "滨海县", "pid": 320900, "id": 320922 }, { "name": "阜宁县", "pid": 320900, "id": 320923 }, { "name": "射阳县", "pid": 320900, "id": 320924 }, { "name": "建湖县", "pid": 320900, "id": 320925 }, { "name": "东台市", "pid": 320900, "id": 320981 }, { "name": "大丰市", "pid": 320900, "id": 320982 }], "name": "盐城市", "pid": 320000, "id": 320900 }, { "districtList": [{ "name": "市辖区", "pid": 321000, "id": 321001 }, { "name": "广陵区", "pid": 321000, "id": 321002 }, { "name": "邗江区", "pid": 321000, "id": 321003 }, { "name": "江都区", "pid": 321000, "id": 321012 }, { "name": "宝应县", "pid": 321000, "id": 321023 }, { "name": "仪征市", "pid": 321000, "id": 321081 }, { "name": "高邮市", "pid": 321000, "id": 321084 }], "name": "扬州市", "pid": 320000, "id": 321000 }, { "districtList": [{ "name": "市辖区", "pid": 321100, "id": 321101 }, { "name": "京口区", "pid": 321100, "id": 321102 }, { "name": "润州区", "pid": 321100, "id": 321111 }, { "name": "丹徒区", "pid": 321100, "id": 321112 }, { "name": "丹阳市", "pid": 321100, "id": 321181 }, { "name": "扬中市", "pid": 321100, "id": 321182 }, { "name": "句容市", "pid": 321100, "id": 321183 }], "name": "镇江市", "pid": 320000, "id": 321100 }, { "districtList": [{ "name": "市辖区", "pid": 321200, "id": 321201 }, { "name": "海陵区", "pid": 321200, "id": 321202 }, { "name": "高港区", "pid": 321200, "id": 321203 }, { "name": "姜堰区", "pid": 321200, "id": 321204 }, { "name": "兴化市", "pid": 321200, "id": 321281 }, { "name": "靖江市", "pid": 321200, "id": 321282 }, { "name": "泰兴市", "pid": 321200, "id": 321283 }], "name": "泰州市", "pid": 320000, "id": 321200 }, { "districtList": [{ "name": "市辖区", "pid": 321300, "id": 321301 }, { "name": "宿城区", "pid": 321300, "id": 321302 }, { "name": "宿豫区", "pid": 321300, "id": 321311 }, { "name": "沭阳县", "pid": 321300, "id": 321322 }, { "name": "泗阳县", "pid": 321300, "id": 321323 }, { "name": "泗洪县", "pid": 321300, "id": 321324 }], "name": "宿迁市", "pid": 320000, "id": 321300 }] }, { "name": "浙江省", "id": 330000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 330100, "id": 330101 }, { "name": "上城区", "pid": 330100, "id": 330102 }, { "name": "下城区", "pid": 330100, "id": 330103 }, { "name": "江干区", "pid": 330100, "id": 330104 }, { "name": "拱墅区", "pid": 330100, "id": 330105 }, { "name": "西湖区", "pid": 330100, "id": 330106 }, { "name": "滨江区", "pid": 330100, "id": 330108 }, { "name": "萧山区", "pid": 330100, "id": 330109 }, { "name": "余杭区", "pid": 330100, "id": 330110 }, { "name": "桐庐县", "pid": 330100, "id": 330122 }, { "name": "淳安县", "pid": 330100, "id": 330127 }, { "name": "建德市", "pid": 330100, "id": 330182 }, { "name": "富阳市", "pid": 330100, "id": 330183 }, { "name": "临安市", "pid": 330100, "id": 330185 }], "name": "杭州市", "pid": 330000, "id": 330100 }, { "districtList": [{ "name": "市辖区", "pid": 330200, "id": 330201 }, { "name": "海曙区", "pid": 330200, "id": 330203 }, { "name": "江东区", "pid": 330200, "id": 330204 }, { "name": "江北区", "pid": 330200, "id": 330205 }, { "name": "北仑区", "pid": 330200, "id": 330206 }, { "name": "镇海区", "pid": 330200, "id": 330211 }, { "name": "鄞州区", "pid": 330200, "id": 330212 }, { "name": "象山县", "pid": 330200, "id": 330225 }, { "name": "宁海县", "pid": 330200, "id": 330226 }, { "name": "余姚市", "pid": 330200, "id": 330281 }, { "name": "慈溪市", "pid": 330200, "id": 330282 }, { "name": "奉化市", "pid": 330200, "id": 330283 }], "name": "宁波市", "pid": 330000, "id": 330200 }, { "districtList": [{ "name": "市辖区", "pid": 330300, "id": 330301 }, { "name": "鹿城区", "pid": 330300, "id": 330302 }, { "name": "龙湾区", "pid": 330300, "id": 330303 }, { "name": "瓯海区", "pid": 330300, "id": 330304 }, { "name": "洞头县", "pid": 330300, "id": 330322 }, { "name": "永嘉县", "pid": 330300, "id": 330324 }, { "name": "平阳县", "pid": 330300, "id": 330326 }, { "name": "苍南县", "pid": 330300, "id": 330327 }, { "name": "文成县", "pid": 330300, "id": 330328 }, { "name": "泰顺县", "pid": 330300, "id": 330329 }, { "name": "瑞安市", "pid": 330300, "id": 330381 }, { "name": "乐清市", "pid": 330300, "id": 330382 }], "name": "温州市", "pid": 330000, "id": 330300 }, { "districtList": [{ "name": "市辖区", "pid": 330400, "id": 330401 }, { "name": "南湖区", "pid": 330400, "id": 330402 }, { "name": "秀洲区", "pid": 330400, "id": 330411 }, { "name": "嘉善县", "pid": 330400, "id": 330421 }, { "name": "海盐县", "pid": 330400, "id": 330424 }, { "name": "海宁市", "pid": 330400, "id": 330481 }, { "name": "平湖市", "pid": 330400, "id": 330482 }, { "name": "桐乡市", "pid": 330400, "id": 330483 }], "name": "嘉兴市", "pid": 330000, "id": 330400 }, { "districtList": [{ "name": "市辖区", "pid": 330500, "id": 330501 }, { "name": "吴兴区", "pid": 330500, "id": 330502 }, { "name": "南浔区", "pid": 330500, "id": 330503 }, { "name": "德清县", "pid": 330500, "id": 330521 }, { "name": "长兴县", "pid": 330500, "id": 330522 }, { "name": "安吉县", "pid": 330500, "id": 330523 }], "name": "湖州市", "pid": 330000, "id": 330500 }, { "districtList": [{ "name": "市辖区", "pid": 330600, "id": 330601 }, { "name": "越城区", "pid": 330600, "id": 330602 }, { "name": "绍兴县", "pid": 330600, "id": 330621 }, { "name": "新昌县", "pid": 330600, "id": 330624 }, { "name": "诸暨市", "pid": 330600, "id": 330681 }, { "name": "上虞市", "pid": 330600, "id": 330682 }, { "name": "嵊州市", "pid": 330600, "id": 330683 }], "name": "绍兴市", "pid": 330000, "id": 330600 }, { "districtList": [{ "name": "市辖区", "pid": 330700, "id": 330701 }, { "name": "婺城区", "pid": 330700, "id": 330702 }, { "name": "金东区", "pid": 330700, "id": 330703 }, { "name": "武义县", "pid": 330700, "id": 330723 }, { "name": "浦江县", "pid": 330700, "id": 330726 }, { "name": "磐安县", "pid": 330700, "id": 330727 }, { "name": "兰溪市", "pid": 330700, "id": 330781 }, { "name": "义乌市", "pid": 330700, "id": 330782 }, { "name": "东阳市", "pid": 330700, "id": 330783 }, { "name": "永康市", "pid": 330700, "id": 330784 }], "name": "金华市", "pid": 330000, "id": 330700 }, { "districtList": [{ "name": "市辖区", "pid": 330800, "id": 330801 }, { "name": "柯城区", "pid": 330800, "id": 330802 }, { "name": "衢江区", "pid": 330800, "id": 330803 }, { "name": "常山县", "pid": 330800, "id": 330822 }, { "name": "开化县", "pid": 330800, "id": 330824 }, { "name": "龙游县", "pid": 330800, "id": 330825 }, { "name": "江山市", "pid": 330800, "id": 330881 }], "name": "衢州市", "pid": 330000, "id": 330800 }, { "districtList": [{ "name": "市辖区", "pid": 330900, "id": 330901 }, { "name": "定海区", "pid": 330900, "id": 330902 }, { "name": "普陀区", "pid": 330900, "id": 330903 }, { "name": "岱山县", "pid": 330900, "id": 330921 }, { "name": "嵊泗县", "pid": 330900, "id": 330922 }], "name": "舟山市", "pid": 330000, "id": 330900 }, { "districtList": [{ "name": "市辖区", "pid": 331000, "id": 331001 }, { "name": "椒江区", "pid": 331000, "id": 331002 }, { "name": "黄岩区", "pid": 331000, "id": 331003 }, { "name": "路桥区", "pid": 331000, "id": 331004 }, { "name": "玉环县", "pid": 331000, "id": 331021 }, { "name": "三门县", "pid": 331000, "id": 331022 }, { "name": "天台县", "pid": 331000, "id": 331023 }, { "name": "仙居县", "pid": 331000, "id": 331024 }, { "name": "温岭市", "pid": 331000, "id": 331081 }, { "name": "临海市", "pid": 331000, "id": 331082 }], "name": "台州市", "pid": 330000, "id": 331000 }, { "districtList": [{ "name": "市辖区", "pid": 331100, "id": 331101 }, { "name": "莲都区", "pid": 331100, "id": 331102 }, { "name": "青田县", "pid": 331100, "id": 331121 }, { "name": "缙云县", "pid": 331100, "id": 331122 }, { "name": "遂昌县", "pid": 331100, "id": 331123 }, { "name": "松阳县", "pid": 331100, "id": 331124 }, { "name": "云和县", "pid": 331100, "id": 331125 }, { "name": "庆元县", "pid": 331100, "id": 331126 }, { "name": "景宁畲族自治县", "pid": 331100, "id": 331127 }, { "name": "龙泉市", "pid": 331100, "id": 331181 }], "name": "丽水市", "pid": 330000, "id": 331100 }] }, { "name": "安徽省", "id": 340000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 340100, "id": 340101 }, { "name": "瑶海区", "pid": 340100, "id": 340102 }, { "name": "庐阳区", "pid": 340100, "id": 340103 }, { "name": "蜀山区", "pid": 340100, "id": 340104 }, { "name": "包河区", "pid": 340100, "id": 340111 }, { "name": "长丰县", "pid": 340100, "id": 340121 }, { "name": "肥东县", "pid": 340100, "id": 340122 }, { "name": "肥西县", "pid": 340100, "id": 340123 }, { "name": "庐江县", "pid": 340100, "id": 340124 }, { "name": "巢湖市", "pid": 340100, "id": 340181 }], "name": "合肥市", "pid": 340000, "id": 340100 }, { "districtList": [{ "name": "市辖区", "pid": 340200, "id": 340201 }, { "name": "镜湖区", "pid": 340200, "id": 340202 }, { "name": "弋江区", "pid": 340200, "id": 340203 }, { "name": "鸠江区", "pid": 340200, "id": 340207 }, { "name": "三山区", "pid": 340200, "id": 340208 }, { "name": "芜湖县", "pid": 340200, "id": 340221 }, { "name": "繁昌县", "pid": 340200, "id": 340222 }, { "name": "南陵县", "pid": 340200, "id": 340223 }, { "name": "无为县", "pid": 340200, "id": 340225 }], "name": "芜湖市", "pid": 340000, "id": 340200 }, { "districtList": [{ "name": "市辖区", "pid": 340300, "id": 340301 }, { "name": "龙子湖区", "pid": 340300, "id": 340302 }, { "name": "蚌山区", "pid": 340300, "id": 340303 }, { "name": "禹会区", "pid": 340300, "id": 340304 }, { "name": "淮上区", "pid": 340300, "id": 340311 }, { "name": "怀远县", "pid": 340300, "id": 340321 }, { "name": "五河县", "pid": 340300, "id": 340322 }, { "name": "固镇县", "pid": 340300, "id": 340323 }], "name": "蚌埠市", "pid": 340000, "id": 340300 }, { "districtList": [{ "name": "市辖区", "pid": 340400, "id": 340401 }, { "name": "大通区", "pid": 340400, "id": 340402 }, { "name": "田家庵区", "pid": 340400, "id": 340403 }, { "name": "谢家集区", "pid": 340400, "id": 340404 }, { "name": "八公山区", "pid": 340400, "id": 340405 }, { "name": "潘集区", "pid": 340400, "id": 340406 }, { "name": "凤台县", "pid": 340400, "id": 340421 }], "name": "淮南市", "pid": 340000, "id": 340400 }, { "districtList": [{ "name": "市辖区", "pid": 340500, "id": 340501 }, { "name": "花山区", "pid": 340500, "id": 340503 }, { "name": "雨山区", "pid": 340500, "id": 340504 }, { "name": "博望区", "pid": 340500, "id": 340506 }, { "name": "当涂县", "pid": 340500, "id": 340521 }, { "name": "含山县", "pid": 340500, "id": 340522 }, { "name": "和县", "pid": 340500, "id": 340523 }], "name": "马鞍山市", "pid": 340000, "id": 340500 }, { "districtList": [{ "name": "市辖区", "pid": 340600, "id": 340601 }, { "name": "杜集区", "pid": 340600, "id": 340602 }, { "name": "相山区", "pid": 340600, "id": 340603 }, { "name": "烈山区", "pid": 340600, "id": 340604 }, { "name": "濉溪县", "pid": 340600, "id": 340621 }], "name": "淮北市", "pid": 340000, "id": 340600 }, { "districtList": [{ "name": "市辖区", "pid": 340700, "id": 340701 }, { "name": "铜官山区", "pid": 340700, "id": 340702 }, { "name": "狮子山区", "pid": 340700, "id": 340703 }, { "name": "郊区", "pid": 340700, "id": 340711 }, { "name": "铜陵县", "pid": 340700, "id": 340721 }], "name": "铜陵市", "pid": 340000, "id": 340700 }, { "districtList": [{ "name": "市辖区", "pid": 340800, "id": 340801 }, { "name": "迎江区", "pid": 340800, "id": 340802 }, { "name": "大观区", "pid": 340800, "id": 340803 }, { "name": "宜秀区", "pid": 340800, "id": 340811 }, { "name": "怀宁县", "pid": 340800, "id": 340822 }, { "name": "枞阳县", "pid": 340800, "id": 340823 }, { "name": "潜山县", "pid": 340800, "id": 340824 }, { "name": "太湖县", "pid": 340800, "id": 340825 }, { "name": "宿松县", "pid": 340800, "id": 340826 }, { "name": "望江县", "pid": 340800, "id": 340827 }, { "name": "岳西县", "pid": 340800, "id": 340828 }, { "name": "桐城市", "pid": 340800, "id": 340881 }], "name": "安庆市", "pid": 340000, "id": 340800 }, { "districtList": [{ "name": "市辖区", "pid": 341000, "id": 341001 }, { "name": "屯溪区", "pid": 341000, "id": 341002 }, { "name": "黄山区", "pid": 341000, "id": 341003 }, { "name": "徽州区", "pid": 341000, "id": 341004 }, { "name": "歙县", "pid": 341000, "id": 341021 }, { "name": "休宁县", "pid": 341000, "id": 341022 }, { "name": "黟县", "pid": 341000, "id": 341023 }, { "name": "祁门县", "pid": 341000, "id": 341024 }], "name": "黄山市", "pid": 340000, "id": 341000 }, { "districtList": [{ "name": "市辖区", "pid": 341100, "id": 341101 }, { "name": "琅琊区", "pid": 341100, "id": 341102 }, { "name": "南谯区", "pid": 341100, "id": 341103 }, { "name": "来安县", "pid": 341100, "id": 341122 }, { "name": "全椒县", "pid": 341100, "id": 341124 }, { "name": "定远县", "pid": 341100, "id": 341125 }, { "name": "凤阳县", "pid": 341100, "id": 341126 }, { "name": "天长市", "pid": 341100, "id": 341181 }, { "name": "明光市", "pid": 341100, "id": 341182 }], "name": "滁州市", "pid": 340000, "id": 341100 }, { "districtList": [{ "name": "市辖区", "pid": 341200, "id": 341201 }, { "name": "颍州区", "pid": 341200, "id": 341202 }, { "name": "颍东区", "pid": 341200, "id": 341203 }, { "name": "颍泉区", "pid": 341200, "id": 341204 }, { "name": "临泉县", "pid": 341200, "id": 341221 }, { "name": "太和县", "pid": 341200, "id": 341222 }, { "name": "阜南县", "pid": 341200, "id": 341225 }, { "name": "颍上县", "pid": 341200, "id": 341226 }, { "name": "界首市", "pid": 341200, "id": 341282 }], "name": "阜阳市", "pid": 340000, "id": 341200 }, { "districtList": [{ "name": "市辖区", "pid": 341300, "id": 341301 }, { "name": "埇桥区", "pid": 341300, "id": 341302 }, { "name": "砀山县", "pid": 341300, "id": 341321 }, { "name": "萧县", "pid": 341300, "id": 341322 }, { "name": "灵璧县", "pid": 341300, "id": 341323 }, { "name": "泗县", "pid": 341300, "id": 341324 }], "name": "宿州市", "pid": 340000, "id": 341300 }, { "districtList": [{ "name": "市辖区", "pid": 341500, "id": 341501 }, { "name": "金安区", "pid": 341500, "id": 341502 }, { "name": "裕安区", "pid": 341500, "id": 341503 }, { "name": "寿县", "pid": 341500, "id": 341521 }, { "name": "霍邱县", "pid": 341500, "id": 341522 }, { "name": "舒城县", "pid": 341500, "id": 341523 }, { "name": "金寨县", "pid": 341500, "id": 341524 }, { "name": "霍山县", "pid": 341500, "id": 341525 }], "name": "六安市", "pid": 340000, "id": 341500 }, { "districtList": [{ "name": "市辖区", "pid": 341600, "id": 341601 }, { "name": "谯城区", "pid": 341600, "id": 341602 }, { "name": "涡阳县", "pid": 341600, "id": 341621 }, { "name": "蒙城县", "pid": 341600, "id": 341622 }, { "name": "利辛县", "pid": 341600, "id": 341623 }], "name": "亳州市", "pid": 340000, "id": 341600 }, { "districtList": [{ "name": "市辖区", "pid": 341700, "id": 341701 }, { "name": "贵池区", "pid": 341700, "id": 341702 }, { "name": "东至县", "pid": 341700, "id": 341721 }, { "name": "石台县", "pid": 341700, "id": 341722 }, { "name": "青阳县", "pid": 341700, "id": 341723 }], "name": "池州市", "pid": 340000, "id": 341700 }, { "districtList": [{ "name": "市辖区", "pid": 341800, "id": 341801 }, { "name": "宣州区", "pid": 341800, "id": 341802 }, { "name": "郎溪县", "pid": 341800, "id": 341821 }, { "name": "广德县", "pid": 341800, "id": 341822 }, { "name": "泾县", "pid": 341800, "id": 341823 }, { "name": "绩溪县", "pid": 341800, "id": 341824 }, { "name": "旌德县", "pid": 341800, "id": 341825 }, { "name": "宁国市", "pid": 341800, "id": 341881 }], "name": "宣城市", "pid": 340000, "id": 341800 }] }, { "name": "福建省", "id": 350000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 350100, "id": 350101 }, { "name": "鼓楼区", "pid": 350100, "id": 350102 }, { "name": "台江区", "pid": 350100, "id": 350103 }, { "name": "仓山区", "pid": 350100, "id": 350104 }, { "name": "马尾区", "pid": 350100, "id": 350105 }, { "name": "晋安区", "pid": 350100, "id": 350111 }, { "name": "闽侯县", "pid": 350100, "id": 350121 }, { "name": "连江县", "pid": 350100, "id": 350122 }, { "name": "罗源县", "pid": 350100, "id": 350123 }, { "name": "闽清县", "pid": 350100, "id": 350124 }, { "name": "永泰县", "pid": 350100, "id": 350125 }, { "name": "平潭县", "pid": 350100, "id": 350128 }, { "name": "福清市", "pid": 350100, "id": 350181 }, { "name": "长乐市", "pid": 350100, "id": 350182 }], "name": "福州市", "pid": 350000, "id": 350100 }, { "districtList": [{ "name": "市辖区", "pid": 350200, "id": 350201 }, { "name": "思明区", "pid": 350200, "id": 350203 }, { "name": "海沧区", "pid": 350200, "id": 350205 }, { "name": "湖里区", "pid": 350200, "id": 350206 }, { "name": "集美区", "pid": 350200, "id": 350211 }, { "name": "同安区", "pid": 350200, "id": 350212 }, { "name": "翔安区", "pid": 350200, "id": 350213 }], "name": "厦门市", "pid": 350000, "id": 350200 }, { "districtList": [{ "name": "市辖区", "pid": 350300, "id": 350301 }, { "name": "城厢区", "pid": 350300, "id": 350302 }, { "name": "涵江区", "pid": 350300, "id": 350303 }, { "name": "荔城区", "pid": 350300, "id": 350304 }, { "name": "秀屿区", "pid": 350300, "id": 350305 }, { "name": "仙游县", "pid": 350300, "id": 350322 }], "name": "莆田市", "pid": 350000, "id": 350300 }, { "districtList": [{ "name": "市辖区", "pid": 350400, "id": 350401 }, { "name": "梅列区", "pid": 350400, "id": 350402 }, { "name": "三元区", "pid": 350400, "id": 350403 }, { "name": "明溪县", "pid": 350400, "id": 350421 }, { "name": "清流县", "pid": 350400, "id": 350423 }, { "name": "宁化县", "pid": 350400, "id": 350424 }, { "name": "大田县", "pid": 350400, "id": 350425 }, { "name": "尤溪县", "pid": 350400, "id": 350426 }, { "name": "沙县", "pid": 350400, "id": 350427 }, { "name": "将乐县", "pid": 350400, "id": 350428 }, { "name": "泰宁县", "pid": 350400, "id": 350429 }, { "name": "建宁县", "pid": 350400, "id": 350430 }, { "name": "永安市", "pid": 350400, "id": 350481 }], "name": "三明市", "pid": 350000, "id": 350400 }, { "districtList": [{ "name": "市辖区", "pid": 350500, "id": 350501 }, { "name": "鲤城区", "pid": 350500, "id": 350502 }, { "name": "丰泽区", "pid": 350500, "id": 350503 }, { "name": "洛江区", "pid": 350500, "id": 350504 }, { "name": "泉港区", "pid": 350500, "id": 350505 }, { "name": "惠安县", "pid": 350500, "id": 350521 }, { "name": "安溪县", "pid": 350500, "id": 350524 }, { "name": "永春县", "pid": 350500, "id": 350525 }, { "name": "德化县", "pid": 350500, "id": 350526 }, { "name": "金门县", "pid": 350500, "id": 350527 }, { "name": "石狮市", "pid": 350500, "id": 350581 }, { "name": "晋江市", "pid": 350500, "id": 350582 }, { "name": "南安市", "pid": 350500, "id": 350583 }], "name": "泉州市", "pid": 350000, "id": 350500 }, { "districtList": [{ "name": "市辖区", "pid": 350600, "id": 350601 }, { "name": "芗城区", "pid": 350600, "id": 350602 }, { "name": "龙文区", "pid": 350600, "id": 350603 }, { "name": "云霄县", "pid": 350600, "id": 350622 }, { "name": "漳浦县", "pid": 350600, "id": 350623 }, { "name": "诏安县", "pid": 350600, "id": 350624 }, { "name": "长泰县", "pid": 350600, "id": 350625 }, { "name": "东山县", "pid": 350600, "id": 350626 }, { "name": "南靖县", "pid": 350600, "id": 350627 }, { "name": "平和县", "pid": 350600, "id": 350628 }, { "name": "华安县", "pid": 350600, "id": 350629 }, { "name": "龙海市", "pid": 350600, "id": 350681 }], "name": "漳州市", "pid": 350000, "id": 350600 }, { "districtList": [{ "name": "市辖区", "pid": 350700, "id": 350701 }, { "name": "延平区", "pid": 350700, "id": 350702 }, { "name": "顺昌县", "pid": 350700, "id": 350721 }, { "name": "浦城县", "pid": 350700, "id": 350722 }, { "name": "光泽县", "pid": 350700, "id": 350723 }, { "name": "松溪县", "pid": 350700, "id": 350724 }, { "name": "政和县", "pid": 350700, "id": 350725 }, { "name": "邵武市", "pid": 350700, "id": 350781 }, { "name": "武夷山市", "pid": 350700, "id": 350782 }, { "name": "建瓯市", "pid": 350700, "id": 350783 }, { "name": "建阳市", "pid": 350700, "id": 350784 }], "name": "南平市", "pid": 350000, "id": 350700 }, { "districtList": [{ "name": "市辖区", "pid": 350800, "id": 350801 }, { "name": "新罗区", "pid": 350800, "id": 350802 }, { "name": "长汀县", "pid": 350800, "id": 350821 }, { "name": "永定县", "pid": 350800, "id": 350822 }, { "name": "上杭县", "pid": 350800, "id": 350823 }, { "name": "武平县", "pid": 350800, "id": 350824 }, { "name": "连城县", "pid": 350800, "id": 350825 }, { "name": "漳平市", "pid": 350800, "id": 350881 }], "name": "龙岩市", "pid": 350000, "id": 350800 }, { "districtList": [{ "name": "市辖区", "pid": 350900, "id": 350901 }, { "name": "蕉城区", "pid": 350900, "id": 350902 }, { "name": "霞浦县", "pid": 350900, "id": 350921 }, { "name": "古田县", "pid": 350900, "id": 350922 }, { "name": "屏南县", "pid": 350900, "id": 350923 }, { "name": "寿宁县", "pid": 350900, "id": 350924 }, { "name": "周宁县", "pid": 350900, "id": 350925 }, { "name": "柘荣县", "pid": 350900, "id": 350926 }, { "name": "福安市", "pid": 350900, "id": 350981 }, { "name": "福鼎市", "pid": 350900, "id": 350982 }], "name": "宁德市", "pid": 350000, "id": 350900 }] }, { "name": "江西省", "id": 360000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 360100, "id": 360101 }, { "name": "东湖区", "pid": 360100, "id": 360102 }, { "name": "西湖区", "pid": 360100, "id": 360103 }, { "name": "青云谱区", "pid": 360100, "id": 360104 }, { "name": "湾里区", "pid": 360100, "id": 360105 }, { "name": "青山湖区", "pid": 360100, "id": 360111 }, { "name": "南昌县", "pid": 360100, "id": 360121 }, { "name": "新建县", "pid": 360100, "id": 360122 }, { "name": "安义县", "pid": 360100, "id": 360123 }, { "name": "进贤县", "pid": 360100, "id": 360124 }], "name": "南昌市", "pid": 360000, "id": 360100 }, { "districtList": [{ "name": "市辖区", "pid": 360200, "id": 360201 }, { "name": "昌江区", "pid": 360200, "id": 360202 }, { "name": "珠山区", "pid": 360200, "id": 360203 }, { "name": "浮梁县", "pid": 360200, "id": 360222 }, { "name": "乐平市", "pid": 360200, "id": 360281 }], "name": "景德镇市", "pid": 360000, "id": 360200 }, { "districtList": [{ "name": "市辖区", "pid": 360300, "id": 360301 }, { "name": "安源区", "pid": 360300, "id": 360302 }, { "name": "湘东区", "pid": 360300, "id": 360313 }, { "name": "莲花县", "pid": 360300, "id": 360321 }, { "name": "上栗县", "pid": 360300, "id": 360322 }, { "name": "芦溪县", "pid": 360300, "id": 360323 }], "name": "萍乡市", "pid": 360000, "id": 360300 }, { "districtList": [{ "name": "市辖区", "pid": 360400, "id": 360401 }, { "name": "庐山区", "pid": 360400, "id": 360402 }, { "name": "浔阳区", "pid": 360400, "id": 360403 }, { "name": "九江县", "pid": 360400, "id": 360421 }, { "name": "武宁县", "pid": 360400, "id": 360423 }, { "name": "修水县", "pid": 360400, "id": 360424 }, { "name": "永修县", "pid": 360400, "id": 360425 }, { "name": "德安县", "pid": 360400, "id": 360426 }, { "name": "星子县", "pid": 360400, "id": 360427 }, { "name": "都昌县", "pid": 360400, "id": 360428 }, { "name": "湖口县", "pid": 360400, "id": 360429 }, { "name": "彭泽县", "pid": 360400, "id": 360430 }, { "name": "瑞昌市", "pid": 360400, "id": 360481 }, { "name": "共青城市", "pid": 360400, "id": 360482 }], "name": "九江市", "pid": 360000, "id": 360400 }, { "districtList": [{ "name": "市辖区", "pid": 360500, "id": 360501 }, { "name": "渝水区", "pid": 360500, "id": 360502 }, { "name": "分宜县", "pid": 360500, "id": 360521 }], "name": "新余市", "pid": 360000, "id": 360500 }, { "districtList": [{ "name": "市辖区", "pid": 360600, "id": 360601 }, { "name": "月湖区", "pid": 360600, "id": 360602 }, { "name": "余江县", "pid": 360600, "id": 360622 }, { "name": "贵溪市", "pid": 360600, "id": 360681 }], "name": "鹰潭市", "pid": 360000, "id": 360600 }, { "districtList": [{ "name": "市辖区", "pid": 360700, "id": 360701 }, { "name": "章贡区", "pid": 360700, "id": 360702 }, { "name": "赣县", "pid": 360700, "id": 360721 }, { "name": "信丰县", "pid": 360700, "id": 360722 }, { "name": "大余县", "pid": 360700, "id": 360723 }, { "name": "上犹县", "pid": 360700, "id": 360724 }, { "name": "崇义县", "pid": 360700, "id": 360725 }, { "name": "安远县", "pid": 360700, "id": 360726 }, { "name": "龙南县", "pid": 360700, "id": 360727 }, { "name": "定南县", "pid": 360700, "id": 360728 }, { "name": "全南县", "pid": 360700, "id": 360729 }, { "name": "宁都县", "pid": 360700, "id": 360730 }, { "name": "于都县", "pid": 360700, "id": 360731 }, { "name": "兴国县", "pid": 360700, "id": 360732 }, { "name": "会昌县", "pid": 360700, "id": 360733 }, { "name": "寻乌县", "pid": 360700, "id": 360734 }, { "name": "石城县", "pid": 360700, "id": 360735 }, { "name": "瑞金市", "pid": 360700, "id": 360781 }, { "name": "南康市", "pid": 360700, "id": 360782 }], "name": "赣州市", "pid": 360000, "id": 360700 }, { "districtList": [{ "name": "市辖区", "pid": 360800, "id": 360801 }, { "name": "吉州区", "pid": 360800, "id": 360802 }, { "name": "青原区", "pid": 360800, "id": 360803 }, { "name": "吉安县", "pid": 360800, "id": 360821 }, { "name": "吉水县", "pid": 360800, "id": 360822 }, { "name": "峡江县", "pid": 360800, "id": 360823 }, { "name": "新干县", "pid": 360800, "id": 360824 }, { "name": "永丰县", "pid": 360800, "id": 360825 }, { "name": "泰和县", "pid": 360800, "id": 360826 }, { "name": "遂川县", "pid": 360800, "id": 360827 }, { "name": "万安县", "pid": 360800, "id": 360828 }, { "name": "安福县", "pid": 360800, "id": 360829 }, { "name": "永新县", "pid": 360800, "id": 360830 }, { "name": "井冈山市", "pid": 360800, "id": 360881 }], "name": "吉安市", "pid": 360000, "id": 360800 }, { "districtList": [{ "name": "市辖区", "pid": 360900, "id": 360901 }, { "name": "袁州区", "pid": 360900, "id": 360902 }, { "name": "奉新县", "pid": 360900, "id": 360921 }, { "name": "万载县", "pid": 360900, "id": 360922 }, { "name": "上高县", "pid": 360900, "id": 360923 }, { "name": "宜丰县", "pid": 360900, "id": 360924 }, { "name": "靖安县", "pid": 360900, "id": 360925 }, { "name": "铜鼓县", "pid": 360900, "id": 360926 }, { "name": "丰城市", "pid": 360900, "id": 360981 }, { "name": "樟树市", "pid": 360900, "id": 360982 }, { "name": "高安市", "pid": 360900, "id": 360983 }], "name": "宜春市", "pid": 360000, "id": 360900 }, { "districtList": [{ "name": "市辖区", "pid": 361000, "id": 361001 }, { "name": "临川区", "pid": 361000, "id": 361002 }, { "name": "南城县", "pid": 361000, "id": 361021 }, { "name": "黎川县", "pid": 361000, "id": 361022 }, { "name": "南丰县", "pid": 361000, "id": 361023 }, { "name": "崇仁县", "pid": 361000, "id": 361024 }, { "name": "乐安县", "pid": 361000, "id": 361025 }, { "name": "宜黄县", "pid": 361000, "id": 361026 }, { "name": "金溪县", "pid": 361000, "id": 361027 }, { "name": "资溪县", "pid": 361000, "id": 361028 }, { "name": "东乡县", "pid": 361000, "id": 361029 }, { "name": "广昌县", "pid": 361000, "id": 361030 }], "name": "抚州市", "pid": 360000, "id": 361000 }, { "districtList": [{ "name": "市辖区", "pid": 361100, "id": 361101 }, { "name": "信州区", "pid": 361100, "id": 361102 }, { "name": "上饶县", "pid": 361100, "id": 361121 }, { "name": "广丰县", "pid": 361100, "id": 361122 }, { "name": "玉山县", "pid": 361100, "id": 361123 }, { "name": "铅山县", "pid": 361100, "id": 361124 }, { "name": "横峰县", "pid": 361100, "id": 361125 }, { "name": "弋阳县", "pid": 361100, "id": 361126 }, { "name": "余干县", "pid": 361100, "id": 361127 }, { "name": "鄱阳县", "pid": 361100, "id": 361128 }, { "name": "万年县", "pid": 361100, "id": 361129 }, { "name": "婺源县", "pid": 361100, "id": 361130 }, { "name": "德兴市", "pid": 361100, "id": 361181 }], "name": "上饶市", "pid": 360000, "id": 361100 }] }, { "name": "山东省", "id": 370000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 370100, "id": 370101 }, { "name": "历下区", "pid": 370100, "id": 370102 }, { "name": "市中区", "pid": 370100, "id": 370103 }, { "name": "槐荫区", "pid": 370100, "id": 370104 }, { "name": "天桥区", "pid": 370100, "id": 370105 }, { "name": "历城区", "pid": 370100, "id": 370112 }, { "name": "长清区", "pid": 370100, "id": 370113 }, { "name": "平阴县", "pid": 370100, "id": 370124 }, { "name": "济阳县", "pid": 370100, "id": 370125 }, { "name": "商河县", "pid": 370100, "id": 370126 }, { "name": "章丘市", "pid": 370100, "id": 370181 }], "name": "济南市", "pid": 370000, "id": 370100 }, { "districtList": [{ "name": "市辖区", "pid": 370200, "id": 370201 }, { "name": "市南区", "pid": 370200, "id": 370202 }, { "name": "市北区", "pid": 370200, "id": 370203 }, { "name": "黄岛区", "pid": 370200, "id": 370211 }, { "name": "崂山区", "pid": 370200, "id": 370212 }, { "name": "李沧区", "pid": 370200, "id": 370213 }, { "name": "城阳区", "pid": 370200, "id": 370214 }, { "name": "胶州市", "pid": 370200, "id": 370281 }, { "name": "即墨市", "pid": 370200, "id": 370282 }, { "name": "平度市", "pid": 370200, "id": 370283 }, { "name": "莱西市", "pid": 370200, "id": 370285 }], "name": "青岛市", "pid": 370000, "id": 370200 }, { "districtList": [{ "name": "市辖区", "pid": 370300, "id": 370301 }, { "name": "淄川区", "pid": 370300, "id": 370302 }, { "name": "张店区", "pid": 370300, "id": 370303 }, { "name": "博山区", "pid": 370300, "id": 370304 }, { "name": "临淄区", "pid": 370300, "id": 370305 }, { "name": "周村区", "pid": 370300, "id": 370306 }, { "name": "桓台县", "pid": 370300, "id": 370321 }, { "name": "高青县", "pid": 370300, "id": 370322 }, { "name": "沂源县", "pid": 370300, "id": 370323 }], "name": "淄博市", "pid": 370000, "id": 370300 }, { "districtList": [{ "name": "市辖区", "pid": 370400, "id": 370401 }, { "name": "市中区", "pid": 370400, "id": 370402 }, { "name": "薛城区", "pid": 370400, "id": 370403 }, { "name": "峄城区", "pid": 370400, "id": 370404 }, { "name": "台儿庄区", "pid": 370400, "id": 370405 }, { "name": "山亭区", "pid": 370400, "id": 370406 }, { "name": "滕州市", "pid": 370400, "id": 370481 }], "name": "枣庄市", "pid": 370000, "id": 370400 }, { "districtList": [{ "name": "市辖区", "pid": 370500, "id": 370501 }, { "name": "东营区", "pid": 370500, "id": 370502 }, { "name": "河口区", "pid": 370500, "id": 370503 }, { "name": "垦利县", "pid": 370500, "id": 370521 }, { "name": "利津县", "pid": 370500, "id": 370522 }, { "name": "广饶县", "pid": 370500, "id": 370523 }], "name": "东营市", "pid": 370000, "id": 370500 }, { "districtList": [{ "name": "市辖区", "pid": 370600, "id": 370601 }, { "name": "芝罘区", "pid": 370600, "id": 370602 }, { "name": "福山区", "pid": 370600, "id": 370611 }, { "name": "牟平区", "pid": 370600, "id": 370612 }, { "name": "莱山区", "pid": 370600, "id": 370613 }, { "name": "长岛县", "pid": 370600, "id": 370634 }, { "name": "龙口市", "pid": 370600, "id": 370681 }, { "name": "莱阳市", "pid": 370600, "id": 370682 }, { "name": "莱州市", "pid": 370600, "id": 370683 }, { "name": "蓬莱市", "pid": 370600, "id": 370684 }, { "name": "招远市", "pid": 370600, "id": 370685 }, { "name": "栖霞市", "pid": 370600, "id": 370686 }, { "name": "海阳市", "pid": 370600, "id": 370687 }], "name": "烟台市", "pid": 370000, "id": 370600 }, { "districtList": [{ "name": "市辖区", "pid": 370700, "id": 370701 }, { "name": "潍城区", "pid": 370700, "id": 370702 }, { "name": "寒亭区", "pid": 370700, "id": 370703 }, { "name": "坊子区", "pid": 370700, "id": 370704 }, { "name": "奎文区", "pid": 370700, "id": 370705 }, { "name": "临朐县", "pid": 370700, "id": 370724 }, { "name": "昌乐县", "pid": 370700, "id": 370725 }, { "name": "青州市", "pid": 370700, "id": 370781 }, { "name": "诸城市", "pid": 370700, "id": 370782 }, { "name": "寿光市", "pid": 370700, "id": 370783 }, { "name": "安丘市", "pid": 370700, "id": 370784 }, { "name": "高密市", "pid": 370700, "id": 370785 }, { "name": "昌邑市", "pid": 370700, "id": 370786 }], "name": "潍坊市", "pid": 370000, "id": 370700 }, { "districtList": [{ "name": "市辖区", "pid": 370800, "id": 370801 }, { "name": "市中区", "pid": 370800, "id": 370802 }, { "name": "任城区", "pid": 370800, "id": 370811 }, { "name": "微山县", "pid": 370800, "id": 370826 }, { "name": "鱼台县", "pid": 370800, "id": 370827 }, { "name": "金乡县", "pid": 370800, "id": 370828 }, { "name": "嘉祥县", "pid": 370800, "id": 370829 }, { "name": "汶上县", "pid": 370800, "id": 370830 }, { "name": "泗水县", "pid": 370800, "id": 370831 }, { "name": "梁山县", "pid": 370800, "id": 370832 }, { "name": "曲阜市", "pid": 370800, "id": 370881 }, { "name": "兖州市", "pid": 370800, "id": 370882 }, { "name": "邹城市", "pid": 370800, "id": 370883 }], "name": "济宁市", "pid": 370000, "id": 370800 }, { "districtList": [{ "name": "市辖区", "pid": 370900, "id": 370901 }, { "name": "泰山区", "pid": 370900, "id": 370902 }, { "name": "岱岳区", "pid": 370900, "id": 370911 }, { "name": "宁阳县", "pid": 370900, "id": 370921 }, { "name": "东平县", "pid": 370900, "id": 370923 }, { "name": "新泰市", "pid": 370900, "id": 370982 }, { "name": "肥城市", "pid": 370900, "id": 370983 }], "name": "泰安市", "pid": 370000, "id": 370900 }, { "districtList": [{ "name": "市辖区", "pid": 371000, "id": 371001 }, { "name": "环翠区", "pid": 371000, "id": 371002 }, { "name": "文登市", "pid": 371000, "id": 371081 }, { "name": "荣成市", "pid": 371000, "id": 371082 }, { "name": "乳山市", "pid": 371000, "id": 371083 }], "name": "威海市", "pid": 370000, "id": 371000 }, { "districtList": [{ "name": "市辖区", "pid": 371100, "id": 371101 }, { "name": "东港区", "pid": 371100, "id": 371102 }, { "name": "岚山区", "pid": 371100, "id": 371103 }, { "name": "五莲县", "pid": 371100, "id": 371121 }, { "name": "莒县", "pid": 371100, "id": 371122 }], "name": "日照市", "pid": 370000, "id": 371100 }, { "districtList": [{ "name": "市辖区", "pid": 371200, "id": 371201 }, { "name": "莱城区", "pid": 371200, "id": 371202 }, { "name": "钢城区", "pid": 371200, "id": 371203 }], "name": "莱芜市", "pid": 370000, "id": 371200 }, { "districtList": [{ "name": "市辖区", "pid": 371300, "id": 371301 }, { "name": "兰山区", "pid": 371300, "id": 371302 }, { "name": "罗庄区", "pid": 371300, "id": 371311 }, { "name": "河东区", "pid": 371300, "id": 371312 }, { "name": "沂南县", "pid": 371300, "id": 371321 }, { "name": "郯城县", "pid": 371300, "id": 371322 }, { "name": "沂水县", "pid": 371300, "id": 371323 }, { "name": "苍山县", "pid": 371300, "id": 371324 }, { "name": "费县", "pid": 371300, "id": 371325 }, { "name": "平邑县", "pid": 371300, "id": 371326 }, { "name": "莒南县", "pid": 371300, "id": 371327 }, { "name": "蒙阴县", "pid": 371300, "id": 371328 }, { "name": "临沭县", "pid": 371300, "id": 371329 }], "name": "临沂市", "pid": 370000, "id": 371300 }, { "districtList": [{ "name": "市辖区", "pid": 371400, "id": 371401 }, { "name": "德城区", "pid": 371400, "id": 371402 }, { "name": "陵县", "pid": 371400, "id": 371421 }, { "name": "宁津县", "pid": 371400, "id": 371422 }, { "name": "庆云县", "pid": 371400, "id": 371423 }, { "name": "临邑县", "pid": 371400, "id": 371424 }, { "name": "齐河县", "pid": 371400, "id": 371425 }, { "name": "平原县", "pid": 371400, "id": 371426 }, { "name": "夏津县", "pid": 371400, "id": 371427 }, { "name": "武城县", "pid": 371400, "id": 371428 }, { "name": "乐陵市", "pid": 371400, "id": 371481 }, { "name": "禹城市", "pid": 371400, "id": 371482 }], "name": "德州市", "pid": 370000, "id": 371400 }, { "districtList": [{ "name": "市辖区", "pid": 371500, "id": 371501 }, { "name": "东昌府区", "pid": 371500, "id": 371502 }, { "name": "阳谷县", "pid": 371500, "id": 371521 }, { "name": "莘县", "pid": 371500, "id": 371522 }, { "name": "茌平县", "pid": 371500, "id": 371523 }, { "name": "东阿县", "pid": 371500, "id": 371524 }, { "name": "冠县", "pid": 371500, "id": 371525 }, { "name": "高唐县", "pid": 371500, "id": 371526 }, { "name": "临清市", "pid": 371500, "id": 371581 }], "name": "聊城市", "pid": 370000, "id": 371500 }, { "districtList": [{ "name": "市辖区", "pid": 371600, "id": 371601 }, { "name": "滨城区", "pid": 371600, "id": 371602 }, { "name": "惠民县", "pid": 371600, "id": 371621 }, { "name": "阳信县", "pid": 371600, "id": 371622 }, { "name": "无棣县", "pid": 371600, "id": 371623 }, { "name": "沾化县", "pid": 371600, "id": 371624 }, { "name": "博兴县", "pid": 371600, "id": 371625 }, { "name": "邹平县", "pid": 371600, "id": 371626 }], "name": "滨州市", "pid": 370000, "id": 371600 }, { "districtList": [{ "name": "市辖区", "pid": 371700, "id": 371701 }, { "name": "牡丹区", "pid": 371700, "id": 371702 }, { "name": "曹县", "pid": 371700, "id": 371721 }, { "name": "单县", "pid": 371700, "id": 371722 }, { "name": "成武县", "pid": 371700, "id": 371723 }, { "name": "巨野县", "pid": 371700, "id": 371724 }, { "name": "郓城县", "pid": 371700, "id": 371725 }, { "name": "鄄城县", "pid": 371700, "id": 371726 }, { "name": "定陶县", "pid": 371700, "id": 371727 }, { "name": "东明县", "pid": 371700, "id": 371728 }], "name": "菏泽市", "pid": 370000, "id": 371700 }] }, { "name": "河南省", "id": 410000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 410100, "id": 410101 }, { "name": "中原区", "pid": 410100, "id": 410102 }, { "name": "二七区", "pid": 410100, "id": 410103 }, { "name": "管城回族区", "pid": 410100, "id": 410104 }, { "name": "金水区", "pid": 410100, "id": 410105 }, { "name": "上街区", "pid": 410100, "id": 410106 }, { "name": "惠济区", "pid": 410100, "id": 410108 }, { "name": "中牟县", "pid": 410100, "id": 410122 }, { "name": "巩义市", "pid": 410100, "id": 410181 }, { "name": "荥阳市", "pid": 410100, "id": 410182 }, { "name": "新密市", "pid": 410100, "id": 410183 }, { "name": "新郑市", "pid": 410100, "id": 410184 }, { "name": "登封市", "pid": 410100, "id": 410185 }], "name": "郑州市", "pid": 410000, "id": 410100 }, { "districtList": [{ "name": "市辖区", "pid": 410200, "id": 410201 }, { "name": "龙亭区", "pid": 410200, "id": 410202 }, { "name": "顺河回族区", "pid": 410200, "id": 410203 }, { "name": "鼓楼区", "pid": 410200, "id": 410204 }, { "name": "禹王台区", "pid": 410200, "id": 410205 }, { "name": "金明区", "pid": 410200, "id": 410211 }, { "name": "杞县", "pid": 410200, "id": 410221 }, { "name": "通许县", "pid": 410200, "id": 410222 }, { "name": "尉氏县", "pid": 410200, "id": 410223 }, { "name": "开封县", "pid": 410200, "id": 410224 }, { "name": "兰考县", "pid": 410200, "id": 410225 }], "name": "开封市", "pid": 410000, "id": 410200 }, { "districtList": [{ "name": "市辖区", "pid": 410300, "id": 410301 }, { "name": "老城区", "pid": 410300, "id": 410302 }, { "name": "西工区", "pid": 410300, "id": 410303 }, { "name": "瀍河回族区", "pid": 410300, "id": 410304 }, { "name": "涧西区", "pid": 410300, "id": 410305 }, { "name": "吉利区", "pid": 410300, "id": 410306 }, { "name": "洛龙区", "pid": 410300, "id": 410311 }, { "name": "孟津县", "pid": 410300, "id": 410322 }, { "name": "新安县", "pid": 410300, "id": 410323 }, { "name": "栾川县", "pid": 410300, "id": 410324 }, { "name": "嵩县", "pid": 410300, "id": 410325 }, { "name": "汝阳县", "pid": 410300, "id": 410326 }, { "name": "宜阳县", "pid": 410300, "id": 410327 }, { "name": "洛宁县", "pid": 410300, "id": 410328 }, { "name": "伊川县", "pid": 410300, "id": 410329 }, { "name": "偃师市", "pid": 410300, "id": 410381 }], "name": "洛阳市", "pid": 410000, "id": 410300 }, { "districtList": [{ "name": "市辖区", "pid": 410400, "id": 410401 }, { "name": "新华区", "pid": 410400, "id": 410402 }, { "name": "卫东区", "pid": 410400, "id": 410403 }, { "name": "石龙区", "pid": 410400, "id": 410404 }, { "name": "湛河区", "pid": 410400, "id": 410411 }, { "name": "宝丰县", "pid": 410400, "id": 410421 }, { "name": "叶县", "pid": 410400, "id": 410422 }, { "name": "鲁山县", "pid": 410400, "id": 410423 }, { "name": "郏县", "pid": 410400, "id": 410425 }, { "name": "舞钢市", "pid": 410400, "id": 410481 }, { "name": "汝州市", "pid": 410400, "id": 410482 }], "name": "平顶山市", "pid": 410000, "id": 410400 }, { "districtList": [{ "name": "市辖区", "pid": 410500, "id": 410501 }, { "name": "文峰区", "pid": 410500, "id": 410502 }, { "name": "北关区", "pid": 410500, "id": 410503 }, { "name": "殷都区", "pid": 410500, "id": 410505 }, { "name": "龙安区", "pid": 410500, "id": 410506 }, { "name": "安阳县", "pid": 410500, "id": 410522 }, { "name": "汤阴县", "pid": 410500, "id": 410523 }, { "name": "滑县", "pid": 410500, "id": 410526 }, { "name": "内黄县", "pid": 410500, "id": 410527 }, { "name": "林州市", "pid": 410500, "id": 410581 }], "name": "安阳市", "pid": 410000, "id": 410500 }, { "districtList": [{ "name": "市辖区", "pid": 410600, "id": 410601 }, { "name": "鹤山区", "pid": 410600, "id": 410602 }, { "name": "山城区", "pid": 410600, "id": 410603 }, { "name": "淇滨区", "pid": 410600, "id": 410611 }, { "name": "浚县", "pid": 410600, "id": 410621 }, { "name": "淇县", "pid": 410600, "id": 410622 }], "name": "鹤壁市", "pid": 410000, "id": 410600 }, { "districtList": [{ "name": "市辖区", "pid": 410700, "id": 410701 }, { "name": "红旗区", "pid": 410700, "id": 410702 }, { "name": "卫滨区", "pid": 410700, "id": 410703 }, { "name": "凤泉区", "pid": 410700, "id": 410704 }, { "name": "牧野区", "pid": 410700, "id": 410711 }, { "name": "新乡县", "pid": 410700, "id": 410721 }, { "name": "获嘉县", "pid": 410700, "id": 410724 }, { "name": "原阳县", "pid": 410700, "id": 410725 }, { "name": "延津县", "pid": 410700, "id": 410726 }, { "name": "封丘县", "pid": 410700, "id": 410727 }, { "name": "长垣县", "pid": 410700, "id": 410728 }, { "name": "卫辉市", "pid": 410700, "id": 410781 }, { "name": "辉县市", "pid": 410700, "id": 410782 }], "name": "新乡市", "pid": 410000, "id": 410700 }, { "districtList": [{ "name": "市辖区", "pid": 410800, "id": 410801 }, { "name": "解放区", "pid": 410800, "id": 410802 }, { "name": "中站区", "pid": 410800, "id": 410803 }, { "name": "马村区", "pid": 410800, "id": 410804 }, { "name": "山阳区", "pid": 410800, "id": 410811 }, { "name": "修武县", "pid": 410800, "id": 410821 }, { "name": "博爱县", "pid": 410800, "id": 410822 }, { "name": "武陟县", "pid": 410800, "id": 410823 }, { "name": "温县", "pid": 410800, "id": 410825 }, { "name": "沁阳市", "pid": 410800, "id": 410882 }, { "name": "孟州市", "pid": 410800, "id": 410883 }], "name": "焦作市", "pid": 410000, "id": 410800 }, { "districtList": [{ "name": "市辖区", "pid": 410900, "id": 410901 }, { "name": "华龙区", "pid": 410900, "id": 410902 }, { "name": "清丰县", "pid": 410900, "id": 410922 }, { "name": "南乐县", "pid": 410900, "id": 410923 }, { "name": "范县", "pid": 410900, "id": 410926 }, { "name": "台前县", "pid": 410900, "id": 410927 }, { "name": "濮阳县", "pid": 410900, "id": 410928 }], "name": "濮阳市", "pid": 410000, "id": 410900 }, { "districtList": [{ "name": "市辖区", "pid": 411000, "id": 411001 }, { "name": "魏都区", "pid": 411000, "id": 411002 }, { "name": "许昌县", "pid": 411000, "id": 411023 }, { "name": "鄢陵县", "pid": 411000, "id": 411024 }, { "name": "襄城县", "pid": 411000, "id": 411025 }, { "name": "禹州市", "pid": 411000, "id": 411081 }, { "name": "长葛市", "pid": 411000, "id": 411082 }], "name": "许昌市", "pid": 410000, "id": 411000 }, { "districtList": [{ "name": "市辖区", "pid": 411100, "id": 411101 }, { "name": "源汇区", "pid": 411100, "id": 411102 }, { "name": "郾城区", "pid": 411100, "id": 411103 }, { "name": "召陵区", "pid": 411100, "id": 411104 }, { "name": "舞阳县", "pid": 411100, "id": 411121 }, { "name": "临颍县", "pid": 411100, "id": 411122 }], "name": "漯河市", "pid": 410000, "id": 411100 }, { "districtList": [{ "name": "市辖区", "pid": 411200, "id": 411201 }, { "name": "湖滨区", "pid": 411200, "id": 411202 }, { "name": "渑池县", "pid": 411200, "id": 411221 }, { "name": "陕县", "pid": 411200, "id": 411222 }, { "name": "卢氏县", "pid": 411200, "id": 411224 }, { "name": "义马市", "pid": 411200, "id": 411281 }, { "name": "灵宝市", "pid": 411200, "id": 411282 }], "name": "三门峡市", "pid": 410000, "id": 411200 }, { "districtList": [{ "name": "市辖区", "pid": 411300, "id": 411301 }, { "name": "宛城区", "pid": 411300, "id": 411302 }, { "name": "卧龙区", "pid": 411300, "id": 411303 }, { "name": "南召县", "pid": 411300, "id": 411321 }, { "name": "方城县", "pid": 411300, "id": 411322 }, { "name": "西峡县", "pid": 411300, "id": 411323 }, { "name": "镇平县", "pid": 411300, "id": 411324 }, { "name": "内乡县", "pid": 411300, "id": 411325 }, { "name": "淅川县", "pid": 411300, "id": 411326 }, { "name": "社旗县", "pid": 411300, "id": 411327 }, { "name": "唐河县", "pid": 411300, "id": 411328 }, { "name": "新野县", "pid": 411300, "id": 411329 }, { "name": "桐柏县", "pid": 411300, "id": 411330 }, { "name": "邓州市", "pid": 411300, "id": 411381 }], "name": "南阳市", "pid": 410000, "id": 411300 }, { "districtList": [{ "name": "市辖区", "pid": 411400, "id": 411401 }, { "name": "梁园区", "pid": 411400, "id": 411402 }, { "name": "睢阳区", "pid": 411400, "id": 411403 }, { "name": "民权县", "pid": 411400, "id": 411421 }, { "name": "睢县", "pid": 411400, "id": 411422 }, { "name": "宁陵县", "pid": 411400, "id": 411423 }, { "name": "柘城县", "pid": 411400, "id": 411424 }, { "name": "虞城县", "pid": 411400, "id": 411425 }, { "name": "夏邑县", "pid": 411400, "id": 411426 }, { "name": "永城市", "pid": 411400, "id": 411481 }], "name": "商丘市", "pid": 410000, "id": 411400 }, { "districtList": [{ "name": "市辖区", "pid": 411500, "id": 411501 }, { "name": "浉河区", "pid": 411500, "id": 411502 }, { "name": "平桥区", "pid": 411500, "id": 411503 }, { "name": "罗山县", "pid": 411500, "id": 411521 }, { "name": "光山县", "pid": 411500, "id": 411522 }, { "name": "新县", "pid": 411500, "id": 411523 }, { "name": "商城县", "pid": 411500, "id": 411524 }, { "name": "固始县", "pid": 411500, "id": 411525 }, { "name": "潢川县", "pid": 411500, "id": 411526 }, { "name": "淮滨县", "pid": 411500, "id": 411527 }, { "name": "息县", "pid": 411500, "id": 411528 }], "name": "信阳市", "pid": 410000, "id": 411500 }, { "districtList": [{ "name": "市辖区", "pid": 411600, "id": 411601 }, { "name": "川汇区", "pid": 411600, "id": 411602 }, { "name": "扶沟县", "pid": 411600, "id": 411621 }, { "name": "西华县", "pid": 411600, "id": 411622 }, { "name": "商水县", "pid": 411600, "id": 411623 }, { "name": "沈丘县", "pid": 411600, "id": 411624 }, { "name": "郸城县", "pid": 411600, "id": 411625 }, { "name": "淮阳县", "pid": 411600, "id": 411626 }, { "name": "太康县", "pid": 411600, "id": 411627 }, { "name": "鹿邑县", "pid": 411600, "id": 411628 }, { "name": "项城市", "pid": 411600, "id": 411681 }], "name": "周口市", "pid": 410000, "id": 411600 }, { "districtList": [{ "name": "市辖区", "pid": 411700, "id": 411701 }, { "name": "驿城区", "pid": 411700, "id": 411702 }, { "name": "西平县", "pid": 411700, "id": 411721 }, { "name": "上蔡县", "pid": 411700, "id": 411722 }, { "name": "平舆县", "pid": 411700, "id": 411723 }, { "name": "正阳县", "pid": 411700, "id": 411724 }, { "name": "确山县", "pid": 411700, "id": 411725 }, { "name": "泌阳县", "pid": 411700, "id": 411726 }, { "name": "汝南县", "pid": 411700, "id": 411727 }, { "name": "遂平县", "pid": 411700, "id": 411728 }, { "name": "新蔡县", "pid": 411700, "id": 411729 }], "name": "驻马店市", "pid": 410000, "id": 411700 }, { "districtList": [{ "name": "济源市", "pid": 419000, "id": 419001 }], "name": "省直辖县级行政区划", "pid": 410000, "id": 419000 }] }, { "name": "湖北省", "id": 420000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 420100, "id": 420101 }, { "name": "江岸区", "pid": 420100, "id": 420102 }, { "name": "江汉区", "pid": 420100, "id": 420103 }, { "name": "硚口区", "pid": 420100, "id": 420104 }, { "name": "汉阳区", "pid": 420100, "id": 420105 }, { "name": "武昌区", "pid": 420100, "id": 420106 }, { "name": "青山区", "pid": 420100, "id": 420107 }, { "name": "洪山区", "pid": 420100, "id": 420111 }, { "name": "东西湖区", "pid": 420100, "id": 420112 }, { "name": "汉南区", "pid": 420100, "id": 420113 }, { "name": "蔡甸区", "pid": 420100, "id": 420114 }, { "name": "江夏区", "pid": 420100, "id": 420115 }, { "name": "黄陂区", "pid": 420100, "id": 420116 }, { "name": "新洲区", "pid": 420100, "id": 420117 }], "name": "武汉市", "pid": 420000, "id": 420100 }, { "districtList": [{ "name": "市辖区", "pid": 420200, "id": 420201 }, { "name": "黄石港区", "pid": 420200, "id": 420202 }, { "name": "西塞山区", "pid": 420200, "id": 420203 }, { "name": "下陆区", "pid": 420200, "id": 420204 }, { "name": "铁山区", "pid": 420200, "id": 420205 }, { "name": "阳新县", "pid": 420200, "id": 420222 }, { "name": "大冶市", "pid": 420200, "id": 420281 }], "name": "黄石市", "pid": 420000, "id": 420200 }, { "districtList": [{ "name": "市辖区", "pid": 420300, "id": 420301 }, { "name": "茅箭区", "pid": 420300, "id": 420302 }, { "name": "张湾区", "pid": 420300, "id": 420303 }, { "name": "郧县", "pid": 420300, "id": 420321 }, { "name": "郧西县", "pid": 420300, "id": 420322 }, { "name": "竹山县", "pid": 420300, "id": 420323 }, { "name": "竹溪县", "pid": 420300, "id": 420324 }, { "name": "房县", "pid": 420300, "id": 420325 }, { "name": "丹江口市", "pid": 420300, "id": 420381 }], "name": "十堰市", "pid": 420000, "id": 420300 }, { "districtList": [{ "name": "市辖区", "pid": 420500, "id": 420501 }, { "name": "西陵区", "pid": 420500, "id": 420502 }, { "name": "伍家岗区", "pid": 420500, "id": 420503 }, { "name": "点军区", "pid": 420500, "id": 420504 }, { "name": "猇亭区", "pid": 420500, "id": 420505 }, { "name": "夷陵区", "pid": 420500, "id": 420506 }, { "name": "远安县", "pid": 420500, "id": 420525 }, { "name": "兴山县", "pid": 420500, "id": 420526 }, { "name": "秭归县", "pid": 420500, "id": 420527 }, { "name": "长阳土家族自治县", "pid": 420500, "id": 420528 }, { "name": "五峰土家族自治县", "pid": 420500, "id": 420529 }, { "name": "宜都市", "pid": 420500, "id": 420581 }, { "name": "当阳市", "pid": 420500, "id": 420582 }, { "name": "枝江市", "pid": 420500, "id": 420583 }], "name": "宜昌市", "pid": 420000, "id": 420500 }, { "districtList": [{ "name": "市辖区", "pid": 420600, "id": 420601 }, { "name": "襄城区", "pid": 420600, "id": 420602 }, { "name": "樊城区", "pid": 420600, "id": 420606 }, { "name": "襄州区", "pid": 420600, "id": 420607 }, { "name": "南漳县", "pid": 420600, "id": 420624 }, { "name": "谷城县", "pid": 420600, "id": 420625 }, { "name": "保康县", "pid": 420600, "id": 420626 }, { "name": "老河口市", "pid": 420600, "id": 420682 }, { "name": "枣阳市", "pid": 420600, "id": 420683 }, { "name": "宜城市", "pid": 420600, "id": 420684 }], "name": "襄阳市", "pid": 420000, "id": 420600 }, { "districtList": [{ "name": "市辖区", "pid": 420700, "id": 420701 }, { "name": "梁子湖区", "pid": 420700, "id": 420702 }, { "name": "华容区", "pid": 420700, "id": 420703 }, { "name": "鄂城区", "pid": 420700, "id": 420704 }], "name": "鄂州市", "pid": 420000, "id": 420700 }, { "districtList": [{ "name": "市辖区", "pid": 420800, "id": 420801 }, { "name": "东宝区", "pid": 420800, "id": 420802 }, { "name": "掇刀区", "pid": 420800, "id": 420804 }, { "name": "京山县", "pid": 420800, "id": 420821 }, { "name": "沙洋县", "pid": 420800, "id": 420822 }, { "name": "钟祥市", "pid": 420800, "id": 420881 }], "name": "荆门市", "pid": 420000, "id": 420800 }, { "districtList": [{ "name": "市辖区", "pid": 420900, "id": 420901 }, { "name": "孝南区", "pid": 420900, "id": 420902 }, { "name": "孝昌县", "pid": 420900, "id": 420921 }, { "name": "大悟县", "pid": 420900, "id": 420922 }, { "name": "云梦县", "pid": 420900, "id": 420923 }, { "name": "应城市", "pid": 420900, "id": 420981 }, { "name": "安陆市", "pid": 420900, "id": 420982 }, { "name": "汉川市", "pid": 420900, "id": 420984 }], "name": "孝感市", "pid": 420000, "id": 420900 }, { "districtList": [{ "name": "市辖区", "pid": 421000, "id": 421001 }, { "name": "沙市区", "pid": 421000, "id": 421002 }, { "name": "荆州区", "pid": 421000, "id": 421003 }, { "name": "公安县", "pid": 421000, "id": 421022 }, { "name": "监利县", "pid": 421000, "id": 421023 }, { "name": "江陵县", "pid": 421000, "id": 421024 }, { "name": "石首市", "pid": 421000, "id": 421081 }, { "name": "洪湖市", "pid": 421000, "id": 421083 }, { "name": "松滋市", "pid": 421000, "id": 421087 }], "name": "荆州市", "pid": 420000, "id": 421000 }, { "districtList": [{ "name": "市辖区", "pid": 421100, "id": 421101 }, { "name": "黄州区", "pid": 421100, "id": 421102 }, { "name": "团风县", "pid": 421100, "id": 421121 }, { "name": "红安县", "pid": 421100, "id": 421122 }, { "name": "罗田县", "pid": 421100, "id": 421123 }, { "name": "英山县", "pid": 421100, "id": 421124 }, { "name": "浠水县", "pid": 421100, "id": 421125 }, { "name": "蕲春县", "pid": 421100, "id": 421126 }, { "name": "黄梅县", "pid": 421100, "id": 421127 }, { "name": "麻城市", "pid": 421100, "id": 421181 }, { "name": "武穴市", "pid": 421100, "id": 421182 }], "name": "黄冈市", "pid": 420000, "id": 421100 }, { "districtList": [{ "name": "市辖区", "pid": 421200, "id": 421201 }, { "name": "咸安区", "pid": 421200, "id": 421202 }, { "name": "嘉鱼县", "pid": 421200, "id": 421221 }, { "name": "通城县", "pid": 421200, "id": 421222 }, { "name": "崇阳县", "pid": 421200, "id": 421223 }, { "name": "通山县", "pid": 421200, "id": 421224 }, { "name": "赤壁市", "pid": 421200, "id": 421281 }], "name": "咸宁市", "pid": 420000, "id": 421200 }, { "districtList": [{ "name": "市辖区", "pid": 421300, "id": 421301 }, { "name": "曾都区", "pid": 421300, "id": 421303 }, { "name": "随县", "pid": 421300, "id": 421321 }, { "name": "广水市", "pid": 421300, "id": 421381 }], "name": "随州市", "pid": 420000, "id": 421300 }, { "districtList": [{ "name": "恩施市", "pid": 422800, "id": 422801 }, { "name": "利川市", "pid": 422800, "id": 422802 }, { "name": "建始县", "pid": 422800, "id": 422822 }, { "name": "巴东县", "pid": 422800, "id": 422823 }, { "name": "宣恩县", "pid": 422800, "id": 422825 }, { "name": "咸丰县", "pid": 422800, "id": 422826 }, { "name": "来凤县", "pid": 422800, "id": 422827 }, { "name": "鹤峰县", "pid": 422800, "id": 422828 }], "name": "恩施土家族苗族自治州", "pid": 420000, "id": 422800 }, { "districtList": [{ "name": "仙桃市", "pid": 429000, "id": 429004 }, { "name": "潜江市", "pid": 429000, "id": 429005 }, { "name": "天门市", "pid": 429000, "id": 429006 }, { "name": "神农架林区", "pid": 429000, "id": 429021 }], "name": "省直辖县级行政区划", "pid": 420000, "id": 429000 }] }, { "name": "湖南省", "id": 430000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 430100, "id": 430101 }, { "name": "芙蓉区", "pid": 430100, "id": 430102 }, { "name": "天心区", "pid": 430100, "id": 430103 }, { "name": "岳麓区", "pid": 430100, "id": 430104 }, { "name": "开福区", "pid": 430100, "id": 430105 }, { "name": "雨花区", "pid": 430100, "id": 430111 }, { "name": "望城区", "pid": 430100, "id": 430112 }, { "name": "长沙县", "pid": 430100, "id": 430121 }, { "name": "宁乡县", "pid": 430100, "id": 430124 }, { "name": "浏阳市", "pid": 430100, "id": 430181 }], "name": "长沙市", "pid": 430000, "id": 430100 }, { "districtList": [{ "name": "市辖区", "pid": 430200, "id": 430201 }, { "name": "荷塘区", "pid": 430200, "id": 430202 }, { "name": "芦淞区", "pid": 430200, "id": 430203 }, { "name": "石峰区", "pid": 430200, "id": 430204 }, { "name": "天元区", "pid": 430200, "id": 430211 }, { "name": "株洲县", "pid": 430200, "id": 430221 }, { "name": "攸县", "pid": 430200, "id": 430223 }, { "name": "茶陵县", "pid": 430200, "id": 430224 }, { "name": "炎陵县", "pid": 430200, "id": 430225 }, { "name": "醴陵市", "pid": 430200, "id": 430281 }], "name": "株洲市", "pid": 430000, "id": 430200 }, { "districtList": [{ "name": "市辖区", "pid": 430300, "id": 430301 }, { "name": "雨湖区", "pid": 430300, "id": 430302 }, { "name": "岳塘区", "pid": 430300, "id": 430304 }, { "name": "湘潭县", "pid": 430300, "id": 430321 }, { "name": "湘乡市", "pid": 430300, "id": 430381 }, { "name": "韶山市", "pid": 430300, "id": 430382 }], "name": "湘潭市", "pid": 430000, "id": 430300 }, { "districtList": [{ "name": "市辖区", "pid": 430400, "id": 430401 }, { "name": "珠晖区", "pid": 430400, "id": 430405 }, { "name": "雁峰区", "pid": 430400, "id": 430406 }, { "name": "石鼓区", "pid": 430400, "id": 430407 }, { "name": "蒸湘区", "pid": 430400, "id": 430408 }, { "name": "南岳区", "pid": 430400, "id": 430412 }, { "name": "衡阳县", "pid": 430400, "id": 430421 }, { "name": "衡南县", "pid": 430400, "id": 430422 }, { "name": "衡山县", "pid": 430400, "id": 430423 }, { "name": "衡东县", "pid": 430400, "id": 430424 }, { "name": "祁东县", "pid": 430400, "id": 430426 }, { "name": "耒阳市", "pid": 430400, "id": 430481 }, { "name": "常宁市", "pid": 430400, "id": 430482 }], "name": "衡阳市", "pid": 430000, "id": 430400 }, { "districtList": [{ "name": "市辖区", "pid": 430500, "id": 430501 }, { "name": "双清区", "pid": 430500, "id": 430502 }, { "name": "大祥区", "pid": 430500, "id": 430503 }, { "name": "北塔区", "pid": 430500, "id": 430511 }, { "name": "邵东县", "pid": 430500, "id": 430521 }, { "name": "新邵县", "pid": 430500, "id": 430522 }, { "name": "邵阳县", "pid": 430500, "id": 430523 }, { "name": "隆回县", "pid": 430500, "id": 430524 }, { "name": "洞口县", "pid": 430500, "id": 430525 }, { "name": "绥宁县", "pid": 430500, "id": 430527 }, { "name": "新宁县", "pid": 430500, "id": 430528 }, { "name": "城步苗族自治县", "pid": 430500, "id": 430529 }, { "name": "武冈市", "pid": 430500, "id": 430581 }], "name": "邵阳市", "pid": 430000, "id": 430500 }, { "districtList": [{ "name": "市辖区", "pid": 430600, "id": 430601 }, { "name": "岳阳楼区", "pid": 430600, "id": 430602 }, { "name": "云溪区", "pid": 430600, "id": 430603 }, { "name": "君山区", "pid": 430600, "id": 430611 }, { "name": "岳阳县", "pid": 430600, "id": 430621 }, { "name": "华容县", "pid": 430600, "id": 430623 }, { "name": "湘阴县", "pid": 430600, "id": 430624 }, { "name": "平江县", "pid": 430600, "id": 430626 }, { "name": "汨罗市", "pid": 430600, "id": 430681 }, { "name": "临湘市", "pid": 430600, "id": 430682 }], "name": "岳阳市", "pid": 430000, "id": 430600 }, { "districtList": [{ "name": "市辖区", "pid": 430700, "id": 430701 }, { "name": "武陵区", "pid": 430700, "id": 430702 }, { "name": "鼎城区", "pid": 430700, "id": 430703 }, { "name": "安乡县", "pid": 430700, "id": 430721 }, { "name": "汉寿县", "pid": 430700, "id": 430722 }, { "name": "澧县", "pid": 430700, "id": 430723 }, { "name": "临澧县", "pid": 430700, "id": 430724 }, { "name": "桃源县", "pid": 430700, "id": 430725 }, { "name": "石门县", "pid": 430700, "id": 430726 }, { "name": "津市市", "pid": 430700, "id": 430781 }], "name": "常德市", "pid": 430000, "id": 430700 }, { "districtList": [{ "name": "市辖区", "pid": 430800, "id": 430801 }, { "name": "永定区", "pid": 430800, "id": 430802 }, { "name": "武陵源区", "pid": 430800, "id": 430811 }, { "name": "慈利县", "pid": 430800, "id": 430821 }, { "name": "桑植县", "pid": 430800, "id": 430822 }], "name": "张家界市", "pid": 430000, "id": 430800 }, { "districtList": [{ "name": "市辖区", "pid": 430900, "id": 430901 }, { "name": "资阳区", "pid": 430900, "id": 430902 }, { "name": "赫山区", "pid": 430900, "id": 430903 }, { "name": "南县", "pid": 430900, "id": 430921 }, { "name": "桃江县", "pid": 430900, "id": 430922 }, { "name": "安化县", "pid": 430900, "id": 430923 }, { "name": "沅江市", "pid": 430900, "id": 430981 }], "name": "益阳市", "pid": 430000, "id": 430900 }, { "districtList": [{ "name": "市辖区", "pid": 431000, "id": 431001 }, { "name": "北湖区", "pid": 431000, "id": 431002 }, { "name": "苏仙区", "pid": 431000, "id": 431003 }, { "name": "桂阳县", "pid": 431000, "id": 431021 }, { "name": "宜章县", "pid": 431000, "id": 431022 }, { "name": "永兴县", "pid": 431000, "id": 431023 }, { "name": "嘉禾县", "pid": 431000, "id": 431024 }, { "name": "临武县", "pid": 431000, "id": 431025 }, { "name": "汝城县", "pid": 431000, "id": 431026 }, { "name": "桂东县", "pid": 431000, "id": 431027 }, { "name": "安仁县", "pid": 431000, "id": 431028 }, { "name": "资兴市", "pid": 431000, "id": 431081 }], "name": "郴州市", "pid": 430000, "id": 431000 }, { "districtList": [{ "name": "市辖区", "pid": 431100, "id": 431101 }, { "name": "零陵区", "pid": 431100, "id": 431102 }, { "name": "冷水滩区", "pid": 431100, "id": 431103 }, { "name": "祁阳县", "pid": 431100, "id": 431121 }, { "name": "东安县", "pid": 431100, "id": 431122 }, { "name": "双牌县", "pid": 431100, "id": 431123 }, { "name": "道县", "pid": 431100, "id": 431124 }, { "name": "江永县", "pid": 431100, "id": 431125 }, { "name": "宁远县", "pid": 431100, "id": 431126 }, { "name": "蓝山县", "pid": 431100, "id": 431127 }, { "name": "新田县", "pid": 431100, "id": 431128 }, { "name": "江华瑶族自治县", "pid": 431100, "id": 431129 }], "name": "永州市", "pid": 430000, "id": 431100 }, { "districtList": [{ "name": "市辖区", "pid": 431200, "id": 431201 }, { "name": "鹤城区", "pid": 431200, "id": 431202 }, { "name": "中方县", "pid": 431200, "id": 431221 }, { "name": "沅陵县", "pid": 431200, "id": 431222 }, { "name": "辰溪县", "pid": 431200, "id": 431223 }, { "name": "溆浦县", "pid": 431200, "id": 431224 }, { "name": "会同县", "pid": 431200, "id": 431225 }, { "name": "麻阳苗族自治县", "pid": 431200, "id": 431226 }, { "name": "新晃侗族自治县", "pid": 431200, "id": 431227 }, { "name": "芷江侗族自治县", "pid": 431200, "id": 431228 }, { "name": "靖州苗族侗族自治县", "pid": 431200, "id": 431229 }, { "name": "通道侗族自治县", "pid": 431200, "id": 431230 }, { "name": "洪江市", "pid": 431200, "id": 431281 }], "name": "怀化市", "pid": 430000, "id": 431200 }, { "districtList": [{ "name": "市辖区", "pid": 431300, "id": 431301 }, { "name": "娄星区", "pid": 431300, "id": 431302 }, { "name": "双峰县", "pid": 431300, "id": 431321 }, { "name": "新化县", "pid": 431300, "id": 431322 }, { "name": "冷水江市", "pid": 431300, "id": 431381 }, { "name": "涟源市", "pid": 431300, "id": 431382 }], "name": "娄底市", "pid": 430000, "id": 431300 }, { "districtList": [{ "name": "吉首市", "pid": 433100, "id": 433101 }, { "name": "泸溪县", "pid": 433100, "id": 433122 }, { "name": "凤凰县", "pid": 433100, "id": 433123 }, { "name": "花垣县", "pid": 433100, "id": 433124 }, { "name": "保靖县", "pid": 433100, "id": 433125 }, { "name": "古丈县", "pid": 433100, "id": 433126 }, { "name": "永顺县", "pid": 433100, "id": 433127 }, { "name": "龙山县", "pid": 433100, "id": 433130 }], "name": "湘西土家族苗族自治州", "pid": 430000, "id": 433100 }] }, { "name": "广东省", "id": 440000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 440100, "id": 440101 }, { "name": "荔湾区", "pid": 440100, "id": 440103 }, { "name": "越秀区", "pid": 440100, "id": 440104 }, { "name": "海珠区", "pid": 440100, "id": 440105 }, { "name": "天河区", "pid": 440100, "id": 440106 }, { "name": "白云区", "pid": 440100, "id": 440111 }, { "name": "黄埔区", "pid": 440100, "id": 440112 }, { "name": "番禺区", "pid": 440100, "id": 440113 }, { "name": "花都区", "pid": 440100, "id": 440114 }, { "name": "南沙区", "pid": 440100, "id": 440115 }, { "name": "萝岗区", "pid": 440100, "id": 440116 }, { "name": "增城市", "pid": 440100, "id": 440183 }, { "name": "从化市", "pid": 440100, "id": 440184 }], "name": "广州市", "pid": 440000, "id": 440100 }, { "districtList": [{ "name": "市辖区", "pid": 440200, "id": 440201 }, { "name": "武江区", "pid": 440200, "id": 440203 }, { "name": "浈江区", "pid": 440200, "id": 440204 }, { "name": "曲江区", "pid": 440200, "id": 440205 }, { "name": "始兴县", "pid": 440200, "id": 440222 }, { "name": "仁化县", "pid": 440200, "id": 440224 }, { "name": "翁源县", "pid": 440200, "id": 440229 }, { "name": "乳源瑶族自治县", "pid": 440200, "id": 440232 }, { "name": "新丰县", "pid": 440200, "id": 440233 }, { "name": "乐昌市", "pid": 440200, "id": 440281 }, { "name": "南雄市", "pid": 440200, "id": 440282 }], "name": "韶关市", "pid": 440000, "id": 440200 }, { "districtList": [{ "name": "市辖区", "pid": 440300, "id": 440301 }, { "name": "罗湖区", "pid": 440300, "id": 440303 }, { "name": "福田区", "pid": 440300, "id": 440304 }, { "name": "南山区", "pid": 440300, "id": 440305 }, { "name": "宝安区", "pid": 440300, "id": 440306 }, { "name": "龙岗区", "pid": 440300, "id": 440307 }, { "name": "盐田区", "pid": 440300, "id": 440308 }, { "name": "龙华区", "pid": 440300, "id": 440309 }], "name": "深圳市", "pid": 440000, "id": 440300 }, { "districtList": [{ "name": "市辖区", "pid": 440400, "id": 440401 }, { "name": "香洲区", "pid": 440400, "id": 440402 }, { "name": "斗门区", "pid": 440400, "id": 440403 }, { "name": "金湾区", "pid": 440400, "id": 440404 }], "name": "珠海市", "pid": 440000, "id": 440400 }, { "districtList": [{ "name": "市辖区", "pid": 440500, "id": 440501 }, { "name": "龙湖区", "pid": 440500, "id": 440507 }, { "name": "金平区", "pid": 440500, "id": 440511 }, { "name": "濠江区", "pid": 440500, "id": 440512 }, { "name": "潮阳区", "pid": 440500, "id": 440513 }, { "name": "潮南区", "pid": 440500, "id": 440514 }, { "name": "澄海区", "pid": 440500, "id": 440515 }, { "name": "南澳县", "pid": 440500, "id": 440523 }], "name": "汕头市", "pid": 440000, "id": 440500 }, { "districtList": [{ "name": "市辖区", "pid": 440600, "id": 440601 }, { "name": "禅城区", "pid": 440600, "id": 440604 }, { "name": "南海区", "pid": 440600, "id": 440605 }, { "name": "顺德区", "pid": 440600, "id": 440606 }, { "name": "三水区", "pid": 440600, "id": 440607 }, { "name": "高明区", "pid": 440600, "id": 440608 }], "name": "佛山市", "pid": 440000, "id": 440600 }, { "districtList": [{ "name": "市辖区", "pid": 440700, "id": 440701 }, { "name": "蓬江区", "pid": 440700, "id": 440703 }, { "name": "江海区", "pid": 440700, "id": 440704 }, { "name": "新会区", "pid": 440700, "id": 440705 }, { "name": "台山市", "pid": 440700, "id": 440781 }, { "name": "开平市", "pid": 440700, "id": 440783 }, { "name": "鹤山市", "pid": 440700, "id": 440784 }, { "name": "恩平市", "pid": 440700, "id": 440785 }], "name": "江门市", "pid": 440000, "id": 440700 }, { "districtList": [{ "name": "市辖区", "pid": 440800, "id": 440801 }, { "name": "赤坎区", "pid": 440800, "id": 440802 }, { "name": "霞山区", "pid": 440800, "id": 440803 }, { "name": "坡头区", "pid": 440800, "id": 440804 }, { "name": "麻章区", "pid": 440800, "id": 440811 }, { "name": "遂溪县", "pid": 440800, "id": 440823 }, { "name": "徐闻县", "pid": 440800, "id": 440825 }, { "name": "廉江市", "pid": 440800, "id": 440881 }, { "name": "雷州市", "pid": 440800, "id": 440882 }, { "name": "吴川市", "pid": 440800, "id": 440883 }], "name": "湛江市", "pid": 440000, "id": 440800 }, { "districtList": [{ "name": "市辖区", "pid": 440900, "id": 440901 }, { "name": "茂南区", "pid": 440900, "id": 440902 }, { "name": "茂港区", "pid": 440900, "id": 440903 }, { "name": "电白县", "pid": 440900, "id": 440923 }, { "name": "高州市", "pid": 440900, "id": 440981 }, { "name": "化州市", "pid": 440900, "id": 440982 }, { "name": "信宜市", "pid": 440900, "id": 440983 }], "name": "茂名市", "pid": 440000, "id": 440900 }, { "districtList": [{ "name": "市辖区", "pid": 441200, "id": 441201 }, { "name": "端州区", "pid": 441200, "id": 441202 }, { "name": "鼎湖区", "pid": 441200, "id": 441203 }, { "name": "广宁县", "pid": 441200, "id": 441223 }, { "name": "怀集县", "pid": 441200, "id": 441224 }, { "name": "封开县", "pid": 441200, "id": 441225 }, { "name": "德庆县", "pid": 441200, "id": 441226 }, { "name": "高要市", "pid": 441200, "id": 441283 }, { "name": "四会市", "pid": 441200, "id": 441284 }], "name": "肇庆市", "pid": 440000, "id": 441200 }, { "districtList": [{ "name": "市辖区", "pid": 441300, "id": 441301 }, { "name": "惠城区", "pid": 441300, "id": 441302 }, { "name": "惠阳区", "pid": 441300, "id": 441303 }, { "name": "博罗县", "pid": 441300, "id": 441322 }, { "name": "惠东县", "pid": 441300, "id": 441323 }, { "name": "龙门县", "pid": 441300, "id": 441324 }], "name": "惠州市", "pid": 440000, "id": 441300 }, { "districtList": [{ "name": "市辖区", "pid": 441400, "id": 441401 }, { "name": "梅江区", "pid": 441400, "id": 441402 }, { "name": "梅县", "pid": 441400, "id": 441421 }, { "name": "大埔县", "pid": 441400, "id": 441422 }, { "name": "丰顺县", "pid": 441400, "id": 441423 }, { "name": "五华县", "pid": 441400, "id": 441424 }, { "name": "平远县", "pid": 441400, "id": 441426 }, { "name": "蕉岭县", "pid": 441400, "id": 441427 }, { "name": "兴宁市", "pid": 441400, "id": 441481 }], "name": "梅州市", "pid": 440000, "id": 441400 }, { "districtList": [{ "name": "市辖区", "pid": 441500, "id": 441501 }, { "name": "城区", "pid": 441500, "id": 441502 }, { "name": "海丰县", "pid": 441500, "id": 441521 }, { "name": "陆河县", "pid": 441500, "id": 441523 }, { "name": "陆丰市", "pid": 441500, "id": 441581 }], "name": "汕尾市", "pid": 440000, "id": 441500 }, { "districtList": [{ "name": "市辖区", "pid": 441600, "id": 441601 }, { "name": "源城区", "pid": 441600, "id": 441602 }, { "name": "紫金县", "pid": 441600, "id": 441621 }, { "name": "龙川县", "pid": 441600, "id": 441622 }, { "name": "连平县", "pid": 441600, "id": 441623 }, { "name": "和平县", "pid": 441600, "id": 441624 }, { "name": "东源县", "pid": 441600, "id": 441625 }], "name": "河源市", "pid": 440000, "id": 441600 }, { "districtList": [{ "name": "市辖区", "pid": 441700, "id": 441701 }, { "name": "江城区", "pid": 441700, "id": 441702 }, { "name": "阳西县", "pid": 441700, "id": 441721 }, { "name": "阳东县", "pid": 441700, "id": 441723 }, { "name": "阳春市", "pid": 441700, "id": 441781 }], "name": "阳江市", "pid": 440000, "id": 441700 }, { "districtList": [{ "name": "市辖区", "pid": 441800, "id": 441801 }, { "name": "清城区", "pid": 441800, "id": 441802 }, { "name": "清新区", "pid": 441800, "id": 441803 }, { "name": "佛冈县", "pid": 441800, "id": 441821 }, { "name": "阳山县", "pid": 441800, "id": 441823 }, { "name": "连山壮族瑶族自治县", "pid": 441800, "id": 441825 }, { "name": "连南瑶族自治县", "pid": 441800, "id": 441826 }, { "name": "英德市", "pid": 441800, "id": 441881 }, { "name": "连州市", "pid": 441800, "id": 441882 }], "name": "清远市", "pid": 440000, "id": 441800 }, { "districtList": [], "name": "东莞市", "pid": 440000, "id": 441900 }, { "districtList": [], "name": "中山市", "pid": 440000, "id": 442000 }, { "districtList": [{ "name": "市辖区", "pid": 445100, "id": 445101 }, { "name": "湘桥区", "pid": 445100, "id": 445102 }, { "name": "潮安区", "pid": 445100, "id": 445103 }, { "name": "饶平县", "pid": 445100, "id": 445122 }], "name": "潮州市", "pid": 440000, "id": 445100 }, { "districtList": [{ "name": "市辖区", "pid": 445200, "id": 445201 }, { "name": "榕城区", "pid": 445200, "id": 445202 }, { "name": "揭东区", "pid": 445200, "id": 445203 }, { "name": "揭西县", "pid": 445200, "id": 445222 }, { "name": "惠来县", "pid": 445200, "id": 445224 }, { "name": "普宁市", "pid": 445200, "id": 445281 }], "name": "揭阳市", "pid": 440000, "id": 445200 }, { "districtList": [{ "name": "市辖区", "pid": 445300, "id": 445301 }, { "name": "云城区", "pid": 445300, "id": 445302 }, { "name": "新兴县", "pid": 445300, "id": 445321 }, { "name": "郁南县", "pid": 445300, "id": 445322 }, { "name": "云安县", "pid": 445300, "id": 445323 }, { "name": "罗定市", "pid": 445300, "id": 445381 }], "name": "云浮市", "pid": 440000, "id": 445300 }] }, { "name": "广西壮族自治区", "id": 450000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 450100, "id": 450101 }, { "name": "兴宁区", "pid": 450100, "id": 450102 }, { "name": "青秀区", "pid": 450100, "id": 450103 }, { "name": "江南区", "pid": 450100, "id": 450105 }, { "name": "西乡塘区", "pid": 450100, "id": 450107 }, { "name": "良庆区", "pid": 450100, "id": 450108 }, { "name": "邕宁区", "pid": 450100, "id": 450109 }, { "name": "武鸣县", "pid": 450100, "id": 450122 }, { "name": "隆安县", "pid": 450100, "id": 450123 }, { "name": "马山县", "pid": 450100, "id": 450124 }, { "name": "上林县", "pid": 450100, "id": 450125 }, { "name": "宾阳县", "pid": 450100, "id": 450126 }, { "name": "横县", "pid": 450100, "id": 450127 }], "name": "南宁市", "pid": 450000, "id": 450100 }, { "districtList": [{ "name": "市辖区", "pid": 450200, "id": 450201 }, { "name": "城中区", "pid": 450200, "id": 450202 }, { "name": "鱼峰区", "pid": 450200, "id": 450203 }, { "name": "柳南区", "pid": 450200, "id": 450204 }, { "name": "柳北区", "pid": 450200, "id": 450205 }, { "name": "柳江县", "pid": 450200, "id": 450221 }, { "name": "柳城县", "pid": 450200, "id": 450222 }, { "name": "鹿寨县", "pid": 450200, "id": 450223 }, { "name": "融安县", "pid": 450200, "id": 450224 }, { "name": "融水苗族自治县", "pid": 450200, "id": 450225 }, { "name": "三江侗族自治县", "pid": 450200, "id": 450226 }], "name": "柳州市", "pid": 450000, "id": 450200 }, { "districtList": [{ "name": "市辖区", "pid": 450300, "id": 450301 }, { "name": "秀峰区", "pid": 450300, "id": 450302 }, { "name": "叠彩区", "pid": 450300, "id": 450303 }, { "name": "象山区", "pid": 450300, "id": 450304 }, { "name": "七星区", "pid": 450300, "id": 450305 }, { "name": "雁山区", "pid": 450300, "id": 450311 }, { "name": "临桂区", "pid": 450300, "id": 450312 }, { "name": "阳朔县", "pid": 450300, "id": 450321 }, { "name": "灵川县", "pid": 450300, "id": 450323 }, { "name": "全州县", "pid": 450300, "id": 450324 }, { "name": "兴安县", "pid": 450300, "id": 450325 }, { "name": "永福县", "pid": 450300, "id": 450326 }, { "name": "灌阳县", "pid": 450300, "id": 450327 }, { "name": "龙胜各族自治县", "pid": 450300, "id": 450328 }, { "name": "资源县", "pid": 450300, "id": 450329 }, { "name": "平乐县", "pid": 450300, "id": 450330 }, { "name": "荔浦县", "pid": 450300, "id": 450331 }, { "name": "恭城瑶族自治县", "pid": 450300, "id": 450332 }], "name": "桂林市", "pid": 450000, "id": 450300 }, { "districtList": [{ "name": "市辖区", "pid": 450400, "id": 450401 }, { "name": "万秀区", "pid": 450400, "id": 450403 }, { "name": "长洲区", "pid": 450400, "id": 450405 }, { "name": "龙圩区", "pid": 450400, "id": 450406 }, { "name": "苍梧县", "pid": 450400, "id": 450421 }, { "name": "藤县", "pid": 450400, "id": 450422 }, { "name": "蒙山县", "pid": 450400, "id": 450423 }, { "name": "岑溪市", "pid": 450400, "id": 450481 }], "name": "梧州市", "pid": 450000, "id": 450400 }, { "districtList": [{ "name": "市辖区", "pid": 450500, "id": 450501 }, { "name": "海城区", "pid": 450500, "id": 450502 }, { "name": "银海区", "pid": 450500, "id": 450503 }, { "name": "铁山港区", "pid": 450500, "id": 450512 }, { "name": "合浦县", "pid": 450500, "id": 450521 }], "name": "北海市", "pid": 450000, "id": 450500 }, { "districtList": [{ "name": "市辖区", "pid": 450600, "id": 450601 }, { "name": "港口区", "pid": 450600, "id": 450602 }, { "name": "防城区", "pid": 450600, "id": 450603 }, { "name": "上思县", "pid": 450600, "id": 450621 }, { "name": "东兴市", "pid": 450600, "id": 450681 }], "name": "防城港市", "pid": 450000, "id": 450600 }, { "districtList": [{ "name": "市辖区", "pid": 450700, "id": 450701 }, { "name": "钦南区", "pid": 450700, "id": 450702 }, { "name": "钦北区", "pid": 450700, "id": 450703 }, { "name": "灵山县", "pid": 450700, "id": 450721 }, { "name": "浦北县", "pid": 450700, "id": 450722 }], "name": "钦州市", "pid": 450000, "id": 450700 }, { "districtList": [{ "name": "市辖区", "pid": 450800, "id": 450801 }, { "name": "港北区", "pid": 450800, "id": 450802 }, { "name": "港南区", "pid": 450800, "id": 450803 }, { "name": "覃塘区", "pid": 450800, "id": 450804 }, { "name": "平南县", "pid": 450800, "id": 450821 }, { "name": "桂平市", "pid": 450800, "id": 450881 }], "name": "贵港市", "pid": 450000, "id": 450800 }, { "districtList": [{ "name": "市辖区", "pid": 450900, "id": 450901 }, { "name": "玉州区", "pid": 450900, "id": 450902 }, { "name": "福绵区", "pid": 450900, "id": 450903 }, { "name": "容县", "pid": 450900, "id": 450921 }, { "name": "陆川县", "pid": 450900, "id": 450922 }, { "name": "博白县", "pid": 450900, "id": 450923 }, { "name": "兴业县", "pid": 450900, "id": 450924 }, { "name": "北流市", "pid": 450900, "id": 450981 }], "name": "玉林市", "pid": 450000, "id": 450900 }, { "districtList": [{ "name": "市辖区", "pid": 451000, "id": 451001 }, { "name": "右江区", "pid": 451000, "id": 451002 }, { "name": "田阳县", "pid": 451000, "id": 451021 }, { "name": "田东县", "pid": 451000, "id": 451022 }, { "name": "平果县", "pid": 451000, "id": 451023 }, { "name": "德保县", "pid": 451000, "id": 451024 }, { "name": "靖西县", "pid": 451000, "id": 451025 }, { "name": "那坡县", "pid": 451000, "id": 451026 }, { "name": "凌云县", "pid": 451000, "id": 451027 }, { "name": "乐业县", "pid": 451000, "id": 451028 }, { "name": "田林县", "pid": 451000, "id": 451029 }, { "name": "西林县", "pid": 451000, "id": 451030 }, { "name": "隆林各族自治县", "pid": 451000, "id": 451031 }], "name": "百色市", "pid": 450000, "id": 451000 }, { "districtList": [{ "name": "市辖区", "pid": 451100, "id": 451101 }, { "name": "八步区", "pid": 451100, "id": 451102 }, { "name": "昭平县", "pid": 451100, "id": 451121 }, { "name": "钟山县", "pid": 451100, "id": 451122 }, { "name": "富川瑶族自治县", "pid": 451100, "id": 451123 }], "name": "贺州市", "pid": 450000, "id": 451100 }, { "districtList": [{ "name": "市辖区", "pid": 451200, "id": 451201 }, { "name": "金城江区", "pid": 451200, "id": 451202 }, { "name": "南丹县", "pid": 451200, "id": 451221 }, { "name": "天峨县", "pid": 451200, "id": 451222 }, { "name": "凤山县", "pid": 451200, "id": 451223 }, { "name": "东兰县", "pid": 451200, "id": 451224 }, { "name": "罗城仫佬族自治县", "pid": 451200, "id": 451225 }, { "name": "环江毛南族自治县", "pid": 451200, "id": 451226 }, { "name": "巴马瑶族自治县", "pid": 451200, "id": 451227 }, { "name": "都安瑶族自治县", "pid": 451200, "id": 451228 }, { "name": "大化瑶族自治县", "pid": 451200, "id": 451229 }, { "name": "宜州市", "pid": 451200, "id": 451281 }], "name": "河池市", "pid": 450000, "id": 451200 }, { "districtList": [{ "name": "市辖区", "pid": 451300, "id": 451301 }, { "name": "兴宾区", "pid": 451300, "id": 451302 }, { "name": "忻城县", "pid": 451300, "id": 451321 }, { "name": "象州县", "pid": 451300, "id": 451322 }, { "name": "武宣县", "pid": 451300, "id": 451323 }, { "name": "金秀瑶族自治县", "pid": 451300, "id": 451324 }, { "name": "合山市", "pid": 451300, "id": 451381 }], "name": "来宾市", "pid": 450000, "id": 451300 }, { "districtList": [{ "name": "市辖区", "pid": 451400, "id": 451401 }, { "name": "江州区", "pid": 451400, "id": 451402 }, { "name": "扶绥县", "pid": 451400, "id": 451421 }, { "name": "宁明县", "pid": 451400, "id": 451422 }, { "name": "龙州县", "pid": 451400, "id": 451423 }, { "name": "大新县", "pid": 451400, "id": 451424 }, { "name": "天等县", "pid": 451400, "id": 451425 }, { "name": "凭祥市", "pid": 451400, "id": 451481 }], "name": "崇左市", "pid": 450000, "id": 451400 }] }, { "name": "海南省", "id": 460000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 460100, "id": 460101 }, { "name": "秀英区", "pid": 460100, "id": 460105 }, { "name": "龙华区", "pid": 460100, "id": 460106 }, { "name": "琼山区", "pid": 460100, "id": 460107 }, { "name": "美兰区", "pid": 460100, "id": 460108 }], "name": "海口市", "pid": 460000, "id": 460100 }, { "districtList": [{ "name": "市辖区", "pid": 460200, "id": 460201 }], "name": "三亚市", "pid": 460000, "id": 460200 }, { "districtList": [{ "name": "西沙群岛", "pid": 460300, "id": 460321 }, { "name": "南沙群岛", "pid": 460300, "id": 460322 }, { "name": "中沙群岛的岛礁及其海域", "pid": 460300, "id": 460323 }], "name": "三沙市", "pid": 460000, "id": 460300 }, { "districtList": [{ "name": "五指山市", "pid": 469000, "id": 469001 }, { "name": "琼海市", "pid": 469000, "id": 469002 }, { "name": "儋州市", "pid": 469000, "id": 469003 }, { "name": "文昌市", "pid": 469000, "id": 469005 }, { "name": "万宁市", "pid": 469000, "id": 469006 }, { "name": "东方市", "pid": 469000, "id": 469007 }, { "name": "定安县", "pid": 469000, "id": 469021 }, { "name": "屯昌县", "pid": 469000, "id": 469022 }, { "name": "澄迈县", "pid": 469000, "id": 469023 }, { "name": "临高县", "pid": 469000, "id": 469024 }, { "name": "白沙黎族自治县", "pid": 469000, "id": 469025 }, { "name": "昌江黎族自治县", "pid": 469000, "id": 469026 }, { "name": "乐东黎族自治县", "pid": 469000, "id": 469027 }, { "name": "陵水黎族自治县", "pid": 469000, "id": 469028 }, { "name": "保亭黎族苗族自治县", "pid": 469000, "id": 469029 }, { "name": "琼中黎族苗族自治县", "pid": 469000, "id": 469030 }], "name": "省直辖县级行政区划", "pid": 460000, "id": 469000 }] }, { "name": "重庆市", "id": 500000, "cityList": [{ "districtList": [], "name": "万州区", "pid": 500000, "id": 500101 }, { "districtList": [], "name": "涪陵区", "pid": 500000, "id": 500102 }, { "districtList": [], "name": "渝中区", "pid": 500000, "id": 500103 }, { "districtList": [], "name": "大渡口区", "pid": 500000, "id": 500104 }, { "districtList": [], "name": "江北区", "pid": 500000, "id": 500105 }, { "districtList": [], "name": "沙坪坝区", "pid": 500000, "id": 500106 }, { "districtList": [], "name": "九龙坡区", "pid": 500000, "id": 500107 }, { "districtList": [], "name": "南岸区", "pid": 500000, "id": 500108 }, { "districtList": [], "name": "北碚区", "pid": 500000, "id": 500109 }, { "districtList": [], "name": "綦江区", "pid": 500000, "id": 500110 }, { "districtList": [], "name": "大足区", "pid": 500000, "id": 500111 }, { "districtList": [], "name": "渝北区", "pid": 500000, "id": 500112 }, { "districtList": [], "name": "巴南区", "pid": 500000, "id": 500113 }, { "districtList": [], "name": "黔江区", "pid": 500000, "id": 500114 }, { "districtList": [], "name": "长寿区", "pid": 500000, "id": 500115 }, { "districtList": [], "name": "江津区", "pid": 500000, "id": 500116 }, { "districtList": [], "name": "合川区", "pid": 500000, "id": 500117 }, { "districtList": [], "name": "永川区", "pid": 500000, "id": 500118 }, { "districtList": [], "name": "南川区", "pid": 500000, "id": 500119 }, { "districtList": [], "name": "潼南县", "pid": 500000, "id": 500223 }, { "districtList": [], "name": "铜梁县", "pid": 500000, "id": 500224 }, { "districtList": [], "name": "荣昌县", "pid": 500000, "id": 500226 }, { "districtList": [], "name": "璧山县", "pid": 500000, "id": 500227 }, { "districtList": [], "name": "梁平县", "pid": 500000, "id": 500228 }, { "districtList": [], "name": "城口县", "pid": 500000, "id": 500229 }, { "districtList": [], "name": "丰都县", "pid": 500000, "id": 500230 }, { "districtList": [], "name": "垫江县", "pid": 500000, "id": 500231 }, { "districtList": [], "name": "武隆县", "pid": 500000, "id": 500232 }, { "districtList": [], "name": "忠县", "pid": 500000, "id": 500233 }, { "districtList": [], "name": "开县", "pid": 500000, "id": 500234 }, { "districtList": [], "name": "云阳县", "pid": 500000, "id": 500235 }, { "districtList": [], "name": "奉节县", "pid": 500000, "id": 500236 }, { "districtList": [], "name": "巫山县", "pid": 500000, "id": 500237 }, { "districtList": [], "name": "巫溪县", "pid": 500000, "id": 500238 }, { "districtList": [], "name": "石柱土家族自治县", "pid": 500000, "id": 500240 }, { "districtList": [], "name": "秀山土家族苗族自治县", "pid": 500000, "id": 500241 }, { "districtList": [], "name": "酉阳土家族苗族自治县", "pid": 500000, "id": 500242 }, { "districtList": [], "name": "彭水苗族土家族自治县", "pid": 500000, "id": 500243 }] }, { "name": "四川省", "id": 510000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 510100, "id": 510101 }, { "name": "锦江区", "pid": 510100, "id": 510104 }, { "name": "青羊区", "pid": 510100, "id": 510105 }, { "name": "金牛区", "pid": 510100, "id": 510106 }, { "name": "武侯区", "pid": 510100, "id": 510107 }, { "name": "成华区", "pid": 510100, "id": 510108 }, { "name": "龙泉驿区", "pid": 510100, "id": 510112 }, { "name": "青白江区", "pid": 510100, "id": 510113 }, { "name": "新都区", "pid": 510100, "id": 510114 }, { "name": "温江区", "pid": 510100, "id": 510115 }, { "name": "金堂县", "pid": 510100, "id": 510121 }, { "name": "双流县", "pid": 510100, "id": 510122 }, { "name": "郫县", "pid": 510100, "id": 510124 }, { "name": "大邑县", "pid": 510100, "id": 510129 }, { "name": "蒲江县", "pid": 510100, "id": 510131 }, { "name": "新津县", "pid": 510100, "id": 510132 }, { "name": "都江堰市", "pid": 510100, "id": 510181 }, { "name": "彭州市", "pid": 510100, "id": 510182 }, { "name": "邛崃市", "pid": 510100, "id": 510183 }, { "name": "崇州市", "pid": 510100, "id": 510184 }], "name": "成都市", "pid": 510000, "id": 510100 }, { "districtList": [{ "name": "市辖区", "pid": 510300, "id": 510301 }, { "name": "自流井区", "pid": 510300, "id": 510302 }, { "name": "贡井区", "pid": 510300, "id": 510303 }, { "name": "大安区", "pid": 510300, "id": 510304 }, { "name": "沿滩区", "pid": 510300, "id": 510311 }, { "name": "荣县", "pid": 510300, "id": 510321 }, { "name": "富顺县", "pid": 510300, "id": 510322 }], "name": "自贡市", "pid": 510000, "id": 510300 }, { "districtList": [{ "name": "市辖区", "pid": 510400, "id": 510401 }, { "name": "东区", "pid": 510400, "id": 510402 }, { "name": "西区", "pid": 510400, "id": 510403 }, { "name": "仁和区", "pid": 510400, "id": 510411 }, { "name": "米易县", "pid": 510400, "id": 510421 }, { "name": "盐边县", "pid": 510400, "id": 510422 }], "name": "攀枝花市", "pid": 510000, "id": 510400 }, { "districtList": [{ "name": "市辖区", "pid": 510500, "id": 510501 }, { "name": "江阳区", "pid": 510500, "id": 510502 }, { "name": "纳溪区", "pid": 510500, "id": 510503 }, { "name": "龙马潭区", "pid": 510500, "id": 510504 }, { "name": "泸县", "pid": 510500, "id": 510521 }, { "name": "合江县", "pid": 510500, "id": 510522 }, { "name": "叙永县", "pid": 510500, "id": 510524 }, { "name": "古蔺县", "pid": 510500, "id": 510525 }], "name": "泸州市", "pid": 510000, "id": 510500 }, { "districtList": [{ "name": "市辖区", "pid": 510600, "id": 510601 }, { "name": "旌阳区", "pid": 510600, "id": 510603 }, { "name": "中江县", "pid": 510600, "id": 510623 }, { "name": "罗江县", "pid": 510600, "id": 510626 }, { "name": "广汉市", "pid": 510600, "id": 510681 }, { "name": "什邡市", "pid": 510600, "id": 510682 }, { "name": "绵竹市", "pid": 510600, "id": 510683 }], "name": "德阳市", "pid": 510000, "id": 510600 }, { "districtList": [{ "name": "市辖区", "pid": 510700, "id": 510701 }, { "name": "涪城区", "pid": 510700, "id": 510703 }, { "name": "游仙区", "pid": 510700, "id": 510704 }, { "name": "三台县", "pid": 510700, "id": 510722 }, { "name": "盐亭县", "pid": 510700, "id": 510723 }, { "name": "安县", "pid": 510700, "id": 510724 }, { "name": "梓潼县", "pid": 510700, "id": 510725 }, { "name": "北川羌族自治县", "pid": 510700, "id": 510726 }, { "name": "平武县", "pid": 510700, "id": 510727 }, { "name": "江油市", "pid": 510700, "id": 510781 }], "name": "绵阳市", "pid": 510000, "id": 510700 }, { "districtList": [{ "name": "市辖区", "pid": 510800, "id": 510801 }, { "name": "利州区", "pid": 510800, "id": 510802 }, { "name": "元坝区", "pid": 510800, "id": 510811 }, { "name": "朝天区", "pid": 510800, "id": 510812 }, { "name": "旺苍县", "pid": 510800, "id": 510821 }, { "name": "青川县", "pid": 510800, "id": 510822 }, { "name": "剑阁县", "pid": 510800, "id": 510823 }, { "name": "苍溪县", "pid": 510800, "id": 510824 }], "name": "广元市", "pid": 510000, "id": 510800 }, { "districtList": [{ "name": "市辖区", "pid": 510900, "id": 510901 }, { "name": "船山区", "pid": 510900, "id": 510903 }, { "name": "安居区", "pid": 510900, "id": 510904 }, { "name": "蓬溪县", "pid": 510900, "id": 510921 }, { "name": "射洪县", "pid": 510900, "id": 510922 }, { "name": "大英县", "pid": 510900, "id": 510923 }], "name": "遂宁市", "pid": 510000, "id": 510900 }, { "districtList": [{ "name": "市辖区", "pid": 511000, "id": 511001 }, { "name": "市中区", "pid": 511000, "id": 511002 }, { "name": "东兴区", "pid": 511000, "id": 511011 }, { "name": "威远县", "pid": 511000, "id": 511024 }, { "name": "资中县", "pid": 511000, "id": 511025 }, { "name": "隆昌县", "pid": 511000, "id": 511028 }], "name": "内江市", "pid": 510000, "id": 511000 }, { "districtList": [{ "name": "市辖区", "pid": 511100, "id": 511101 }, { "name": "市中区", "pid": 511100, "id": 511102 }, { "name": "沙湾区", "pid": 511100, "id": 511111 }, { "name": "五通桥区", "pid": 511100, "id": 511112 }, { "name": "金口河区", "pid": 511100, "id": 511113 }, { "name": "犍为县", "pid": 511100, "id": 511123 }, { "name": "井研县", "pid": 511100, "id": 511124 }, { "name": "夹江县", "pid": 511100, "id": 511126 }, { "name": "沐川县", "pid": 511100, "id": 511129 }, { "name": "峨边彝族自治县", "pid": 511100, "id": 511132 }, { "name": "马边彝族自治县", "pid": 511100, "id": 511133 }, { "name": "峨眉山市", "pid": 511100, "id": 511181 }], "name": "乐山市", "pid": 510000, "id": 511100 }, { "districtList": [{ "name": "市辖区", "pid": 511300, "id": 511301 }, { "name": "顺庆区", "pid": 511300, "id": 511302 }, { "name": "高坪区", "pid": 511300, "id": 511303 }, { "name": "嘉陵区", "pid": 511300, "id": 511304 }, { "name": "南部县", "pid": 511300, "id": 511321 }, { "name": "营山县", "pid": 511300, "id": 511322 }, { "name": "蓬安县", "pid": 511300, "id": 511323 }, { "name": "仪陇县", "pid": 511300, "id": 511324 }, { "name": "西充县", "pid": 511300, "id": 511325 }, { "name": "阆中市", "pid": 511300, "id": 511381 }], "name": "南充市", "pid": 510000, "id": 511300 }, { "districtList": [{ "name": "市辖区", "pid": 511400, "id": 511401 }, { "name": "东坡区", "pid": 511400, "id": 511402 }, { "name": "仁寿县", "pid": 511400, "id": 511421 }, { "name": "彭山县", "pid": 511400, "id": 511422 }, { "name": "洪雅县", "pid": 511400, "id": 511423 }, { "name": "丹棱县", "pid": 511400, "id": 511424 }, { "name": "青神县", "pid": 511400, "id": 511425 }], "name": "眉山市", "pid": 510000, "id": 511400 }, { "districtList": [{ "name": "市辖区", "pid": 511500, "id": 511501 }, { "name": "翠屏区", "pid": 511500, "id": 511502 }, { "name": "南溪区", "pid": 511500, "id": 511503 }, { "name": "宜宾县", "pid": 511500, "id": 511521 }, { "name": "江安县", "pid": 511500, "id": 511523 }, { "name": "长宁县", "pid": 511500, "id": 511524 }, { "name": "高县", "pid": 511500, "id": 511525 }, { "name": "珙县", "pid": 511500, "id": 511526 }, { "name": "筠连县", "pid": 511500, "id": 511527 }, { "name": "兴文县", "pid": 511500, "id": 511528 }, { "name": "屏山县", "pid": 511500, "id": 511529 }], "name": "宜宾市", "pid": 510000, "id": 511500 }, { "districtList": [{ "name": "市辖区", "pid": 511600, "id": 511601 }, { "name": "广安区", "pid": 511600, "id": 511602 }, { "name": "前锋区", "pid": 511600, "id": 511603 }, { "name": "岳池县", "pid": 511600, "id": 511621 }, { "name": "武胜县", "pid": 511600, "id": 511622 }, { "name": "邻水县", "pid": 511600, "id": 511623 }, { "name": "华蓥市", "pid": 511600, "id": 511681 }], "name": "广安市", "pid": 510000, "id": 511600 }, { "districtList": [{ "name": "市辖区", "pid": 511700, "id": 511701 }, { "name": "通川区", "pid": 511700, "id": 511702 }, { "name": "达川区", "pid": 511700, "id": 511703 }, { "name": "宣汉县", "pid": 511700, "id": 511722 }, { "name": "开江县", "pid": 511700, "id": 511723 }, { "name": "大竹县", "pid": 511700, "id": 511724 }, { "name": "渠县", "pid": 511700, "id": 511725 }, { "name": "万源市", "pid": 511700, "id": 511781 }], "name": "达州市", "pid": 510000, "id": 511700 }, { "districtList": [{ "name": "市辖区", "pid": 511800, "id": 511801 }, { "name": "雨城区", "pid": 511800, "id": 511802 }, { "name": "名山区", "pid": 511800, "id": 511803 }, { "name": "荥经县", "pid": 511800, "id": 511822 }, { "name": "汉源县", "pid": 511800, "id": 511823 }, { "name": "石棉县", "pid": 511800, "id": 511824 }, { "name": "天全县", "pid": 511800, "id": 511825 }, { "name": "芦山县", "pid": 511800, "id": 511826 }, { "name": "宝兴县", "pid": 511800, "id": 511827 }], "name": "雅安市", "pid": 510000, "id": 511800 }, { "districtList": [{ "name": "市辖区", "pid": 511900, "id": 511901 }, { "name": "巴州区", "pid": 511900, "id": 511902 }, { "name": "恩阳区", "pid": 511900, "id": 511903 }, { "name": "通江县", "pid": 511900, "id": 511921 }, { "name": "南江县", "pid": 511900, "id": 511922 }, { "name": "平昌县", "pid": 511900, "id": 511923 }], "name": "巴中市", "pid": 510000, "id": 511900 }, { "districtList": [{ "name": "市辖区", "pid": 512000, "id": 512001 }, { "name": "雁江区", "pid": 512000, "id": 512002 }, { "name": "安岳县", "pid": 512000, "id": 512021 }, { "name": "乐至县", "pid": 512000, "id": 512022 }, { "name": "简阳市", "pid": 512000, "id": 512081 }], "name": "资阳市", "pid": 510000, "id": 512000 }, { "districtList": [{ "name": "汶川县", "pid": 513200, "id": 513221 }, { "name": "理县", "pid": 513200, "id": 513222 }, { "name": "茂县", "pid": 513200, "id": 513223 }, { "name": "松潘县", "pid": 513200, "id": 513224 }, { "name": "九寨沟县", "pid": 513200, "id": 513225 }, { "name": "金川县", "pid": 513200, "id": 513226 }, { "name": "小金县", "pid": 513200, "id": 513227 }, { "name": "黑水县", "pid": 513200, "id": 513228 }, { "name": "马尔康县", "pid": 513200, "id": 513229 }, { "name": "壤塘县", "pid": 513200, "id": 513230 }, { "name": "阿坝县", "pid": 513200, "id": 513231 }, { "name": "若尔盖县", "pid": 513200, "id": 513232 }, { "name": "红原县", "pid": 513200, "id": 513233 }], "name": "阿坝藏族羌族自治州", "pid": 510000, "id": 513200 }, { "districtList": [{ "name": "康定县", "pid": 513300, "id": 513321 }, { "name": "泸定县", "pid": 513300, "id": 513322 }, { "name": "丹巴县", "pid": 513300, "id": 513323 }, { "name": "九龙县", "pid": 513300, "id": 513324 }, { "name": "雅江县", "pid": 513300, "id": 513325 }, { "name": "道孚县", "pid": 513300, "id": 513326 }, { "name": "炉霍县", "pid": 513300, "id": 513327 }, { "name": "甘孜县", "pid": 513300, "id": 513328 }, { "name": "新龙县", "pid": 513300, "id": 513329 }, { "name": "德格县", "pid": 513300, "id": 513330 }, { "name": "白玉县", "pid": 513300, "id": 513331 }, { "name": "石渠县", "pid": 513300, "id": 513332 }, { "name": "色达县", "pid": 513300, "id": 513333 }, { "name": "理塘县", "pid": 513300, "id": 513334 }, { "name": "巴塘县", "pid": 513300, "id": 513335 }, { "name": "乡城县", "pid": 513300, "id": 513336 }, { "name": "稻城县", "pid": 513300, "id": 513337 }, { "name": "得荣县", "pid": 513300, "id": 513338 }], "name": "甘孜藏族自治州", "pid": 510000, "id": 513300 }, { "districtList": [{ "name": "西昌市", "pid": 513400, "id": 513401 }, { "name": "木里藏族自治县", "pid": 513400, "id": 513422 }, { "name": "盐源县", "pid": 513400, "id": 513423 }, { "name": "德昌县", "pid": 513400, "id": 513424 }, { "name": "会理县", "pid": 513400, "id": 513425 }, { "name": "会东县", "pid": 513400, "id": 513426 }, { "name": "宁南县", "pid": 513400, "id": 513427 }, { "name": "普格县", "pid": 513400, "id": 513428 }, { "name": "布拖县", "pid": 513400, "id": 513429 }, { "name": "金阳县", "pid": 513400, "id": 513430 }, { "name": "昭觉县", "pid": 513400, "id": 513431 }, { "name": "喜德县", "pid": 513400, "id": 513432 }, { "name": "冕宁县", "pid": 513400, "id": 513433 }, { "name": "越西县", "pid": 513400, "id": 513434 }, { "name": "甘洛县", "pid": 513400, "id": 513435 }, { "name": "美姑县", "pid": 513400, "id": 513436 }, { "name": "雷波县", "pid": 513400, "id": 513437 }], "name": "凉山彝族自治州", "pid": 510000, "id": 513400 }] }, { "name": "贵州省", "id": 520000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 520100, "id": 520101 }, { "name": "南明区", "pid": 520100, "id": 520102 }, { "name": "云岩区", "pid": 520100, "id": 520103 }, { "name": "花溪区", "pid": 520100, "id": 520111 }, { "name": "乌当区", "pid": 520100, "id": 520112 }, { "name": "白云区", "pid": 520100, "id": 520113 }, { "name": "观山湖区", "pid": 520100, "id": 520115 }, { "name": "开阳县", "pid": 520100, "id": 520121 }, { "name": "息烽县", "pid": 520100, "id": 520122 }, { "name": "修文县", "pid": 520100, "id": 520123 }, { "name": "清镇市", "pid": 520100, "id": 520181 }], "name": "贵阳市", "pid": 520000, "id": 520100 }, { "districtList": [{ "name": "钟山区", "pid": 520200, "id": 520201 }, { "name": "六枝特区", "pid": 520200, "id": 520203 }, { "name": "水城县", "pid": 520200, "id": 520221 }, { "name": "盘县", "pid": 520200, "id": 520222 }], "name": "六盘水市", "pid": 520000, "id": 520200 }, { "districtList": [{ "name": "市辖区", "pid": 520300, "id": 520301 }, { "name": "红花岗区", "pid": 520300, "id": 520302 }, { "name": "汇川区", "pid": 520300, "id": 520303 }, { "name": "遵义县", "pid": 520300, "id": 520321 }, { "name": "桐梓县", "pid": 520300, "id": 520322 }, { "name": "绥阳县", "pid": 520300, "id": 520323 }, { "name": "正安县", "pid": 520300, "id": 520324 }, { "name": "道真仡佬族苗族自治县", "pid": 520300, "id": 520325 }, { "name": "务川仡佬族苗族自治县", "pid": 520300, "id": 520326 }, { "name": "凤冈县", "pid": 520300, "id": 520327 }, { "name": "湄潭县", "pid": 520300, "id": 520328 }, { "name": "余庆县", "pid": 520300, "id": 520329 }, { "name": "习水县", "pid": 520300, "id": 520330 }, { "name": "赤水市", "pid": 520300, "id": 520381 }, { "name": "仁怀市", "pid": 520300, "id": 520382 }], "name": "遵义市", "pid": 520000, "id": 520300 }, { "districtList": [{ "name": "市辖区", "pid": 520400, "id": 520401 }, { "name": "西秀区", "pid": 520400, "id": 520402 }, { "name": "平坝县", "pid": 520400, "id": 520421 }, { "name": "普定县", "pid": 520400, "id": 520422 }, { "name": "镇宁布依族苗族自治县", "pid": 520400, "id": 520423 }, { "name": "关岭布依族苗族自治县", "pid": 520400, "id": 520424 }, { "name": "紫云苗族布依族自治县", "pid": 520400, "id": 520425 }], "name": "安顺市", "pid": 520000, "id": 520400 }, { "districtList": [{ "name": "市辖区", "pid": 520500, "id": 520501 }, { "name": "七星关区", "pid": 520500, "id": 520502 }, { "name": "大方县", "pid": 520500, "id": 520521 }, { "name": "黔西县", "pid": 520500, "id": 520522 }, { "name": "金沙县", "pid": 520500, "id": 520523 }, { "name": "织金县", "pid": 520500, "id": 520524 }, { "name": "纳雍县", "pid": 520500, "id": 520525 }, { "name": "威宁彝族回族苗族自治县", "pid": 520500, "id": 520526 }, { "name": "赫章县", "pid": 520500, "id": 520527 }], "name": "毕节市", "pid": 520000, "id": 520500 }, { "districtList": [{ "name": "市辖区", "pid": 520600, "id": 520601 }, { "name": "碧江区", "pid": 520600, "id": 520602 }, { "name": "万山区", "pid": 520600, "id": 520603 }, { "name": "江口县", "pid": 520600, "id": 520621 }, { "name": "玉屏侗族自治县", "pid": 520600, "id": 520622 }, { "name": "石阡县", "pid": 520600, "id": 520623 }, { "name": "思南县", "pid": 520600, "id": 520624 }, { "name": "印江土家族苗族自治县", "pid": 520600, "id": 520625 }, { "name": "德江县", "pid": 520600, "id": 520626 }, { "name": "沿河土家族自治县", "pid": 520600, "id": 520627 }, { "name": "松桃苗族自治县", "pid": 520600, "id": 520628 }], "name": "铜仁市", "pid": 520000, "id": 520600 }, { "districtList": [{ "name": "兴义市", "pid": 522300, "id": 522301 }, { "name": "兴仁县", "pid": 522300, "id": 522322 }, { "name": "普安县", "pid": 522300, "id": 522323 }, { "name": "晴隆县", "pid": 522300, "id": 522324 }, { "name": "贞丰县", "pid": 522300, "id": 522325 }, { "name": "望谟县", "pid": 522300, "id": 522326 }, { "name": "册亨县", "pid": 522300, "id": 522327 }, { "name": "安龙县", "pid": 522300, "id": 522328 }], "name": "黔西南布依族苗族自治州", "pid": 520000, "id": 522300 }, { "districtList": [{ "name": "凯里市", "pid": 522600, "id": 522601 }, { "name": "黄平县", "pid": 522600, "id": 522622 }, { "name": "施秉县", "pid": 522600, "id": 522623 }, { "name": "三穗县", "pid": 522600, "id": 522624 }, { "name": "镇远县", "pid": 522600, "id": 522625 }, { "name": "岑巩县", "pid": 522600, "id": 522626 }, { "name": "天柱县", "pid": 522600, "id": 522627 }, { "name": "锦屏县", "pid": 522600, "id": 522628 }, { "name": "剑河县", "pid": 522600, "id": 522629 }, { "name": "台江县", "pid": 522600, "id": 522630 }, { "name": "黎平县", "pid": 522600, "id": 522631 }, { "name": "榕江县", "pid": 522600, "id": 522632 }, { "name": "从江县", "pid": 522600, "id": 522633 }, { "name": "雷山县", "pid": 522600, "id": 522634 }, { "name": "麻江县", "pid": 522600, "id": 522635 }, { "name": "丹寨县", "pid": 522600, "id": 522636 }], "name": "黔东南苗族侗族自治州", "pid": 520000, "id": 522600 }, { "districtList": [{ "name": "都匀市", "pid": 522700, "id": 522701 }, { "name": "福泉市", "pid": 522700, "id": 522702 }, { "name": "荔波县", "pid": 522700, "id": 522722 }, { "name": "贵定县", "pid": 522700, "id": 522723 }, { "name": "瓮安县", "pid": 522700, "id": 522725 }, { "name": "独山县", "pid": 522700, "id": 522726 }, { "name": "平塘县", "pid": 522700, "id": 522727 }, { "name": "罗甸县", "pid": 522700, "id": 522728 }, { "name": "长顺县", "pid": 522700, "id": 522729 }, { "name": "龙里县", "pid": 522700, "id": 522730 }, { "name": "惠水县", "pid": 522700, "id": 522731 }, { "name": "三都水族自治县", "pid": 522700, "id": 522732 }], "name": "黔南布依族苗族自治州", "pid": 520000, "id": 522700 }] }, { "name": "云南省", "id": 530000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 530100, "id": 530101 }, { "name": "五华区", "pid": 530100, "id": 530102 }, { "name": "盘龙区", "pid": 530100, "id": 530103 }, { "name": "官渡区", "pid": 530100, "id": 530111 }, { "name": "西山区", "pid": 530100, "id": 530112 }, { "name": "东川区", "pid": 530100, "id": 530113 }, { "name": "呈贡区", "pid": 530100, "id": 530114 }, { "name": "晋宁县", "pid": 530100, "id": 530122 }, { "name": "富民县", "pid": 530100, "id": 530124 }, { "name": "宜良县", "pid": 530100, "id": 530125 }, { "name": "石林彝族自治县", "pid": 530100, "id": 530126 }, { "name": "嵩明县", "pid": 530100, "id": 530127 }, { "name": "禄劝彝族苗族自治县", "pid": 530100, "id": 530128 }, { "name": "寻甸回族彝族自治县", "pid": 530100, "id": 530129 }, { "name": "安宁市", "pid": 530100, "id": 530181 }], "name": "昆明市", "pid": 530000, "id": 530100 }, { "districtList": [{ "name": "市辖区", "pid": 530300, "id": 530301 }, { "name": "麒麟区", "pid": 530300, "id": 530302 }, { "name": "马龙县", "pid": 530300, "id": 530321 }, { "name": "陆良县", "pid": 530300, "id": 530322 }, { "name": "师宗县", "pid": 530300, "id": 530323 }, { "name": "罗平县", "pid": 530300, "id": 530324 }, { "name": "富源县", "pid": 530300, "id": 530325 }, { "name": "会泽县", "pid": 530300, "id": 530326 }, { "name": "沾益县", "pid": 530300, "id": 530328 }, { "name": "宣威市", "pid": 530300, "id": 530381 }], "name": "曲靖市", "pid": 530000, "id": 530300 }, { "districtList": [{ "name": "市辖区", "pid": 530400, "id": 530401 }, { "name": "红塔区", "pid": 530400, "id": 530402 }, { "name": "江川县", "pid": 530400, "id": 530421 }, { "name": "澄江县", "pid": 530400, "id": 530422 }, { "name": "通海县", "pid": 530400, "id": 530423 }, { "name": "华宁县", "pid": 530400, "id": 530424 }, { "name": "易门县", "pid": 530400, "id": 530425 }, { "name": "峨山彝族自治县", "pid": 530400, "id": 530426 }, { "name": "新平彝族傣族自治县", "pid": 530400, "id": 530427 }, { "name": "元江哈尼族彝族傣族自治县", "pid": 530400, "id": 530428 }], "name": "玉溪市", "pid": 530000, "id": 530400 }, { "districtList": [{ "name": "市辖区", "pid": 530500, "id": 530501 }, { "name": "隆阳区", "pid": 530500, "id": 530502 }, { "name": "施甸县", "pid": 530500, "id": 530521 }, { "name": "腾冲县", "pid": 530500, "id": 530522 }, { "name": "龙陵县", "pid": 530500, "id": 530523 }, { "name": "昌宁县", "pid": 530500, "id": 530524 }], "name": "保山市", "pid": 530000, "id": 530500 }, { "districtList": [{ "name": "市辖区", "pid": 530600, "id": 530601 }, { "name": "昭阳区", "pid": 530600, "id": 530602 }, { "name": "鲁甸县", "pid": 530600, "id": 530621 }, { "name": "巧家县", "pid": 530600, "id": 530622 }, { "name": "盐津县", "pid": 530600, "id": 530623 }, { "name": "大关县", "pid": 530600, "id": 530624 }, { "name": "永善县", "pid": 530600, "id": 530625 }, { "name": "绥江县", "pid": 530600, "id": 530626 }, { "name": "镇雄县", "pid": 530600, "id": 530627 }, { "name": "彝良县", "pid": 530600, "id": 530628 }, { "name": "威信县", "pid": 530600, "id": 530629 }, { "name": "水富县", "pid": 530600, "id": 530630 }], "name": "昭通市", "pid": 530000, "id": 530600 }, { "districtList": [{ "name": "市辖区", "pid": 530700, "id": 530701 }, { "name": "古城区", "pid": 530700, "id": 530702 }, { "name": "玉龙纳西族自治县", "pid": 530700, "id": 530721 }, { "name": "永胜县", "pid": 530700, "id": 530722 }, { "name": "华坪县", "pid": 530700, "id": 530723 }, { "name": "宁蒗彝族自治县", "pid": 530700, "id": 530724 }], "name": "丽江市", "pid": 530000, "id": 530700 }, { "districtList": [{ "name": "市辖区", "pid": 530800, "id": 530801 }, { "name": "思茅区", "pid": 530800, "id": 530802 }, { "name": "宁洱哈尼族彝族自治县", "pid": 530800, "id": 530821 }, { "name": "墨江哈尼族自治县", "pid": 530800, "id": 530822 }, { "name": "景东彝族自治县", "pid": 530800, "id": 530823 }, { "name": "景谷傣族彝族自治县", "pid": 530800, "id": 530824 }, { "name": "镇沅彝族哈尼族拉祜族自治县", "pid": 530800, "id": 530825 }, { "name": "江城哈尼族彝族自治县", "pid": 530800, "id": 530826 }, { "name": "孟连傣族拉祜族佤族自治县", "pid": 530800, "id": 530827 }, { "name": "澜沧拉祜族自治县", "pid": 530800, "id": 530828 }, { "name": "西盟佤族自治县", "pid": 530800, "id": 530829 }], "name": "普洱市", "pid": 530000, "id": 530800 }, { "districtList": [{ "name": "市辖区", "pid": 530900, "id": 530901 }, { "name": "临翔区", "pid": 530900, "id": 530902 }, { "name": "凤庆县", "pid": 530900, "id": 530921 }, { "name": "云县", "pid": 530900, "id": 530922 }, { "name": "永德县", "pid": 530900, "id": 530923 }, { "name": "镇康县", "pid": 530900, "id": 530924 }, { "name": "双江拉祜族佤族布朗族傣族自治县", "pid": 530900, "id": 530925 }, { "name": "耿马傣族佤族自治县", "pid": 530900, "id": 530926 }, { "name": "沧源佤族自治县", "pid": 530900, "id": 530927 }], "name": "临沧市", "pid": 530000, "id": 530900 }, { "districtList": [{ "name": "楚雄市", "pid": 532300, "id": 532301 }, { "name": "双柏县", "pid": 532300, "id": 532322 }, { "name": "牟定县", "pid": 532300, "id": 532323 }, { "name": "南华县", "pid": 532300, "id": 532324 }, { "name": "姚安县", "pid": 532300, "id": 532325 }, { "name": "大姚县", "pid": 532300, "id": 532326 }, { "name": "永仁县", "pid": 532300, "id": 532327 }, { "name": "元谋县", "pid": 532300, "id": 532328 }, { "name": "武定县", "pid": 532300, "id": 532329 }, { "name": "禄丰县", "pid": 532300, "id": 532331 }], "name": "楚雄彝族自治州", "pid": 530000, "id": 532300 }, { "districtList": [{ "name": "个旧市", "pid": 532500, "id": 532501 }, { "name": "开远市", "pid": 532500, "id": 532502 }, { "name": "蒙自市", "pid": 532500, "id": 532503 }, { "name": "弥勒市", "pid": 532500, "id": 532504 }, { "name": "屏边苗族自治县", "pid": 532500, "id": 532523 }, { "name": "建水县", "pid": 532500, "id": 532524 }, { "name": "石屏县", "pid": 532500, "id": 532525 }, { "name": "泸西县", "pid": 532500, "id": 532527 }, { "name": "元阳县", "pid": 532500, "id": 532528 }, { "name": "红河县", "pid": 532500, "id": 532529 }, { "name": "金平苗族瑶族傣族自治县", "pid": 532500, "id": 532530 }, { "name": "绿春县", "pid": 532500, "id": 532531 }, { "name": "河口瑶族自治县", "pid": 532500, "id": 532532 }], "name": "红河哈尼族彝族自治州", "pid": 530000, "id": 532500 }, { "districtList": [{ "name": "文山市", "pid": 532600, "id": 532601 }, { "name": "砚山县", "pid": 532600, "id": 532622 }, { "name": "西畴县", "pid": 532600, "id": 532623 }, { "name": "麻栗坡县", "pid": 532600, "id": 532624 }, { "name": "马关县", "pid": 532600, "id": 532625 }, { "name": "丘北县", "pid": 532600, "id": 532626 }, { "name": "广南县", "pid": 532600, "id": 532627 }, { "name": "富宁县", "pid": 532600, "id": 532628 }], "name": "文山壮族苗族自治州", "pid": 530000, "id": 532600 }, { "districtList": [{ "name": "景洪市", "pid": 532800, "id": 532801 }, { "name": "勐海县", "pid": 532800, "id": 532822 }, { "name": "勐腊县", "pid": 532800, "id": 532823 }], "name": "西双版纳傣族自治州", "pid": 530000, "id": 532800 }, { "districtList": [{ "name": "大理市", "pid": 532900, "id": 532901 }, { "name": "漾濞彝族自治县", "pid": 532900, "id": 532922 }, { "name": "祥云县", "pid": 532900, "id": 532923 }, { "name": "宾川县", "pid": 532900, "id": 532924 }, { "name": "弥渡县", "pid": 532900, "id": 532925 }, { "name": "南涧彝族自治县", "pid": 532900, "id": 532926 }, { "name": "巍山彝族回族自治县", "pid": 532900, "id": 532927 }, { "name": "永平县", "pid": 532900, "id": 532928 }, { "name": "云龙县", "pid": 532900, "id": 532929 }, { "name": "洱源县", "pid": 532900, "id": 532930 }, { "name": "剑川县", "pid": 532900, "id": 532931 }, { "name": "鹤庆县", "pid": 532900, "id": 532932 }], "name": "大理白族自治州", "pid": 530000, "id": 532900 }, { "districtList": [{ "name": "瑞丽市", "pid": 533100, "id": 533102 }, { "name": "芒市", "pid": 533100, "id": 533103 }, { "name": "梁河县", "pid": 533100, "id": 533122 }, { "name": "盈江县", "pid": 533100, "id": 533123 }, { "name": "陇川县", "pid": 533100, "id": 533124 }], "name": "德宏傣族景颇族自治州", "pid": 530000, "id": 533100 }, { "districtList": [{ "name": "泸水县", "pid": 533300, "id": 533321 }, { "name": "福贡县", "pid": 533300, "id": 533323 }, { "name": "贡山独龙族怒族自治县", "pid": 533300, "id": 533324 }, { "name": "兰坪白族普米族自治县", "pid": 533300, "id": 533325 }], "name": "怒江傈僳族自治州", "pid": 530000, "id": 533300 }, { "districtList": [{ "name": "香格里拉县", "pid": 533400, "id": 533421 }, { "name": "德钦县", "pid": 533400, "id": 533422 }, { "name": "维西傈僳族自治县", "pid": 533400, "id": 533423 }], "name": "迪庆藏族自治州", "pid": 530000, "id": 533400 }] }, { "name": "西藏自治区", "id": 540000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 540100, "id": 540101 }, { "name": "城关区", "pid": 540100, "id": 540102 }, { "name": "林周县", "pid": 540100, "id": 540121 }, { "name": "当雄县", "pid": 540100, "id": 540122 }, { "name": "尼木县", "pid": 540100, "id": 540123 }, { "name": "曲水县", "pid": 540100, "id": 540124 }, { "name": "堆龙德庆县", "pid": 540100, "id": 540125 }, { "name": "达孜县", "pid": 540100, "id": 540126 }, { "name": "墨竹工卡县", "pid": 540100, "id": 540127 }], "name": "拉萨市", "pid": 540000, "id": 540100 }, { "districtList": [{ "name": "昌都县", "pid": 542100, "id": 542121 }, { "name": "江达县", "pid": 542100, "id": 542122 }, { "name": "贡觉县", "pid": 542100, "id": 542123 }, { "name": "类乌齐县", "pid": 542100, "id": 542124 }, { "name": "丁青县", "pid": 542100, "id": 542125 }, { "name": "察雅县", "pid": 542100, "id": 542126 }, { "name": "八宿县", "pid": 542100, "id": 542127 }, { "name": "左贡县", "pid": 542100, "id": 542128 }, { "name": "芒康县", "pid": 542100, "id": 542129 }, { "name": "洛隆县", "pid": 542100, "id": 542132 }, { "name": "边坝县", "pid": 542100, "id": 542133 }], "name": "昌都地区", "pid": 540000, "id": 542100 }, { "districtList": [{ "name": "乃东县", "pid": 542200, "id": 542221 }, { "name": "扎囊县", "pid": 542200, "id": 542222 }, { "name": "贡嘎县", "pid": 542200, "id": 542223 }, { "name": "桑日县", "pid": 542200, "id": 542224 }, { "name": "琼结县", "pid": 542200, "id": 542225 }, { "name": "曲松县", "pid": 542200, "id": 542226 }, { "name": "措美县", "pid": 542200, "id": 542227 }, { "name": "洛扎县", "pid": 542200, "id": 542228 }, { "name": "加查县", "pid": 542200, "id": 542229 }, { "name": "隆子县", "pid": 542200, "id": 542231 }, { "name": "错那县", "pid": 542200, "id": 542232 }, { "name": "浪卡子县", "pid": 542200, "id": 542233 }], "name": "山南地区", "pid": 540000, "id": 542200 }, { "districtList": [{ "name": "日喀则市", "pid": 542300, "id": 542301 }, { "name": "南木林县", "pid": 542300, "id": 542322 }, { "name": "江孜县", "pid": 542300, "id": 542323 }, { "name": "定日县", "pid": 542300, "id": 542324 }, { "name": "萨迦县", "pid": 542300, "id": 542325 }, { "name": "拉孜县", "pid": 542300, "id": 542326 }, { "name": "昂仁县", "pid": 542300, "id": 542327 }, { "name": "谢通门县", "pid": 542300, "id": 542328 }, { "name": "白朗县", "pid": 542300, "id": 542329 }, { "name": "仁布县", "pid": 542300, "id": 542330 }, { "name": "康马县", "pid": 542300, "id": 542331 }, { "name": "定结县", "pid": 542300, "id": 542332 }, { "name": "仲巴县", "pid": 542300, "id": 542333 }, { "name": "亚东县", "pid": 542300, "id": 542334 }, { "name": "吉隆县", "pid": 542300, "id": 542335 }, { "name": "聂拉木县", "pid": 542300, "id": 542336 }, { "name": "萨嘎县", "pid": 542300, "id": 542337 }, { "name": "岗巴县", "pid": 542300, "id": 542338 }], "name": "日喀则地区", "pid": 540000, "id": 542300 }, { "districtList": [{ "name": "那曲县", "pid": 542400, "id": 542421 }, { "name": "嘉黎县", "pid": 542400, "id": 542422 }, { "name": "比如县", "pid": 542400, "id": 542423 }, { "name": "聂荣县", "pid": 542400, "id": 542424 }, { "name": "安多县", "pid": 542400, "id": 542425 }, { "name": "申扎县", "pid": 542400, "id": 542426 }, { "name": "索县", "pid": 542400, "id": 542427 }, { "name": "班戈县", "pid": 542400, "id": 542428 }, { "name": "巴青县", "pid": 542400, "id": 542429 }, { "name": "尼玛县", "pid": 542400, "id": 542430 }, { "name": "双湖县", "pid": 542400, "id": 542431 }], "name": "那曲地区", "pid": 540000, "id": 542400 }, { "districtList": [{ "name": "普兰县", "pid": 542500, "id": 542521 }, { "name": "札达县", "pid": 542500, "id": 542522 }, { "name": "噶尔县", "pid": 542500, "id": 542523 }, { "name": "日土县", "pid": 542500, "id": 542524 }, { "name": "革吉县", "pid": 542500, "id": 542525 }, { "name": "改则县", "pid": 542500, "id": 542526 }, { "name": "措勤县", "pid": 542500, "id": 542527 }], "name": "阿里地区", "pid": 540000, "id": 542500 }, { "districtList": [{ "name": "林芝县", "pid": 542600, "id": 542621 }, { "name": "工布江达县", "pid": 542600, "id": 542622 }, { "name": "米林县", "pid": 542600, "id": 542623 }, { "name": "墨脱县", "pid": 542600, "id": 542624 }, { "name": "波密县", "pid": 542600, "id": 542625 }, { "name": "察隅县", "pid": 542600, "id": 542626 }, { "name": "朗县", "pid": 542600, "id": 542627 }], "name": "林芝地区", "pid": 540000, "id": 542600 }] }, { "name": "陕西省", "id": 610000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 610100, "id": 610101 }, { "name": "新城区", "pid": 610100, "id": 610102 }, { "name": "碑林区", "pid": 610100, "id": 610103 }, { "name": "莲湖区", "pid": 610100, "id": 610104 }, { "name": "灞桥区", "pid": 610100, "id": 610111 }, { "name": "未央区", "pid": 610100, "id": 610112 }, { "name": "雁塔区", "pid": 610100, "id": 610113 }, { "name": "阎良区", "pid": 610100, "id": 610114 }, { "name": "临潼区", "pid": 610100, "id": 610115 }, { "name": "长安区", "pid": 610100, "id": 610116 }, { "name": "蓝田县", "pid": 610100, "id": 610122 }, { "name": "周至县", "pid": 610100, "id": 610124 }, { "name": "户县", "pid": 610100, "id": 610125 }, { "name": "高陵县", "pid": 610100, "id": 610126 }], "name": "西安市", "pid": 610000, "id": 610100 }, { "districtList": [{ "name": "市辖区", "pid": 610200, "id": 610201 }, { "name": "王益区", "pid": 610200, "id": 610202 }, { "name": "印台区", "pid": 610200, "id": 610203 }, { "name": "耀州区", "pid": 610200, "id": 610204 }, { "name": "宜君县", "pid": 610200, "id": 610222 }], "name": "铜川市", "pid": 610000, "id": 610200 }, { "districtList": [{ "name": "市辖区", "pid": 610300, "id": 610301 }, { "name": "渭滨区", "pid": 610300, "id": 610302 }, { "name": "金台区", "pid": 610300, "id": 610303 }, { "name": "陈仓区", "pid": 610300, "id": 610304 }, { "name": "凤翔县", "pid": 610300, "id": 610322 }, { "name": "岐山县", "pid": 610300, "id": 610323 }, { "name": "扶风县", "pid": 610300, "id": 610324 }, { "name": "眉县", "pid": 610300, "id": 610326 }, { "name": "陇县", "pid": 610300, "id": 610327 }, { "name": "千阳县", "pid": 610300, "id": 610328 }, { "name": "麟游县", "pid": 610300, "id": 610329 }, { "name": "凤县", "pid": 610300, "id": 610330 }, { "name": "太白县", "pid": 610300, "id": 610331 }], "name": "宝鸡市", "pid": 610000, "id": 610300 }, { "districtList": [{ "name": "市辖区", "pid": 610400, "id": 610401 }, { "name": "秦都区", "pid": 610400, "id": 610402 }, { "name": "杨陵区", "pid": 610400, "id": 610403 }, { "name": "渭城区", "pid": 610400, "id": 610404 }, { "name": "三原县", "pid": 610400, "id": 610422 }, { "name": "泾阳县", "pid": 610400, "id": 610423 }, { "name": "乾县", "pid": 610400, "id": 610424 }, { "name": "礼泉县", "pid": 610400, "id": 610425 }, { "name": "永寿县", "pid": 610400, "id": 610426 }, { "name": "彬县", "pid": 610400, "id": 610427 }, { "name": "长武县", "pid": 610400, "id": 610428 }, { "name": "旬邑县", "pid": 610400, "id": 610429 }, { "name": "淳化县", "pid": 610400, "id": 610430 }, { "name": "武功县", "pid": 610400, "id": 610431 }, { "name": "兴平市", "pid": 610400, "id": 610481 }], "name": "咸阳市", "pid": 610000, "id": 610400 }, { "districtList": [{ "name": "市辖区", "pid": 610500, "id": 610501 }, { "name": "临渭区", "pid": 610500, "id": 610502 }, { "name": "华县", "pid": 610500, "id": 610521 }, { "name": "潼关县", "pid": 610500, "id": 610522 }, { "name": "大荔县", "pid": 610500, "id": 610523 }, { "name": "合阳县", "pid": 610500, "id": 610524 }, { "name": "澄城县", "pid": 610500, "id": 610525 }, { "name": "蒲城县", "pid": 610500, "id": 610526 }, { "name": "白水县", "pid": 610500, "id": 610527 }, { "name": "富平县", "pid": 610500, "id": 610528 }, { "name": "韩城市", "pid": 610500, "id": 610581 }, { "name": "华阴市", "pid": 610500, "id": 610582 }], "name": "渭南市", "pid": 610000, "id": 610500 }, { "districtList": [{ "name": "市辖区", "pid": 610600, "id": 610601 }, { "name": "宝塔区", "pid": 610600, "id": 610602 }, { "name": "延长县", "pid": 610600, "id": 610621 }, { "name": "延川县", "pid": 610600, "id": 610622 }, { "name": "子长县", "pid": 610600, "id": 610623 }, { "name": "安塞县", "pid": 610600, "id": 610624 }, { "name": "志丹县", "pid": 610600, "id": 610625 }, { "name": "吴起县", "pid": 610600, "id": 610626 }, { "name": "甘泉县", "pid": 610600, "id": 610627 }, { "name": "富县", "pid": 610600, "id": 610628 }, { "name": "洛川县", "pid": 610600, "id": 610629 }, { "name": "宜川县", "pid": 610600, "id": 610630 }, { "name": "黄龙县", "pid": 610600, "id": 610631 }, { "name": "黄陵县", "pid": 610600, "id": 610632 }], "name": "延安市", "pid": 610000, "id": 610600 }, { "districtList": [{ "name": "市辖区", "pid": 610700, "id": 610701 }, { "name": "汉台区", "pid": 610700, "id": 610702 }, { "name": "南郑县", "pid": 610700, "id": 610721 }, { "name": "城固县", "pid": 610700, "id": 610722 }, { "name": "洋县", "pid": 610700, "id": 610723 }, { "name": "西乡县", "pid": 610700, "id": 610724 }, { "name": "勉县", "pid": 610700, "id": 610725 }, { "name": "宁强县", "pid": 610700, "id": 610726 }, { "name": "略阳县", "pid": 610700, "id": 610727 }, { "name": "镇巴县", "pid": 610700, "id": 610728 }, { "name": "留坝县", "pid": 610700, "id": 610729 }, { "name": "佛坪县", "pid": 610700, "id": 610730 }], "name": "汉中市", "pid": 610000, "id": 610700 }, { "districtList": [{ "name": "市辖区", "pid": 610800, "id": 610801 }, { "name": "榆阳区", "pid": 610800, "id": 610802 }, { "name": "神木县", "pid": 610800, "id": 610821 }, { "name": "府谷县", "pid": 610800, "id": 610822 }, { "name": "横山县", "pid": 610800, "id": 610823 }, { "name": "靖边县", "pid": 610800, "id": 610824 }, { "name": "定边县", "pid": 610800, "id": 610825 }, { "name": "绥德县", "pid": 610800, "id": 610826 }, { "name": "米脂县", "pid": 610800, "id": 610827 }, { "name": "佳县", "pid": 610800, "id": 610828 }, { "name": "吴堡县", "pid": 610800, "id": 610829 }, { "name": "清涧县", "pid": 610800, "id": 610830 }, { "name": "子洲县", "pid": 610800, "id": 610831 }], "name": "榆林市", "pid": 610000, "id": 610800 }, { "districtList": [{ "name": "市辖区", "pid": 610900, "id": 610901 }, { "name": "汉滨区", "pid": 610900, "id": 610902 }, { "name": "汉阴县", "pid": 610900, "id": 610921 }, { "name": "石泉县", "pid": 610900, "id": 610922 }, { "name": "宁陕县", "pid": 610900, "id": 610923 }, { "name": "紫阳县", "pid": 610900, "id": 610924 }, { "name": "岚皋县", "pid": 610900, "id": 610925 }, { "name": "平利县", "pid": 610900, "id": 610926 }, { "name": "镇坪县", "pid": 610900, "id": 610927 }, { "name": "旬阳县", "pid": 610900, "id": 610928 }, { "name": "白河县", "pid": 610900, "id": 610929 }], "name": "安康市", "pid": 610000, "id": 610900 }, { "districtList": [{ "name": "市辖区", "pid": 611000, "id": 611001 }, { "name": "商州区", "pid": 611000, "id": 611002 }, { "name": "洛南县", "pid": 611000, "id": 611021 }, { "name": "丹凤县", "pid": 611000, "id": 611022 }, { "name": "商南县", "pid": 611000, "id": 611023 }, { "name": "山阳县", "pid": 611000, "id": 611024 }, { "name": "镇安县", "pid": 611000, "id": 611025 }, { "name": "柞水县", "pid": 611000, "id": 611026 }], "name": "商洛市", "pid": 610000, "id": 611000 }] }, { "name": "甘肃省", "id": 620000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 620100, "id": 620101 }, { "name": "城关区", "pid": 620100, "id": 620102 }, { "name": "七里河区", "pid": 620100, "id": 620103 }, { "name": "西固区", "pid": 620100, "id": 620104 }, { "name": "安宁区", "pid": 620100, "id": 620105 }, { "name": "红古区", "pid": 620100, "id": 620111 }, { "name": "永登县", "pid": 620100, "id": 620121 }, { "name": "皋兰县", "pid": 620100, "id": 620122 }, { "name": "榆中县", "pid": 620100, "id": 620123 }], "name": "兰州市", "pid": 620000, "id": 620100 }, { "districtList": [{ "name": "市辖区", "pid": 620200, "id": 620201 }], "name": "嘉峪关市", "pid": 620000, "id": 620200 }, { "districtList": [{ "name": "市辖区", "pid": 620300, "id": 620301 }, { "name": "金川区", "pid": 620300, "id": 620302 }, { "name": "永昌县", "pid": 620300, "id": 620321 }], "name": "金昌市", "pid": 620000, "id": 620300 }, { "districtList": [{ "name": "市辖区", "pid": 620400, "id": 620401 }, { "name": "白银区", "pid": 620400, "id": 620402 }, { "name": "平川区", "pid": 620400, "id": 620403 }, { "name": "靖远县", "pid": 620400, "id": 620421 }, { "name": "会宁县", "pid": 620400, "id": 620422 }, { "name": "景泰县", "pid": 620400, "id": 620423 }], "name": "白银市", "pid": 620000, "id": 620400 }, { "districtList": [{ "name": "市辖区", "pid": 620500, "id": 620501 }, { "name": "秦州区", "pid": 620500, "id": 620502 }, { "name": "麦积区", "pid": 620500, "id": 620503 }, { "name": "清水县", "pid": 620500, "id": 620521 }, { "name": "秦安县", "pid": 620500, "id": 620522 }, { "name": "甘谷县", "pid": 620500, "id": 620523 }, { "name": "武山县", "pid": 620500, "id": 620524 }, { "name": "张家川回族自治县", "pid": 620500, "id": 620525 }], "name": "天水市", "pid": 620000, "id": 620500 }, { "districtList": [{ "name": "市辖区", "pid": 620600, "id": 620601 }, { "name": "凉州区", "pid": 620600, "id": 620602 }, { "name": "民勤县", "pid": 620600, "id": 620621 }, { "name": "古浪县", "pid": 620600, "id": 620622 }, { "name": "天祝藏族自治县", "pid": 620600, "id": 620623 }], "name": "武威市", "pid": 620000, "id": 620600 }, { "districtList": [{ "name": "市辖区", "pid": 620700, "id": 620701 }, { "name": "甘州区", "pid": 620700, "id": 620702 }, { "name": "肃南裕固族自治县", "pid": 620700, "id": 620721 }, { "name": "民乐县", "pid": 620700, "id": 620722 }, { "name": "临泽县", "pid": 620700, "id": 620723 }, { "name": "高台县", "pid": 620700, "id": 620724 }, { "name": "山丹县", "pid": 620700, "id": 620725 }], "name": "张掖市", "pid": 620000, "id": 620700 }, { "districtList": [{ "name": "市辖区", "pid": 620800, "id": 620801 }, { "name": "崆峒区", "pid": 620800, "id": 620802 }, { "name": "泾川县", "pid": 620800, "id": 620821 }, { "name": "灵台县", "pid": 620800, "id": 620822 }, { "name": "崇信县", "pid": 620800, "id": 620823 }, { "name": "华亭县", "pid": 620800, "id": 620824 }, { "name": "庄浪县", "pid": 620800, "id": 620825 }, { "name": "静宁县", "pid": 620800, "id": 620826 }], "name": "平凉市", "pid": 620000, "id": 620800 }, { "districtList": [{ "name": "市辖区", "pid": 620900, "id": 620901 }, { "name": "肃州区", "pid": 620900, "id": 620902 }, { "name": "金塔县", "pid": 620900, "id": 620921 }, { "name": "瓜州县", "pid": 620900, "id": 620922 }, { "name": "肃北蒙古族自治县", "pid": 620900, "id": 620923 }, { "name": "阿克塞哈萨克族自治县", "pid": 620900, "id": 620924 }, { "name": "玉门市", "pid": 620900, "id": 620981 }, { "name": "敦煌市", "pid": 620900, "id": 620982 }], "name": "酒泉市", "pid": 620000, "id": 620900 }, { "districtList": [{ "name": "市辖区", "pid": 621000, "id": 621001 }, { "name": "西峰区", "pid": 621000, "id": 621002 }, { "name": "庆城县", "pid": 621000, "id": 621021 }, { "name": "环县", "pid": 621000, "id": 621022 }, { "name": "华池县", "pid": 621000, "id": 621023 }, { "name": "合水县", "pid": 621000, "id": 621024 }, { "name": "正宁县", "pid": 621000, "id": 621025 }, { "name": "宁县", "pid": 621000, "id": 621026 }, { "name": "镇原县", "pid": 621000, "id": 621027 }], "name": "庆阳市", "pid": 620000, "id": 621000 }, { "districtList": [{ "name": "市辖区", "pid": 621100, "id": 621101 }, { "name": "安定区", "pid": 621100, "id": 621102 }, { "name": "通渭县", "pid": 621100, "id": 621121 }, { "name": "陇西县", "pid": 621100, "id": 621122 }, { "name": "渭源县", "pid": 621100, "id": 621123 }, { "name": "临洮县", "pid": 621100, "id": 621124 }, { "name": "漳县", "pid": 621100, "id": 621125 }, { "name": "岷县", "pid": 621100, "id": 621126 }], "name": "定西市", "pid": 620000, "id": 621100 }, { "districtList": [{ "name": "市辖区", "pid": 621200, "id": 621201 }, { "name": "武都区", "pid": 621200, "id": 621202 }, { "name": "成县", "pid": 621200, "id": 621221 }, { "name": "文县", "pid": 621200, "id": 621222 }, { "name": "宕昌县", "pid": 621200, "id": 621223 }, { "name": "康县", "pid": 621200, "id": 621224 }, { "name": "西和县", "pid": 621200, "id": 621225 }, { "name": "礼县", "pid": 621200, "id": 621226 }, { "name": "徽县", "pid": 621200, "id": 621227 }, { "name": "两当县", "pid": 621200, "id": 621228 }], "name": "陇南市", "pid": 620000, "id": 621200 }, { "districtList": [{ "name": "临夏市", "pid": 622900, "id": 622901 }, { "name": "临夏县", "pid": 622900, "id": 622921 }, { "name": "康乐县", "pid": 622900, "id": 622922 }, { "name": "永靖县", "pid": 622900, "id": 622923 }, { "name": "广河县", "pid": 622900, "id": 622924 }, { "name": "和政县", "pid": 622900, "id": 622925 }, { "name": "东乡族自治县", "pid": 622900, "id": 622926 }, { "name": "积石山保安族东乡族撒拉族自治县", "pid": 622900, "id": 622927 }], "name": "临夏回族自治州", "pid": 620000, "id": 622900 }, { "districtList": [{ "name": "合作市", "pid": 623000, "id": 623001 }, { "name": "临潭县", "pid": 623000, "id": 623021 }, { "name": "卓尼县", "pid": 623000, "id": 623022 }, { "name": "舟曲县", "pid": 623000, "id": 623023 }, { "name": "迭部县", "pid": 623000, "id": 623024 }, { "name": "玛曲县", "pid": 623000, "id": 623025 }, { "name": "碌曲县", "pid": 623000, "id": 623026 }, { "name": "夏河县", "pid": 623000, "id": 623027 }], "name": "甘南藏族自治州", "pid": 620000, "id": 623000 }] }, { "name": "青海省", "id": 630000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 630100, "id": 630101 }, { "name": "城东区", "pid": 630100, "id": 630102 }, { "name": "城中区", "pid": 630100, "id": 630103 }, { "name": "城西区", "pid": 630100, "id": 630104 }, { "name": "城北区", "pid": 630100, "id": 630105 }, { "name": "大通回族土族自治县", "pid": 630100, "id": 630121 }, { "name": "湟中县", "pid": 630100, "id": 630122 }, { "name": "湟源县", "pid": 630100, "id": 630123 }], "name": "西宁市", "pid": 630000, "id": 630100 }, { "districtList": [{ "name": "乐都区", "pid": 630200, "id": 630202 }, { "name": "平安县", "pid": 630200, "id": 630221 }, { "name": "民和回族土族自治县", "pid": 630200, "id": 630222 }, { "name": "互助土族自治县", "pid": 630200, "id": 630223 }, { "name": "化隆回族自治县", "pid": 630200, "id": 630224 }, { "name": "循化撒拉族自治县", "pid": 630200, "id": 630225 }], "name": "海东市", "pid": 630000, "id": 630200 }, { "districtList": [{ "name": "门源回族自治县", "pid": 632200, "id": 632221 }, { "name": "祁连县", "pid": 632200, "id": 632222 }, { "name": "海晏县", "pid": 632200, "id": 632223 }, { "name": "刚察县", "pid": 632200, "id": 632224 }], "name": "海北藏族自治州", "pid": 630000, "id": 632200 }, { "districtList": [{ "name": "同仁县", "pid": 632300, "id": 632321 }, { "name": "尖扎县", "pid": 632300, "id": 632322 }, { "name": "泽库县", "pid": 632300, "id": 632323 }, { "name": "河南蒙古族自治县", "pid": 632300, "id": 632324 }], "name": "黄南藏族自治州", "pid": 630000, "id": 632300 }, { "districtList": [{ "name": "共和县", "pid": 632500, "id": 632521 }, { "name": "同德县", "pid": 632500, "id": 632522 }, { "name": "贵德县", "pid": 632500, "id": 632523 }, { "name": "兴海县", "pid": 632500, "id": 632524 }, { "name": "贵南县", "pid": 632500, "id": 632525 }], "name": "海南藏族自治州", "pid": 630000, "id": 632500 }, { "districtList": [{ "name": "玛沁县", "pid": 632600, "id": 632621 }, { "name": "班玛县", "pid": 632600, "id": 632622 }, { "name": "甘德县", "pid": 632600, "id": 632623 }, { "name": "达日县", "pid": 632600, "id": 632624 }, { "name": "久治县", "pid": 632600, "id": 632625 }, { "name": "玛多县", "pid": 632600, "id": 632626 }], "name": "果洛藏族自治州", "pid": 630000, "id": 632600 }, { "districtList": [{ "name": "玉树市", "pid": 632700, "id": 632701 }, { "name": "杂多县", "pid": 632700, "id": 632722 }, { "name": "称多县", "pid": 632700, "id": 632723 }, { "name": "治多县", "pid": 632700, "id": 632724 }, { "name": "囊谦县", "pid": 632700, "id": 632725 }, { "name": "曲麻莱县", "pid": 632700, "id": 632726 }], "name": "玉树藏族自治州", "pid": 630000, "id": 632700 }, { "districtList": [{ "name": "格尔木市", "pid": 632800, "id": 632801 }, { "name": "德令哈市", "pid": 632800, "id": 632802 }, { "name": "乌兰县", "pid": 632800, "id": 632821 }, { "name": "都兰县", "pid": 632800, "id": 632822 }, { "name": "天峻县", "pid": 632800, "id": 632823 }], "name": "海西蒙古族藏族自治州", "pid": 630000, "id": 632800 }] }, { "name": "宁夏回族自治区", "id": 640000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 640100, "id": 640101 }, { "name": "兴庆区", "pid": 640100, "id": 640104 }, { "name": "西夏区", "pid": 640100, "id": 640105 }, { "name": "金凤区", "pid": 640100, "id": 640106 }, { "name": "永宁县", "pid": 640100, "id": 640121 }, { "name": "贺兰县", "pid": 640100, "id": 640122 }, { "name": "灵武市", "pid": 640100, "id": 640181 }], "name": "银川市", "pid": 640000, "id": 640100 }, { "districtList": [{ "name": "市辖区", "pid": 640200, "id": 640201 }, { "name": "大武口区", "pid": 640200, "id": 640202 }, { "name": "惠农区", "pid": 640200, "id": 640205 }, { "name": "平罗县", "pid": 640200, "id": 640221 }], "name": "石嘴山市", "pid": 640000, "id": 640200 }, { "districtList": [{ "name": "市辖区", "pid": 640300, "id": 640301 }, { "name": "利通区", "pid": 640300, "id": 640302 }, { "name": "红寺堡区", "pid": 640300, "id": 640303 }, { "name": "盐池县", "pid": 640300, "id": 640323 }, { "name": "同心县", "pid": 640300, "id": 640324 }, { "name": "青铜峡市", "pid": 640300, "id": 640381 }], "name": "吴忠市", "pid": 640000, "id": 640300 }, { "districtList": [{ "name": "市辖区", "pid": 640400, "id": 640401 }, { "name": "原州区", "pid": 640400, "id": 640402 }, { "name": "西吉县", "pid": 640400, "id": 640422 }, { "name": "隆德县", "pid": 640400, "id": 640423 }, { "name": "泾源县", "pid": 640400, "id": 640424 }, { "name": "彭阳县", "pid": 640400, "id": 640425 }], "name": "固原市", "pid": 640000, "id": 640400 }, { "districtList": [{ "name": "市辖区", "pid": 640500, "id": 640501 }, { "name": "沙坡头区", "pid": 640500, "id": 640502 }, { "name": "中宁县", "pid": 640500, "id": 640521 }, { "name": "海原县", "pid": 640500, "id": 640522 }], "name": "中卫市", "pid": 640000, "id": 640500 }] }, { "name": "新疆维吾尔自治区", "id": 650000, "cityList": [{ "districtList": [{ "name": "市辖区", "pid": 650100, "id": 650101 }, { "name": "天山区", "pid": 650100, "id": 650102 }, { "name": "沙依巴克区", "pid": 650100, "id": 650103 }, { "name": "新市区", "pid": 650100, "id": 650104 }, { "name": "水磨沟区", "pid": 650100, "id": 650105 }, { "name": "头屯河区", "pid": 650100, "id": 650106 }, { "name": "达坂城区", "pid": 650100, "id": 650107 }, { "name": "米东区", "pid": 650100, "id": 650109 }, { "name": "乌鲁木齐县", "pid": 650100, "id": 650121 }], "name": "乌鲁木齐市", "pid": 650000, "id": 650100 }, { "districtList": [{ "name": "市辖区", "pid": 650200, "id": 650201 }, { "name": "独山子区", "pid": 650200, "id": 650202 }, { "name": "克拉玛依区", "pid": 650200, "id": 650203 }, { "name": "白碱滩区", "pid": 650200, "id": 650204 }, { "name": "乌尔禾区", "pid": 650200, "id": 650205 }], "name": "克拉玛依市", "pid": 650000, "id": 650200 }, { "districtList": [{ "name": "吐鲁番市", "pid": 652100, "id": 652101 }, { "name": "鄯善县", "pid": 652100, "id": 652122 }, { "name": "托克逊县", "pid": 652100, "id": 652123 }], "name": "吐鲁番地区", "pid": 650000, "id": 652100 }, { "districtList": [{ "name": "哈密市", "pid": 652200, "id": 652201 }, { "name": "巴里坤哈萨克自治县", "pid": 652200, "id": 652222 }, { "name": "伊吾县", "pid": 652200, "id": 652223 }], "name": "哈密地区", "pid": 650000, "id": 652200 }, { "districtList": [{ "name": "昌吉市", "pid": 652300, "id": 652301 }, { "name": "阜康市", "pid": 652300, "id": 652302 }, { "name": "呼图壁县", "pid": 652300, "id": 652323 }, { "name": "玛纳斯县", "pid": 652300, "id": 652324 }, { "name": "奇台县", "pid": 652300, "id": 652325 }, { "name": "吉木萨尔县", "pid": 652300, "id": 652327 }, { "name": "木垒哈萨克自治县", "pid": 652300, "id": 652328 }], "name": "昌吉回族自治州", "pid": 650000, "id": 652300 }, { "districtList": [{ "name": "博乐市", "pid": 652700, "id": 652701 }, { "name": "阿拉山口市", "pid": 652700, "id": 652702 }, { "name": "精河县", "pid": 652700, "id": 652722 }, { "name": "温泉县", "pid": 652700, "id": 652723 }], "name": "博尔塔拉蒙古自治州", "pid": 650000, "id": 652700 }, { "districtList": [{ "name": "库尔勒市", "pid": 652800, "id": 652801 }, { "name": "轮台县", "pid": 652800, "id": 652822 }, { "name": "尉犁县", "pid": 652800, "id": 652823 }, { "name": "若羌县", "pid": 652800, "id": 652824 }, { "name": "且末县", "pid": 652800, "id": 652825 }, { "name": "焉耆回族自治县", "pid": 652800, "id": 652826 }, { "name": "和静县", "pid": 652800, "id": 652827 }, { "name": "和硕县", "pid": 652800, "id": 652828 }, { "name": "博湖县", "pid": 652800, "id": 652829 }], "name": "巴音郭楞蒙古自治州", "pid": 650000, "id": 652800 }, { "districtList": [{ "name": "阿克苏市", "pid": 652900, "id": 652901 }, { "name": "温宿县", "pid": 652900, "id": 652922 }, { "name": "库车县", "pid": 652900, "id": 652923 }, { "name": "沙雅县", "pid": 652900, "id": 652924 }, { "name": "新和县", "pid": 652900, "id": 652925 }, { "name": "拜城县", "pid": 652900, "id": 652926 }, { "name": "乌什县", "pid": 652900, "id": 652927 }, { "name": "阿瓦提县", "pid": 652900, "id": 652928 }, { "name": "柯坪县", "pid": 652900, "id": 652929 }], "name": "阿克苏地区", "pid": 650000, "id": 652900 }, { "districtList": [{ "name": "阿图什市", "pid": 653000, "id": 653001 }, { "name": "阿克陶县", "pid": 653000, "id": 653022 }, { "name": "阿合奇县", "pid": 653000, "id": 653023 }, { "name": "乌恰县", "pid": 653000, "id": 653024 }], "name": "克孜勒苏柯尔克孜自治州", "pid": 650000, "id": 653000 }, { "districtList": [{ "name": "喀什市", "pid": 653100, "id": 653101 }, { "name": "疏附县", "pid": 653100, "id": 653121 }, { "name": "疏勒县", "pid": 653100, "id": 653122 }, { "name": "英吉沙县", "pid": 653100, "id": 653123 }, { "name": "泽普县", "pid": 653100, "id": 653124 }, { "name": "莎车县", "pid": 653100, "id": 653125 }, { "name": "叶城县", "pid": 653100, "id": 653126 }, { "name": "麦盖提县", "pid": 653100, "id": 653127 }, { "name": "岳普湖县", "pid": 653100, "id": 653128 }, { "name": "伽师县", "pid": 653100, "id": 653129 }, { "name": "巴楚县", "pid": 653100, "id": 653130 }, { "name": "塔什库尔干塔吉克自治县", "pid": 653100, "id": 653131 }], "name": "喀什地区", "pid": 650000, "id": 653100 }, { "districtList": [{ "name": "和田市", "pid": 653200, "id": 653201 }, { "name": "和田县", "pid": 653200, "id": 653221 }, { "name": "墨玉县", "pid": 653200, "id": 653222 }, { "name": "皮山县", "pid": 653200, "id": 653223 }, { "name": "洛浦县", "pid": 653200, "id": 653224 }, { "name": "策勒县", "pid": 653200, "id": 653225 }, { "name": "于田县", "pid": 653200, "id": 653226 }, { "name": "民丰县", "pid": 653200, "id": 653227 }], "name": "和田地区", "pid": 650000, "id": 653200 }, { "districtList": [{ "name": "伊宁市", "pid": 654000, "id": 654002 }, { "name": "奎屯市", "pid": 654000, "id": 654003 }, { "name": "伊宁县", "pid": 654000, "id": 654021 }, { "name": "察布查尔锡伯自治县", "pid": 654000, "id": 654022 }, { "name": "霍城县", "pid": 654000, "id": 654023 }, { "name": "巩留县", "pid": 654000, "id": 654024 }, { "name": "新源县", "pid": 654000, "id": 654025 }, { "name": "昭苏县", "pid": 654000, "id": 654026 }, { "name": "特克斯县", "pid": 654000, "id": 654027 }, { "name": "尼勒克县", "pid": 654000, "id": 654028 }], "name": "伊犁哈萨克自治州", "pid": 650000, "id": 654000 }, { "districtList": [{ "name": "塔城市", "pid": 654200, "id": 654201 }, { "name": "乌苏市", "pid": 654200, "id": 654202 }, { "name": "额敏县", "pid": 654200, "id": 654221 }, { "name": "沙湾县", "pid": 654200, "id": 654223 }, { "name": "托里县", "pid": 654200, "id": 654224 }, { "name": "裕民县", "pid": 654200, "id": 654225 }, { "name": "和布克赛尔蒙古自治县", "pid": 654200, "id": 654226 }], "name": "塔城地区", "pid": 650000, "id": 654200 }, { "districtList": [{ "name": "阿勒泰市", "pid": 654300, "id": 654301 }, { "name": "布尔津县", "pid": 654300, "id": 654321 }, { "name": "富蕴县", "pid": 654300, "id": 654322 }, { "name": "福海县", "pid": 654300, "id": 654323 }, { "name": "哈巴河县", "pid": 654300, "id": 654324 }, { "name": "青河县", "pid": 654300, "id": 654325 }, { "name": "吉木乃县", "pid": 654300, "id": 654326 }], "name": "阿勒泰地区", "pid": 650000, "id": 654300 }, { "districtList": [{ "name": "石河子市", "pid": 659000, "id": 659001 }, { "name": "阿拉尔市", "pid": 659000, "id": 659002 }, { "name": "图木舒克市", "pid": 659000, "id": 659003 }, { "name": "五家渠市", "pid": 659000, "id": 659004 }], "name": "自治区直辖县级行政区划", "pid": 650000, "id": 659000 }] }, { "name": "台湾省", "id": 710000, "cityList": [] }, { "name": "香港特别行政区", "id": 810000, "cityList": [] }, { "name": "澳门特别行政区", "id": 820000, "cityList": [] }]; +module.exports = { + cityData: cityData +} \ No newline at end of file diff --git a/utils/countryList.js b/utils/countryList.js new file mode 100644 index 0000000..cbb322a --- /dev/null +++ b/utils/countryList.js @@ -0,0 +1 @@ +module.exports = [{ "initial": "A", "areaCodeList": [{ "country": "安哥拉", "areaCode": "+244", "initial": "A" }, { "country": "阿富汗", "areaCode": "+93", "initial": "A" }, { "country": "阿尔巴尼亚", "areaCode": "+355", "initial": "A" }, { "country": "阿尔及利亚", "areaCode": "+213", "initial": "A" }, { "country": "安道尔共和国", "areaCode": "+376", "initial": "A" }, { "country": "安圭拉岛", "areaCode": "+1264", "initial": "A" }, { "country": "安提瓜和巴布达", "areaCode": "+1268", "initial": "A" }, { "country": "阿根廷", "areaCode": "+54", "initial": "A" }, { "country": "亚美尼亚", "areaCode": "+374", "initial": "A" }, { "country": "阿森松", "areaCode": "+247", "initial": "A" }, { "country": "澳大利亚", "areaCode": "+61", "initial": "A" }, { "country": "奥地利", "areaCode": "+43", "initial": "A" }, { "country": "阿塞拜疆", "areaCode": "+994", "initial": "A" }, { "country": "埃及", "areaCode": "+20", "initial": "A" }, { "country": "爱沙尼亚", "areaCode": "+372", "initial": "A" }, { "country": "埃塞俄比亚", "areaCode": "+251", "initial": "A" }, { "country": "爱尔兰", "areaCode": "+353", "initial": "A" }, { "country": "澳门", "areaCode": "+853", "initial": "A" }, { "country": "阿曼", "areaCode": "+968", "initial": "A" }, { "country": "阿拉伯联合酋长国", "areaCode": "+971", "initial": "A" }] }, { "initial": "B", "areaCodeList": [{ "country": "巴哈马", "areaCode": "+1242", "initial": "B" }, { "country": "巴林", "areaCode": "+973", "initial": "B" }, { "country": "巴巴多斯", "areaCode": "+1246", "initial": "B" }, { "country": "白俄罗斯", "areaCode": "+375", "initial": "B" }, { "country": "比利时", "areaCode": "+32", "initial": "B" }, { "country": "伯利兹", "areaCode": "+501", "initial": "B" }, { "country": "贝宁", "areaCode": "+229", "initial": "B" }, { "country": "百慕大群岛", "areaCode": "+1441", "initial": "B" }, { "country": "玻利维亚", "areaCode": "+591", "initial": "B" }, { "country": "博茨瓦纳", "areaCode": "+267", "initial": "B" }, { "country": "巴西", "areaCode": "+55", "initial": "B" }, { "country": "文莱", "areaCode": "+673", "initial": "B" }, { "country": "保加利亚", "areaCode": "+359", "initial": "B" }, { "country": "布基纳法索", "areaCode": "+226", "initial": "B" }, { "country": "布隆迪", "areaCode": "+257", "initial": "B" }, { "country": "冰岛", "areaCode": "+354", "initial": "B" }, { "country": "巴基斯坦", "areaCode": "+92", "initial": "B" }, { "country": "巴拿马", "areaCode": "+507", "initial": "B" }, { "country": "巴布亚新几内亚", "areaCode": "+675", "initial": "B" }, { "country": "巴拉圭", "areaCode": "+595", "initial": "B" }, { "country": "波兰", "areaCode": "+48", "initial": "B" }, { "country": "波多黎各", "areaCode": "+1787", "initial": "B" }] }, { "initial": "C", "areaCodeList": [{ "country": "朝鲜", "areaCode": "+850", "initial": "C" }] }, { "initial": "D", "areaCodeList": [{ "country": "丹麦", "areaCode": "+45", "initial": "D" }, { "country": "多米尼加共和国", "areaCode": "+1890", "initial": "D" }, { "country": "德国", "areaCode": "+49", "initial": "D" }, { "country": "东萨摩亚(美)", "areaCode": "+684", "initial": "D" }, { "country": "多哥", "areaCode": "+228", "initial": "D" }] }, { "initial": "E", "areaCodeList": [{ "country": "厄瓜多尔", "areaCode": "+593", "initial": "E" }, { "country": "俄罗斯", "areaCode": "+7", "initial": "E" }] }, { "initial": "F", "areaCodeList": [{ "country": "斐济", "areaCode": "+679", "initial": "F" }, { "country": "芬兰", "areaCode": "+358", "initial": "F" }, { "country": "法国", "areaCode": "+33", "initial": "F" }, { "country": "法属圭亚那", "areaCode": "+594", "initial": "F" }, { "country": "菲律宾", "areaCode": "+63", "initial": "F" }, { "country": "法属玻利尼西亚", "areaCode": "+689", "initial": "F" }] }, { "initial": "G", "areaCodeList": [{ "country": "哥伦比亚", "areaCode": "+57", "initial": "G" }, { "country": "刚果", "areaCode": "+242", "initial": "G" }, { "country": "哥斯达黎加", "areaCode": "+506", "initial": "G" }, { "country": "古巴", "areaCode": "+53", "initial": "G" }, { "country": "冈比亚", "areaCode": "+220", "initial": "G" }, { "country": "格鲁吉亚", "areaCode": "+995", "initial": "G" }, { "country": "格林纳达", "areaCode": "+1809", "initial": "G" }, { "country": "关岛", "areaCode": "+1671", "initial": "G" }, { "country": "圭亚那", "areaCode": "+592", "initial": "G" }] }, { "initial": "H", "areaCodeList": [{ "country": "海地", "areaCode": "+509", "initial": "H" }, { "country": "洪都拉斯", "areaCode": "+504", "initial": "H" }, { "country": "哈萨克斯坦", "areaCode": "+327", "initial": "H" }, { "country": "韩国", "areaCode": "+82", "initial": "H" }, { "country": "荷属安的列斯", "areaCode": "+599", "initial": "H" }, { "country": "荷兰", "areaCode": "+31", "initial": "H" }] }, { "initial": "J", "areaCodeList": [{ "country": "加拿大", "areaCode": "+1", "initial": "J" }, { "country": "捷克", "areaCode": "+420", "initial": "J" }, { "country": "吉布提", "areaCode": "+253", "initial": "J" }, { "country": "加蓬", "areaCode": "+241", "initial": "J" }, { "country": "加纳", "areaCode": "+233", "initial": "J" }, { "country": "几内亚", "areaCode": "+224", "initial": "J" }, { "country": "柬埔寨", "areaCode": "+855", "initial": "J" }, { "country": "吉尔吉斯坦", "areaCode": "+331", "initial": "J" }, { "country": "津巴布韦", "areaCode": "+263", "initial": "J" }] }, { "initial": "K", "areaCodeList": [{ "country": "开曼群岛", "areaCode": "+1345", "initial": "K" }, { "country": "库克群岛", "areaCode": "+682", "initial": "K" }, { "country": "科特迪瓦", "areaCode": "+225", "initial": "K" }, { "country": "肯尼亚", "areaCode": "+254", "initial": "K" }, { "country": "科威特", "areaCode": "+965", "initial": "K" }, { "country": "喀麦隆", "areaCode": "+237", "initial": "K" }, { "country": "卡塔尔", "areaCode": "+974", "initial": "K" }] }, { "initial": "L", "areaCodeList": [{ "country": "老挝", "areaCode": "+856", "initial": "L" }, { "country": "拉脱维亚", "areaCode": "+371", "initial": "L" }, { "country": "黎巴嫩", "areaCode": "+961", "initial": "L" }, { "country": "莱索托", "areaCode": "+266", "initial": "L" }, { "country": "利比里亚", "areaCode": "+231", "initial": "L" }, { "country": "利比亚", "areaCode": "+218", "initial": "L" }, { "country": "列支敦士登", "areaCode": "+423", "initial": "L" }, { "country": "立陶宛", "areaCode": "+370", "initial": "L" }, { "country": "卢森堡", "areaCode": "+352", "initial": "L" }, { "country": "留尼旺", "areaCode": "+262", "initial": "L" }, { "country": "罗马尼亚", "areaCode": "+40", "initial": "L" }] }, { "initial": "M", "areaCodeList": [{ "country": "缅甸", "areaCode": "+95", "initial": "M" }, { "country": "马达加斯加", "areaCode": "+261", "initial": "M" }, { "country": "马拉维", "areaCode": "+265", "initial": "M" }, { "country": "马来西亚", "areaCode": "+60", "initial": "M" }, { "country": "马尔代夫", "areaCode": "+960", "initial": "M" }, { "country": "马里", "areaCode": "+223", "initial": "M" }, { "country": "马耳他", "areaCode": "+356", "initial": "M" }, { "country": "马里亚那群岛", "areaCode": "+1670", "initial": "M" }, { "country": "马提尼克", "areaCode": "+596", "initial": "M" }, { "country": "毛里求斯", "areaCode": "+230", "initial": "M" }, { "country": "墨西哥", "areaCode": "+52", "initial": "M" }, { "country": "摩尔多瓦", "areaCode": "+373", "initial": "M" }, { "country": "摩纳哥", "areaCode": "+377", "initial": "M" }, { "country": "蒙古", "areaCode": "+976", "initial": "M" }, { "country": "蒙特塞拉特岛", "areaCode": "+1664", "initial": "M" }, { "country": "摩洛哥", "areaCode": "+212", "initial": "M" }, { "country": "莫桑比克", "areaCode": "+258", "initial": "M" }, { "country": "秘鲁", "areaCode": "+51", "initial": "M" }, { "country": "美国", "areaCode": "+1", "initial": "M" }, { "country": "孟加拉国", "areaCode": "+880", "initial": "M" }] }, { "initial": "N", "areaCodeList": [{ "country": "纳米比亚", "areaCode": "+264", "initial": "N" }, { "country": "瑙鲁", "areaCode": "+674", "initial": "N" }, { "country": "尼泊尔", "areaCode": "+977", "initial": "N" }, { "country": "尼加拉瓜", "areaCode": "+505", "initial": "N" }, { "country": "尼日尔", "areaCode": "+227", "initial": "N" }, { "country": "尼日利亚", "areaCode": "+234", "initial": "N" }, { "country": "挪威", "areaCode": "+47", "initial": "N" }, { "country": "南非", "areaCode": "+27", "initial": "N" }, { "country": "南斯拉夫", "areaCode": "+381", "initial": "N" }] }, { "initial": "P", "areaCodeList": [{ "country": "葡萄牙", "areaCode": "+351", "initial": "P" }] }, { "initial": "R", "areaCodeList": [{ "country": "日本", "areaCode": "+81", "initial": "R" }, { "country": "瑞典", "areaCode": "+46", "initial": "R" }, { "country": "瑞士", "areaCode": "+41", "initial": "R" }] }, { "initial": "S", "areaCodeList": [{ "country": "塞浦路斯", "areaCode": "+357", "initial": "S" }, { "country": "萨尔瓦多", "areaCode": "+503", "initial": "S" }, { "country": "圣卢西亚", "areaCode": "+1758", "initial": "S" }, { "country": "圣文森特岛", "areaCode": "+1784", "initial": "S" }, { "country": "圣马力诺", "areaCode": "+378", "initial": "S" }, { "country": "圣多美和普林西比", "areaCode": "+239", "initial": "S" }, { "country": "沙特阿拉伯", "areaCode": "+966", "initial": "S" }, { "country": "塞内加尔", "areaCode": "+221", "initial": "S" }, { "country": "塞舌尔", "areaCode": "+248", "initial": "S" }, { "country": "塞拉利昂", "areaCode": "+232", "initial": "S" }, { "country": "斯洛伐克", "areaCode": "+421", "initial": "S" }, { "country": "斯洛文尼亚", "areaCode": "+386", "initial": "S" }, { "country": "所罗门群岛", "areaCode": "+677", "initial": "S" }, { "country": "索马里", "areaCode": "+252", "initial": "S" }, { "country": "斯里兰卡", "areaCode": "+94", "initial": "S" }, { "country": "圣卢西亚", "areaCode": "+1758", "initial": "S" }, { "country": "圣文森特", "areaCode": "+1784", "initial": "S" }, { "country": "苏丹", "areaCode": "+249", "initial": "S" }, { "country": "苏里南", "areaCode": "+597", "initial": "S" }, { "country": "斯威士兰", "areaCode": "+268", "initial": "S" }] }, { "initial": "T", "areaCodeList": [{ "country": "塔吉克斯坦", "areaCode": "+992", "initial": "T" }, { "country": "坦桑尼亚", "areaCode": "+255", "initial": "T" }, { "country": "泰国", "areaCode": "+66", "initial": "T" }, { "country": "汤加", "areaCode": "+676", "initial": "T" }, { "country": "特立尼达和多巴哥", "areaCode": "+1809", "initial": "T" }, { "country": "突尼斯", "areaCode": "+216", "initial": "T" }, { "country": "土耳其", "areaCode": "+90", "initial": "T" }, { "country": "土库曼斯坦", "areaCode": "+993", "initial": "T" }] }, { "initial": "W", "areaCodeList": [{ "country": "危地马拉", "areaCode": "+502", "initial": "W" }, { "country": "乌干达", "areaCode": "+256", "initial": "W" }, { "country": "乌克兰", "areaCode": "+380", "initial": "W" }, { "country": "乌拉圭", "areaCode": "+598", "initial": "W" }, { "country": "乌兹别克斯坦", "areaCode": "+233", "initial": "W" }, { "country": "委内瑞拉", "areaCode": "+58", "initial": "W" }] }, { "initial": "X", "areaCodeList": [{ "country": "希腊", "areaCode": "+30", "initial": "X" }, { "country": "匈牙利", "areaCode": "+36", "initial": "X" }, { "country": "新西兰", "areaCode": "+64", "initial": "X" }, { "country": "西萨摩亚", "areaCode": "+685", "initial": "X" }, { "country": "新加坡", "areaCode": "+65", "initial": "X" }, { "country": "西班牙", "areaCode": "+34", "initial": "X" }, { "country": "叙利亚", "areaCode": "+963", "initial": "X" }] }, { "initial": "Y", "areaCodeList": [{ "country": "也门", "areaCode": "+967", "initial": "Y" }, { "country": "印度", "areaCode": "+91", "initial": "Y" }, { "country": "印度尼西亚", "areaCode": "+62", "initial": "Y" }, { "country": "伊朗", "areaCode": "+98", "initial": "Y" }, { "country": "伊拉克", "areaCode": "+964", "initial": "Y" }, { "country": "以色列", "areaCode": "+972", "initial": "Y" }, { "country": "意大利", "areaCode": "+39", "initial": "Y" }, { "country": "牙买加", "areaCode": "+1876", "initial": "Y" }, { "country": "约旦", "areaCode": "+962", "initial": "Y" }, { "country": "英国", "areaCode": "+44", "initial": "Y" }, { "country": "越南", "areaCode": "+84", "initial": "Y" }] }, { "initial": "Z", "areaCodeList": [{ "country": "扎伊尔", "areaCode": "+243", "initial": "Z" }, { "country": "赞比亚", "areaCode": "+260", "initial": "Z" }, { "country": "中非共和国", "areaCode": "+236", "initial": "Z" }, { "country": "乍得", "areaCode": "+235", "initial": "Z" }, { "country": "智利", "areaCode": "+56", "initial": "Z" }, { "country": "中国", "areaCode": "+86", "initial": "Z" }, { "country": "中国台湾", "areaCode": "+886", "initial": "Z" }, { "country": "中国香港", "areaCode": "+852", "initial": "Z" }, { "country": "直布罗陀", "areaCode": "+350", "initial": "Z" }] }] diff --git a/utils/date.js b/utils/date.js new file mode 100644 index 0000000..af0ca0c --- /dev/null +++ b/utils/date.js @@ -0,0 +1,78 @@ +/* * 时间格式化工具 +* 把Long类型的1527672756454日期还原yyyy-MM-dd 00:00:00格式日期 +*/ +function datetimeFormat(longTypeDate){ + var dateTypeDate = ""; + var date = new Date(); + date.setTime(longTypeDate); + dateTypeDate += date.getFullYear(); //年 + dateTypeDate += "-" + getMonth(date); //月 + dateTypeDate += "-" + getDay(date); //日 + dateTypeDate += " " + getHours(date); //时 + dateTypeDate += ":" + getMinutes(date); //分 + dateTypeDate += ":" + getSeconds(date); //分 + return dateTypeDate; +} +/* + * 时间格式化工具 + * 把Long类型的1527672756454日期还原yyyy-MM-dd格式日期 + */ +function dateFormat(longTypeDate){ + var dateTypeDate = ""; + var date = new Date(); + date.setTime(longTypeDate); + dateTypeDate += date.getFullYear(); //年 + dateTypeDate += "-" + getMonth(date); //月 + dateTypeDate += "-" + getDay(date); //日 + return dateTypeDate; +} +//返回 01-12 的月份值 +function getMonth(date){ + var month = ""; + month = date.getMonth() + 1; //getMonth()得到的月份是0-11 + if(month<10){ + month = "0" + month; + } + return month; +} +//返回01-30的日期 +function getDay(date){ + var day = ""; + day = date.getDate(); + if(day<10){ + day = "0" + day; + } + return day; +} +//小时 +function getHours(date){ + var hours = ""; + hours = date.getHours(); + if(hours<10){ + hours = "0" + hours; + } + return hours; +} +//分 +function getMinutes(date){ + var minute = ""; + minute = date.getMinutes(); + if(minute<10){ + minute = "0" + minute; + } + return minute; +} +//秒 +function getSeconds(date){ + var second = ""; + second = date.getSeconds(); + if(second<10){ + second = "0" + second; + } + return second; +} + +module.exports = { + datetimeFormat: datetimeFormat, + dateFormat: dateFormat, +}; \ No newline at end of file diff --git a/utils/lib/crypto1/base64.js b/utils/lib/crypto1/base64.js new file mode 100644 index 0000000..f550e74 --- /dev/null +++ b/utils/lib/crypto1/base64.js @@ -0,0 +1,135 @@ +module.exports = { + + // private property + _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", + + // public method for encoding + encode : function (input) { + var output = ""; + var chr1, chr2, chr3, enc1, enc2, enc3, enc4; + var i = 0; + + input = this._utf8_encode(input); + + while (i < input.length) { + + chr1 = input.charCodeAt(i++); + chr2 = input.charCodeAt(i++); + chr3 = input.charCodeAt(i++); + + enc1 = chr1 >> 2; + enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); + enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); + enc4 = chr3 & 63; + + if (isNaN(chr2)) { + enc3 = enc4 = 64; + } else if (isNaN(chr3)) { + enc4 = 64; + } + + output = output + + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); + + } + + return output; + }, + + // public method for decoding + decode : function (input) { + var output = ""; + var chr1, chr2, chr3; + var enc1, enc2, enc3, enc4; + var i = 0; + + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + + while (i < input.length) { + + enc1 = this._keyStr.indexOf(input.charAt(i++)); + enc2 = this._keyStr.indexOf(input.charAt(i++)); + enc3 = this._keyStr.indexOf(input.charAt(i++)); + enc4 = this._keyStr.indexOf(input.charAt(i++)); + + chr1 = (enc1 << 2) | (enc2 >> 4); + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); + chr3 = ((enc3 & 3) << 6) | enc4; + + output = output + String.fromCharCode(chr1); + + if (enc3 != 64) { + output = output + String.fromCharCode(chr2); + } + if (enc4 != 64) { + output = output + String.fromCharCode(chr3); + } + + } + + output = this._utf8_decode(output); + + return output; + + }, + + // private method for UTF-8 encoding + _utf8_encode : function (string) { + string = string.replace(/\r\n/g,"\n"); + var utftext = ""; + + for (var n = 0; n < string.length; n++) { + + var c = string.charCodeAt(n); + + if (c < 128) { + utftext += String.fromCharCode(c); + } + else if((c > 127) && (c < 2048)) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } + else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + + } + + return utftext; + }, + + // private method for UTF-8 decoding + _utf8_decode : function (utftext) { + var string = ""; + var i = 0; + var c = c1 = c2 = 0; + + while ( i < utftext.length ) { + + c = utftext.charCodeAt(i); + + if (c < 128) { + string += String.fromCharCode(c); + i++; + } + else if((c > 191) && (c < 224)) { + c2 = utftext.charCodeAt(i+1); + string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } + else { + c2 = utftext.charCodeAt(i+1); + c3 = utftext.charCodeAt(i+2); + string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + + } + + return string; + } + +} diff --git a/utils/lib/crypto1/crypto.js b/utils/lib/crypto1/crypto.js new file mode 100644 index 0000000..e431eb4 --- /dev/null +++ b/utils/lib/crypto1/crypto.js @@ -0,0 +1,281 @@ +/*! + * Crypto-JS v1.1.0 + * http://code.google.com/p/crypto-js/ + * Copyright (c) 2009, Jeff Mott. All rights reserved. + * http://code.google.com/p/crypto-js/wiki/License + */ + +var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +// Global Crypto object +var Crypto = {}; + +// Crypto utilities +var util = Crypto.util = { + + // Bit-wise rotate left + rotl: function (n, b) { + return (n << b) | (n >>> (32 - b)); + }, + + // Bit-wise rotate right + rotr: function (n, b) { + return (n << (32 - b)) | (n >>> b); + }, + + // Swap big-endian to little-endian and vice versa + endian: function (n) { + + // If number given, swap endian + if (n.constructor == Number) { + return util.rotl(n, 8) & 0x00FF00FF | + util.rotl(n, 24) & 0xFF00FF00; + } + + // Else, assume array and swap all items + for (var i = 0; i < n.length; i++) + n[i] = util.endian(n[i]); + return n; + + }, + + // Generate an array of any length of random bytes + randomBytes: function (n) { + for (var bytes = []; n > 0; n--) + bytes.push(Math.floor(Math.random() * 256)); + return bytes; + }, + + // Convert a string to a byte array + stringToBytes: function (str) { + var bytes = []; + for (var i = 0; i < str.length; i++) + bytes.push(str.charCodeAt(i)); + return bytes; + }, + + // Convert a byte array to a string + bytesToString: function (bytes) { + var str = []; + for (var i = 0; i < bytes.length; i++) + str.push(String.fromCharCode(bytes[i])); + return str.join(""); + }, + + // Convert a string to big-endian 32-bit words + stringToWords: function (str) { + var words = []; + for (var c = 0, b = 0; c < str.length; c++, b += 8) + words[b >>> 5] |= str.charCodeAt(c) << (24 - b % 32); + return words; + }, + + // Convert a byte array to big-endian 32-bits words + bytesToWords: function (bytes) { + var words = []; + for (var i = 0, b = 0; i < bytes.length; i++, b += 8) + words[b >>> 5] |= bytes[i] << (24 - b % 32); + return words; + }, + + // Convert big-endian 32-bit words to a byte array + wordsToBytes: function (words) { + var bytes = []; + for (var b = 0; b < words.length * 32; b += 8) + bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); + return bytes; + }, + + // Convert a byte array to a hex string + bytesToHex: function (bytes) { + var hex = []; + for (var i = 0; i < bytes.length; i++) { + hex.push((bytes[i] >>> 4).toString(16)); + hex.push((bytes[i] & 0xF).toString(16)); + } + return hex.join(""); + }, + + // Convert a hex string to a byte array + hexToBytes: function (hex) { + var bytes = []; + for (var c = 0; c < hex.length; c += 2) + bytes.push(parseInt(hex.substr(c, 2), 16)); + return bytes; + }, + + // Convert a byte array to a base-64 string + bytesToBase64: function (bytes) { + + // Use browser-native function if it exists + if (typeof btoa == "function") return btoa(util.bytesToString(bytes)); + + var base64 = [], + overflow; + + for (var i = 0; i < bytes.length; i++) { + switch (i % 3) { + case 0: + base64.push(base64map.charAt(bytes[i] >>> 2)); + overflow = (bytes[i] & 0x3) << 4; + break; + case 1: + base64.push(base64map.charAt(overflow | (bytes[i] >>> 4))); + overflow = (bytes[i] & 0xF) << 2; + break; + case 2: + base64.push(base64map.charAt(overflow | (bytes[i] >>> 6))); + base64.push(base64map.charAt(bytes[i] & 0x3F)); + overflow = -1; + } + } + + // Encode overflow bits, if there are any + if (overflow != undefined && overflow != -1) + base64.push(base64map.charAt(overflow)); + + // Add padding + while (base64.length % 4 != 0) base64.push("="); + + return base64.join(""); + + }, + + // Convert a base-64 string to a byte array + base64ToBytes: function (base64) { + + // Use browser-native function if it exists + if (typeof atob == "function") return util.stringToBytes(atob(base64)); + + // Remove non-base-64 characters + base64 = base64.replace(/[^A-Z0-9+\/]/ig, ""); + + var bytes = []; + + for (var i = 0; i < base64.length; i++) { + switch (i % 4) { + case 1: + bytes.push((base64map.indexOf(base64.charAt(i - 1)) << 2) | + (base64map.indexOf(base64.charAt(i)) >>> 4)); + break; + case 2: + bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0xF) << 4) | + (base64map.indexOf(base64.charAt(i)) >>> 2)); + break; + case 3: + bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0x3) << 6) | + (base64map.indexOf(base64.charAt(i)))); + break; + } + } + + return bytes; + + } + +}; +// Crypto mode namespace +Crypto.mode = {}; + + + + +Crypto.HMAC = function (hasher, message, key, options) { + + // Allow arbitrary length keys + key = key.length > hasher._blocksize * 4 ? + hasher(key, { asBytes: true }) : + util.stringToBytes(key); + + // XOR keys with pad constants + var okey = key, + ikey = key.slice(0); + for (var i = 0; i < hasher._blocksize * 4; i++) { + okey[i] ^= 0x5C; + ikey[i] ^= 0x36; + } + + var hmacbytes = hasher(util.bytesToString(okey) + + hasher(util.bytesToString(ikey) + message, { asString: true }), + { asBytes: true }); + return options && options.asBytes ? hmacbytes : + options && options.asString ? util.bytesToString(hmacbytes) : + util.bytesToHex(hmacbytes); + +}; + + + + + + +// Public API +var SHA1 = Crypto.SHA1 = function (message, options) { + var digestbytes = util.wordsToBytes(SHA1._sha1(message)); + return options && options.asBytes ? digestbytes : + options && options.asString ? util.bytesToString(digestbytes) : + util.bytesToHex(digestbytes); +}; + +// The core +SHA1._sha1 = function (message) { + + var m = util.stringToWords(message), + l = message.length * 8, + w = [], + H0 = 1732584193, + H1 = -271733879, + H2 = -1732584194, + H3 = 271733878, + H4 = -1009589776; + + // Padding + m[l >> 5] |= 0x80 << (24 - l % 32); + m[((l + 64 >>> 9) << 4) + 15] = l; + + for (var i = 0; i < m.length; i += 16) { + + var a = H0, + b = H1, + c = H2, + d = H3, + e = H4; + + for (var j = 0; j < 80; j++) { + + if (j < 16) w[j] = m[i + j]; + else { + var n = w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16]; + w[j] = (n << 1) | (n >>> 31); + } + + var t = ((H0 << 5) | (H0 >>> 27)) + H4 + (w[j] >>> 0) + ( + j < 20 ? (H1 & H2 | ~H1 & H3) + 1518500249 : + j < 40 ? (H1 ^ H2 ^ H3) + 1859775393 : + j < 60 ? (H1 & H2 | H1 & H3 | H2 & H3) - 1894007588 : + (H1 ^ H2 ^ H3) - 899497514); + + H4 = H3; + H3 = H2; + H2 = (H1 << 30) | (H1 >>> 2); + H1 = H0; + H0 = t; + + } + + H0 += a; + H1 += b; + H2 += c; + H3 += d; + H4 += e; + + } + + return [H0, H1, H2, H3, H4]; + +}; + +// Package private blocksize +SHA1._blocksize = 16; + +module.exports = Crypto; \ No newline at end of file diff --git a/utils/lib/es6-promise.min.js b/utils/lib/es6-promise.min.js new file mode 100644 index 0000000..9280d0a --- /dev/null +++ b/utils/lib/es6-promise.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){return"function"==typeof t||"object"==typeof t&&null!==t}function e(t){return"function"==typeof t}function n(t){I=t}function r(t){J=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof H?function(){H(a)}:c()}function s(){var t=0,e=new V(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t{ + wx.showModal({ + title: params.title || '提示', + content: params.content || '', + showCancel: true, + cancelText: params.cancelText || '取消', + confirmText: params.confirmText || '确定', + success(res) { + resolve(res); + } + }); + }); + + }, + alert(params) { + if (!wx.showModal) return; + if (Object.prototype.toString.call(params) != '[object Object]') { + params = { content: params + '' }; + } + var defaultParams = { + textAlign: 'center', + title: params.title || '提示', + content: params.content || '', + showCancel: false, + success: params.success||function(){} + } + wx.showModal(defaultParams); + }, + location(url) { + console.log('location'); + if (!wx.navigateTo) return; + wx.navigateTo({ + url: url + }); + }, + locationReplace(url) { + if (wx.reLaunch) { + wx.reLaunch({ + url: url + }) + } else { + this.location(url); + } + }, + redirectTo(url){ + if ( wx.redirectTo ){ + wx.redirectTo({ + url: url + }) + } else { + this.location(url); + } + }, + /* + obj : 配置信息 + sync: 是否同步 + */ + setStorage(obj, sync) { + if (!wx.setStorageSync || !wx.setStorage) return; + if (sync) { + wx.setStorageSync(obj.key, obj.data); + } else { + wx.setStorage(obj); + } + }, + /* + key : key/配置信息 + sync: 是否同步 + */ + getStorage(key, sync) { + if (!wx.getStorageSync || !wx.getStorage) return; + if (sync) { + return wx.getStorageSync(key); + } else { + return wx.getStorage(key); + } + }, + /* + key : key/配置信息 + sync: 是否同步 + */ + removeStorage(obj, sync) { + if (!wx.removeStorageSync || !wx.removeStorage) return; + if (sync) { + return wx.removeStorageSync(obj.key); + } else { + return wx.removeStorage(obj); + } + }, + wxLogin() { + return new Promise((resolve, reject) => { + wx.login({ + success(dt) { + resolve(dt); + }, + fail(dt) { + resolve(dt); + }, + complete( res ){ + } + }); + }); + }, + getUserInfo(cb) { + var that = this; + if (!wx.getUserInfo) return; + wx.getUserInfo({ + success(res) { + //that.globalData.userInfo = res.userInfo; + //that.globalData.iv = res.iv; + //that.globalData.encryptedData = res.encryptedData; + typeof cb == "function" && cb(Object.assign({ iv: res.iv, encryptedData: res.encryptedData }, that.globalData.config)) + }, + fail(dt) { + typeof cb == "function" && cb({ statusCode: -404 }) + } + }) + }, + getSystemInfo() { + if (!wx.getSystemInfo) return; + return new Promise((resolve, reject) => { + if (!wx.getSystemInfo) { + reject(); + return; + } + wx.getSystemInfo({ + success(res) { + resolve(res); + }, + fail(res) { + reject(res); + } + }) + }) + }, + getWeRunData(){ + return new Promise(( resolve, reject)=>{ + if (!wx.getWeRunData){ + resolve({}) + return; + } + wx.getWeRunData({ + success( res ){ + resolve( res ); + }, + fail( res ){ + resolve( res ); + } + }); + }) + }, + chooseImage(count = 1) {//选择图片 + return new Promise((resolve, reject) => { + wx.chooseImage({ + count, + sizeType: ['original', 'compressed'], + sourceType: ['camera','album'], + success(res) { + resolve(res); + }, + fail(res) { + reject(res); + } + }) + }) + }, + getFileInfo(filePath){ + var ctx = this; + return new Promise((resolve, reject) => { + wx.getFileInfo({ + filePath, + complete( res ){ + res.errMsg == 'getFileInfo:ok' ? resolve(res) : reject(res); + } + }) + }) + }, + getNetworkType(){ + return new Promise((resolve, reject) => { + wx.getNetworkType({ + complete(res) { + resolve(res); + } + }) + }) + }, + downloadFile( url ){ + return new Promise((resolve, reject) => { + wx.downloadFile({ + url, + success(res) { + resolve(res); + }, + fail(res) { + reject(res); + } + }) + }) + }, + navigateBack(delta=1){ + if (wx.navigateBack){ + wx.navigateBack({ delta }); + } + }, + setKeepScreenOn(keepScreenOn=true){ + if (wx.setKeepScreenOn) { + wx.setKeepScreenOn({ + keepScreenOn + }) + } + }, + getSetting(){ + return new Promise((resolve, reject) => { + if(!wx.getSetting){ + setTimeout(function(){ + resolve({}) + },20); + return; + } + wx.getSetting({ + success(res) { + resolve(res.authSetting); + }, + fail(res) { + resolve({}); + } + }) + }) + }, + openSetting(){ + return new Promise((resolve,reject)=>{ + if (!wx.openSetting){ + setTimeout(function () { + resolve({ 'errorMsg':'wx.openSetting不支持'}) + }, 20); + return; + } + wx.openSetting({ + complete( res ){ + resolve( res ) + } + }) + }); + } + + +} \ No newline at end of file diff --git a/utils/parseArea/address-parse.js b/utils/parseArea/address-parse.js new file mode 100644 index 0000000..ba193e5 --- /dev/null +++ b/utils/parseArea/address-parse.js @@ -0,0 +1,419 @@ +const areaList = require('area-list.js'); +const zipCode = require('zipCode.js'); +const foramtProvince = require('foramtProvince.js'); + +let defaultData = []; + +const mCity = {}; + +const mArea = {}; + +/** + * 处理原始地址数据转换成专用数据 + * @param list 原始数据 + * @param init 是否初始化 如传空 已转换过不会再次转换 + * @returns {boolean} + */ +function parseArea(list, init) { + if (!init && defaultData.length) { + return true; + } + defaultData = list; + defaultData.forEach(province => { + if (province.city) { + province.city.forEach(city => { + if (city.name !== '其他') { + if (!mCity[city.name]) { + mCity[city.name] = []; + } + mCity[city.name].push({ + p: province.name, + c: city.name, + a: city.area || [] + }); + } + if (city.area) { + city.area.forEach(area => { + if (area !== '其他') { + if (!mArea[area]) { + mArea[area] = []; + } + mArea[area].push({ + p: province.name, + c: city.name + }) + } + }) + } + }) + } + }); +} +/** + * 解析邮编 + * @param + * @returns + */ +function zipCodeFormat() { + let list = [] + zipCode.forEach((el) => { + if (el.child) { + el.child.forEach((event) => { + if (event.child) { + event.child.forEach(element => { + list.push(element.zipcode) + }) + } + + }) + } + }) + return list; +} + +//专用数据处理 + +let zipCodeList = zipCodeFormat();//邮编 +parseArea(areaList);//地址 + +/** + * 解析 + * @param address 任意地址字符串 + * @returns {{name: string, mobile: string, detail: string, zip_code: string, phone: string}} + */ +function parse(address) { + address = address || ''; + const parse = { + name: '', + mobile: '', + detail: '', + zip_code: '', + phone: '' + }; + + + //去除空格... + address = address.replace(/\r\n/g, ' ').replace(/\n/g, ' ').replace(/\t/g, ' '); + address = address.replace(/\s+/g, ""); + //自定义去除关键字,可自行添加 + const search = ['地址', '收货地址', '收货人', '收件人', '收货', '邮编', '电话', '手机号码', '所在地区','姓名', ':', ':', ';', ';', ',', ',', '。']; + search.forEach(str => { + address = address.replace(new RegExp(str, 'g'), ' ') + }); + //多个空格replace为一个 + address = address.replace(/ {2,}/g, ' '); + //整理电话格式 + address = address.replace(/(\d{3})-(\d{4})-(\d{4})/g, '$1$2$3'); + + address = address.replace(/(\d{3}) (\d{4}) (\d{4})/g, '$1$2$3'); + + const mobileReg = /(86-[1][0-9]{10})|(86[1][0-9]{10})|([1][0-9]{10})/g; + const mobile = mobileReg.exec(address); + if (mobile) { + parse.mobile = mobile[0]; + address = address.replace(mobile[0], ' ') + } + //电话 + const phoneReg = /(([0-9]{3,4}-)[0-9]{7,8})|([0-9]{12})|([0-9]{11})|([0-9]{10})|([0-9]{9})|([0-9]{8})|([0-9]{7})/g; + const phone = phoneReg.exec(address); + if (phone) { + parse.phone = phone[0]; + address = address.replace(phone[0], ' ') + } + + //邮编(加入门牌号;考虑到重复邮编问题;去除之前简单的六位数字校验) + + for (let index = 0; index < zipCodeList.length; index++) { + if (address.indexOf(zipCodeList[index]) != -1) { + let num = address.indexOf(zipCodeList[index]); + let code = address.slice(num, num + 6); + parse.zip_code = code; + address = address.replace(code, '') + } + } + + + /* 废弃 + const zipReg = /([0-9]{6})/g; + const zip = zipReg.exec(address); + if (zip) { + parse.zip_code = zip[0]; + address = address.replace(zip[0], '') + } + */ + + address = address.replace(/ {2,}/, ' '); + + let detail = detail_parse_forward(address.trim()); + var ignoreArea = detail.province; + if (!detail.city) { + detail = detail_parse(address.trim()); + if (detail.area && !detail.city) { + detail = detail_parse(address.trim(), { + ignoreArea: true + }); + console.log('smart_parse->ignoreArea(忽略区)'); + } else { + // console.log('smart_parse'); + } + //这个待完善 + const list = address.replace(detail.province, '').replace(detail.city, '').replace(detail.area, '').split(' ').filter(str => str); + //详细住址划分关键字 + //注意:只需要填写关键字最后一位即可:比如单元填写元即可! + const address_detail_list = ['室', '楼', '元', '号', '幢', '门', '户']; + if (list.length > 1) { + list.forEach(str => { + if (!parse.name || str && str.length < parse.name.length) { + parse.name = str.trim() + } + }); + if (parse.name) { + detail.addr = detail.addr.replace(parse.name, '').trim() + } + } else {//若名字写在详细地址后面,根据address_detail_list进行分割; + let key = []; + address_detail_list.forEach((el) => { + key.push(detail.addr.indexOf(el)) + }) + var max = key.sort(function (a, b) { + return b - a; + })[0]; + if (detail.name) { + parse.name = detail.name + } + if (max != -1) { + let addrBuild = detail.addr.slice(0, max + 1); + let addrNum = detail.addr.replace(addrBuild, '').replace(/[^0-9]+/g, ''); + let userName = detail.addr.replace(addrBuild + addrNum, '') + detail.addr = addrBuild + addrNum + parse.name = userName + } + } + } else { + if (detail.name) { + parse.name = detail.name + } else { + const list = detail.addr.split(' ').filter(str => str); + if (list.length > 1) { + parse.name = list[list.length - 1] + } + if (parse.name) { + detail.addr = detail.addr.replace(parse.name, '').trim() + } + } + } + parse.province = detail.province == '' ? ignoreArea : detail.province; + parse.city = detail.city; + parse.area = detail.area; + parse.addr = detail.addr; + parse.result = detail.result; + //添加省以及市(2019.6.21)输出字段后填入省市等等 + foramtProvince.forEach(el => { + if (el.name.indexOf(parse.province) == 0) { + parse.province = el.name + } + }) + zipCode.forEach(provice => { + if (parse.province.indexOf(provice.name) == 0) { + provice.child.forEach(city => { + if (city.name.indexOf(parse.city) == 0) { + parse.city = city.name + } + }) + } + }) + + return parse; +} + +/** + * 正向解析模式 + * 从前到后按 province city addr 逐级筛选 + * 有city的值即可说明解析成功 + * 此模式对地址顺序有要求 + * @param address + * @returns {{province: string, city: string, area: string, addr: string}} + */ +function detail_parse_forward(address) { + const parse = { + province: '', + city: '', + area: '', + addr: '', + name: '', + }; + + const provinceKey = ['特别行政区', '古自治区', '维吾尔自治区', '壮族自治区', '回族自治区', '自治区', '省省直辖', '省', '市']; + const cityKey = ['布依族苗族自治州', '苗族侗族自治州', '自治州', '州', '市', '县']; + + for (let i in defaultData) { + const province = defaultData[i]; + let index = address.indexOf(province.name); + if (index > -1) { + if (index > 0) { + //省份不是在第一位,在省份之前的字段识别为名称 + parse.name = address.substr(0, index).trim(); + } + parse.province = province.name; + address = address.substr(index + province.name.length); + for (let k in provinceKey) { + if (address.indexOf(provinceKey[k]) === 0) { + address = address.substr(provinceKey[k].length); + } + } + for (let j in province.city) { + const city = province.city[j]; + index = address.indexOf(city.name); + if (index > -1 && index < 3) { + parse.city = city.name; + address = address.substr(index + parse.city.length); + for (let k in cityKey) { + if (address.indexOf(cityKey[k]) === 0) { + address = address.substr(cityKey[k].length); + } + } + if (city.area) { + for (let k in city.area) { + const area = city.area[k]; + index = address.indexOf(area); + if (index > -1 && index < 3) { + parse.area = area; + address = address.substr(index + parse.area.length); + break; + } + } + } + break; + } + } + parse.addr = address.trim(); + break; + } + } + return parse; +} + +/** + * 逆向解析 从后【县,区,旗】往前解析 + * 有地区就能大概返回地址了 + * @param address + * @param ignoreArea 是否忽视区 因为地址中含有区容易导致匹配错误 例:山东省蓬莱市黄海花园东区西门宝威学堂 曲荣声收15753572456 + * @returns {{province: string, city: string, area: string, name: string, _area: string, addr: string}} + */ +function detail_parse(address, { + ignoreArea = false +} = {}) { + const parse = { + province: '', + city: '', + area: '', + name: '', + _area: '', + addr: '', + }; + let areaIndex = -1, + cityIndex = -1; + + address = address.replace(' ', ' '); + + if (!ignoreArea && address.indexOf('县') > -1 || !ignoreArea && address.indexOf('区') > -1 || !ignoreArea && address.indexOf('旗') > -1) { + if (address.indexOf('旗') > -1) { + areaIndex = address.indexOf('旗'); + parse.area = address.substr(areaIndex - 1, 2); + } + if (address.indexOf('区') > -1) { + areaIndex = address.indexOf('区'); + if (address.lastIndexOf('市', areaIndex) > -1) { + cityIndex = address.lastIndexOf('市', areaIndex); + parse.area = address.substr(cityIndex + 1, areaIndex - cityIndex); + } else { + parse.area = address.substr(areaIndex - 2, 3); + } + } + if (address.indexOf('县') > -1) { + areaIndex = address.lastIndexOf('县'); + if (address.lastIndexOf('市', areaIndex) > -1) { + cityIndex = address.lastIndexOf('市', areaIndex); + parse.area = address.substr(cityIndex + 1, areaIndex - cityIndex); + } else { + parse.area = address.substr(areaIndex - 2, 3); + } + } + parse.addr = address.substr(areaIndex + 1); + + } else { + if (address.indexOf('市') > -1) { + areaIndex = address.indexOf('市'); + console.log(address.split(" ")) + if (address.split(" ")[0].indexOf("市") > -1) { + let areindex = address.split(" ")[0].indexOf("市") + parse.area = address.split(" ")[0].substr(0, areindex + 1); + parse.addr = address.split(" ")[0].substr(areindex + 1); + parse.name = address.split(" ")[1] + } else { + let areindex = address.split(" ")[1].indexOf("市") + parse.area = address.split(" ")[1].substr(0, areindex + 1); + parse.addr = address.split(" ")[1].substr(areindex + 1); + parse.name = address.split(" ")[0] + } + } else { + parse.addr = address + } + } + + if (address.indexOf('市') > -1 || address.indexOf('盟') > -1 || address.indexOf('州') > -1) { + if (address.indexOf('市') > -1) { + parse._area = address.substr(address.indexOf('市') - 2, 2); + } + if (address.indexOf('盟') > -1 && !mCity[parse._area]) { + parse._area = address.substr(address.indexOf('盟') - 2, 2); + } + if (address.indexOf('州') > -1 && !mCity[parse._area]) { + parse._area = address.substr(address.indexOf('州') - 2, 2); + } + } + + parse.area = parse.area.trim(); + if (parse.area && mArea[parse.area]) { + if (mArea[parse.area].length === 1) { + parse.province = mArea[parse.area][0].p; + parse.city = mArea[parse.area][0].c + } else { + parse._area = parse._area.trim(); + const addr = address.substr(0, areaIndex); + const d = mArea[parse.area].find(item => { + return item.p.indexOf(addr) > -1 || item.c === parse._area; + }); + if (d) { + parse.province = d.p; + parse.city = d.c + } else { + parse.result = mArea[parse.area]; + } + } + } else { + if (parse._area) { + const city = mCity[parse._area]; + if (city) { + parse.province = city[0].p; + parse.city = city[0].c; + parse.addr = address.substr(address.indexOf(parse.city) + parse.city.length + 1); + parse.area = ''; + for (let i in city[0].a) { + if (parse.addr.indexOf(city[0].a[i]) === 0) { + parse.area = city[0].a[i]; + parse.addr = parse.addr.replace(city[0].a[i], ''); + break; + } + } + } + } else { + parse.area = ''; + } + } + parse.addr = parse.addr.trim(); + return parse +} + +export {parseArea} +export {parse}; \ No newline at end of file diff --git a/utils/parseArea/area-list.js b/utils/parseArea/area-list.js new file mode 100644 index 0000000..f35e607 --- /dev/null +++ b/utils/parseArea/area-list.js @@ -0,0 +1,806 @@ +module.exports = [{ + "name": "北京", + "city": [{ + "name": "北京", + "area": ["东城区", "西城区", "崇文区", "宣武区", "朝阳区", "丰台区", "石景山区", "海淀区", "门头沟区", "房山区", "通州区", "顺义区", "昌平区", "大兴区", "平谷区", "怀柔区", "密云县", "延庆县"] + }], + "json": "beijing" +}, { + "name": "天津", + "city": [{ + "name": "天津", + "area": ["和平区", "河东区", "河西区", "南开区", "河北区", "红桥区", "塘沽区", "汉沽区", "大港区", "东丽区", "西青区", "津南区", "北辰区", "武清区", "宝坻区", "宁河县", "静海县", "蓟县"] + }], + "json": "tianjin" +}, { + "name": "河北", + "city": [{ + "name": "石家庄", + "area": ["长安区", "桥东区", "桥西区", "新华区", "郊区", "井陉矿区", "井陉县", "正定县", "栾城县", "行唐县", "灵寿县", "高邑县", "深泽县", "赞皇县", "无极县", "平山县", "元氏县", "赵县", "辛集市", "藁", "晋州市", "新乐市", "鹿泉市"] + }, { + "name": "唐山", + "area": ["路南区", "路北区", "古冶区", "开平区", "新区", "丰润县", "滦县", "滦南县", "乐亭县", "迁西县", "玉田县", "唐海县", "遵化市", "丰南市", "迁安市"] + }, {"name": "秦皇岛", "area": ["海港区", "山海关区", "北戴河区", "青龙满族自治县", "昌黎县", "抚宁县", "卢龙县"]}, { + "name": "邯郸", + "area": ["邯山区", "丛台区", "复兴区", "峰峰矿区", "邯郸县", "临漳县", "成安县", "大名县", "涉县", "磁县", "肥乡县", "永年县", "邱县", "鸡泽县", "广平县", "馆陶县", "魏县", "曲周县", "武安市"] + }, { + "name": "邢台", + "area": ["桥东区", "桥西区", "邢台县", "临城县", "内丘县", "柏乡县", "隆尧县", "任县", "南和县", "宁晋县", "巨鹿县", "新河县", "广宗县", "平乡县", "威县", "清河县", "临西县", "南宫市", "沙河市"] + }, { + "name": "保定", + "area": ["新市区", "北市区", "南市区", "满城县", "清苑县", "涞水县", "阜平县", "徐水县", "定兴县", "唐县", "高阳县", "容城县", "涞源县", "望都县", "安新县", "易县", "曲阳县", "蠡县", "顺平县", "博野", "雄县", "涿州市", "定州市", "安国市", "高碑店市"] + }, { + "name": "张家口", + "area": ["桥东区", "桥西区", "宣化区", "下花园区", "宣化县", "张北县", "康保县", "沽源县", "尚义县", "蔚县", "阳原县", "怀安县", "万全县", "怀来县", "涿鹿县", "赤城县", "崇礼县"] + }, { + "name": "承德", + "area": ["双桥区", "双滦区", "鹰手营子矿区", "承德县", "兴隆县", "平泉县", "滦平县", "隆化县", "丰宁满族自治县", "宽城满族自治县", "围场满族蒙古族自治县"] + }, { + "name": "沧州", + "area": ["新华区", "运河区", "沧县", "青县", "东光县", "海兴县", "盐山县", "肃宁县", "南皮县", "吴桥县", "献县", "孟村回族自治县", "泊头市", "任丘市", "黄骅市", "河间市"] + }, {"name": "廊坊", "area": ["安次区", "固安县", "永清县", "香河县", "大城县", "文安县", "大厂回族自治县", "霸州市", "三河市"]}, { + "name": "衡水", + "area": ["桃城区", "枣强县", "武邑县", "武强县", "饶阳县", "安平县", "故城县", "景县", "阜城县", "冀州市", "深州市"] + }], + "json": "hebei" +}, { + "name": "山西", + "city": [{ + "name": "太原", + "area": ["小店区", "迎泽区", "杏花岭区", "尖草坪区", "万柏林区", "晋源区", "清徐县", "阳曲县", "娄烦县", "古交市"] + }, {"name": "大同", "area": ["城区", "矿区", "南郊区", "新荣区", "阳高县", "天镇县", "广灵县", "灵丘县", "浑源县", "左云县", "大同县"]}, { + "name": "阳泉", + "area": ["城区", "矿区", "郊区", "平定县", "盂县"] + }, { + "name": "长治", + "area": ["城区", "郊区", "长治县", "襄垣县", "屯留县", "平顺县", "黎城县", "壶关县", "长子县", "武乡县", "沁县", "沁源县", "潞城市"] + }, {"name": "晋城", "area": ["城区", "沁水县", "阳城县", "陵川县", "泽州县", "高平市"]}, { + "name": "朔州", + "area": ["朔城区", "平鲁区", "山阴县", "应县", "右玉县", "怀仁市"] + }, { + "name": "忻州", + "area": ["忻府区", "原平市", "定襄县", "五台县", "代县", "繁峙县", "宁武县", "静乐县", "神池县", "五寨县", "岢岚县", "河曲县", "保德县", "偏关县"] + }, { + "name": "吕梁", + "area": ["离石区", "孝义市", "汾阳市", "文水县", "交城县", "兴县", "临县", "柳林县", "石楼县", "岚县", "方山县", "中阳县", "交口县"] + }, { + "name": "晋中", + "area": ["榆次市", "介休市", "榆社县", "左权县", "和顺县", "昔阳县", "寿阳县", "太谷县", "祁县", "平遥县", "灵石县"] + }, { + "name": "临汾", + "area": ["临汾市", "侯马市", "霍州市", "曲沃县", "翼城县", "襄汾县", "洪洞县", "古县", "安泽县", "浮山县", "吉县", "乡宁县", "蒲县", "大宁县", "永和县", "隰县", "汾西县"] + }, {"name": "运城", "area": ["运城市", "永济市", "河津市", "芮城县", "临猗县", "万荣县", "新绛县", "稷山县", "闻喜县", "夏县", "绛县", "平陆县", "垣曲县"]}], + "json": "shanxi" +}, { + "name": "内蒙古", + "city": [{ + "name": "鄂尔多斯", + "area": ["东胜区", "达拉特旗", "准格尔旗", "鄂托克前旗", "鄂托克旗", "杭锦旗", "乌审旗", "伊金霍洛旗"] + }, { + "name": "呼和浩特", + "area": ["新城区", "回民区", "玉泉区", "郊区", "土默特左旗", "托克托县", "和林格尔县", "清水河县", "武川县"] + }, {"name": "包头", "area": ["东河区", "昆都伦区", "青山区", "石拐矿区", "白云矿区", "郊区", "土默特右旗", "固阳县", "达尔罕茂明安联合旗"]}, { + "name": "乌海", + "area": ["海勃湾区", "海南区", "乌达区"] + }, { + "name": "赤峰", + "area": ["红山区", "元宝山区", "松山区", "阿鲁科尔沁旗", "巴林左旗", "巴林右旗", "林西县", "克什克腾旗", "翁牛特旗", "喀喇沁旗", "宁城县", "敖汉旗"] + }, { + "name": "呼伦贝尔", + "area": ["海拉尔市", "满洲里市", "扎兰屯市", "牙克石市", "根河市", "额尔古纳市", "阿荣旗", "莫力达瓦达斡尔族自治旗", "鄂伦春自治旗", "鄂温克族自治旗", "新巴尔虎右旗", "新巴尔虎左旗", "陈巴尔虎旗"] + }, {"name": "兴安盟", "area": ["乌兰浩特市", "阿尔山市", "科尔沁右翼前旗", "科尔沁右翼中旗", "扎赉特旗", "突泉县"]}, { + "name": "通辽", + "area": ["科尔沁区", "霍林郭勒市", "科尔沁左翼中旗", "科尔沁左翼后旗", "开鲁县", "库伦旗", "奈曼旗", "扎鲁特旗"] + }, { + "name": "锡林郭勒盟", + "area": ["二连浩特市", "锡林浩特市", "阿巴嘎旗", "苏尼特左旗", "苏尼特右旗", "东乌珠穆沁旗", "西乌珠穆沁旗", "太仆寺旗", "镶黄旗", "正镶白旗", "正蓝旗", "多伦县"] + }, { + "name": "乌兰察布盟", + "area": ["集宁市", "丰镇市", "卓资县", "化德县", "商都县", "兴和县", "凉城县", "察哈尔右翼前旗", "察哈尔右翼中旗", "察哈尔右翼后旗", "四子王旗"] + }, {"name": "伊克昭盟", "area": ["东胜市", "达拉特旗", "准格尔旗", "鄂托克前旗", "鄂托克旗", "杭锦旗", "乌审旗", "伊金霍洛旗"]}, { + "name": "巴彦淖尔盟", + "area": ["临河市", "五原县", "磴口县", "乌拉特前旗", "乌拉特中旗", "乌拉特后旗", "杭锦后旗"] + }, {"name": "阿拉善盟", "area": ["阿拉善左旗", "阿拉善右旗", "额济纳旗"]}], + "json": "neimenggu" +}, { + "name": "辽宁", + "city": [{ + "name": "沈阳", + "area": ["沈河区", "皇姑区", "和平区", "大东区", "铁西区", "苏家屯区", "东陵区", "于洪区", "新民市", "法库县", "辽中县", "康平县", "新城子区", "其他"] + }, { + "name": "大连", + "area": ["西岗区", "中山区", "沙河口区", "甘井子区", "旅顺口区", "金州区", "瓦房店市", "普兰店市", "庄河市", "长海县", "其他"] + }, {"name": "鞍山", "area": ["铁东区", "铁西区", "立山区", "千山区", "海城市", "台安县", "岫岩满族自治县", "其他"]}, { + "name": "抚顺", + "area": ["顺城区", "新抚区", "东洲区", "望花区", "抚顺县", "清原满族自治县", "新宾满族自治县", "其他"] + }, {"name": "本溪", "area": ["平山区", "明山区", "溪湖区", "南芬区", "本溪满族自治县", "桓仁满族自治县", "其他"]}, { + "name": "丹东", + "area": ["振兴区", "元宝区", "振安区", "东港市", "凤城市", "宽甸满族自治县", "其他"] + }, {"name": "锦州", "area": ["太和区", "古塔区", "凌河区", "凌海市", "黑山县", "义县", "北宁市", "其他"]}, { + "name": "营口", + "area": ["站前区", "西市区", "鲅鱼圈区", "老边区", "大石桥市", "盖州市", "其他"] + }, {"name": "阜新", "area": ["海州区", "新邱区", "太平区", "清河门区", "细河区", "彰武县", "阜新蒙古族自治县", "其他"]}, { + "name": "辽阳", + "area": ["白塔区", "文圣区", "宏伟区", "太子河区", "弓长岭区", "灯塔市", "辽阳县", "其他"] + }, {"name": "盘锦", "area": ["双台子区", "兴隆台区", "盘山县", "大洼县", "其他"]}, { + "name": "铁岭", + "area": ["银州区", "清河区", "调兵山市", "开原市", "铁岭县", "昌图县", "西丰县", "其他"] + }, {"name": "朝阳", "area": ["双塔区", "龙城区", "凌源市", "北票市", "朝阳县", "建平县", "喀喇沁左翼蒙古族自治县", "其他"]}, { + "name": "葫芦岛", + "area": ["龙港区", "南票区", "连山区", "兴城市", "绥中县", "建昌县", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "liaoning" +}, { + "name": "吉林", + "city": [{ + "name": "长春", + "area": ["朝阳区", "宽城区", "二道区", "南关区", "绿园区", "双阳区", "九台市", "榆树市", "德惠市", "农安县", "其他"] + }, {"name": "吉林", "area": ["船营区", "昌邑区", "龙潭区", "丰满区", "舒兰市", "桦甸市", "蛟河市", "磐石市", "永吉县", "其他"]}, { + "name": "四平", + "area": ["铁西区", "铁东区", "公主岭市", "双辽市", "梨树县", "伊通满族自治县", "其他"] + }, {"name": "辽源", "area": ["龙山区", "西安区", "东辽县", "东丰县", "其他"]}, { + "name": "通化", + "area": ["东昌区", "二道江区", "梅河口市", "集安市", "通化县", "辉南县", "柳河县", "其他"] + }, {"name": "白山", "area": ["八道江区", "江源区", "临江市", "靖宇县", "抚松县", "长白朝鲜族自治县", "其他"]}, { + "name": "松原", + "area": ["宁江区", "乾安县", "长岭县", "扶余县", "前郭尔罗斯蒙古族自治县", "其他"] + }, {"name": "白城", "area": ["洮北区", "大安市", "洮南市", "镇赉县", "通榆县", "其他"]}, { + "name": "延边朝鲜族自治州", + "area": ["延吉市", "图们市", "敦化市", "龙井市", "珲春市", "和龙市", "安图县", "汪清县", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "jilin" +}, { + "name": "黑龙江", + "city": [{ + "name": "哈尔滨", + "area": ["松北区", "道里区", "南岗区", "平房区", "香坊区", "道外区", "呼兰区", "阿城区", "双城市", "尚志市", "五常市", "宾县", "方正县", "通河县", "巴彦县", "延寿县", "木兰县", "依兰县", "其他"] + }, { + "name": "齐齐哈尔", + "area": ["龙沙区", "昂昂溪区", "铁锋区", "建华区", "富拉尔基区", "碾子山区", "梅里斯达斡尔族区", "讷河市", "富裕县", "拜泉县", "甘南县", "依安县", "克山县", "泰来县", "克东县", "龙江县", "其他"] + }, {"name": "鹤岗", "area": ["兴山区", "工农区", "南山区", "兴安区", "向阳区", "东山区", "萝北县", "绥滨县", "其他"]}, { + "name": "双鸭山", + "area": ["尖山区", "岭东区", "四方台区", "宝山区", "集贤县", "宝清县", "友谊县", "饶河县", "其他"] + }, {"name": "鸡西", "area": ["鸡冠区", "恒山区", "城子河区", "滴道区", "梨树区", "麻山区", "密山市", "虎林市", "鸡东县", "其他"]}, { + "name": "大庆", + "area": ["萨尔图区", "红岗区", "龙凤区", "让胡路区", "大同区", "林甸县", "肇州县", "肇源县", "杜尔伯特蒙古族自治县", "其他"] + }, { + "name": "伊春", + "area": ["伊春区", "带岭区", "南岔区", "金山屯区", "西林区", "美溪区", "乌马河区", "翠峦区", "友好区", "上甘岭区", "五营区", "红星区", "新青区", "汤旺河区", "乌伊岭区", "铁力市", "嘉荫县", "其他"] + }, { + "name": "牡丹江", + "area": ["爱民区", "东安区", "阳明区", "西安区", "绥芬河市", "宁安市", "海林市", "穆棱市", "林口县", "东宁县", "其他"] + }, { + "name": "佳木斯", + "area": ["向阳区", "前进区", "东风区", "郊区", "同江市", "富锦市", "桦川县", "抚远县", "桦南县", "汤原县", "其他"] + }, {"name": "七台河", "area": ["桃山区", "新兴区", "茄子河区", "勃利县", "其他"]}, { + "name": "黑河", + "area": ["爱辉区", "北安市", "五大连池市", "逊克县", "嫩江县", "孙吴县", "其他"] + }, { + "name": "绥化", + "area": ["北林区", "安达市", "肇东市", "海伦市", "绥棱县", "兰西县", "明水县", "青冈县", "庆安县", "望奎县", "其他"] + }, {"name": "大兴安岭地区", "area": ["呼玛县", "塔河县", "漠河县", "大兴安岭辖区", "其他"]}, {"name": "其他", "area": ["其他"]}], + "json": "heilongjiang" +}, { + "name": "上海", + "city": [{ + "name": "上海", + "area": ["黄浦区", "卢湾区", "徐汇区", "长宁区", "静安区", "普陀区", "闸北区", "虹口区", "杨浦区", "宝山区", "闵行区", "嘉定区", "松江区", "金山区", "青浦区", "南汇区", "奉贤区", "浦东新区", "崇明县", "其他"] + }], + "json": "shanghai" +}, { + "name": "江苏", + "city": [{ + "name": "南京", + "area": ["玄武区", "白下区", "秦淮区", "建邺区", "鼓楼区", "下关区", "栖霞区", "雨花台区", "浦口区", "江宁区", "六合区", "溧水县", "高淳县", "其他"] + }, { + "name": "苏州", + "area": ["金阊区", "平江区", "沧浪区", "虎丘区", "吴中区", "相城区", "常熟市", "张家港市", "昆山市", "吴江市", "太仓市", "其他"] + }, {"name": "无锡", "area": ["崇安区", "南长区", "北塘区", "滨湖区", "锡山区", "惠山区", "江阴市", "宜兴市", "其他"]}, { + "name": "常州", + "area": ["钟楼区", "天宁区", "戚墅堰区", "新北区", "武进区", "金坛市", "溧阳市", "其他"] + }, {"name": "镇江", "area": ["京口区", "润州区", "丹徒区", "丹阳市", "扬中市", "句容市", "其他"]}, { + "name": "南通", + "area": ["崇川区", "港闸区", "通州市", "如皋市", "海门市", "启东市", "海安县", "如东县", "其他"] + }, {"name": "泰州", "area": ["海陵区", "高港区", "姜堰市", "泰兴市", "靖江市", "兴化市", "其他"]}, { + "name": "扬州", + "area": ["广陵区", "维扬区", "邗江区", "江都市", "仪征市", "高邮市", "宝应县", "其他"] + }, {"name": "盐城", "area": ["亭湖区", "盐都区", "大丰市", "东台市", "建湖县", "射阳县", "阜宁县", "滨海县", "响水县", "其他"]}, { + "name": "连云港", + "area": ["新浦区", "海州区", "连云区", "东海县", "灌云县", "赣榆县", "灌南县", "其他"] + }, { + "name": "徐州", + "area": ["云龙区", "鼓楼区", "九里区", "泉山区", "贾汪区", "邳州市", "新沂市", "铜山县", "睢宁县", "沛县", "丰县", "其他"] + }, {"name": "淮安", "area": ["清河区", "清浦区", "楚州区", "淮阴区", "涟水县", "洪泽县", "金湖县", "盱眙县", "其他"]}, { + "name": "宿迁", + "area": ["宿城区", "宿豫区", "沭阳县", "泗阳县", "泗洪县", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "jiangsu" +}, { + "name": "浙江", + "city": [{ + "name": "杭州", + "area": ["拱墅区", "西湖区", "上城区", "下城区", "江干区", "滨江区", "余杭区", "萧山区", "建德市", "富阳市", "临安市", "桐庐县", "淳安县", "其他"] + }, { + "name": "宁波", + "area": ["海曙区", "江东区", "江北区", "镇海区", "北仑区", "鄞州区", "余姚市", "慈溪市", "奉化市", "宁海县", "象山县", "其他"] + }, { + "name": "温州", + "area": ["鹿城区", "龙湾区", "瓯海区", "瑞安市", "乐清市", "永嘉县", "洞头县", "平阳县", "苍南县", "文成县", "泰顺县", "其他"] + }, {"name": "嘉兴", "area": ["秀城区", "秀洲区", "海宁市", "平湖市", "桐乡市", "嘉善县", "海盐县", "其他"]}, { + "name": "湖州", + "area": ["吴兴区", "南浔区", "长兴县", "德清县", "安吉县", "其他"] + }, {"name": "绍兴", "area": ["越城区", "诸暨市", "上虞市", "嵊州市", "绍兴县", "新昌县", "其他"]}, { + "name": "金华", + "area": ["婺城区", "金东区", "兰溪市", "义乌市", "东阳市", "永康市", "武义县", "浦江县", "磐安县", "其他"] + }, {"name": "衢州", "area": ["柯城区", "衢江区", "江山市", "龙游县", "常山县", "开化县", "其他"]}, { + "name": "舟山", + "area": ["定海区", "普陀区", "岱山县", "嵊泗县", "其他"] + }, {"name": "台州", "area": ["椒江区", "黄岩区", "路桥区", "临海市", "温岭市", "玉环县", "天台县", "仙居县", "三门县", "其他"]}, { + "name": "丽水", + "area": ["莲都区", "龙泉市", "缙云县", "青田县", "云和县", "遂昌县", "松阳县", "庆元县", "景宁畲族自治县", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "zhejiang" +}, { + "name": "安徽", + "city": [{"name": "合肥", "area": ["庐阳区", "瑶海区", "蜀山区", "包河区", "长丰县", "肥东县", "肥西县", "其他"]}, { + "name": "芜湖", + "area": ["镜湖区", "弋江区", "鸠江区", "三山区", "芜湖县", "南陵县", "繁昌县", "其他"] + }, {"name": "蚌埠", "area": ["蚌山区", "龙子湖区", "禹会区", "淮上区", "怀远县", "固镇县", "五河县", "其他"]}, { + "name": "淮南", + "area": ["田家庵区", "大通区", "谢家集区", "八公山区", "潘集区", "凤台县", "其他"] + }, {"name": "马鞍山", "area": ["雨山区", "花山区", "金家庄区", "当涂县", "其他"]}, { + "name": "淮北", + "area": ["相山区", "杜集区", "烈山区", "濉溪县", "其他"] + }, {"name": "铜陵", "area": ["铜官山区", "狮子山区", "郊区", "铜陵县", "其他"]}, { + "name": "安庆", + "area": ["迎江区", "大观区", "宜秀区", "桐城市", "宿松县", "枞阳县", "太湖县", "怀宁县", "岳西县", "望江县", "潜山县", "其他"] + }, {"name": "黄山", "area": ["屯溪区", "黄山区", "徽州区", "休宁县", "歙县", "祁门县", "黟县", "其他"]}, { + "name": "滁州", + "area": ["琅琊区", "南谯区", "天长市", "明光市", "全椒县", "来安县", "定远县", "凤阳县", "其他"] + }, {"name": "阜阳", "area": ["颍州区", "颍东区", "颍泉区", "界首市", "临泉县", "颍上县", "阜南县", "太和县", "其他"]}, { + "name": "宿州", + "area": ["埇桥区", "萧县", "泗县", "砀山县", "灵璧县", "其他"] + }, {"name": "巢湖", "area": ["居巢区", "含山县", "无为县", "庐江县", "和县", "其他"]}, { + "name": "六安", + "area": ["金安区", "裕安区", "寿县", "霍山县", "霍邱县", "舒城县", "金寨县", "其他"] + }, {"name": "亳州", "area": ["谯城区", "利辛县", "涡阳县", "蒙城县", "其他"]}, { + "name": "池州", + "area": ["贵池区", "东至县", "石台县", "青阳县", "其他"] + }, {"name": "宣城", "area": ["宣州区", "宁国市", "广德县", "郎溪县", "泾县", "旌德县", "绩溪县", "其他"]}, {"name": "其他", "area": ["其他"]}], + "json": "anhui" +}, { + "name": "福建", + "city": [{ + "name": "福州", + "area": ["鼓楼区", "台江区", "仓山区", "马尾区", "晋安区", "福清市", "长乐市", "闽侯县", "闽清县", "永泰县", "连江县", "罗源县", "平潭县", "其他"] + }, {"name": "厦门", "area": ["思明区", "海沧区", "湖里区", "集美区", "同安区", "翔安区", "其他"]}, { + "name": "莆田", + "area": ["城厢区", "涵江区", "荔城区", "秀屿区", "仙游县", "其他"] + }, { + "name": "三明", + "area": ["梅列区", "三元区", "永安市", "明溪县", "将乐县", "大田县", "宁化县", "建宁县", "沙县", "尤溪县", "清流县", "泰宁县", "其他"] + }, { + "name": "泉州", + "area": ["鲤城区", "丰泽区", "洛江区", "泉港区", "石狮市", "晋江市", "南安市", "惠安县", "永春县", "安溪县", "德化县", "金门县", "其他"] + }, { + "name": "漳州", + "area": ["芗城区", "龙文区", "龙海市", "平和县", "南靖县", "诏安县", "漳浦县", "华安县", "东山县", "长泰县", "云霄县", "其他"] + }, { + "name": "南平", + "area": ["延平区", "建瓯市", "邵武市", "武夷山市", "建阳市", "松溪县", "光泽县", "顺昌县", "浦城县", "政和县", "其他"] + }, {"name": "龙岩", "area": ["新罗区", "漳平市", "长汀县", "武平县", "上杭县", "永定县", "连城县", "其他"]}, { + "name": "宁德", + "area": ["蕉城区", "福安市", "福鼎市", "寿宁县", "霞浦县", "柘荣县", "屏南县", "古田县", "周宁县", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "fujian" +}, { + "name": "江西", + "city": [{ + "name": "南昌", + "area": ["东湖区", "西湖区", "青云谱区", "湾里区", "青山湖区", "新建县", "南昌县", "进贤县", "安义县", "其他"] + }, {"name": "景德镇", "area": ["珠山区", "昌江区", "乐平市", "浮梁县", "其他"]}, { + "name": "萍乡", + "area": ["安源区", "湘东区", "莲花县", "上栗县", "芦溪县", "其他"] + }, { + "name": "九江", + "area": ["浔阳区", "庐山区", "瑞昌市", "九江县", "星子县", "武宁县", "彭泽县", "永修县", "修水县", "湖口县", "德安县", "都昌县", "其他"] + }, {"name": "新余", "area": ["渝水区", "分宜县", "其他"]}, {"name": "鹰潭", "area": ["月湖区", "贵溪市", "余江县", "其他"]}, { + "name": "赣州", + "area": ["章贡区", "瑞金市", "南康市", "石城县", "安远县", "赣县", "宁都县", "寻乌县", "兴国县", "定南县", "上犹县", "于都县", "龙南县", "崇义县", "信丰县", "全南县", "大余县", "会昌县", "其他"] + }, { + "name": "吉安", + "area": ["吉州区", "青原区", "井冈山市", "吉安县", "永丰县", "永新县", "新干县", "泰和县", "峡江县", "遂川县", "安福县", "吉水县", "万安县", "其他"] + }, { + "name": "宜春", + "area": ["袁州区", "丰城市", "樟树市", "高安市", "铜鼓县", "靖安县", "宜丰县", "奉新县", "万载县", "上高县", "其他"] + }, { + "name": "抚州", + "area": ["临川区", "南丰县", "乐安县", "金溪县", "南城县", "东乡县", "资溪县", "宜黄县", "广昌县", "黎川县", "崇仁县", "其他"] + }, { + "name": "上饶", + "area": ["信州区", "德兴市", "上饶县", "广丰县", "鄱阳县", "婺源县", "铅山县", "余干县", "横峰县", "弋阳县", "玉山县", "万年县", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "jiangxi" +}, { + "name": "山东", + "city": [{ + "name": "济南", + "area": ["市中区", "历下区", "天桥区", "槐荫区", "历城区", "长清区", "章丘市", "平阴县", "济阳县", "商河县", "其他"] + }, { + "name": "青岛", + "area": ["市南区", "市北区", "城阳区", "四方区", "李沧区", "黄岛区", "崂山区", "胶南市", "胶州市", "平度市", "莱西市", "即墨市", "其他"] + }, {"name": "淄博", "area": ["张店区", "临淄区", "淄川区", "博山区", "周村区", "桓台县", "高青县", "沂源县", "其他"]}, { + "name": "枣庄", + "area": ["市中区", "山亭区", "峄城区", "台儿庄区", "薛城区", "滕州市", "其他"] + }, {"name": "东营", "area": ["东营区", "河口区", "垦利县", "广饶县", "利津县", "其他"]}, { + "name": "烟台", + "area": ["芝罘区", "福山区", "牟平区", "莱山区", "龙口市", "莱阳市", "莱州市", "招远市", "蓬莱市", "栖霞市", "海阳市", "长岛县", "其他"] + }, { + "name": "潍坊", + "area": ["潍城区", "寒亭区", "坊子区", "奎文区", "青州市", "诸城市", "寿光市", "安丘市", "高密市", "昌邑市", "昌乐县", "临朐县", "其他"] + }, { + "name": "济宁", + "area": ["市中区", "任城区", "曲阜市", "兖州市", "邹城市", "鱼台县", "金乡县", "嘉祥县", "微山县", "汶上县", "泗水县", "梁山县", "其他"] + }, {"name": "泰安", "area": ["泰山区", "岱岳区", "新泰市", "肥城市", "宁阳县", "东平县", "其他"]}, { + "name": "威海", + "area": ["环翠区", "乳山市", "文登市", "荣成市", "其他"] + }, {"name": "日照", "area": ["东港区", "岚山区", "五莲县", "莒县", "其他"]}, { + "name": "莱芜", + "area": ["莱城区", "钢城区", "其他"] + }, { + "name": "临沂", + "area": ["兰山区", "罗庄区", "河东区", "沂南县", "郯城县", "沂水县", "苍山县", "费县", "平邑县", "莒南县", "蒙阴县", "临沭县", "其他"] + }, { + "name": "德州", + "area": ["德城区", "乐陵市", "禹城市", "陵县", "宁津县", "齐河县", "武城县", "庆云县", "平原县", "夏津县", "临邑县", "其他"] + }, {"name": "聊城", "area": ["东昌府区", "临清市", "高唐县", "阳谷县", "茌平县", "莘县", "东阿县", "冠县", "其他"]}, { + "name": "滨州", + "area": ["滨城区", "邹平县", "沾化县", "惠民县", "博兴县", "阳信县", "无棣县", "其他"] + }, {"name": "菏泽", "area": ["牡丹区", "鄄城县", "单县", "郓城县", "曹县", "定陶县", "巨野县", "东明县", "成武县", "其他"]}, { + "name": "其他", + "area": ["其他"] + }], + "json": "shandong" +}, { + "name": "河南", + "city": [{ + "name": "郑州", + "area": ["中原区", "金水区", "二七区", "管城回族区", "上街区", "惠济区", "巩义市", "新郑市", "新密市", "登封市", "荥阳市", "中牟县", "其他"] + }, { + "name": "开封", + "area": ["鼓楼区", "龙亭区", "顺河回族区", "禹王台区", "金明区", "开封县", "尉氏县", "兰考县", "杞县", "通许县", "其他"] + }, { + "name": "洛阳", + "area": ["西工区", "老城区", "涧西区", "瀍河回族区", "洛龙区", "吉利区", "偃师市", "孟津县", "汝阳县", "伊川县", "洛宁县", "嵩县", "宜阳县", "新安县", "栾川县", "其他"] + }, {"name": "平顶山", "area": ["新华区", "卫东区", "湛河区", "石龙区", "汝州市", "舞钢市", "宝丰县", "叶县", "郏县", "鲁山县", "其他"]}, { + "name": "安阳", + "area": ["北关区", "文峰区", "殷都区", "龙安区", "林州市", "安阳县", "滑县", "内黄县", "汤阴县", "其他"] + }, {"name": "鹤壁", "area": ["淇滨区", "山城区", "鹤山区", "浚县", "淇县", "其他"]}, { + "name": "新乡", + "area": ["卫滨区", "红旗区", "凤泉区", "牧野区", "卫辉市", "辉县市", "新乡县", "获嘉县", "原阳县", "长垣县", "封丘县", "延津县", "其他"] + }, {"name": "焦作", "area": ["解放区", "中站区", "马村区", "山阳区", "沁阳市", "孟州市", "修武县", "温县", "武陟县", "博爱县", "其他"]}, { + "name": "濮阳", + "area": ["华龙区", "濮阳县", "南乐县", "台前县", "清丰县", "范县", "其他"] + }, {"name": "许昌", "area": ["魏都区", "禹州市", "长葛市", "许昌县", "鄢陵县", "襄城县", "其他"]}, { + "name": "漯河", + "area": ["源汇区", "郾城区", "召陵区", "临颍县", "舞阳县", "其他"] + }, {"name": "三门峡", "area": ["湖滨区", "义马市", "灵宝市", "渑池县", "卢氏县", "陕县", "其他"]}, { + "name": "南阳", + "area": ["卧龙区", "宛城区", "邓州市", "桐柏县", "方城县", "淅川县", "镇平县", "唐河县", "南召县", "内乡县", "新野县", "社旗县", "西峡县", "其他"] + }, {"name": "商丘", "area": ["梁园区", "睢阳区", "永城市", "宁陵县", "虞城县", "民权县", "夏邑县", "柘城县", "睢县", "其他"]}, { + "name": "信阳", + "area": ["浉河区", "平桥区", "潢川县", "淮滨县", "息县", "新县", "商城县", "固始县", "罗山县", "光山县", "其他"] + }, { + "name": "周口", + "area": ["川汇区", "项城市", "商水县", "淮阳县", "太康县", "鹿邑县", "西华县", "扶沟县", "沈丘县", "郸城县", "其他"] + }, { + "name": "驻马店", + "area": ["驿城区", "确山县", "新蔡县", "上蔡县", "西平县", "泌阳县", "平舆县", "汝南县", "遂平县", "正阳县", "其他"] + }, {"name": "焦作", "area": ["济源市", "其他"]}, {"name": "其他", "area": ["其他"]}], + "json": "henan" +}, { + "name": "湖北", + "city": [{ + "name": "武汉", + "area": ["江岸区", "武昌区", "江汉区", "硚口区", "汉阳区", "青山区", "洪山区", "东西湖区", "汉南区", "蔡甸区", "江夏区", "黄陂区", "新洲区", "其他"] + }, {"name": "黄石", "area": ["黄石港区", "西塞山区", "下陆区", "铁山区", "大冶市", "阳新县", "其他"]}, { + "name": "十堰", + "area": ["张湾区", "茅箭区", "丹江口市", "郧县", "竹山县", "房县", "郧西县", "竹溪县", "其他"] + }, {"name": "荆州", "area": ["沙市区", "荆州区", "洪湖市", "石首市", "松滋市", "监利县", "公安县", "江陵县", "其他"]}, { + "name": "宜昌", + "area": ["西陵区", "伍家岗区", "点军区", "猇亭区", "夷陵区", "宜都市", "当阳市", "枝江市", "秭归县", "远安县", "兴山县", "五峰土家族自治县", "长阳土家族自治县", "其他"] + }, {"name": "襄樊", "area": ["襄城区", "樊城区", "襄阳区", "老河口市", "枣阳市", "宜城市", "南漳县", "谷城县", "保康县", "其他"]}, { + "name": "鄂州", + "area": ["鄂城区", "华容区", "梁子湖区", "其他"] + }, {"name": "荆门", "area": ["东宝区", "掇刀区", "钟祥市", "京山县", "沙洋县", "其他"]}, { + "name": "孝感", + "area": ["孝南区", "应城市", "安陆市", "汉川市", "云梦县", "大悟县", "孝昌县", "其他"] + }, { + "name": "黄冈", + "area": ["黄州区", "麻城市", "武穴市", "红安县", "罗田县", "浠水县", "蕲春县", "黄梅县", "英山县", "团风县", "其他"] + }, {"name": "咸宁", "area": ["咸安区", "赤壁市", "嘉鱼县", "通山县", "崇阳县", "通城县", "其他"]}, { + "name": "随州", + "area": ["曾都区", "广水市", "其他"] + }, {"name": "恩施土家族苗族自治州", "area": ["恩施市", "利川市", "建始县", "来凤县", "巴东县", "鹤峰县", "宣恩县", "咸丰县", "其他"]}, { + "name": "仙桃", + "area": ["仙桃"] + }, {"name": "天门", "area": ["天门"]}, {"name": "潜江", "area": ["潜江"]}, { + "name": "神农架林区", + "area": ["神农架林区"] + }, {"name": "其他", "area": ["其他"]}], + "json": "hubei" +}, { + "name": "湖南", + "city": [{"name": "长沙", "area": ["岳麓区", "芙蓉区", "天心区", "开福区", "雨花区", "浏阳市", "长沙县", "望城县", "宁乡县", "其他"]}, { + "name": "株洲", + "area": ["天元区", "荷塘区", "芦淞区", "石峰区", "醴陵市", "株洲县", "炎陵县", "茶陵县", "攸县", "其他"] + }, {"name": "湘潭", "area": ["岳塘区", "雨湖区", "湘乡市", "韶山市", "湘潭县", "其他"]}, { + "name": "衡阳", + "area": ["雁峰区", "珠晖区", "石鼓区", "蒸湘区", "南岳区", "耒阳市", "常宁市", "衡阳县", "衡东县", "衡山县", "衡南县", "祁东县", "其他"] + }, { + "name": "邵阳", + "area": ["双清区", "大祥区", "北塔区", "武冈市", "邵东县", "洞口县", "新邵县", "绥宁县", "新宁县", "邵阳县", "隆回县", "城步苗族自治县", "其他"] + }, {"name": "岳阳", "area": ["岳阳楼区", "云溪区", "君山区", "临湘市", "汨罗市", "岳阳县", "湘阴县", "平江县", "华容县", "其他"]}, { + "name": "常德", + "area": ["武陵区", "鼎城区", "津市市", "澧县", "临澧县", "桃源县", "汉寿县", "安乡县", "石门县", "其他"] + }, {"name": "张家界", "area": ["永定区", "武陵源区", "慈利县", "桑植县", "其他"]}, { + "name": "益阳", + "area": ["赫山区", "资阳区", "沅江市", "桃江县", "南县", "安化县", "其他"] + }, { + "name": "郴州", + "area": ["北湖区", "苏仙区", "资兴市", "宜章县", "汝城县", "安仁县", "嘉禾县", "临武县", "桂东县", "永兴县", "桂阳县", "其他"] + }, { + "name": "永州", + "area": ["冷水滩区", "零陵区", "祁阳县", "蓝山县", "宁远县", "新田县", "东安县", "江永县", "道县", "双牌县", "江华瑶族自治县", "其他"] + }, { + "name": "怀化", + "area": ["鹤城区", "洪江市", "会同县", "沅陵县", "辰溪县", "溆浦县", "中方县", "新晃侗族自治县", "芷江侗族自治县", "通道侗族自治县", "靖州苗族侗族自治县", "麻阳苗族自治县", "其他"] + }, {"name": "娄底", "area": ["娄星区", "冷水江市", "涟源市", "新化县", "双峰县", "其他"]}, { + "name": "湘西土家族苗族自治州", + "area": ["吉首市", "古丈县", "龙山县", "永顺县", "凤凰县", "泸溪县", "保靖县", "花垣县", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "hunan" +}, { + "name": "广东", + "city": [{ + "name": "广州", + "area": ["越秀区", "荔湾区", "海珠区", "天河区", "白云区", "黄埔区", "番禺区", "花都区", "南沙区", "萝岗区", "增城市", "从化市", "其他"] + }, {"name": "深圳", "area": ["福田区", "罗湖区", "南山区", "宝安区", "龙岗区", "盐田区", "其他"]}, { + "name": "东莞", + "area": ["莞城", "常平", "塘厦", "其他"] + }, {"name": "中山", "area": ["中山"]}, {"name": "潮州", "area": ["湘桥区", "潮安县", "饶平县", "其他"]}, { + "name": "揭阳", + "area": ["榕城区", "揭东县", "揭西县", "惠来县", "普宁市", "其他"] + }, {"name": "云浮", "area": ["云城区", "新兴县", "郁南县", "云安县", "罗定市", "其他"]}, { + "name": "珠海", + "area": ["香洲区", "斗门区", "金湾区", "其他"] + }, {"name": "汕头", "area": ["金平区", "濠江区", "龙湖区", "潮阳区", "潮南区", "澄海区", "南澳县", "其他"]}, { + "name": "韶关", + "area": ["浈江区", "武江区", "曲江区", "乐昌市", "南雄市", "始兴县", "仁化县", "翁源县", "新丰县", "乳源瑶族自治县", "其他"] + }, {"name": "佛山", "area": ["禅城区", "南海区", "顺德区", "三水区", "高明区", "其他"]}, { + "name": "江门", + "area": ["蓬江区", "江海区", "新会区", "恩平市", "台山市", "开平市", "鹤山市", "其他"] + }, {"name": "湛江", "area": ["赤坎区", "霞山区", "坡头区", "麻章区", "吴川市", "廉江市", "雷州市", "遂溪县", "徐闻县", "其他"]}, { + "name": "茂名", + "area": ["茂南区", "茂港区", "化州市", "信宜市", "高州市", "电白县", "其他"] + }, {"name": "肇庆", "area": ["端州区", "鼎湖区", "高要市", "四会市", "广宁县", "怀集县", "封开县", "德庆县", "其他"]}, { + "name": "惠州", + "area": ["惠城区", "惠阳区", "博罗县", "惠东县", "龙门县", "其他"] + }, {"name": "梅州", "area": ["梅江区", "兴宁市", "梅县", "大埔县", "丰顺县", "五华县", "平远县", "蕉岭县", "其他"]}, { + "name": "汕尾", + "area": ["城区", "陆丰市", "海丰县", "陆河县", "其他"] + }, {"name": "河源", "area": ["源城区", "紫金县", "龙川县", "连平县", "和平县", "东源县", "其他"]}, { + "name": "阳江", + "area": ["江城区", "阳春市", "阳西县", "阳东县", "其他"] + }, {"name": "清远", "area": ["清城区", "英德市", "连州市", "佛冈县", "阳山县", "清新县", "连山壮族瑶族自治县", "连南瑶族自治县", "其他"]}], + "json": "guangdong" +}, { + "name": "广西", + "city": [{ + "name": "南宁", + "area": ["青秀区", "兴宁区", "西乡塘区", "良庆区", "江南区", "邕宁区", "武鸣县", "隆安县", "马山县", "上林县", "宾阳县", "横县", "其他"] + }, { + "name": "柳州", + "area": ["城中区", "鱼峰区", "柳北区", "柳南区", "柳江县", "柳城县", "鹿寨县", "融安县", "融水苗族自治县", "三江侗族自治县", "其他"] + }, { + "name": "桂林", + "area": ["象山区", "秀峰区", "叠彩区", "七星区", "雁山区", "阳朔县", "临桂县", "灵川县", "全州县", "平乐县", "兴安县", "灌阳县", "荔浦县", "资源县", "永福县", "龙胜各族自治县", "恭城瑶族自治县", "其他"] + }, {"name": "梧州", "area": ["万秀区", "蝶山区", "长洲区", "岑溪市", "苍梧县", "藤县", "蒙山县", "其他"]}, { + "name": "北海", + "area": ["海城区", "银海区", "铁山港区", "合浦县", "其他"] + }, {"name": "防城港", "area": ["港口区", "防城区", "东兴市", "上思县", "其他"]}, { + "name": "钦州", + "area": ["钦南区", "钦北区", "灵山县", "浦北县", "其他"] + }, {"name": "贵港", "area": ["港北区", "港南区", "覃塘区", "桂平市", "平南县", "其他"]}, { + "name": "玉林", + "area": ["玉州区", "北流市", "容县", "陆川县", "博白县", "兴业县", "其他"] + }, { + "name": "百色", + "area": ["右江区", "凌云县", "平果县", "西林县", "乐业县", "德保县", "田林县", "田阳县", "靖西县", "田东县", "那坡县", "隆林各族自治县", "其他"] + }, {"name": "贺州", "area": ["八步区", "钟山县", "昭平县", "富川瑶族自治县", "其他"]}, { + "name": "河池", + "area": ["金城江区", "宜州市", "天峨县", "凤山县", "南丹县", "东兰县", "都安瑶族自治县", "罗城仫佬族自治县", "巴马瑶族自治县", "环江毛南族自治县", "大化瑶族自治县", "其他"] + }, {"name": "来宾", "area": ["兴宾区", "合山市", "象州县", "武宣县", "忻城县", "金秀瑶族自治县", "其他"]}, { + "name": "崇左", + "area": ["江州区", "凭祥市", "宁明县", "扶绥县", "龙州县", "大新县", "天等县", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "guangxi" +}, { + "name": "海南", + "city": [{"name": "海口", "area": ["龙华区", "秀英区", "琼山区", "美兰区", "其他"]}, { + "name": "三亚", + "area": ["三亚市", "其他"] + }, {"name": "五指山", "area": ["五指山"]}, {"name": "琼海", "area": ["琼海"]}, {"name": "儋州", "area": ["儋州"]}, { + "name": "文昌", + "area": ["文昌"] + }, {"name": "万宁", "area": ["万宁"]}, {"name": "东方", "area": ["东方"]}, {"name": "澄迈县", "area": ["澄迈县"]}, { + "name": "定安县", + "area": ["定安县"] + }, {"name": "屯昌县", "area": ["屯昌县"]}, {"name": "临高县", "area": ["临高县"]}, { + "name": "白沙黎族自治县", + "area": ["白沙黎族自治县"] + }, {"name": "昌江黎族自治县", "area": ["昌江黎族自治县"]}, {"name": "乐东黎族自治县", "area": ["乐东黎族自治县"]}, { + "name": "陵水黎族自治县", + "area": ["陵水黎族自治县"] + }, {"name": "保亭黎族苗族自治县", "area": ["保亭黎族苗族自治县"]}, {"name": "琼中黎族苗族自治县", "area": ["琼中黎族苗族自治县"]}, { + "name": "其他", + "area": ["其他"] + }], + "json": "hainan" +}, { + "name": "重庆", + "city": [{ + "name": "重庆", + "area": ["渝中区", "大渡口区", "江北区", "南岸区", "北碚区", "渝北区", "巴南区", "长寿区", "双桥区", "沙坪坝区", "万盛区", "万州区", "涪陵区", "黔江区", "永川区", "合川区", "江津区", "九龙坡区", "南川区", "綦江县", "潼南县", "荣昌县", "璧山县", "大足县", "铜梁县", "梁平县", "开县", "忠县", "城口县", "垫江县", "武隆县", "丰都县", "奉节县", "云阳县", "巫溪县", "巫山县", "石柱土家族自治县", "秀山土家族苗族自治县", "酉阳土家族苗族自治县", "彭水苗族土家族自治县", "其他"] + }], + "json": "chongqing" +}, { + "name": "四川", + "city": [{ + "name": "成都", + "area": ["青羊区", "锦江区", "金牛区", "武侯区", "成华区", "龙泉驿区", "青白江区", "新都区", "温江区", "都江堰市", "彭州市", "邛崃市", "崇州市", "金堂县", "郫县", "新津县", "双流县", "蒲江县", "大邑县", "其他"] + }, {"name": "自贡", "area": ["大安区", "自流井区", "贡井区", "沿滩区", "荣县", "富顺县", "其他"]}, { + "name": "攀枝花", + "area": ["仁和区", "米易县", "盐边县", "东区", "西区", "其他"] + }, {"name": "泸州", "area": ["江阳区", "纳溪区", "龙马潭区", "泸县", "合江县", "叙永县", "古蔺县", "其他"]}, { + "name": "德阳", + "area": ["旌阳区", "广汉市", "什邡市", "绵竹市", "罗江县", "中江县", "其他"] + }, {"name": "绵阳", "area": ["涪城区", "游仙区", "江油市", "盐亭县", "三台县", "平武县", "安县", "梓潼县", "北川羌族自治县", "其他"]}, { + "name": "广元", + "area": ["元坝区", "朝天区", "青川县", "旺苍县", "剑阁县", "苍溪县", "市中区", "其他"] + }, {"name": "遂宁", "area": ["船山区", "安居区", "射洪县", "蓬溪县", "大英县", "其他"]}, { + "name": "内江", + "area": ["市中区", "东兴区", "资中县", "隆昌县", "威远县", "其他"] + }, { + "name": "乐山", + "area": ["市中区", "五通桥区", "沙湾区", "金口河区", "峨眉山市", "夹江县", "井研县", "犍为县", "沐川县", "马边彝族自治县", "峨边彝族自治县", "其他"] + }, {"name": "南充", "area": ["顺庆区", "高坪区", "嘉陵区", "阆中市", "营山县", "蓬安县", "仪陇县", "南部县", "西充县", "其他"]}, { + "name": "眉山", + "area": ["东坡区", "仁寿县", "彭山县", "洪雅县", "丹棱县", "青神县", "其他"] + }, {"name": "宜宾", "area": ["翠屏区", "宜宾县", "兴文县", "南溪县", "珙县", "长宁县", "高县", "江安县", "筠连县", "屏山县", "其他"]}, { + "name": "广安", + "area": ["广安区", "华蓥市", "岳池县", "邻水县", "武胜县", "其他"] + }, {"name": "达州", "area": ["通川区", "万源市", "达县", "渠县", "宣汉县", "开江县", "大竹县", "其他"]}, { + "name": "雅安", + "area": ["雨城区", "芦山县", "石棉县", "名山县", "天全县", "荥经县", "宝兴县", "汉源县", "其他"] + }, {"name": "巴中", "area": ["巴州区", "南江县", "平昌县", "通江县", "其他"]}, { + "name": "资阳", + "area": ["雁江区", "简阳市", "安岳县", "乐至县", "其他"] + }, { + "name": "阿坝藏族羌族自治州", + "area": ["马尔康县", "九寨沟县", "红原县", "汶川县", "阿坝县", "理县", "若尔盖县", "小金县", "黑水县", "金川县", "松潘县", "壤塘县", "茂县", "其他"] + }, { + "name": "甘孜藏族自治州", + "area": ["康定县", "丹巴县", "炉霍县", "九龙县", "甘孜县", "雅江县", "新龙县", "道孚县", "白玉县", "理塘县", "德格县", "乡城县", "石渠县", "稻城县", "色达县", "巴塘县", "泸定县", "得荣县", "其他"] + }, { + "name": "凉山彝族自治州", + "area": ["西昌市", "美姑县", "昭觉县", "金阳县", "甘洛县", "布拖县", "雷波县", "普格县", "宁南县", "喜德县", "会东县", "越西县", "会理县", "盐源县", "德昌县", "冕宁县", "木里藏族自治县", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "sichuan" +}, { + "name": "贵州", + "city": [{ + "name": "贵阳", + "area": ["南明区", "云岩区", "花溪区", "乌当区", "白云区", "小河区", "清镇市", "开阳县", "修文县", "息烽县", "其他"] + }, {"name": "六盘水", "area": ["钟山区", "水城县", "盘县", "六枝特区", "其他"]}, { + "name": "遵义", + "area": ["红花岗区", "汇川区", "赤水市", "仁怀市", "遵义县", "绥阳县", "桐梓县", "习水县", "凤冈县", "正安县", "余庆县", "湄潭县", "道真仡佬族苗族自治县", "务川仡佬族苗族自治县", "其他"] + }, {"name": "安顺", "area": ["西秀区", "普定县", "平坝县", "镇宁布依族苗族自治县", "紫云苗族布依族自治县", "关岭布依族苗族自治县", "其他"]}, { + "name": "铜仁地区", + "area": ["铜仁市", "德江县", "江口县", "思南县", "石阡县", "玉屏侗族自治县", "松桃苗族自治县", "印江土家族苗族自治县", "沿河土家族自治县", "万山特区", "其他"] + }, { + "name": "毕节地区", + "area": ["毕节市", "黔西县", "大方县", "织金县", "金沙县", "赫章县", "纳雍县", "威宁彝族回族苗族自治县", "其他"] + }, { + "name": "黔西南布依族苗族自治州", + "area": ["兴义市", "望谟县", "兴仁县", "普安县", "册亨县", "晴隆县", "贞丰县", "安龙县", "其他"] + }, { + "name": "黔东南苗族侗族自治州", + "area": ["凯里市", "施秉县", "从江县", "锦屏县", "镇远县", "麻江县", "台江县", "天柱县", "黄平县", "榕江县", "剑河县", "三穗县", "雷山县", "黎平县", "岑巩县", "丹寨县", "其他"] + }, { + "name": "黔南布依族苗族自治州", + "area": ["都匀市", "福泉市", "贵定县", "惠水县", "罗甸县", "瓮安县", "荔波县", "龙里县", "平塘县", "长顺县", "独山县", "三都水族自治县", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "guizhou" +}, { + "name": "云南", + "city": [{ + "name": "昆明", + "area": ["盘龙区", "五华区", "官渡区", "西山区", "东川区", "安宁市", "呈贡县", "晋宁县", "富民县", "宜良县", "嵩明县", "石林彝族自治县", "禄劝彝族苗族自治县", "寻甸回族彝族自治县", "其他"] + }, {"name": "曲靖", "area": ["麒麟区", "宣威市", "马龙县", "沾益县", "富源县", "罗平县", "师宗县", "陆良县", "会泽县", "其他"]}, { + "name": "玉溪", + "area": ["红塔区", "江川县", "澄江县", "通海县", "华宁县", "易门县", "峨山彝族自治县", "新平彝族傣族自治县", "元江哈尼族彝族傣族自治县", "其他"] + }, {"name": "保山", "area": ["隆阳区", "施甸县", "腾冲县", "龙陵县", "昌宁县", "其他"]}, { + "name": "昭通", + "area": ["昭阳区", "鲁甸县", "巧家县", "盐津县", "大关县", "永善县", "绥江县", "镇雄县", "彝良县", "威信县", "水富县", "其他"] + }, {"name": "丽江", "area": ["古城区", "永胜县", "华坪县", "玉龙纳西族自治县", "宁蒗彝族自治县", "其他"]}, { + "name": "普洱", + "area": ["思茅区", "普洱哈尼族彝族自治县", "墨江哈尼族自治县", "景东彝族自治县", "景谷傣族彝族自治县", "镇沅彝族哈尼族拉祜族自治县", "江城哈尼族彝族自治县", "孟连傣族拉祜族佤族自治县", "澜沧拉祜族自治县", "西盟佤族自治县", "其他"] + }, { + "name": "临沧", + "area": ["临翔区", "凤庆县", "云县", "永德县", "镇康县", "双江拉祜族佤族布朗族傣族自治县", "耿马傣族佤族自治县", "沧源佤族自治县", "其他"] + }, {"name": "德宏傣族景颇族自治州", "area": ["潞西市", "瑞丽市", "梁河县", "盈江县", "陇川县", "其他"]}, { + "name": "怒江傈僳族自治州", + "area": ["泸水县", "福贡县", "贡山独龙族怒族自治县", "兰坪白族普米族自治县", "其他"] + }, {"name": "迪庆藏族自治州", "area": ["香格里拉县", "德钦县", "维西傈僳族自治县", "其他"]}, { + "name": "大理白族自治州", + "area": ["大理市", "祥云县", "宾川县", "弥渡县", "永平县", "云龙县", "洱源县", "剑川县", "鹤庆县", "漾濞彝族自治县", "南涧彝族自治县", "巍山彝族回族自治县", "其他"] + }, { + "name": "楚雄彝族自治州", + "area": ["楚雄市", "双柏县", "牟定县", "南华县", "姚安县", "大姚县", "永仁县", "元谋县", "武定县", "禄丰县", "其他"] + }, { + "name": "红河哈尼族彝族自治州", + "area": ["蒙自县", "个旧市", "开远市", "绿春县", "建水县", "石屏县", "弥勒县", "泸西县", "元阳县", "红河县", "金平苗族瑶族傣族自治县", "河口瑶族自治县", "屏边苗族自治县", "其他"] + }, { + "name": "文山壮族苗族自治州", + "area": ["文山县", "砚山县", "西畴县", "麻栗坡县", "马关县", "丘北县", "广南县", "富宁县", "其他"] + }, {"name": "西双版纳傣族自治州", "area": ["景洪市", "勐海县", "勐腊县", "其他"]}, {"name": "其他", "area": ["其他"]}], + "json": "yunnan" +}, { + "name": "西藏", + "city": [{"name": "拉萨", "area": ["城关区", "林周县", "当雄县", "尼木县", "曲水县", "堆龙德庆县", "达孜县", "墨竹工卡县", "其他"]}, { + "name": "那曲地区", + "area": ["那曲县", "嘉黎县", "比如县", "聂荣县", "安多县", "申扎县", "索县", "班戈县", "巴青县", "尼玛县", "其他"] + }, { + "name": "昌都地区", + "area": ["昌都县", "江达县", "贡觉县", "类乌齐县", "丁青县", "察雅县", "八宿县", "左贡县", "芒康县", "洛隆县", "边坝县", "其他"] + }, {"name": "林芝地区", "area": ["林芝县", "工布江达县", "米林县", "墨脱县", "波密县", "察隅县", "朗县", "其他"]}, { + "name": "山南地区", + "area": ["乃东县", "扎囊县", "贡嘎县", "桑日县", "琼结县", "曲松县", "措美县", "洛扎县", "加查县", "隆子县", "错那县", "浪卡子县", "其他"] + }, { + "name": "日喀则地区", + "area": ["日喀则市", "南木林县", "江孜县", "定日县", "萨迦县", "拉孜县", "昂仁县", "谢通门县", "白朗县", "仁布县", "康马县", "定结县", "仲巴县", "亚东县", "吉隆县", "聂拉木县", "萨嘎县", "岗巴县", "其他"] + }, {"name": "阿里地区", "area": ["噶尔县", "普兰县", "札达县", "日土县", "革吉县", "改则县", "措勤县", "其他"]}, {"name": "其他", "area": ["其他"]}], + "json": "xizang" +}, { + "name": "陕西", + "city": [{ + "name": "西安", + "area": ["莲湖区", "新城区", "碑林区", "雁塔区", "灞桥区", "未央区", "阎良区", "临潼区", "长安区", "高陵县", "蓝田县", "户县", "周至县", "其他"] + }, {"name": "铜川", "area": ["耀州区", "王益区", "印台区", "宜君县", "其他"]}, { + "name": "宝鸡", + "area": ["渭滨区", "金台区", "陈仓区", "岐山县", "凤翔县", "陇县", "太白县", "麟游县", "扶风县", "千阳县", "眉县", "凤县", "其他"] + }, { + "name": "咸阳", + "area": ["秦都区", "渭城区", "杨陵区", "兴平市", "礼泉县", "泾阳县", "永寿县", "三原县", "彬县", "旬邑县", "长武县", "乾县", "武功县", "淳化县", "其他"] + }, { + "name": "渭南", + "area": ["临渭区", "韩城市", "华阴市", "蒲城县", "潼关县", "白水县", "澄城县", "华县", "合阳县", "富平县", "大荔县", "其他"] + }, { + "name": "延安", + "area": ["宝塔区", "安塞县", "洛川县", "子长县", "黄陵县", "延川县", "富县", "延长县", "甘泉县", "宜川县", "志丹县", "黄龙县", "吴起县", "其他"] + }, { + "name": "汉中", + "area": ["汉台区", "留坝县", "镇巴县", "城固县", "南郑县", "洋县", "宁强县", "佛坪县", "勉县", "西乡县", "略阳县", "其他"] + }, { + "name": "榆林", + "area": ["榆阳区", "清涧县", "绥德县", "神木县", "佳县", "府谷县", "子洲县", "靖边县", "横山县", "米脂县", "吴堡县", "定边县", "其他"] + }, { + "name": "安康", + "area": ["汉滨区", "紫阳县", "岚皋县", "旬阳县", "镇坪县", "平利县", "石泉县", "宁陕县", "白河县", "汉阴县", "其他"] + }, {"name": "商洛", "area": ["商州区", "镇安县", "山阳县", "洛南县", "商南县", "丹凤县", "柞水县", "其他"]}, {"name": "其他", "area": ["其他"]}], + "json": "shanxi1" +}, { + "name": "甘肃", + "city": [{"name": "兰州", "area": ["城关区", "七里河区", "西固区", "安宁区", "红古区", "永登县", "皋兰县", "榆中县", "其他"]}, { + "name": "嘉峪关", + "area": ["嘉峪关市", "其他"] + }, {"name": "金昌", "area": ["金川区", "永昌县", "其他"]}, { + "name": "白银", + "area": ["白银区", "平川区", "靖远县", "会宁县", "景泰县", "其他"] + }, {"name": "天水", "area": ["清水县", "秦安县", "甘谷县", "武山县", "张家川回族自治县", "北道区", "秦城区", "其他"]}, { + "name": "武威", + "area": ["凉州区", "民勤县", "古浪县", "天祝藏族自治县", "其他"] + }, {"name": "酒泉", "area": ["肃州区", "玉门市", "敦煌市", "金塔县", "肃北蒙古族自治县", "阿克塞哈萨克族自治县", "安西县", "其他"]}, { + "name": "张掖", + "area": ["甘州区", "民乐县", "临泽县", "高台县", "山丹县", "肃南裕固族自治县", "其他"] + }, {"name": "庆阳", "area": ["西峰区", "庆城县", "环县", "华池县", "合水县", "正宁县", "宁县", "镇原县", "其他"]}, { + "name": "平凉", + "area": ["崆峒区", "泾川县", "灵台县", "崇信县", "华亭县", "庄浪县", "静宁县", "其他"] + }, {"name": "定西", "area": ["安定区", "通渭县", "临洮县", "漳县", "岷县", "渭源县", "陇西县", "其他"]}, { + "name": "陇南", + "area": ["武都区", "成县", "宕昌县", "康县", "文县", "西和县", "礼县", "两当县", "徽县", "其他"] + }, { + "name": "临夏回族自治州", + "area": ["临夏市", "临夏县", "康乐县", "永靖县", "广河县", "和政县", "东乡族自治县", "积石山保安族东乡族撒拉族自治县", "其他"] + }, {"name": "甘南藏族自治州", "area": ["合作市", "临潭县", "卓尼县", "舟曲县", "迭部县", "玛曲县", "碌曲县", "夏河县", "其他"]}, { + "name": "其他", + "area": ["其他"] + }], + "json": "gansu" +}, { + "name": "青海", + "city": [{"name": "西宁", "area": ["城中区", "城东区", "城西区", "城北区", "湟源县", "湟中县", "大通回族土族自治县", "其他"]}, { + "name": "海东地区", + "area": ["平安县", "乐都县", "民和回族土族自治县", "互助土族自治县", "化隆回族自治县", "循化撒拉族自治县", "其他"] + }, {"name": "海北藏族自治州", "area": ["海晏县", "祁连县", "刚察县", "门源回族自治县", "其他"]}, { + "name": "海南藏族自治州", + "area": ["共和县", "同德县", "贵德县", "兴海县", "贵南县", "其他"] + }, {"name": "黄南藏族自治州", "area": ["同仁县", "尖扎县", "泽库县", "河南蒙古族自治县", "其他"]}, { + "name": "果洛藏族自治州", + "area": ["玛沁县", "班玛县", "甘德县", "达日县", "久治县", "玛多县", "其他"] + }, {"name": "玉树藏族自治州", "area": ["玉树县", "杂多县", "称多县", "治多县", "囊谦县", "曲麻莱县", "其他"]}, { + "name": "海西蒙古族藏族自治州", + "area": ["德令哈市", "格尔木市", "乌兰县", "都兰县", "天峻县", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "qinghai" +}, { + "name": "宁夏", + "city": [{"name": "银川", "area": ["兴庆区", "西夏区", "金凤区", "灵武市", "永宁县", "贺兰县", "其他"]}, { + "name": "石嘴山", + "area": ["大武口区", "惠农区", "平罗县", "其他"] + }, {"name": "吴忠", "area": ["利通区", "青铜峡市", "盐池县", "同心县", "其他"]}, { + "name": "固原", + "area": ["原州区", "西吉县", "隆德县", "泾源县", "彭阳县", "其他"] + }, {"name": "中卫", "area": ["沙坡头区", "中宁县", "海原县", "其他"]}, {"name": "其他", "area": ["其他"]}], + "json": "ningxia" +}, { + "name": "新疆", + "city": [{ + "name": "乌鲁木齐", + "area": ["天山区", "沙依巴克区", "新市区", "水磨沟区", "头屯河区", "达坂城区", "东山区", "乌鲁木齐县", "其他"] + }, {"name": "克拉玛依", "area": ["克拉玛依区", "独山子区", "白碱滩区", "乌尔禾区", "其他"]}, { + "name": "吐鲁番地区", + "area": ["吐鲁番市", "托克逊县", "鄯善县", "其他"] + }, {"name": "哈密地区", "area": ["哈密市", "伊吾县", "巴里坤哈萨克自治县", "其他"]}, { + "name": "和田地区", + "area": ["和田市", "和田县", "洛浦县", "民丰县", "皮山县", "策勒县", "于田县", "墨玉县", "其他"] + }, { + "name": "阿克苏地区", + "area": ["阿克苏市", "温宿县", "沙雅县", "拜城县", "阿瓦提县", "库车县", "柯坪县", "新和县", "乌什县", "其他"] + }, { + "name": "喀什地区", + "area": ["喀什市", "巴楚县", "泽普县", "伽师县", "叶城县", "岳普湖县", "疏勒县", "麦盖提县", "英吉沙县", "莎车县", "疏附县", "塔什库尔干塔吉克自治县", "其他"] + }, {"name": "克孜勒苏柯尔克孜自治州", "area": ["阿图什市", "阿合奇县", "乌恰县", "阿克陶县", "其他"]}, { + "name": "巴音郭楞蒙古自治州", + "area": ["库尔勒市", "和静县", "尉犁县", "和硕县", "且末县", "博湖县", "轮台县", "若羌县", "焉耆回族自治县", "其他"] + }, { + "name": "昌吉回族自治州", + "area": ["昌吉市", "阜康市", "奇台县", "玛纳斯县", "吉木萨尔县", "呼图壁县", "木垒哈萨克自治县", "米泉市", "其他"] + }, {"name": "博尔塔拉蒙古自治州", "area": ["博乐市", "精河县", "温泉县", "其他"]}, {"name": "石河子", "area": ["石河子"]}, { + "name": "阿拉尔", + "area": ["阿拉尔"] + }, {"name": "图木舒克", "area": ["图木舒克"]}, {"name": "五家渠", "area": ["五家渠"]}, { + "name": "伊犁哈萨克自治州", + "area": ["伊宁市", "奎屯市", "伊宁县", "特克斯县", "尼勒克县", "昭苏县", "新源县", "霍城县", "巩留县", "察布查尔锡伯自治县", "塔城地区", "阿勒泰地区", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "xinjiang" +}, { + "name": "台湾", + "city": [{ + "name": "台湾", + "area": ["台北市", "高雄市", "台北县", "桃园县", "新竹县", "苗栗县", "台中县", "彰化县", "南投县", "云林县", "嘉义县", "台南县", "高雄县", "屏东县", "宜兰县", "花莲县", "台东县", "澎湖县", "基隆市", "新竹市", "台中市", "嘉义市", "台南市", "其他"] + }, {"name": "其他", "area": ["其他"]}], + "json": "taiwan" +}, { + "name": "澳门", + "city": [{"name": "澳门", "area": ["花地玛堂区", "圣安多尼堂区", "大堂区", "望德堂区", "风顺堂区", "嘉模堂区", "圣方济各堂区", "路凼", "其他"]}], + "json": "aomen" +}, { + "name": "香港", + "city": [{ + "name": "香港", + "area": ["中西区", "湾仔区", "东区", "南区", "深水埗区", "油尖旺区", "九龙城区", "黄大仙区", "观塘区", "北区", "大埔区", "沙田区", "西贡区", "元朗区", "屯门区", "荃湾区", "葵青区", "离岛区", "其他"] + }], + "json": "xianggang" + }] diff --git a/utils/parseArea/foramtProvince.js b/utils/parseArea/foramtProvince.js new file mode 100644 index 0000000..d057e3c --- /dev/null +++ b/utils/parseArea/foramtProvince.js @@ -0,0 +1,94 @@ +module.exports = [{ + "name": "北京市", + "id": "110000000000" + }, { + "name": "天津市", + "id": "120000000000" + }, { + "name": "河北省", + "id": "130000000000" + }, { + "name": "山西省", + "id": "140000000000" + }, { + "name": "内蒙古自治区", + "id": "150000000000" + }, { + "name": "辽宁省", + "id": "210000000000" + }, { + "name": "吉林省", + "id": "220000000000" + }, { + "name": "黑龙江省", + "id": "230000000000" + }, { + "name": "上海市", + "id": "310000000000" + }, { + "name": "江苏省", + "id": "320000000000" + }, { + "name": "浙江省", + "id": "330000000000" + }, { + "name": "安徽省", + "id": "340000000000" + }, { + "name": "福建省", + "id": "350000000000" + }, { + "name": "江西省", + "id": "360000000000" + }, { + "name": "山东省", + "id": "370000000000" + }, { + "name": "河南省", + "id": "410000000000" + }, { + "name": "湖北省", + "id": "420000000000" + }, { + "name": "湖南省", + "id": "430000000000" + }, { + "name": "广东省", + "id": "440000000000" + }, { + "name": "广西壮族自治区", + "id": "450000000000" + }, { + "name": "海南省", + "id": "460000000000" + }, { + "name": "重庆市", + "id": "500000000000" + }, { + "name": "四川省", + "id": "510000000000" + }, { + "name": "贵州省", + "id": "520000000000" + }, { + "name": "云南省", + "id": "530000000000" + }, { + "name": "西藏自治区", + "id": "540000000000" + }, { + "name": "陕西省", + "id": "610000000000" + }, { + "name": "甘肃省", + "id": "620000000000" + }, { + "name": "青海省", + "id": "630000000000" + }, { + "name": "宁夏回族自治区", + "id": "640000000000" + }, { + "name": "新疆维吾尔自治区", + "id": "650000000000" + }] \ No newline at end of file diff --git a/utils/parseArea/zipCode.js b/utils/parseArea/zipCode.js new file mode 100644 index 0000000..eeeeaca --- /dev/null +++ b/utils/parseArea/zipCode.js @@ -0,0 +1,13477 @@ +module.exports = [{ + "id": 2, + "name": "北京", + "child": [{ + "id": 36, + "name": "北京市", + "child": [{ + "id": 377, + "name": "东城区", + "zipcode": "100011" + }, { + "id": 378, + "name": "西城区", + "zipcode": "100032" + }, { + "id": 379, + "name": "崇文区", + "zipcode": "100061" + }, { + "id": 380, + "name": "宣武区", + "zipcode": "100054" + }, { + "id": 381, + "name": "朝阳区", + "zipcode": "100020" + }, { + "id": 382, + "name": "丰台区", + "zipcode": "100071" + }, { + "id": 383, + "name": "石景山区", + "zipcode": "100043" + }, { + "id": 384, + "name": "海淀区", + "zipcode": "100089" + }, { + "id": 385, + "name": "门头沟区", + "zipcode": "102300" + }, { + "id": 386, + "name": "房山区", + "zipcode": "102488" + }, { + "id": 387, + "name": "通州区", + "zipcode": "101100" + }, { + "id": 388, + "name": "顺义区", + "zipcode": "101300" + }, { + "id": 389, + "name": "昌平区", + "zipcode": "102200" + }, { + "id": 390, + "name": "大兴区", + "zipcode": "102600" + }, { + "id": 391, + "name": "怀柔区", + "zipcode": "101400" + }, { + "id": 392, + "name": "平谷区", + "zipcode": "101200" + }, { + "id": 393, + "name": "密云县", + "zipcode": "101500" + }, { + "id": 394, + "name": "延庆县", + "zipcode": "102100" + }] + }] +}, { + "id": 3, + "name": "天津", + "child": [{ + "id": 37, + "name": "天津市", + "child": [{ + "id": 395, + "name": "和平区", + "zipcode": "300041" + }, { + "id": 396, + "name": "河东区", + "zipcode": "300171" + }, { + "id": 397, + "name": "河西区", + "zipcode": "300202" + }, { + "id": 398, + "name": "南开区", + "zipcode": "300100" + }, { + "id": 399, + "name": "河北区", + "zipcode": "300143" + }, { + "id": 400, + "name": "红桥区", + "zipcode": "300131" + }, { + "id": 401, + "name": "塘沽区", + "zipcode": "300450" + }, { + "id": 402, + "name": "汉沽区", + "zipcode": "300480" + }, { + "id": 403, + "name": "大港区", + "zipcode": "300270" + }, { + "id": 404, + "name": "东丽区", + "zipcode": "300300" + }, { + "id": 405, + "name": "西青区", + "zipcode": "300380" + }, { + "id": 406, + "name": "津南区", + "zipcode": "300350" + }, { + "id": 407, + "name": "北辰区", + "zipcode": "300400" + }, { + "id": 408, + "name": "武清区", + "zipcode": "301700" + }, { + "id": 409, + "name": "宝坻区", + "zipcode": "301800" + }, { + "id": 410, + "name": "宁河县", + "zipcode": "301500" + }, { + "id": 411, + "name": "静海县", + "zipcode": "301600" + }, { + "id": 412, + "name": "蓟县", + "zipcode": "301900" + }, { + "id": 413, + "name": "保税区", + "zipcode": "300308" + }, { + "id": 414, + "name": "经济技术开发区", + "zipcode": "300457" + }, { + "id": 415, + "name": "高新区", + "zipcode": "300384" + }, { + "id": 416, + "name": "滨海新区", + "zipcode": "300457" + }] + }] +}, { + "id": 4, + "name": "河北", + "child": [{ + "id": 38, + "name": "石家庄市", + "child": [{ + "id": 417, + "name": "长安区", + "zipcode": "050011" + }, { + "id": 418, + "name": "桥东区", + "zipcode": "050011" + }, { + "id": 419, + "name": "桥西区", + "zipcode": "050051" + }, { + "id": 420, + "name": "新华区", + "zipcode": "050051" + }, { + "id": 421, + "name": "井陉矿区", + "zipcode": "050100" + }, { + "id": 422, + "name": "裕华区", + "zipcode": "050081" + }, { + "id": 423, + "name": "井陉县", + "zipcode": "050300" + }, { + "id": 424, + "name": "正定县", + "zipcode": "050800" + }, { + "id": 425, + "name": "栾城县", + "zipcode": "051430" + }, { + "id": 426, + "name": "行唐县", + "zipcode": "050600" + }, { + "id": 427, + "name": "灵寿县", + "zipcode": "050500" + }, { + "id": 428, + "name": "高邑县", + "zipcode": "051330" + }, { + "id": 429, + "name": "深泽县", + "zipcode": "052560" + }, { + "id": 430, + "name": "赞皇县", + "zipcode": "051230" + }, { + "id": 431, + "name": "无极县", + "zipcode": "052400" + }, { + "id": 432, + "name": "平山县", + "zipcode": "050400" + }, { + "id": 433, + "name": "元氏县", + "zipcode": "051130" + }, { + "id": 434, + "name": "赵县", + "zipcode": "051530" + }, { + "id": 435, + "name": "辛集市", + "zipcode": "052300" + }, { + "id": 436, + "name": "藁城市", + "zipcode": "052160" + }, { + "id": 437, + "name": "晋州市", + "zipcode": "052200" + }, { + "id": 438, + "name": "新乐市", + "zipcode": "050700" + }, { + "id": 439, + "name": "鹿泉市", + "zipcode": "050200" + }, { + "id": 440, + "name": "高新技术开发区", + "zipcode": "050035" + }] + }, { + "id": 39, + "name": "唐山市", + "child": [{ + "id": 441, + "name": "路南区", + "zipcode": "063017" + }, { + "id": 442, + "name": "路北区", + "zipcode": "063015" + }, { + "id": 443, + "name": "古冶区", + "zipcode": "063104" + }, { + "id": 444, + "name": "开平区", + "zipcode": "063021" + }, { + "id": 445, + "name": "丰南区", + "zipcode": "063300" + }, { + "id": 446, + "name": "丰润区", + "zipcode": "064000" + }, { + "id": 447, + "name": "滦县", + "zipcode": "063700" + }, { + "id": 448, + "name": "滦南县", + "zipcode": "063500" + }, { + "id": 449, + "name": "乐亭县", + "zipcode": "063600" + }, { + "id": 450, + "name": "迁西县", + "zipcode": "064300" + }, { + "id": 451, + "name": "玉田县", + "zipcode": "064100" + }, { + "id": 452, + "name": "唐海县", + "zipcode": "063200" + }, { + "id": 453, + "name": "遵化市", + "zipcode": "064200" + }, { + "id": 454, + "name": "迁安市", + "zipcode": "064400" + }, { + "id": 455, + "name": "高新区", + "zipcode": "063020" + }, { + "id": 456, + "name": "汉沽管理区", + "zipcode": "301501" + }, { + "id": 457, + "name": "海港开发区", + "zipcode": "063600" + }, { + "id": 458, + "name": "芦台开发区", + "zipcode": "301501" + }, { + "id": 459, + "name": "南堡开发区", + "zipcode": "063305" + }, { + "id": 460, + "name": "曹妃甸工业区", + "zipcode": "063200" + }] + }, { + "id": 40, + "name": "秦皇岛市", + "child": [{ + "id": 461, + "name": "海港区", + "zipcode": "066000" + }, { + "id": 462, + "name": "山海关区", + "zipcode": "066200" + }, { + "id": 463, + "name": "北戴河区", + "zipcode": "066100" + }, { + "id": 464, + "name": "青龙满族自治县", + "zipcode": "066500" + }, { + "id": 465, + "name": "昌黎县", + "zipcode": "066600" + }, { + "id": 466, + "name": "抚宁县", + "zipcode": "066300" + }, { + "id": 467, + "name": "卢龙县", + "zipcode": "066400" + }, { + "id": 468, + "name": "经济技术开发区", + "zipcode": "066004" + }] + }, { + "id": 41, + "name": "邯郸市", + "child": [{ + "id": 469, + "name": "邯山区", + "zipcode": "056001" + }, { + "id": 470, + "name": "丛台区", + "zipcode": "056004" + }, { + "id": 471, + "name": "复兴区", + "zipcode": "056003" + }, { + "id": 472, + "name": "峰峰矿区", + "zipcode": "056200" + }, { + "id": 473, + "name": "邯郸县", + "zipcode": "056100" + }, { + "id": 474, + "name": "临漳县", + "zipcode": "056600" + }, { + "id": 475, + "name": "成安县", + "zipcode": "056700" + }, { + "id": 476, + "name": "大名县", + "zipcode": "056900" + }, { + "id": 477, + "name": "涉县", + "zipcode": "056400" + }, { + "id": 478, + "name": "磁县", + "zipcode": "056500" + }, { + "id": 479, + "name": "肥乡县", + "zipcode": "057550" + }, { + "id": 480, + "name": "永年县", + "zipcode": "057150" + }, { + "id": 481, + "name": "邱县", + "zipcode": "057450" + }, { + "id": 482, + "name": "鸡泽县", + "zipcode": "057350" + }, { + "id": 483, + "name": "广平县", + "zipcode": "057650" + }, { + "id": 484, + "name": "馆陶县", + "zipcode": "057750" + }, { + "id": 485, + "name": "魏县", + "zipcode": "056800" + }, { + "id": 486, + "name": "曲周县", + "zipcode": "057250" + }, { + "id": 487, + "name": "武安市", + "zipcode": "056300" + }, { + "id": 488, + "name": "经济开发区", + "zipcode": "056002" + }] + }, { + "id": 42, + "name": "邢台市", + "child": [{ + "id": 489, + "name": "桥东区", + "zipcode": "054001" + }, { + "id": 490, + "name": "桥西区", + "zipcode": "054000" + }, { + "id": 491, + "name": "邢台县", + "zipcode": "054001" + }, { + "id": 492, + "name": "临城县", + "zipcode": "054300" + }, { + "id": 493, + "name": "内丘县", + "zipcode": "054200" + }, { + "id": 494, + "name": "柏乡县", + "zipcode": "055450" + }, { + "id": 495, + "name": "隆尧县", + "zipcode": "055350" + }, { + "id": 496, + "name": "任县", + "zipcode": "055150" + }, { + "id": 497, + "name": "南和县", + "zipcode": "054400" + }, { + "id": 498, + "name": "宁晋县", + "zipcode": "055550" + }, { + "id": 499, + "name": "巨鹿县", + "zipcode": "055250" + }, { + "id": 500, + "name": "新河县", + "zipcode": "051730" + }, { + "id": 501, + "name": "广宗县", + "zipcode": "054600" + }, { + "id": 502, + "name": "平乡县", + "zipcode": "054500" + }, { + "id": 503, + "name": "威县", + "zipcode": "054700" + }, { + "id": 504, + "name": "清河县", + "zipcode": "054800" + }, { + "id": 505, + "name": "临西县", + "zipcode": "054900" + }, { + "id": 506, + "name": "南宫市", + "zipcode": "055750" + }, { + "id": 507, + "name": "沙河市", + "zipcode": "054100" + }] + }, { + "id": 43, + "name": "保定市", + "child": [{ + "id": 509, + "name": "新市区", + "zipcode": "071052" + }, { + "id": 510, + "name": "南市区", + "zipcode": "071000" + }, { + "id": 511, + "name": "北市区", + "zipcode": "071000" + }, { + "id": 512, + "name": "满城县", + "zipcode": "072150" + }, { + "id": 513, + "name": "清苑县", + "zipcode": "071100" + }, { + "id": 514, + "name": "涞水县", + "zipcode": "074100" + }, { + "id": 515, + "name": "阜平县", + "zipcode": "073200" + }, { + "id": 516, + "name": "徐水县", + "zipcode": "072550" + }, { + "id": 517, + "name": "定兴县", + "zipcode": "072650" + }, { + "id": 518, + "name": "唐县", + "zipcode": "072350" + }, { + "id": 519, + "name": "高阳县", + "zipcode": "071500" + }, { + "id": 520, + "name": "容城县", + "zipcode": "071700" + }, { + "id": 521, + "name": "涞源县", + "zipcode": "074300" + }, { + "id": 522, + "name": "望都县", + "zipcode": "072450" + }, { + "id": 523, + "name": "安新县", + "zipcode": "071600" + }, { + "id": 524, + "name": "易县", + "zipcode": "074200" + }, { + "id": 525, + "name": "曲阳县", + "zipcode": "073100" + }, { + "id": 526, + "name": "蠡县", + "zipcode": "071400" + }, { + "id": 527, + "name": "顺平县", + "zipcode": "072250" + }, { + "id": 528, + "name": "博野县", + "zipcode": "071300" + }, { + "id": 529, + "name": "雄县", + "zipcode": "071800" + }, { + "id": 530, + "name": "涿州市", + "zipcode": "072750" + }, { + "id": 531, + "name": "定州市", + "zipcode": "073000" + }, { + "id": 532, + "name": "安国市", + "zipcode": "071200" + }, { + "id": 533, + "name": "高碑店市", + "zipcode": "074000" + }] + }, { + "id": 44, + "name": "张家口市", + "child": [{ + "id": 534, + "name": "桥东区", + "zipcode": "075000" + }, { + "id": 535, + "name": "桥西区", + "zipcode": "075061" + }, { + "id": 536, + "name": "宣化区", + "zipcode": "075100" + }, { + "id": 537, + "name": "下花园区", + "zipcode": "075300" + }, { + "id": 538, + "name": "宣化县", + "zipcode": "075100" + }, { + "id": 539, + "name": "张北县", + "zipcode": "076450" + }, { + "id": 540, + "name": "康保县", + "zipcode": "076650" + }, { + "id": 541, + "name": "沽源县", + "zipcode": "076550" + }, { + "id": 542, + "name": "尚义县", + "zipcode": "076750" + }, { + "id": 543, + "name": "蔚县", + "zipcode": "075700" + }, { + "id": 544, + "name": "阳原县", + "zipcode": "075800" + }, { + "id": 545, + "name": "怀安县", + "zipcode": "076150" + }, { + "id": 546, + "name": "万全县", + "zipcode": "076250" + }, { + "id": 547, + "name": "怀来县", + "zipcode": "075400" + }, { + "id": 548, + "name": "涿鹿县", + "zipcode": "075600" + }, { + "id": 549, + "name": "赤城县", + "zipcode": "075500" + }, { + "id": 550, + "name": "崇礼县", + "zipcode": "076350" + }] + }, { + "id": 45, + "name": "承德市", + "child": [{ + "id": 551, + "name": "双桥区", + "zipcode": "067000" + }, { + "id": 552, + "name": "双滦区", + "zipcode": "067000" + }, { + "id": 553, + "name": "鹰手营子矿区", + "zipcode": "067200" + }, { + "id": 554, + "name": "承德县", + "zipcode": "067400" + }, { + "id": 555, + "name": "兴隆县", + "zipcode": "067300" + }, { + "id": 556, + "name": "平泉县", + "zipcode": "067500" + }, { + "id": 557, + "name": "滦平县", + "zipcode": "068250" + }, { + "id": 558, + "name": "隆化县", + "zipcode": "068150" + }, { + "id": 559, + "name": "丰宁满族自治县", + "zipcode": "068350" + }, { + "id": 560, + "name": "宽城满族自治县", + "zipcode": "067600" + }, { + "id": 561, + "name": "围场满族蒙古族自治县", + "zipcode": "068450" + }] + }, { + "id": 46, + "name": "沧州市", + "child": [{ + "id": 562, + "name": "新华区", + "zipcode": "061000" + }, { + "id": 563, + "name": "运河区", + "zipcode": "061000" + }, { + "id": 564, + "name": "沧县", + "zipcode": "061000" + }, { + "id": 565, + "name": "青县", + "zipcode": "062650" + }, { + "id": 566, + "name": "东光县", + "zipcode": "061600" + }, { + "id": 567, + "name": "海兴县", + "zipcode": "061200" + }, { + "id": 568, + "name": "盐山县", + "zipcode": "061300" + }, { + "id": 569, + "name": "肃宁县", + "zipcode": "062350" + }, { + "id": 570, + "name": "南皮县", + "zipcode": "061500" + }, { + "id": 571, + "name": "吴桥县", + "zipcode": "061800" + }, { + "id": 572, + "name": "献县", + "zipcode": "062250" + }, { + "id": 573, + "name": "孟村回族自治县", + "zipcode": "061400" + }, { + "id": 574, + "name": "泊头市", + "zipcode": "062150" + }, { + "id": 575, + "name": "任丘市", + "zipcode": "062550" + }, { + "id": 576, + "name": "黄骅市", + "zipcode": "061100" + }, { + "id": 577, + "name": "河间市", + "zipcode": "062450" + }] + }, { + "id": 47, + "name": "廊坊市", + "child": [{ + "id": 578, + "name": "安次区", + "zipcode": "065000" + }, { + "id": 579, + "name": "广阳区", + "zipcode": "065000" + }, { + "id": 580, + "name": "固安县", + "zipcode": "065500" + }, { + "id": 581, + "name": "永清县", + "zipcode": "065600" + }, { + "id": 582, + "name": "香河县", + "zipcode": "065400" + }, { + "id": 583, + "name": "大城县", + "zipcode": "065900" + }, { + "id": 584, + "name": "文安县", + "zipcode": "065800" + }, { + "id": 585, + "name": "大厂回族自治县", + "zipcode": "065300" + }, { + "id": 586, + "name": "霸州市", + "zipcode": "065700" + }, { + "id": 587, + "name": "三河市", + "zipcode": "065200" + }, { + "id": 588, + "name": "开发区", + "zipcode": "065001" + }] + }, { + "id": 48, + "name": "衡水市", + "child": [{ + "id": 589, + "name": "桃城区", + "zipcode": "053000" + }, { + "id": 590, + "name": "枣强县", + "zipcode": "053100" + }, { + "id": 591, + "name": "武邑县", + "zipcode": "053400" + }, { + "id": 592, + "name": "武强县", + "zipcode": "053300" + }, { + "id": 593, + "name": "饶阳县", + "zipcode": "053900" + }, { + "id": 594, + "name": "安平县", + "zipcode": "053600" + }, { + "id": 595, + "name": "故城县", + "zipcode": "253800" + }, { + "id": 596, + "name": "景县", + "zipcode": "053500" + }, { + "id": 597, + "name": "阜城县", + "zipcode": "053700" + }, { + "id": 598, + "name": "冀州市", + "zipcode": "053200" + }, { + "id": 599, + "name": "深州市", + "zipcode": "053800" + }] + }] +}, { + "id": 5, + "name": "山西", + "child": [{ + "id": 49, + "name": "太原市", + "child": [{ + "id": 600, + "name": "小店区", + "zipcode": "030032" + }, { + "id": 601, + "name": "迎泽区", + "zipcode": "030024" + }, { + "id": 602, + "name": "杏花岭区", + "zipcode": "030001" + }, { + "id": 603, + "name": "尖草坪区", + "zipcode": "030003" + }, { + "id": 604, + "name": "万柏林区", + "zipcode": "030027" + }, { + "id": 605, + "name": "晋源区", + "zipcode": "030025" + }, { + "id": 606, + "name": "清徐县", + "zipcode": "030400" + }, { + "id": 607, + "name": "阳曲县", + "zipcode": "030100" + }, { + "id": 608, + "name": "娄烦县", + "zipcode": "030300" + }, { + "id": 609, + "name": "古交市", + "zipcode": "030200" + }] + }, { + "id": 50, + "name": "大同市", + "child": [{ + "id": 610, + "name": "城区", + "zipcode": "037008" + }, { + "id": 611, + "name": "矿区", + "zipcode": "037001" + }, { + "id": 612, + "name": "南郊区", + "zipcode": "037001" + }, { + "id": 613, + "name": "新荣区", + "zipcode": "037002" + }, { + "id": 614, + "name": "阳高县", + "zipcode": "038100" + }, { + "id": 615, + "name": "天镇县", + "zipcode": "038200" + }, { + "id": 616, + "name": "广灵县", + "zipcode": "037500" + }, { + "id": 617, + "name": "灵丘县", + "zipcode": "034400" + }, { + "id": 618, + "name": "浑源县", + "zipcode": "037400" + }, { + "id": 619, + "name": "左云县", + "zipcode": "037100" + }, { + "id": 620, + "name": "大同县", + "zipcode": "037300" + }] + }, { + "id": 51, + "name": "阳泉市", + "child": [{ + "id": 621, + "name": "城区", + "zipcode": "045000" + }, { + "id": 622, + "name": "矿区", + "zipcode": "045000" + }, { + "id": 623, + "name": "郊区", + "zipcode": "045011" + }, { + "id": 624, + "name": "平定县", + "zipcode": "045200" + }, { + "id": 625, + "name": "盂县", + "zipcode": "045100" + }] + }, { + "id": 52, + "name": "长治市", + "child": [{ + "id": 626, + "name": "城区", + "zipcode": "046011" + }, { + "id": 627, + "name": "郊区", + "zipcode": "046011" + }, { + "id": 628, + "name": "长治县", + "zipcode": "047100" + }, { + "id": 629, + "name": "襄垣县", + "zipcode": "046200" + }, { + "id": 630, + "name": "屯留县", + "zipcode": "046100" + }, { + "id": 631, + "name": "平顺县", + "zipcode": "047400" + }, { + "id": 632, + "name": "黎城县", + "zipcode": "047600" + }, { + "id": 633, + "name": "壶关县", + "zipcode": "047300" + }, { + "id": 634, + "name": "长子县", + "zipcode": "046600" + }, { + "id": 635, + "name": "武乡县", + "zipcode": "046300" + }, { + "id": 636, + "name": "沁县", + "zipcode": "046400" + }, { + "id": 637, + "name": "沁源县", + "zipcode": "046500" + }, { + "id": 638, + "name": "潞城市", + "zipcode": "047500" + }] + }, { + "id": 53, + "name": "晋城市", + "child": [{ + "id": 642, + "name": "城区", + "zipcode": "048000" + }, { + "id": 643, + "name": "沁水县", + "zipcode": "048200" + }, { + "id": 644, + "name": "阳城县", + "zipcode": "048100" + }, { + "id": 645, + "name": "陵川县", + "zipcode": "048300" + }, { + "id": 646, + "name": "泽州县", + "zipcode": "048012" + }, { + "id": 647, + "name": "高平市", + "zipcode": "048400" + }] + }, { + "id": 54, + "name": "朔州市", + "child": [{ + "id": 648, + "name": "朔城区", + "zipcode": "038500" + }, { + "id": 649, + "name": "平鲁区", + "zipcode": "038600" + }, { + "id": 650, + "name": "山阴县", + "zipcode": "036900" + }, { + "id": 651, + "name": "应县", + "zipcode": "037600" + }, { + "id": 652, + "name": "右玉县", + "zipcode": "037200" + }, { + "id": 653, + "name": "怀仁县", + "zipcode": "038300" + }] + }, { + "id": 55, + "name": "晋中市", + "child": [{ + "id": 654, + "name": "榆次区", + "zipcode": "030600" + }, { + "id": 655, + "name": "榆社县", + "zipcode": "031800" + }, { + "id": 656, + "name": "左权县", + "zipcode": "032600" + }, { + "id": 657, + "name": "和顺县", + "zipcode": "032700" + }, { + "id": 658, + "name": "昔阳县", + "zipcode": "045300" + }, { + "id": 659, + "name": "寿阳县", + "zipcode": "045400" + }, { + "id": 660, + "name": "太谷县", + "zipcode": "030800" + }, { + "id": 661, + "name": "祁县", + "zipcode": "030900" + }, { + "id": 662, + "name": "平遥县", + "zipcode": "031100" + }, { + "id": 663, + "name": "灵石县", + "zipcode": "031300" + }, { + "id": 664, + "name": "介休市", + "zipcode": "031200" + }] + }, { + "id": 56, + "name": "运城市", + "child": [{ + "id": 665, + "name": "盐湖区", + "zipcode": "044000" + }, { + "id": 666, + "name": "临猗县", + "zipcode": "044100" + }, { + "id": 667, + "name": "万荣县", + "zipcode": "044200" + }, { + "id": 668, + "name": "闻喜县", + "zipcode": "043800" + }, { + "id": 669, + "name": "稷山县", + "zipcode": "043200" + }, { + "id": 670, + "name": "新绛县", + "zipcode": "043100" + }, { + "id": 671, + "name": "绛县", + "zipcode": "043600" + }, { + "id": 672, + "name": "垣曲县", + "zipcode": "043700" + }, { + "id": 673, + "name": "夏县", + "zipcode": "044400" + }, { + "id": 674, + "name": "平陆县", + "zipcode": "044300" + }, { + "id": 675, + "name": "芮城县", + "zipcode": "044600" + }, { + "id": 676, + "name": "永济市", + "zipcode": "044500" + }, { + "id": 677, + "name": "河津市", + "zipcode": "043300" + }] + }, { + "id": 57, + "name": "忻州市", + "child": [{ + "id": 678, + "name": "忻府区", + "zipcode": "034000" + }, { + "id": 679, + "name": "定襄县", + "zipcode": "035400" + }, { + "id": 680, + "name": "五台县", + "zipcode": "035500" + }, { + "id": 681, + "name": "代县", + "zipcode": "034200" + }, { + "id": 682, + "name": "繁峙县", + "zipcode": "034300" + }, { + "id": 683, + "name": "宁武县", + "zipcode": "036700" + }, { + "id": 684, + "name": "静乐县", + "zipcode": "035100" + }, { + "id": 685, + "name": "神池县", + "zipcode": "036100" + }, { + "id": 686, + "name": "五寨县", + "zipcode": "036200" + }, { + "id": 687, + "name": "岢岚县", + "zipcode": "036300" + }, { + "id": 688, + "name": "河曲县", + "zipcode": "036500" + }, { + "id": 689, + "name": "保德县", + "zipcode": "036600" + }, { + "id": 690, + "name": "偏关县", + "zipcode": "036400" + }, { + "id": 691, + "name": "原平市", + "zipcode": "034100" + }] + }, { + "id": 58, + "name": "临汾市", + "child": [{ + "id": 692, + "name": "尧都区", + "zipcode": "041000" + }, { + "id": 693, + "name": "曲沃县", + "zipcode": "043400" + }, { + "id": 694, + "name": "翼城县", + "zipcode": "043500" + }, { + "id": 695, + "name": "襄汾县", + "zipcode": "041500" + }, { + "id": 696, + "name": "洪洞县", + "zipcode": "031600" + }, { + "id": 697, + "name": "古县", + "zipcode": "042400" + }, { + "id": 698, + "name": "安泽县", + "zipcode": "042500" + }, { + "id": 699, + "name": "浮山县", + "zipcode": "042600" + }, { + "id": 700, + "name": "吉县", + "zipcode": "042200" + }, { + "id": 701, + "name": "乡宁县", + "zipcode": "042100" + }, { + "id": 702, + "name": "大宁县", + "zipcode": "042300" + }, { + "id": 703, + "name": "隰县", + "zipcode": "041300" + }, { + "id": 704, + "name": "永和县", + "zipcode": "041400" + }, { + "id": 705, + "name": "蒲县", + "zipcode": "041200" + }, { + "id": 706, + "name": "汾西县", + "zipcode": "031500" + }, { + "id": 707, + "name": "侯马市", + "zipcode": "043007" + }, { + "id": 708, + "name": "霍州市", + "zipcode": "031400" + }] + }, { + "id": 59, + "name": "吕梁市", + "child": [{ + "id": 710, + "name": "离石区", + "zipcode": "033000" + }, { + "id": 711, + "name": "文水县", + "zipcode": "032100" + }, { + "id": 712, + "name": "交城县", + "zipcode": "030500" + }, { + "id": 713, + "name": "兴县", + "zipcode": "033600" + }, { + "id": 714, + "name": "临县", + "zipcode": "033200" + }, { + "id": 715, + "name": "柳林县", + "zipcode": "033300" + }, { + "id": 716, + "name": "石楼县", + "zipcode": "032500" + }, { + "id": 717, + "name": "岚县", + "zipcode": "033500" + }, { + "id": 718, + "name": "方山县", + "zipcode": "033100" + }, { + "id": 719, + "name": "中阳县", + "zipcode": "033400" + }, { + "id": 720, + "name": "交口县", + "zipcode": "032400" + }, { + "id": 721, + "name": "孝义市", + "zipcode": "032300" + }, { + "id": 722, + "name": "汾阳市", + "zipcode": "032200" + }] + }] +}, { + "id": 6, + "name": "内蒙古", + "child": [{ + "id": 60, + "name": "呼和浩特市", + "child": [{ + "id": 723, + "name": "回民区", + "zipcode": "010030" + }, { + "id": 724, + "name": "玉泉区", + "zipcode": "010020" + }, { + "id": 725, + "name": "新城区", + "zipcode": "010030" + }, { + "id": 726, + "name": "赛罕区", + "zipcode": "010020" + }, { + "id": 727, + "name": "土默特左旗", + "zipcode": "010100" + }, { + "id": 728, + "name": "托克托县", + "zipcode": "010200" + }, { + "id": 729, + "name": "和林格尔县", + "zipcode": "011500" + }, { + "id": 730, + "name": "清水河县", + "zipcode": "011600" + }, { + "id": 731, + "name": "武川县", + "zipcode": "011700" + }] + }, { + "id": 61, + "name": "包头市", + "child": [{ + "id": 733, + "name": "东河区", + "zipcode": "014040" + }, { + "id": 734, + "name": "昆都仑区", + "zipcode": "014010" + }, { + "id": 735, + "name": "青山区", + "zipcode": "014030" + }, { + "id": 736, + "name": "石拐区", + "zipcode": "014070" + }, { + "id": 737, + "name": "白云矿区", + "zipcode": "014080" + }, { + "id": 738, + "name": "九原区", + "zipcode": "014060" + }, { + "id": 739, + "name": "土默特右旗", + "zipcode": "014100" + }, { + "id": 740, + "name": "固阳县", + "zipcode": "014200" + }, { + "id": 741, + "name": "达尔罕茂明安联合旗", + "zipcode": "014500" + }] + }, { + "id": 62, + "name": "乌海市", + "child": [{ + "id": 742, + "name": "海勃湾区", + "zipcode": "016000" + }, { + "id": 743, + "name": "海南区", + "zipcode": "016030" + }, { + "id": 744, + "name": "乌达区", + "zipcode": "016040" + }] + }, { + "id": 63, + "name": "赤峰市", + "child": [{ + "id": 745, + "name": "红山区", + "zipcode": "024020" + }, { + "id": 746, + "name": "元宝山区", + "zipcode": "024076" + }, { + "id": 747, + "name": "松山区", + "zipcode": "024005" + }, { + "id": 748, + "name": "阿鲁科尔沁旗", + "zipcode": "025550" + }, { + "id": 749, + "name": "巴林左旗", + "zipcode": "025450" + }, { + "id": 750, + "name": "巴林右旗", + "zipcode": "025150" + }, { + "id": 751, + "name": "林西县", + "zipcode": "025250" + }, { + "id": 752, + "name": "克什克腾旗", + "zipcode": "025350" + }, { + "id": 753, + "name": "翁牛特旗", + "zipcode": "024500" + }, { + "id": 754, + "name": "喀喇沁旗", + "zipcode": "024400" + }, { + "id": 755, + "name": "宁城县", + "zipcode": "024200" + }, { + "id": 756, + "name": "敖汉旗", + "zipcode": "024300" + }, { + "id": 757, + "name": "新城区", + "zipcode": "025350" + }] + }, { + "id": 64, + "name": "通辽市", + "child": [{ + "id": 758, + "name": "科尔沁区", + "zipcode": "028000" + }, { + "id": 759, + "name": "科尔沁左翼中旗", + "zipcode": "029300" + }, { + "id": 760, + "name": "科尔沁左翼后旗", + "zipcode": "028100" + }, { + "id": 761, + "name": "开鲁县", + "zipcode": "028400" + }, { + "id": 762, + "name": "库伦旗", + "zipcode": "028200" + }, { + "id": 763, + "name": "奈曼旗", + "zipcode": "028300" + }, { + "id": 764, + "name": "扎鲁特旗", + "zipcode": "029100" + }, { + "id": 765, + "name": "霍林郭勒市", + "zipcode": "029200" + }] + }, { + "id": 65, + "name": "鄂尔多斯市", + "child": [{ + "id": 766, + "name": "东胜区", + "zipcode": "017000" + }, { + "id": 767, + "name": "达拉特旗", + "zipcode": "014300" + }, { + "id": 768, + "name": "准格尔旗", + "zipcode": "017100" + }, { + "id": 769, + "name": "鄂托克前旗", + "zipcode": "016200" + }, { + "id": 770, + "name": "鄂托克旗", + "zipcode": "016100" + }, { + "id": 771, + "name": "杭锦旗", + "zipcode": "017400" + }, { + "id": 772, + "name": "乌审旗", + "zipcode": "017300" + }, { + "id": 773, + "name": "伊金霍洛旗", + "zipcode": "017200" + }] + }, { + "id": 66, + "name": "呼伦贝尔市", + "child": [{ + "id": 774, + "name": "海拉尔区", + "zipcode": "021000" + }, { + "id": 775, + "name": "阿荣旗", + "zipcode": "162750" + }, { + "id": 776, + "name": "莫力达瓦达斡尔族自治旗", + "zipcode": "162850" + }, { + "id": 777, + "name": "鄂伦春自治旗", + "zipcode": "165450" + }, { + "id": 778, + "name": "鄂温克族自治旗", + "zipcode": "021100" + }, { + "id": 779, + "name": "陈巴尔虎旗", + "zipcode": "021500" + }, { + "id": 780, + "name": "新巴尔虎左旗", + "zipcode": "021200" + }, { + "id": 781, + "name": "新巴尔虎右旗", + "zipcode": "021300" + }, { + "id": 782, + "name": "满洲里市", + "zipcode": "021400" + }, { + "id": 783, + "name": "牙克石市", + "zipcode": "022150" + }, { + "id": 784, + "name": "扎兰屯市", + "zipcode": "162650" + }, { + "id": 785, + "name": "额尔古纳市", + "zipcode": "022250" + }, { + "id": 786, + "name": "根河市", + "zipcode": "022350" + }] + }, { + "id": 67, + "name": "巴彦淖尔市", + "child": [{ + "id": 787, + "name": "临河区", + "zipcode": "015001" + }, { + "id": 788, + "name": "五原县", + "zipcode": "015100" + }, { + "id": 789, + "name": "磴口县", + "zipcode": "015200" + }, { + "id": 790, + "name": "乌拉特前旗", + "zipcode": "014400" + }, { + "id": 791, + "name": "乌拉特中旗", + "zipcode": "015300" + }, { + "id": 792, + "name": "乌拉特后旗", + "zipcode": "015500" + }, { + "id": 793, + "name": "杭锦后旗", + "zipcode": "015400" + }] + }, { + "id": 68, + "name": "乌兰察布市", + "child": [{ + "id": 794, + "name": "集宁区", + "zipcode": "012000" + }, { + "id": 795, + "name": "卓资县", + "zipcode": "012300" + }, { + "id": 796, + "name": "化德县", + "zipcode": "013350" + }, { + "id": 797, + "name": "商都县", + "zipcode": "013450" + }, { + "id": 798, + "name": "兴和县", + "zipcode": "013650" + }, { + "id": 799, + "name": "凉城县", + "zipcode": "013750" + }, { + "id": 800, + "name": "察哈尔右翼前旗", + "zipcode": "012200" + }, { + "id": 801, + "name": "察哈尔右翼中旗", + "zipcode": "013550" + }, { + "id": 802, + "name": "察哈尔右翼后旗", + "zipcode": "012400" + }, { + "id": 803, + "name": "四子王旗", + "zipcode": "011800" + }, { + "id": 804, + "name": "丰镇市", + "zipcode": "012100" + }] + }, { + "id": 69, + "name": "兴安盟", + "child": [{ + "id": 805, + "name": "乌兰浩特市", + "zipcode": "137401" + }, { + "id": 806, + "name": "阿尔山市", + "zipcode": "137800" + }, { + "id": 807, + "name": "科尔沁右翼前旗", + "zipcode": "137423" + }, { + "id": 808, + "name": "科尔沁右翼中旗", + "zipcode": "029400" + }, { + "id": 809, + "name": "扎赉特旗", + "zipcode": "137600" + }, { + "id": 810, + "name": "突泉县", + "zipcode": "137500" + }] + }, { + "id": 70, + "name": "锡林郭勒盟", + "child": [{ + "id": 811, + "name": "二连浩特市", + "zipcode": "011100" + }, { + "id": 812, + "name": "锡林浩特市", + "zipcode": "026000" + }, { + "id": 813, + "name": "阿巴嘎旗", + "zipcode": "011400" + }, { + "id": 814, + "name": "苏尼特左旗", + "zipcode": "011300" + }, { + "id": 815, + "name": "苏尼特右旗", + "zipcode": "011200" + }, { + "id": 816, + "name": "东乌珠穆沁旗", + "zipcode": "026300" + }, { + "id": 817, + "name": "西乌珠穆沁旗", + "zipcode": "026200" + }, { + "id": 818, + "name": "太仆寺旗", + "zipcode": "027000" + }, { + "id": 819, + "name": "镶黄旗", + "zipcode": "013250" + }, { + "id": 820, + "name": "正镶白旗", + "zipcode": "013800" + }, { + "id": 821, + "name": "正蓝旗", + "zipcode": "027200" + }, { + "id": 822, + "name": "多伦县", + "zipcode": "027300" + }] + }, { + "id": 71, + "name": "阿拉善盟", + "child": [{ + "id": 823, + "name": "阿拉善左旗", + "zipcode": "750306" + }, { + "id": 824, + "name": "阿拉善右旗", + "zipcode": "737300" + }, { + "id": 825, + "name": "额济纳旗", + "zipcode": "735400" + }] + }] +}, { + "id": 7, + "name": "辽宁", + "child": [{ + "id": 72, + "name": "沈阳市", + "child": [{ + "id": 826, + "name": "和平区", + "zipcode": "110001" + }, { + "id": 827, + "name": "沈河区", + "zipcode": "110013" + }, { + "id": 828, + "name": "大东区", + "zipcode": "110041" + }, { + "id": 829, + "name": "皇姑区", + "zipcode": "110031" + }, { + "id": 830, + "name": "铁西区", + "zipcode": "110021" + }, { + "id": 831, + "name": "苏家屯区", + "zipcode": "110101" + }, { + "id": 832, + "name": "东陵区", + "zipcode": "110015" + }, { + "id": 833, + "name": "沈北新区", + "zipcode": "110121" + }, { + "id": 834, + "name": "于洪区", + "zipcode": "110141" + }, { + "id": 835, + "name": "辽中县", + "zipcode": "110200" + }, { + "id": 836, + "name": "康平县", + "zipcode": "110500" + }, { + "id": 837, + "name": "法库县", + "zipcode": "110400" + }, { + "id": 838, + "name": "新民市", + "zipcode": "110300" + }, { + "id": 839, + "name": "经济技术开发区", + "zipcode": "110141" + }, { + "id": 840, + "name": "浑南新区", + "zipcode": "110179" + }, { + "id": 841, + "name": "新城子经济技术开发区", + "zipcode": "110121" + }] + }, { + "id": 73, + "name": "大连市", + "child": [{ + "id": 842, + "name": "中山区", + "zipcode": "116001" + }, { + "id": 843, + "name": "西岗区", + "zipcode": "116011" + }, { + "id": 844, + "name": "沙河口区", + "zipcode": "116021" + }, { + "id": 845, + "name": "甘井子区", + "zipcode": "116033" + }, { + "id": 846, + "name": "旅顺口区", + "zipcode": "116041" + }, { + "id": 847, + "name": "金州区", + "zipcode": "116100" + }, { + "id": 848, + "name": "长海县", + "zipcode": "116500" + }, { + "id": 849, + "name": "瓦房店市", + "zipcode": "116300" + }, { + "id": 850, + "name": "普兰店市", + "zipcode": "116200" + }, { + "id": 851, + "name": "庄河市", + "zipcode": "116400" + }, { + "id": 852, + "name": "开发区", + "zipcode": "116600" + }, { + "id": 853, + "name": "保税区", + "zipcode": "116600" + }] + }, { + "id": 74, + "name": "鞍山市", + "child": [{ + "id": 854, + "name": "铁东区", + "zipcode": "114001" + }, { + "id": 855, + "name": "铁西区", + "zipcode": "114013" + }, { + "id": 856, + "name": "立山区", + "zipcode": "114031" + }, { + "id": 857, + "name": "千山区", + "zipcode": "114041" + }, { + "id": 858, + "name": "台安县", + "zipcode": "114100" + }, { + "id": 859, + "name": "岫岩满族自治县", + "zipcode": "114300" + }, { + "id": 860, + "name": "海城市", + "zipcode": "114200" + }] + }, { + "id": 75, + "name": "抚顺市", + "child": [{ + "id": 861, + "name": "新抚区", + "zipcode": "113008" + }, { + "id": 862, + "name": "东洲区", + "zipcode": "113003" + }, { + "id": 863, + "name": "望花区", + "zipcode": "113001" + }, { + "id": 864, + "name": "顺城区", + "zipcode": "113006" + }, { + "id": 865, + "name": "抚顺县", + "zipcode": "113006" + }, { + "id": 866, + "name": "新宾满族自治县", + "zipcode": "113200" + }, { + "id": 867, + "name": "清原满族自治县", + "zipcode": "113300" + }] + }, { + "id": 76, + "name": "本溪市", + "child": [{ + "id": 868, + "name": "平山区", + "zipcode": "117000" + }, { + "id": 869, + "name": "明山区", + "zipcode": "117021" + }, { + "id": 870, + "name": "溪湖区", + "zipcode": "117002" + }, { + "id": 871, + "name": "南芬区", + "zipcode": "117014" + }, { + "id": 872, + "name": "本溪满族自治县", + "zipcode": "117100" + }, { + "id": 873, + "name": "桓仁满族自治县", + "zipcode": "117200" + }] + }, { + "id": 77, + "name": "丹东市", + "child": [{ + "id": 874, + "name": "元宝区", + "zipcode": "118000" + }, { + "id": 875, + "name": "振兴区", + "zipcode": "118002" + }, { + "id": 876, + "name": "振安区", + "zipcode": "118001" + }, { + "id": 877, + "name": "宽甸满族自治县", + "zipcode": "118200" + }, { + "id": 878, + "name": "东港市", + "zipcode": "118300" + }, { + "id": 879, + "name": "凤城市", + "zipcode": "118100" + }] + }, { + "id": 78, + "name": "锦州市", + "child": [{ + "id": 880, + "name": "古塔区", + "zipcode": "121001" + }, { + "id": 881, + "name": "凌河区", + "zipcode": "121000" + }, { + "id": 882, + "name": "太和区", + "zipcode": "121011" + }, { + "id": 883, + "name": "黑山县", + "zipcode": "121400" + }, { + "id": 884, + "name": "义县", + "zipcode": "121100" + }, { + "id": 885, + "name": "凌海市", + "zipcode": "121200" + }, { + "id": 886, + "name": "北宁市", + "zipcode": "121300" + }, { + "id": 887, + "name": "松山新区", + "zipcode": "121219" + }, { + "id": 888, + "name": "经济技术开发区", + "zipcode": "121007" + }] + }, { + "id": 79, + "name": "营口市", + "child": [{ + "id": 889, + "name": "站前区", + "zipcode": "115002" + }, { + "id": 890, + "name": "西市区", + "zipcode": "115004" + }, { + "id": 891, + "name": "鲅鱼圈区", + "zipcode": "115007" + }, { + "id": 892, + "name": "老边区", + "zipcode": "115005" + }, { + "id": 893, + "name": "盖州市", + "zipcode": "115200" + }, { + "id": 894, + "name": "大石桥市", + "zipcode": "115100" + }] + }, { + "id": 80, + "name": "阜新市", + "child": [{ + "id": 895, + "name": "海州区", + "zipcode": "123000" + }, { + "id": 896, + "name": "新邱区", + "zipcode": "123005" + }, { + "id": 897, + "name": "太平区", + "zipcode": "123003" + }, { + "id": 898, + "name": "清河门区", + "zipcode": "123006" + }, { + "id": 899, + "name": "细河区", + "zipcode": "123000" + }, { + "id": 900, + "name": "阜新蒙古族自治县", + "zipcode": "123100" + }, { + "id": 901, + "name": "彰武县", + "zipcode": "123200" + }] + }, { + "id": 81, + "name": "辽阳市", + "child": [{ + "id": 902, + "name": "白塔区", + "zipcode": "111000" + }, { + "id": 903, + "name": "文圣区", + "zipcode": "111000" + }, { + "id": 904, + "name": "宏伟区", + "zipcode": "111003" + }, { + "id": 905, + "name": "弓长岭区", + "zipcode": "111008" + }, { + "id": 906, + "name": "太子河区", + "zipcode": "111000" + }, { + "id": 907, + "name": "辽阳县", + "zipcode": "111200" + }, { + "id": 908, + "name": "灯塔市", + "zipcode": "111300" + }] + }, { + "id": 82, + "name": "盘锦市", + "child": [{ + "id": 909, + "name": "双台子区", + "zipcode": "124000" + }, { + "id": 910, + "name": "兴隆台区", + "zipcode": "124010" + }, { + "id": 911, + "name": "大洼县", + "zipcode": "124200" + }, { + "id": 912, + "name": "盘山县", + "zipcode": "124000" + }] + }, { + "id": 83, + "name": "铁岭市", + "child": [{ + "id": 913, + "name": "银州区", + "zipcode": "112000" + }, { + "id": 914, + "name": "清河区", + "zipcode": "112003" + }, { + "id": 915, + "name": "铁岭县", + "zipcode": "112000" + }, { + "id": 916, + "name": "西丰县", + "zipcode": "112400" + }, { + "id": 917, + "name": "昌图县", + "zipcode": "112500" + }, { + "id": 918, + "name": "调兵山市", + "zipcode": "112700" + }, { + "id": 919, + "name": "开原市", + "zipcode": "112300" + }] + }, { + "id": 84, + "name": "朝阳市", + "child": [{ + "id": 920, + "name": "双塔区", + "zipcode": "122000" + }, { + "id": 921, + "name": "龙城区", + "zipcode": "122000" + }, { + "id": 922, + "name": "朝阳县", + "zipcode": "122000" + }, { + "id": 923, + "name": "建平县", + "zipcode": "122400" + }, { + "id": 924, + "name": "喀喇沁左翼蒙古族自治县", + "zipcode": "122300" + }, { + "id": 925, + "name": "北票市", + "zipcode": "122100" + }, { + "id": 926, + "name": "凌源市", + "zipcode": "122500" + }] + }, { + "id": 85, + "name": "葫芦岛市", + "child": [{ + "id": 927, + "name": "连山区", + "zipcode": "125001" + }, { + "id": 928, + "name": "龙港区", + "zipcode": "125003" + }, { + "id": 929, + "name": "南票区", + "zipcode": "125027" + }, { + "id": 930, + "name": "绥中县", + "zipcode": "125200" + }, { + "id": 931, + "name": "建昌县", + "zipcode": "125300" + }, { + "id": 932, + "name": "兴城市", + "zipcode": "125100" + }] + }] +}, { + "id": 8, + "name": "吉林", + "child": [{ + "id": 86, + "name": "长春市", + "child": [{ + "id": 933, + "name": "南关区", + "zipcode": "130022" + }, { + "id": 934, + "name": "宽城区", + "zipcode": "130051" + }, { + "id": 935, + "name": "朝阳区", + "zipcode": "130012" + }, { + "id": 936, + "name": "二道区", + "zipcode": "130031" + }, { + "id": 937, + "name": "绿园区", + "zipcode": "130062" + }, { + "id": 938, + "name": "双阳区", + "zipcode": "130600" + }, { + "id": 939, + "name": "农安县", + "zipcode": "130200" + }, { + "id": 940, + "name": "九台市", + "zipcode": "130500" + }, { + "id": 941, + "name": "榆树市", + "zipcode": "130400" + }, { + "id": 942, + "name": "德惠市", + "zipcode": "130300" + }, { + "id": 943, + "name": "净月经济开发区", + "zipcode": "130117" + }, { + "id": 944, + "name": "高新技术产业开发区", + "zipcode": "130015" + }] + }, { + "id": 87, + "name": "吉林市", + "child": [{ + "id": 945, + "name": "昌邑区", + "zipcode": "132002" + }, { + "id": 946, + "name": "龙潭区", + "zipcode": "132021" + }, { + "id": 947, + "name": "船营区", + "zipcode": "132011" + }, { + "id": 948, + "name": "丰满区", + "zipcode": "132013" + }, { + "id": 949, + "name": "永吉县", + "zipcode": "132200" + }, { + "id": 950, + "name": "蛟河市", + "zipcode": "132500" + }, { + "id": 951, + "name": "桦甸市", + "zipcode": "132400" + }, { + "id": 952, + "name": "舒兰市", + "zipcode": "132600" + }, { + "id": 953, + "name": "磐石市", + "zipcode": "132300" + }] + }, { + "id": 88, + "name": "四平市", + "child": [{ + "id": 954, + "name": "铁西区", + "zipcode": "136000" + }, { + "id": 955, + "name": "铁东区", + "zipcode": "136001" + }, { + "id": 956, + "name": "梨树县", + "zipcode": "136500" + }, { + "id": 957, + "name": "伊通满族自治县", + "zipcode": "130700" + }, { + "id": 958, + "name": "公主岭市", + "zipcode": "136100" + }, { + "id": 959, + "name": "双辽市", + "zipcode": "136400" + }] + }, { + "id": 89, + "name": "辽源市", + "child": [{ + "id": 960, + "name": "龙山区", + "zipcode": "136200" + }, { + "id": 961, + "name": "西安区", + "zipcode": "136201" + }, { + "id": 962, + "name": "东丰县", + "zipcode": "136300" + }, { + "id": 963, + "name": "东辽县", + "zipcode": "136600" + }] + }, { + "id": 90, + "name": "通化市", + "child": [{ + "id": 964, + "name": "东昌区", + "zipcode": "134001" + }, { + "id": 965, + "name": "二道江区", + "zipcode": "134003" + }, { + "id": 966, + "name": "通化县", + "zipcode": "134100" + }, { + "id": 967, + "name": "辉南县", + "zipcode": "135100" + }, { + "id": 968, + "name": "柳河县", + "zipcode": "135300" + }, { + "id": 969, + "name": "梅河口市", + "zipcode": "135000" + }, { + "id": 970, + "name": "集安市", + "zipcode": "134200" + }] + }, { + "id": 91, + "name": "白山市", + "child": [{ + "id": 971, + "name": "八道江区", + "zipcode": "134300" + }, { + "id": 972, + "name": "抚松县", + "zipcode": "134500" + }, { + "id": 973, + "name": "靖宇县", + "zipcode": "135200" + }, { + "id": 974, + "name": "长白朝鲜族自治县", + "zipcode": "134400" + }, { + "id": 975, + "name": "江源县", + "zipcode": "134700" + }, { + "id": 976, + "name": "临江市", + "zipcode": "134600" + }] + }, { + "id": 92, + "name": "松原市", + "child": [{ + "id": 978, + "name": "宁江区", + "zipcode": "138000" + }, { + "id": 979, + "name": "前郭尔罗斯蒙古族自治县", + "zipcode": "138000" + }, { + "id": 980, + "name": "长岭县", + "zipcode": "131500" + }, { + "id": 981, + "name": "乾安县", + "zipcode": "131400" + }, { + "id": 982, + "name": "扶余县", + "zipcode": "131200" + }] + }, { + "id": 93, + "name": "白城市", + "child": [{ + "id": 983, + "name": "洮北区", + "zipcode": "137000" + }, { + "id": 984, + "name": "镇赉县", + "zipcode": "137300" + }, { + "id": 985, + "name": "通榆县", + "zipcode": "137200" + }, { + "id": 986, + "name": "洮南市", + "zipcode": "137100" + }, { + "id": 987, + "name": "大安市", + "zipcode": "131300" + }] + }, { + "id": 94, + "name": "延边朝鲜族自治州", + "child": [{ + "id": 988, + "name": "延吉市", + "zipcode": "133000" + }, { + "id": 989, + "name": "图们市", + "zipcode": "133100" + }, { + "id": 990, + "name": "敦化市", + "zipcode": "133700" + }, { + "id": 991, + "name": "珲春市", + "zipcode": "133300" + }, { + "id": 992, + "name": "龙井市", + "zipcode": "133400" + }, { + "id": 993, + "name": "和龙市", + "zipcode": "133500" + }, { + "id": 994, + "name": "汪清县", + "zipcode": "133200" + }, { + "id": 995, + "name": "安图县", + "zipcode": "133600" + }] + }] +}, { + "id": 9, + "name": "黑龙江", + "child": [{ + "id": 95, + "name": "哈尔滨市", + "child": [{ + "id": 996, + "name": "道里区", + "zipcode": "150010" + }, { + "id": 997, + "name": "南岗区", + "zipcode": "150006" + }, { + "id": 998, + "name": "道外区", + "zipcode": "150020" + }, { + "id": 999, + "name": "香坊区", + "zipcode": "150036" + }, { + "id": 1000, + "name": "动力区", + "zipcode": "150040" + }, { + "id": 1001, + "name": "平房区", + "zipcode": "150060" + }, { + "id": 1002, + "name": "松北区", + "zipcode": "150028" + }, { + "id": 1003, + "name": "呼兰区", + "zipcode": "150500" + }, { + "id": 1004, + "name": "依兰县", + "zipcode": "154800" + }, { + "id": 1005, + "name": "方正县", + "zipcode": "150800" + }, { + "id": 1006, + "name": "宾县", + "zipcode": "150400" + }, { + "id": 1007, + "name": "巴彦县", + "zipcode": "151800" + }, { + "id": 1008, + "name": "木兰县", + "zipcode": "151900" + }, { + "id": 1009, + "name": "通河县", + "zipcode": "150900" + }, { + "id": 1010, + "name": "延寿县", + "zipcode": "150700" + }, { + "id": 1011, + "name": "阿城区", + "zipcode": "150300" + }, { + "id": 1012, + "name": "双城市", + "zipcode": "150100" + }, { + "id": 1013, + "name": "尚志市", + "zipcode": "150600" + }, { + "id": 1014, + "name": "五常市", + "zipcode": "150200" + }] + }, { + "id": 96, + "name": "齐齐哈尔市", + "child": [{ + "id": 1016, + "name": "龙沙区", + "zipcode": "161000" + }, { + "id": 1017, + "name": "建华区", + "zipcode": "161006" + }, { + "id": 1018, + "name": "铁锋区", + "zipcode": "161000" + }, { + "id": 1019, + "name": "昂昂溪区", + "zipcode": "161031" + }, { + "id": 1020, + "name": "富拉尔基区", + "zipcode": "161041" + }, { + "id": 1021, + "name": "碾子山区", + "zipcode": "161046" + }, { + "id": 1022, + "name": "梅里斯达斡尔族区", + "zipcode": "161021" + }, { + "id": 1023, + "name": "龙江县", + "zipcode": "161100" + }, { + "id": 1024, + "name": "依安县", + "zipcode": "161500" + }, { + "id": 1025, + "name": "泰来县", + "zipcode": "162400" + }, { + "id": 1026, + "name": "甘南县", + "zipcode": "162100" + }, { + "id": 1027, + "name": "富裕县", + "zipcode": "161200" + }, { + "id": 1028, + "name": "克山县", + "zipcode": "161600" + }, { + "id": 1029, + "name": "克东县", + "zipcode": "164800" + }, { + "id": 1030, + "name": "拜泉县", + "zipcode": "164700" + }, { + "id": 1031, + "name": "讷河市", + "zipcode": "161300" + }] + }, { + "id": 97, + "name": "鸡西市", + "child": [{ + "id": 1032, + "name": "鸡冠区", + "zipcode": "158100" + }, { + "id": 1033, + "name": "恒山区", + "zipcode": "158130" + }, { + "id": 1034, + "name": "滴道区", + "zipcode": "158150" + }, { + "id": 1035, + "name": "梨树区", + "zipcode": "158160" + }, { + "id": 1036, + "name": "城子河区", + "zipcode": "158170" + }, { + "id": 1037, + "name": "麻山区", + "zipcode": "158180" + }, { + "id": 1038, + "name": "鸡东县", + "zipcode": "158200" + }, { + "id": 1039, + "name": "虎林市", + "zipcode": "158400" + }, { + "id": 1040, + "name": "密山市", + "zipcode": "158300" + }] + }, { + "id": 98, + "name": "鹤岗市", + "child": [{ + "id": 1041, + "name": "向阳区", + "zipcode": "154100" + }, { + "id": 1042, + "name": "工农区", + "zipcode": "154101" + }, { + "id": 1043, + "name": "南山区", + "zipcode": "154104" + }, { + "id": 1044, + "name": "兴安区", + "zipcode": "154102" + }, { + "id": 1045, + "name": "东山区", + "zipcode": "154106" + }, { + "id": 1046, + "name": "兴山区", + "zipcode": "154105" + }, { + "id": 1047, + "name": "萝北县", + "zipcode": "154200" + }, { + "id": 1048, + "name": "绥滨县", + "zipcode": "156200" + }] + }, { + "id": 99, + "name": "双鸭山市", + "child": [{ + "id": 1049, + "name": "尖山区", + "zipcode": "155100" + }, { + "id": 1050, + "name": "岭东区", + "zipcode": "155120" + }, { + "id": 1051, + "name": "四方台区", + "zipcode": "155130" + }, { + "id": 1052, + "name": "宝山区", + "zipcode": "155131" + }, { + "id": 1053, + "name": "集贤县", + "zipcode": "155900" + }, { + "id": 1054, + "name": "友谊县", + "zipcode": "155800" + }, { + "id": 1055, + "name": "宝清县", + "zipcode": "155600" + }, { + "id": 1056, + "name": "饶河县", + "zipcode": "155700" + }] + }, { + "id": 100, + "name": "大庆市", + "child": [{ + "id": 1057, + "name": "萨尔图区", + "zipcode": "163001" + }, { + "id": 1058, + "name": "龙凤区", + "zipcode": "163711" + }, { + "id": 1059, + "name": "让胡路区", + "zipcode": "163712" + }, { + "id": 1060, + "name": "红岗区", + "zipcode": "163511" + }, { + "id": 1061, + "name": "大同区", + "zipcode": "163515" + }, { + "id": 1062, + "name": "肇州县", + "zipcode": "166400" + }, { + "id": 1063, + "name": "肇源县", + "zipcode": "166500" + }, { + "id": 1064, + "name": "林甸县", + "zipcode": "166300" + }, { + "id": 1065, + "name": "杜尔伯特蒙古族自治县", + "zipcode": "166200" + }] + }, { + "id": 101, + "name": "伊春市", + "child": [{ + "id": 1066, + "name": "伊春区", + "zipcode": "153000" + }, { + "id": 1067, + "name": "南岔区", + "zipcode": "153100" + }, { + "id": 1068, + "name": "友好区", + "zipcode": "153031" + }, { + "id": 1069, + "name": "西林区", + "zipcode": "153025" + }, { + "id": 1070, + "name": "翠峦区", + "zipcode": "153013" + }, { + "id": 1071, + "name": "新青区", + "zipcode": "153036" + }, { + "id": 1072, + "name": "美溪区", + "zipcode": "153021" + }, { + "id": 1073, + "name": "金山屯区", + "zipcode": "153026" + }, { + "id": 1074, + "name": "五营区", + "zipcode": "153033" + }, { + "id": 1075, + "name": "乌马河区", + "zipcode": "153011" + }, { + "id": 1076, + "name": "汤旺河区", + "zipcode": "153037" + }, { + "id": 1077, + "name": "带岭区", + "zipcode": "153106" + }, { + "id": 1078, + "name": "乌伊岭区", + "zipcode": "153038" + }, { + "id": 1079, + "name": "红星区", + "zipcode": "153035" + }, { + "id": 1080, + "name": "上甘岭区", + "zipcode": "153032" + }, { + "id": 1081, + "name": "嘉荫县", + "zipcode": "153200" + }, { + "id": 1082, + "name": "铁力市", + "zipcode": "152500" + }] + }, { + "id": 102, + "name": "佳木斯市", + "child": [{ + "id": 1083, + "name": "向阳区", + "zipcode": "154002" + }, { + "id": 1084, + "name": "前进区", + "zipcode": "154002" + }, { + "id": 1085, + "name": "东风区", + "zipcode": "154005" + }, { + "id": 1086, + "name": "郊区", + "zipcode": "154004" + }, { + "id": 1087, + "name": "桦南县", + "zipcode": "154400" + }, { + "id": 1088, + "name": "桦川县", + "zipcode": "154300" + }, { + "id": 1089, + "name": "汤原县", + "zipcode": "154700" + }, { + "id": 1090, + "name": "抚远县", + "zipcode": "156500" + }, { + "id": 1091, + "name": "同江市", + "zipcode": "156400" + }, { + "id": 1092, + "name": "富锦市", + "zipcode": "156100" + }] + }, { + "id": 103, + "name": "七台河市", + "child": [{ + "id": 1093, + "name": "新兴区", + "zipcode": "154604" + }, { + "id": 1094, + "name": "桃山区", + "zipcode": "154600" + }, { + "id": 1095, + "name": "茄子河区", + "zipcode": "154622" + }, { + "id": 1096, + "name": "勃利县", + "zipcode": "154500" + }] + }, { + "id": 104, + "name": "牡丹江市", + "child": [{ + "id": 1097, + "name": "东安区", + "zipcode": "157000" + }, { + "id": 1098, + "name": "爱民区", + "zipcode": "157009" + }, { + "id": 1099, + "name": "阳明区", + "zipcode": "157013" + }, { + "id": 1100, + "name": "西安区", + "zipcode": "157000" + }, { + "id": 1101, + "name": "东宁县", + "zipcode": "157200" + }, { + "id": 1102, + "name": "林口县", + "zipcode": "157600" + }, { + "id": 1103, + "name": "绥芬河市", + "zipcode": "157300" + }, { + "id": 1104, + "name": "海林市", + "zipcode": "157100" + }, { + "id": 1105, + "name": "宁安市", + "zipcode": "157400" + }, { + "id": 1106, + "name": "穆棱市", + "zipcode": "157500" + }] + }, { + "id": 105, + "name": "黑河市", + "child": [{ + "id": 1107, + "name": "爱辉区", + "zipcode": "164300" + }, { + "id": 1108, + "name": "嫩江县", + "zipcode": "161400" + }, { + "id": 1109, + "name": "逊克县", + "zipcode": "164400" + }, { + "id": 1110, + "name": "孙吴县", + "zipcode": "164200" + }, { + "id": 1111, + "name": "北安市", + "zipcode": "164000" + }, { + "id": 1112, + "name": "五大连池市", + "zipcode": "164100" + }] + }, { + "id": 106, + "name": "绥化市", + "child": [{ + "id": 1113, + "name": "北林区", + "zipcode": "152000" + }, { + "id": 1114, + "name": "望奎县", + "zipcode": "152100" + }, { + "id": 1115, + "name": "兰西县", + "zipcode": "151500" + }, { + "id": 1116, + "name": "青冈县", + "zipcode": "151600" + }, { + "id": 1117, + "name": "庆安县", + "zipcode": "152400" + }, { + "id": 1118, + "name": "明水县", + "zipcode": "151700" + }, { + "id": 1119, + "name": "绥棱县", + "zipcode": "152200" + }, { + "id": 1120, + "name": "安达市", + "zipcode": "151400" + }, { + "id": 1121, + "name": "肇东市", + "zipcode": "151100" + }, { + "id": 1122, + "name": "海伦市", + "zipcode": "152300" + }] + }, { + "id": 107, + "name": "大兴安岭地区", + "child": [{ + "id": 1123, + "name": "呼玛县", + "zipcode": "165100" + }, { + "id": 1124, + "name": "塔河县", + "zipcode": "165200" + }, { + "id": 1125, + "name": "漠河县", + "zipcode": "165300" + }, { + "id": 1126, + "name": "加格达奇区", + "zipcode": "165000" + }, { + "id": 1127, + "name": "松岭区", + "zipcode": "165012" + }, { + "id": 1128, + "name": "新林区", + "zipcode": "165023" + }, { + "id": 1129, + "name": "呼中区", + "zipcode": "165036" + }] + }] +}, { + "id": 10, + "name": "上海", + "child": [{ + "id": 108, + "name": "上海市", + "child": [{ + "id": 1130, + "name": "黄浦区", + "zipcode": "200001" + }, { + "id": 1131, + "name": "卢湾区", + "zipcode": "200020" + }, { + "id": 1132, + "name": "徐汇区", + "zipcode": "200030" + }, { + "id": 1133, + "name": "长宁区", + "zipcode": "200050" + }, { + "id": 1134, + "name": "静安区", + "zipcode": "200040" + }, { + "id": 1135, + "name": "普陀区", + "zipcode": "200333" + }, { + "id": 1136, + "name": "闸北区", + "zipcode": "200070" + }, { + "id": 1137, + "name": "虹口区", + "zipcode": "200080" + }, { + "id": 1138, + "name": "杨浦区", + "zipcode": "200082" + }, { + "id": 1139, + "name": "闵行区", + "zipcode": "201100" + }, { + "id": 1140, + "name": "宝山区", + "zipcode": "201900" + }, { + "id": 1141, + "name": "嘉定区", + "zipcode": "201800" + }, { + "id": 1142, + "name": "浦东新区", + "zipcode": "200135" + }, { + "id": 1143, + "name": "金山区", + "zipcode": "200540" + }, { + "id": 1144, + "name": "松江区", + "zipcode": "201600" + }, { + "id": 1145, + "name": "青浦区", + "zipcode": "201700" + }, { + "id": 1146, + "name": "南汇区", + "zipcode": "201300" + }, { + "id": 1147, + "name": "奉贤区", + "zipcode": "201400" + }, { + "id": 1148, + "name": "崇明县", + "zipcode": "202150" + }] + }] +}, { + "id": 11, + "name": "江苏", + "child": [{ + "id": 109, + "name": "南京市", + "child": [{ + "id": 1149, + "name": "玄武区", + "zipcode": "210018" + }, { + "id": 1150, + "name": "白下区", + "zipcode": "210002" + }, { + "id": 1151, + "name": "秦淮区", + "zipcode": "210001" + }, { + "id": 1152, + "name": "建邺区", + "zipcode": "210004" + }, { + "id": 1153, + "name": "鼓楼区", + "zipcode": "210009" + }, { + "id": 1154, + "name": "下关区", + "zipcode": "210011" + }, { + "id": 1155, + "name": "浦口区", + "zipcode": "211800" + }, { + "id": 1156, + "name": "栖霞区", + "zipcode": "210046" + }, { + "id": 1157, + "name": "雨花台区", + "zipcode": "210012" + }, { + "id": 1158, + "name": "江宁区", + "zipcode": "211100" + }, { + "id": 1159, + "name": "六合区", + "zipcode": "211500" + }, { + "id": 1160, + "name": "溧水县", + "zipcode": "211200" + }, { + "id": 1161, + "name": "高淳县", + "zipcode": "211300" + }] + }, { + "id": 110, + "name": "无锡市", + "child": [{ + "id": 1162, + "name": "崇安区", + "zipcode": "214002" + }, { + "id": 1163, + "name": "南长区", + "zipcode": "214021" + }, { + "id": 1164, + "name": "北塘区", + "zipcode": "214044" + }, { + "id": 1165, + "name": "锡山区", + "zipcode": "214101" + }, { + "id": 1166, + "name": "惠山区", + "zipcode": "214174" + }, { + "id": 1167, + "name": "滨湖区", + "zipcode": "214062" + }, { + "id": 1168, + "name": "江阴市", + "zipcode": "214400" + }, { + "id": 1169, + "name": "宜兴市", + "zipcode": "214200" + }, { + "id": 1170, + "name": "新区", + "zipcode": "214028" + }] + }, { + "id": 111, + "name": "徐州市", + "child": [{ + "id": 1171, + "name": "云龙区", + "zipcode": "221009" + }, { + "id": 1172, + "name": "鼓楼区", + "zipcode": "221005" + }, { + "id": 1173, + "name": "九里区", + "zipcode": "221140" + }, { + "id": 1174, + "name": "泉山区", + "zipcode": "221006" + }, { + "id": 1175, + "name": "铜山县", + "zipcode": "221116" + }, { + "id": 1176, + "name": "贾汪区", + "zipcode": "221011" + }, { + "id": 1177, + "name": "丰县", + "zipcode": "221700" + }, { + "id": 1178, + "name": "沛县", + "zipcode": "221600" + }, { + "id": 1179, + "name": "睢宁县", + "zipcode": "221200" + }, { + "id": 1180, + "name": "新沂市", + "zipcode": "221400" + }, { + "id": 1181, + "name": "邳州市", + "zipcode": "221300" + }] + }, { + "id": 112, + "name": "常州市", + "child": [{ + "id": 1182, + "name": "天宁区", + "zipcode": "213003" + }, { + "id": 1183, + "name": "钟楼区", + "zipcode": "213002" + }, { + "id": 1184, + "name": "戚墅堰区", + "zipcode": "213011" + }, { + "id": 1185, + "name": "新北区", + "zipcode": "213001" + }, { + "id": 1186, + "name": "武进区", + "zipcode": "213161" + }, { + "id": 1187, + "name": "溧阳市", + "zipcode": "213300" + }, { + "id": 1188, + "name": "金坛市", + "zipcode": "213200" + }] + }, { + "id": 113, + "name": "苏州市", + "child": [{ + "id": 1192, + "name": "虎丘区", + "zipcode": "215004" + }, { + "id": 1193, + "name": "吴中区", + "zipcode": "215128" + }, { + "id": 1194, + "name": "相城区", + "zipcode": "215131" + }, { + "id": 1195, + "name": "常熟市", + "zipcode": "215500" + }, { + "id": 1196, + "name": "张家港市", + "zipcode": "215600" + }, { + "id": 1197, + "name": "昆山市", + "zipcode": "215300" + }, { + "id": 1198, + "name": "吴江市", + "zipcode": "215200" + }, { + "id": 1199, + "name": "太仓市", + "zipcode": "215400" + }, { + "id": 1200, + "name": "工业园区", + "zipcode": "215028" + }, { + "id": 1201, + "name": "高新区", + "zipcode": "215011" + }, { + "id": 7589, + "name": "姑苏区", + "zipcode": "215008" + }] + }, { + "id": 114, + "name": "南通市", + "child": [{ + "id": 1202, + "name": "崇川区", + "zipcode": "226001" + }, { + "id": 1203, + "name": "港闸区", + "zipcode": "226001" + }, { + "id": 1204, + "name": "海安县", + "zipcode": "226600" + }, { + "id": 1205, + "name": "如东县", + "zipcode": "226400" + }, { + "id": 1206, + "name": "启东市", + "zipcode": "226200" + }, { + "id": 1207, + "name": "如皋市", + "zipcode": "226500" + }, { + "id": 1208, + "name": "通州市", + "zipcode": "226300" + }, { + "id": 1209, + "name": "海门市", + "zipcode": "226100" + }, { + "id": 1210, + "name": "经济技术开发区", + "zipcode": "226009" + }] + }, { + "id": 115, + "name": "连云港市", + "child": [{ + "id": 1211, + "name": "连云区", + "zipcode": "222042" + }, { + "id": 1212, + "name": "新浦区", + "zipcode": "222003" + }, { + "id": 1213, + "name": "海州区", + "zipcode": "222023" + }, { + "id": 1214, + "name": "赣榆县", + "zipcode": "222100" + }, { + "id": 1215, + "name": "东海县", + "zipcode": "222300" + }, { + "id": 1216, + "name": "灌云县", + "zipcode": "222200" + }, { + "id": 1217, + "name": "灌南县", + "zipcode": "223500" + }] + }, { + "id": 116, + "name": "淮安市", + "child": [{ + "id": 1218, + "name": "清河区", + "zipcode": "223001" + }, { + "id": 1219, + "name": "楚州区", + "zipcode": "223200" + }, { + "id": 1220, + "name": "淮阴区", + "zipcode": "223300" + }, { + "id": 1221, + "name": "清浦区", + "zipcode": "223002" + }, { + "id": 1222, + "name": "涟水县", + "zipcode": "223400" + }, { + "id": 1223, + "name": "洪泽县", + "zipcode": "223100" + }, { + "id": 1224, + "name": "盱眙县", + "zipcode": "211700" + }, { + "id": 1225, + "name": "金湖县", + "zipcode": "211600" + }] + }, { + "id": 117, + "name": "盐城市", + "child": [{ + "id": 1226, + "name": "亭湖区", + "zipcode": "224005" + }, { + "id": 1227, + "name": "盐都区", + "zipcode": "224055" + }, { + "id": 1228, + "name": "响水县", + "zipcode": "224600" + }, { + "id": 1229, + "name": "滨海县", + "zipcode": "224500" + }, { + "id": 1230, + "name": "阜宁县", + "zipcode": "224400" + }, { + "id": 1231, + "name": "射阳县", + "zipcode": "224300" + }, { + "id": 1232, + "name": "建湖县", + "zipcode": "224700" + }, { + "id": 1233, + "name": "东台市", + "zipcode": "224200" + }, { + "id": 1234, + "name": "大丰市", + "zipcode": "224100" + }] + }, { + "id": 118, + "name": "扬州市", + "child": [{ + "id": 1235, + "name": "广陵区", + "zipcode": "225002" + }, { + "id": 1236, + "name": "邗江区", + "zipcode": "225002" + }, { + "id": 1237, + "name": "宝应县", + "zipcode": "225800" + }, { + "id": 1238, + "name": "仪征市", + "zipcode": "211400" + }, { + "id": 1239, + "name": "高邮市", + "zipcode": "225600" + }, { + "id": 1240, + "name": "江都市", + "zipcode": "225200" + }, { + "id": 1241, + "name": "维扬区", + "zipcode": "225002" + }, { + "id": 1242, + "name": "经济开发区", + "zipcode": "225101" + }] + }, { + "id": 119, + "name": "镇江市", + "child": [{ + "id": 1243, + "name": "京口区", + "zipcode": "212001" + }, { + "id": 1244, + "name": "润州区", + "zipcode": "212004" + }, { + "id": 1245, + "name": "丹徒区", + "zipcode": "212001" + }, { + "id": 1246, + "name": "丹阳市", + "zipcode": "212300" + }, { + "id": 1247, + "name": "扬中市", + "zipcode": "212200" + }, { + "id": 1248, + "name": "句容市", + "zipcode": "212400" + }, { + "id": 1249, + "name": "新区", + "zipcode": "212132" + }] + }, { + "id": 120, + "name": "泰州市", + "child": [{ + "id": 1250, + "name": "海陵区", + "zipcode": "225300" + }, { + "id": 1251, + "name": "高港区", + "zipcode": "225321" + }, { + "id": 1252, + "name": "兴化市", + "zipcode": "225700" + }, { + "id": 1253, + "name": "靖江市", + "zipcode": "214500" + }, { + "id": 1254, + "name": "泰兴市", + "zipcode": "225400" + }, { + "id": 1255, + "name": "姜堰市", + "zipcode": "225500" + }] + }, { + "id": 121, + "name": "宿迁市", + "child": [{ + "id": 1256, + "name": "宿城区", + "zipcode": "223800" + }, { + "id": 1257, + "name": "宿豫区", + "zipcode": "223800" + }, { + "id": 1258, + "name": "沭阳县", + "zipcode": "223600" + }, { + "id": 1259, + "name": "泗阳县", + "zipcode": "223700" + }, { + "id": 1260, + "name": "泗洪县", + "zipcode": "223900" + }] + }] +}, { + "id": 12, + "name": "浙江", + "child": [{ + "id": 122, + "name": "杭州市", + "child": [{ + "id": 1261, + "name": "上城区", + "zipcode": "310002" + }, { + "id": 1262, + "name": "下城区", + "zipcode": "310006" + }, { + "id": 1263, + "name": "江干区", + "zipcode": "310016" + }, { + "id": 1264, + "name": "拱墅区", + "zipcode": "310011" + }, { + "id": 1265, + "name": "西湖区", + "zipcode": "310013" + }, { + "id": 1266, + "name": "滨江区", + "zipcode": "310051" + }, { + "id": 1267, + "name": "萧山区", + "zipcode": "311200" + }, { + "id": 1268, + "name": "余杭区", + "zipcode": "311100" + }, { + "id": 1269, + "name": "桐庐县", + "zipcode": "311500" + }, { + "id": 1270, + "name": "淳安县", + "zipcode": "311700" + }, { + "id": 1271, + "name": "建德市", + "zipcode": "311600" + }, { + "id": 1272, + "name": "富阳市", + "zipcode": "311400" + }, { + "id": 1273, + "name": "临安市", + "zipcode": "311300" + }] + }, { + "id": 123, + "name": "宁波市", + "child": [{ + "id": 1274, + "name": "海曙区", + "zipcode": "315000" + }, { + "id": 1275, + "name": "江东区", + "zipcode": "315040" + }, { + "id": 1276, + "name": "江北区", + "zipcode": "315040" + }, { + "id": 1277, + "name": "北仑区", + "zipcode": "315800" + }, { + "id": 1278, + "name": "镇海区", + "zipcode": "315200" + }, { + "id": 1279, + "name": "鄞州区", + "zipcode": "315100" + }, { + "id": 1280, + "name": "象山县", + "zipcode": "315700" + }, { + "id": 1281, + "name": "宁海县", + "zipcode": "315600" + }, { + "id": 1282, + "name": "余姚市", + "zipcode": "315400" + }, { + "id": 1283, + "name": "慈溪市", + "zipcode": "315300" + }, { + "id": 1284, + "name": "奉化市", + "zipcode": "315500" + }, { + "id": 3382, + "name": "国家高新区", + "zipcode": "315040" + }] + }, { + "id": 124, + "name": "温州市", + "child": [{ + "id": 1285, + "name": "鹿城区", + "zipcode": "325000" + }, { + "id": 1286, + "name": "龙湾区", + "zipcode": "325013" + }, { + "id": 1287, + "name": "瓯海区", + "zipcode": "325005" + }, { + "id": 1288, + "name": "洞头县", + "zipcode": "325700" + }, { + "id": 1289, + "name": "永嘉县", + "zipcode": "315100" + }, { + "id": 1290, + "name": "平阳县", + "zipcode": "325400" + }, { + "id": 1291, + "name": "苍南县", + "zipcode": "325800" + }, { + "id": 1292, + "name": "文成县", + "zipcode": "325300" + }, { + "id": 1293, + "name": "泰顺县", + "zipcode": "325500" + }, { + "id": 1294, + "name": "瑞安市", + "zipcode": "325200" + }, { + "id": 1295, + "name": "乐清市", + "zipcode": "325600" + }] + }, { + "id": 125, + "name": "嘉兴市", + "child": [{ + "id": 1296, + "name": "秀洲区", + "zipcode": "314001" + }, { + "id": 1297, + "name": "嘉善县", + "zipcode": "314100" + }, { + "id": 1298, + "name": "海盐县", + "zipcode": "314300" + }, { + "id": 1299, + "name": "海宁市", + "zipcode": "314400" + }, { + "id": 1300, + "name": "平湖市", + "zipcode": "314200" + }, { + "id": 1301, + "name": "桐乡市", + "zipcode": "314500" + }, { + "id": 1302, + "name": "南湖区", + "zipcode": "314001" + }] + }, { + "id": 126, + "name": "湖州市", + "child": [{ + "id": 1303, + "name": "吴兴区", + "zipcode": "313000" + }, { + "id": 1304, + "name": "南浔区", + "zipcode": "313009" + }, { + "id": 1305, + "name": "德清县", + "zipcode": "313200" + }, { + "id": 1306, + "name": "长兴县", + "zipcode": "313100" + }, { + "id": 1307, + "name": "安吉县", + "zipcode": "313300" + }] + }, { + "id": 127, + "name": "绍兴市", + "child": [{ + "id": 1308, + "name": "越城区", + "zipcode": "312000" + }, { + "id": 1309, + "name": "绍兴县", + "zipcode": "312000" + }, { + "id": 1310, + "name": "新昌县", + "zipcode": "312500" + }, { + "id": 1311, + "name": "诸暨市", + "zipcode": "311800" + }, { + "id": 1312, + "name": "上虞市", + "zipcode": "312300" + }, { + "id": 1313, + "name": "嵊州市", + "zipcode": "312400" + }] + }, { + "id": 128, + "name": "金华市", + "child": [{ + "id": 1314, + "name": "婺城区", + "zipcode": "321000" + }, { + "id": 1315, + "name": "金东区", + "zipcode": "321000" + }, { + "id": 1316, + "name": "武义县", + "zipcode": "321200" + }, { + "id": 1317, + "name": "浦江县", + "zipcode": "322200" + }, { + "id": 1318, + "name": "磐安县", + "zipcode": "322300" + }, { + "id": 1319, + "name": "兰溪市", + "zipcode": "321100" + }, { + "id": 1320, + "name": "义乌市", + "zipcode": "322000" + }, { + "id": 1321, + "name": "东阳市", + "zipcode": "322100" + }, { + "id": 1322, + "name": "永康市", + "zipcode": "321300" + }] + }, { + "id": 129, + "name": "衢州市", + "child": [{ + "id": 1323, + "name": "柯城区", + "zipcode": "324100" + }, { + "id": 1324, + "name": "衢江区", + "zipcode": "324022" + }, { + "id": 1325, + "name": "常山县", + "zipcode": "324200" + }, { + "id": 1326, + "name": "开化县", + "zipcode": "324300" + }, { + "id": 1327, + "name": "龙游县", + "zipcode": "324400" + }, { + "id": 1328, + "name": "江山市", + "zipcode": "324100" + }] + }, { + "id": 130, + "name": "舟山市", + "child": [{ + "id": 1329, + "name": "定海区", + "zipcode": "316000" + }, { + "id": 1330, + "name": "普陀区", + "zipcode": "316100" + }, { + "id": 1331, + "name": "岱山县", + "zipcode": "316200" + }, { + "id": 1332, + "name": "嵊泗县", + "zipcode": "202450" + }] + }, { + "id": 131, + "name": "台州市", + "child": [{ + "id": 1333, + "name": "椒江区", + "zipcode": "318000" + }, { + "id": 1334, + "name": "路桥区", + "zipcode": "318050" + }, { + "id": 1335, + "name": "黄岩区", + "zipcode": "318020" + }, { + "id": 1336, + "name": "玉环县", + "zipcode": "317600" + }, { + "id": 1337, + "name": "三门县", + "zipcode": "317100" + }, { + "id": 1338, + "name": "天台县", + "zipcode": "317200" + }, { + "id": 1339, + "name": "仙居县", + "zipcode": "317300" + }, { + "id": 1340, + "name": "温岭市", + "zipcode": "317500" + }, { + "id": 1341, + "name": "临海市", + "zipcode": "317000" + }] + }, { + "id": 132, + "name": "丽水市", + "child": [{ + "id": 1342, + "name": "莲都区", + "zipcode": "323000" + }, { + "id": 1343, + "name": "青田县", + "zipcode": "323900" + }, { + "id": 1344, + "name": "缙云县", + "zipcode": "321400" + }, { + "id": 1345, + "name": "遂昌县", + "zipcode": "323300" + }, { + "id": 1346, + "name": "松阳县", + "zipcode": "323400" + }, { + "id": 1347, + "name": "云和县", + "zipcode": "323600" + }, { + "id": 1348, + "name": "庆元县", + "zipcode": "323800" + }, { + "id": 1349, + "name": "景宁畲族自治县", + "zipcode": "323500" + }, { + "id": 1350, + "name": "龙泉市", + "zipcode": "323700" + }] + }] +}, { + "id": 13, + "name": "安徽", + "child": [{ + "id": 133, + "name": "合肥市", + "child": [{ + "id": 1351, + "name": "瑶海区", + "zipcode": "230011" + }, { + "id": 1352, + "name": "庐阳区", + "zipcode": "230001" + }, { + "id": 1353, + "name": "蜀山区", + "zipcode": "230031" + }, { + "id": 1354, + "name": "包河区", + "zipcode": "230041" + }, { + "id": 1355, + "name": "长丰县", + "zipcode": "231100" + }, { + "id": 1356, + "name": "肥东县", + "zipcode": "231600" + }, { + "id": 1357, + "name": "肥西县", + "zipcode": "231200" + }, { + "id": 1358, + "name": "经济技术开发区", + "zipcode": "230601" + }, { + "id": 1359, + "name": "新站试验区", + "zipcode": "230011" + }, { + "id": 1360, + "name": "政务文化新区", + "zipcode": "230066" + }, { + "id": 1361, + "name": "高新技术产业开发区", + "zipcode": "230088" + }, { + "id": 1435, + "name": "居巢区", + "zipcode": "238000" + }, { + "id": 1436, + "name": "庐江县", + "zipcode": "231500" + }] + }, { + "id": 134, + "name": "芜湖市", + "child": [{ + "id": 1362, + "name": "镜湖区", + "zipcode": "241000" + }, { + "id": 1363, + "name": "鸠江区", + "zipcode": "241000" + }, { + "id": 1364, + "name": "芜湖县", + "zipcode": "241100" + }, { + "id": 1365, + "name": "繁昌县", + "zipcode": "241200" + }, { + "id": 1366, + "name": "南陵县", + "zipcode": "242400" + }, { + "id": 1367, + "name": "弋江区", + "zipcode": "241000" + }, { + "id": 1368, + "name": "三山区", + "zipcode": "241000" + }, { + "id": 1437, + "name": "无为县", + "zipcode": "238300" + }] + }, { + "id": 135, + "name": "蚌埠市", + "child": [{ + "id": 1369, + "name": "龙子湖区", + "zipcode": "233000" + }, { + "id": 1370, + "name": "蚌山区", + "zipcode": "233000" + }, { + "id": 1371, + "name": "禹会区", + "zipcode": "233000" + }, { + "id": 1372, + "name": "淮上区", + "zipcode": "233000" + }, { + "id": 1373, + "name": "怀远县", + "zipcode": "233400" + }, { + "id": 1374, + "name": "五河县", + "zipcode": "233300" + }, { + "id": 1375, + "name": "固镇县", + "zipcode": "233700" + }] + }, { + "id": 136, + "name": "淮南市", + "child": [{ + "id": 1376, + "name": "大通区", + "zipcode": "232033" + }, { + "id": 1377, + "name": "田家庵区", + "zipcode": "232000" + }, { + "id": 1378, + "name": "谢家集区", + "zipcode": "232052" + }, { + "id": 1379, + "name": "八公山区", + "zipcode": "232072" + }, { + "id": 1380, + "name": "潘集区", + "zipcode": "232082" + }, { + "id": 1381, + "name": "凤台县", + "zipcode": "232100" + }] + }, { + "id": 137, + "name": "马鞍山市", + "child": [{ + "id": 1382, + "name": "雨山区", + "zipcode": "243071" + }, { + "id": 1383, + "name": "花山区", + "zipcode": "243000" + }, { + "id": 1384, + "name": "金家庄区", + "zipcode": "243021" + }, { + "id": 1385, + "name": "当涂县", + "zipcode": "243100" + }, { + "id": 1386, + "name": "经济技术开发区", + "zipcode": "243041" + }, { + "id": 1438, + "name": "含山县", + "zipcode": "238100" + }, { + "id": 1439, + "name": "和县", + "zipcode": "238200" + }] + }, { + "id": 138, + "name": "淮北市", + "child": [{ + "id": 1387, + "name": "杜集区", + "zipcode": "235000" + }, { + "id": 1388, + "name": "相山区", + "zipcode": "235000" + }, { + "id": 1389, + "name": "烈山区", + "zipcode": "235000" + }, { + "id": 1390, + "name": "濉溪县", + "zipcode": "235100" + }] + }, { + "id": 139, + "name": "铜陵市", + "child": [{ + "id": 1391, + "name": "铜官山区", + "zipcode": "244000" + }, { + "id": 1392, + "name": "狮子山区", + "zipcode": "244000" + }, { + "id": 1393, + "name": "郊区", + "zipcode": "244000" + }, { + "id": 1394, + "name": "铜陵县", + "zipcode": "244100" + }] + }, { + "id": 140, + "name": "安庆市", + "child": [{ + "id": 1395, + "name": "迎江区", + "zipcode": "246001" + }, { + "id": 1396, + "name": "大观区", + "zipcode": "246002" + }, { + "id": 1397, + "name": "怀宁县", + "zipcode": "246100" + }, { + "id": 1398, + "name": "枞阳县", + "zipcode": "246700" + }, { + "id": 1399, + "name": "潜山县", + "zipcode": "246300" + }, { + "id": 1400, + "name": "太湖县", + "zipcode": "246400" + }, { + "id": 1401, + "name": "宿松县", + "zipcode": "246500" + }, { + "id": 1402, + "name": "望江县", + "zipcode": "246200" + }, { + "id": 1403, + "name": "岳西县", + "zipcode": "246600" + }, { + "id": 1404, + "name": "桐城市", + "zipcode": "231400" + }, { + "id": 1405, + "name": "宜秀区", + "zipcode": "246003" + }] + }, { + "id": 141, + "name": "黄山市", + "child": [{ + "id": 1406, + "name": "屯溪区", + "zipcode": "245000" + }, { + "id": 1407, + "name": "黄山区", + "zipcode": "242700" + }, { + "id": 1408, + "name": "徽州区", + "zipcode": "245061" + }, { + "id": 1409, + "name": "歙县", + "zipcode": "245200" + }, { + "id": 1410, + "name": "休宁县", + "zipcode": "245400" + }, { + "id": 1411, + "name": "黟县", + "zipcode": "245500" + }, { + "id": 1412, + "name": "祁门县", + "zipcode": "245600" + }] + }, { + "id": 142, + "name": "滁州市", + "child": [{ + "id": 1413, + "name": "琅琊区", + "zipcode": "239000" + }, { + "id": 1414, + "name": "南谯区", + "zipcode": "239000" + }, { + "id": 1415, + "name": "来安县", + "zipcode": "239200" + }, { + "id": 1416, + "name": "全椒县", + "zipcode": "239500" + }, { + "id": 1417, + "name": "定远县", + "zipcode": "233200" + }, { + "id": 1418, + "name": "凤阳县", + "zipcode": "233100" + }, { + "id": 1419, + "name": "天长市", + "zipcode": "239300" + }, { + "id": 1420, + "name": "明光市", + "zipcode": "239400" + }] + }, { + "id": 143, + "name": "阜阳市", + "child": [{ + "id": 1421, + "name": "颍州区", + "zipcode": "236001" + }, { + "id": 1422, + "name": "颍东区", + "zipcode": "236058" + }, { + "id": 1423, + "name": "颍泉区", + "zipcode": "236045" + }, { + "id": 1424, + "name": "临泉县", + "zipcode": "236400" + }, { + "id": 1425, + "name": "太和县", + "zipcode": "236600" + }, { + "id": 1426, + "name": "阜南县", + "zipcode": "236300" + }, { + "id": 1427, + "name": "颍上县", + "zipcode": "236200" + }, { + "id": 1428, + "name": "界首市", + "zipcode": "236500" + }, { + "id": 1429, + "name": "经济开发区", + "zipcode": "236112" + }] + }, { + "id": 144, + "name": "宿州市", + "child": [{ + "id": 1430, + "name": "埇桥区", + "zipcode": "234000" + }, { + "id": 1431, + "name": "砀山县", + "zipcode": "235300" + }, { + "id": 1432, + "name": "萧县", + "zipcode": "235200" + }, { + "id": 1433, + "name": "灵璧县", + "zipcode": "234200" + }, { + "id": 1434, + "name": "泗县", + "zipcode": "234300" + }] + }, { + "id": 146, + "name": "六安市", + "child": [{ + "id": 1440, + "name": "金安区", + "zipcode": "237000" + }, { + "id": 1441, + "name": "裕安区", + "zipcode": "237010" + }, { + "id": 1442, + "name": "寿县", + "zipcode": "232200" + }, { + "id": 1443, + "name": "霍邱县", + "zipcode": "237400" + }, { + "id": 1444, + "name": "舒城县", + "zipcode": "231300" + }, { + "id": 1445, + "name": "金寨县", + "zipcode": "237300" + }, { + "id": 1446, + "name": "霍山县", + "zipcode": "237200" + }] + }, { + "id": 147, + "name": "亳州市", + "child": [{ + "id": 1447, + "name": "谯城区", + "zipcode": "236800" + }, { + "id": 1448, + "name": "涡阳县", + "zipcode": "233600" + }, { + "id": 1449, + "name": "蒙城县", + "zipcode": "233500" + }, { + "id": 1450, + "name": "利辛县", + "zipcode": "236700" + }] + }, { + "id": 148, + "name": "池州市", + "child": [{ + "id": 1451, + "name": "贵池区", + "zipcode": "247100" + }, { + "id": 1452, + "name": "东至县", + "zipcode": "247200" + }, { + "id": 1453, + "name": "石台县", + "zipcode": "245100" + }, { + "id": 1454, + "name": "青阳县", + "zipcode": "242800" + }] + }, { + "id": 149, + "name": "宣城市", + "child": [{ + "id": 1455, + "name": "宣州区", + "zipcode": "242000" + }, { + "id": 1456, + "name": "郎溪县", + "zipcode": "242100" + }, { + "id": 1457, + "name": "广德县", + "zipcode": "242200" + }, { + "id": 1458, + "name": "泾县", + "zipcode": "242500" + }, { + "id": 1459, + "name": "绩溪县", + "zipcode": "245300" + }, { + "id": 1460, + "name": "旌德县", + "zipcode": "242600" + }, { + "id": 1461, + "name": "宁国市", + "zipcode": "242300" + }] + }] +}, { + "id": 14, + "name": "福建", + "child": [{ + "id": 150, + "name": "福州市", + "child": [{ + "id": 1462, + "name": "鼓楼区", + "zipcode": "350001" + }, { + "id": 1463, + "name": "台江区", + "zipcode": "350004" + }, { + "id": 1464, + "name": "仓山区", + "zipcode": "350007" + }, { + "id": 1465, + "name": "马尾区", + "zipcode": "350015" + }, { + "id": 1466, + "name": "晋安区", + "zipcode": "350011" + }, { + "id": 1467, + "name": "闽侯县", + "zipcode": "350100" + }, { + "id": 1468, + "name": "连江县", + "zipcode": "350500" + }, { + "id": 1469, + "name": "罗源县", + "zipcode": "350600" + }, { + "id": 1470, + "name": "闽清县", + "zipcode": "350800" + }, { + "id": 1471, + "name": "永泰县", + "zipcode": "350700" + }, { + "id": 1472, + "name": "平潭县", + "zipcode": "350400" + }, { + "id": 1473, + "name": "福清市", + "zipcode": "350300" + }, { + "id": 1474, + "name": "长乐市", + "zipcode": "350200" + }] + }, { + "id": 151, + "name": "厦门市", + "child": [{ + "id": 1475, + "name": "思明区", + "zipcode": "361001" + }, { + "id": 1476, + "name": "海沧区", + "zipcode": "361026" + }, { + "id": 1477, + "name": "湖里区", + "zipcode": "361006" + }, { + "id": 1478, + "name": "集美区", + "zipcode": "361021" + }, { + "id": 1479, + "name": "同安区", + "zipcode": "361100" + }, { + "id": 1480, + "name": "翔安区", + "zipcode": "361101" + }, { + "id": 1481, + "name": "鼓浪屿区", + "zipcode": "361002" + }, { + "id": 1482, + "name": "象屿保税区", + "zipcode": "361006" + }, { + "id": 1483, + "name": "火炬高新区", + "zipcode": "361006" + }] + }, { + "id": 152, + "name": "莆田市", + "child": [{ + "id": 1485, + "name": "城厢区", + "zipcode": "351100" + }, { + "id": 1486, + "name": "涵江区", + "zipcode": "351111" + }, { + "id": 1487, + "name": "荔城区", + "zipcode": "351100" + }, { + "id": 1488, + "name": "秀屿区", + "zipcode": "351152" + }, { + "id": 1489, + "name": "仙游县", + "zipcode": "351200" + }] + }, { + "id": 153, + "name": "三明市", + "child": [{ + "id": 1490, + "name": "梅列区", + "zipcode": "365000" + }, { + "id": 1491, + "name": "三元区", + "zipcode": "365001" + }, { + "id": 1492, + "name": "明溪县", + "zipcode": "365200" + }, { + "id": 1493, + "name": "清流县", + "zipcode": "365300" + }, { + "id": 1494, + "name": "宁化县", + "zipcode": "365400" + }, { + "id": 1495, + "name": "大田县", + "zipcode": "366100" + }, { + "id": 1496, + "name": "尤溪县", + "zipcode": "365100" + }, { + "id": 1497, + "name": "沙县", + "zipcode": "365500" + }, { + "id": 1498, + "name": "将乐县", + "zipcode": "353300" + }, { + "id": 1499, + "name": "泰宁县", + "zipcode": "354400" + }, { + "id": 1500, + "name": "建宁县", + "zipcode": "354500" + }, { + "id": 1501, + "name": "永安市", + "zipcode": "366000" + }] + }, { + "id": 154, + "name": "泉州市", + "child": [{ + "id": 1502, + "name": "鲤城区", + "zipcode": "362000" + }, { + "id": 1503, + "name": "丰泽区", + "zipcode": "362000" + }, { + "id": 1504, + "name": "洛江区", + "zipcode": "362011" + }, { + "id": 1505, + "name": "泉港区", + "zipcode": "362114" + }, { + "id": 1506, + "name": "惠安县", + "zipcode": "362100" + }, { + "id": 1507, + "name": "安溪县", + "zipcode": "362400" + }, { + "id": 1508, + "name": "永春县", + "zipcode": "362600" + }, { + "id": 1509, + "name": "德化县", + "zipcode": "362500" + }, { + "id": 1510, + "name": "金门县", + "zipcode": "362000" + }, { + "id": 1511, + "name": "石狮市", + "zipcode": "362700" + }, { + "id": 1512, + "name": "晋江市", + "zipcode": "362200" + }, { + "id": 1513, + "name": "南安市", + "zipcode": "362300" + }, { + "id": 1514, + "name": "经济技术开发区", + "zipcode": "362005" + }] + }, { + "id": 155, + "name": "漳州市", + "child": [{ + "id": 1515, + "name": "芗城区", + "zipcode": "363000" + }, { + "id": 1516, + "name": "龙文区", + "zipcode": "363005" + }, { + "id": 1517, + "name": "云霄县", + "zipcode": "363300" + }, { + "id": 1518, + "name": "漳浦县", + "zipcode": "363200" + }, { + "id": 1519, + "name": "诏安县", + "zipcode": "363500" + }, { + "id": 1520, + "name": "长泰县", + "zipcode": "363900" + }, { + "id": 1521, + "name": "东山县", + "zipcode": "363400" + }, { + "id": 1522, + "name": "南靖县", + "zipcode": "363600" + }, { + "id": 1523, + "name": "平和县", + "zipcode": "363700" + }, { + "id": 1524, + "name": "华安县", + "zipcode": "363800" + }, { + "id": 1525, + "name": "龙海市", + "zipcode": "363100" + }] + }, { + "id": 156, + "name": "南平市", + "child": [{ + "id": 1526, + "name": "延平区", + "zipcode": "353000" + }, { + "id": 1527, + "name": "顺昌县", + "zipcode": "353200" + }, { + "id": 1528, + "name": "浦城县", + "zipcode": "353400" + }, { + "id": 1529, + "name": "光泽县", + "zipcode": "354100" + }, { + "id": 1530, + "name": "松溪县", + "zipcode": "353500" + }, { + "id": 1531, + "name": "政和县", + "zipcode": "353600" + }, { + "id": 1532, + "name": "邵武市", + "zipcode": "354000" + }, { + "id": 1533, + "name": "武夷山市", + "zipcode": "354300" + }, { + "id": 1534, + "name": "建瓯市", + "zipcode": "353100" + }, { + "id": 1535, + "name": "建阳市", + "zipcode": "354200" + }] + }, { + "id": 157, + "name": "龙岩市", + "child": [{ + "id": 1536, + "name": "新罗区", + "zipcode": "364000" + }, { + "id": 1537, + "name": "长汀县", + "zipcode": "366300" + }, { + "id": 1538, + "name": "永定县", + "zipcode": "364100" + }, { + "id": 1539, + "name": "上杭县", + "zipcode": "364200" + }, { + "id": 1540, + "name": "武平县", + "zipcode": "364300" + }, { + "id": 1541, + "name": "连城县", + "zipcode": "366200" + }, { + "id": 1542, + "name": "漳平市", + "zipcode": "364400" + }] + }, { + "id": 158, + "name": "宁德市", + "child": [{ + "id": 1543, + "name": "蕉城区", + "zipcode": "352100" + }, { + "id": 1544, + "name": "霞浦县", + "zipcode": "355100" + }, { + "id": 1545, + "name": "古田县", + "zipcode": "352200" + }, { + "id": 1546, + "name": "屏南县", + "zipcode": "352300" + }, { + "id": 1547, + "name": "寿宁县", + "zipcode": "355500" + }, { + "id": 1548, + "name": "周宁县", + "zipcode": "355400" + }, { + "id": 1549, + "name": "柘荣县", + "zipcode": "355300" + }, { + "id": 1550, + "name": "福安市", + "zipcode": "355000" + }, { + "id": 1551, + "name": "福鼎市", + "zipcode": "355200" + }] + }] +}, { + "id": 15, + "name": "江西", + "child": [{ + "id": 159, + "name": "南昌市", + "child": [{ + "id": 1552, + "name": "东湖区", + "zipcode": "330006" + }, { + "id": 1553, + "name": "西湖区", + "zipcode": "330009" + }, { + "id": 1554, + "name": "青云谱区", + "zipcode": "330001" + }, { + "id": 1555, + "name": "湾里区", + "zipcode": "330004" + }, { + "id": 1556, + "name": "青山湖区", + "zipcode": "330029" + }, { + "id": 1557, + "name": "南昌县", + "zipcode": "330200" + }, { + "id": 1558, + "name": "新建县", + "zipcode": "330100" + }, { + "id": 1559, + "name": "安义县", + "zipcode": "330500" + }, { + "id": 1560, + "name": "进贤县", + "zipcode": "331700" + }, { + "id": 1561, + "name": "经济技术开发区", + "zipcode": "330013" + }, { + "id": 1562, + "name": "红谷滩新区", + "zipcode": "330038" + }, { + "id": 1563, + "name": "高新技术产业开发区", + "zipcode": "330029" + }, { + "id": 1564, + "name": "桑海经济技术开发区", + "zipcode": "330115" + }, { + "id": 1565, + "name": "英雄经济开发区", + "zipcode": "330200" + }] + }, { + "id": 160, + "name": "景德镇市", + "child": [{ + "id": 1566, + "name": "昌江区", + "zipcode": "333000" + }, { + "id": 1567, + "name": "珠山区", + "zipcode": "333000" + }, { + "id": 1568, + "name": "浮梁县", + "zipcode": "333400" + }, { + "id": 1569, + "name": "乐平市", + "zipcode": "333300" + }] + }, { + "id": 161, + "name": "萍乡市", + "child": [{ + "id": 1570, + "name": "安源区", + "zipcode": "337000" + }, { + "id": 1571, + "name": "湘东区", + "zipcode": "337016" + }, { + "id": 1572, + "name": "莲花县", + "zipcode": "337100" + }, { + "id": 1573, + "name": "上栗县", + "zipcode": "337009" + }, { + "id": 1574, + "name": "芦溪县", + "zipcode": "337053" + }] + }, { + "id": 162, + "name": "九江市", + "child": [{ + "id": 1575, + "name": "庐山区", + "zipcode": "332005" + }, { + "id": 1576, + "name": "浔阳区", + "zipcode": "332000" + }, { + "id": 1577, + "name": "九江县", + "zipcode": "332100" + }, { + "id": 1578, + "name": "武宁县", + "zipcode": "332300" + }, { + "id": 1579, + "name": "修水县", + "zipcode": "332400" + }, { + "id": 1580, + "name": "永修县", + "zipcode": "330300" + }, { + "id": 1581, + "name": "德安县", + "zipcode": "330400" + }, { + "id": 1582, + "name": "星子县", + "zipcode": "332800" + }, { + "id": 1583, + "name": "都昌县", + "zipcode": "332600" + }, { + "id": 1584, + "name": "湖口县", + "zipcode": "332500" + }, { + "id": 1585, + "name": "彭泽县", + "zipcode": "332700" + }, { + "id": 1586, + "name": "瑞昌市", + "zipcode": "332200" + }, { + "id": 3380, + "name": "共青城市", + "zipcode": "332020" + }] + }, { + "id": 163, + "name": "新余市", + "child": [{ + "id": 1587, + "name": "渝水区", + "zipcode": "338025" + }, { + "id": 1588, + "name": "分宜县", + "zipcode": "336600" + }] + }, { + "id": 164, + "name": "鹰潭市", + "child": [{ + "id": 1589, + "name": "月湖区", + "zipcode": "335000" + }, { + "id": 1590, + "name": "余江县", + "zipcode": "335200" + }, { + "id": 1591, + "name": "贵溪市", + "zipcode": "335400" + }] + }, { + "id": 165, + "name": "赣州市", + "child": [{ + "id": 1592, + "name": "章贡区", + "zipcode": "341000" + }, { + "id": 1593, + "name": "赣县", + "zipcode": "341100" + }, { + "id": 1594, + "name": "信丰县", + "zipcode": "341600" + }, { + "id": 1595, + "name": "大余县", + "zipcode": "341500" + }, { + "id": 1596, + "name": "上犹县", + "zipcode": "341200" + }, { + "id": 1597, + "name": "崇义县", + "zipcode": "341300" + }, { + "id": 1598, + "name": "安远县", + "zipcode": "342100" + }, { + "id": 1599, + "name": "龙南县", + "zipcode": "341700" + }, { + "id": 1600, + "name": "定南县", + "zipcode": "341900" + }, { + "id": 1601, + "name": "全南县", + "zipcode": "341800" + }, { + "id": 1602, + "name": "宁都县", + "zipcode": "342800" + }, { + "id": 1603, + "name": "于都县", + "zipcode": "342300" + }, { + "id": 1604, + "name": "兴国县", + "zipcode": "342400" + }, { + "id": 1605, + "name": "会昌县", + "zipcode": "342600" + }, { + "id": 1606, + "name": "寻乌县", + "zipcode": "342200" + }, { + "id": 1607, + "name": "石城县", + "zipcode": "342700" + }, { + "id": 1608, + "name": "瑞金市", + "zipcode": "342500" + }, { + "id": 1609, + "name": "南康市", + "zipcode": "341400" + }] + }, { + "id": 166, + "name": "吉安市", + "child": [{ + "id": 1610, + "name": "吉州区", + "zipcode": "343000" + }, { + "id": 1611, + "name": "青原区", + "zipcode": "343009" + }, { + "id": 1612, + "name": "吉安县", + "zipcode": "343100" + }, { + "id": 1613, + "name": "吉水县", + "zipcode": "331600" + }, { + "id": 1614, + "name": "峡江县", + "zipcode": "331400" + }, { + "id": 1615, + "name": "新干县", + "zipcode": "331300" + }, { + "id": 1616, + "name": "永丰县", + "zipcode": "331500" + }, { + "id": 1617, + "name": "泰和县", + "zipcode": "343700" + }, { + "id": 1618, + "name": "遂川县", + "zipcode": "343900" + }, { + "id": 1619, + "name": "万安县", + "zipcode": "343800" + }, { + "id": 1620, + "name": "安福县", + "zipcode": "343200" + }, { + "id": 1621, + "name": "永新县", + "zipcode": "343400" + }, { + "id": 1622, + "name": "井冈山市", + "zipcode": "343600" + }] + }, { + "id": 167, + "name": "宜春市", + "child": [{ + "id": 1623, + "name": "袁州区", + "zipcode": "336000" + }, { + "id": 1624, + "name": "奉新县", + "zipcode": "330700" + }, { + "id": 1625, + "name": "万载县", + "zipcode": "336100" + }, { + "id": 1626, + "name": "上高县", + "zipcode": "336400" + }, { + "id": 1627, + "name": "宜丰县", + "zipcode": "336300" + }, { + "id": 1628, + "name": "靖安县", + "zipcode": "330600" + }, { + "id": 1629, + "name": "铜鼓县", + "zipcode": "336200" + }, { + "id": 1630, + "name": "丰城市", + "zipcode": "331100" + }, { + "id": 1631, + "name": "樟树市", + "zipcode": "331200" + }, { + "id": 1632, + "name": "高安市", + "zipcode": "330800" + }] + }, { + "id": 168, + "name": "抚州市", + "child": [{ + "id": 1633, + "name": "临川区", + "zipcode": "344100" + }, { + "id": 1634, + "name": "南城县", + "zipcode": "344700" + }, { + "id": 1635, + "name": "黎川县", + "zipcode": "344600" + }, { + "id": 1636, + "name": "南丰县", + "zipcode": "344500" + }, { + "id": 1637, + "name": "崇仁县", + "zipcode": "344200" + }, { + "id": 1638, + "name": "乐安县", + "zipcode": "344300" + }, { + "id": 1639, + "name": "宜黄县", + "zipcode": "344400" + }, { + "id": 1640, + "name": "金溪县", + "zipcode": "344800" + }, { + "id": 1641, + "name": "资溪县", + "zipcode": "335300" + }, { + "id": 1642, + "name": "东乡县", + "zipcode": "331800" + }, { + "id": 1643, + "name": "广昌县", + "zipcode": "344900" + }] + }, { + "id": 169, + "name": "上饶市", + "child": [{ + "id": 1644, + "name": "信州区", + "zipcode": "334000" + }, { + "id": 1645, + "name": "上饶县", + "zipcode": "334100" + }, { + "id": 1646, + "name": "广丰县", + "zipcode": "334600" + }, { + "id": 1647, + "name": "玉山县", + "zipcode": "334700" + }, { + "id": 1648, + "name": "铅山县", + "zipcode": "334500" + }, { + "id": 1649, + "name": "横峰县", + "zipcode": "334300" + }, { + "id": 1650, + "name": "弋阳县", + "zipcode": "334400" + }, { + "id": 1651, + "name": "余干县", + "zipcode": "335100" + }, { + "id": 1652, + "name": "鄱阳县", + "zipcode": "333100" + }, { + "id": 1653, + "name": "万年县", + "zipcode": "335500" + }, { + "id": 1654, + "name": "婺源县", + "zipcode": "333200" + }, { + "id": 1655, + "name": "德兴市", + "zipcode": "334200" + }] + }] +}, { + "id": 16, + "name": "山东", + "child": [{ + "id": 170, + "name": "济南市", + "child": [{ + "id": 1656, + "name": "历下区", + "zipcode": "250014" + }, { + "id": 1657, + "name": "市中区", + "zipcode": "250001" + }, { + "id": 1658, + "name": "槐荫区", + "zipcode": "250022" + }, { + "id": 1659, + "name": "天桥区", + "zipcode": "250031" + }, { + "id": 1660, + "name": "历城区", + "zipcode": "250100" + }, { + "id": 1661, + "name": "长清区", + "zipcode": "250300" + }, { + "id": 1662, + "name": "平阴县", + "zipcode": "250400" + }, { + "id": 1663, + "name": "济阳县", + "zipcode": "251400" + }, { + "id": 1664, + "name": "商河县", + "zipcode": "251600" + }, { + "id": 1665, + "name": "章丘市", + "zipcode": "250200" + }, { + "id": 1666, + "name": "高新区", + "zipcode": "250101" + }, { + "id": 1667, + "name": "经济开发区", + "zipcode": "250300" + }] + }, { + "id": 171, + "name": "青岛市", + "child": [{ + "id": 1668, + "name": "市南区", + "zipcode": "266001" + }, { + "id": 1669, + "name": "市北区", + "zipcode": "266011" + }, { + "id": 1670, + "name": "四方区", + "zipcode": "266031" + }, { + "id": 1671, + "name": "黄岛区", + "zipcode": "266500" + }, { + "id": 1672, + "name": "崂山区", + "zipcode": "266100" + }, { + "id": 1673, + "name": "李沧区", + "zipcode": "266021" + }, { + "id": 1674, + "name": "城阳区", + "zipcode": "266041" + }, { + "id": 1675, + "name": "胶州市", + "zipcode": "266300" + }, { + "id": 1676, + "name": "即墨市", + "zipcode": "266200" + }, { + "id": 1677, + "name": "平度市", + "zipcode": "266700" + }, { + "id": 1678, + "name": "胶南市", + "zipcode": "266400" + }, { + "id": 1679, + "name": "莱西市", + "zipcode": "266600" + }] + }, { + "id": 172, + "name": "淄博市", + "child": [{ + "id": 1680, + "name": "淄川区", + "zipcode": "255100" + }, { + "id": 1681, + "name": "张店区", + "zipcode": "255022" + }, { + "id": 1682, + "name": "博山区", + "zipcode": "255200" + }, { + "id": 1683, + "name": "临淄区", + "zipcode": "255400" + }, { + "id": 1684, + "name": "周村区", + "zipcode": "255300" + }, { + "id": 1685, + "name": "桓台县", + "zipcode": "256400" + }, { + "id": 1686, + "name": "高青县", + "zipcode": "256300" + }, { + "id": 1687, + "name": "沂源县", + "zipcode": "256100" + }, { + "id": 1688, + "name": "高新区", + "zipcode": "255086" + }] + }, { + "id": 173, + "name": "枣庄市", + "child": [{ + "id": 1689, + "name": "市中区", + "zipcode": "277101" + }, { + "id": 1690, + "name": "薛城区", + "zipcode": "277000" + }, { + "id": 1691, + "name": "峄城区", + "zipcode": "277300" + }, { + "id": 1692, + "name": "台儿庄区", + "zipcode": "277400" + }, { + "id": 1693, + "name": "山亭区", + "zipcode": "277200" + }, { + "id": 1694, + "name": "滕州市", + "zipcode": "277500" + }] + }, { + "id": 174, + "name": "东营市", + "child": [{ + "id": 1695, + "name": "东营区", + "zipcode": "257029" + }, { + "id": 1696, + "name": "河口区", + "zipcode": "257200" + }, { + "id": 1697, + "name": "垦利县", + "zipcode": "257500" + }, { + "id": 1698, + "name": "利津县", + "zipcode": "257400" + }, { + "id": 1699, + "name": "广饶县", + "zipcode": "257300" + }] + }, { + "id": 175, + "name": "烟台市", + "child": [{ + "id": 1700, + "name": "芝罘区", + "zipcode": "264001" + }, { + "id": 1701, + "name": "福山区", + "zipcode": "265500" + }, { + "id": 1702, + "name": "牟平区", + "zipcode": "264100" + }, { + "id": 1703, + "name": "莱山区", + "zipcode": "264600" + }, { + "id": 1704, + "name": "长岛县", + "zipcode": "265800" + }, { + "id": 1705, + "name": "龙口市", + "zipcode": "265700" + }, { + "id": 1706, + "name": "莱阳市", + "zipcode": "265200" + }, { + "id": 1707, + "name": "莱州市", + "zipcode": "261400" + }, { + "id": 1708, + "name": "蓬莱市", + "zipcode": "265600" + }, { + "id": 1709, + "name": "招远市", + "zipcode": "265400" + }, { + "id": 1710, + "name": "栖霞市", + "zipcode": "265300" + }, { + "id": 1711, + "name": "海阳市", + "zipcode": "265100" + }, { + "id": 1712, + "name": "高新区", + "zipcode": "264006" + }] + }, { + "id": 176, + "name": "潍坊市", + "child": [{ + "id": 1713, + "name": "潍城区", + "zipcode": "261021" + }, { + "id": 1714, + "name": "寒亭区", + "zipcode": "261100" + }, { + "id": 1715, + "name": "坊子区", + "zipcode": "261200" + }, { + "id": 1716, + "name": "奎文区", + "zipcode": "261031" + }, { + "id": 1717, + "name": "临朐县", + "zipcode": "262600" + }, { + "id": 1718, + "name": "昌乐县", + "zipcode": "262400" + }, { + "id": 1719, + "name": "青州市", + "zipcode": "262500" + }, { + "id": 1720, + "name": "诸城市", + "zipcode": "262200" + }, { + "id": 1721, + "name": "寿光市", + "zipcode": "262700" + }, { + "id": 1722, + "name": "安丘市", + "zipcode": "262100" + }, { + "id": 1723, + "name": "高密市", + "zipcode": "261500" + }, { + "id": 1724, + "name": "昌邑市", + "zipcode": "261300" + }, { + "id": 1725, + "name": "经济开发区", + "zipcode": "261061" + }, { + "id": 1726, + "name": "滨海经济开发区", + "zipcode": "262737" + }, { + "id": 1727, + "name": "高新技术开发区", + "zipcode": "261061" + }, { + "id": 1728, + "name": "出口加工区", + "zipcode": "261205" + }] + }, { + "id": 177, + "name": "济宁市", + "child": [{ + "id": 1729, + "name": "市中区", + "zipcode": "272133" + }, { + "id": 1730, + "name": "任城区", + "zipcode": "272113" + }, { + "id": 1731, + "name": "微山县", + "zipcode": "277600" + }, { + "id": 1732, + "name": "鱼台县", + "zipcode": "272300" + }, { + "id": 1733, + "name": "金乡县", + "zipcode": "272200" + }, { + "id": 1734, + "name": "嘉祥县", + "zipcode": "272400" + }, { + "id": 1735, + "name": "汶上县", + "zipcode": "272501" + }, { + "id": 1736, + "name": "泗水县", + "zipcode": "273200" + }, { + "id": 1737, + "name": "梁山县", + "zipcode": "272600" + }, { + "id": 1738, + "name": "曲阜市", + "zipcode": "273100" + }, { + "id": 1739, + "name": "兖州市", + "zipcode": "272000" + }, { + "id": 1740, + "name": "邹城市", + "zipcode": "273500" + }] + }, { + "id": 178, + "name": "泰安市", + "child": [{ + "id": 1741, + "name": "泰山区", + "zipcode": "271000" + }, { + "id": 1742, + "name": "岱岳区", + "zipcode": "271000" + }, { + "id": 1743, + "name": "宁阳县", + "zipcode": "271400" + }, { + "id": 1744, + "name": "东平县", + "zipcode": "271500" + }, { + "id": 1745, + "name": "新泰市", + "zipcode": "271200" + }, { + "id": 1746, + "name": "肥城市", + "zipcode": "271600" + }] + }, { + "id": 179, + "name": "威海市", + "child": [{ + "id": 1747, + "name": "环翠区", + "zipcode": "264200" + }, { + "id": 1748, + "name": "文登市", + "zipcode": "264400" + }, { + "id": 1749, + "name": "荣成市", + "zipcode": "264300" + }, { + "id": 1750, + "name": "乳山市", + "zipcode": "264500" + }, { + "id": 1751, + "name": "经济技术开发区", + "zipcode": "264205" + }, { + "id": 1752, + "name": "高新技术开发区", + "zipcode": "264209" + }] + }, { + "id": 180, + "name": "日照市", + "child": [{ + "id": 1753, + "name": "东港区", + "zipcode": "276800" + }, { + "id": 1754, + "name": "岚山区", + "zipcode": "276808" + }, { + "id": 1755, + "name": "五莲县", + "zipcode": "272300" + }, { + "id": 1756, + "name": "莒县", + "zipcode": "266500" + }] + }, { + "id": 181, + "name": "莱芜市", + "child": [{ + "id": 1757, + "name": "莱城区", + "zipcode": "271100" + }, { + "id": 1758, + "name": "钢城区", + "zipcode": "271100" + }] + }, { + "id": 182, + "name": "临沂市", + "child": [{ + "id": 1759, + "name": "兰山区", + "zipcode": "276002" + }, { + "id": 1760, + "name": "罗庄区", + "zipcode": "276022" + }, { + "id": 1761, + "name": "河东区", + "zipcode": "276034" + }, { + "id": 1762, + "name": "沂南县", + "zipcode": "276300" + }, { + "id": 1763, + "name": "郯城县", + "zipcode": "276100" + }, { + "id": 1764, + "name": "沂水县", + "zipcode": "276400" + }, { + "id": 1765, + "name": "苍山县", + "zipcode": "277700" + }, { + "id": 1766, + "name": "费县", + "zipcode": "273400" + }, { + "id": 1767, + "name": "平邑县", + "zipcode": "273300" + }, { + "id": 1768, + "name": "莒南县", + "zipcode": "276600" + }, { + "id": 1769, + "name": "蒙阴县", + "zipcode": "276200" + }, { + "id": 1770, + "name": "临沭县", + "zipcode": "276700" + }] + }, { + "id": 183, + "name": "德州市", + "child": [{ + "id": 1771, + "name": "德城区", + "zipcode": "253011" + }, { + "id": 1772, + "name": "陵县", + "zipcode": "253500" + }, { + "id": 1773, + "name": "宁津县", + "zipcode": "253400" + }, { + "id": 1774, + "name": "庆云县", + "zipcode": "253700" + }, { + "id": 1775, + "name": "临邑县", + "zipcode": "251500" + }, { + "id": 1776, + "name": "齐河县", + "zipcode": "251100" + }, { + "id": 1777, + "name": "平原县", + "zipcode": "253100" + }, { + "id": 1778, + "name": "夏津县", + "zipcode": "253200" + }, { + "id": 1779, + "name": "武城县", + "zipcode": "253300" + }, { + "id": 1780, + "name": "乐陵市", + "zipcode": "253600" + }, { + "id": 1781, + "name": "禹城市", + "zipcode": "251200" + }] + }, { + "id": 184, + "name": "聊城市", + "child": [{ + "id": 1782, + "name": "东昌府区", + "zipcode": "252000" + }, { + "id": 1783, + "name": "阳谷县", + "zipcode": "252300" + }, { + "id": 1784, + "name": "莘县", + "zipcode": "252400" + }, { + "id": 1785, + "name": "茌平县", + "zipcode": "252100" + }, { + "id": 1786, + "name": "东阿县", + "zipcode": "252200" + }, { + "id": 1787, + "name": "冠县", + "zipcode": "252500" + }, { + "id": 1788, + "name": "高唐县", + "zipcode": "252800" + }, { + "id": 1789, + "name": "临清市", + "zipcode": "252600" + }] + }, { + "id": 185, + "name": "滨州市", + "child": [{ + "id": 1790, + "name": "滨城区", + "zipcode": "256613" + }, { + "id": 1791, + "name": "惠民县", + "zipcode": "251700" + }, { + "id": 1792, + "name": "阳信县", + "zipcode": "251800" + }, { + "id": 1793, + "name": "无棣县", + "zipcode": "251900" + }, { + "id": 1794, + "name": "沾化县", + "zipcode": "256800" + }, { + "id": 1795, + "name": "博兴县", + "zipcode": "256500" + }, { + "id": 1796, + "name": "邹平县", + "zipcode": "256200" + }] + }, { + "id": 186, + "name": "菏泽市", + "child": [{ + "id": 1797, + "name": "牡丹区", + "zipcode": "274009" + }, { + "id": 1798, + "name": "曹县", + "zipcode": "274400" + }, { + "id": 1799, + "name": "单县", + "zipcode": "274300" + }, { + "id": 1800, + "name": "成武县", + "zipcode": "274200" + }, { + "id": 1801, + "name": "巨野县", + "zipcode": "274900" + }, { + "id": 1802, + "name": "郓城县", + "zipcode": "274700" + }, { + "id": 1803, + "name": "鄄城县", + "zipcode": "274600" + }, { + "id": 1804, + "name": "定陶县", + "zipcode": "274100" + }, { + "id": 1805, + "name": "东明县", + "zipcode": "274500" + }] + }] +}, { + "id": 17, + "name": "河南", + "child": [{ + "id": 187, + "name": "郑州市", + "child": [{ + "id": 1806, + "name": "中原区", + "zipcode": "450007" + }, { + "id": 1807, + "name": "二七区", + "zipcode": "450052" + }, { + "id": 1808, + "name": "管城回族区", + "zipcode": "450000" + }, { + "id": 1809, + "name": "金水区", + "zipcode": "450003" + }, { + "id": 1810, + "name": "上街区", + "zipcode": "450041" + }, { + "id": 1811, + "name": "中牟县", + "zipcode": "451450" + }, { + "id": 1812, + "name": "巩义市", + "zipcode": "451200" + }, { + "id": 1813, + "name": "荥阳市", + "zipcode": "450100" + }, { + "id": 1814, + "name": "新密市", + "zipcode": "452300" + }, { + "id": 1815, + "name": "新郑市", + "zipcode": "451100" + }, { + "id": 1816, + "name": "登封市", + "zipcode": "452470" + }, { + "id": 1817, + "name": "高新技术开发区", + "zipcode": "450001" + }, { + "id": 1818, + "name": "惠济区", + "zipcode": "450053" + }, { + "id": 1819, + "name": "经济技术开发区", + "zipcode": "450016" + }, { + "id": 1820, + "name": "郑东新区", + "zipcode": "450008" + }, { + "id": 1821, + "name": "出口加工区", + "zipcode": "450016" + }] + }, { + "id": 188, + "name": "开封市", + "child": [{ + "id": 1822, + "name": "龙亭区", + "zipcode": "475100" + }, { + "id": 1823, + "name": "顺河回族区", + "zipcode": "475000" + }, { + "id": 1824, + "name": "鼓楼区", + "zipcode": "475000" + }, { + "id": 1825, + "name": "杞县", + "zipcode": "475200" + }, { + "id": 1826, + "name": "通许县", + "zipcode": "475400" + }, { + "id": 1827, + "name": "尉氏县", + "zipcode": "475500" + }, { + "id": 1828, + "name": "开封县", + "zipcode": "475100" + }, { + "id": 1829, + "name": "兰考县", + "zipcode": "475300" + }, { + "id": 1830, + "name": "金明区", + "zipcode": "475003" + }, { + "id": 1831, + "name": "禹王台区", + "zipcode": "475003" + }] + }, { + "id": 189, + "name": "洛阳市", + "child": [{ + "id": 1832, + "name": "老城区", + "zipcode": "471002" + }, { + "id": 1833, + "name": "西工区", + "zipcode": "471000" + }, { + "id": 1834, + "name": "瀍河回族区", + "zipcode": "471002" + }, { + "id": 1835, + "name": "涧西区", + "zipcode": "471003" + }, { + "id": 1836, + "name": "吉利区", + "zipcode": "471012" + }, { + "id": 1837, + "name": "洛龙区", + "zipcode": "471000" + }, { + "id": 1838, + "name": "孟津县", + "zipcode": "471100" + }, { + "id": 1839, + "name": "新安县", + "zipcode": "471800" + }, { + "id": 1840, + "name": "栾川县", + "zipcode": "471500" + }, { + "id": 1841, + "name": "嵩县", + "zipcode": "471400" + }, { + "id": 1842, + "name": "汝阳县", + "zipcode": "471200" + }, { + "id": 1843, + "name": "宜阳县", + "zipcode": "471600" + }, { + "id": 1844, + "name": "洛宁县", + "zipcode": "471700" + }, { + "id": 1845, + "name": "伊川县", + "zipcode": "471300" + }, { + "id": 1846, + "name": "偃师市", + "zipcode": "471900" + }, { + "id": 1847, + "name": "高新技术开发区", + "zipcode": "471003" + }, { + "id": 1848, + "name": "经济技术开发区", + "zipcode": "471023" + }] + }, { + "id": 190, + "name": "平顶山市", + "child": [{ + "id": 1849, + "name": "新华区", + "zipcode": "467002" + }, { + "id": 1850, + "name": "卫东区", + "zipcode": "467021" + }, { + "id": 1851, + "name": "石龙区", + "zipcode": "467045" + }, { + "id": 1852, + "name": "湛河区", + "zipcode": "467000" + }, { + "id": 1853, + "name": "宝丰县", + "zipcode": "467400" + }, { + "id": 1854, + "name": "叶县", + "zipcode": "467200" + }, { + "id": 1855, + "name": "鲁山县", + "zipcode": "467300" + }, { + "id": 1856, + "name": "郏县", + "zipcode": "467100" + }, { + "id": 1857, + "name": "舞钢市", + "zipcode": "462500" + }, { + "id": 1858, + "name": "汝州市", + "zipcode": "467500" + }] + }, { + "id": 191, + "name": "安阳市", + "child": [{ + "id": 1859, + "name": "文峰区", + "zipcode": "455000" + }, { + "id": 1860, + "name": "北关区", + "zipcode": "455001" + }, { + "id": 1861, + "name": "殷都区", + "zipcode": "455004" + }, { + "id": 1862, + "name": "龙安区", + "zipcode": "455001" + }, { + "id": 1863, + "name": "安阳县", + "zipcode": "455000" + }, { + "id": 1864, + "name": "汤阴县", + "zipcode": "456150" + }, { + "id": 1865, + "name": "滑县", + "zipcode": "456400" + }, { + "id": 1866, + "name": "内黄县", + "zipcode": "456350" + }, { + "id": 1867, + "name": "林州市", + "zipcode": "456500" + }] + }, { + "id": 192, + "name": "鹤壁市", + "child": [{ + "id": 1868, + "name": "鹤山区", + "zipcode": "458010" + }, { + "id": 1869, + "name": "山城区", + "zipcode": "458000" + }, { + "id": 1870, + "name": "淇滨区", + "zipcode": "458000" + }, { + "id": 1871, + "name": "浚县", + "zipcode": "456250" + }, { + "id": 1872, + "name": "淇县", + "zipcode": "456750" + }] + }, { + "id": 193, + "name": "新乡市", + "child": [{ + "id": 1873, + "name": "红旗区", + "zipcode": "453000" + }, { + "id": 1874, + "name": "卫滨区", + "zipcode": "453000" + }, { + "id": 1875, + "name": "凤泉区", + "zipcode": "453011" + }, { + "id": 1876, + "name": "牧野区", + "zipcode": "453002" + }, { + "id": 1877, + "name": "新乡县", + "zipcode": "453700" + }, { + "id": 1878, + "name": "获嘉县", + "zipcode": "453800" + }, { + "id": 1879, + "name": "原阳县", + "zipcode": "453500" + }, { + "id": 1880, + "name": "延津县", + "zipcode": "453200" + }, { + "id": 1881, + "name": "封丘县", + "zipcode": "453300" + }, { + "id": 1882, + "name": "长垣县", + "zipcode": "453400" + }, { + "id": 1883, + "name": "卫辉市", + "zipcode": "453100" + }, { + "id": 1884, + "name": "辉县市", + "zipcode": "453600" + }] + }, { + "id": 194, + "name": "焦作市", + "child": [{ + "id": 1885, + "name": "解放区", + "zipcode": "454000" + }, { + "id": 1886, + "name": "中站区", + "zipcode": "454191" + }, { + "id": 1887, + "name": "马村区", + "zipcode": "454171" + }, { + "id": 1888, + "name": "山阳区", + "zipcode": "454002" + }, { + "id": 1889, + "name": "修武县", + "zipcode": "454350" + }, { + "id": 1890, + "name": "博爱县", + "zipcode": "454450" + }, { + "id": 1891, + "name": "武陟县", + "zipcode": "454950" + }, { + "id": 1892, + "name": "温县", + "zipcode": "454850" + }, { + "id": 1893, + "name": "沁阳市", + "zipcode": "454550" + }, { + "id": 1894, + "name": "孟州市", + "zipcode": "454750" + }] + }, { + "id": 195, + "name": "济源市", + "child": [{ + "id": 1895, + "name": "济源市", + "zipcode": "454650" + }] + }, { + "id": 196, + "name": "濮阳市", + "child": [{ + "id": 1896, + "name": "华龙区", + "zipcode": "457001" + }, { + "id": 1897, + "name": "清丰县", + "zipcode": "457300" + }, { + "id": 1898, + "name": "南乐县", + "zipcode": "457400" + }, { + "id": 1899, + "name": "范县", + "zipcode": "457500" + }, { + "id": 1900, + "name": "台前县", + "zipcode": "457600" + }, { + "id": 1901, + "name": "濮阳县", + "zipcode": "457100" + }] + }, { + "id": 197, + "name": "许昌市", + "child": [{ + "id": 1902, + "name": "魏都区", + "zipcode": "461000" + }, { + "id": 1903, + "name": "许昌县", + "zipcode": "461100" + }, { + "id": 1904, + "name": "鄢陵县", + "zipcode": "461200" + }, { + "id": 1905, + "name": "襄城县", + "zipcode": "461700" + }, { + "id": 1906, + "name": "禹州市", + "zipcode": "461670" + }, { + "id": 1907, + "name": "长葛市", + "zipcode": "461500" + }] + }, { + "id": 198, + "name": "漯河市", + "child": [{ + "id": 1908, + "name": "源汇区", + "zipcode": "462000" + }, { + "id": 1909, + "name": "郾城区", + "zipcode": "462300" + }, { + "id": 1910, + "name": "召陵区", + "zipcode": "462300" + }, { + "id": 1911, + "name": "舞阳县", + "zipcode": "462400" + }, { + "id": 1912, + "name": "临颍县", + "zipcode": "462600" + }] + }, { + "id": 199, + "name": "三门峡市", + "child": [{ + "id": 1913, + "name": "湖滨区", + "zipcode": "472000" + }, { + "id": 1914, + "name": "渑池县", + "zipcode": "472400" + }, { + "id": 1915, + "name": "陕县", + "zipcode": "472100" + }, { + "id": 1916, + "name": "卢氏县", + "zipcode": "472200" + }, { + "id": 1917, + "name": "义马市", + "zipcode": "472300" + }, { + "id": 1918, + "name": "灵宝市", + "zipcode": "472500" + }] + }, { + "id": 200, + "name": "南阳市", + "child": [{ + "id": 1919, + "name": "宛城区", + "zipcode": "473001" + }, { + "id": 1920, + "name": "卧龙区", + "zipcode": "473003" + }, { + "id": 1921, + "name": "南召县", + "zipcode": "474650" + }, { + "id": 1922, + "name": "方城县", + "zipcode": "473200" + }, { + "id": 1923, + "name": "西峡县", + "zipcode": "474550" + }, { + "id": 1924, + "name": "镇平县", + "zipcode": "474250" + }, { + "id": 1925, + "name": "内乡县", + "zipcode": "474350" + }, { + "id": 1926, + "name": "淅川县", + "zipcode": "474450" + }, { + "id": 1927, + "name": "社旗县", + "zipcode": "473300" + }, { + "id": 1928, + "name": "唐河县", + "zipcode": "473400" + }, { + "id": 1929, + "name": "新野县", + "zipcode": "473500" + }, { + "id": 1930, + "name": "桐柏县", + "zipcode": "474750" + }, { + "id": 1931, + "name": "邓州市", + "zipcode": "474150" + }] + }, { + "id": 201, + "name": "商丘市", + "child": [{ + "id": 1932, + "name": "梁园区", + "zipcode": "476000" + }, { + "id": 1933, + "name": "睢阳区", + "zipcode": "476100" + }, { + "id": 1934, + "name": "民权县", + "zipcode": "476800" + }, { + "id": 1935, + "name": "睢县", + "zipcode": "476900" + }, { + "id": 1936, + "name": "宁陵县", + "zipcode": "476700" + }, { + "id": 1937, + "name": "柘城县", + "zipcode": "476200" + }, { + "id": 1938, + "name": "虞城县", + "zipcode": "476300" + }, { + "id": 1939, + "name": "夏邑县", + "zipcode": "476400" + }, { + "id": 1940, + "name": "永城市", + "zipcode": "476600" + }] + }, { + "id": 202, + "name": "信阳市", + "child": [{ + "id": 1941, + "name": "浉河区", + "zipcode": "464000" + }, { + "id": 1942, + "name": "平桥区", + "zipcode": "464100" + }, { + "id": 1943, + "name": "罗山县", + "zipcode": "464200" + }, { + "id": 1944, + "name": "光山县", + "zipcode": "465450" + }, { + "id": 1945, + "name": "新县", + "zipcode": "465550" + }, { + "id": 1946, + "name": "商城县", + "zipcode": "465350" + }, { + "id": 1947, + "name": "固始县", + "zipcode": "465250" + }, { + "id": 1948, + "name": "潢川县", + "zipcode": "465150" + }, { + "id": 1949, + "name": "淮滨县", + "zipcode": "464400" + }, { + "id": 1950, + "name": "息县", + "zipcode": "464300" + }] + }, { + "id": 203, + "name": "周口市", + "child": [{ + "id": 1951, + "name": "川汇区", + "zipcode": "466000" + }, { + "id": 1952, + "name": "扶沟县", + "zipcode": "461300" + }, { + "id": 1953, + "name": "西华县", + "zipcode": "466600" + }, { + "id": 1954, + "name": "商水县", + "zipcode": "466100" + }, { + "id": 1955, + "name": "沈丘县", + "zipcode": "466300" + }, { + "id": 1956, + "name": "郸城县", + "zipcode": "477150" + }, { + "id": 1957, + "name": "淮阳县", + "zipcode": "466700" + }, { + "id": 1958, + "name": "太康县", + "zipcode": "461400" + }, { + "id": 1959, + "name": "鹿邑县", + "zipcode": "477200" + }, { + "id": 1960, + "name": "项城市", + "zipcode": "466200" + }] + }, { + "id": 204, + "name": "驻马店市", + "child": [{ + "id": 1961, + "name": "驿城区", + "zipcode": "463000" + }, { + "id": 1962, + "name": "西平县", + "zipcode": "463900" + }, { + "id": 1963, + "name": "上蔡县", + "zipcode": "463800" + }, { + "id": 1964, + "name": "平舆县", + "zipcode": "463400" + }, { + "id": 1965, + "name": "正阳县", + "zipcode": "463600" + }, { + "id": 1966, + "name": "确山县", + "zipcode": "463200" + }, { + "id": 1967, + "name": "泌阳县", + "zipcode": "463700" + }, { + "id": 1968, + "name": "汝南县", + "zipcode": "463300" + }, { + "id": 1969, + "name": "遂平县", + "zipcode": "463100" + }, { + "id": 1970, + "name": "新蔡县", + "zipcode": "463500" + }] + }] +}, { + "id": 18, + "name": "湖北", + "child": [{ + "id": 205, + "name": "武汉市", + "child": [{ + "id": 1971, + "name": "江岸区", + "zipcode": "430014" + }, { + "id": 1972, + "name": "江汉区", + "zipcode": "430021" + }, { + "id": 1973, + "name": "硚口区", + "zipcode": "430033" + }, { + "id": 1974, + "name": "汉阳区", + "zipcode": "430050" + }, { + "id": 1975, + "name": "武昌区", + "zipcode": "430061" + }, { + "id": 1976, + "name": "青山区", + "zipcode": "430080" + }, { + "id": 1977, + "name": "洪山区", + "zipcode": "430070" + }, { + "id": 1978, + "name": "东西湖区", + "zipcode": "430040" + }, { + "id": 1979, + "name": "汉南区", + "zipcode": "430090" + }, { + "id": 1980, + "name": "蔡甸区", + "zipcode": "430100" + }, { + "id": 1981, + "name": "江夏区", + "zipcode": "430200" + }, { + "id": 1982, + "name": "黄陂区", + "zipcode": "432200" + }, { + "id": 1983, + "name": "新洲区", + "zipcode": "431400" + }] + }, { + "id": 206, + "name": "黄石市", + "child": [{ + "id": 1984, + "name": "黄石港区", + "zipcode": "435000" + }, { + "id": 1985, + "name": "西塞山区", + "zipcode": "435001" + }, { + "id": 1986, + "name": "下陆区", + "zipcode": "435005" + }, { + "id": 1987, + "name": "铁山区", + "zipcode": "435006" + }, { + "id": 1988, + "name": "阳新县", + "zipcode": "435200" + }, { + "id": 1989, + "name": "大冶市", + "zipcode": "435100" + }] + }, { + "id": 207, + "name": "十堰市", + "child": [{ + "id": 1990, + "name": "茅箭区", + "zipcode": "442012" + }, { + "id": 1991, + "name": "张湾区", + "zipcode": "442001" + }, { + "id": 1992, + "name": "郧县", + "zipcode": "442500" + }, { + "id": 1993, + "name": "郧西县", + "zipcode": "442600" + }, { + "id": 1994, + "name": "竹山县", + "zipcode": "442200" + }, { + "id": 1995, + "name": "竹溪县", + "zipcode": "442300" + }, { + "id": 1996, + "name": "房县", + "zipcode": "442100" + }, { + "id": 1997, + "name": "丹江口市", + "zipcode": "442700" + }] + }, { + "id": 208, + "name": "宜昌市", + "child": [{ + "id": 1998, + "name": "西陵区", + "zipcode": "443000" + }, { + "id": 1999, + "name": "伍家岗区", + "zipcode": "443001" + }, { + "id": 2000, + "name": "点军区", + "zipcode": "443006" + }, { + "id": 2001, + "name": "猇亭区", + "zipcode": "443007" + }, { + "id": 2002, + "name": "夷陵区", + "zipcode": "443100" + }, { + "id": 2003, + "name": "远安县", + "zipcode": "444200" + }, { + "id": 2004, + "name": "兴山县", + "zipcode": "443711" + }, { + "id": 2005, + "name": "秭归县", + "zipcode": "443600" + }, { + "id": 2006, + "name": "长阳土家族自治县", + "zipcode": "443500" + }, { + "id": 2007, + "name": "五峰土家族自治县", + "zipcode": "443400" + }, { + "id": 2008, + "name": "宜都市", + "zipcode": "443300" + }, { + "id": 2009, + "name": "当阳市", + "zipcode": "444100" + }, { + "id": 2010, + "name": "枝江市", + "zipcode": "443200" + }, { + "id": 2011, + "name": "经济技术开发区", + "zipcode": "443003" + }] + }, { + "id": 209, + "name": "襄阳市", + "child": [{ + "id": 2012, + "name": "襄城区", + "zipcode": "441021" + }, { + "id": 2013, + "name": "樊城区", + "zipcode": "441001" + }, { + "id": 2014, + "name": "襄阳区", + "zipcode": "441100" + }, { + "id": 2015, + "name": "南漳县", + "zipcode": "441500" + }, { + "id": 2016, + "name": "谷城县", + "zipcode": "441700" + }, { + "id": 2017, + "name": "保康县", + "zipcode": "441600" + }, { + "id": 2018, + "name": "老河口市", + "zipcode": "441800" + }, { + "id": 2019, + "name": "枣阳市", + "zipcode": "441200" + }, { + "id": 2020, + "name": "宜城市", + "zipcode": "441400" + }] + }, { + "id": 210, + "name": "鄂州市", + "child": [{ + "id": 2021, + "name": "梁子湖区", + "zipcode": "436064" + }, { + "id": 2022, + "name": "华容区", + "zipcode": "436030" + }, { + "id": 2023, + "name": "鄂城区", + "zipcode": "436000" + }] + }, { + "id": 211, + "name": "荆门市", + "child": [{ + "id": 2024, + "name": "东宝区", + "zipcode": "448004" + }, { + "id": 2025, + "name": "掇刀区", + "zipcode": "448124" + }, { + "id": 2026, + "name": "京山县", + "zipcode": "431800" + }, { + "id": 2027, + "name": "沙洋县", + "zipcode": "448200" + }, { + "id": 2028, + "name": "钟祥市", + "zipcode": "431900" + }] + }, { + "id": 212, + "name": "孝感市", + "child": [{ + "id": 2029, + "name": "孝南区", + "zipcode": "432100" + }, { + "id": 2030, + "name": "孝昌县", + "zipcode": "432900" + }, { + "id": 2031, + "name": "大悟县", + "zipcode": "432800" + }, { + "id": 2032, + "name": "云梦县", + "zipcode": "432500" + }, { + "id": 2033, + "name": "应城市", + "zipcode": "432400" + }, { + "id": 2034, + "name": "安陆市", + "zipcode": "432600" + }, { + "id": 2035, + "name": "汉川市", + "zipcode": "432300" + }] + }, { + "id": 213, + "name": "荆州市", + "child": [{ + "id": 2036, + "name": "沙市区", + "zipcode": "434000" + }, { + "id": 2037, + "name": "荆州区", + "zipcode": "434020" + }, { + "id": 2038, + "name": "公安县", + "zipcode": "434300" + }, { + "id": 2039, + "name": "监利县", + "zipcode": "433300" + }, { + "id": 2040, + "name": "江陵县", + "zipcode": "434101" + }, { + "id": 2041, + "name": "石首市", + "zipcode": "434400" + }, { + "id": 2042, + "name": "洪湖市", + "zipcode": "433200" + }, { + "id": 2043, + "name": "松滋市", + "zipcode": "434200" + }] + }, { + "id": 214, + "name": "黄冈市", + "child": [{ + "id": 2044, + "name": "黄州区", + "zipcode": "438000" + }, { + "id": 2045, + "name": "团风县", + "zipcode": "438000" + }, { + "id": 2046, + "name": "红安县", + "zipcode": "438401" + }, { + "id": 2047, + "name": "罗田县", + "zipcode": "438600" + }, { + "id": 2048, + "name": "英山县", + "zipcode": "438700" + }, { + "id": 2049, + "name": "浠水县", + "zipcode": "438200" + }, { + "id": 2050, + "name": "蕲春县", + "zipcode": "435300" + }, { + "id": 2051, + "name": "黄梅县", + "zipcode": "435500" + }, { + "id": 2052, + "name": "麻城市", + "zipcode": "438300" + }, { + "id": 2053, + "name": "武穴市", + "zipcode": "435400" + }] + }, { + "id": 215, + "name": "咸宁市", + "child": [{ + "id": 2054, + "name": "咸安区", + "zipcode": "437000" + }, { + "id": 2055, + "name": "嘉鱼县", + "zipcode": "437200" + }, { + "id": 2056, + "name": "通城县", + "zipcode": "437400" + }, { + "id": 2057, + "name": "崇阳县", + "zipcode": "437500" + }, { + "id": 2058, + "name": "通山县", + "zipcode": "437600" + }, { + "id": 2059, + "name": "赤壁市", + "zipcode": "437300" + }] + }, { + "id": 216, + "name": "随州市", + "child": [{ + "id": 2060, + "name": "曾都区", + "zipcode": "441300" + }, { + "id": 2061, + "name": "广水市", + "zipcode": "432700" + }] + }, { + "id": 217, + "name": "恩施土家族苗族自治州", + "child": [{ + "id": 2062, + "name": "恩施市", + "zipcode": "445000" + }, { + "id": 2063, + "name": "利川市", + "zipcode": "445400" + }, { + "id": 2064, + "name": "建始县", + "zipcode": "445300" + }, { + "id": 2065, + "name": "巴东县", + "zipcode": "444300" + }, { + "id": 2066, + "name": "宣恩县", + "zipcode": "445500" + }, { + "id": 2067, + "name": "咸丰县", + "zipcode": "445600" + }, { + "id": 2068, + "name": "来凤县", + "zipcode": "445700" + }, { + "id": 2069, + "name": "鹤峰县", + "zipcode": "445800" + }] + }, { + "id": 7590, + "name": "仙桃市", + "child": [{ + "id": 7591, + "name": "仙桃市", + "zipcode": "433000" + }] + }, { + "id": 7592, + "name": "潜江市", + "child": [{ + "id": 7593, + "name": "潜江市", + "zipcode": "433100" + }] + }, { + "id": 7594, + "name": "天门市", + "child": [{ + "id": 7595, + "name": "天门市", + "zipcode": "431700" + }] + }, { + "id": 7596, + "name": "神农架林区", + "child": [{ + "id": 7597, + "name": "神农架林区", + "zipcode": "442400" + }] + }] +}, { + "id": 19, + "name": "湖南", + "child": [{ + "id": 219, + "name": "长沙市", + "child": [{ + "id": 2074, + "name": "芙蓉区", + "zipcode": "410011" + }, { + "id": 2075, + "name": "天心区", + "zipcode": "410011" + }, { + "id": 2076, + "name": "岳麓区", + "zipcode": "410006" + }, { + "id": 2077, + "name": "开福区", + "zipcode": "410008" + }, { + "id": 2078, + "name": "雨花区", + "zipcode": "410011" + }, { + "id": 2079, + "name": "长沙县", + "zipcode": "410100" + }, { + "id": 2080, + "name": "望城县", + "zipcode": "410200" + }, { + "id": 2081, + "name": "宁乡县", + "zipcode": "410600" + }, { + "id": 2082, + "name": "浏阳市", + "zipcode": "410300" + }] + }, { + "id": 220, + "name": "株洲市", + "child": [{ + "id": 2083, + "name": "荷塘区", + "zipcode": "412000" + }, { + "id": 2084, + "name": "芦淞区", + "zipcode": "412000" + }, { + "id": 2085, + "name": "石峰区", + "zipcode": "412005" + }, { + "id": 2086, + "name": "天元区", + "zipcode": "412007" + }, { + "id": 2087, + "name": "株洲县", + "zipcode": "412100" + }, { + "id": 2088, + "name": "攸县", + "zipcode": "412300" + }, { + "id": 2089, + "name": "茶陵县", + "zipcode": "412400" + }, { + "id": 2090, + "name": "炎陵县", + "zipcode": "412500" + }, { + "id": 2091, + "name": "醴陵市", + "zipcode": "412200" + }] + }, { + "id": 221, + "name": "湘潭市", + "child": [{ + "id": 2092, + "name": "雨湖区", + "zipcode": "411100" + }, { + "id": 2093, + "name": "岳塘区", + "zipcode": "411101" + }, { + "id": 2094, + "name": "湘潭县", + "zipcode": "411228" + }, { + "id": 2095, + "name": "湘乡市", + "zipcode": "411400" + }, { + "id": 2096, + "name": "韶山市", + "zipcode": "411300" + }] + }, { + "id": 222, + "name": "衡阳市", + "child": [{ + "id": 2097, + "name": "珠晖区", + "zipcode": "421002" + }, { + "id": 2098, + "name": "雁峰区", + "zipcode": "421001" + }, { + "id": 2099, + "name": "石鼓区", + "zipcode": "421001" + }, { + "id": 2100, + "name": "蒸湘区", + "zipcode": "421001" + }, { + "id": 2101, + "name": "南岳区", + "zipcode": "421900" + }, { + "id": 2102, + "name": "衡阳县", + "zipcode": "421200" + }, { + "id": 2103, + "name": "衡南县", + "zipcode": "421131" + }, { + "id": 2104, + "name": "衡山县", + "zipcode": "421300" + }, { + "id": 2105, + "name": "衡东县", + "zipcode": "421400" + }, { + "id": 2106, + "name": "祁东县", + "zipcode": "421600" + }, { + "id": 2107, + "name": "耒阳市", + "zipcode": "421800" + }, { + "id": 2108, + "name": "常宁市", + "zipcode": "421500" + }] + }, { + "id": 223, + "name": "邵阳市", + "child": [{ + "id": 2109, + "name": "双清区", + "zipcode": "422001" + }, { + "id": 2110, + "name": "大祥区", + "zipcode": "422000" + }, { + "id": 2111, + "name": "北塔区", + "zipcode": "422007" + }, { + "id": 2112, + "name": "邵东县", + "zipcode": "422800" + }, { + "id": 2113, + "name": "新邵县", + "zipcode": "422900" + }, { + "id": 2114, + "name": "邵阳县", + "zipcode": "422100" + }, { + "id": 2115, + "name": "隆回县", + "zipcode": "422200" + }, { + "id": 2116, + "name": "洞口县", + "zipcode": "422300" + }, { + "id": 2117, + "name": "绥宁县", + "zipcode": "422600" + }, { + "id": 2118, + "name": "新宁县", + "zipcode": "422700" + }, { + "id": 2119, + "name": "城步苗族自治县", + "zipcode": "422500" + }, { + "id": 2120, + "name": "武冈市", + "zipcode": "422400" + }] + }, { + "id": 224, + "name": "岳阳市", + "child": [{ + "id": 2121, + "name": "岳阳楼区", + "zipcode": "414000" + }, { + "id": 2122, + "name": "云溪区", + "zipcode": "414009" + }, { + "id": 2123, + "name": "君山区", + "zipcode": "414005" + }, { + "id": 2124, + "name": "岳阳县", + "zipcode": "414100" + }, { + "id": 2125, + "name": "华容县", + "zipcode": "414200" + }, { + "id": 2126, + "name": "湘阴县", + "zipcode": "410500" + }, { + "id": 2127, + "name": "平江县", + "zipcode": "414500" + }, { + "id": 2128, + "name": "汨罗市", + "zipcode": "414400" + }, { + "id": 2129, + "name": "临湘市", + "zipcode": "414300" + }] + }, { + "id": 225, + "name": "常德市", + "child": [{ + "id": 2130, + "name": "武陵区", + "zipcode": "415000" + }, { + "id": 2131, + "name": "鼎城区", + "zipcode": "415101" + }, { + "id": 2132, + "name": "安乡县", + "zipcode": "415600" + }, { + "id": 2133, + "name": "汉寿县", + "zipcode": "415900" + }, { + "id": 2134, + "name": "澧县", + "zipcode": "415500" + }, { + "id": 2135, + "name": "临澧县", + "zipcode": "415200" + }, { + "id": 2136, + "name": "桃源县", + "zipcode": "415700" + }, { + "id": 2137, + "name": "石门县", + "zipcode": "415300" + }, { + "id": 2138, + "name": "津市市", + "zipcode": "415400" + }] + }, { + "id": 226, + "name": "张家界市", + "child": [{ + "id": 2139, + "name": "永定区", + "zipcode": "427000" + }, { + "id": 2140, + "name": "武陵源区", + "zipcode": "427400" + }, { + "id": 2141, + "name": "慈利县", + "zipcode": "427200" + }, { + "id": 2142, + "name": "桑植县", + "zipcode": "427100" + }] + }, { + "id": 227, + "name": "益阳市", + "child": [{ + "id": 2143, + "name": "资阳区", + "zipcode": "413001" + }, { + "id": 2144, + "name": "赫山区", + "zipcode": "413002" + }, { + "id": 2145, + "name": "南县", + "zipcode": "413200" + }, { + "id": 2146, + "name": "桃江县", + "zipcode": "413400" + }, { + "id": 2147, + "name": "安化县", + "zipcode": "413500" + }, { + "id": 2148, + "name": "沅江市", + "zipcode": "413100" + }] + }, { + "id": 228, + "name": "郴州市", + "child": [{ + "id": 2149, + "name": "北湖区", + "zipcode": "423000" + }, { + "id": 2150, + "name": "苏仙区", + "zipcode": "423000" + }, { + "id": 2151, + "name": "桂阳县", + "zipcode": "424400" + }, { + "id": 2152, + "name": "宜章县", + "zipcode": "424200" + }, { + "id": 2153, + "name": "永兴县", + "zipcode": "423300" + }, { + "id": 2154, + "name": "嘉禾县", + "zipcode": "424500" + }, { + "id": 2155, + "name": "临武县", + "zipcode": "424300" + }, { + "id": 2156, + "name": "汝城县", + "zipcode": "424100" + }, { + "id": 2157, + "name": "桂东县", + "zipcode": "423500" + }, { + "id": 2158, + "name": "安仁县", + "zipcode": "423600" + }, { + "id": 2159, + "name": "资兴市", + "zipcode": "423400" + }] + }, { + "id": 229, + "name": "永州市", + "child": [{ + "id": 2160, + "name": "冷水滩区", + "zipcode": "425100" + }, { + "id": 2161, + "name": "祁阳县", + "zipcode": "426100" + }, { + "id": 2162, + "name": "东安县", + "zipcode": "425900" + }, { + "id": 2163, + "name": "双牌县", + "zipcode": "425200" + }, { + "id": 2164, + "name": "道县", + "zipcode": "425300" + }, { + "id": 2165, + "name": "江永县", + "zipcode": "425400" + }, { + "id": 2166, + "name": "宁远县", + "zipcode": "425600" + }, { + "id": 2167, + "name": "蓝山县", + "zipcode": "425800" + }, { + "id": 2168, + "name": "新田县", + "zipcode": "425700" + }, { + "id": 2169, + "name": "江华瑶族自治县", + "zipcode": "425500" + }, { + "id": 2170, + "name": "零陵区", + "zipcode": "425002" + }] + }, { + "id": 230, + "name": "怀化市", + "child": [{ + "id": 2171, + "name": "鹤城区", + "zipcode": "418000" + }, { + "id": 2172, + "name": "中方县", + "zipcode": "418005" + }, { + "id": 2173, + "name": "沅陵县", + "zipcode": "419600" + }, { + "id": 2174, + "name": "辰溪县", + "zipcode": "419500" + }, { + "id": 2175, + "name": "溆浦县", + "zipcode": "419300" + }, { + "id": 2176, + "name": "会同县", + "zipcode": "418300" + }, { + "id": 2177, + "name": "麻阳苗族自治县", + "zipcode": "419400" + }, { + "id": 2178, + "name": "新晃侗族自治县", + "zipcode": "419200" + }, { + "id": 2179, + "name": "芷江侗族自治县", + "zipcode": "419100" + }, { + "id": 2180, + "name": "靖州苗族侗族自治县", + "zipcode": "418400" + }, { + "id": 2181, + "name": "通道侗族自治县", + "zipcode": "418500" + }, { + "id": 2182, + "name": "洪江市", + "zipcode": "418116" + }] + }, { + "id": 231, + "name": "娄底市", + "child": [{ + "id": 2183, + "name": "娄星区", + "zipcode": "417000" + }, { + "id": 2184, + "name": "双峰县", + "zipcode": "417700" + }, { + "id": 2185, + "name": "新化县", + "zipcode": "417600" + }, { + "id": 2186, + "name": "冷水江市", + "zipcode": "417500" + }, { + "id": 2187, + "name": "涟源市", + "zipcode": "417100" + }] + }, { + "id": 232, + "name": "湘西土家族苗族自治州", + "child": [{ + "id": 2188, + "name": "吉首市", + "zipcode": "416000" + }, { + "id": 2189, + "name": "泸溪县", + "zipcode": "416100" + }, { + "id": 2190, + "name": "凤凰县", + "zipcode": "416200" + }, { + "id": 2191, + "name": "花垣县", + "zipcode": "416400" + }, { + "id": 2192, + "name": "保靖县", + "zipcode": "416500" + }, { + "id": 2193, + "name": "古丈县", + "zipcode": "416300" + }, { + "id": 2194, + "name": "永顺县", + "zipcode": "416700" + }, { + "id": 2195, + "name": "龙山县", + "zipcode": "416800" + }] + }] +}, { + "id": 20, + "name": "广东", + "child": [{ + "id": 233, + "name": "广州市", + "child": [{ + "id": 2196, + "name": "荔湾区", + "zipcode": "510145" + }, { + "id": 2197, + "name": "越秀区", + "zipcode": "510030" + }, { + "id": 2198, + "name": "海珠区", + "zipcode": "510220" + }, { + "id": 2199, + "name": "天河区", + "zipcode": "510630" + }, { + "id": 2200, + "name": "白云区", + "zipcode": "510080" + }, { + "id": 2201, + "name": "黄埔区", + "zipcode": "510700" + }, { + "id": 2202, + "name": "番禺区", + "zipcode": "511400" + }, { + "id": 2203, + "name": "花都区", + "zipcode": "510800" + }, { + "id": 2204, + "name": "增城市", + "zipcode": "511300" + }, { + "id": 2205, + "name": "从化市", + "zipcode": "510900" + }, { + "id": 2206, + "name": "南沙区", + "zipcode": "511400" + }, { + "id": 2207, + "name": "萝岗区", + "zipcode": "510100" + }] + }, { + "id": 234, + "name": "韶关市", + "child": [{ + "id": 2208, + "name": "武江区", + "zipcode": "512026" + }, { + "id": 2209, + "name": "浈江区", + "zipcode": "512023" + }, { + "id": 2210, + "name": "曲江区", + "zipcode": "512100" + }, { + "id": 2211, + "name": "始兴县", + "zipcode": "512500" + }, { + "id": 2212, + "name": "仁化县", + "zipcode": "512300" + }, { + "id": 2213, + "name": "翁源县", + "zipcode": "512600" + }, { + "id": 2214, + "name": "乳源瑶族自治县", + "zipcode": "512700" + }, { + "id": 2215, + "name": "新丰县", + "zipcode": "511100" + }, { + "id": 2216, + "name": "乐昌市", + "zipcode": "512200" + }, { + "id": 2217, + "name": "南雄市", + "zipcode": "512400" + }] + }, { + "id": 235, + "name": "深圳市", + "child": [{ + "id": 2218, + "name": "罗湖区", + "zipcode": "518001" + }, { + "id": 2219, + "name": "福田区", + "zipcode": "518033" + }, { + "id": 2220, + "name": "南山区", + "zipcode": "518052" + }, { + "id": 2221, + "name": "宝安区", + "zipcode": "518101" + }, { + "id": 2222, + "name": "龙岗区", + "zipcode": "518116" + }, { + "id": 2223, + "name": "盐田区", + "zipcode": "518083" + }, { + "id": 2224, + "name": "光明新区", + "zipcode": "518107" + }, { + "id": 2225, + "name": "坪山新区", + "zipcode": "518118" + }, { + "id": 7497, + "name": "龙华新区", + "zipcode": "518109" + }] + }, { + "id": 236, + "name": "珠海市", + "child": [{ + "id": 2226, + "name": "香洲区", + "zipcode": "519000" + }, { + "id": 2227, + "name": "斗门区", + "zipcode": "519100" + }, { + "id": 2228, + "name": "金湾区", + "zipcode": "519090" + }] + }, { + "id": 237, + "name": "汕头市", + "child": [{ + "id": 2229, + "name": "龙湖区", + "zipcode": "515041" + }, { + "id": 2230, + "name": "金平区", + "zipcode": "515041" + }, { + "id": 2231, + "name": "濠江区", + "zipcode": "515071" + }, { + "id": 2232, + "name": "潮阳区", + "zipcode": "515100" + }, { + "id": 2233, + "name": "潮南区", + "zipcode": "515144" + }, { + "id": 2234, + "name": "澄海区", + "zipcode": "515800" + }, { + "id": 2235, + "name": "南澳县", + "zipcode": "515900" + }] + }, { + "id": 238, + "name": "佛山市", + "child": [{ + "id": 2236, + "name": "禅城区", + "zipcode": "528000" + }, { + "id": 2237, + "name": "南海区", + "zipcode": "528200" + }, { + "id": 2238, + "name": "顺德区", + "zipcode": "528300" + }, { + "id": 2239, + "name": "三水区", + "zipcode": "528100" + }, { + "id": 2240, + "name": "高明区", + "zipcode": "528500" + }] + }, { + "id": 239, + "name": "江门市", + "child": [{ + "id": 2241, + "name": "蓬江区", + "zipcode": "529051" + }, { + "id": 2242, + "name": "江海区", + "zipcode": "529000" + }, { + "id": 2243, + "name": "新会区", + "zipcode": "529100" + }, { + "id": 2244, + "name": "台山市", + "zipcode": "529211" + }, { + "id": 2245, + "name": "开平市", + "zipcode": "529312" + }, { + "id": 2246, + "name": "鹤山市", + "zipcode": "529711" + }, { + "id": 2247, + "name": "恩平市", + "zipcode": "529411" + }] + }, { + "id": 240, + "name": "湛江市", + "child": [{ + "id": 2248, + "name": "赤坎区", + "zipcode": "524033" + }, { + "id": 2249, + "name": "霞山区", + "zipcode": "524002" + }, { + "id": 2250, + "name": "坡头区", + "zipcode": "524057" + }, { + "id": 2251, + "name": "麻章区", + "zipcode": "524003" + }, { + "id": 2252, + "name": "遂溪县", + "zipcode": "524300" + }, { + "id": 2253, + "name": "徐闻县", + "zipcode": "524100" + }, { + "id": 2254, + "name": "廉江市", + "zipcode": "524400" + }, { + "id": 2255, + "name": "雷州市", + "zipcode": "524200" + }, { + "id": 2256, + "name": "吴川市", + "zipcode": "524500" + }, { + "id": 2257, + "name": "开发区", + "zipcode": "524022" + }] + }, { + "id": 241, + "name": "茂名市", + "child": [{ + "id": 2258, + "name": "茂南区", + "zipcode": "525011" + }, { + "id": 2259, + "name": "茂港区", + "zipcode": "525027" + }, { + "id": 2260, + "name": "电白县", + "zipcode": "525400" + }, { + "id": 2261, + "name": "高州市", + "zipcode": "525200" + }, { + "id": 2262, + "name": "化州市", + "zipcode": "525100" + }, { + "id": 2263, + "name": "信宜市", + "zipcode": "525300" + }] + }, { + "id": 242, + "name": "肇庆市", + "child": [{ + "id": 2264, + "name": "端州区", + "zipcode": "526040" + }, { + "id": 2265, + "name": "鼎湖区", + "zipcode": "526070" + }, { + "id": 2266, + "name": "广宁县", + "zipcode": "526300" + }, { + "id": 2267, + "name": "怀集县", + "zipcode": "526400" + }, { + "id": 2268, + "name": "封开县", + "zipcode": "526500" + }, { + "id": 2269, + "name": "德庆县", + "zipcode": "526600" + }, { + "id": 2270, + "name": "高要市", + "zipcode": "526100" + }, { + "id": 2271, + "name": "四会市", + "zipcode": "526200" + }, { + "id": 2272, + "name": "高新技术产业开发区", + "zipcode": "526238" + }] + }, { + "id": 243, + "name": "惠州市", + "child": [{ + "id": 2273, + "name": "惠城区", + "zipcode": "516001" + }, { + "id": 2274, + "name": "惠阳区", + "zipcode": "516200" + }, { + "id": 2275, + "name": "博罗县", + "zipcode": "516100" + }, { + "id": 2276, + "name": "惠东县", + "zipcode": "516300" + }, { + "id": 2277, + "name": "龙门县", + "zipcode": "516800" + }, { + "id": 2278, + "name": "大亚湾区", + "zipcode": "516080" + }, { + "id": 2279, + "name": "仲恺高新区", + "zipcode": "516080" + }] + }, { + "id": 244, + "name": "梅州市", + "child": [{ + "id": 2280, + "name": "梅江区", + "zipcode": "514000" + }, { + "id": 2281, + "name": "梅县", + "zipcode": "514733" + }, { + "id": 2282, + "name": "大埔县", + "zipcode": "514200" + }, { + "id": 2283, + "name": "丰顺县", + "zipcode": "514300" + }, { + "id": 2284, + "name": "五华县", + "zipcode": "514400" + }, { + "id": 2285, + "name": "平远县", + "zipcode": "514600" + }, { + "id": 2286, + "name": "蕉岭县", + "zipcode": "514100" + }, { + "id": 2287, + "name": "兴宁市", + "zipcode": "514500" + }] + }, { + "id": 245, + "name": "汕尾市", + "child": [{ + "id": 2288, + "name": "城区", + "zipcode": "516601" + }, { + "id": 2289, + "name": "陆丰市", + "zipcode": "516500" + }, { + "id": 2290, + "name": "海丰县", + "zipcode": "516400" + }, { + "id": 2291, + "name": "陆河县", + "zipcode": "516700" + }] + }, { + "id": 246, + "name": "河源市", + "child": [{ + "id": 2292, + "name": "源城区", + "zipcode": "517000" + }, { + "id": 2293, + "name": "紫金县", + "zipcode": "517400" + }, { + "id": 2294, + "name": "龙川县", + "zipcode": "517300" + }, { + "id": 2295, + "name": "连平县", + "zipcode": "517100" + }, { + "id": 2296, + "name": "和平县", + "zipcode": "517200" + }, { + "id": 2297, + "name": "东源县", + "zipcode": "517500" + }] + }, { + "id": 247, + "name": "阳江市", + "child": [{ + "id": 2298, + "name": "江城区", + "zipcode": "529525" + }, { + "id": 2299, + "name": "阳西县", + "zipcode": "529800" + }, { + "id": 2300, + "name": "阳东县", + "zipcode": "529931" + }, { + "id": 2301, + "name": "阳春市", + "zipcode": "529611" + }] + }, { + "id": 248, + "name": "清远市", + "child": [{ + "id": 2302, + "name": "清城区", + "zipcode": "511500" + }, { + "id": 2303, + "name": "佛冈县", + "zipcode": "511600" + }, { + "id": 2304, + "name": "阳山县", + "zipcode": "513100" + }, { + "id": 2305, + "name": "连山壮族瑶族自治县", + "zipcode": "513200" + }, { + "id": 2306, + "name": "连南瑶族自治县", + "zipcode": "513300" + }, { + "id": 2307, + "name": "清新县", + "zipcode": "511800" + }, { + "id": 2308, + "name": "英德市", + "zipcode": "513000" + }, { + "id": 2309, + "name": "连州市", + "zipcode": "513401" + }] + }, { + "id": 249, + "name": "潮州市", + "child": [{ + "id": 2310, + "name": "湘桥区", + "zipcode": "521000" + }, { + "id": 2311, + "name": "潮安县", + "zipcode": "515638" + }, { + "id": 2312, + "name": "饶平县", + "zipcode": "515700" + }] + }, { + "id": 250, + "name": "揭阳市", + "child": [{ + "id": 2313, + "name": "榕城区", + "zipcode": "522095" + }, { + "id": 2314, + "name": "揭东县", + "zipcode": "515554" + }, { + "id": 2315, + "name": "揭西县", + "zipcode": "515400" + }, { + "id": 2316, + "name": "惠来县", + "zipcode": "515200" + }, { + "id": 2317, + "name": "普宁市", + "zipcode": "515300" + }, { + "id": 2318, + "name": "东山区", + "zipcode": "522031" + }, { + "id": 2319, + "name": "普侨区", + "zipcode": "515339" + }, { + "id": 2320, + "name": "大南山侨区", + "zipcode": "515237" + }] + }, { + "id": 251, + "name": "云浮市", + "child": [{ + "id": 2321, + "name": "云城区", + "zipcode": "527300" + }, { + "id": 2322, + "name": "新兴县", + "zipcode": "527400" + }, { + "id": 2323, + "name": "郁南县", + "zipcode": "527100" + }, { + "id": 2324, + "name": "云安县", + "zipcode": "527500" + }, { + "id": 2325, + "name": "罗定市", + "zipcode": "527200" + }] + }, { + "id": 252, + "name": "东莞市", + "child": [{ + "id": 2326, + "name": "南城区", + "zipcode": "523000" + }, { + "id": 2327, + "name": "石龙镇", + "zipcode": "523021" + }, { + "id": 2328, + "name": "长安镇", + "zipcode": "523068" + }, { + "id": 2329, + "name": "虎门镇", + "zipcode": "523061" + }, { + "id": 2330, + "name": "横沥镇", + "zipcode": "523032" + }, { + "id": 2331, + "name": "寮步镇", + "zipcode": "523058" + }, { + "id": 2332, + "name": "黄江镇", + "zipcode": "523054" + }, { + "id": 2333, + "name": "清溪镇", + "zipcode": "523046" + }, { + "id": 2334, + "name": "莞城区", + "zipcode": "523000" + }, { + "id": 2335, + "name": "万江区", + "zipcode": "523050" + }, { + "id": 2336, + "name": "东城区", + "zipcode": "523000" + }, { + "id": 2337, + "name": "石碣镇", + "zipcode": "523024" + }, { + "id": 2338, + "name": "茶山镇", + "zipcode": "523029" + }, { + "id": 2339, + "name": "石排镇", + "zipcode": "523025" + }, { + "id": 2340, + "name": "企石镇", + "zipcode": "523027" + }, { + "id": 2341, + "name": "桥头镇", + "zipcode": "523038" + }, { + "id": 2342, + "name": "谢岗镇", + "zipcode": "523044" + }, { + "id": 2343, + "name": "东坑镇", + "zipcode": "523034" + }, { + "id": 2344, + "name": "常平镇", + "zipcode": "523036" + }, { + "id": 2345, + "name": "大朗镇", + "zipcode": "523056" + }, { + "id": 2346, + "name": "塘厦镇", + "zipcode": "523710" + }, { + "id": 2347, + "name": "凤岗镇", + "zipcode": "523048" + }, { + "id": 2348, + "name": "厚街镇", + "zipcode": "523071" + }, { + "id": 2349, + "name": "沙田镇", + "zipcode": "523073" + }, { + "id": 2350, + "name": "道滘镇", + "zipcode": "523170" + }, { + "id": 2351, + "name": "洪梅镇", + "zipcode": "523083" + }, { + "id": 2352, + "name": "麻涌镇", + "zipcode": "523078" + }, { + "id": 2353, + "name": "中堂镇", + "zipcode": "523075" + }, { + "id": 2354, + "name": "高埗镇", + "zipcode": "523270" + }, { + "id": 2355, + "name": "樟木头镇", + "zipcode": "523041" + }, { + "id": 2356, + "name": "大岭山镇", + "zipcode": "523074" + }, { + "id": 2357, + "name": "望牛墩镇", + "zipcode": "523077" + }] + }, { + "id": 253, + "name": "中山市", + "child": [{ + "id": 2358, + "name": "中山市", + "zipcode": "528403" + }] + }] +}, { + "id": 21, + "name": "广西", + "child": [{ + "id": 254, + "name": "南宁市", + "child": [{ + "id": 2359, + "name": "兴宁区", + "zipcode": "530012" + }, { + "id": 2360, + "name": "青秀区", + "zipcode": "530022" + }, { + "id": 2361, + "name": "江南区", + "zipcode": "530031" + }, { + "id": 2362, + "name": "西乡塘区", + "zipcode": "530001" + }, { + "id": 2363, + "name": "良庆区", + "zipcode": "530200" + }, { + "id": 2364, + "name": "邕宁区", + "zipcode": "530200" + }, { + "id": 2365, + "name": "武鸣县", + "zipcode": "530100" + }, { + "id": 2366, + "name": "隆安县", + "zipcode": "532700" + }, { + "id": 2367, + "name": "马山县", + "zipcode": "530600" + }, { + "id": 2368, + "name": "上林县", + "zipcode": "530500" + }, { + "id": 2369, + "name": "宾阳县", + "zipcode": "530400" + }, { + "id": 2370, + "name": "横县", + "zipcode": "530300" + }] + }, { + "id": 255, + "name": "柳州市", + "child": [{ + "id": 2371, + "name": "城中区", + "zipcode": "545001" + }, { + "id": 2372, + "name": "鱼峰区", + "zipcode": "545005" + }, { + "id": 2373, + "name": "柳南区", + "zipcode": "545005" + }, { + "id": 2374, + "name": "柳北区", + "zipcode": "545001" + }, { + "id": 2375, + "name": "柳江县", + "zipcode": "545100" + }, { + "id": 2376, + "name": "柳城县", + "zipcode": "545200" + }, { + "id": 2377, + "name": "鹿寨县", + "zipcode": "545600" + }, { + "id": 2378, + "name": "融安县", + "zipcode": "545400" + }, { + "id": 2379, + "name": "融水苗族自治县", + "zipcode": "545300" + }, { + "id": 2380, + "name": "三江侗族自治县", + "zipcode": "545500" + }] + }, { + "id": 256, + "name": "桂林市", + "child": [{ + "id": 2381, + "name": "秀峰区", + "zipcode": "541001" + }, { + "id": 2382, + "name": "叠彩区", + "zipcode": "541001" + }, { + "id": 2383, + "name": "象山区", + "zipcode": "541002" + }, { + "id": 2384, + "name": "七星区", + "zipcode": "541004" + }, { + "id": 2385, + "name": "雁山区", + "zipcode": "541006" + }, { + "id": 2386, + "name": "阳朔县", + "zipcode": "541900" + }, { + "id": 2387, + "name": "临桂县", + "zipcode": "541100" + }, { + "id": 2388, + "name": "灵川县", + "zipcode": "541200" + }, { + "id": 2389, + "name": "全州县", + "zipcode": "541500" + }, { + "id": 2390, + "name": "兴安县", + "zipcode": "541300" + }, { + "id": 2391, + "name": "永福县", + "zipcode": "541800" + }, { + "id": 2392, + "name": "灌阳县", + "zipcode": "541600" + }, { + "id": 2393, + "name": "龙胜各族自治县", + "zipcode": "541700" + }, { + "id": 2394, + "name": "资源县", + "zipcode": "541400" + }, { + "id": 2395, + "name": "平乐县", + "zipcode": "542400" + }, { + "id": 2396, + "name": "荔浦县", + "zipcode": "546600" + }, { + "id": 2397, + "name": "恭城瑶族自治县", + "zipcode": "542500" + }] + }, { + "id": 257, + "name": "梧州市", + "child": [{ + "id": 2398, + "name": "万秀区", + "zipcode": "543000" + }, { + "id": 2399, + "name": "蝶山区", + "zipcode": "543002" + }, { + "id": 2400, + "name": "长洲区", + "zipcode": "543002" + }, { + "id": 2401, + "name": "苍梧县", + "zipcode": "543100" + }, { + "id": 2402, + "name": "藤县", + "zipcode": "543300" + }, { + "id": 2403, + "name": "蒙山县", + "zipcode": "546700" + }, { + "id": 2404, + "name": "岑溪市", + "zipcode": "543200" + }] + }, { + "id": 258, + "name": "北海市", + "child": [{ + "id": 2405, + "name": "海城区", + "zipcode": "536000" + }, { + "id": 2406, + "name": "银海区", + "zipcode": "536000" + }, { + "id": 2407, + "name": "铁山港区", + "zipcode": "536017" + }, { + "id": 2408, + "name": "合浦县", + "zipcode": "536100" + }] + }, { + "id": 259, + "name": "防城港市", + "child": [{ + "id": 2409, + "name": "港口区", + "zipcode": "538001" + }, { + "id": 2410, + "name": "防城区", + "zipcode": "538021" + }, { + "id": 2411, + "name": "上思县", + "zipcode": "535500" + }, { + "id": 2412, + "name": "东兴市", + "zipcode": "538100" + }] + }, { + "id": 260, + "name": "钦州市", + "child": [{ + "id": 2413, + "name": "钦南区", + "zipcode": "535000" + }, { + "id": 2414, + "name": "钦北区", + "zipcode": "535000" + }, { + "id": 2415, + "name": "灵山县", + "zipcode": "535400" + }, { + "id": 2416, + "name": "浦北县", + "zipcode": "535300" + }, { + "id": 2417, + "name": "钦州港经济开发区", + "zipcode": "535008" + }] + }, { + "id": 261, + "name": "贵港市", + "child": [{ + "id": 2418, + "name": "港北区", + "zipcode": "537100" + }, { + "id": 2419, + "name": "港南区", + "zipcode": "537132" + }, { + "id": 2420, + "name": "覃塘区", + "zipcode": "537121" + }, { + "id": 2421, + "name": "平南县", + "zipcode": "537300" + }, { + "id": 2422, + "name": "桂平市", + "zipcode": "537200" + }] + }, { + "id": 262, + "name": "玉林市", + "child": [{ + "id": 2423, + "name": "玉州区", + "zipcode": "537000" + }, { + "id": 2424, + "name": "容县", + "zipcode": "537500" + }, { + "id": 2425, + "name": "陆川县", + "zipcode": "537700" + }, { + "id": 2426, + "name": "博白县", + "zipcode": "537600" + }, { + "id": 2427, + "name": "兴业县", + "zipcode": "537800" + }, { + "id": 2428, + "name": "北流市", + "zipcode": "537400" + }] + }, { + "id": 263, + "name": "百色市", + "child": [{ + "id": 2429, + "name": "右江区", + "zipcode": "533000" + }, { + "id": 2430, + "name": "田阳县", + "zipcode": "533600" + }, { + "id": 2431, + "name": "田东县", + "zipcode": "531500" + }, { + "id": 2432, + "name": "平果县", + "zipcode": "531400" + }, { + "id": 2433, + "name": "德保县", + "zipcode": "533700" + }, { + "id": 2434, + "name": "靖西县", + "zipcode": "533800" + }, { + "id": 2435, + "name": "那坡县", + "zipcode": "533900" + }, { + "id": 2436, + "name": "凌云县", + "zipcode": "533100" + }, { + "id": 2437, + "name": "乐业县", + "zipcode": "533200" + }, { + "id": 2438, + "name": "田林县", + "zipcode": "533300" + }, { + "id": 2439, + "name": "西林县", + "zipcode": "533500" + }, { + "id": 2440, + "name": "隆林各族自治县", + "zipcode": "533400" + }] + }, { + "id": 264, + "name": "贺州市", + "child": [{ + "id": 2441, + "name": "八步区", + "zipcode": "542800" + }, { + "id": 2442, + "name": "昭平县", + "zipcode": "546800" + }, { + "id": 2443, + "name": "钟山县", + "zipcode": "542600" + }, { + "id": 2444, + "name": "富川瑶族自治县", + "zipcode": "542700" + }] + }, { + "id": 265, + "name": "河池市", + "child": [{ + "id": 2445, + "name": "金城江区", + "zipcode": "547000" + }, { + "id": 2446, + "name": "南丹县", + "zipcode": "547200" + }, { + "id": 2447, + "name": "天峨县", + "zipcode": "547300" + }, { + "id": 2448, + "name": "凤山县", + "zipcode": "547600" + }, { + "id": 2449, + "name": "东兰县", + "zipcode": "547400" + }, { + "id": 2450, + "name": "罗城仫佬族自治县", + "zipcode": "546400" + }, { + "id": 2451, + "name": "环江毛南族自治县", + "zipcode": "547100" + }, { + "id": 2452, + "name": "巴马瑶族自治县", + "zipcode": "547500" + }, { + "id": 2453, + "name": "都安瑶族自治县", + "zipcode": "530700" + }, { + "id": 2454, + "name": "大化瑶族自治县", + "zipcode": "530800" + }, { + "id": 2455, + "name": "宜州市", + "zipcode": "546300" + }] + }, { + "id": 266, + "name": "来宾市", + "child": [{ + "id": 2456, + "name": "兴宾区", + "zipcode": "546100" + }, { + "id": 2457, + "name": "忻城县", + "zipcode": "546200" + }, { + "id": 2458, + "name": "象州县", + "zipcode": "545800" + }, { + "id": 2459, + "name": "武宣县", + "zipcode": "545900" + }, { + "id": 2460, + "name": "金秀瑶族自治县", + "zipcode": "545700" + }, { + "id": 2461, + "name": "合山市", + "zipcode": "546500" + }] + }, { + "id": 267, + "name": "崇左市", + "child": [{ + "id": 2462, + "name": "江洲区", + "zipcode": "532200" + }, { + "id": 2463, + "name": "扶绥县", + "zipcode": "532100" + }, { + "id": 2464, + "name": "宁明县", + "zipcode": "532500" + }, { + "id": 2465, + "name": "龙州县", + "zipcode": "532400" + }, { + "id": 2466, + "name": "大新县", + "zipcode": "532300" + }, { + "id": 2467, + "name": "天等县", + "zipcode": "532800" + }, { + "id": 2468, + "name": "凭祥市", + "zipcode": "532600" + }] + }] +}, { + "id": 22, + "name": "海南", + "child": [{ + "id": 268, + "name": "海口市", + "child": [{ + "id": 2470, + "name": "秀英区", + "zipcode": "570311" + }, { + "id": 2471, + "name": "龙华区", + "zipcode": "570105" + }, { + "id": 2472, + "name": "琼山区", + "zipcode": "571100" + }, { + "id": 2473, + "name": "美兰区", + "zipcode": "570203" + }] + }, { + "id": 269, + "name": "省直辖县级行政单位", + "child": [{ + "id": 2474, + "name": "五指山市", + "zipcode": "572200" + }, { + "id": 2475, + "name": "琼海市", + "zipcode": "571400" + }, { + "id": 2476, + "name": "儋州市", + "zipcode": "571700" + }, { + "id": 2477, + "name": "文昌市", + "zipcode": "571300" + }, { + "id": 2478, + "name": "万宁市", + "zipcode": "571500" + }, { + "id": 2479, + "name": "东方市", + "zipcode": "572600" + }, { + "id": 2480, + "name": "定安县", + "zipcode": "571200" + }, { + "id": 2481, + "name": "屯昌县", + "zipcode": "571600" + }, { + "id": 2482, + "name": "澄迈县", + "zipcode": "571900" + }, { + "id": 2483, + "name": "临高县", + "zipcode": "571800" + }, { + "id": 2484, + "name": "白沙黎族自治县", + "zipcode": "572800" + }, { + "id": 2485, + "name": "昌江黎族自治县", + "zipcode": "572700" + }, { + "id": 2486, + "name": "乐东黎族自治县", + "zipcode": "572500" + }, { + "id": 2487, + "name": "陵水黎族自治县", + "zipcode": "572400" + }, { + "id": 2488, + "name": "保亭黎族苗族自治县", + "zipcode": "572300" + }, { + "id": 2489, + "name": "琼中黎族苗族自治县", + "zipcode": "572900" + }, { + "id": 2490, + "name": "西、南、中沙群岛办事处", + "zipcode": "573100" + }] + }, { + "id": 270, + "name": "三亚市", + "child": [{ + "id": 2491, + "name": "河西区", + "zipcode": "572000" + }, { + "id": 2492, + "name": "河东区", + "zipcode": "572000" + }, { + "id": 2493, + "name": "田独镇", + "zipcode": "572011" + }, { + "id": 2494, + "name": "凤凰镇", + "zipcode": "572023" + }, { + "id": 2495, + "name": "三亚市", + "zipcode": "572000" + }, { + "id": 2496, + "name": "崖城镇", + "zipcode": "572025" + }, { + "id": 2497, + "name": "天涯镇", + "zipcode": "572029" + }, { + "id": 2498, + "name": "育才乡", + "zipcode": "572032" + }, { + "id": 2499, + "name": "海棠湾镇", + "zipcode": "572014" + }] + }] +}, { + "id": 23, + "name": "重庆", + "child": [{ + "id": 271, + "name": "重庆市", + "child": [{ + "id": 2500, + "name": "万州区", + "zipcode": "404100" + }, { + "id": 2501, + "name": "涪陵区", + "zipcode": "408000" + }, { + "id": 2502, + "name": "渝中区", + "zipcode": "400010" + }, { + "id": 2503, + "name": "大渡口区", + "zipcode": "400080" + }, { + "id": 2504, + "name": "江北区", + "zipcode": "400020" + }, { + "id": 2505, + "name": "沙坪坝区", + "zipcode": "400030" + }, { + "id": 2506, + "name": "九龙坡区", + "zipcode": "400050" + }, { + "id": 2507, + "name": "南岸区", + "zipcode": "400064" + }, { + "id": 2508, + "name": "北碚区", + "zipcode": "400700" + }, { + "id": 2509, + "name": "万盛区", + "zipcode": "400800" + }, { + "id": 2510, + "name": "双桥区", + "zipcode": "400900" + }, { + "id": 2511, + "name": "渝北区", + "zipcode": "401120" + }, { + "id": 2512, + "name": "巴南区", + "zipcode": "401320" + }, { + "id": 2513, + "name": "黔江区", + "zipcode": "409700" + }, { + "id": 2514, + "name": "长寿区", + "zipcode": "401220" + }, { + "id": 2515, + "name": "綦江县", + "zipcode": "401420" + }, { + "id": 2516, + "name": "潼南县", + "zipcode": "402660" + }, { + "id": 2517, + "name": "铜梁县", + "zipcode": "402560" + }, { + "id": 2518, + "name": "大足县", + "zipcode": "402360" + }, { + "id": 2519, + "name": "荣昌县", + "zipcode": "402460" + }, { + "id": 2520, + "name": "璧山县", + "zipcode": "402760" + }, { + "id": 2521, + "name": "梁平县", + "zipcode": "405200" + }, { + "id": 2522, + "name": "城口县", + "zipcode": "405900" + }, { + "id": 2523, + "name": "丰都县", + "zipcode": "408200" + }, { + "id": 2524, + "name": "垫江县", + "zipcode": "408300" + }, { + "id": 2525, + "name": "武隆县", + "zipcode": "408500" + }, { + "id": 2526, + "name": "忠县", + "zipcode": "404300" + }, { + "id": 2527, + "name": "开县", + "zipcode": "405400" + }, { + "id": 2528, + "name": "云阳县", + "zipcode": "404500" + }, { + "id": 2529, + "name": "奉节县", + "zipcode": "404600" + }, { + "id": 2530, + "name": "巫山县", + "zipcode": "404700" + }, { + "id": 2531, + "name": "巫溪县", + "zipcode": "405800" + }, { + "id": 2532, + "name": "石柱土家族自治县", + "zipcode": "409100" + }, { + "id": 2533, + "name": "秀山土家族苗族自治县", + "zipcode": "409900" + }, { + "id": 2534, + "name": "酉阳土家族苗族自治县", + "zipcode": "409800" + }, { + "id": 2535, + "name": "彭水苗族土家族自治县", + "zipcode": "409600" + }, { + "id": 2536, + "name": "高新区", + "zipcode": "400039" + }, { + "id": 2537, + "name": "江津区", + "zipcode": "402260" + }, { + "id": 2538, + "name": "合川区", + "zipcode": "401520" + }, { + "id": 2539, + "name": "永川区", + "zipcode": "402160" + }, { + "id": 2540, + "name": "南川区", + "zipcode": "408400" + }] + }] +}, { + "id": 24, + "name": "四川", + "child": [{ + "id": 272, + "name": "成都市", + "child": [{ + "id": 2541, + "name": "锦江区", + "zipcode": "610021" + }, { + "id": 2542, + "name": "青羊区", + "zipcode": "610031" + }, { + "id": 2543, + "name": "金牛区", + "zipcode": "610036" + }, { + "id": 2544, + "name": "武侯区", + "zipcode": "610041" + }, { + "id": 2545, + "name": "成华区", + "zipcode": "610066" + }, { + "id": 2546, + "name": "龙泉驿区", + "zipcode": "610100" + }, { + "id": 2547, + "name": "青白江区", + "zipcode": "610300" + }, { + "id": 2548, + "name": "新都区", + "zipcode": "610500" + }, { + "id": 2549, + "name": "温江区", + "zipcode": "611130" + }, { + "id": 2550, + "name": "金堂县", + "zipcode": "610400" + }, { + "id": 2551, + "name": "双流县", + "zipcode": "610200" + }, { + "id": 2552, + "name": "郫县", + "zipcode": "611700" + }, { + "id": 2553, + "name": "大邑县", + "zipcode": "611300" + }, { + "id": 2554, + "name": "蒲江县", + "zipcode": "611630" + }, { + "id": 2555, + "name": "新津县", + "zipcode": "611430" + }, { + "id": 2556, + "name": "都江堰市", + "zipcode": "611830" + }, { + "id": 2557, + "name": "彭州市", + "zipcode": "611930" + }, { + "id": 2558, + "name": "邛崃市", + "zipcode": "611530" + }, { + "id": 2559, + "name": "崇州市", + "zipcode": "611230" + }, { + "id": 2560, + "name": "高新区", + "zipcode": "610041" + }, { + "id": 2561, + "name": "高新西区", + "zipcode": "611731" + }] + }, { + "id": 273, + "name": "自贡市", + "child": [{ + "id": 2562, + "name": "自流井区", + "zipcode": "643000" + }, { + "id": 2563, + "name": "贡井区", + "zipcode": "643020" + }, { + "id": 2564, + "name": "大安区", + "zipcode": "643010" + }, { + "id": 2565, + "name": "沿滩区", + "zipcode": "643030" + }, { + "id": 2566, + "name": "荣县", + "zipcode": "643100" + }, { + "id": 2567, + "name": "富顺县", + "zipcode": "643200" + }] + }, { + "id": 274, + "name": "攀枝花市", + "child": [{ + "id": 2568, + "name": "东区", + "zipcode": "617067" + }, { + "id": 2569, + "name": "西区", + "zipcode": "617068" + }, { + "id": 2570, + "name": "仁和区", + "zipcode": "617061" + }, { + "id": 2571, + "name": "米易县", + "zipcode": "617200" + }, { + "id": 2572, + "name": "盐边县", + "zipcode": "617100" + }] + }, { + "id": 275, + "name": "泸州市", + "child": [{ + "id": 2573, + "name": "江阳区", + "zipcode": "646000" + }, { + "id": 2574, + "name": "纳溪区", + "zipcode": "646300" + }, { + "id": 2575, + "name": "龙马潭区", + "zipcode": "646000" + }, { + "id": 2576, + "name": "泸县", + "zipcode": "646106" + }, { + "id": 2577, + "name": "合江县", + "zipcode": "646200" + }, { + "id": 2578, + "name": "叙永县", + "zipcode": "646400" + }, { + "id": 2579, + "name": "古蔺县", + "zipcode": "646500" + }] + }, { + "id": 276, + "name": "德阳市", + "child": [{ + "id": 2580, + "name": "旌阳区", + "zipcode": "618000" + }, { + "id": 2581, + "name": "中江县", + "zipcode": "618100" + }, { + "id": 2582, + "name": "罗江县", + "zipcode": "618500" + }, { + "id": 2583, + "name": "广汉市", + "zipcode": "618300" + }, { + "id": 2584, + "name": "什邡市", + "zipcode": "618400" + }, { + "id": 2585, + "name": "绵竹市", + "zipcode": "618200" + }] + }, { + "id": 277, + "name": "绵阳市", + "child": [{ + "id": 2586, + "name": "涪城区", + "zipcode": "621000" + }, { + "id": 2587, + "name": "游仙区", + "zipcode": "621022" + }, { + "id": 2588, + "name": "三台县", + "zipcode": "621100" + }, { + "id": 2589, + "name": "盐亭县", + "zipcode": "621600" + }, { + "id": 2590, + "name": "安县", + "zipcode": "622650" + }, { + "id": 2591, + "name": "梓潼县", + "zipcode": "622150" + }, { + "id": 2592, + "name": "北川羌族自治县", + "zipcode": "622750" + }, { + "id": 2593, + "name": "平武县", + "zipcode": "622550" + }, { + "id": 2594, + "name": "江油市", + "zipcode": "621700" + }, { + "id": 2595, + "name": "农科区", + "zipcode": "621023" + }, { + "id": 2596, + "name": "经济技术开发区", + "zipcode": "621000" + }, { + "id": 2597, + "name": "高新区", + "zipcode": "621000" + }, { + "id": 2598, + "name": "仙海区", + "zipcode": "621007" + }] + }, { + "id": 278, + "name": "广元市", + "child": [{ + "id": 2599, + "name": "利州区", + "zipcode": "628017" + }, { + "id": 2600, + "name": "元坝区", + "zipcode": "628017" + }, { + "id": 2601, + "name": "朝天区", + "zipcode": "628017" + }, { + "id": 2602, + "name": "旺苍县", + "zipcode": "628200" + }, { + "id": 2603, + "name": "青川县", + "zipcode": "628100" + }, { + "id": 2604, + "name": "剑阁县", + "zipcode": "628300" + }, { + "id": 2605, + "name": "苍溪县", + "zipcode": "628400" + }] + }, { + "id": 279, + "name": "遂宁市", + "child": [{ + "id": 2606, + "name": "船山区", + "zipcode": "629000" + }, { + "id": 2607, + "name": "安居区", + "zipcode": "629000" + }, { + "id": 2608, + "name": "蓬溪县", + "zipcode": "629100" + }, { + "id": 2609, + "name": "射洪县", + "zipcode": "629200" + }, { + "id": 2610, + "name": "大英县", + "zipcode": "629300" + }] + }, { + "id": 280, + "name": "内江市", + "child": [{ + "id": 2611, + "name": "市中区", + "zipcode": "641000" + }, { + "id": 2612, + "name": "东兴区", + "zipcode": "641100" + }, { + "id": 2613, + "name": "威远县", + "zipcode": "642450" + }, { + "id": 2614, + "name": "资中县", + "zipcode": "641200" + }, { + "id": 2615, + "name": "隆昌县", + "zipcode": "642150" + }] + }, { + "id": 281, + "name": "乐山市", + "child": [{ + "id": 2616, + "name": "市中区", + "zipcode": "614000" + }, { + "id": 2617, + "name": "沙湾区", + "zipcode": "614900" + }, { + "id": 2618, + "name": "五通桥区", + "zipcode": "614800" + }, { + "id": 2619, + "name": "金口河区", + "zipcode": "614700" + }, { + "id": 2620, + "name": "犍为县", + "zipcode": "614400" + }, { + "id": 2621, + "name": "井研县", + "zipcode": "613100" + }, { + "id": 2622, + "name": "夹江县", + "zipcode": "614100" + }, { + "id": 2623, + "name": "沐川县", + "zipcode": "614500" + }, { + "id": 2624, + "name": "峨边彝族自治县", + "zipcode": "614300" + }, { + "id": 2625, + "name": "马边彝族自治县", + "zipcode": "614600" + }, { + "id": 2626, + "name": "峨眉山市", + "zipcode": "614200" + }] + }, { + "id": 282, + "name": "南充市", + "child": [{ + "id": 2627, + "name": "顺庆区", + "zipcode": "637000" + }, { + "id": 2628, + "name": "高坪区", + "zipcode": "637100" + }, { + "id": 2629, + "name": "嘉陵区", + "zipcode": "637100" + }, { + "id": 2630, + "name": "南部县", + "zipcode": "637300" + }, { + "id": 2631, + "name": "营山县", + "zipcode": "637700" + }, { + "id": 2632, + "name": "蓬安县", + "zipcode": "637800" + }, { + "id": 2633, + "name": "仪陇县", + "zipcode": "637600" + }, { + "id": 2634, + "name": "西充县", + "zipcode": "637200" + }, { + "id": 2635, + "name": "阆中市", + "zipcode": "637400" + }] + }, { + "id": 283, + "name": "眉山市", + "child": [{ + "id": 2636, + "name": "东坡区", + "zipcode": "620010" + }, { + "id": 2637, + "name": "仁寿县", + "zipcode": "620500" + }, { + "id": 2638, + "name": "彭山县", + "zipcode": "620860" + }, { + "id": 2639, + "name": "洪雅县", + "zipcode": "620360" + }, { + "id": 2640, + "name": "丹棱县", + "zipcode": "620200" + }, { + "id": 2641, + "name": "青神县", + "zipcode": "620460" + }] + }, { + "id": 284, + "name": "宜宾市", + "child": [{ + "id": 2642, + "name": "翠屏区", + "zipcode": "644000" + }, { + "id": 2643, + "name": "宜宾县", + "zipcode": "644600" + }, { + "id": 2644, + "name": "南溪县", + "zipcode": "644100" + }, { + "id": 2645, + "name": "江安县", + "zipcode": "644200" + }, { + "id": 2646, + "name": "长宁县", + "zipcode": "644300" + }, { + "id": 2647, + "name": "高县", + "zipcode": "645150" + }, { + "id": 2648, + "name": "珙县", + "zipcode": "644500" + }, { + "id": 2649, + "name": "筠连县", + "zipcode": "645250" + }, { + "id": 2650, + "name": "兴文县", + "zipcode": "644400" + }, { + "id": 2651, + "name": "屏山县", + "zipcode": "645350" + }] + }, { + "id": 285, + "name": "广安市", + "child": [{ + "id": 2652, + "name": "广安区", + "zipcode": "638000" + }, { + "id": 2653, + "name": "岳池县", + "zipcode": "638300" + }, { + "id": 2654, + "name": "武胜县", + "zipcode": "638400" + }, { + "id": 2655, + "name": "邻水县", + "zipcode": "638500" + }, { + "id": 2656, + "name": "华蓥市", + "zipcode": "638600" + }] + }, { + "id": 286, + "name": "达州市", + "child": [{ + "id": 2657, + "name": "通川区", + "zipcode": "635000" + }, { + "id": 2658, + "name": "达县", + "zipcode": "635000" + }, { + "id": 2659, + "name": "宣汉县", + "zipcode": "636150" + }, { + "id": 2660, + "name": "开江县", + "zipcode": "636250" + }, { + "id": 2661, + "name": "大竹县", + "zipcode": "635100" + }, { + "id": 2662, + "name": "渠县", + "zipcode": "635200" + }, { + "id": 2663, + "name": "万源市", + "zipcode": "636350" + }] + }, { + "id": 287, + "name": "雅安市", + "child": [{ + "id": 2664, + "name": "雨城区", + "zipcode": "625000" + }, { + "id": 2665, + "name": "名山县", + "zipcode": "625100" + }, { + "id": 2666, + "name": "荥经县", + "zipcode": "625200" + }, { + "id": 2667, + "name": "汉源县", + "zipcode": "625300" + }, { + "id": 2668, + "name": "石棉县", + "zipcode": "625400" + }, { + "id": 2669, + "name": "天全县", + "zipcode": "625500" + }, { + "id": 2670, + "name": "芦山县", + "zipcode": "625600" + }, { + "id": 2671, + "name": "宝兴县", + "zipcode": "625700" + }] + }, { + "id": 288, + "name": "巴中市", + "child": [{ + "id": 2672, + "name": "巴州区", + "zipcode": "636001" + }, { + "id": 2673, + "name": "通江县", + "zipcode": "636700" + }, { + "id": 2674, + "name": "南江县", + "zipcode": "636600" + }, { + "id": 2675, + "name": "平昌县", + "zipcode": "636400" + }] + }, { + "id": 289, + "name": "资阳市", + "child": [{ + "id": 2676, + "name": "雁江区", + "zipcode": "641300" + }, { + "id": 2677, + "name": "安岳县", + "zipcode": "642350" + }, { + "id": 2678, + "name": "乐至县", + "zipcode": "641500" + }, { + "id": 2679, + "name": "简阳市", + "zipcode": "641400" + }] + }, { + "id": 290, + "name": "阿坝藏族羌族自治州", + "child": [{ + "id": 2680, + "name": "汶川县", + "zipcode": "623000" + }, { + "id": 2681, + "name": "理县", + "zipcode": "623100" + }, { + "id": 2682, + "name": "茂县", + "zipcode": "623200" + }, { + "id": 2683, + "name": "松潘县", + "zipcode": "623300" + }, { + "id": 2684, + "name": "九寨沟县", + "zipcode": "623400" + }, { + "id": 2685, + "name": "金川县", + "zipcode": "624100" + }, { + "id": 2686, + "name": "小金县", + "zipcode": "624200" + }, { + "id": 2687, + "name": "黑水县", + "zipcode": "623500" + }, { + "id": 2688, + "name": "马尔康县", + "zipcode": "624000" + }, { + "id": 2689, + "name": "壤塘县", + "zipcode": "624300" + }, { + "id": 2690, + "name": "阿坝县", + "zipcode": "624600" + }, { + "id": 2691, + "name": "若尔盖县", + "zipcode": "624500" + }, { + "id": 2692, + "name": "红原县", + "zipcode": "624400" + }] + }, { + "id": 291, + "name": "甘孜藏族自治州", + "child": [{ + "id": 2693, + "name": "康定县", + "zipcode": "626000" + }, { + "id": 2694, + "name": "泸定县", + "zipcode": "626100" + }, { + "id": 2695, + "name": "丹巴县", + "zipcode": "626300" + }, { + "id": 2696, + "name": "九龙县", + "zipcode": "626200" + }, { + "id": 2697, + "name": "雅江县", + "zipcode": "627450" + }, { + "id": 2698, + "name": "道孚县", + "zipcode": "626400" + }, { + "id": 2699, + "name": "炉霍县", + "zipcode": "626500" + }, { + "id": 2700, + "name": "甘孜县", + "zipcode": "626700" + }, { + "id": 2701, + "name": "新龙县", + "zipcode": "626800" + }, { + "id": 2702, + "name": "德格县", + "zipcode": "627250" + }, { + "id": 2703, + "name": "白玉县", + "zipcode": "200000" + }, { + "id": 2704, + "name": "石渠县", + "zipcode": "200000" + }, { + "id": 2705, + "name": "色达县", + "zipcode": "201100" + }, { + "id": 2706, + "name": "理塘县", + "zipcode": "200000" + }, { + "id": 2707, + "name": "巴塘县", + "zipcode": "200120" + }, { + "id": 2708, + "name": "乡城县", + "zipcode": "200000" + }, { + "id": 2709, + "name": "稻城县", + "zipcode": "200000" + }, { + "id": 2710, + "name": "得荣县", + "zipcode": "200000" + }] + }, { + "id": 292, + "name": "凉山彝族自治州", + "child": [{ + "id": 2711, + "name": "西昌市", + "zipcode": "200000" + }, { + "id": 2712, + "name": "木里藏族自治县", + "zipcode": "200000" + }, { + "id": 2713, + "name": "盐源县", + "zipcode": "200000" + }, { + "id": 2714, + "name": "德昌县", + "zipcode": "201300" + }, { + "id": 2715, + "name": "会理县", + "zipcode": "201600" + }, { + "id": 2716, + "name": "会东县", + "zipcode": "201800" + }, { + "id": 2717, + "name": "宁南县", + "zipcode": "201900" + }, { + "id": 2718, + "name": "普格县", + "zipcode": "201700" + }, { + "id": 2719, + "name": "布拖县", + "zipcode": "201500" + }, { + "id": 2720, + "name": "金阳县", + "zipcode": "201400" + }, { + "id": 2721, + "name": "昭觉县", + "zipcode": "202150" + }, { + "id": 2722, + "name": "喜德县", + "zipcode": "616750" + }, { + "id": 2723, + "name": "冕宁县", + "zipcode": "615600" + }, { + "id": 2724, + "name": "越西县", + "zipcode": "616650" + }, { + "id": 2725, + "name": "甘洛县", + "zipcode": "616850" + }, { + "id": 2726, + "name": "美姑县", + "zipcode": "616450" + }, { + "id": 2727, + "name": "雷波县", + "zipcode": "616550" + }] + }] +}, { + "id": 25, + "name": "贵州", + "child": [{ + "id": 293, + "name": "贵阳市", + "child": [{ + "id": 2728, + "name": "南明区", + "zipcode": "550001" + }, { + "id": 2729, + "name": "云岩区", + "zipcode": "550001" + }, { + "id": 2730, + "name": "花溪区", + "zipcode": "550025" + }, { + "id": 2731, + "name": "乌当区", + "zipcode": "550018" + }, { + "id": 2732, + "name": "白云区", + "zipcode": "550014" + }, { + "id": 2733, + "name": "小河区", + "zipcode": "550009" + }, { + "id": 2734, + "name": "开阳县", + "zipcode": "550300" + }, { + "id": 2735, + "name": "息烽县", + "zipcode": "551100" + }, { + "id": 2736, + "name": "修文县", + "zipcode": "550200" + }, { + "id": 2737, + "name": "清镇市", + "zipcode": "551400" + }, { + "id": 2738, + "name": "金阳新区", + "zipcode": "550081" + }] + }, { + "id": 294, + "name": "六盘水市", + "child": [{ + "id": 2739, + "name": "钟山区", + "zipcode": "553000" + }, { + "id": 2740, + "name": "六枝特区", + "zipcode": "553400" + }, { + "id": 2741, + "name": "水城县", + "zipcode": "553000" + }, { + "id": 2742, + "name": "盘县", + "zipcode": "561601" + }] + }, { + "id": 295, + "name": "遵义市", + "child": [{ + "id": 2743, + "name": "红花岗区", + "zipcode": "563000" + }, { + "id": 2744, + "name": "汇川区", + "zipcode": "563000" + }, { + "id": 2745, + "name": "遵义县", + "zipcode": "563100" + }, { + "id": 2746, + "name": "桐梓县", + "zipcode": "563200" + }, { + "id": 2747, + "name": "绥阳县", + "zipcode": "563300" + }, { + "id": 2748, + "name": "正安县", + "zipcode": "563400" + }, { + "id": 2749, + "name": "道真仡佬族苗族自治县", + "zipcode": "563500" + }, { + "id": 2750, + "name": "务川仡佬族苗族自治县", + "zipcode": "564300" + }, { + "id": 2751, + "name": "凤冈县", + "zipcode": "564200" + }, { + "id": 2752, + "name": "湄潭县", + "zipcode": "564100" + }, { + "id": 2753, + "name": "余庆县", + "zipcode": "564400" + }, { + "id": 2754, + "name": "习水县", + "zipcode": "564600" + }, { + "id": 2755, + "name": "赤水市", + "zipcode": "564700" + }, { + "id": 2756, + "name": "仁怀市", + "zipcode": "564500" + }] + }, { + "id": 296, + "name": "安顺市", + "child": [{ + "id": 2757, + "name": "西秀区", + "zipcode": "561000" + }, { + "id": 2758, + "name": "平坝县", + "zipcode": "561100" + }, { + "id": 2759, + "name": "普定县", + "zipcode": "562100" + }, { + "id": 2760, + "name": "镇宁布依族苗族自治县", + "zipcode": "561200" + }, { + "id": 2761, + "name": "关岭布依族苗族自治县", + "zipcode": "561300" + }, { + "id": 2762, + "name": "紫云苗族布依族自治县", + "zipcode": "550800" + }] + }, { + "id": 297, + "name": "铜仁地区", + "child": [{ + "id": 2763, + "name": "铜仁市", + "zipcode": "554300" + }, { + "id": 2764, + "name": "江口县", + "zipcode": "554400" + }, { + "id": 2765, + "name": "玉屏侗族自治县", + "zipcode": "554004" + }, { + "id": 2766, + "name": "石阡县", + "zipcode": "555100" + }, { + "id": 2767, + "name": "思南县", + "zipcode": "565100" + }, { + "id": 2768, + "name": "印江土家族苗族自治县", + "zipcode": "555200" + }, { + "id": 2769, + "name": "德江县", + "zipcode": "565200" + }, { + "id": 2770, + "name": "沿河土家族自治县", + "zipcode": "565300" + }, { + "id": 2771, + "name": "松桃苗族自治县", + "zipcode": "554100" + }, { + "id": 2772, + "name": "万山特区", + "zipcode": "554200" + }] + }, { + "id": 298, + "name": "黔西南布依族苗族自治州", + "child": [{ + "id": 2773, + "name": "兴义市", + "zipcode": "562400" + }, { + "id": 2774, + "name": "兴仁县", + "zipcode": "562300" + }, { + "id": 2775, + "name": "普安县", + "zipcode": "561500" + }, { + "id": 2776, + "name": "晴隆县", + "zipcode": "561400" + }, { + "id": 2777, + "name": "贞丰县", + "zipcode": "562200" + }, { + "id": 2778, + "name": "望谟县", + "zipcode": "552300" + }, { + "id": 2779, + "name": "册亨县", + "zipcode": "552200" + }, { + "id": 2780, + "name": "安龙县", + "zipcode": "552400" + }] + }, { + "id": 299, + "name": "毕节地区", + "child": [{ + "id": 2781, + "name": "毕节市", + "zipcode": "551700" + }, { + "id": 2782, + "name": "大方县", + "zipcode": "551600" + }, { + "id": 2783, + "name": "黔西县", + "zipcode": "551500" + }, { + "id": 2784, + "name": "金沙县", + "zipcode": "551800" + }, { + "id": 2785, + "name": "织金县", + "zipcode": "552100" + }, { + "id": 2786, + "name": "纳雍县", + "zipcode": "553300" + }, { + "id": 2787, + "name": "威宁彝族回族苗族自治县", + "zipcode": "553100" + }, { + "id": 2788, + "name": "赫章县", + "zipcode": "553200" + }] + }, { + "id": 300, + "name": "黔东南苗族侗族自治州", + "child": [{ + "id": 2789, + "name": "凯里市", + "zipcode": "556000" + }, { + "id": 2790, + "name": "黄平县", + "zipcode": "556100" + }, { + "id": 2791, + "name": "施秉县", + "zipcode": "556200" + }, { + "id": 2792, + "name": "三穗县", + "zipcode": "556500" + }, { + "id": 2793, + "name": "镇远县", + "zipcode": "557700" + }, { + "id": 2794, + "name": "岑巩县", + "zipcode": "557800" + }, { + "id": 2795, + "name": "天柱县", + "zipcode": "556600" + }, { + "id": 2796, + "name": "锦屏县", + "zipcode": "556700" + }, { + "id": 2797, + "name": "剑河县", + "zipcode": "556400" + }, { + "id": 2798, + "name": "台江县", + "zipcode": "556300" + }, { + "id": 2799, + "name": "黎平县", + "zipcode": "557300" + }, { + "id": 2800, + "name": "榕江县", + "zipcode": "557200" + }, { + "id": 2801, + "name": "从江县", + "zipcode": "557400" + }, { + "id": 2802, + "name": "雷山县", + "zipcode": "557100" + }, { + "id": 2803, + "name": "麻江县", + "zipcode": "557600" + }, { + "id": 2804, + "name": "丹寨县", + "zipcode": "557500" + }] + }, { + "id": 301, + "name": "黔南布依族苗族自治州", + "child": [{ + "id": 2805, + "name": "都匀市", + "zipcode": "558000" + }, { + "id": 2806, + "name": "福泉市", + "zipcode": "550500" + }, { + "id": 2807, + "name": "荔波县", + "zipcode": "558400" + }, { + "id": 2808, + "name": "贵定县", + "zipcode": "551300" + }, { + "id": 2809, + "name": "瓮安县", + "zipcode": "550400" + }, { + "id": 2810, + "name": "独山县", + "zipcode": "558200" + }, { + "id": 2811, + "name": "平塘县", + "zipcode": "558300" + }, { + "id": 2812, + "name": "罗甸县", + "zipcode": "550100" + }, { + "id": 2813, + "name": "长顺县", + "zipcode": "550700" + }, { + "id": 2814, + "name": "龙里县", + "zipcode": "551200" + }, { + "id": 2815, + "name": "惠水县", + "zipcode": "550600" + }, { + "id": 2816, + "name": "三都水族自治县", + "zipcode": "558100" + }] + }] +}, { + "id": 26, + "name": "云南", + "child": [{ + "id": 302, + "name": "昆明市", + "child": [{ + "id": 2817, + "name": "五华区", + "zipcode": "650032" + }, { + "id": 2818, + "name": "盘龙区", + "zipcode": "650051" + }, { + "id": 2819, + "name": "官渡区", + "zipcode": "650220" + }, { + "id": 2820, + "name": "西山区", + "zipcode": "650100" + }, { + "id": 2821, + "name": "东川区", + "zipcode": "654100" + }, { + "id": 2822, + "name": "呈贡县", + "zipcode": "650500" + }, { + "id": 2823, + "name": "晋宁县", + "zipcode": "650600" + }, { + "id": 2824, + "name": "富民县", + "zipcode": "650400" + }, { + "id": 2825, + "name": "宜良县", + "zipcode": "652100" + }, { + "id": 2826, + "name": "石林彝族自治县", + "zipcode": "652200" + }, { + "id": 2827, + "name": "嵩明县", + "zipcode": "651700" + }, { + "id": 2828, + "name": "禄劝彝族苗族自治县", + "zipcode": "651500" + }, { + "id": 2829, + "name": "寻甸回族彝族自治县", + "zipcode": "655200" + }, { + "id": 2830, + "name": "安宁市", + "zipcode": "650300" + }] + }, { + "id": 303, + "name": "曲靖市", + "child": [{ + "id": 2831, + "name": "麒麟区", + "zipcode": "655000" + }, { + "id": 2832, + "name": "马龙县", + "zipcode": "655100" + }, { + "id": 2833, + "name": "陆良县", + "zipcode": "655600" + }, { + "id": 2834, + "name": "师宗县", + "zipcode": "655700" + }, { + "id": 2835, + "name": "罗平县", + "zipcode": "655800" + }, { + "id": 2836, + "name": "富源县", + "zipcode": "655500" + }, { + "id": 2837, + "name": "会泽县", + "zipcode": "654200" + }, { + "id": 2838, + "name": "沾益县", + "zipcode": "655331" + }, { + "id": 2839, + "name": "宣威市", + "zipcode": "655400" + }] + }, { + "id": 304, + "name": "玉溪市", + "child": [{ + "id": 2840, + "name": "红塔区", + "zipcode": "653100" + }, { + "id": 2841, + "name": "江川县", + "zipcode": "652600" + }, { + "id": 2842, + "name": "澄江县", + "zipcode": "652500" + }, { + "id": 2843, + "name": "通海县", + "zipcode": "652700" + }, { + "id": 2844, + "name": "华宁县", + "zipcode": "652800" + }, { + "id": 2845, + "name": "易门县", + "zipcode": "651100" + }, { + "id": 2846, + "name": "峨山彝族自治县", + "zipcode": "653200" + }, { + "id": 2847, + "name": "新平彝族傣族自治县", + "zipcode": "653400" + }, { + "id": 2848, + "name": "元江哈尼族彝族傣族自治县", + "zipcode": "653300" + }] + }, { + "id": 305, + "name": "保山市", + "child": [{ + "id": 2849, + "name": "隆阳区", + "zipcode": "678000" + }, { + "id": 2850, + "name": "施甸县", + "zipcode": "678200" + }, { + "id": 2851, + "name": "腾冲县", + "zipcode": "679100" + }, { + "id": 2852, + "name": "龙陵县", + "zipcode": "678300" + }, { + "id": 2853, + "name": "昌宁县", + "zipcode": "678100" + }] + }, { + "id": 306, + "name": "昭通市", + "child": [{ + "id": 2854, + "name": "昭阳区", + "zipcode": "657000" + }, { + "id": 2855, + "name": "鲁甸县", + "zipcode": "657100" + }, { + "id": 2856, + "name": "巧家县", + "zipcode": "654600" + }, { + "id": 2857, + "name": "盐津县", + "zipcode": "657500" + }, { + "id": 2858, + "name": "大关县", + "zipcode": "657400" + }, { + "id": 2859, + "name": "永善县", + "zipcode": "657300" + }, { + "id": 2860, + "name": "绥江县", + "zipcode": "657700" + }, { + "id": 2861, + "name": "镇雄县", + "zipcode": "657200" + }, { + "id": 2862, + "name": "彝良县", + "zipcode": "657600" + }, { + "id": 2863, + "name": "威信县", + "zipcode": "657900" + }, { + "id": 2864, + "name": "水富县", + "zipcode": "657800" + }] + }, { + "id": 307, + "name": "丽江市", + "child": [{ + "id": 2865, + "name": "古城区", + "zipcode": "674100" + }, { + "id": 2866, + "name": "玉龙纳西族自治县", + "zipcode": "674100" + }, { + "id": 2867, + "name": "永胜县", + "zipcode": "674200" + }, { + "id": 2868, + "name": "华坪县", + "zipcode": "674800" + }, { + "id": 2869, + "name": "宁蒗彝族自治县", + "zipcode": "674300" + }] + }, { + "id": 308, + "name": "普洱市", + "child": [{ + "id": 2870, + "name": "思茅区", + "zipcode": "665000" + }, { + "id": 2871, + "name": "宁洱哈尼族彝族自治县", + "zipcode": "665100" + }, { + "id": 2872, + "name": "墨江哈尼族自治县", + "zipcode": "654800" + }, { + "id": 2873, + "name": "景东彝族自治县", + "zipcode": "676200" + }, { + "id": 2874, + "name": "景谷傣族彝族自治县", + "zipcode": "666400" + }, { + "id": 2875, + "name": "镇沅彝族哈尼族拉祜族自治县", + "zipcode": "666500" + }, { + "id": 2876, + "name": "江城哈尼族彝族自治县", + "zipcode": "665900" + }, { + "id": 2877, + "name": "孟连傣族拉祜族佤族自治县", + "zipcode": "665800" + }, { + "id": 2878, + "name": "澜沧拉祜族自治县", + "zipcode": "665600" + }, { + "id": 2879, + "name": "西盟佤族自治县", + "zipcode": "665700" + }] + }, { + "id": 309, + "name": "临沧市", + "child": [{ + "id": 2880, + "name": "临翔区", + "zipcode": "677000" + }, { + "id": 2881, + "name": "凤庆县", + "zipcode": "675900" + }, { + "id": 2882, + "name": "云县", + "zipcode": "675800" + }, { + "id": 2883, + "name": "永德县", + "zipcode": "677600" + }, { + "id": 2884, + "name": "镇康县", + "zipcode": "677704" + }, { + "id": 2885, + "name": "双江拉祜族佤族布朗族傣族自治县", + "zipcode": "677300" + }, { + "id": 2886, + "name": "耿马傣族佤族自治县", + "zipcode": "677500" + }, { + "id": 2887, + "name": "沧源佤族自治县", + "zipcode": "677400" + }] + }, { + "id": 310, + "name": "楚雄彝族自治州", + "child": [{ + "id": 2888, + "name": "楚雄市", + "zipcode": "675000" + }, { + "id": 2889, + "name": "双柏县", + "zipcode": "675100" + }, { + "id": 2890, + "name": "牟定县", + "zipcode": "675500" + }, { + "id": 2891, + "name": "南华县", + "zipcode": "675200" + }, { + "id": 2892, + "name": "姚安县", + "zipcode": "675300" + }, { + "id": 2893, + "name": "大姚县", + "zipcode": "675400" + }, { + "id": 2894, + "name": "永仁县", + "zipcode": "651400" + }, { + "id": 2895, + "name": "元谋县", + "zipcode": "651300" + }, { + "id": 2896, + "name": "武定县", + "zipcode": "651600" + }, { + "id": 2897, + "name": "禄丰县", + "zipcode": "651200" + }] + }, { + "id": 311, + "name": "红河哈尼族彝族自治州", + "child": [{ + "id": 2898, + "name": "个旧市", + "zipcode": "661000" + }, { + "id": 2899, + "name": "开远市", + "zipcode": "661600" + }, { + "id": 2900, + "name": "蒙自县", + "zipcode": "661100" + }, { + "id": 2901, + "name": "屏边苗族自治县", + "zipcode": "661200" + }, { + "id": 2902, + "name": "建水县", + "zipcode": "654300" + }, { + "id": 2903, + "name": "石屏县", + "zipcode": "662200" + }, { + "id": 2904, + "name": "弥勒县", + "zipcode": "652300" + }, { + "id": 2905, + "name": "泸西县", + "zipcode": "652400" + }, { + "id": 2906, + "name": "元阳县", + "zipcode": "662400" + }, { + "id": 2907, + "name": "红河县", + "zipcode": "654400" + }, { + "id": 2908, + "name": "金平苗族瑶族傣族自治县", + "zipcode": "661500" + }, { + "id": 2909, + "name": "绿春县", + "zipcode": "662500" + }, { + "id": 2910, + "name": "河口瑶族自治县", + "zipcode": "661300" + }] + }, { + "id": 312, + "name": "文山壮族苗族自治州", + "child": [{ + "id": 2911, + "name": "文山县", + "zipcode": "663000" + }, { + "id": 2912, + "name": "砚山县", + "zipcode": "663100" + }, { + "id": 2913, + "name": "西畴县", + "zipcode": "663500" + }, { + "id": 2914, + "name": "麻栗坡县", + "zipcode": "663600" + }, { + "id": 2915, + "name": "马关县", + "zipcode": "663700" + }, { + "id": 2916, + "name": "丘北县", + "zipcode": "663200" + }, { + "id": 2917, + "name": "广南县", + "zipcode": "663300" + }, { + "id": 2918, + "name": "富宁县", + "zipcode": "663400" + }] + }, { + "id": 313, + "name": "西双版纳傣族自治州", + "child": [{ + "id": 2919, + "name": "景洪市", + "zipcode": "666100" + }, { + "id": 2920, + "name": "勐海县", + "zipcode": "666200" + }, { + "id": 2921, + "name": "勐腊县", + "zipcode": "666300" + }] + }, { + "id": 314, + "name": "大理白族自治州", + "child": [{ + "id": 2922, + "name": "大理市", + "zipcode": "671000" + }, { + "id": 2923, + "name": "漾濞彝族自治县", + "zipcode": "672500" + }, { + "id": 2924, + "name": "祥云县", + "zipcode": "672100" + }, { + "id": 2925, + "name": "宾川县", + "zipcode": "671600" + }, { + "id": 2926, + "name": "弥渡县", + "zipcode": "675600" + }, { + "id": 2927, + "name": "南涧彝族自治县", + "zipcode": "675700" + }, { + "id": 2928, + "name": "巍山彝族回族自治县", + "zipcode": "672400" + }, { + "id": 2929, + "name": "永平县", + "zipcode": "672600" + }, { + "id": 2930, + "name": "云龙县", + "zipcode": "672700" + }, { + "id": 2931, + "name": "洱源县", + "zipcode": "671200" + }, { + "id": 2932, + "name": "剑川县", + "zipcode": "671300" + }, { + "id": 2933, + "name": "鹤庆县", + "zipcode": "671500" + }] + }, { + "id": 315, + "name": "德宏傣族景颇族自治州", + "child": [{ + "id": 2934, + "name": "瑞丽市", + "zipcode": "678600" + }, { + "id": 2935, + "name": "潞西市", + "zipcode": "678400" + }, { + "id": 2936, + "name": "梁河县", + "zipcode": "679200" + }, { + "id": 2937, + "name": "盈江县", + "zipcode": "679300" + }, { + "id": 2938, + "name": "陇川县", + "zipcode": "678700" + }] + }, { + "id": 316, + "name": "怒江傈僳族自治州", + "child": [{ + "id": 2939, + "name": "泸水县", + "zipcode": "673100" + }, { + "id": 2940, + "name": "福贡县", + "zipcode": "673400" + }, { + "id": 2941, + "name": "贡山独龙族怒族自治县", + "zipcode": "673500" + }, { + "id": 2942, + "name": "兰坪白族普米族自治县", + "zipcode": "671400" + }] + }, { + "id": 317, + "name": "迪庆藏族自治州", + "child": [{ + "id": 2943, + "name": "香格里拉县", + "zipcode": "674400" + }, { + "id": 2944, + "name": "德钦县", + "zipcode": "674500" + }, { + "id": 2945, + "name": "维西傈僳族自治县", + "zipcode": "674600" + }] + }] +}, { + "id": 27, + "name": "西藏", + "child": [{ + "id": 318, + "name": "拉萨市", + "child": [{ + "id": 2946, + "name": "城关区", + "zipcode": "850000" + }, { + "id": 2947, + "name": "林周县", + "zipcode": "852000" + }, { + "id": 2948, + "name": "当雄县", + "zipcode": "851500" + }, { + "id": 2949, + "name": "尼木县", + "zipcode": "851300" + }, { + "id": 2950, + "name": "曲水县", + "zipcode": "850600" + }, { + "id": 2951, + "name": "堆龙德庆县", + "zipcode": "851400" + }, { + "id": 2952, + "name": "达孜县", + "zipcode": "850100" + }, { + "id": 2953, + "name": "墨竹工卡县", + "zipcode": "850200" + }] + }, { + "id": 319, + "name": "昌都地区", + "child": [{ + "id": 2954, + "name": "昌都县", + "zipcode": "854000" + }, { + "id": 2955, + "name": "江达县", + "zipcode": "854100" + }, { + "id": 2956, + "name": "贡觉县", + "zipcode": "854200" + }, { + "id": 2957, + "name": "类乌齐县", + "zipcode": "855600" + }, { + "id": 2958, + "name": "丁青县", + "zipcode": "855700" + }, { + "id": 2959, + "name": "察雅县", + "zipcode": "854300" + }, { + "id": 2960, + "name": "八宿县", + "zipcode": "854600" + }, { + "id": 2961, + "name": "左贡县", + "zipcode": "854400" + }, { + "id": 2962, + "name": "芒康县", + "zipcode": "854500" + }, { + "id": 2963, + "name": "洛隆县", + "zipcode": "855400" + }, { + "id": 2964, + "name": "边坝县", + "zipcode": "855500" + }] + }, { + "id": 320, + "name": "山南地区", + "child": [{ + "id": 2965, + "name": "乃东县", + "zipcode": "856100" + }, { + "id": 2966, + "name": "扎囊县", + "zipcode": "850800" + }, { + "id": 2967, + "name": "贡嘎县", + "zipcode": "850700" + }, { + "id": 2968, + "name": "桑日县", + "zipcode": "856200" + }, { + "id": 2969, + "name": "琼结县", + "zipcode": "856800" + }, { + "id": 2970, + "name": "曲松县", + "zipcode": "856300" + }, { + "id": 2971, + "name": "措美县", + "zipcode": "856900" + }, { + "id": 2972, + "name": "洛扎县", + "zipcode": "851200" + }, { + "id": 2973, + "name": "加查县", + "zipcode": "856400" + }, { + "id": 2974, + "name": "隆子县", + "zipcode": "856600" + }, { + "id": 2975, + "name": "错那县", + "zipcode": "856700" + }, { + "id": 2976, + "name": "浪卡子县", + "zipcode": "851000" + }] + }, { + "id": 321, + "name": "日喀则地区", + "child": [{ + "id": 2977, + "name": "日喀则市", + "zipcode": "857000" + }, { + "id": 2978, + "name": "南木林县", + "zipcode": "857100" + }, { + "id": 2979, + "name": "江孜县", + "zipcode": "857400" + }, { + "id": 2980, + "name": "定日县", + "zipcode": "858200" + }, { + "id": 2981, + "name": "萨迦县", + "zipcode": "857800" + }, { + "id": 2982, + "name": "拉孜县", + "zipcode": "858100" + }, { + "id": 2983, + "name": "昂仁县", + "zipcode": "858500" + }, { + "id": 2984, + "name": "谢通门县", + "zipcode": "858900" + }, { + "id": 2985, + "name": "白朗县", + "zipcode": "857300" + }, { + "id": 2986, + "name": "仁布县", + "zipcode": "857200" + }, { + "id": 2987, + "name": "康马县", + "zipcode": "857500" + }, { + "id": 2988, + "name": "定结县", + "zipcode": "857900" + }, { + "id": 2989, + "name": "仲巴县", + "zipcode": "858800" + }, { + "id": 2990, + "name": "亚东县", + "zipcode": "857600" + }, { + "id": 2991, + "name": "吉隆县", + "zipcode": "858700" + }, { + "id": 2992, + "name": "聂拉木县", + "zipcode": "858300" + }, { + "id": 2993, + "name": "萨嘎县", + "zipcode": "857800" + }, { + "id": 2994, + "name": "岗巴县", + "zipcode": "857700" + }] + }, { + "id": 322, + "name": "那曲地区", + "child": [{ + "id": 2995, + "name": "那曲县", + "zipcode": "852000" + }, { + "id": 2996, + "name": "嘉黎县", + "zipcode": "852400" + }, { + "id": 2997, + "name": "比如县", + "zipcode": "852300" + }, { + "id": 2998, + "name": "聂荣县", + "zipcode": "853500" + }, { + "id": 2999, + "name": "安多县", + "zipcode": "852600" + }, { + "id": 3000, + "name": "申扎县", + "zipcode": "853100" + }, { + "id": 3001, + "name": "索县", + "zipcode": "852200" + }, { + "id": 3002, + "name": "班戈县", + "zipcode": "852500" + }, { + "id": 3003, + "name": "巴青县", + "zipcode": "852100" + }, { + "id": 3004, + "name": "尼玛县", + "zipcode": "853200" + }] + }, { + "id": 323, + "name": "阿里地区", + "child": [{ + "id": 3005, + "name": "普兰县", + "zipcode": "859500" + }, { + "id": 3006, + "name": "札达县", + "zipcode": "859600" + }, { + "id": 3007, + "name": "噶尔县", + "zipcode": "859400" + }, { + "id": 3008, + "name": "日土县", + "zipcode": "859700" + }, { + "id": 3009, + "name": "革吉县", + "zipcode": "859100" + }, { + "id": 3010, + "name": "改则县", + "zipcode": "859200" + }, { + "id": 3011, + "name": "措勤县", + "zipcode": "859300" + }] + }, { + "id": 324, + "name": "林芝地区", + "child": [{ + "id": 3012, + "name": "林芝县", + "zipcode": "850400" + }, { + "id": 3013, + "name": "工布江达县", + "zipcode": "850300" + }, { + "id": 3014, + "name": "米林县", + "zipcode": "860500" + }, { + "id": 3015, + "name": "墨脱县", + "zipcode": "855300" + }, { + "id": 3016, + "name": "波密县", + "zipcode": "855200" + }, { + "id": 3017, + "name": "察隅县", + "zipcode": "855100" + }, { + "id": 3018, + "name": "朗县", + "zipcode": "856500" + }] + }] +}, { + "id": 28, + "name": "陕西", + "child": [{ + "id": 325, + "name": "西安市", + "child": [{ + "id": 3019, + "name": "新城区", + "zipcode": "710004" + }, { + "id": 3020, + "name": "碑林区", + "zipcode": "710001" + }, { + "id": 3021, + "name": "莲湖区", + "zipcode": "710003" + }, { + "id": 3022, + "name": "灞桥区", + "zipcode": "710038" + }, { + "id": 3023, + "name": "未央区", + "zipcode": "710014" + }, { + "id": 3024, + "name": "雁塔区", + "zipcode": "710061" + }, { + "id": 3025, + "name": "阎良区", + "zipcode": "710087" + }, { + "id": 3026, + "name": "临潼区", + "zipcode": "710600" + }, { + "id": 3027, + "name": "长安区", + "zipcode": "710100" + }, { + "id": 3028, + "name": "蓝田县", + "zipcode": "710500" + }, { + "id": 3029, + "name": "周至县", + "zipcode": "710400" + }, { + "id": 3030, + "name": "户县", + "zipcode": "710300" + }, { + "id": 3031, + "name": "高陵县", + "zipcode": "710200" + }, { + "id": 3032, + "name": "高新区", + "zipcode": "710075" + }] + }, { + "id": 326, + "name": "铜川市", + "child": [{ + "id": 3033, + "name": "王益区", + "zipcode": "727000" + }, { + "id": 3034, + "name": "印台区", + "zipcode": "727007" + }, { + "id": 3035, + "name": "耀州区", + "zipcode": "727100" + }, { + "id": 3036, + "name": "宜君县", + "zipcode": "727200" + }, { + "id": 3037, + "name": "新区", + "zipcode": "727100" + }] + }, { + "id": 327, + "name": "宝鸡市", + "child": [{ + "id": 3038, + "name": "渭滨区", + "zipcode": "721000" + }, { + "id": 3039, + "name": "金台区", + "zipcode": "721000" + }, { + "id": 3040, + "name": "陈仓区", + "zipcode": "721300" + }, { + "id": 3041, + "name": "凤翔县", + "zipcode": "721400" + }, { + "id": 3042, + "name": "岐山县", + "zipcode": "722400" + }, { + "id": 3043, + "name": "扶风县", + "zipcode": "722200" + }, { + "id": 3044, + "name": "眉县", + "zipcode": "722300" + }, { + "id": 3045, + "name": "陇县", + "zipcode": "721200" + }, { + "id": 3046, + "name": "千阳县", + "zipcode": "721100" + }, { + "id": 3047, + "name": "麟游县", + "zipcode": "721500" + }, { + "id": 3048, + "name": "凤县", + "zipcode": "721700" + }, { + "id": 3049, + "name": "太白县", + "zipcode": "721600" + }] + }, { + "id": 328, + "name": "咸阳市", + "child": [{ + "id": 3050, + "name": "秦都区", + "zipcode": "712000" + }, { + "id": 3051, + "name": "渭城区", + "zipcode": "712000" + }, { + "id": 3052, + "name": "杨陵区", + "zipcode": "712100" + }, { + "id": 3053, + "name": "三原县", + "zipcode": "713800" + }, { + "id": 3054, + "name": "泾阳县", + "zipcode": "713700" + }, { + "id": 3055, + "name": "兴平市", + "zipcode": "713100" + }, { + "id": 3056, + "name": "乾县", + "zipcode": "713300" + }, { + "id": 3057, + "name": "礼泉县", + "zipcode": "713200" + }, { + "id": 3058, + "name": "永寿县", + "zipcode": "713400" + }, { + "id": 3059, + "name": "彬县", + "zipcode": "713500" + }, { + "id": 3060, + "name": "长武县", + "zipcode": "713600" + }, { + "id": 3061, + "name": "旬邑县", + "zipcode": "711300" + }, { + "id": 3062, + "name": "淳化县", + "zipcode": "711200" + }, { + "id": 3063, + "name": "武功县", + "zipcode": "712200" + }] + }, { + "id": 329, + "name": "渭南市", + "child": [{ + "id": 3064, + "name": "临渭区", + "zipcode": "714000" + }, { + "id": 3065, + "name": "华县", + "zipcode": "714100" + }, { + "id": 3066, + "name": "潼关县", + "zipcode": "714300" + }, { + "id": 3067, + "name": "大荔县", + "zipcode": "715100" + }, { + "id": 3068, + "name": "合阳县", + "zipcode": "715300" + }, { + "id": 3069, + "name": "澄城县", + "zipcode": "715200" + }, { + "id": 3070, + "name": "蒲城县", + "zipcode": "715500" + }, { + "id": 3071, + "name": "白水县", + "zipcode": "715600" + }, { + "id": 3072, + "name": "富平县", + "zipcode": "711700" + }, { + "id": 3073, + "name": "韩城市", + "zipcode": "715400" + }, { + "id": 3074, + "name": "华阴市", + "zipcode": "714200" + }] + }, { + "id": 330, + "name": "延安市", + "child": [{ + "id": 3075, + "name": "宝塔区", + "zipcode": "716000" + }, { + "id": 3076, + "name": "延长县", + "zipcode": "717100" + }, { + "id": 3077, + "name": "延川县", + "zipcode": "717200" + }, { + "id": 3078, + "name": "子长县", + "zipcode": "717300" + }, { + "id": 3079, + "name": "安塞县", + "zipcode": "717400" + }, { + "id": 3080, + "name": "志丹县", + "zipcode": "717500" + }, { + "id": 3081, + "name": "吴旗县", + "zipcode": "717600" + }, { + "id": 3082, + "name": "甘泉县", + "zipcode": "716100" + }, { + "id": 3083, + "name": "富县", + "zipcode": "727500" + }, { + "id": 3084, + "name": "洛川县", + "zipcode": "727400" + }, { + "id": 3085, + "name": "宜川县", + "zipcode": "716200" + }, { + "id": 3086, + "name": "黄龙县", + "zipcode": "715700" + }, { + "id": 3087, + "name": "黄陵县", + "zipcode": "727300" + }] + }, { + "id": 331, + "name": "汉中市", + "child": [{ + "id": 3088, + "name": "汉台区", + "zipcode": "723000" + }, { + "id": 3089, + "name": "南郑县", + "zipcode": "723100" + }, { + "id": 3090, + "name": "城固县", + "zipcode": "723200" + }, { + "id": 3091, + "name": "洋县", + "zipcode": "723300" + }, { + "id": 3092, + "name": "西乡县", + "zipcode": "723500" + }, { + "id": 3093, + "name": "勉县", + "zipcode": "724200" + }, { + "id": 3094, + "name": "宁强县", + "zipcode": "724400" + }, { + "id": 3095, + "name": "略阳县", + "zipcode": "724300" + }, { + "id": 3096, + "name": "镇巴县", + "zipcode": "723600" + }, { + "id": 3097, + "name": "留坝县", + "zipcode": "724100" + }, { + "id": 3098, + "name": "佛坪县", + "zipcode": "723400" + }, { + "id": 3099, + "name": "经济开发区", + "zipcode": "723000" + }] + }, { + "id": 332, + "name": "榆林市", + "child": [{ + "id": 3100, + "name": "榆阳区", + "zipcode": "719000" + }, { + "id": 3101, + "name": "神木县", + "zipcode": "719300" + }, { + "id": 3102, + "name": "府谷县", + "zipcode": "719400" + }, { + "id": 3103, + "name": "横山县", + "zipcode": "719100" + }, { + "id": 3104, + "name": "靖边县", + "zipcode": "718500" + }, { + "id": 3105, + "name": "定边县", + "zipcode": "718600" + }, { + "id": 3106, + "name": "绥德县", + "zipcode": "718000" + }, { + "id": 3107, + "name": "米脂县", + "zipcode": "718100" + }, { + "id": 3108, + "name": "佳县", + "zipcode": "719200" + }, { + "id": 3109, + "name": "吴堡县", + "zipcode": "718200" + }, { + "id": 3110, + "name": "清涧县", + "zipcode": "718300" + }, { + "id": 3111, + "name": "子洲县", + "zipcode": "718400" + }] + }, { + "id": 333, + "name": "安康市", + "child": [{ + "id": 3112, + "name": "汉滨区", + "zipcode": "725000" + }, { + "id": 3113, + "name": "汉阴县", + "zipcode": "725100" + }, { + "id": 3114, + "name": "石泉县", + "zipcode": "725200" + }, { + "id": 3115, + "name": "宁陕县", + "zipcode": "711600" + }, { + "id": 3116, + "name": "紫阳县", + "zipcode": "725300" + }, { + "id": 3117, + "name": "岚皋县", + "zipcode": "725400" + }, { + "id": 3118, + "name": "平利县", + "zipcode": "725500" + }, { + "id": 3119, + "name": "镇坪县", + "zipcode": "725600" + }, { + "id": 3120, + "name": "旬阳县", + "zipcode": "725700" + }, { + "id": 3121, + "name": "白河县", + "zipcode": "725800" + }] + }, { + "id": 334, + "name": "商洛市", + "child": [{ + "id": 3122, + "name": "商州区", + "zipcode": "726000" + }, { + "id": 3123, + "name": "洛南县", + "zipcode": "726100" + }, { + "id": 3124, + "name": "丹凤县", + "zipcode": "726200" + }, { + "id": 3125, + "name": "商南县", + "zipcode": "726300" + }, { + "id": 3126, + "name": "山阳县", + "zipcode": "726400" + }, { + "id": 3127, + "name": "镇安县", + "zipcode": "711500" + }, { + "id": 3128, + "name": "柞水县", + "zipcode": "674100" + }] + }] +}, { + "id": 29, + "name": "甘肃", + "child": [{ + "id": 335, + "name": "兰州市", + "child": [{ + "id": 3129, + "name": "城关区", + "zipcode": "674100" + }, { + "id": 3130, + "name": "七里河区", + "zipcode": "674100" + }, { + "id": 3131, + "name": "西固区", + "zipcode": "674100" + }, { + "id": 3132, + "name": "安宁区", + "zipcode": "674100" + }, { + "id": 3133, + "name": "红古区", + "zipcode": "678000" + }, { + "id": 3134, + "name": "永登县", + "zipcode": "678000" + }, { + "id": 3135, + "name": "皋兰县", + "zipcode": "678000" + }, { + "id": 3136, + "name": "榆中县", + "zipcode": "678000" + }] + }, { + "id": 336, + "name": "嘉峪关市", + "child": [{ + "id": 3137, + "name": "嘉峪关市", + "zipcode": "678000" + }] + }, { + "id": 337, + "name": "金昌市", + "child": [{ + "id": 3138, + "name": "金川区", + "zipcode": "737103" + }, { + "id": 3139, + "name": "永昌县", + "zipcode": "737200" + }] + }, { + "id": 338, + "name": "白银市", + "child": [{ + "id": 3140, + "name": "白银区", + "zipcode": "730900" + }, { + "id": 3141, + "name": "平川区", + "zipcode": "730913" + }, { + "id": 3142, + "name": "靖远县", + "zipcode": "730600" + }, { + "id": 3143, + "name": "会宁县", + "zipcode": "730700" + }, { + "id": 3144, + "name": "景泰县", + "zipcode": "730400" + }] + }, { + "id": 339, + "name": "天水市", + "child": [{ + "id": 3145, + "name": "秦州区", + "zipcode": "741000" + }, { + "id": 3146, + "name": "麦积区", + "zipcode": "741020" + }, { + "id": 3147, + "name": "清水县", + "zipcode": "741400" + }, { + "id": 3148, + "name": "秦安县", + "zipcode": "671000" + }, { + "id": 3149, + "name": "甘谷县", + "zipcode": "671000" + }, { + "id": 3150, + "name": "武山县", + "zipcode": "671000" + }, { + "id": 3151, + "name": "张家川回族自治县", + "zipcode": "671000" + }] + }, { + "id": 340, + "name": "武威市", + "child": [{ + "id": 3152, + "name": "凉州区", + "zipcode": "671000" + }, { + "id": 3153, + "name": "民勤县", + "zipcode": "671000" + }, { + "id": 3154, + "name": "古浪县", + "zipcode": "671000" + }, { + "id": 3155, + "name": "天祝藏族自治县", + "zipcode": "671000" + }] + }, { + "id": 341, + "name": "张掖市", + "child": [{ + "id": 3156, + "name": "甘州区", + "zipcode": "671000" + }, { + "id": 3157, + "name": "肃南裕固族自治县", + "zipcode": "671000" + }, { + "id": 3158, + "name": "民乐县", + "zipcode": "671000" + }, { + "id": 3159, + "name": "临泽县", + "zipcode": "671000" + }, { + "id": 3160, + "name": "高台县", + "zipcode": "734300" + }, { + "id": 3161, + "name": "山丹县", + "zipcode": "734100" + }] + }, { + "id": 342, + "name": "平凉市", + "child": [{ + "id": 3162, + "name": "崆峒区", + "zipcode": "678400" + }, { + "id": 3163, + "name": "泾川县", + "zipcode": "744300" + }, { + "id": 3164, + "name": "灵台县", + "zipcode": "744400" + }, { + "id": 3165, + "name": "崇信县", + "zipcode": "744200" + }, { + "id": 3166, + "name": "华亭县", + "zipcode": "744100" + }, { + "id": 3167, + "name": "庄浪县", + "zipcode": "744600" + }, { + "id": 3168, + "name": "静宁县", + "zipcode": "743400" + }] + }, { + "id": 343, + "name": "酒泉市", + "child": [{ + "id": 3169, + "name": "肃州区", + "zipcode": "735000" + }, { + "id": 3170, + "name": "金塔县", + "zipcode": "735300" + }, { + "id": 3171, + "name": "安西县", + "zipcode": "736100" + }, { + "id": 3172, + "name": "肃北蒙古族自治县", + "zipcode": "736300" + }, { + "id": 3173, + "name": "阿克塞哈萨克族自治县", + "zipcode": "736400" + }, { + "id": 3174, + "name": "玉门市", + "zipcode": "735200" + }, { + "id": 3175, + "name": "敦煌市", + "zipcode": "736200" + }] + }, { + "id": 344, + "name": "庆阳市", + "child": [{ + "id": 3176, + "name": "西峰区", + "zipcode": "745000" + }, { + "id": 3177, + "name": "庆城县", + "zipcode": "745100" + }, { + "id": 3178, + "name": "环县", + "zipcode": "745700" + }, { + "id": 3179, + "name": "华池县", + "zipcode": "745600" + }, { + "id": 3180, + "name": "合水县", + "zipcode": "745400" + }, { + "id": 3181, + "name": "正宁县", + "zipcode": "677000" + }, { + "id": 3182, + "name": "宁县", + "zipcode": "677000" + }, { + "id": 3183, + "name": "镇原县", + "zipcode": "677000" + }] + }, { + "id": 345, + "name": "定西市", + "child": [{ + "id": 3184, + "name": "安定区", + "zipcode": "677000" + }, { + "id": 3185, + "name": "通渭县", + "zipcode": "677000" + }, { + "id": 3186, + "name": "陇西县", + "zipcode": "677000" + }, { + "id": 3187, + "name": "渭源县", + "zipcode": "677000" + }, { + "id": 3188, + "name": "临洮县", + "zipcode": "677000" + }, { + "id": 3189, + "name": "漳县", + "zipcode": "748300" + }, { + "id": 3190, + "name": "岷县", + "zipcode": "748400" + }] + }, { + "id": 346, + "name": "陇南市", + "child": [{ + "id": 3191, + "name": "武都区", + "zipcode": "746000" + }, { + "id": 3192, + "name": "成县", + "zipcode": "742500" + }, { + "id": 3193, + "name": "文县", + "zipcode": "746400" + }, { + "id": 3194, + "name": "宕昌县", + "zipcode": "748500" + }, { + "id": 3195, + "name": "康县", + "zipcode": "746500" + }, { + "id": 3196, + "name": "西和县", + "zipcode": "742100" + }, { + "id": 3197, + "name": "礼县", + "zipcode": "742200" + }, { + "id": 3198, + "name": "徽县", + "zipcode": "742300" + }, { + "id": 3199, + "name": "两当县", + "zipcode": "742400" + }] + }, { + "id": 347, + "name": "临夏回族自治州", + "child": [{ + "id": 3200, + "name": "临夏市", + "zipcode": "731100" + }, { + "id": 3201, + "name": "临夏县", + "zipcode": "731800" + }, { + "id": 3202, + "name": "康乐县", + "zipcode": "731500" + }, { + "id": 3203, + "name": "永靖县", + "zipcode": "731600" + }, { + "id": 3204, + "name": "广河县", + "zipcode": "731300" + }, { + "id": 3205, + "name": "和政县", + "zipcode": "731200" + }, { + "id": 3206, + "name": "东乡族自治县", + "zipcode": "731400" + }, { + "id": 3207, + "name": "积石山保安族东乡族撒拉族自治县", + "zipcode": "731700" + }] + }, { + "id": 348, + "name": "甘南藏族自治州", + "child": [{ + "id": 3208, + "name": "合作市", + "zipcode": "747000" + }, { + "id": 3209, + "name": "临潭县", + "zipcode": "747500" + }, { + "id": 3210, + "name": "卓尼县", + "zipcode": "747600" + }, { + "id": 3211, + "name": "舟曲县", + "zipcode": "746300" + }, { + "id": 3212, + "name": "迭部县", + "zipcode": "747400" + }, { + "id": 3213, + "name": "玛曲县", + "zipcode": "747300" + }, { + "id": 3214, + "name": "碌曲县", + "zipcode": "747200" + }, { + "id": 3215, + "name": "夏河县", + "zipcode": "747100" + }] + }] +}, { + "id": 30, + "name": "青海", + "child": [{ + "id": 349, + "name": "西宁市", + "child": [{ + "id": 3216, + "name": "城东区", + "zipcode": "810000" + }, { + "id": 3217, + "name": "城中区", + "zipcode": "810000" + }, { + "id": 3218, + "name": "城西区", + "zipcode": "810000" + }, { + "id": 3219, + "name": "城北区", + "zipcode": "810000" + }, { + "id": 3220, + "name": "大通回族土族自治县", + "zipcode": "810100" + }, { + "id": 3221, + "name": "湟中县", + "zipcode": "811600" + }, { + "id": 3222, + "name": "湟源县", + "zipcode": "812100" + }] + }, { + "id": 350, + "name": "海东地区", + "child": [{ + "id": 3223, + "name": "平安县", + "zipcode": "810600" + }, { + "id": 3224, + "name": "民和回族土族自治县", + "zipcode": "810800" + }, { + "id": 3225, + "name": "乐都县", + "zipcode": "810700" + }, { + "id": 3226, + "name": "互助土族自治县", + "zipcode": "810500" + }, { + "id": 3227, + "name": "化隆回族自治县", + "zipcode": "810900" + }, { + "id": 3228, + "name": "循化撒拉族自治县", + "zipcode": "811100" + }] + }, { + "id": 351, + "name": "海北藏族自治州", + "child": [{ + "id": 3229, + "name": "门源回族自治县", + "zipcode": "810300" + }, { + "id": 3230, + "name": "祁连县", + "zipcode": "810400" + }, { + "id": 3231, + "name": "海晏县", + "zipcode": "812200" + }, { + "id": 3232, + "name": "刚察县", + "zipcode": "812300" + }] + }, { + "id": 352, + "name": "黄南藏族自治州", + "child": [{ + "id": 3233, + "name": "同仁县", + "zipcode": "811300" + }, { + "id": 3234, + "name": "尖扎县", + "zipcode": "811200" + }, { + "id": 3235, + "name": "泽库县", + "zipcode": "811400" + }, { + "id": 3236, + "name": "河南蒙古族自治县", + "zipcode": "811500" + }] + }, { + "id": 353, + "name": "海南藏族自治州", + "child": [{ + "id": 3237, + "name": "共和县", + "zipcode": "813000" + }, { + "id": 3238, + "name": "同德县", + "zipcode": "813200" + }, { + "id": 3239, + "name": "贵德县", + "zipcode": "811700" + }, { + "id": 3240, + "name": "兴海县", + "zipcode": "813300" + }, { + "id": 3241, + "name": "贵南县", + "zipcode": "813100" + }] + }, { + "id": 354, + "name": "果洛藏族自治州", + "child": [{ + "id": 3242, + "name": "玛沁县", + "zipcode": "814000" + }, { + "id": 3243, + "name": "班玛县", + "zipcode": "814300" + }, { + "id": 3244, + "name": "甘德县", + "zipcode": "814100" + }, { + "id": 3245, + "name": "达日县", + "zipcode": "814200" + }, { + "id": 3246, + "name": "久治县", + "zipcode": "624700" + }, { + "id": 3247, + "name": "玛多县", + "zipcode": "813500" + }] + }, { + "id": 355, + "name": "玉树藏族自治州", + "child": [{ + "id": 3248, + "name": "玉树县", + "zipcode": "815000" + }, { + "id": 3249, + "name": "杂多县", + "zipcode": "815300" + }, { + "id": 3250, + "name": "称多县", + "zipcode": "815100" + }, { + "id": 3251, + "name": "治多县", + "zipcode": "815400" + }, { + "id": 3252, + "name": "囊谦县", + "zipcode": "815200" + }, { + "id": 3253, + "name": "曲麻莱县", + "zipcode": "815500" + }] + }, { + "id": 356, + "name": "海西蒙古族藏族自治州", + "child": [{ + "id": 3254, + "name": "格尔木市", + "zipcode": "816000" + }, { + "id": 3255, + "name": "德令哈市", + "zipcode": "817000" + }, { + "id": 3256, + "name": "乌兰县", + "zipcode": "817100" + }, { + "id": 3257, + "name": "都兰县", + "zipcode": "816100" + }, { + "id": 3258, + "name": "天峻县", + "zipcode": "817200" + }, { + "id": 3259, + "name": "大柴旦行委", + "zipcode": "817300" + }] + }] +}, { + "id": 31, + "name": "宁夏", + "child": [{ + "id": 357, + "name": "银川市", + "child": [{ + "id": 3260, + "name": "兴庆区", + "zipcode": "750001" + }, { + "id": 3261, + "name": "西夏区", + "zipcode": "750021" + }, { + "id": 3262, + "name": "金凤区", + "zipcode": "750011" + }, { + "id": 3263, + "name": "永宁县", + "zipcode": "750100" + }, { + "id": 3264, + "name": "贺兰县", + "zipcode": "750200" + }, { + "id": 3265, + "name": "灵武市", + "zipcode": "750004" + }] + }, { + "id": 358, + "name": "石嘴山市", + "child": [{ + "id": 3266, + "name": "大武口区", + "zipcode": "753000" + }, { + "id": 3267, + "name": "惠农区", + "zipcode": "753600" + }, { + "id": 3268, + "name": "平罗县", + "zipcode": "753400" + }] + }, { + "id": 359, + "name": "吴忠市", + "child": [{ + "id": 3269, + "name": "利通区", + "zipcode": "751100" + }, { + "id": 3270, + "name": "盐池县", + "zipcode": "751500" + }, { + "id": 3271, + "name": "同心县", + "zipcode": "751300" + }, { + "id": 3272, + "name": "青铜峡市", + "zipcode": "751600" + }, { + "id": 3381, + "name": "红寺堡区", + "zipcode": "751900" + }] + }, { + "id": 360, + "name": "固原市", + "child": [{ + "id": 3273, + "name": "原州区", + "zipcode": "756000" + }, { + "id": 3274, + "name": "西吉县", + "zipcode": "756200" + }, { + "id": 3275, + "name": "隆德县", + "zipcode": "756300" + }, { + "id": 3276, + "name": "泾源县", + "zipcode": "756400" + }, { + "id": 3277, + "name": "彭阳县", + "zipcode": "756500" + }] + }, { + "id": 361, + "name": "中卫市", + "child": [{ + "id": 3278, + "name": "沙坡头区", + "zipcode": "755000" + }, { + "id": 3279, + "name": "中宁县", + "zipcode": "755100" + }, { + "id": 3280, + "name": "海原县", + "zipcode": "755200" + }] + }] +}, { + "id": 32, + "name": "新疆", + "child": [{ + "id": 362, + "name": "乌鲁木齐市", + "child": [{ + "id": 3281, + "name": "天山区", + "zipcode": "830000" + }, { + "id": 3282, + "name": "沙依巴克区", + "zipcode": "830002" + }, { + "id": 3283, + "name": "新市区", + "zipcode": "830011" + }, { + "id": 3284, + "name": "水磨沟区", + "zipcode": "830017" + }, { + "id": 3285, + "name": "头屯河区", + "zipcode": "830022" + }, { + "id": 3286, + "name": "达坂城区", + "zipcode": "830039" + }, { + "id": 3287, + "name": "米东区", + "zipcode": "830019" + }, { + "id": 3288, + "name": "乌鲁木齐县", + "zipcode": "830063" + }] + }, { + "id": 363, + "name": "克拉玛依市", + "child": [{ + "id": 3289, + "name": "独山子区", + "zipcode": "834021" + }, { + "id": 3290, + "name": "克拉玛依区", + "zipcode": "834000" + }, { + "id": 3291, + "name": "白碱滩区", + "zipcode": "834008" + }, { + "id": 3292, + "name": "乌尔禾区", + "zipcode": "834012" + }] + }, { + "id": 364, + "name": "吐鲁番地区", + "child": [{ + "id": 3293, + "name": "吐鲁番市", + "zipcode": "838000" + }, { + "id": 3294, + "name": "鄯善县", + "zipcode": "838200" + }, { + "id": 3295, + "name": "托克逊县", + "zipcode": "838100" + }] + }, { + "id": 365, + "name": "哈密地区", + "child": [{ + "id": 3296, + "name": "哈密市", + "zipcode": "839000" + }, { + "id": 3297, + "name": "巴里坤哈萨克自治县", + "zipcode": "839200" + }, { + "id": 3298, + "name": "伊吾县", + "zipcode": "839300" + }] + }, { + "id": 366, + "name": "昌吉回族自治州", + "child": [{ + "id": 3299, + "name": "昌吉市", + "zipcode": "831100" + }, { + "id": 3300, + "name": "阜康市", + "zipcode": "831500" + }, { + "id": 3301, + "name": "米泉市", + "zipcode": "831400" + }, { + "id": 3302, + "name": "呼图壁县", + "zipcode": "831200" + }, { + "id": 3303, + "name": "玛纳斯县", + "zipcode": "832200" + }, { + "id": 3304, + "name": "奇台县", + "zipcode": "831800" + }, { + "id": 3305, + "name": "吉木萨尔县", + "zipcode": "831700" + }, { + "id": 3306, + "name": "木垒哈萨克自治县", + "zipcode": "831900" + }] + }, { + "id": 367, + "name": "博尔塔拉蒙古自治州", + "child": [{ + "id": 3307, + "name": "博乐市", + "zipcode": "833400" + }, { + "id": 3308, + "name": "精河县", + "zipcode": "833300" + }, { + "id": 3309, + "name": "温泉县", + "zipcode": "833500" + }] + }, { + "id": 368, + "name": "巴音郭楞蒙古自治州", + "child": [{ + "id": 3310, + "name": "库尔勒市", + "zipcode": "841000" + }, { + "id": 3311, + "name": "轮台县", + "zipcode": "841600" + }, { + "id": 3312, + "name": "尉犁县", + "zipcode": "841500" + }, { + "id": 3313, + "name": "若羌县", + "zipcode": "841800" + }, { + "id": 3314, + "name": "且末县", + "zipcode": "841900" + }, { + "id": 3315, + "name": "焉耆回族自治县", + "zipcode": "841100" + }, { + "id": 3316, + "name": "和静县", + "zipcode": "841300" + }, { + "id": 3317, + "name": "和硕县", + "zipcode": "841200" + }, { + "id": 3318, + "name": "博湖县", + "zipcode": "841400" + }] + }, { + "id": 369, + "name": "阿克苏地区", + "child": [{ + "id": 3319, + "name": "阿克苏市", + "zipcode": "843000" + }, { + "id": 3320, + "name": "温宿县", + "zipcode": "843100" + }, { + "id": 3321, + "name": "库车县", + "zipcode": "842000" + }, { + "id": 3322, + "name": "沙雅县", + "zipcode": "842200" + }, { + "id": 3323, + "name": "新和县", + "zipcode": "842100" + }, { + "id": 3324, + "name": "拜城县", + "zipcode": "842300" + }, { + "id": 3325, + "name": "乌什县", + "zipcode": "843400" + }, { + "id": 3326, + "name": "阿瓦提县", + "zipcode": "843200" + }, { + "id": 3327, + "name": "柯坪县", + "zipcode": "843600" + }] + }, { + "id": 370, + "name": "克孜勒苏柯尔克孜自治州", + "child": [{ + "id": 3328, + "name": "阿图什市", + "zipcode": "845350" + }, { + "id": 3329, + "name": "阿克陶县", + "zipcode": "845550" + }, { + "id": 3330, + "name": "阿合奇县", + "zipcode": "843500" + }, { + "id": 3331, + "name": "乌恰县", + "zipcode": "845450" + }] + }, { + "id": 371, + "name": "喀什地区", + "child": [{ + "id": 3332, + "name": "喀什市", + "zipcode": "844000" + }, { + "id": 3333, + "name": "疏附县", + "zipcode": "844100" + }, { + "id": 3334, + "name": "疏勒县", + "zipcode": "844200" + }, { + "id": 3335, + "name": "英吉沙县", + "zipcode": "844500" + }, { + "id": 3336, + "name": "泽普县", + "zipcode": "844800" + }, { + "id": 3337, + "name": "莎车县", + "zipcode": "844700" + }, { + "id": 3338, + "name": "叶城县", + "zipcode": "844900" + }, { + "id": 3339, + "name": "麦盖提县", + "zipcode": "844600" + }, { + "id": 3340, + "name": "岳普湖县", + "zipcode": "844400" + }, { + "id": 3341, + "name": "伽师县", + "zipcode": "844300" + }, { + "id": 3342, + "name": "巴楚县", + "zipcode": "843800" + }, { + "id": 3343, + "name": "塔什库尔干塔吉克自治县", + "zipcode": "845250" + }] + }, { + "id": 372, + "name": "和田地区", + "child": [{ + "id": 3344, + "name": "和田市", + "zipcode": "848000" + }, { + "id": 3345, + "name": "和田县", + "zipcode": "848000" + }, { + "id": 3346, + "name": "墨玉县", + "zipcode": "848100" + }, { + "id": 3347, + "name": "皮山县", + "zipcode": "845150" + }, { + "id": 3348, + "name": "洛浦县", + "zipcode": "848200" + }, { + "id": 3349, + "name": "策勒县", + "zipcode": "848300" + }, { + "id": 3350, + "name": "于田县", + "zipcode": "848400" + }, { + "id": 3351, + "name": "民丰县", + "zipcode": "848500" + }] + }, { + "id": 373, + "name": "伊犁哈萨克自治州", + "child": [{ + "id": 3352, + "name": "伊宁市", + "zipcode": "835000" + }, { + "id": 3353, + "name": "奎屯市", + "zipcode": "833200" + }, { + "id": 3354, + "name": "伊宁县", + "zipcode": "835100" + }, { + "id": 3355, + "name": "察布查尔锡伯自治县", + "zipcode": "835300" + }, { + "id": 3356, + "name": "霍城县", + "zipcode": "835200" + }, { + "id": 3357, + "name": "巩留县", + "zipcode": "835400" + }, { + "id": 3358, + "name": "新源县", + "zipcode": "835800" + }, { + "id": 3359, + "name": "昭苏县", + "zipcode": "835600" + }, { + "id": 3360, + "name": "特克斯县", + "zipcode": "835500" + }, { + "id": 3361, + "name": "尼勒克县", + "zipcode": "835700" + }] + }, { + "id": 374, + "name": "塔城地区", + "child": [{ + "id": 3362, + "name": "塔城市", + "zipcode": "834700" + }, { + "id": 3363, + "name": "乌苏市", + "zipcode": "833300" + }, { + "id": 3364, + "name": "额敏县", + "zipcode": "834600" + }, { + "id": 3365, + "name": "沙湾县", + "zipcode": "832100" + }, { + "id": 3366, + "name": "托里县", + "zipcode": "834500" + }, { + "id": 3367, + "name": "裕民县", + "zipcode": "834800" + }, { + "id": 3368, + "name": "和布克赛尔蒙古自治县", + "zipcode": "834400" + }] + }, { + "id": 375, + "name": "阿勒泰地区", + "child": [{ + "id": 3369, + "name": "阿勒泰市", + "zipcode": "836500" + }, { + "id": 3370, + "name": "布尔津县", + "zipcode": "836600" + }, { + "id": 3371, + "name": "富蕴县", + "zipcode": "836100" + }, { + "id": 3372, + "name": "福海县", + "zipcode": "836400" + }, { + "id": 3373, + "name": "哈巴河县", + "zipcode": "836700" + }, { + "id": 3374, + "name": "青河县", + "zipcode": "836200" + }, { + "id": 3375, + "name": "吉木乃县", + "zipcode": "836800" + }] + }, { + "id": 376, + "name": "省直辖县级行政单位", + "child": [{ + "id": 3376, + "name": "石河子市", + "zipcode": "832000" + }, { + "id": 3377, + "name": "阿拉尔市", + "zipcode": "843300" + }, { + "id": 3378, + "name": "图木舒克市", + "zipcode": "843806" + }, { + "id": 3379, + "name": "五家渠市", + "zipcode": "831300" + }] + }] +}] \ No newline at end of file diff --git a/utils/util.js b/utils/util.js new file mode 100644 index 0000000..e67656d --- /dev/null +++ b/utils/util.js @@ -0,0 +1,40 @@ + +var api = require('../api.js'); +const PHONE_REG = /^[1][0-9]{10}$/; + +const submitFormSource = { + ADD_CART: 1, // 1、步数兑换海贝 + TOORDER: 2, // 2、首页邀请好友 + INVITE_INDEX_LAYER: 3, // 3、首页浮层 邀请好友 + GOODS_DETAIL_EXCHANGE: 4, // 4、商品详情页免费兑换 + INVITE_GOODS_DETAIL: 5, // 5、商品详情页页邀请好友 + FOLLOW: 6, // 6、引导关注公众号"知道了"按钮 + EXPERIENCE: 7, // 7、健康体验,免费领取按钮 + INDEX_POP_LAYER: 8, // 首页弹窗 点击后跳转任务列表 + HEALTHFIT: 9, // 9、健康体验,减脂营按钮 + HEALTHHOTMOMMY: 10, // 10、健康体验,辣妈营按钮 + HEALTTHBODY: 11 // 11、健康体验,体态营按钮 + // 20~29 为健康体验 列表从第一个到第十个 +}; + +function submitFormId(formId,source) { + const app = getApp(); + app.request({ + url: api.default.submitFormId, + data: { + formId: formId, + source: source, + }, + success: function (res) { + wx.hideLoading(); + if (res.code == 200) { + + } + } + }); +} + + +module.exports = { + submitFormId:submitFormId +}; \ No newline at end of file diff --git a/utils/utils.js b/utils/utils.js new file mode 100644 index 0000000..94a213e --- /dev/null +++ b/utils/utils.js @@ -0,0 +1,82 @@ +function formatTime(date) { + var year = date.getFullYear() + var month = date.getMonth() + 1 + var day = date.getDate() + + var hour = date.getHours() + var minute = date.getMinutes() + var second = date.getSeconds() + + + return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') +} + +function formatNumber(n) { + n = n.toString() + return n[1] ? n : '0' + n +} +function objectToUrlParams(obj) { + var str = ""; + for (var key in obj) { + str += "&" + key + "=" + obj[key]; + } + return str.substr(1); +} +module.exports = { + formatTime: formatTime, + objectToUrlParams: objectToUrlParams, +}; + + +/** + * new Date() ---> 转化为 年 月 日 时 分 秒 + * let date = new Date(); + * date: 传入参数日期 Date +*/ +// function formatTime(date) { +// var year = date.getFullYear() +// var month = date.getMonth() + 1 +// var day = date.getDate() + +// var hour = date.getHours() +// var minute = date.getMinutes() +// var second = date.getSeconds() + + +// return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') +// } + +// function formatNumber(n) { +// n = n.toString() +// return n[1] ? n : '0' + n +// } + +/** + * 时间戳转化为年 月 日 时 分 秒 + * number: 传入时间戳 + * format:返回格式,支持自定义,但参数必须与formateArr里保持一致 +*/ +function formatTimeTwo(number, format) { + + var formateArr = ['Y', 'M', 'D', 'h', 'm', 's']; + var returnArr = []; + + var date = new Date(number); + returnArr.push(date.getFullYear()); + returnArr.push(formatNumber(date.getMonth() + 1)); + returnArr.push(formatNumber(date.getDate())); + + returnArr.push(formatNumber(date.getHours())); + returnArr.push(formatNumber(date.getMinutes())); + returnArr.push(formatNumber(date.getSeconds())); + + for (var i in returnArr) { + format = format.replace(formateArr[i], returnArr[i]); + } + return format; +} + +module.exports = { + formatTime: formatTime, + formatTimeTwo: formatTimeTwo +} \ No newline at end of file diff --git a/wxParse/html2json.js b/wxParse/html2json.js new file mode 100644 index 0000000..f7e5537 --- /dev/null +++ b/wxParse/html2json.js @@ -0,0 +1,292 @@ +/** + * html2Json 改造来自: https://github.com/Jxck/html2json + * + * + * author: Di (微信小程序开发工程师) + * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) + * 垂直微信小程序开发交流社区 + * + * github地址: https://github.com/icindy/wxParse + * + * for: 微信小程序富文本解析 + * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 + */ + +var __placeImgeUrlHttps = "https"; +var __emojisReg = ''; +var __emojisBaseSrc = ''; +var __emojis = {}; +var wxDiscode = require('./wxDiscode.js'); +var HTMLParser = require('./htmlparser.js'); +// Empty Elements - HTML 5 +var empty = makeMap("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr"); +// Block Elements - HTML 5 +var block = makeMap("br,a,code,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video"); + +// Inline Elements - HTML 5 +var inline = makeMap("abbr,acronym,applet,b,basefont,bdo,big,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"); + +// Elements that you can, intentionally, leave open +// (and which close themselves) +var closeSelf = makeMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"); + +// Attributes that have their values filled in disabled="disabled" +var fillAttrs = makeMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"); + +// Special Elements (can contain anything) +var special = makeMap("wxxxcode-style,script,style,view,scroll-view,block"); +function makeMap(str) { + var obj = {}, items = str.split(","); + for (var i = 0; i < items.length; i++) + obj[items[i]] = true; + return obj; +} + +function q(v) { + return '"' + v + '"'; +} + +function removeDOCTYPE(html) { + return html + .replace(/<\?xml.*\?>\n/, '') + .replace(/<.*!doctype.*\>\n/, '') + .replace(/<.*!DOCTYPE.*\>\n/, ''); +} + + +function html2json(html, bindName) { + //处理字符串 + html = removeDOCTYPE(html); + html = wxDiscode.strDiscode(html); + //生成node节点 + var bufArray = []; + var results = { + node: bindName, + nodes: [], + images:[], + imageUrls:[] + }; + var index = 0; + HTMLParser(html, { + start: function (tag, attrs, unary) { + //debug(tag, attrs, unary); + // node for this element + var node = { + node: 'element', + tag: tag, + }; + + if (bufArray.length === 0) { + node.index = index.toString() + index += 1 + } else { + var parent = bufArray[0]; + if (parent.nodes === undefined) { + parent.nodes = []; + } + node.index = parent.index + '.' + parent.nodes.length + } + + if (block[tag]) { + node.tagType = "block"; + } else if (inline[tag]) { + node.tagType = "inline"; + } else if (closeSelf[tag]) { + node.tagType = "closeSelf"; + } + + if (attrs.length !== 0) { + node.attr = attrs.reduce(function (pre, attr) { + var name = attr.name; + var value = attr.value; + if (name == 'class') { + console.dir(value); + // value = value.join("") + node.classStr = value; + } + // has multi attibutes + // make it array of attribute + if (name == 'style') { + console.dir(value); + // value = value.join("") + node.styleStr = value; + } + if (value.match(/ /)) { + value = value.split(' '); + } + + + // if attr already exists + // merge it + if (pre[name]) { + if (Array.isArray(pre[name])) { + // already array, push to last + pre[name].push(value); + } else { + // single value, make it array + pre[name] = [pre[name], value]; + } + } else { + // not exist, put it + pre[name] = value; + } + + return pre; + }, {}); + } + + //对img添加额外数据 + if (node.tag === 'img') { + node.imgIndex = results.images.length; + var imgUrl = node.attr.src; + if (imgUrl && imgUrl[0] == '') { + imgUrl.splice(0, 1); + } + imgUrl = wxDiscode.urlToHttpUrl(imgUrl, __placeImgeUrlHttps); + node.attr.src = imgUrl; + node.from = bindName; + results.images.push(node); + results.imageUrls.push(imgUrl); + } + + // 处理font标签样式属性 + if (node.tag === 'font') { + var fontSize = ['x-small', 'small', 'medium', 'large', 'x-large', 'xx-large', '-webkit-xxx-large']; + var styleAttrs = { + 'color': 'color', + 'face': 'font-family', + 'size': 'font-size' + }; + if (!node.attr.style) node.attr.style = []; + if (!node.styleStr) node.styleStr = ''; + for (var key in styleAttrs) { + if (node.attr[key]) { + var value = key === 'size' ? fontSize[node.attr[key]-1] : node.attr[key]; + node.attr.style.push(styleAttrs[key]); + node.attr.style.push(value); + node.styleStr += styleAttrs[key] + ': ' + value + ';'; + } + } + } + + //临时记录source资源 + if(node.tag === 'source'){ + results.source = node.attr.src; + } + + if (unary) { + // if this tag dosen't have end tag + // like + // add to parents + var parent = bufArray[0] || results; + if (parent.nodes === undefined) { + parent.nodes = []; + } + parent.nodes.push(node); + } else { + bufArray.unshift(node); + } + }, + end: function (tag) { + //debug(tag); + // merge into parent tag + var node = bufArray.shift(); + if (node.tag !== tag) console.error('invalid state: mismatch end tag'); + + //当有缓存source资源时于于video补上src资源 + if(node.tag === 'video' && results.source){ + node.attr.src = results.source; + delete result.source; + } + + if (bufArray.length === 0) { + results.nodes.push(node); + } else { + var parent = bufArray[0]; + if (parent.nodes === undefined) { + parent.nodes = []; + } + parent.nodes.push(node); + } + }, + chars: function (text) { + //debug(text); + var node = { + node: 'text', + text: text, + textArray:transEmojiStr(text) + }; + + if (bufArray.length === 0) { + results.nodes.push(node); + } else { + var parent = bufArray[0]; + if (parent.nodes === undefined) { + parent.nodes = []; + } + node.index = parent.index + '.' + parent.nodes.length + parent.nodes.push(node); + } + }, + comment: function (text) { + //debug(text); + // var node = { + // node: 'comment', + // text: text, + // }; + // var parent = bufArray[0]; + // if (parent.nodes === undefined) { + // parent.nodes = []; + // } + // parent.nodes.push(node); + }, + }); + return results; +}; + +function transEmojiStr(str){ + // var eReg = new RegExp("["+__reg+' '+"]"); +// str = str.replace(/\[([^\[\]]+)\]/g,':$1:') + + var emojiObjs = []; + //如果正则表达式为空 + if(__emojisReg.length == 0 || !__emojis){ + var emojiObj = {} + emojiObj.node = "text"; + emojiObj.text = str; + array = [emojiObj]; + return array; + } + //这个地方需要调整 + str = str.replace(/\[([^\[\]]+)\]/g,':$1:') + var eReg = new RegExp("[:]"); + var array = str.split(eReg); + for(var i = 0; i < array.length; i++){ + var ele = array[i]; + var emojiObj = {}; + if(__emojis[ele]){ + emojiObj.node = "element"; + emojiObj.tag = "emoji"; + emojiObj.text = __emojis[ele]; + emojiObj.baseSrc= __emojisBaseSrc; + }else{ + emojiObj.node = "text"; + emojiObj.text = ele; + } + emojiObjs.push(emojiObj); + } + + return emojiObjs; +} + +function emojisInit(reg='',baseSrc="/wxParse/emojis/",emojis){ + __emojisReg = reg; + __emojisBaseSrc=baseSrc; + __emojis=emojis; +} + +module.exports = { + html2json: html2json, + emojisInit:emojisInit +}; + diff --git a/wxParse/htmlparser.js b/wxParse/htmlparser.js new file mode 100644 index 0000000..811ddac --- /dev/null +++ b/wxParse/htmlparser.js @@ -0,0 +1,192 @@ +/** + * + * htmlParser改造自: https://github.com/blowsie/Pure-JavaScript-HTML5-Parser + * + * author: Di (微信小程序开发工程师) + * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) + * 垂直微信小程序开发交流社区 + * + * github地址: https://github.com/icindy/wxParse + * + * for: 微信小程序富文本解析 + * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 + */ +// Regular Expressions for parsing tags and attributes +var startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/, + endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/, + attr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; + +// Empty Elements - HTML 5 +var empty = makeMap("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr"); + +// Block Elements - HTML 5 +var block = makeMap("a,address,code,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video"); + +// Inline Elements - HTML 5 +var inline = makeMap("abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"); + +// Elements that you can, intentionally, leave open +// (and which close themselves) +var closeSelf = makeMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"); + +// Attributes that have their values filled in disabled="disabled" +var fillAttrs = makeMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"); + +// Special Elements (can contain anything) +var special = makeMap("wxxxcode-style,script,style,view,scroll-view,block"); + +function HTMLParser(html, handler) { + var index, chars, match, stack = [], last = html; + stack.last = function () { + return this[this.length - 1]; + }; + + while (html) { + chars = true; + + // Make sure we're not in a script or style element + if (!stack.last() || !special[stack.last()]) { + + // Comment + if (html.indexOf(""); + + if (index >= 0) { + if (handler.comment) + handler.comment(html.substring(4, index)); + html = html.substring(index + 3); + chars = false; + } + + // end tag + } else if (html.indexOf("]*>"), function (all, text) { + text = text.replace(/|/g, "$1$2"); + if (handler.chars) + handler.chars(text); + + return ""; + }); + + + parseEndTag("", stack.last()); + } + + if (html == last) + throw "Parse Error: " + html; + last = html; + } + + // Clean up any remaining tags + parseEndTag(); + + function parseStartTag(tag, tagName, rest, unary) { + tagName = tagName.toLowerCase(); + + if (block[tagName]) { + while (stack.last() && inline[stack.last()]) { + parseEndTag("", stack.last()); + } + } + + if (closeSelf[tagName] && stack.last() == tagName) { + parseEndTag("", tagName); + } + + unary = empty[tagName] || !!unary; + + if (!unary) + stack.push(tagName); + + if (handler.start) { + var attrs = []; + + rest.replace(attr, function (match, name) { + var value = arguments[2] ? arguments[2] : + arguments[3] ? arguments[3] : + arguments[4] ? arguments[4] : + fillAttrs[name] ? name : ""; + + attrs.push({ + name: name, + value: value, + escaped: value.replace(/(^|[^\\])"/g, '$1\\\"') //" + }); + }); + + if (handler.start) { + handler.start(tagName, attrs, unary); + } + + } + } + + function parseEndTag(tag, tagName) { + // If no tag name is provided, clean shop + if (!tagName) + var pos = 0; + + // Find the closest opened tag of the same type + else { + tagName = tagName.toLowerCase(); + for (var pos = stack.length - 1; pos >= 0; pos--) + if (stack[pos] == tagName) + break; + } + if (pos >= 0) { + // Close all the open elements, up the stack + for (var i = stack.length - 1; i >= pos; i--) + if (handler.end) + handler.end(stack[i]); + + // Remove the open elements from the stack + stack.length = pos; + } + } +}; + + +function makeMap(str) { + var obj = {}, items = str.split(","); + for (var i = 0; i < items.length; i++) + obj[items[i]] = true; + return obj; +} + +module.exports = HTMLParser; diff --git a/wxParse/showdown.js b/wxParse/showdown.js new file mode 100644 index 0000000..a4fd0bd --- /dev/null +++ b/wxParse/showdown.js @@ -0,0 +1,2535 @@ +/** + * + * showdown: https://github.com/showdownjs/showdown + * + * author: Di (微信小程序开发工程师) + * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) + * 垂直微信小程序开发交流社区 + * + * github地址: https://github.com/icindy/wxParse + * + * for: 微信小程序富文本解析 + * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 + */ + +function getDefaultOpts(simple) { + 'use strict'; + + var defaultOptions = { + omitExtraWLInCodeBlocks: { + defaultValue: false, + describe: 'Omit the default extra whiteline added to code blocks', + type: 'boolean' + }, + noHeaderId: { + defaultValue: false, + describe: 'Turn on/off generated header id', + type: 'boolean' + }, + prefixHeaderId: { + defaultValue: false, + describe: 'Specify a prefix to generated header ids', + type: 'string' + }, + headerLevelStart: { + defaultValue: false, + describe: 'The header blocks level start', + type: 'integer' + }, + parseImgDimensions: { + defaultValue: false, + describe: 'Turn on/off image dimension parsing', + type: 'boolean' + }, + simplifiedAutoLink: { + defaultValue: false, + describe: 'Turn on/off GFM autolink style', + type: 'boolean' + }, + literalMidWordUnderscores: { + defaultValue: false, + describe: 'Parse midword underscores as literal underscores', + type: 'boolean' + }, + strikethrough: { + defaultValue: false, + describe: 'Turn on/off strikethrough support', + type: 'boolean' + }, + tables: { + defaultValue: false, + describe: 'Turn on/off tables support', + type: 'boolean' + }, + tablesHeaderId: { + defaultValue: false, + describe: 'Add an id to table headers', + type: 'boolean' + }, + ghCodeBlocks: { + defaultValue: true, + describe: 'Turn on/off GFM fenced code blocks support', + type: 'boolean' + }, + tasklists: { + defaultValue: false, + describe: 'Turn on/off GFM tasklist support', + type: 'boolean' + }, + smoothLivePreview: { + defaultValue: false, + describe: 'Prevents weird effects in live previews due to incomplete input', + type: 'boolean' + }, + smartIndentationFix: { + defaultValue: false, + description: 'Tries to smartly fix identation in es6 strings', + type: 'boolean' + } + }; + if (simple === false) { + return JSON.parse(JSON.stringify(defaultOptions)); + } + var ret = {}; + for (var opt in defaultOptions) { + if (defaultOptions.hasOwnProperty(opt)) { + ret[opt] = defaultOptions[opt].defaultValue; + } + } + return ret; +} + +/** + * Created by Tivie on 06-01-2015. + */ + +// Private properties +var showdown = {}, + parsers = {}, + extensions = {}, + globalOptions = getDefaultOpts(true), + flavor = { + github: { + omitExtraWLInCodeBlocks: true, + prefixHeaderId: 'user-content-', + simplifiedAutoLink: true, + literalMidWordUnderscores: true, + strikethrough: true, + tables: true, + tablesHeaderId: true, + ghCodeBlocks: true, + tasklists: true + }, + vanilla: getDefaultOpts(true) + }; + +/** + * helper namespace + * @type {{}} + */ +showdown.helper = {}; + +/** + * TODO LEGACY SUPPORT CODE + * @type {{}} + */ +showdown.extensions = {}; + +/** + * Set a global option + * @static + * @param {string} key + * @param {*} value + * @returns {showdown} + */ +showdown.setOption = function (key, value) { + 'use strict'; + globalOptions[key] = value; + return this; +}; + +/** + * Get a global option + * @static + * @param {string} key + * @returns {*} + */ +showdown.getOption = function (key) { + 'use strict'; + return globalOptions[key]; +}; + +/** + * Get the global options + * @static + * @returns {{}} + */ +showdown.getOptions = function () { + 'use strict'; + return globalOptions; +}; + +/** + * Reset global options to the default values + * @static + */ +showdown.resetOptions = function () { + 'use strict'; + globalOptions = getDefaultOpts(true); +}; + +/** + * Set the flavor showdown should use as default + * @param {string} name + */ +showdown.setFlavor = function (name) { + 'use strict'; + if (flavor.hasOwnProperty(name)) { + var preset = flavor[name]; + for (var option in preset) { + if (preset.hasOwnProperty(option)) { + globalOptions[option] = preset[option]; + } + } + } +}; + +/** + * Get the default options + * @static + * @param {boolean} [simple=true] + * @returns {{}} + */ +showdown.getDefaultOptions = function (simple) { + 'use strict'; + return getDefaultOpts(simple); +}; + +/** + * Get or set a subParser + * + * subParser(name) - Get a registered subParser + * subParser(name, func) - Register a subParser + * @static + * @param {string} name + * @param {function} [func] + * @returns {*} + */ +showdown.subParser = function (name, func) { + 'use strict'; + if (showdown.helper.isString(name)) { + if (typeof func !== 'undefined') { + parsers[name] = func; + } else { + if (parsers.hasOwnProperty(name)) { + return parsers[name]; + } else { + throw Error('SubParser named ' + name + ' not registered!'); + } + } + } +}; + +/** + * Gets or registers an extension + * @static + * @param {string} name + * @param {object|function=} ext + * @returns {*} + */ +showdown.extension = function (name, ext) { + 'use strict'; + + if (!showdown.helper.isString(name)) { + throw Error('Extension \'name\' must be a string'); + } + + name = showdown.helper.stdExtName(name); + + // Getter + if (showdown.helper.isUndefined(ext)) { + if (!extensions.hasOwnProperty(name)) { + throw Error('Extension named ' + name + ' is not registered!'); + } + return extensions[name]; + + // Setter + } else { + // Expand extension if it's wrapped in a function + if (typeof ext === 'function') { + ext = ext(); + } + + // Ensure extension is an array + if (!showdown.helper.isArray(ext)) { + ext = [ext]; + } + + var validExtension = validate(ext, name); + + if (validExtension.valid) { + extensions[name] = ext; + } else { + throw Error(validExtension.error); + } + } +}; + +/** + * Gets all extensions registered + * @returns {{}} + */ +showdown.getAllExtensions = function () { + 'use strict'; + return extensions; +}; + +/** + * Remove an extension + * @param {string} name + */ +showdown.removeExtension = function (name) { + 'use strict'; + delete extensions[name]; +}; + +/** + * Removes all extensions + */ +showdown.resetExtensions = function () { + 'use strict'; + extensions = {}; +}; + +/** + * Validate extension + * @param {array} extension + * @param {string} name + * @returns {{valid: boolean, error: string}} + */ +function validate(extension, name) { + 'use strict'; + + var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension', + ret = { + valid: true, + error: '' + }; + + if (!showdown.helper.isArray(extension)) { + extension = [extension]; + } + + for (var i = 0; i < extension.length; ++i) { + var baseMsg = errMsg + ' sub-extension ' + i + ': ', + ext = extension[i]; + if (typeof ext !== 'object') { + ret.valid = false; + ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given'; + return ret; + } + + if (!showdown.helper.isString(ext.type)) { + ret.valid = false; + ret.error = baseMsg + 'property "type" must be a string, but ' + typeof ext.type + ' given'; + return ret; + } + + var type = ext.type = ext.type.toLowerCase(); + + // normalize extension type + if (type === 'language') { + type = ext.type = 'lang'; + } + + if (type === 'html') { + type = ext.type = 'output'; + } + + if (type !== 'lang' && type !== 'output' && type !== 'listener') { + ret.valid = false; + ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: "lang/language", "output/html" or "listener"'; + return ret; + } + + if (type === 'listener') { + if (showdown.helper.isUndefined(ext.listeners)) { + ret.valid = false; + ret.error = baseMsg + '. Extensions of type "listener" must have a property called "listeners"'; + return ret; + } + } else { + if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) { + ret.valid = false; + ret.error = baseMsg + type + ' extensions must define either a "regex" property or a "filter" method'; + return ret; + } + } + + if (ext.listeners) { + if (typeof ext.listeners !== 'object') { + ret.valid = false; + ret.error = baseMsg + '"listeners" property must be an object but ' + typeof ext.listeners + ' given'; + return ret; + } + for (var ln in ext.listeners) { + if (ext.listeners.hasOwnProperty(ln)) { + if (typeof ext.listeners[ln] !== 'function') { + ret.valid = false; + ret.error = baseMsg + '"listeners" property must be an hash of [event name]: [callback]. listeners.' + ln + + ' must be a function but ' + typeof ext.listeners[ln] + ' given'; + return ret; + } + } + } + } + + if (ext.filter) { + if (typeof ext.filter !== 'function') { + ret.valid = false; + ret.error = baseMsg + '"filter" must be a function, but ' + typeof ext.filter + ' given'; + return ret; + } + } else if (ext.regex) { + if (showdown.helper.isString(ext.regex)) { + ext.regex = new RegExp(ext.regex, 'g'); + } + if (!ext.regex instanceof RegExp) { + ret.valid = false; + ret.error = baseMsg + '"regex" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given'; + return ret; + } + if (showdown.helper.isUndefined(ext.replace)) { + ret.valid = false; + ret.error = baseMsg + '"regex" extensions must implement a replace string or function'; + return ret; + } + } + } + return ret; +} + +/** + * Validate extension + * @param {object} ext + * @returns {boolean} + */ +showdown.validateExtension = function (ext) { + 'use strict'; + + var validateExtension = validate(ext, null); + if (!validateExtension.valid) { + console.warn(validateExtension.error); + return false; + } + return true; +}; + +/** + * showdownjs helper functions + */ + +if (!showdown.hasOwnProperty('helper')) { + showdown.helper = {}; +} + +/** + * Check if var is string + * @static + * @param {string} a + * @returns {boolean} + */ +showdown.helper.isString = function isString(a) { + 'use strict'; + return (typeof a === 'string' || a instanceof String); +}; + +/** + * Check if var is a function + * @static + * @param {string} a + * @returns {boolean} + */ +showdown.helper.isFunction = function isFunction(a) { + 'use strict'; + var getType = {}; + return a && getType.toString.call(a) === '[object Function]'; +}; + +/** + * ForEach helper function + * @static + * @param {*} obj + * @param {function} callback + */ +showdown.helper.forEach = function forEach(obj, callback) { + 'use strict'; + if (typeof obj.forEach === 'function') { + obj.forEach(callback); + } else { + for (var i = 0; i < obj.length; i++) { + callback(obj[i], i, obj); + } + } +}; + +/** + * isArray helper function + * @static + * @param {*} a + * @returns {boolean} + */ +showdown.helper.isArray = function isArray(a) { + 'use strict'; + return a.constructor === Array; +}; + +/** + * Check if value is undefined + * @static + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + */ +showdown.helper.isUndefined = function isUndefined(value) { + 'use strict'; + return typeof value === 'undefined'; +}; + +/** + * Standardidize extension name + * @static + * @param {string} s extension name + * @returns {string} + */ +showdown.helper.stdExtName = function (s) { + 'use strict'; + return s.replace(/[_-]||\s/g, '').toLowerCase(); +}; + +function escapeCharactersCallback(wholeMatch, m1) { + 'use strict'; + var charCodeToEscape = m1.charCodeAt(0); + return '~E' + charCodeToEscape + 'E'; +} + +/** + * Callback used to escape characters when passing through String.replace + * @static + * @param {string} wholeMatch + * @param {string} m1 + * @returns {string} + */ +showdown.helper.escapeCharactersCallback = escapeCharactersCallback; + +/** + * Escape characters in a string + * @static + * @param {string} text + * @param {string} charsToEscape + * @param {boolean} afterBackslash + * @returns {XML|string|void|*} + */ +showdown.helper.escapeCharacters = function escapeCharacters(text, charsToEscape, afterBackslash) { + 'use strict'; + // First we have to escape the escape characters so that + // we can build a character class out of them + var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; + + if (afterBackslash) { + regexString = '\\\\' + regexString; + } + + var regex = new RegExp(regexString, 'g'); + text = text.replace(regex, escapeCharactersCallback); + + return text; +}; + +var rgxFindMatchPos = function (str, left, right, flags) { + 'use strict'; + var f = flags || '', + g = f.indexOf('g') > -1, + x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')), + l = new RegExp(left, f.replace(/g/g, '')), + pos = [], + t, s, m, start, end; + + do { + t = 0; + while ((m = x.exec(str))) { + if (l.test(m[0])) { + if (!(t++)) { + s = x.lastIndex; + start = s - m[0].length; + } + } else if (t) { + if (!--t) { + end = m.index + m[0].length; + var obj = { + left: {start: start, end: s}, + match: {start: s, end: m.index}, + right: {start: m.index, end: end}, + wholeMatch: {start: start, end: end} + }; + pos.push(obj); + if (!g) { + return pos; + } + } + } + } + } while (t && (x.lastIndex = s)); + + return pos; +}; + +/** + * matchRecursiveRegExp + * + * (c) 2007 Steven Levithan + * MIT License + * + * Accepts a string to search, a left and right format delimiter + * as regex patterns, and optional regex flags. Returns an array + * of matches, allowing nested instances of left/right delimiters. + * Use the "g" flag to return all matches, otherwise only the + * first is returned. Be careful to ensure that the left and + * right format delimiters produce mutually exclusive matches. + * Backreferences are not supported within the right delimiter + * due to how it is internally combined with the left delimiter. + * When matching strings whose format delimiters are unbalanced + * to the left or right, the output is intentionally as a + * conventional regex library with recursion support would + * produce, e.g. "<" and ">" both produce ["x"] when using + * "<" and ">" as the delimiters (both strings contain a single, + * balanced instance of ""). + * + * examples: + * matchRecursiveRegExp("test", "\\(", "\\)") + * returns: [] + * matchRecursiveRegExp(">>t<>", "<", ">", "g") + * returns: ["t<>", ""] + * matchRecursiveRegExp("
test
", "]*>", "", "gi") + * returns: ["test"] + */ +showdown.helper.matchRecursiveRegExp = function (str, left, right, flags) { + 'use strict'; + + var matchPos = rgxFindMatchPos (str, left, right, flags), + results = []; + + for (var i = 0; i < matchPos.length; ++i) { + results.push([ + str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end), + str.slice(matchPos[i].match.start, matchPos[i].match.end), + str.slice(matchPos[i].left.start, matchPos[i].left.end), + str.slice(matchPos[i].right.start, matchPos[i].right.end) + ]); + } + return results; +}; + +/** + * + * @param {string} str + * @param {string|function} replacement + * @param {string} left + * @param {string} right + * @param {string} flags + * @returns {string} + */ +showdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) { + 'use strict'; + + if (!showdown.helper.isFunction(replacement)) { + var repStr = replacement; + replacement = function () { + return repStr; + }; + } + + var matchPos = rgxFindMatchPos(str, left, right, flags), + finalStr = str, + lng = matchPos.length; + + if (lng > 0) { + var bits = []; + if (matchPos[0].wholeMatch.start !== 0) { + bits.push(str.slice(0, matchPos[0].wholeMatch.start)); + } + for (var i = 0; i < lng; ++i) { + bits.push( + replacement( + str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end), + str.slice(matchPos[i].match.start, matchPos[i].match.end), + str.slice(matchPos[i].left.start, matchPos[i].left.end), + str.slice(matchPos[i].right.start, matchPos[i].right.end) + ) + ); + if (i < lng - 1) { + bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start)); + } + } + if (matchPos[lng - 1].wholeMatch.end < str.length) { + bits.push(str.slice(matchPos[lng - 1].wholeMatch.end)); + } + finalStr = bits.join(''); + } + return finalStr; +}; + +/** + * POLYFILLS + */ +if (showdown.helper.isUndefined(console)) { + console = { + warn: function (msg) { + 'use strict'; + console.log('warn'); + alert(msg); + }, + log: function (msg) { + 'use strict'; + console.log('log'); + alert(msg); + }, + error: function (msg) { + 'use strict'; + console.log('error'); + throw msg; + } + }; +} + +/** + * Created by Estevao on 31-05-2015. + */ + +/** + * Showdown Converter class + * @class + * @param {object} [converterOptions] + * @returns {Converter} + */ +showdown.Converter = function (converterOptions) { + 'use strict'; + + var + /** + * Options used by this converter + * @private + * @type {{}} + */ + options = {}, + + /** + * Language extensions used by this converter + * @private + * @type {Array} + */ + langExtensions = [], + + /** + * Output modifiers extensions used by this converter + * @private + * @type {Array} + */ + outputModifiers = [], + + /** + * Event listeners + * @private + * @type {{}} + */ + listeners = {}; + + _constructor(); + + /** + * Converter constructor + * @private + */ + function _constructor() { + converterOptions = converterOptions || {}; + + for (var gOpt in globalOptions) { + if (globalOptions.hasOwnProperty(gOpt)) { + options[gOpt] = globalOptions[gOpt]; + } + } + + // Merge options + if (typeof converterOptions === 'object') { + for (var opt in converterOptions) { + if (converterOptions.hasOwnProperty(opt)) { + options[opt] = converterOptions[opt]; + } + } + } else { + throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions + + ' was passed instead.'); + } + + if (options.extensions) { + showdown.helper.forEach(options.extensions, _parseExtension); + } + } + + /** + * Parse extension + * @param {*} ext + * @param {string} [name=''] + * @private + */ + function _parseExtension(ext, name) { + + name = name || null; + // If it's a string, the extension was previously loaded + if (showdown.helper.isString(ext)) { + ext = showdown.helper.stdExtName(ext); + name = ext; + + // LEGACY_SUPPORT CODE + if (showdown.extensions[ext]) { + console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' + + 'Please inform the developer that the extension should be updated!'); + legacyExtensionLoading(showdown.extensions[ext], ext); + return; + // END LEGACY SUPPORT CODE + + } else if (!showdown.helper.isUndefined(extensions[ext])) { + ext = extensions[ext]; + + } else { + throw Error('Extension "' + ext + '" could not be loaded. It was either not found or is not a valid extension.'); + } + } + + if (typeof ext === 'function') { + ext = ext(); + } + + if (!showdown.helper.isArray(ext)) { + ext = [ext]; + } + + var validExt = validate(ext, name); + if (!validExt.valid) { + throw Error(validExt.error); + } + + for (var i = 0; i < ext.length; ++i) { + switch (ext[i].type) { + + case 'lang': + langExtensions.push(ext[i]); + break; + + case 'output': + outputModifiers.push(ext[i]); + break; + } + if (ext[i].hasOwnProperty(listeners)) { + for (var ln in ext[i].listeners) { + if (ext[i].listeners.hasOwnProperty(ln)) { + listen(ln, ext[i].listeners[ln]); + } + } + } + } + + } + + /** + * LEGACY_SUPPORT + * @param {*} ext + * @param {string} name + */ + function legacyExtensionLoading(ext, name) { + if (typeof ext === 'function') { + ext = ext(new showdown.Converter()); + } + if (!showdown.helper.isArray(ext)) { + ext = [ext]; + } + var valid = validate(ext, name); + + if (!valid.valid) { + throw Error(valid.error); + } + + for (var i = 0; i < ext.length; ++i) { + switch (ext[i].type) { + case 'lang': + langExtensions.push(ext[i]); + break; + case 'output': + outputModifiers.push(ext[i]); + break; + default:// should never reach here + throw Error('Extension loader error: Type unrecognized!!!'); + } + } + } + + /** + * Listen to an event + * @param {string} name + * @param {function} callback + */ + function listen(name, callback) { + if (!showdown.helper.isString(name)) { + throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given'); + } + + if (typeof callback !== 'function') { + throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given'); + } + + if (!listeners.hasOwnProperty(name)) { + listeners[name] = []; + } + listeners[name].push(callback); + } + + function rTrimInputText(text) { + var rsp = text.match(/^\s*/)[0].length, + rgx = new RegExp('^\\s{0,' + rsp + '}', 'gm'); + return text.replace(rgx, ''); + } + + /** + * Dispatch an event + * @private + * @param {string} evtName Event name + * @param {string} text Text + * @param {{}} options Converter Options + * @param {{}} globals + * @returns {string} + */ + this._dispatch = function dispatch (evtName, text, options, globals) { + if (listeners.hasOwnProperty(evtName)) { + for (var ei = 0; ei < listeners[evtName].length; ++ei) { + var nText = listeners[evtName][ei](evtName, text, this, options, globals); + if (nText && typeof nText !== 'undefined') { + text = nText; + } + } + } + return text; + }; + + /** + * Listen to an event + * @param {string} name + * @param {function} callback + * @returns {showdown.Converter} + */ + this.listen = function (name, callback) { + listen(name, callback); + return this; + }; + + /** + * Converts a markdown string into HTML + * @param {string} text + * @returns {*} + */ + this.makeHtml = function (text) { + //check if text is not falsy + if (!text) { + return text; + } + + var globals = { + gHtmlBlocks: [], + gHtmlMdBlocks: [], + gHtmlSpans: [], + gUrls: {}, + gTitles: {}, + gDimensions: {}, + gListLevel: 0, + hashLinkCounts: {}, + langExtensions: langExtensions, + outputModifiers: outputModifiers, + converter: this, + ghCodeBlocks: [] + }; + + // attacklab: Replace ~ with ~T + // This lets us use tilde as an escape char to avoid md5 hashes + // The choice of character is arbitrary; anything that isn't + // magic in Markdown will work. + text = text.replace(/~/g, '~T'); + + // attacklab: Replace $ with ~D + // RegExp interprets $ as a special character + // when it's in a replacement string + text = text.replace(/\$/g, '~D'); + + // Standardize line endings + text = text.replace(/\r\n/g, '\n'); // DOS to Unix + text = text.replace(/\r/g, '\n'); // Mac to Unix + + if (options.smartIndentationFix) { + text = rTrimInputText(text); + } + + // Make sure text begins and ends with a couple of newlines: + //text = '\n\n' + text + '\n\n'; + text = text; + // detab + text = showdown.subParser('detab')(text, options, globals); + + // stripBlankLines + text = showdown.subParser('stripBlankLines')(text, options, globals); + + //run languageExtensions + showdown.helper.forEach(langExtensions, function (ext) { + text = showdown.subParser('runExtension')(ext, text, options, globals); + }); + + // run the sub parsers + text = showdown.subParser('hashPreCodeTags')(text, options, globals); + text = showdown.subParser('githubCodeBlocks')(text, options, globals); + text = showdown.subParser('hashHTMLBlocks')(text, options, globals); + text = showdown.subParser('hashHTMLSpans')(text, options, globals); + text = showdown.subParser('stripLinkDefinitions')(text, options, globals); + text = showdown.subParser('blockGamut')(text, options, globals); + text = showdown.subParser('unhashHTMLSpans')(text, options, globals); + text = showdown.subParser('unescapeSpecialChars')(text, options, globals); + + // attacklab: Restore dollar signs + text = text.replace(/~D/g, '$$'); + + // attacklab: Restore tildes + text = text.replace(/~T/g, '~'); + + // Run output modifiers + showdown.helper.forEach(outputModifiers, function (ext) { + text = showdown.subParser('runExtension')(ext, text, options, globals); + }); + return text; + }; + + /** + * Set an option of this Converter instance + * @param {string} key + * @param {*} value + */ + this.setOption = function (key, value) { + options[key] = value; + }; + + /** + * Get the option of this Converter instance + * @param {string} key + * @returns {*} + */ + this.getOption = function (key) { + return options[key]; + }; + + /** + * Get the options of this Converter instance + * @returns {{}} + */ + this.getOptions = function () { + return options; + }; + + /** + * Add extension to THIS converter + * @param {{}} extension + * @param {string} [name=null] + */ + this.addExtension = function (extension, name) { + name = name || null; + _parseExtension(extension, name); + }; + + /** + * Use a global registered extension with THIS converter + * @param {string} extensionName Name of the previously registered extension + */ + this.useExtension = function (extensionName) { + _parseExtension(extensionName); + }; + + /** + * Set the flavor THIS converter should use + * @param {string} name + */ + this.setFlavor = function (name) { + if (flavor.hasOwnProperty(name)) { + var preset = flavor[name]; + for (var option in preset) { + if (preset.hasOwnProperty(option)) { + options[option] = preset[option]; + } + } + } + }; + + /** + * Remove an extension from THIS converter. + * Note: This is a costly operation. It's better to initialize a new converter + * and specify the extensions you wish to use + * @param {Array} extension + */ + this.removeExtension = function (extension) { + if (!showdown.helper.isArray(extension)) { + extension = [extension]; + } + for (var a = 0; a < extension.length; ++a) { + var ext = extension[a]; + for (var i = 0; i < langExtensions.length; ++i) { + if (langExtensions[i] === ext) { + langExtensions[i].splice(i, 1); + } + } + for (var ii = 0; ii < outputModifiers.length; ++i) { + if (outputModifiers[ii] === ext) { + outputModifiers[ii].splice(i, 1); + } + } + } + }; + + /** + * Get all extension of THIS converter + * @returns {{language: Array, output: Array}} + */ + this.getAllExtensions = function () { + return { + language: langExtensions, + output: outputModifiers + }; + }; +}; + +/** + * Turn Markdown link shortcuts into XHTML tags. + */ +showdown.subParser('anchors', function (text, options, globals) { + 'use strict'; + + text = globals.converter._dispatch('anchors.before', text, options, globals); + + var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { + if (showdown.helper.isUndefined(m7)) { + m7 = ''; + } + wholeMatch = m1; + var linkText = m2, + linkId = m3.toLowerCase(), + url = m4, + title = m7; + + if (!url) { + if (!linkId) { + // lower-case and turn embedded newlines into spaces + linkId = linkText.toLowerCase().replace(/ ?\n/g, ' '); + } + url = '#' + linkId; + + if (!showdown.helper.isUndefined(globals.gUrls[linkId])) { + url = globals.gUrls[linkId]; + if (!showdown.helper.isUndefined(globals.gTitles[linkId])) { + title = globals.gTitles[linkId]; + } + } else { + if (wholeMatch.search(/\(\s*\)$/m) > -1) { + // Special case for explicit empty url + url = ''; + } else { + return wholeMatch; + } + } + } + + url = showdown.helper.escapeCharacters(url, '*_', false); + var result = ''; + + return result; + }; + + // First, handle reference-style links: [link text] [id] + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[] // or anything else + )* + ) + \] + + [ ]? // one optional space + (?:\n[ ]*)? // one optional newline followed by spaces + + \[ + (.*?) // id = $3 + \] + )()()()() // pad remaining backreferences + /g,_DoAnchors_callback); + */ + text = text.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)][ ]?(?:\n[ ]*)?\[(.*?)])()()()()/g, writeAnchorTag); + + // + // Next, inline-style links: [link text](url "optional title") + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[\]] // or anything else + ) + ) + \] + \( // literal paren + [ \t]* + () // no id, so leave $3 empty + ? // href = $4 + [ \t]* + ( // $5 + (['"]) // quote char = $6 + (.*?) // Title = $7 + \6 // matching quote + [ \t]* // ignore any spaces/tabs between closing quote and ) + )? // title is optional + \) + ) + /g,writeAnchorTag); + */ + text = text.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, + writeAnchorTag); + + // + // Last, handle reference-style shortcuts: [link text] + // These must come last in case you've also got [link test][1] + // or [link test](/foo) + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ([^\[\]]+) // link text = $2; can't contain '[' or ']' + \] + )()()()()() // pad rest of backreferences + /g, writeAnchorTag); + */ + text = text.replace(/(\[([^\[\]]+)])()()()()()/g, writeAnchorTag); + + text = globals.converter._dispatch('anchors.after', text, options, globals); + return text; +}); + +showdown.subParser('autoLinks', function (text, options, globals) { + 'use strict'; + + text = globals.converter._dispatch('autoLinks.before', text, options, globals); + + var simpleURLRegex = /\b(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+)(?=\s|$)(?!["<>])/gi, + delimUrlRegex = /<(((https?|ftp|dict):\/\/|www\.)[^'">\s]+)>/gi, + simpleMailRegex = /(?:^|[ \n\t])([A-Za-z0-9!#$%&'*+-/=?^_`\{|}~\.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?:$|[ \n\t])/gi, + delimMailRegex = /<(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi; + + text = text.replace(delimUrlRegex, replaceLink); + text = text.replace(delimMailRegex, replaceMail); + // simpleURLRegex = /\b(((https?|ftp|dict):\/\/|www\.)[-.+~:?#@!$&'()*,;=[\]\w]+)\b/gi, + // Email addresses: + + if (options.simplifiedAutoLink) { + text = text.replace(simpleURLRegex, replaceLink); + text = text.replace(simpleMailRegex, replaceMail); + } + + function replaceLink(wm, link) { + var lnkTxt = link; + if (/^www\./i.test(link)) { + link = link.replace(/^www\./i, 'http://www.'); + } + return '' + lnkTxt + ''; + } + + function replaceMail(wholeMatch, m1) { + var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1); + return showdown.subParser('encodeEmailAddress')(unescapedStr); + } + + text = globals.converter._dispatch('autoLinks.after', text, options, globals); + + return text; +}); + +/** + * These are all the transformations that form block-level + * tags like paragraphs, headers, and list items. + */ +showdown.subParser('blockGamut', function (text, options, globals) { + 'use strict'; + + text = globals.converter._dispatch('blockGamut.before', text, options, globals); + + // we parse blockquotes first so that we can have headings and hrs + // inside blockquotes + text = showdown.subParser('blockQuotes')(text, options, globals); + text = showdown.subParser('headers')(text, options, globals); + + // Do Horizontal Rules: + var key = showdown.subParser('hashBlock')('
', options, globals); + text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm, key); + text = text.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm, key); + text = text.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm, key); + + text = showdown.subParser('lists')(text, options, globals); + text = showdown.subParser('codeBlocks')(text, options, globals); + text = showdown.subParser('tables')(text, options, globals); + + // We already ran _HashHTMLBlocks() before, in Markdown(), but that + // was to escape raw HTML in the original Markdown source. This time, + // we're escaping the markup we've just created, so that we don't wrap + //

tags around block-level tags. + text = showdown.subParser('hashHTMLBlocks')(text, options, globals); + text = showdown.subParser('paragraphs')(text, options, globals); + + text = globals.converter._dispatch('blockGamut.after', text, options, globals); + + return text; +}); + +showdown.subParser('blockQuotes', function (text, options, globals) { + 'use strict'; + + text = globals.converter._dispatch('blockQuotes.before', text, options, globals); + /* + text = text.replace(/ + ( // Wrap whole match in $1 + ( + ^[ \t]*>[ \t]? // '>' at the start of a line + .+\n // rest of the first line + (.+\n)* // subsequent consecutive lines + \n* // blanks + )+ + ) + /gm, function(){...}); + */ + + text = text.replace(/((^[ \t]{0,3}>[ \t]?.+\n(.+\n)*\n*)+)/gm, function (wholeMatch, m1) { + var bq = m1; + + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + bq = bq.replace(/^[ \t]*>[ \t]?/gm, '~0'); // trim one level of quoting + + // attacklab: clean up hack + bq = bq.replace(/~0/g, ''); + + bq = bq.replace(/^[ \t]+$/gm, ''); // trim whitespace-only lines + bq = showdown.subParser('githubCodeBlocks')(bq, options, globals); + bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse + + bq = bq.replace(/(^|\n)/g, '$1 '); + // These leading spaces screw with

 content, so we need to fix that:
+    bq = bq.replace(/(\s*
[^\r]+?<\/pre>)/gm, function (wholeMatch, m1) {
+      var pre = m1;
+      // attacklab: hack around Konqueror 3.5.4 bug:
+      pre = pre.replace(/^  /mg, '~0');
+      pre = pre.replace(/~0/g, '');
+      return pre;
+    });
+
+    return showdown.subParser('hashBlock')('
\n' + bq + '\n
', options, globals); + }); + + text = globals.converter._dispatch('blockQuotes.after', text, options, globals); + return text; +}); + +/** + * Process Markdown `
` blocks.
+ */
+showdown.subParser('codeBlocks', function (text, options, globals) {
+  'use strict';
+
+  text = globals.converter._dispatch('codeBlocks.before', text, options, globals);
+  /*
+   text = text.replace(text,
+   /(?:\n\n|^)
+   (								// $1 = the code block -- one or more lines, starting with a space/tab
+   (?:
+   (?:[ ]{4}|\t)			// Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
+   .*\n+
+   )+
+   )
+   (\n*[ ]{0,3}[^ \t\n]|(?=~0))	// attacklab: g_tab_width
+   /g,function(){...});
+   */
+
+  // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
+  text += '~0';
+
+  var pattern = /(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g;
+  text = text.replace(pattern, function (wholeMatch, m1, m2) {
+    var codeblock = m1,
+        nextChar = m2,
+        end = '\n';
+
+    codeblock = showdown.subParser('outdent')(codeblock);
+    codeblock = showdown.subParser('encodeCode')(codeblock);
+    codeblock = showdown.subParser('detab')(codeblock);
+    codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines
+    codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing newlines
+
+    if (options.omitExtraWLInCodeBlocks) {
+      end = '';
+    }
+
+    codeblock = '
' + codeblock + end + '
'; + + return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar; + }); + + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + text = globals.converter._dispatch('codeBlocks.after', text, options, globals); + return text; +}); + +/** + * + * * Backtick quotes are used for spans. + * + * * You can use multiple backticks as the delimiters if you want to + * include literal backticks in the code span. So, this input: + * + * Just type ``foo `bar` baz`` at the prompt. + * + * Will translate to: + * + *

Just type foo `bar` baz at the prompt.

+ * + * There's no arbitrary limit to the number of backticks you + * can use as delimters. If you need three consecutive backticks + * in your code, use four for delimiters, etc. + * + * * You can use spaces to get literal backticks at the edges: + * + * ... type `` `bar` `` ... + * + * Turns to: + * + * ... type `bar` ... + */ +showdown.subParser('codeSpans', function (text, options, globals) { + 'use strict'; + + text = globals.converter._dispatch('codeSpans.before', text, options, globals); + + /* + text = text.replace(/ + (^|[^\\]) // Character before opening ` can't be a backslash + (`+) // $2 = Opening run of ` + ( // $3 = The code block + [^\r]*? + [^`] // attacklab: work around lack of lookbehind + ) + \2 // Matching closer + (?!`) + /gm, function(){...}); + */ + + if (typeof(text) === 'undefined') { + text = ''; + } + text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, + function (wholeMatch, m1, m2, m3) { + var c = m3; + c = c.replace(/^([ \t]*)/g, ''); // leading whitespace + c = c.replace(/[ \t]*$/g, ''); // trailing whitespace + c = showdown.subParser('encodeCode')(c); + return m1 + '' + c + ''; + } + ); + + text = globals.converter._dispatch('codeSpans.after', text, options, globals); + return text; +}); + +/** + * Convert all tabs to spaces + */ +showdown.subParser('detab', function (text) { + 'use strict'; + + // expand first n-1 tabs + text = text.replace(/\t(?=\t)/g, ' '); // g_tab_width + + // replace the nth with two sentinels + text = text.replace(/\t/g, '~A~B'); + + // use the sentinel to anchor our regex so it doesn't explode + text = text.replace(/~B(.+?)~A/g, function (wholeMatch, m1) { + var leadingText = m1, + numSpaces = 4 - leadingText.length % 4; // g_tab_width + + // there *must* be a better way to do this: + for (var i = 0; i < numSpaces; i++) { + leadingText += ' '; + } + + return leadingText; + }); + + // clean up sentinels + text = text.replace(/~A/g, ' '); // g_tab_width + text = text.replace(/~B/g, ''); + + return text; + +}); + +/** + * Smart processing for ampersands and angle brackets that need to be encoded. + */ +showdown.subParser('encodeAmpsAndAngles', function (text) { + 'use strict'; + // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: + // http://bumppo.net/projects/amputator/ + text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, '&'); + + // Encode naked <'s + text = text.replace(/<(?![a-z\/?\$!])/gi, '<'); + + return text; +}); + +/** + * Returns the string, with after processing the following backslash escape sequences. + * + * attacklab: The polite way to do this is with the new escapeCharacters() function: + * + * text = escapeCharacters(text,"\\",true); + * text = escapeCharacters(text,"`*_{}[]()>#+-.!",true); + * + * ...but we're sidestepping its use of the (slow) RegExp constructor + * as an optimization for Firefox. This function gets called a LOT. + */ +showdown.subParser('encodeBackslashEscapes', function (text) { + 'use strict'; + text = text.replace(/\\(\\)/g, showdown.helper.escapeCharactersCallback); + text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g, showdown.helper.escapeCharactersCallback); + return text; +}); + +/** + * Encode/escape certain characters inside Markdown code runs. + * The point is that in code, these characters are literals, + * and lose their special Markdown meanings. + */ +showdown.subParser('encodeCode', function (text) { + 'use strict'; + + // Encode all ampersands; HTML entities are not + // entities within a Markdown code span. + text = text.replace(/&/g, '&'); + + // Do the angle bracket song and dance: + text = text.replace(//g, '>'); + + // Now, escape characters that are magic in Markdown: + text = showdown.helper.escapeCharacters(text, '*_{}[]\\', false); + + // jj the line above breaks this: + //--- + //* Item + // 1. Subitem + // special char: * + // --- + + return text; +}); + +/** + * Input: an email address, e.g. "foo@example.com" + * + * Output: the email address as a mailto link, with each character + * of the address encoded as either a decimal or hex entity, in + * the hopes of foiling most address harvesting spam bots. E.g.: + * + * foo + * @example.com + * + * Based on a filter by Matthew Wickline, posted to the BBEdit-Talk + * mailing list: + * + */ +showdown.subParser('encodeEmailAddress', function (addr) { + 'use strict'; + + var encode = [ + function (ch) { + return '&#' + ch.charCodeAt(0) + ';'; + }, + function (ch) { + return '&#x' + ch.charCodeAt(0).toString(16) + ';'; + }, + function (ch) { + return ch; + } + ]; + + addr = 'mailto:' + addr; + + addr = addr.replace(/./g, function (ch) { + if (ch === '@') { + // this *must* be encoded. I insist. + ch = encode[Math.floor(Math.random() * 2)](ch); + } else if (ch !== ':') { + // leave ':' alone (to spot mailto: later) + var r = Math.random(); + // roughly 10% raw, 45% hex, 45% dec + ch = ( + r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch) + ); + } + return ch; + }); + + addr = '' + addr + ''; + addr = addr.replace(/">.+:/g, '">'); // strip the mailto: from the visible part + + return addr; +}); + +/** + * Within tags -- meaning between < and > -- encode [\ ` * _] so they + * don't conflict with their use in Markdown for code, italics and strong. + */ +showdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text) { + 'use strict'; + + // Build a regex to find HTML tags and comments. See Friedl's + // "Mastering Regular Expressions", 2nd Ed., pp. 200-201. + var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi; + + text = text.replace(regex, function (wholeMatch) { + var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g, '$1`'); + tag = showdown.helper.escapeCharacters(tag, '\\`*_', false); + return tag; + }); + + return text; +}); + +/** + * Handle github codeblocks prior to running HashHTML so that + * HTML contained within the codeblock gets escaped properly + * Example: + * ```ruby + * def hello_world(x) + * puts "Hello, #{x}" + * end + * ``` + */ +showdown.subParser('githubCodeBlocks', function (text, options, globals) { + 'use strict'; + + // early exit if option is not enabled + if (!options.ghCodeBlocks) { + return text; + } + + text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals); + + text += '~0'; + + text = text.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g, function (wholeMatch, language, codeblock) { + var end = (options.omitExtraWLInCodeBlocks) ? '' : '\n'; + + // First parse the github code block + codeblock = showdown.subParser('encodeCode')(codeblock); + codeblock = showdown.subParser('detab')(codeblock); + codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines + codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace + + codeblock = '
' + codeblock + end + '
'; + + codeblock = showdown.subParser('hashBlock')(codeblock, options, globals); + + // Since GHCodeblocks can be false positives, we need to + // store the primitive text and the parsed text in a global var, + // and then return a token + return '\n\n~G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\n\n'; + }); + + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals); +}); + +showdown.subParser('hashBlock', function (text, options, globals) { + 'use strict'; + text = text.replace(/(^\n+|\n+$)/g, ''); + return '\n\n~K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\n\n'; +}); + +showdown.subParser('hashElement', function (text, options, globals) { + 'use strict'; + + return function (wholeMatch, m1) { + var blockText = m1; + + // Undo double lines + blockText = blockText.replace(/\n\n/g, '\n'); + blockText = blockText.replace(/^\n/, ''); + + // strip trailing blank lines + blockText = blockText.replace(/\n+$/g, ''); + + // Replace the element text with a marker ("~KxK" where x is its key) + blockText = '\n\n~K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\n\n'; + + return blockText; + }; +}); + +showdown.subParser('hashHTMLBlocks', function (text, options, globals) { + 'use strict'; + + var blockTags = [ + 'pre', + 'div', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'blockquote', + 'table', + 'dl', + 'ol', + 'ul', + 'script', + 'noscript', + 'form', + 'fieldset', + 'iframe', + 'math', + 'style', + 'section', + 'header', + 'footer', + 'nav', + 'article', + 'aside', + 'address', + 'audio', + 'canvas', + 'figure', + 'hgroup', + 'output', + 'video', + 'p' + ], + repFunc = function (wholeMatch, match, left, right) { + var txt = wholeMatch; + // check if this html element is marked as markdown + // if so, it's contents should be parsed as markdown + if (left.search(/\bmarkdown\b/) !== -1) { + txt = left + globals.converter.makeHtml(match) + right; + } + return '\n\n~K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\n\n'; + }; + + for (var i = 0; i < blockTags.length; ++i) { + text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^(?: |\\t){0,3}<' + blockTags[i] + '\\b[^>]*>', '', 'gim'); + } + + // HR SPECIAL CASE + text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, + showdown.subParser('hashElement')(text, options, globals)); + + // Special case for standalone HTML comments: + text = text.replace(/()/g, + showdown.subParser('hashElement')(text, options, globals)); + + // PHP and ASP-style processor instructions ( and <%...%>) + text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, + showdown.subParser('hashElement')(text, options, globals)); + return text; +}); + +/** + * Hash span elements that should not be parsed as markdown + */ +showdown.subParser('hashHTMLSpans', function (text, config, globals) { + 'use strict'; + + var matches = showdown.helper.matchRecursiveRegExp(text, ']*>', '', 'gi'); + + for (var i = 0; i < matches.length; ++i) { + text = text.replace(matches[i][0], '~L' + (globals.gHtmlSpans.push(matches[i][0]) - 1) + 'L'); + } + return text; +}); + +/** + * Unhash HTML spans + */ +showdown.subParser('unhashHTMLSpans', function (text, config, globals) { + 'use strict'; + + for (var i = 0; i < globals.gHtmlSpans.length; ++i) { + text = text.replace('~L' + i + 'L', globals.gHtmlSpans[i]); + } + + return text; +}); + +/** + * Hash span elements that should not be parsed as markdown + */ +showdown.subParser('hashPreCodeTags', function (text, config, globals) { + 'use strict'; + + var repFunc = function (wholeMatch, match, left, right) { + // encode html entities + var codeblock = left + showdown.subParser('encodeCode')(match) + right; + return '\n\n~G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\n\n'; + }; + + text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^(?: |\\t){0,3}]*>\\s*]*>', '^(?: |\\t){0,3}\\s*
', 'gim'); + return text; +}); + +showdown.subParser('headers', function (text, options, globals) { + 'use strict'; + + text = globals.converter._dispatch('headers.before', text, options, globals); + + var prefixHeader = options.prefixHeaderId, + headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart), + + // Set text-style headers: + // Header 1 + // ======== + // + // Header 2 + // -------- + // + setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm, + setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm; + + text = text.replace(setextRegexH1, function (wholeMatch, m1) { + + var spanGamut = showdown.subParser('spanGamut')(m1, options, globals), + hID = (options.noHeaderId) ? '' : ' id="' + headerId(m1) + '"', + hLevel = headerLevelStart, + hashBlock = '' + spanGamut + ''; + return showdown.subParser('hashBlock')(hashBlock, options, globals); + }); + + text = text.replace(setextRegexH2, function (matchFound, m1) { + var spanGamut = showdown.subParser('spanGamut')(m1, options, globals), + hID = (options.noHeaderId) ? '' : ' id="' + headerId(m1) + '"', + hLevel = headerLevelStart + 1, + hashBlock = '' + spanGamut + ''; + return showdown.subParser('hashBlock')(hashBlock, options, globals); + }); + + // atx-style headers: + // # Header 1 + // ## Header 2 + // ## Header 2 with closing hashes ## + // ... + // ###### Header 6 + // + text = text.replace(/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm, function (wholeMatch, m1, m2) { + var span = showdown.subParser('spanGamut')(m2, options, globals), + hID = (options.noHeaderId) ? '' : ' id="' + headerId(m2) + '"', + hLevel = headerLevelStart - 1 + m1.length, + header = '' + span + ''; + + return showdown.subParser('hashBlock')(header, options, globals); + }); + + function headerId(m) { + var title, escapedId = m.replace(/[^\w]/g, '').toLowerCase(); + + if (globals.hashLinkCounts[escapedId]) { + title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++); + } else { + title = escapedId; + globals.hashLinkCounts[escapedId] = 1; + } + + // Prefix id to prevent causing inadvertent pre-existing style matches. + if (prefixHeader === true) { + prefixHeader = 'section'; + } + + if (showdown.helper.isString(prefixHeader)) { + return prefixHeader + title; + } + return title; + } + + text = globals.converter._dispatch('headers.after', text, options, globals); + return text; +}); + +/** + * Turn Markdown image shortcuts into tags. + */ +showdown.subParser('images', function (text, options, globals) { + 'use strict'; + + text = globals.converter._dispatch('images.before', text, options, globals); + + var inlineRegExp = /!\[(.*?)]\s?\([ \t]*()?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(['"])(.*?)\6[ \t]*)?\)/g, + referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[(.*?)]()()()()()/g; + + function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) { + + var gUrls = globals.gUrls, + gTitles = globals.gTitles, + gDims = globals.gDimensions; + + linkId = linkId.toLowerCase(); + + if (!title) { + title = ''; + } + + if (url === '' || url === null) { + if (linkId === '' || linkId === null) { + // lower-case and turn embedded newlines into spaces + linkId = altText.toLowerCase().replace(/ ?\n/g, ' '); + } + url = '#' + linkId; + + if (!showdown.helper.isUndefined(gUrls[linkId])) { + url = gUrls[linkId]; + if (!showdown.helper.isUndefined(gTitles[linkId])) { + title = gTitles[linkId]; + } + if (!showdown.helper.isUndefined(gDims[linkId])) { + width = gDims[linkId].width; + height = gDims[linkId].height; + } + } else { + return wholeMatch; + } + } + + altText = altText.replace(/"/g, '"'); + altText = showdown.helper.escapeCharacters(altText, '*_', false); + url = showdown.helper.escapeCharacters(url, '*_', false); + var result = '' + altText + 'x "optional title") + text = text.replace(inlineRegExp, writeImageTag); + + text = globals.converter._dispatch('images.after', text, options, globals); + return text; +}); + +showdown.subParser('italicsAndBold', function (text, options, globals) { + 'use strict'; + + text = globals.converter._dispatch('italicsAndBold.before', text, options, globals); + + if (options.literalMidWordUnderscores) { + //underscores + // Since we are consuming a \s character, we need to add it + text = text.replace(/(^|\s|>|\b)__(?=\S)([\s\S]+?)__(?=\b|<|\s|$)/gm, '$1$2'); + text = text.replace(/(^|\s|>|\b)_(?=\S)([\s\S]+?)_(?=\b|<|\s|$)/gm, '$1$2'); + //asterisks + text = text.replace(/(\*\*)(?=\S)([^\r]*?\S[*]*)\1/g, '$2'); + text = text.replace(/(\*)(?=\S)([^\r]*?\S)\1/g, '$2'); + + } else { + // must go first: + text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g, '$2'); + text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, '$2'); + } + + text = globals.converter._dispatch('italicsAndBold.after', text, options, globals); + return text; +}); + +/** + * Form HTML ordered (numbered) and unordered (bulleted) lists. + */ +showdown.subParser('lists', function (text, options, globals) { + 'use strict'; + + text = globals.converter._dispatch('lists.before', text, options, globals); + /** + * Process the contents of a single ordered or unordered list, splitting it + * into individual list items. + * @param {string} listStr + * @param {boolean} trimTrailing + * @returns {string} + */ + function processListItems (listStr, trimTrailing) { + // The $g_list_level global keeps track of when we're inside a list. + // Each time we enter a list, we increment it; when we leave a list, + // we decrement. If it's zero, we're not in a list anymore. + // + // We do this because when we're not inside a list, we want to treat + // something like this: + // + // I recommend upgrading to version + // 8. Oops, now this line is treated + // as a sub-list. + // + // As a single paragraph, despite the fact that the second line starts + // with a digit-period-space sequence. + // + // Whereas when we're inside a list (or sub-list), that line will be + // treated as the start of a sub-list. What a kludge, huh? This is + // an aspect of Markdown's syntax that's hard to parse perfectly + // without resorting to mind-reading. Perhaps the solution is to + // change the syntax rules such that sub-lists must start with a + // starting cardinal number; e.g. "1." or "a.". + globals.gListLevel++; + + // trim trailing blank lines: + listStr = listStr.replace(/\n{2,}$/, '\n'); + + // attacklab: add sentinel to emulate \z + listStr += '~0'; + + var rgx = /(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, + isParagraphed = (/\n[ \t]*\n(?!~0)/.test(listStr)); + + listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) { + checked = (checked && checked.trim() !== ''); + var item = showdown.subParser('outdent')(m4, options, globals), + bulletStyle = ''; + + // Support for github tasklists + if (taskbtn && options.tasklists) { + bulletStyle = ' class="task-list-item" style="list-style-type: none;"'; + item = item.replace(/^[ \t]*\[(x|X| )?]/m, function () { + var otp = ' -1)) { + item = showdown.subParser('githubCodeBlocks')(item, options, globals); + item = showdown.subParser('blockGamut')(item, options, globals); + } else { + // Recursion for sub-lists: + item = showdown.subParser('lists')(item, options, globals); + item = item.replace(/\n$/, ''); // chomp(item) + if (isParagraphed) { + item = showdown.subParser('paragraphs')(item, options, globals); + } else { + item = showdown.subParser('spanGamut')(item, options, globals); + } + } + item = '\n' + item + '\n'; + return item; + }); + + // attacklab: strip sentinel + listStr = listStr.replace(/~0/g, ''); + + globals.gListLevel--; + + if (trimTrailing) { + listStr = listStr.replace(/\s+$/, ''); + } + + return listStr; + } + + /** + * Check and parse consecutive lists (better fix for issue #142) + * @param {string} list + * @param {string} listType + * @param {boolean} trimTrailing + * @returns {string} + */ + function parseConsecutiveLists(list, listType, trimTrailing) { + // check if we caught 2 or more consecutive lists by mistake + // we use the counterRgx, meaning if listType is UL we look for UL and vice versa + var counterRxg = (listType === 'ul') ? /^ {0,2}\d+\.[ \t]/gm : /^ {0,2}[*+-][ \t]/gm, + subLists = [], + result = ''; + + if (list.search(counterRxg) !== -1) { + (function parseCL(txt) { + var pos = txt.search(counterRxg); + if (pos !== -1) { + // slice + result += '\n\n<' + listType + '>' + processListItems(txt.slice(0, pos), !!trimTrailing) + '\n\n'; + + // invert counterType and listType + listType = (listType === 'ul') ? 'ol' : 'ul'; + counterRxg = (listType === 'ul') ? /^ {0,2}\d+\.[ \t]/gm : /^ {0,2}[*+-][ \t]/gm; + + //recurse + parseCL(txt.slice(pos)); + } else { + result += '\n\n<' + listType + '>' + processListItems(txt, !!trimTrailing) + '\n\n'; + } + })(list); + for (var i = 0; i < subLists.length; ++i) { + + } + } else { + result = '\n\n<' + listType + '>' + processListItems(list, !!trimTrailing) + '\n\n'; + } + + return result; + } + + // attacklab: add sentinel to hack around khtml/safari bug: + // http://bugs.webkit.org/show_bug.cgi?id=11231 + text += '~0'; + + // Re-usable pattern to match any entire ul or ol list: + var wholeList = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; + + if (globals.gListLevel) { + text = text.replace(wholeList, function (wholeMatch, list, m2) { + var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; + return parseConsecutiveLists(list, listType, true); + }); + } else { + wholeList = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; + //wholeList = /(\n\n|^\n?)( {0,3}([*+-]|\d+\.)[ \t]+[\s\S]+?)(?=(~0)|(\n\n(?!\t| {2,}| {0,3}([*+-]|\d+\.)[ \t])))/g; + text = text.replace(wholeList, function (wholeMatch, m1, list, m3) { + + var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; + return parseConsecutiveLists(list, listType); + }); + } + + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + text = globals.converter._dispatch('lists.after', text, options, globals); + return text; +}); + +/** + * Remove one level of line-leading tabs or spaces + */ +showdown.subParser('outdent', function (text) { + 'use strict'; + + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + text = text.replace(/^(\t|[ ]{1,4})/gm, '~0'); // attacklab: g_tab_width + + // attacklab: clean up hack + text = text.replace(/~0/g, ''); + + return text; +}); + +/** + * + */ +showdown.subParser('paragraphs', function (text, options, globals) { + 'use strict'; + + text = globals.converter._dispatch('paragraphs.before', text, options, globals); + // Strip leading and trailing lines: + text = text.replace(/^\n+/g, ''); + text = text.replace(/\n+$/g, ''); + + var grafs = text.split(/\n{2,}/g), + grafsOut = [], + end = grafs.length; // Wrap

tags + + for (var i = 0; i < end; i++) { + var str = grafs[i]; + // if this is an HTML marker, copy it + if (str.search(/~(K|G)(\d+)\1/g) >= 0) { + grafsOut.push(str); + } else { + str = showdown.subParser('spanGamut')(str, options, globals); + str = str.replace(/^([ \t]*)/g, '

'); + str += '

'; + grafsOut.push(str); + } + } + + /** Unhashify HTML blocks */ + end = grafsOut.length; + for (i = 0; i < end; i++) { + var blockText = '', + grafsOutIt = grafsOut[i], + codeFlag = false; + // if this is a marker for an html block... + while (grafsOutIt.search(/~(K|G)(\d+)\1/) >= 0) { + var delim = RegExp.$1, + num = RegExp.$2; + + if (delim === 'K') { + blockText = globals.gHtmlBlocks[num]; + } else { + // we need to check if ghBlock is a false positive + if (codeFlag) { + // use encoded version of all text + blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text); + } else { + blockText = globals.ghCodeBlocks[num].codeblock; + } + } + blockText = blockText.replace(/\$/g, '$$$$'); // Escape any dollar signs + + grafsOutIt = grafsOutIt.replace(/(\n\n)?~(K|G)\d+\2(\n\n)?/, blockText); + // Check if grafsOutIt is a pre->code + if (/^]*>\s*]*>/.test(grafsOutIt)) { + codeFlag = true; + } + } + grafsOut[i] = grafsOutIt; + } + text = grafsOut.join('\n\n'); + // Strip leading and trailing lines: + text = text.replace(/^\n+/g, ''); + text = text.replace(/\n+$/g, ''); + return globals.converter._dispatch('paragraphs.after', text, options, globals); +}); + +/** + * Run extension + */ +showdown.subParser('runExtension', function (ext, text, options, globals) { + 'use strict'; + + if (ext.filter) { + text = ext.filter(text, globals.converter, options); + + } else if (ext.regex) { + // TODO remove this when old extension loading mechanism is deprecated + var re = ext.regex; + if (!re instanceof RegExp) { + re = new RegExp(re, 'g'); + } + text = text.replace(re, ext.replace); + } + + return text; +}); + +/** + * These are all the transformations that occur *within* block-level + * tags like paragraphs, headers, and list items. + */ +showdown.subParser('spanGamut', function (text, options, globals) { + 'use strict'; + + text = globals.converter._dispatch('spanGamut.before', text, options, globals); + text = showdown.subParser('codeSpans')(text, options, globals); + text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals); + text = showdown.subParser('encodeBackslashEscapes')(text, options, globals); + + // Process anchor and image tags. Images must come first, + // because ![foo][f] looks like an anchor. + text = showdown.subParser('images')(text, options, globals); + text = showdown.subParser('anchors')(text, options, globals); + + // Make links out of things like `` + // Must come after _DoAnchors(), because you can use < and > + // delimiters in inline links like [this](). + text = showdown.subParser('autoLinks')(text, options, globals); + text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals); + text = showdown.subParser('italicsAndBold')(text, options, globals); + text = showdown.subParser('strikethrough')(text, options, globals); + + // Do hard breaks: + text = text.replace(/ +\n/g, '
\n'); + + text = globals.converter._dispatch('spanGamut.after', text, options, globals); + return text; +}); + +showdown.subParser('strikethrough', function (text, options, globals) { + 'use strict'; + + if (options.strikethrough) { + text = globals.converter._dispatch('strikethrough.before', text, options, globals); + text = text.replace(/(?:~T){2}([\s\S]+?)(?:~T){2}/g, '$1'); + text = globals.converter._dispatch('strikethrough.after', text, options, globals); + } + + return text; +}); + +/** + * Strip any lines consisting only of spaces and tabs. + * This makes subsequent regexs easier to write, because we can + * match consecutive blank lines with /\n+/ instead of something + * contorted like /[ \t]*\n+/ + */ +showdown.subParser('stripBlankLines', function (text) { + 'use strict'; + return text.replace(/^[ \t]+$/mg, ''); +}); + +/** + * Strips link definitions from text, stores the URLs and titles in + * hash references. + * Link defs are in the form: ^[id]: url "optional title" + * + * ^[ ]{0,3}\[(.+)\]: // id = $1 attacklab: g_tab_width - 1 + * [ \t]* + * \n? // maybe *one* newline + * [ \t]* + * ? // url = $2 + * [ \t]* + * \n? // maybe one newline + * [ \t]* + * (?: + * (\n*) // any lines skipped = $3 attacklab: lookbehind removed + * ["(] + * (.+?) // title = $4 + * [")] + * [ \t]* + * )? // title is optional + * (?:\n+|$) + * /gm, + * function(){...}); + * + */ +showdown.subParser('stripLinkDefinitions', function (text, options, globals) { + 'use strict'; + + var regex = /^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=~0))/gm; + + // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug + text += '~0'; + + text = text.replace(regex, function (wholeMatch, linkId, url, width, height, blankLines, title) { + linkId = linkId.toLowerCase(); + globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url); // Link IDs are case-insensitive + + if (blankLines) { + // Oops, found blank lines, so it's not a title. + // Put back the parenthetical statement we stole. + return blankLines + title; + + } else { + if (title) { + globals.gTitles[linkId] = title.replace(/"|'/g, '"'); + } + if (options.parseImgDimensions && width && height) { + globals.gDimensions[linkId] = { + width: width, + height: height + }; + } + } + // Completely remove the definition from the text + return ''; + }); + + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + return text; +}); + +showdown.subParser('tables', function (text, options, globals) { + 'use strict'; + + if (!options.tables) { + return text; + } + + var tableRgx = /^[ \t]{0,3}\|?.+\|.+\n[ \t]{0,3}\|?[ \t]*:?[ \t]*(?:-|=){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:-|=){2,}[\s\S]+?(?:\n\n|~0)/gm; + + function parseStyles(sLine) { + if (/^:[ \t]*--*$/.test(sLine)) { + return ' style="text-align:left;"'; + } else if (/^--*[ \t]*:[ \t]*$/.test(sLine)) { + return ' style="text-align:right;"'; + } else if (/^:[ \t]*--*[ \t]*:$/.test(sLine)) { + return ' style="text-align:center;"'; + } else { + return ''; + } + } + + function parseHeaders(header, style) { + var id = ''; + header = header.trim(); + if (options.tableHeaderId) { + id = ' id="' + header.replace(/ /g, '_').toLowerCase() + '"'; + } + header = showdown.subParser('spanGamut')(header, options, globals); + + return '' + header + '\n'; + } + + function parseCells(cell, style) { + var subText = showdown.subParser('spanGamut')(cell, options, globals); + return '' + subText + '\n'; + } + + function buildTable(headers, cells) { + var tb = '\n\n\n', + tblLgn = headers.length; + + for (var i = 0; i < tblLgn; ++i) { + tb += headers[i]; + } + tb += '\n\n\n'; + + for (i = 0; i < cells.length; ++i) { + tb += '\n'; + for (var ii = 0; ii < tblLgn; ++ii) { + tb += cells[i][ii]; + } + tb += '\n'; + } + tb += '\n
\n'; + return tb; + } + + text = globals.converter._dispatch('tables.before', text, options, globals); + + text = text.replace(tableRgx, function (rawTable) { + + var i, tableLines = rawTable.split('\n'); + + // strip wrong first and last column if wrapped tables are used + for (i = 0; i < tableLines.length; ++i) { + if (/^[ \t]{0,3}\|/.test(tableLines[i])) { + tableLines[i] = tableLines[i].replace(/^[ \t]{0,3}\|/, ''); + } + if (/\|[ \t]*$/.test(tableLines[i])) { + tableLines[i] = tableLines[i].replace(/\|[ \t]*$/, ''); + } + } + + var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}), + rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}), + rawCells = [], + headers = [], + styles = [], + cells = []; + + tableLines.shift(); + tableLines.shift(); + + for (i = 0; i < tableLines.length; ++i) { + if (tableLines[i].trim() === '') { + continue; + } + rawCells.push( + tableLines[i] + .split('|') + .map(function (s) { + return s.trim(); + }) + ); + } + + if (rawHeaders.length < rawStyles.length) { + return rawTable; + } + + for (i = 0; i < rawStyles.length; ++i) { + styles.push(parseStyles(rawStyles[i])); + } + + for (i = 0; i < rawHeaders.length; ++i) { + if (showdown.helper.isUndefined(styles[i])) { + styles[i] = ''; + } + headers.push(parseHeaders(rawHeaders[i], styles[i])); + } + + for (i = 0; i < rawCells.length; ++i) { + var row = []; + for (var ii = 0; ii < headers.length; ++ii) { + if (showdown.helper.isUndefined(rawCells[i][ii])) { + + } + row.push(parseCells(rawCells[i][ii], styles[ii])); + } + cells.push(row); + } + + return buildTable(headers, cells); + }); + + text = globals.converter._dispatch('tables.after', text, options, globals); + + return text; +}); + +/** + * Swap back in all the special characters we've hidden. + */ +showdown.subParser('unescapeSpecialChars', function (text) { + 'use strict'; + + text = text.replace(/~E(\d+)E/g, function (wholeMatch, m1) { + var charCodeToReplace = parseInt(m1); + return String.fromCharCode(charCodeToReplace); + }); + return text; +}); +module.exports = showdown; diff --git a/wxParse/wxDiscode.js b/wxParse/wxDiscode.js new file mode 100644 index 0000000..539664e --- /dev/null +++ b/wxParse/wxDiscode.js @@ -0,0 +1,206 @@ +// HTML 支持的数学符号 +function strNumDiscode(str){ + str = str.replace(/∀/g, '∀'); + str = str.replace(/∂/g, '∂'); + str = str.replace(/&exists;/g, '∃'); + str = str.replace(/∅/g, '∅'); + str = str.replace(/∇/g, '∇'); + str = str.replace(/∈/g, '∈'); + str = str.replace(/∉/g, '∉'); + str = str.replace(/∋/g, '∋'); + str = str.replace(/∏/g, '∏'); + str = str.replace(/∑/g, '∑'); + str = str.replace(/−/g, '−'); + str = str.replace(/∗/g, '∗'); + str = str.replace(/√/g, '√'); + str = str.replace(/∝/g, '∝'); + str = str.replace(/∞/g, '∞'); + str = str.replace(/∠/g, '∠'); + str = str.replace(/∧/g, '∧'); + str = str.replace(/∨/g, '∨'); + str = str.replace(/∩/g, '∩'); + str = str.replace(/∩/g, '∪'); + str = str.replace(/∫/g, '∫'); + str = str.replace(/∴/g, '∴'); + str = str.replace(/∼/g, '∼'); + str = str.replace(/≅/g, '≅'); + str = str.replace(/≈/g, '≈'); + str = str.replace(/≠/g, '≠'); + str = str.replace(/≤/g, '≤'); + str = str.replace(/≥/g, '≥'); + str = str.replace(/⊂/g, '⊂'); + str = str.replace(/⊃/g, '⊃'); + str = str.replace(/⊄/g, '⊄'); + str = str.replace(/⊆/g, '⊆'); + str = str.replace(/⊇/g, '⊇'); + str = str.replace(/⊕/g, '⊕'); + str = str.replace(/⊗/g, '⊗'); + str = str.replace(/⊥/g, '⊥'); + str = str.replace(/⋅/g, '⋅'); + return str; +} + +//HTML 支持的希腊字母 +function strGreeceDiscode(str){ + str = str.replace(/Α/g, 'Α'); + str = str.replace(/Β/g, 'Β'); + str = str.replace(/Γ/g, 'Γ'); + str = str.replace(/Δ/g, 'Δ'); + str = str.replace(/Ε/g, 'Ε'); + str = str.replace(/Ζ/g, 'Ζ'); + str = str.replace(/Η/g, 'Η'); + str = str.replace(/Θ/g, 'Θ'); + str = str.replace(/Ι/g, 'Ι'); + str = str.replace(/Κ/g, 'Κ'); + str = str.replace(/Λ/g, 'Λ'); + str = str.replace(/Μ/g, 'Μ'); + str = str.replace(/Ν/g, 'Ν'); + str = str.replace(/Ξ/g, 'Ν'); + str = str.replace(/Ο/g, 'Ο'); + str = str.replace(/Π/g, 'Π'); + str = str.replace(/Ρ/g, 'Ρ'); + str = str.replace(/Σ/g, 'Σ'); + str = str.replace(/Τ/g, 'Τ'); + str = str.replace(/Υ/g, 'Υ'); + str = str.replace(/Φ/g, 'Φ'); + str = str.replace(/Χ/g, 'Χ'); + str = str.replace(/Ψ/g, 'Ψ'); + str = str.replace(/Ω/g, 'Ω'); + + str = str.replace(/α/g, 'α'); + str = str.replace(/β/g, 'β'); + str = str.replace(/γ/g, 'γ'); + str = str.replace(/δ/g, 'δ'); + str = str.replace(/ε/g, 'ε'); + str = str.replace(/ζ/g, 'ζ'); + str = str.replace(/η/g, 'η'); + str = str.replace(/θ/g, 'θ'); + str = str.replace(/ι/g, 'ι'); + str = str.replace(/κ/g, 'κ'); + str = str.replace(/λ/g, 'λ'); + str = str.replace(/μ/g, 'μ'); + str = str.replace(/ν/g, 'ν'); + str = str.replace(/ξ/g, 'ξ'); + str = str.replace(/ο/g, 'ο'); + str = str.replace(/π/g, 'π'); + str = str.replace(/ρ/g, 'ρ'); + str = str.replace(/ς/g, 'ς'); + str = str.replace(/σ/g, 'σ'); + str = str.replace(/τ/g, 'τ'); + str = str.replace(/υ/g, 'υ'); + str = str.replace(/φ/g, 'φ'); + str = str.replace(/χ/g, 'χ'); + str = str.replace(/ψ/g, 'ψ'); + str = str.replace(/ω/g, 'ω'); + str = str.replace(/ϑ/g, 'ϑ'); + str = str.replace(/ϒ/g, 'ϒ'); + str = str.replace(/ϖ/g, 'ϖ'); + str = str.replace(/·/g, '·'); + return str; +} + +// + +function strcharacterDiscode(str){ + // 加入常用解析 + str = str.replace(/ /g, ' '); + str = str.replace(/"/g, "'"); + str = str.replace(/&/g, '&'); + // str = str.replace(/</g, '‹'); + // str = str.replace(/>/g, '›'); + + str = str.replace(/</g, '<'); + str = str.replace(/>/g, '>'); + + return str; +} + +// HTML 支持的其他实体 +function strOtherDiscode(str){ + str = str.replace(/Œ/g, 'Œ'); + str = str.replace(/œ/g, 'œ'); + str = str.replace(/Š/g, 'Š'); + str = str.replace(/š/g, 'š'); + str = str.replace(/Ÿ/g, 'Ÿ'); + str = str.replace(/ƒ/g, 'ƒ'); + str = str.replace(/ˆ/g, 'ˆ'); + str = str.replace(/˜/g, '˜'); + str = str.replace(/ /g, ''); + str = str.replace(/ /g, ''); + str = str.replace(/ /g, ''); + str = str.replace(/‌/g, ''); + str = str.replace(/‍/g, ''); + str = str.replace(/‎/g, ''); + str = str.replace(/‏/g, ''); + str = str.replace(/–/g, '–'); + str = str.replace(/—/g, '—'); + str = str.replace(/‘/g, '‘'); + str = str.replace(/’/g, '’'); + str = str.replace(/‚/g, '‚'); + str = str.replace(/“/g, '“'); + str = str.replace(/”/g, '”'); + str = str.replace(/„/g, '„'); + str = str.replace(/†/g, '†'); + str = str.replace(/‡/g, '‡'); + str = str.replace(/•/g, '•'); + str = str.replace(/…/g, '…'); + str = str.replace(/‰/g, '‰'); + str = str.replace(/′/g, '′'); + str = str.replace(/″/g, '″'); + str = str.replace(/‹/g, '‹'); + str = str.replace(/›/g, '›'); + str = str.replace(/‾/g, '‾'); + str = str.replace(/€/g, '€'); + str = str.replace(/™/g, '™'); + + str = str.replace(/←/g, '←'); + str = str.replace(/↑/g, '↑'); + str = str.replace(/→/g, '→'); + str = str.replace(/↓/g, '↓'); + str = str.replace(/↔/g, '↔'); + str = str.replace(/↵/g, '↵'); + str = str.replace(/⌈/g, '⌈'); + str = str.replace(/⌉/g, '⌉'); + + str = str.replace(/⌊/g, '⌊'); + str = str.replace(/⌋/g, '⌋'); + str = str.replace(/◊/g, '◊'); + str = str.replace(/♠/g, '♠'); + str = str.replace(/♣/g, '♣'); + str = str.replace(/♥/g, '♥'); + + str = str.replace(/♦/g, '♦'); + str = str.replace(/'/g, '\''); + return str; +} + +function strMoreDiscode(str){ + str = str.replace(/\r\n/g,""); + str = str.replace(/\n/g,""); + + str = str.replace(/code/g,"wxxxcode-style"); + return str; +} + +function strDiscode(str){ + str = strNumDiscode(str); + str = strGreeceDiscode(str); + str = strcharacterDiscode(str); + str = strOtherDiscode(str); + str = strMoreDiscode(str); + return str; +} +function urlToHttpUrl(url,rep){ + + var patt1 = new RegExp("^//"); + var result = patt1.test(url); + if(result){ + url = rep+":"+url; + } + return url; +} + +module.exports = { + strDiscode:strDiscode, + urlToHttpUrl:urlToHttpUrl +} \ No newline at end of file diff --git a/wxParse/wxParse.js b/wxParse/wxParse.js new file mode 100644 index 0000000..0544baf --- /dev/null +++ b/wxParse/wxParse.js @@ -0,0 +1,159 @@ +/** + * author: Di (微信小程序开发工程师) + * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) + * 垂直微信小程序开发交流社区 + * + * github地址: https://github.com/icindy/wxParse + * + * for: 微信小程序富文本解析 + * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 + */ + +/** + * utils函数引入 + **/ +import showdown from './showdown.js'; +import HtmlToJson from './html2json.js'; +/** + * 配置及公有属性 + **/ +var realWindowWidth = 0; +var realWindowHeight = 0; +wx.getSystemInfo({ + success: function (res) { + realWindowWidth = res.windowWidth + realWindowHeight = res.windowHeight + } +}) +/** + * 主函数入口区 + **/ +function wxParse(bindName = 'wxParseData', type='html', data='
数据不能为空
', target,imagePadding) { + var that = target; + var transData = {};//存放转化后的数据 + if (type == 'html') { + transData = HtmlToJson.html2json(data, bindName); + //console.log(JSON.stringify(transData, ' ', ' ')); + } else if (type == 'md' || type == 'markdown') { + var converter = new showdown.Converter(); + var html = converter.makeHtml(data); + transData = HtmlToJson.html2json(html, bindName); + //console.log(JSON.stringify(transData, ' ', ' ')); + } + transData.view = {}; + transData.view.imagePadding = 0; + if(typeof(imagePadding) != 'undefined'){ + transData.view.imagePadding = imagePadding + } + var bindData = {}; + bindData[bindName] = transData; + that.setData(bindData) + that.wxParseImgLoad = wxParseImgLoad; + that.wxParseImgTap = wxParseImgTap; +} +// 图片点击事件 +function wxParseImgTap(e) { + // var that = this; + // var nowImgUrl = e.target.dataset.src; + // var tagFrom = e.target.dataset.from; + // if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) { + // wx.previewImage({ + // current: nowImgUrl, // 当前显示图片的http链接 + // urls: that.data[tagFrom].imageUrls // 需要预览的图片http链接列表 + // }) + // } +} + +/** + * 图片视觉宽高计算函数区 + **/ +function wxParseImgLoad(e) { + var that = this; + var tagFrom = e.target.dataset.from; + var idx = e.target.dataset.idx; + if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) { + calMoreImageInfo(e, idx, that, tagFrom) + } +} +// 假循环获取计算图片视觉最佳宽高 +function calMoreImageInfo(e, idx, that, bindName) { + var temData = that.data[bindName]; + if (!temData || temData.images.length == 0) { + return; + } + var temImages = temData.images; + //因为无法获取view宽度 需要自定义padding进行计算,稍后处理 + var recal = wxAutoImageCal(e.detail.width, e.detail.height,that,bindName); + // temImages[idx].width = recal.imageWidth; + // temImages[idx].height = recal.imageheight; + // temData.images = temImages; + // var bindData = {}; + // bindData[bindName] = temData; + // that.setData(bindData); + var index = temImages[idx].index + var key = `${bindName}` + for (var i of index.split('.')) key+=`.nodes[${i}]` + var keyW = key + '.width' + var keyH = key + '.height' + that.setData({ + [keyW]: recal.imageWidth, + [keyH]: recal.imageheight, + }) +} + +// 计算视觉优先的图片宽高 +function wxAutoImageCal(originalWidth, originalHeight,that,bindName) { + //获取图片的原始长宽 + var windowWidth = 0, windowHeight = 0; + var autoWidth = 0, autoHeight = 0; + var results = {}; + var padding = that.data[bindName].view.imagePadding; + windowWidth = realWindowWidth-2*padding; + windowHeight = realWindowHeight; + //判断按照那种方式进行缩放 + // console.log("windowWidth" + windowWidth); + if (originalWidth > windowWidth) {//在图片width大于手机屏幕width时候 + autoWidth = windowWidth; + // console.log("autoWidth" + autoWidth); + autoHeight = (autoWidth * originalHeight) / originalWidth; + // console.log("autoHeight" + autoHeight); + results.imageWidth = autoWidth; + results.imageheight = autoHeight; + } else {//否则展示原来的数据 + results.imageWidth = originalWidth; + results.imageheight = originalHeight; + } + return results; +} + +function wxParseTemArray(temArrayName,bindNameReg,total,that){ + var array = []; + var temData = that.data; + var obj = null; + for(var i = 0; i < total; i++){ + var simArr = temData[bindNameReg+i].nodes; + array.push(simArr); + } + + temArrayName = temArrayName || 'wxParseTemArray'; + obj = JSON.parse('{"'+ temArrayName +'":""}'); + obj[temArrayName] = array; + that.setData(obj); +} + +/** + * 配置emojis + * + */ + +function emojisInit(reg='',baseSrc="/wxParse/emojis/",emojis){ + HtmlToJson.emojisInit(reg,baseSrc,emojis); +} + +module.exports = { + wxParse: wxParse, + wxParseTemArray:wxParseTemArray, + emojisInit:emojisInit +} + + diff --git a/wxParse/wxParse.wxml b/wxParse/wxParse.wxml new file mode 100644 index 0000000..698de60 --- /dev/null +++ b/wxParse/wxParse.wxml @@ -0,0 +1,928 @@ + + + + + + + + + + + + +