liukang 2 tahun lalu
induk
melakukan
76a9a2f146
100 mengubah file dengan 6206 tambahan dan 12078 penghapusan
  1. 0 10265
      jxtxkj/components/wangding-pickerAddress/data.js
  2. 0 103
      jxtxkj/components/wangding-pickerAddress/wangding-pickerAddress.vue
  3. 1 0
      jxtxkj/main.js
  4. 6 3
      jxtxkj/manifest.json
  5. 19 19
      jxtxkj/pages.json
  6. 66 25
      jxtxkj/pages/index/course/buy.vue
  7. 317 176
      jxtxkj/pages/index/course/detail.vue
  8. 23 7
      jxtxkj/pages/index/declare/declare.vue
  9. 2 2
      jxtxkj/pages/index/declare/declare_success.vue
  10. 176 322
      jxtxkj/pages/index/exam/exam.vue
  11. 98 120
      jxtxkj/pages/index/exam/parse.vue
  12. 44 58
      jxtxkj/pages/index/exam/submit.vue
  13. 122 83
      jxtxkj/pages/index/index.vue
  14. 117 94
      jxtxkj/pages/index/search/search.vue
  15. 281 111
      jxtxkj/pages/integral/integral.vue
  16. 1 1
      jxtxkj/pages/login/choose.vue
  17. 22 2
      jxtxkj/pages/login/forget.vue
  18. 42 11
      jxtxkj/pages/login/login.vue
  19. 89 26
      jxtxkj/pages/login/register.vue
  20. 49 66
      jxtxkj/pages/mine/allCourse.vue
  21. 37 6
      jxtxkj/pages/mine/certificate.vue
  22. 28 12
      jxtxkj/pages/mine/change.vue
  23. 69 43
      jxtxkj/pages/mine/collect.vue
  24. 68 33
      jxtxkj/pages/mine/comment.vue
  25. 74 87
      jxtxkj/pages/mine/exam/exam.vue
  26. 97 129
      jxtxkj/pages/mine/exam/wrong.vue
  27. 97 74
      jxtxkj/pages/mine/mine.vue
  28. 76 34
      jxtxkj/pages/mine/order/apply.vue
  29. 30 43
      jxtxkj/pages/mine/order/detail.vue
  30. 71 43
      jxtxkj/pages/mine/order/order.vue
  31. 48 16
      jxtxkj/pages/mine/password/editPassword.vue
  32. 2 2
      jxtxkj/pages/mine/password/success.vue
  33. 206 62
      jxtxkj/pages/mine/personal.vue
  34. TEMPAT SAMPAH
      jxtxkj/static/images/common/collect_none.png
  35. TEMPAT SAMPAH
      jxtxkj/static/images/common/comment_none.png
  36. TEMPAT SAMPAH
      jxtxkj/static/images/common/exam_none.png
  37. TEMPAT SAMPAH
      jxtxkj/static/images/common/order_none.png
  38. TEMPAT SAMPAH
      jxtxkj/static/images/common/search_none.png
  39. TEMPAT SAMPAH
      jxtxkj/static/images/common/see_none.png
  40. TEMPAT SAMPAH
      jxtxkj/static/images/index/certificate.png
  41. TEMPAT SAMPAH
      jxtxkj/static/images/index/empty-list.png
  42. TEMPAT SAMPAH
      jxtxkj/static/images/index/product.jpg
  43. TEMPAT SAMPAH
      jxtxkj/static/images/index/swiper_item.png
  44. TEMPAT SAMPAH
      jxtxkj/static/images/logo.jpg
  45. TEMPAT SAMPAH
      jxtxkj/static/images/mine/certificate.jpg
  46. 1991 0
      jxtxkj/static/js/api.js
  47. 102 0
      jxtxkj/static/js/cache.js
  48. 618 0
      jxtxkj/static/js/calendar.js
  49. 259 0
      jxtxkj/static/js/encrypt.js
  50. 110 0
      jxtxkj/static/js/math.js
  51. 742 0
      jxtxkj/static/js/qqmap-wx-jssdk.js
  52. 6 0
      jxtxkj/static/js/weapp.qrcode.min.js
  53. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  54. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  55. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  56. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/components/tki-qrcode/tki-qrcode.js.map
  57. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-avatar/u-avatar.js.map
  58. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.js.map
  59. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-button/u-button.js.map
  60. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-checkbox-group/u-checkbox-group.js.map
  61. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-checkbox/u-checkbox.js.map
  62. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-code/u-code.js.map
  63. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-count-down/u-count-down.js.map
  64. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-form-item/u-form-item.js.map
  65. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js.map
  66. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-image/u-image.js.map
  67. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-input/u-input.js.map
  68. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-line-progress/u-line-progress.js.map
  69. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js.map
  70. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-link/u-link.js.map
  71. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js.map
  72. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js.map
  73. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-navbar/u-navbar.js.map
  74. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js.map
  75. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-parse/node/node.js.map
  76. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-parse/u-parse.js.map
  77. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js.map
  78. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-radio-group/u-radio-group.js.map
  79. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-radio/u-radio.js.map
  80. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js.map
  81. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js.map
  82. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-swiper-indicator/u-swiper-indicator.js.map
  83. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-swiper/u-swiper.js.map
  84. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.js.map
  85. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-text/u-text.js.map
  86. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js.map
  87. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/course/buy.js.map
  88. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/course/detail.js.map
  89. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/declare/declare.js.map
  90. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/declare/declare_success.js.map
  91. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/exam/exam.js.map
  92. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/exam/parse.js.map
  93. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/exam/submit.js.map
  94. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  95. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/search/search.js.map
  96. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/integral/integral.js.map
  97. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/choose.js.map
  98. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/forget.js.map
  99. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map
  100. 0 0
      jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/register.js.map

+ 0 - 10265
jxtxkj/components/wangding-pickerAddress/data.js

@@ -1,10265 +0,0 @@
-export default [
-	 {
-		"provinceCode": "110000",
-		"provinceName": "北京",
-		"city": [{
-			"cityCode": "110000-1",
-			"cityName": "北京市",
-			"county": [{
-				"countyCode": "110115",
-				"countyName": "大兴区"
-			}, {
-				"countyCode": "110116",
-				"countyName": "怀柔区"
-			}, {
-				"countyCode": "110105",
-				"countyName": "朝阳区"
-			}, {
-				"countyCode": "110229",
-				"countyName": "延庆区"
-			}, {
-				"countyCode": "110114",
-				"countyName": "昌平区"
-			}, {
-				"countyCode": "110108",
-				"countyName": "海淀区"
-			}, {
-				"countyCode": "110107",
-				"countyName": "石景山区"
-			}, {
-				"countyCode": "110112",
-				"countyName": "通州区"
-			}, {
-				"countyCode": "110228",
-				"countyName": "密云区"
-			}, {
-				"countyCode": "110117",
-				"countyName": "平谷区"
-			}, {
-				"countyCode": "110109",
-				"countyName": "门头沟区"
-			}, {
-				"countyCode": "110113",
-				"countyName": "顺义区"
-			}, {
-				"countyCode": "110106",
-				"countyName": "丰台区"
-			}, {
-				"countyCode": "110111",
-				"countyName": "房山区"
-			}, {
-				"countyCode": "110101",
-				"countyName": "东城区"
-			}, {
-				"countyCode": "110102",
-				"countyName": "西城区"
-			}]
-		}]
-	}, {
-		"provinceCode": "120000",
-		"provinceName": "天津",
-		"city": [{
-			"cityCode": "120000-1",
-			"cityName": "天津市",
-			"county": [{
-				"countyCode": "120103",
-				"countyName": "河西区"
-			}, {
-				"countyCode": "120106",
-				"countyName": "红桥区"
-			}, {
-				"countyCode": "120223",
-				"countyName": "静海区"
-			}, {
-				"countyCode": "120114",
-				"countyName": "武清区"
-			}, {
-				"countyCode": "120110",
-				"countyName": "东丽区"
-			}, {
-				"countyCode": "120111",
-				"countyName": "西青区"
-			}, {
-				"countyCode": "120225",
-				"countyName": "蓟州区"
-			}, {
-				"countyCode": "120116",
-				"countyName": "滨海新区"
-			}, {
-				"countyCode": "120113",
-				"countyName": "北辰区"
-			}, {
-				"countyCode": "120115",
-				"countyName": "宝坻区"
-			}, {
-				"countyCode": "120101",
-				"countyName": "和平区"
-			}, {
-				"countyCode": "120112",
-				"countyName": "津南区"
-			}, {
-				"countyCode": "120221",
-				"countyName": "宁河区"
-			}, {
-				"countyCode": "120104",
-				"countyName": "南开区"
-			}, {
-				"countyCode": "120105",
-				"countyName": "河北区"
-			}, {
-				"countyCode": "120102",
-				"countyName": "河东区"
-			}]
-		}]
-	}, {
-		"provinceCode": "130000",
-		"provinceName": "河北省",
-		"city": [{
-			"cityCode": "130400",
-			"cityName": "邯郸市",
-			"county": [{
-				"countyCode": "130404",
-				"countyName": "复兴区"
-			}, {
-				"countyCode": "130424",
-				"countyName": "成安县"
-			}, {
-				"countyCode": "130403",
-				"countyName": "丛台区"
-			}, {
-				"countyCode": "130402",
-				"countyName": "邯山区"
-			}, {
-				"countyCode": "130434",
-				"countyName": "魏县"
-			}, {
-				"countyCode": "130429",
-				"countyName": "永年区"
-			}, {
-				"countyCode": "130427",
-				"countyName": "磁县"
-			}, {
-				"countyCode": "130433",
-				"countyName": "馆陶县"
-			}, {
-				"countyCode": "130421",
-				"countyName": "邯郸县"
-			}, {
-				"countyCode": "130435",
-				"countyName": "曲周县"
-			}, {
-				"countyCode": "130425",
-				"countyName": "大名县"
-			}, {
-				"countyCode": "130426",
-				"countyName": "涉县"
-			}, {
-				"countyCode": "130423",
-				"countyName": "临漳县"
-			}, {
-				"countyCode": "130431",
-				"countyName": "鸡泽县"
-			}, {
-				"countyCode": "130406",
-				"countyName": "峰峰矿区"
-			}, {
-				"countyCode": "130430",
-				"countyName": "邱县"
-			}, {
-				"countyCode": "130428",
-				"countyName": "肥乡区"
-			}, {
-				"countyCode": "130432",
-				"countyName": "广平县"
-			}, {
-				"countyCode": "130481",
-				"countyName": "武安市"
-			}]
-		}, {
-			"cityCode": "131100",
-			"cityName": "衡水市",
-			"county": [{
-				"countyCode": "131127",
-				"countyName": "景县"
-			}, {
-				"countyCode": "131102",
-				"countyName": "桃城区"
-			}, {
-				"countyCode": "131128",
-				"countyName": "阜城县"
-			}, {
-				"countyCode": "131125",
-				"countyName": "安平县"
-			}, {
-				"countyCode": "131121",
-				"countyName": "枣强县"
-			}, {
-				"countyCode": "131123",
-				"countyName": "武强县"
-			}, {
-				"countyCode": "131122",
-				"countyName": "武邑县"
-			}, {
-				"countyCode": "131181",
-				"countyName": "冀州区"
-			}, {
-				"countyCode": "131126",
-				"countyName": "故城县"
-			}, {
-				"countyCode": "131124",
-				"countyName": "饶阳县"
-			}, {
-				"countyCode": "131182",
-				"countyName": "深州市"
-			}]
-		}, {
-			"cityCode": "130900",
-			"cityName": "沧州市",
-			"county": [{
-				"countyCode": "130930",
-				"countyName": "孟村回族自治县"
-			}, {
-				"countyCode": "130923",
-				"countyName": "东光县"
-			}, {
-				"countyCode": "130981",
-				"countyName": "泊头市"
-			}, {
-				"countyCode": "130924",
-				"countyName": "海兴县"
-			}, {
-				"countyCode": "130927",
-				"countyName": "南皮县"
-			}, {
-				"countyCode": "130922",
-				"countyName": "青县"
-			}, {
-				"countyCode": "130902",
-				"countyName": "新华区"
-			}, {
-				"countyCode": "130925",
-				"countyName": "盐山县"
-			}, {
-				"countyCode": "130903",
-				"countyName": "运河区"
-			}, {
-				"countyCode": "130921",
-				"countyName": "沧县"
-			}, {
-				"countyCode": "130984",
-				"countyName": "河间市"
-			}, {
-				"countyCode": "130926",
-				"countyName": "肃宁县"
-			}, {
-				"countyCode": "130982",
-				"countyName": "任丘市"
-			}, {
-				"countyCode": "130983",
-				"countyName": "黄骅市"
-			}, {
-				"countyCode": "130928",
-				"countyName": "吴桥县"
-			}, {
-				"countyCode": "130929",
-				"countyName": "献县"
-			}]
-		}, {
-			"cityCode": "130200",
-			"cityName": "唐山市",
-			"county": [{
-				"countyCode": "130207",
-				"countyName": "丰南区"
-			}, {
-				"countyCode": "130204",
-				"countyName": "古冶区"
-			}, {
-				"countyCode": "130224",
-				"countyName": "滦南县"
-			}, {
-				"countyCode": "130209",
-				"countyName": "曹妃甸区"
-			}, {
-				"countyCode": "130202",
-				"countyName": "路南区"
-			}, {
-				"countyCode": "130208",
-				"countyName": "丰润区"
-			}, {
-				"countyCode": "130203",
-				"countyName": "路北区"
-			}, {
-				"countyCode": "130281",
-				"countyName": "遵化市"
-			}, {
-				"countyCode": "130205",
-				"countyName": "开平区"
-			}, {
-				"countyCode": "130283",
-				"countyName": "迁安市"
-			}, {
-				"countyCode": "130227",
-				"countyName": "迁西县"
-			}, {
-				"countyCode": "130229",
-				"countyName": "玉田县"
-			}, {
-				"countyCode": "130225",
-				"countyName": "乐亭县"
-			}, {
-				"countyCode": "130223",
-				"countyName": "滦州市"
-			}]
-		}, {
-			"cityCode": "130700",
-			"cityName": "张家口市",
-			"county": [{
-				"countyCode": "130728",
-				"countyName": "怀安县"
-			}, {
-				"countyCode": "130723",
-				"countyName": "康保县"
-			}, {
-				"countyCode": "130702",
-				"countyName": "桥东区"
-			}, {
-				"countyCode": "130732",
-				"countyName": "赤城县"
-			}, {
-				"countyCode": "130733",
-				"countyName": "崇礼区"
-			}, {
-				"countyCode": "130727",
-				"countyName": "阳原县"
-			}, {
-				"countyCode": "130731",
-				"countyName": "涿鹿县"
-			}, {
-				"countyCode": "130705",
-				"countyName": "宣化区"
-			}, {
-				"countyCode": "130722",
-				"countyName": "张北县"
-			}, {
-				"countyCode": "130729",
-				"countyName": "万全区"
-			}, {
-				"countyCode": "130724",
-				"countyName": "沽源县"
-			}, {
-				"countyCode": "130703",
-				"countyName": "桥西区"
-			}, {
-				"countyCode": "130706",
-				"countyName": "下花园区"
-			}, {
-				"countyCode": "130730",
-				"countyName": "怀来县"
-			}, {
-				"countyCode": "130725",
-				"countyName": "尚义县"
-			}, {
-				"countyCode": "130726",
-				"countyName": "蔚县"
-			}, {
-				"countyCode": "130721",
-				"countyName": "宣化县"
-			}]
-		}, {
-			"cityCode": "131000",
-			"cityName": "廊坊市",
-			"county": [{
-				"countyCode": "131002",
-				"countyName": "安次区"
-			}, {
-				"countyCode": "131082",
-				"countyName": "三河市"
-			}, {
-				"countyCode": "131025",
-				"countyName": "大城县"
-			}, {
-				"countyCode": "131023",
-				"countyName": "永清县"
-			}, {
-				"countyCode": "131028",
-				"countyName": "大厂回族自治县"
-			}, {
-				"countyCode": "131022",
-				"countyName": "固安县"
-			}, {
-				"countyCode": "131003",
-				"countyName": "广阳区"
-			}, {
-				"countyCode": "131081",
-				"countyName": "霸州市"
-			}, {
-				"countyCode": "131026",
-				"countyName": "文安县"
-			}, {
-				"countyCode": "131024",
-				"countyName": "香河县"
-			}]
-		}, {
-			"cityCode": "130300",
-			"cityName": "秦皇岛市",
-			"county": [{
-				"countyCode": "130323",
-				"countyName": "抚宁区"
-			}, {
-				"countyCode": "130321",
-				"countyName": "青龙满族自治县"
-			}, {
-				"countyCode": "130303",
-				"countyName": "山海关区"
-			}, {
-				"countyCode": "130304",
-				"countyName": "北戴河区"
-			}, {
-				"countyCode": "130302",
-				"countyName": "海港区"
-			}, {
-				"countyCode": "130322",
-				"countyName": "昌黎县"
-			}, {
-				"countyCode": "130324",
-				"countyName": "卢龙县"
-			}]
-		}, {
-			"cityCode": "130500",
-			"cityName": "邢台市",
-			"county": [{
-				"countyCode": "130533",
-				"countyName": "威县"
-			}, {
-				"countyCode": "130532",
-				"countyName": "平乡县"
-			}, {
-				"countyCode": "130527",
-				"countyName": "南和县"
-			}, {
-				"countyCode": "130521",
-				"countyName": "邢台县"
-			}, {
-				"countyCode": "130524",
-				"countyName": "柏乡县"
-			}, {
-				"countyCode": "130522",
-				"countyName": "临城县"
-			}, {
-				"countyCode": "130530",
-				"countyName": "新河县"
-			}, {
-				"countyCode": "130534",
-				"countyName": "清河县"
-			}, {
-				"countyCode": "130582",
-				"countyName": "沙河市"
-			}, {
-				"countyCode": "130531",
-				"countyName": "广宗县"
-			}, {
-				"countyCode": "130525",
-				"countyName": "隆尧县"
-			}, {
-				"countyCode": "130529",
-				"countyName": "巨鹿县"
-			}, {
-				"countyCode": "130523",
-				"countyName": "内丘县"
-			}, {
-				"countyCode": "130528",
-				"countyName": "宁晋县"
-			}, {
-				"countyCode": "130526",
-				"countyName": "任县"
-			}, {
-				"countyCode": "130581",
-				"countyName": "南宫市"
-			}, {
-				"countyCode": "130535",
-				"countyName": "临西县"
-			}, {
-				"countyCode": "130502",
-				"countyName": "桥东区"
-			}, {
-				"countyCode": "130503",
-				"countyName": "桥西区"
-			}]
-		}, {
-			"cityCode": "130100",
-			"cityName": "石家庄市",
-			"county": [{
-				"countyCode": "130125",
-				"countyName": "行唐县"
-			}, {
-				"countyCode": "130185",
-				"countyName": "鹿泉区"
-			}, {
-				"countyCode": "130123",
-				"countyName": "正定县"
-			}, {
-				"countyCode": "130107",
-				"countyName": "井陉矿区"
-			}, {
-				"countyCode": "130102",
-				"countyName": "长安区"
-			}, {
-				"countyCode": "130184",
-				"countyName": "新乐市"
-			}, {
-				"countyCode": "130183",
-				"countyName": "晋州市"
-			}, {
-				"countyCode": "130128",
-				"countyName": "深泽县"
-			}, {
-				"countyCode": "130181",
-				"countyName": "辛集市"
-			}, {
-				"countyCode": "130124",
-				"countyName": "栾城区"
-			}, {
-				"countyCode": "130126",
-				"countyName": "灵寿县"
-			}, {
-				"countyCode": "130104",
-				"countyName": "桥西区"
-			}, {
-				"countyCode": "130130",
-				"countyName": "无极县"
-			}, {
-				"countyCode": "130108",
-				"countyName": "裕华区"
-			}, {
-				"countyCode": "130129",
-				"countyName": "赞皇县"
-			}, {
-				"countyCode": "130133",
-				"countyName": "赵县"
-			}, {
-				"countyCode": "130182",
-				"countyName": "藁城区"
-			}, {
-				"countyCode": "130127",
-				"countyName": "高邑县"
-			}, {
-				"countyCode": "130132",
-				"countyName": "元氏县"
-			}, {
-				"countyCode": "130131",
-				"countyName": "平山县"
-			}, {
-				"countyCode": "130121",
-				"countyName": "井陉县"
-			}, {
-				"countyCode": "130105",
-				"countyName": "新华区"
-			}]
-		}, {
-			"cityCode": "130800",
-			"cityName": "承德市",
-			"county": [{
-				"countyCode": "130803",
-				"countyName": "双滦区"
-			}, {
-				"countyCode": "130827",
-				"countyName": "宽城满族自治县"
-			}, {
-				"countyCode": "130802",
-				"countyName": "双桥区"
-			}, {
-				"countyCode": "130826",
-				"countyName": "丰宁满族自治县"
-			}, {
-				"countyCode": "130821",
-				"countyName": "承德县"
-			}, {
-				"countyCode": "130828",
-				"countyName": "围场满族蒙古族自治县"
-			}, {
-				"countyCode": "130822",
-				"countyName": "兴隆县"
-			}, {
-				"countyCode": "130825",
-				"countyName": "隆化县"
-			}, {
-				"countyCode": "130823",
-				"countyName": "平泉市"
-			}, {
-				"countyCode": "130804",
-				"countyName": "鹰手营子矿区"
-			}, {
-				"countyCode": "130824",
-				"countyName": "滦平县"
-			}]
-		}, {
-			"cityCode": "130600",
-			"cityName": "保定市",
-			"county": [{
-				"countyCode": "130638",
-				"countyName": "雄县"
-			}, {
-				"countyCode": "130625",
-				"countyName": "徐水区"
-			}, {
-				"countyCode": "130682",
-				"countyName": "定州市"
-			}, {
-				"countyCode": "130631",
-				"countyName": "望都县"
-			}, {
-				"countyCode": "130630",
-				"countyName": "涞源县"
-			}, {
-				"countyCode": "130621",
-				"countyName": "满城区"
-			}, {
-				"countyCode": "130626",
-				"countyName": "定兴县"
-			}, {
-				"countyCode": "130624",
-				"countyName": "阜平县"
-			}, {
-				"countyCode": "130636",
-				"countyName": "顺平县"
-			}, {
-				"countyCode": "130627",
-				"countyName": "唐县"
-			}, {
-				"countyCode": "130623",
-				"countyName": "涞水县"
-			}, {
-				"countyCode": "130629",
-				"countyName": "容城县"
-			}, {
-				"countyCode": "130634",
-				"countyName": "曲阳县"
-			}, {
-				"countyCode": "130637",
-				"countyName": "博野县"
-			}, {
-				"countyCode": "130622",
-				"countyName": "清苑区"
-			}, {
-				"countyCode": "130632",
-				"countyName": "安新县"
-			}, {
-				"countyCode": "130684",
-				"countyName": "高碑店市"
-			}, {
-				"countyCode": "130633",
-				"countyName": "易县"
-			}, {
-				"countyCode": "130628",
-				"countyName": "高阳县"
-			}, {
-				"countyCode": "130683",
-				"countyName": "安国市"
-			}, {
-				"countyCode": "130604",
-				"countyName": "南市区"
-			}, {
-				"countyCode": "130603",
-				"countyName": "北市区"
-			}, {
-				"countyCode": "130681",
-				"countyName": "涿州市"
-			}, {
-				"countyCode": "130635",
-				"countyName": "蠡县"
-			}, {
-				"countyCode": "130602",
-				"countyName": "竞秀区"
-			}, {
-				"countyCode": "130606",
-				"countyName": "莲池区"
-			}]
-		}]
-	}, {
-		"provinceCode": "140000",
-		"provinceName": "山西省",
-		"city": [{
-			"cityCode": "141000",
-			"cityName": "临汾市",
-			"county": [{
-				"countyCode": "141033",
-				"countyName": "蒲县"
-			}, {
-				"countyCode": "141025",
-				"countyName": "古县"
-			}, {
-				"countyCode": "141034",
-				"countyName": "汾西县"
-			}, {
-				"countyCode": "141027",
-				"countyName": "浮山县"
-			}, {
-				"countyCode": "141021",
-				"countyName": "曲沃县"
-			}, {
-				"countyCode": "141032",
-				"countyName": "永和县"
-			}, {
-				"countyCode": "141082",
-				"countyName": "霍州市"
-			}, {
-				"countyCode": "141028",
-				"countyName": "吉县"
-			}, {
-				"countyCode": "141022",
-				"countyName": "翼城县"
-			}, {
-				"countyCode": "141030",
-				"countyName": "大宁县"
-			}, {
-				"countyCode": "141081",
-				"countyName": "侯马市"
-			}, {
-				"countyCode": "141002",
-				"countyName": "尧都区"
-			}, {
-				"countyCode": "141026",
-				"countyName": "安泽县"
-			}, {
-				"countyCode": "141024",
-				"countyName": "洪洞县"
-			}, {
-				"countyCode": "141023",
-				"countyName": "襄汾县"
-			}, {
-				"countyCode": "141029",
-				"countyName": "乡宁县"
-			}, {
-				"countyCode": "141031",
-				"countyName": "隰县"
-			}]
-		}, {
-			"cityCode": "140200",
-			"cityName": "大同市",
-			"county": [{
-				"countyCode": "140223",
-				"countyName": "广灵县"
-			}, {
-				"countyCode": "140203",
-				"countyName": "矿区"
-			}, {
-				"countyCode": "140212",
-				"countyName": "新荣区"
-			}, {
-				"countyCode": "140224",
-				"countyName": "灵丘县"
-			}, {
-				"countyCode": "140222",
-				"countyName": "天镇县"
-			}, {
-				"countyCode": "140213",
-				"countyName": "平城区"
-			}, {
-				"countyCode": "140227",
-				"countyName": "云州区"
-			}, {
-				"countyCode": "140202",
-				"countyName": "城区"
-			}, {
-				"countyCode": "140225",
-				"countyName": "浑源县"
-			}, {
-				"countyCode": "140221",
-				"countyName": "阳高县"
-			}, {
-				"countyCode": "140211",
-				"countyName": "南郊区"
-			}, {
-				"countyCode": "140214",
-				"countyName": "云冈区"
-			}, {
-				"countyCode": "140226",
-				"countyName": "左云县"
-			}]
-		}, {
-			"cityCode": "140700",
-			"cityName": "晋中市",
-			"county": [{
-				"countyCode": "140722",
-				"countyName": "左权县"
-			}, {
-				"countyCode": "140721",
-				"countyName": "榆社县"
-			}, {
-				"countyCode": "140728",
-				"countyName": "平遥县"
-			}, {
-				"countyCode": "140723",
-				"countyName": "和顺县"
-			}, {
-				"countyCode": "140726",
-				"countyName": "太谷县"
-			}, {
-				"countyCode": "140781",
-				"countyName": "介休市"
-			}, {
-				"countyCode": "140725",
-				"countyName": "寿阳县"
-			}, {
-				"countyCode": "140727",
-				"countyName": "祁县"
-			}, {
-				"countyCode": "140724",
-				"countyName": "昔阳县"
-			}, {
-				"countyCode": "140702",
-				"countyName": "榆次区"
-			}, {
-				"countyCode": "140729",
-				"countyName": "灵石县"
-			}]
-		}, {
-			"cityCode": "140500",
-			"cityName": "晋城市",
-			"county": [{
-				"countyCode": "140521",
-				"countyName": "沁水县"
-			}, {
-				"countyCode": "140581",
-				"countyName": "高平市"
-			}, {
-				"countyCode": "140524",
-				"countyName": "陵川县"
-			}, {
-				"countyCode": "140522",
-				"countyName": "阳城县"
-			}, {
-				"countyCode": "140525",
-				"countyName": "泽州县"
-			}, {
-				"countyCode": "140502",
-				"countyName": "城区"
-			}]
-		}, {
-			"cityCode": "140600",
-			"cityName": "朔州市",
-			"county": [{
-				"countyCode": "140621",
-				"countyName": "山阴县"
-			}, {
-				"countyCode": "140623",
-				"countyName": "右玉县"
-			}, {
-				"countyCode": "140603",
-				"countyName": "平鲁区"
-			}, {
-				"countyCode": "140602",
-				"countyName": "朔城区"
-			}, {
-				"countyCode": "140622",
-				"countyName": "应县"
-			}, {
-				"countyCode": "140624",
-				"countyName": "怀仁市"
-			}]
-		}, {
-			"cityCode": "141100",
-			"cityName": "吕梁市",
-			"county": [{
-				"countyCode": "141125",
-				"countyName": "柳林县"
-			}, {
-				"countyCode": "141127",
-				"countyName": "岚县"
-			}, {
-				"countyCode": "141122",
-				"countyName": "交城县"
-			}, {
-				"countyCode": "141128",
-				"countyName": "方山县"
-			}, {
-				"countyCode": "141129",
-				"countyName": "中阳县"
-			}, {
-				"countyCode": "141102",
-				"countyName": "离石区"
-			}, {
-				"countyCode": "141126",
-				"countyName": "石楼县"
-			}, {
-				"countyCode": "141182",
-				"countyName": "汾阳市"
-			}, {
-				"countyCode": "141130",
-				"countyName": "交口县"
-			}, {
-				"countyCode": "141124",
-				"countyName": "临县"
-			}, {
-				"countyCode": "141181",
-				"countyName": "孝义市"
-			}, {
-				"countyCode": "141123",
-				"countyName": "兴县"
-			}, {
-				"countyCode": "141121",
-				"countyName": "文水县"
-			}]
-		}, {
-			"cityCode": "140900",
-			"cityName": "忻州市",
-			"county": [{
-				"countyCode": "140902",
-				"countyName": "忻府区"
-			}, {
-				"countyCode": "140922",
-				"countyName": "五台县"
-			}, {
-				"countyCode": "140981",
-				"countyName": "原平市"
-			}, {
-				"countyCode": "140932",
-				"countyName": "偏关县"
-			}, {
-				"countyCode": "140927",
-				"countyName": "神池县"
-			}, {
-				"countyCode": "140925",
-				"countyName": "宁武县"
-			}, {
-				"countyCode": "140924",
-				"countyName": "繁峙县"
-			}, {
-				"countyCode": "140931",
-				"countyName": "保德县"
-			}, {
-				"countyCode": "140926",
-				"countyName": "静乐县"
-			}, {
-				"countyCode": "140930",
-				"countyName": "河曲县"
-			}, {
-				"countyCode": "140921",
-				"countyName": "定襄县"
-			}, {
-				"countyCode": "140923",
-				"countyName": "代县"
-			}, {
-				"countyCode": "140928",
-				"countyName": "五寨县"
-			}, {
-				"countyCode": "140929",
-				"countyName": "岢岚县"
-			}]
-		}, {
-			"cityCode": "140100",
-			"cityName": "太原市",
-			"county": [{
-				"countyCode": "140107",
-				"countyName": "杏花岭区"
-			}, {
-				"countyCode": "140109",
-				"countyName": "万柏林区"
-			}, {
-				"countyCode": "140105",
-				"countyName": "小店区"
-			}, {
-				"countyCode": "140181",
-				"countyName": "古交市"
-			}, {
-				"countyCode": "140110",
-				"countyName": "晋源区"
-			}, {
-				"countyCode": "140122",
-				"countyName": "阳曲县"
-			}, {
-				"countyCode": "140108",
-				"countyName": "尖草坪区"
-			}, {
-				"countyCode": "140121",
-				"countyName": "清徐县"
-			}, {
-				"countyCode": "140123",
-				"countyName": "娄烦县"
-			}, {
-				"countyCode": "140106",
-				"countyName": "迎泽区"
-			}]
-		}, {
-			"cityCode": "140300",
-			"cityName": "阳泉市",
-			"county": [{
-				"countyCode": "140302",
-				"countyName": "城区"
-			}, {
-				"countyCode": "140321",
-				"countyName": "平定县"
-			}, {
-				"countyCode": "140311",
-				"countyName": "郊区"
-			}, {
-				"countyCode": "140303",
-				"countyName": "矿区"
-			}, {
-				"countyCode": "140322",
-				"countyName": "盂县"
-			}]
-		}, {
-			"cityCode": "140800",
-			"cityName": "运城市",
-			"county": [{
-				"countyCode": "140802",
-				"countyName": "盐湖区"
-			}, {
-				"countyCode": "140829",
-				"countyName": "平陆县"
-			}, {
-				"countyCode": "140828",
-				"countyName": "夏县"
-			}, {
-				"countyCode": "140825",
-				"countyName": "新绛县"
-			}, {
-				"countyCode": "140830",
-				"countyName": "芮城县"
-			}, {
-				"countyCode": "140823",
-				"countyName": "闻喜县"
-			}, {
-				"countyCode": "140826",
-				"countyName": "绛县"
-			}, {
-				"countyCode": "140822",
-				"countyName": "万荣县"
-			}, {
-				"countyCode": "140821",
-				"countyName": "临猗县"
-			}, {
-				"countyCode": "140827",
-				"countyName": "垣曲县"
-			}, {
-				"countyCode": "140824",
-				"countyName": "稷山县"
-			}, {
-				"countyCode": "140881",
-				"countyName": "永济市"
-			}, {
-				"countyCode": "140882",
-				"countyName": "河津市"
-			}]
-		}, {
-			"cityCode": "140400",
-			"cityName": "长治市",
-			"county": [{
-				"countyCode": "140428",
-				"countyName": "长子县"
-			}, {
-				"countyCode": "140430",
-				"countyName": "沁县"
-			}, {
-				"countyCode": "140426",
-				"countyName": "黎城县"
-			}, {
-				"countyCode": "140481",
-				"countyName": "潞城市"
-			}, {
-				"countyCode": "140403",
-				"countyName": "潞州区"
-			}, {
-				"countyCode": "140402",
-				"countyName": "城区"
-			}, {
-				"countyCode": "140427",
-				"countyName": "壶关县"
-			}, {
-				"countyCode": "140429",
-				"countyName": "武乡县"
-			}, {
-				"countyCode": "140425",
-				"countyName": "平顺县"
-			}, {
-				"countyCode": "140421",
-				"countyName": "长治县"
-			}, {
-				"countyCode": "140424",
-				"countyName": "屯留县"
-			}, {
-				"countyCode": "140431",
-				"countyName": "沁源县"
-			}, {
-				"countyCode": "140411",
-				"countyName": "郊区"
-			}, {
-				"countyCode": "140423",
-				"countyName": "襄垣县"
-			}]
-		}]
-	}, {
-		"provinceCode": "150000",
-		"provinceName": "内蒙古自治区",
-		"city": [{
-			"cityCode": "150100",
-			"cityName": "呼和浩特市",
-			"county": [{
-				"countyCode": "150125",
-				"countyName": "武川县"
-			}, {
-				"countyCode": "150124",
-				"countyName": "清水河县"
-			}, {
-				"countyCode": "150105",
-				"countyName": "赛罕区"
-			}, {
-				"countyCode": "150122",
-				"countyName": "托克托县"
-			}, {
-				"countyCode": "150121",
-				"countyName": "土默特左旗"
-			}, {
-				"countyCode": "150102",
-				"countyName": "新城区"
-			}, {
-				"countyCode": "150104",
-				"countyName": "玉泉区"
-			}, {
-				"countyCode": "150123",
-				"countyName": "和林格尔县"
-			}, {
-				"countyCode": "150103",
-				"countyName": "回民区"
-			}]
-		}, {
-			"cityCode": "150300",
-			"cityName": "乌海市",
-			"county": [{
-				"countyCode": "150303",
-				"countyName": "海南区"
-			}, {
-				"countyCode": "150302",
-				"countyName": "海勃湾区"
-			}, {
-				"countyCode": "150304",
-				"countyName": "乌达区"
-			}]
-		}, {
-			"cityCode": "150500",
-			"cityName": "通辽市",
-			"county": [{
-				"countyCode": "150502",
-				"countyName": "科尔沁区"
-			}, {
-				"countyCode": "150526",
-				"countyName": "扎鲁特旗"
-			}, {
-				"countyCode": "150522",
-				"countyName": "科尔沁左翼后旗"
-			}, {
-				"countyCode": "150523",
-				"countyName": "开鲁县"
-			}, {
-				"countyCode": "150524",
-				"countyName": "库伦旗"
-			}, {
-				"countyCode": "150525",
-				"countyName": "奈曼旗"
-			}, {
-				"countyCode": "150521",
-				"countyName": "科尔沁左翼中旗"
-			}, {
-				"countyCode": "150581",
-				"countyName": "霍林郭勒市"
-			}]
-		}, {
-			"cityCode": "150400",
-			"cityName": "赤峰市",
-			"county": [{
-				"countyCode": "150422",
-				"countyName": "巴林左旗"
-			}, {
-				"countyCode": "150429",
-				"countyName": "宁城县"
-			}, {
-				"countyCode": "150421",
-				"countyName": "阿鲁科尔沁旗"
-			}, {
-				"countyCode": "150423",
-				"countyName": "巴林右旗"
-			}, {
-				"countyCode": "150425",
-				"countyName": "克什克腾旗"
-			}, {
-				"countyCode": "150426",
-				"countyName": "翁牛特旗"
-			}, {
-				"countyCode": "150402",
-				"countyName": "红山区"
-			}, {
-				"countyCode": "150430",
-				"countyName": "敖汉旗"
-			}, {
-				"countyCode": "150428",
-				"countyName": "喀喇沁旗"
-			}, {
-				"countyCode": "150404",
-				"countyName": "松山区"
-			}, {
-				"countyCode": "150424",
-				"countyName": "林西县"
-			}, {
-				"countyCode": "150403",
-				"countyName": "元宝山区"
-			}]
-		}, {
-			"cityCode": "150200",
-			"cityName": "包头市",
-			"county": [{
-				"countyCode": "150203",
-				"countyName": "昆都仑区"
-			}, {
-				"countyCode": "150204",
-				"countyName": "青山区"
-			}, {
-				"countyCode": "150205",
-				"countyName": "石拐区"
-			}, {
-				"countyCode": "150221",
-				"countyName": "土默特右旗"
-			}, {
-				"countyCode": "150222",
-				"countyName": "固阳县"
-			}, {
-				"countyCode": "150223",
-				"countyName": "达尔罕茂明安联合旗"
-			}, {
-				"countyCode": "150206",
-				"countyName": "白云鄂博矿区"
-			}, {
-				"countyCode": "150202",
-				"countyName": "东河区"
-			}, {
-				"countyCode": "150207",
-				"countyName": "九原区"
-			}]
-		}, {
-			"cityCode": "150700",
-			"cityName": "呼伦贝尔市",
-			"county": [{
-				"countyCode": "150721",
-				"countyName": "阿荣旗"
-			}, {
-				"countyCode": "150723",
-				"countyName": "鄂伦春自治旗"
-			}, {
-				"countyCode": "150785",
-				"countyName": "根河市"
-			}, {
-				"countyCode": "150782",
-				"countyName": "牙克石市"
-			}, {
-				"countyCode": "150783",
-				"countyName": "扎兰屯市"
-			}, {
-				"countyCode": "150724",
-				"countyName": "鄂温克族自治旗"
-			}, {
-				"countyCode": "150784",
-				"countyName": "额尔古纳市"
-			}, {
-				"countyCode": "150727",
-				"countyName": "新巴尔虎右旗"
-			}, {
-				"countyCode": "150726",
-				"countyName": "新巴尔虎左旗"
-			}, {
-				"countyCode": "150702",
-				"countyName": "海拉尔区"
-			}, {
-				"countyCode": "150703",
-				"countyName": "扎赉诺尔区"
-			}, {
-				"countyCode": "150781",
-				"countyName": "满洲里市"
-			}, {
-				"countyCode": "150725",
-				"countyName": "陈巴尔虎旗"
-			}, {
-				"countyCode": "150722",
-				"countyName": "莫力达瓦达斡尔族自治旗"
-			}]
-		}, {
-			"cityCode": "152500",
-			"cityName": "锡林郭勒盟",
-			"county": [{
-				"countyCode": "152529",
-				"countyName": "正镶白旗"
-			}, {
-				"countyCode": "152501",
-				"countyName": "二连浩特市"
-			}, {
-				"countyCode": "152525",
-				"countyName": "东乌珠穆沁旗"
-			}, {
-				"countyCode": "152524",
-				"countyName": "苏尼特右旗"
-			}, {
-				"countyCode": "152523",
-				"countyName": "苏尼特左旗"
-			}, {
-				"countyCode": "152526",
-				"countyName": "西乌珠穆沁旗"
-			}, {
-				"countyCode": "152531",
-				"countyName": "多伦县"
-			}, {
-				"countyCode": "152528",
-				"countyName": "镶黄旗"
-			}, {
-				"countyCode": "152530",
-				"countyName": "正蓝旗"
-			}, {
-				"countyCode": "152522",
-				"countyName": "阿巴嘎旗"
-			}, {
-				"countyCode": "152502",
-				"countyName": "锡林浩特市"
-			}, {
-				"countyCode": "152527",
-				"countyName": "太仆寺旗"
-			}]
-		}, {
-			"cityCode": "152200",
-			"cityName": "兴安盟",
-			"county": [{
-				"countyCode": "152221",
-				"countyName": "科尔沁右翼前旗"
-			}, {
-				"countyCode": "152223",
-				"countyName": "扎赉特旗"
-			}, {
-				"countyCode": "152201",
-				"countyName": "乌兰浩特市"
-			}, {
-				"countyCode": "152224",
-				"countyName": "突泉县"
-			}, {
-				"countyCode": "152222",
-				"countyName": "科尔沁右翼中旗"
-			}, {
-				"countyCode": "152202",
-				"countyName": "阿尔山市"
-			}]
-		}, {
-			"cityCode": "150900",
-			"cityName": "乌兰察布市",
-			"county": [{
-				"countyCode": "150902",
-				"countyName": "集宁区"
-			}, {
-				"countyCode": "150921",
-				"countyName": "卓资县"
-			}, {
-				"countyCode": "150922",
-				"countyName": "化德县"
-			}, {
-				"countyCode": "150923",
-				"countyName": "商都县"
-			}, {
-				"countyCode": "150928",
-				"countyName": "察哈尔右翼后旗"
-			}, {
-				"countyCode": "150926",
-				"countyName": "察哈尔右翼前旗"
-			}, {
-				"countyCode": "150927",
-				"countyName": "察哈尔右翼中旗"
-			}, {
-				"countyCode": "150929",
-				"countyName": "四子王旗"
-			}, {
-				"countyCode": "150981",
-				"countyName": "丰镇市"
-			}, {
-				"countyCode": "150925",
-				"countyName": "凉城县"
-			}, {
-				"countyCode": "150924",
-				"countyName": "兴和县"
-			}]
-		}, {
-			"cityCode": "150600",
-			"cityName": "鄂尔多斯市",
-			"county": [{
-				"countyCode": "150624",
-				"countyName": "鄂托克旗"
-			}, {
-				"countyCode": "150621",
-				"countyName": "达拉特旗"
-			}, {
-				"countyCode": "150626",
-				"countyName": "乌审旗"
-			}, {
-				"countyCode": "150602",
-				"countyName": "东胜区"
-			}, {
-				"countyCode": "150603",
-				"countyName": "康巴什区"
-			}, {
-				"countyCode": "150623",
-				"countyName": "鄂托克前旗"
-			}, {
-				"countyCode": "150622",
-				"countyName": "准格尔旗"
-			}, {
-				"countyCode": "150625",
-				"countyName": "杭锦旗"
-			}, {
-				"countyCode": "150627",
-				"countyName": "伊金霍洛旗"
-			}]
-		}, {
-			"cityCode": "152900",
-			"cityName": "阿拉善盟",
-			"county": [{
-				"countyCode": "152923",
-				"countyName": "额济纳旗"
-			}, {
-				"countyCode": "152921",
-				"countyName": "阿拉善左旗"
-			}, {
-				"countyCode": "152922",
-				"countyName": "阿拉善右旗"
-			}]
-		}, {
-			"cityCode": "150800",
-			"cityName": "巴彦淖尔市",
-			"county": [{
-				"countyCode": "150802",
-				"countyName": "临河区"
-			}, {
-				"countyCode": "150823",
-				"countyName": "乌拉特前旗"
-			}, {
-				"countyCode": "150821",
-				"countyName": "五原县"
-			}, {
-				"countyCode": "150826",
-				"countyName": "杭锦后旗"
-			}, {
-				"countyCode": "150825",
-				"countyName": "乌拉特后旗"
-			}, {
-				"countyCode": "150824",
-				"countyName": "乌拉特中旗"
-			}, {
-				"countyCode": "150822",
-				"countyName": "磴口县"
-			}]
-		}]
-	}, {
-		"provinceCode": "210000",
-		"provinceName": "辽宁省",
-		"city": [{
-			"cityCode": "211200",
-			"cityName": "铁岭市",
-			"county": [{
-				"countyCode": "211281",
-				"countyName": "调兵山市"
-			}, {
-				"countyCode": "211221",
-				"countyName": "铁岭县"
-			}, {
-				"countyCode": "211224",
-				"countyName": "昌图县"
-			}, {
-				"countyCode": "211223",
-				"countyName": "西丰县"
-			}, {
-				"countyCode": "211282",
-				"countyName": "开原市"
-			}, {
-				"countyCode": "211202",
-				"countyName": "银州区"
-			}, {
-				"countyCode": "211204",
-				"countyName": "清河区"
-			}]
-		}, {
-			"cityCode": "210500",
-			"cityName": "本溪市",
-			"county": [{
-				"countyCode": "210522",
-				"countyName": "桓仁满族自治县"
-			}, {
-				"countyCode": "210502",
-				"countyName": "平山区"
-			}, {
-				"countyCode": "210503",
-				"countyName": "溪湖区"
-			}, {
-				"countyCode": "210505",
-				"countyName": "南芬区"
-			}, {
-				"countyCode": "210504",
-				"countyName": "明山区"
-			}, {
-				"countyCode": "210521",
-				"countyName": "本溪满族自治县"
-			}]
-		}, {
-			"cityCode": "211400",
-			"cityName": "葫芦岛市",
-			"county": [{
-				"countyCode": "211421",
-				"countyName": "绥中县"
-			}, {
-				"countyCode": "211481",
-				"countyName": "兴城市"
-			}, {
-				"countyCode": "211403",
-				"countyName": "龙港区"
-			}, {
-				"countyCode": "211404",
-				"countyName": "南票区"
-			}, {
-				"countyCode": "211422",
-				"countyName": "建昌县"
-			}, {
-				"countyCode": "211402",
-				"countyName": "连山区"
-			}]
-		}, {
-			"cityCode": "210100",
-			"cityName": "沈阳市",
-			"county": [{
-				"countyCode": "210122",
-				"countyName": "辽中区"
-			}, {
-				"countyCode": "210104",
-				"countyName": "大东区"
-			}, {
-				"countyCode": "210105",
-				"countyName": "皇姑区"
-			}, {
-				"countyCode": "210123",
-				"countyName": "康平县"
-			}, {
-				"countyCode": "210124",
-				"countyName": "法库县"
-			}, {
-				"countyCode": "210181",
-				"countyName": "新民市"
-			}, {
-				"countyCode": "210103",
-				"countyName": "沈河区"
-			}, {
-				"countyCode": "210111",
-				"countyName": "苏家屯区"
-			}, {
-				"countyCode": "210106",
-				"countyName": "铁西区"
-			}, {
-				"countyCode": "210102",
-				"countyName": "和平区"
-			}, {
-				"countyCode": "210113",
-				"countyName": "沈北新区"
-			}, {
-				"countyCode": "210114",
-				"countyName": "于洪区"
-			}, {
-				"countyCode": "210112",
-				"countyName": "浑南区"
-			}]
-		}, {
-			"cityCode": "210900",
-			"cityName": "阜新市",
-			"county": [{
-				"countyCode": "210905",
-				"countyName": "清河门区"
-			}, {
-				"countyCode": "210911",
-				"countyName": "细河区"
-			}, {
-				"countyCode": "210921",
-				"countyName": "阜新蒙古族自治县"
-			}, {
-				"countyCode": "210902",
-				"countyName": "海州区"
-			}, {
-				"countyCode": "210903",
-				"countyName": "新邱区"
-			}, {
-				"countyCode": "210922",
-				"countyName": "彰武县"
-			}, {
-				"countyCode": "210904",
-				"countyName": "太平区"
-			}]
-		}, {
-			"cityCode": "210800",
-			"cityName": "营口市",
-			"county": [{
-				"countyCode": "210802",
-				"countyName": "站前区"
-			}, {
-				"countyCode": "210804",
-				"countyName": "鲅鱼圈区"
-			}, {
-				"countyCode": "210811",
-				"countyName": "老边区"
-			}, {
-				"countyCode": "210882",
-				"countyName": "大石桥市"
-			}, {
-				"countyCode": "210881",
-				"countyName": "盖州市"
-			}, {
-				"countyCode": "210803",
-				"countyName": "西市区"
-			}]
-		}, {
-			"cityCode": "210300",
-			"cityName": "鞍山市",
-			"county": [{
-				"countyCode": "210304",
-				"countyName": "立山区"
-			}, {
-				"countyCode": "210381",
-				"countyName": "海城市"
-			}, {
-				"countyCode": "210321",
-				"countyName": "台安县"
-			}, {
-				"countyCode": "210311",
-				"countyName": "千山区"
-			}, {
-				"countyCode": "210302",
-				"countyName": "铁东区"
-			}, {
-				"countyCode": "210303",
-				"countyName": "铁西区"
-			}, {
-				"countyCode": "210323",
-				"countyName": "岫岩满族自治县"
-			}]
-		}, {
-			"cityCode": "210700",
-			"cityName": "锦州市",
-			"county": [{
-				"countyCode": "210727",
-				"countyName": "义县"
-			}, {
-				"countyCode": "210781",
-				"countyName": "凌海市"
-			}, {
-				"countyCode": "210711",
-				"countyName": "太和区"
-			}, {
-				"countyCode": "210726",
-				"countyName": "黑山县"
-			}, {
-				"countyCode": "210782",
-				"countyName": "北镇市"
-			}, {
-				"countyCode": "210702",
-				"countyName": "古塔区"
-			}, {
-				"countyCode": "210703",
-				"countyName": "凌河区"
-			}]
-		}, {
-			"cityCode": "210400",
-			"cityName": "抚顺市",
-			"county": [{
-				"countyCode": "210403",
-				"countyName": "东洲区"
-			}, {
-				"countyCode": "210411",
-				"countyName": "顺城区"
-			}, {
-				"countyCode": "210404",
-				"countyName": "望花区"
-			}, {
-				"countyCode": "210402",
-				"countyName": "新抚区"
-			}, {
-				"countyCode": "210421",
-				"countyName": "抚顺县"
-			}, {
-				"countyCode": "210423",
-				"countyName": "清原满族自治县"
-			}, {
-				"countyCode": "210422",
-				"countyName": "新宾满族自治县"
-			}]
-		}, {
-			"cityCode": "210200",
-			"cityName": "大连市",
-			"county": [{
-				"countyCode": "210213",
-				"countyName": "金州区"
-			}, {
-				"countyCode": "210202",
-				"countyName": "中山区"
-			}, {
-				"countyCode": "210282",
-				"countyName": "普兰店区"
-			}, {
-				"countyCode": "210204",
-				"countyName": "沙河口区"
-			}, {
-				"countyCode": "210203",
-				"countyName": "西岗区"
-			}, {
-				"countyCode": "210281",
-				"countyName": "瓦房店市"
-			}, {
-				"countyCode": "210211",
-				"countyName": "甘井子区"
-			}, {
-				"countyCode": "210212",
-				"countyName": "旅顺口区"
-			}, {
-				"countyCode": "210224",
-				"countyName": "长海县"
-			}, {
-				"countyCode": "210283",
-				"countyName": "庄河市"
-			}]
-		}, {
-			"cityCode": "211000",
-			"cityName": "辽阳市",
-			"county": [{
-				"countyCode": "211003",
-				"countyName": "文圣区"
-			}, {
-				"countyCode": "211081",
-				"countyName": "灯塔市"
-			}, {
-				"countyCode": "211011",
-				"countyName": "太子河区"
-			}, {
-				"countyCode": "211005",
-				"countyName": "弓长岭区"
-			}, {
-				"countyCode": "211004",
-				"countyName": "宏伟区"
-			}, {
-				"countyCode": "211021",
-				"countyName": "辽阳县"
-			}, {
-				"countyCode": "211002",
-				"countyName": "白塔区"
-			}]
-		}, {
-			"cityCode": "210600",
-			"cityName": "丹东市",
-			"county": [{
-				"countyCode": "210603",
-				"countyName": "振兴区"
-			}, {
-				"countyCode": "210681",
-				"countyName": "东港市"
-			}, {
-				"countyCode": "210624",
-				"countyName": "宽甸满族自治县"
-			}, {
-				"countyCode": "210682",
-				"countyName": "凤城市"
-			}, {
-				"countyCode": "210604",
-				"countyName": "振安区"
-			}, {
-				"countyCode": "210602",
-				"countyName": "元宝区"
-			}]
-		}, {
-			"cityCode": "211300",
-			"cityName": "朝阳市",
-			"county": [{
-				"countyCode": "211382",
-				"countyName": "凌源市"
-			}, {
-				"countyCode": "211322",
-				"countyName": "建平县"
-			}, {
-				"countyCode": "211381",
-				"countyName": "北票市"
-			}, {
-				"countyCode": "211303",
-				"countyName": "龙城区"
-			}, {
-				"countyCode": "211302",
-				"countyName": "双塔区"
-			}, {
-				"countyCode": "211324",
-				"countyName": "喀喇沁左翼蒙古族自治县"
-			}, {
-				"countyCode": "211321",
-				"countyName": "朝阳县"
-			}]
-		}, {
-			"cityCode": "211100",
-			"cityName": "盘锦市",
-			"county": [{
-				"countyCode": "211122",
-				"countyName": "盘山县"
-			}, {
-				"countyCode": "211103",
-				"countyName": "兴隆台区"
-			}, {
-				"countyCode": "211102",
-				"countyName": "双台子区"
-			}, {
-				"countyCode": "211121",
-				"countyName": "大洼区"
-			}]
-		}]
-	}, {
-		"provinceCode": "220000",
-		"provinceName": "吉林省",
-		"city": [{
-			"cityCode": "220600",
-			"cityName": "白山市",
-			"county": [{
-				"countyCode": "220621",
-				"countyName": "抚松县"
-			}, {
-				"countyCode": "220602",
-				"countyName": "浑江区"
-			}, {
-				"countyCode": "220622",
-				"countyName": "靖宇县"
-			}, {
-				"countyCode": "220605",
-				"countyName": "江源区"
-			}, {
-				"countyCode": "220681",
-				"countyName": "临江市"
-			}, {
-				"countyCode": "220623",
-				"countyName": "长白朝鲜族自治县"
-			}]
-		}, {
-			"cityCode": "220500",
-			"cityName": "通化市",
-			"county": [{
-				"countyCode": "220523",
-				"countyName": "辉南县"
-			}, {
-				"countyCode": "220521",
-				"countyName": "通化县"
-			}, {
-				"countyCode": "220581",
-				"countyName": "梅河口市"
-			}, {
-				"countyCode": "220502",
-				"countyName": "东昌区"
-			}, {
-				"countyCode": "220524",
-				"countyName": "柳河县"
-			}, {
-				"countyCode": "220503",
-				"countyName": "二道江区"
-			}, {
-				"countyCode": "220582",
-				"countyName": "集安市"
-			}]
-		}, {
-			"cityCode": "220700",
-			"cityName": "松原市",
-			"county": [{
-				"countyCode": "220722",
-				"countyName": "长岭县"
-			}, {
-				"countyCode": "220702",
-				"countyName": "宁江区"
-			}, {
-				"countyCode": "220724",
-				"countyName": "扶余市"
-			}, {
-				"countyCode": "220721",
-				"countyName": "前郭尔罗斯蒙古族自治县"
-			}, {
-				"countyCode": "220723",
-				"countyName": "乾安县"
-			}]
-		}, {
-			"cityCode": "220800",
-			"cityName": "白城市",
-			"county": [{
-				"countyCode": "220802",
-				"countyName": "洮北区"
-			}, {
-				"countyCode": "220821",
-				"countyName": "镇赉县"
-			}, {
-				"countyCode": "220822",
-				"countyName": "通榆县"
-			}, {
-				"countyCode": "220881",
-				"countyName": "洮南市"
-			}, {
-				"countyCode": "220882",
-				"countyName": "大安市"
-			}]
-		}, {
-			"cityCode": "220100",
-			"cityName": "长春市",
-			"county": [{
-				"countyCode": "220105",
-				"countyName": "二道区"
-			}, {
-				"countyCode": "220182",
-				"countyName": "榆树市"
-			}, {
-				"countyCode": "220106",
-				"countyName": "绿园区"
-			}, {
-				"countyCode": "220181",
-				"countyName": "九台区"
-			}, {
-				"countyCode": "220122",
-				"countyName": "农安县"
-			}, {
-				"countyCode": "220103",
-				"countyName": "宽城区"
-			}, {
-				"countyCode": "220102",
-				"countyName": "南关区"
-			}, {
-				"countyCode": "220104",
-				"countyName": "朝阳区"
-			}, {
-				"countyCode": "220183",
-				"countyName": "德惠市"
-			}, {
-				"countyCode": "220112",
-				"countyName": "双阳区"
-			}]
-		}, {
-			"cityCode": "222400",
-			"cityName": "延边朝鲜族自治州",
-			"county": [{
-				"countyCode": "222424",
-				"countyName": "汪清县"
-			}, {
-				"countyCode": "222401",
-				"countyName": "延吉市"
-			}, {
-				"countyCode": "222404",
-				"countyName": "珲春市"
-			}, {
-				"countyCode": "222405",
-				"countyName": "龙井市"
-			}, {
-				"countyCode": "222402",
-				"countyName": "图们市"
-			}, {
-				"countyCode": "222426",
-				"countyName": "安图县"
-			}, {
-				"countyCode": "222406",
-				"countyName": "和龙市"
-			}, {
-				"countyCode": "222403",
-				"countyName": "敦化市"
-			}]
-		}, {
-			"cityCode": "220400",
-			"cityName": "辽源市",
-			"county": [{
-				"countyCode": "220422",
-				"countyName": "东辽县"
-			}, {
-				"countyCode": "220402",
-				"countyName": "龙山区"
-			}, {
-				"countyCode": "220421",
-				"countyName": "东丰县"
-			}, {
-				"countyCode": "220403",
-				"countyName": "西安区"
-			}]
-		}, {
-			"cityCode": "220300",
-			"cityName": "四平市",
-			"county": [{
-				"countyCode": "220381",
-				"countyName": "公主岭市"
-			}, {
-				"countyCode": "220323",
-				"countyName": "伊通满族自治县"
-			}, {
-				"countyCode": "220322",
-				"countyName": "梨树县"
-			}, {
-				"countyCode": "220382",
-				"countyName": "双辽市"
-			}, {
-				"countyCode": "220302",
-				"countyName": "铁西区"
-			}, {
-				"countyCode": "220303",
-				"countyName": "铁东区"
-			}]
-		}, {
-			"cityCode": "220200",
-			"cityName": "吉林市",
-			"county": [{
-				"countyCode": "220204",
-				"countyName": "船营区"
-			}, {
-				"countyCode": "220283",
-				"countyName": "舒兰市"
-			}, {
-				"countyCode": "220282",
-				"countyName": "桦甸市"
-			}, {
-				"countyCode": "220202",
-				"countyName": "昌邑区"
-			}, {
-				"countyCode": "220281",
-				"countyName": "蛟河市"
-			}, {
-				"countyCode": "220284",
-				"countyName": "磐石市"
-			}, {
-				"countyCode": "220211",
-				"countyName": "丰满区"
-			}, {
-				"countyCode": "220203",
-				"countyName": "龙潭区"
-			}, {
-				"countyCode": "220221",
-				"countyName": "永吉县"
-			}]
-		}]
-	}, {
-		"provinceCode": "230000",
-		"provinceName": "黑龙江省",
-		"city": [{
-			"cityCode": "230400",
-			"cityName": "鹤岗市",
-			"county": [{
-				"countyCode": "230406",
-				"countyName": "东山区"
-			}, {
-				"countyCode": "230407",
-				"countyName": "兴山区"
-			}, {
-				"countyCode": "230422",
-				"countyName": "绥滨县"
-			}, {
-				"countyCode": "230403",
-				"countyName": "工农区"
-			}, {
-				"countyCode": "230404",
-				"countyName": "南山区"
-			}, {
-				"countyCode": "230421",
-				"countyName": "萝北县"
-			}, {
-				"countyCode": "230402",
-				"countyName": "向阳区"
-			}, {
-				"countyCode": "230405",
-				"countyName": "兴安区"
-			}]
-		}, {
-			"cityCode": "230700",
-			"cityName": "伊春市",
-			"county": [{
-				"countyCode": "230708",
-				"countyName": "美溪区"
-			}, {
-				"countyCode": "230705",
-				"countyName": "西林区"
-			}, {
-				"countyCode": "230722",
-				"countyName": "嘉荫县"
-			}, {
-				"countyCode": "230709",
-				"countyName": "金山屯区"
-			}, {
-				"countyCode": "230711",
-				"countyName": "乌马河区"
-			}, {
-				"countyCode": "230707",
-				"countyName": "新青区"
-			}, {
-				"countyCode": "230702",
-				"countyName": "伊春区"
-			}, {
-				"countyCode": "230704",
-				"countyName": "友好区"
-			}, {
-				"countyCode": "230703",
-				"countyName": "南岔区"
-			}, {
-				"countyCode": "230710",
-				"countyName": "五营区"
-			}, {
-				"countyCode": "230716",
-				"countyName": "上甘岭区"
-			}, {
-				"countyCode": "230712",
-				"countyName": "汤旺河区"
-			}, {
-				"countyCode": "230781",
-				"countyName": "铁力市"
-			}, {
-				"countyCode": "230714",
-				"countyName": "乌伊岭区"
-			}, {
-				"countyCode": "230715",
-				"countyName": "红星区"
-			}, {
-				"countyCode": "230706",
-				"countyName": "翠峦区"
-			}, {
-				"countyCode": "230713",
-				"countyName": "带岭区"
-			}]
-		}, {
-			"cityCode": "230800",
-			"cityName": "佳木斯市",
-			"county": [{
-				"countyCode": "230881",
-				"countyName": "同江市"
-			}, {
-				"countyCode": "230805",
-				"countyName": "东风区"
-			}, {
-				"countyCode": "230811",
-				"countyName": "郊区"
-			}, {
-				"countyCode": "230882",
-				"countyName": "富锦市"
-			}, {
-				"countyCode": "230828",
-				"countyName": "汤原县"
-			}, {
-				"countyCode": "230833",
-				"countyName": "抚远市"
-			}, {
-				"countyCode": "230804",
-				"countyName": "前进区"
-			}, {
-				"countyCode": "230803",
-				"countyName": "向阳区"
-			}, {
-				"countyCode": "230826",
-				"countyName": "桦川县"
-			}, {
-				"countyCode": "230822",
-				"countyName": "桦南县"
-			}]
-		}, {
-			"cityCode": "230200",
-			"cityName": "齐齐哈尔市",
-			"county": [{
-				"countyCode": "230207",
-				"countyName": "碾子山区"
-			}, {
-				"countyCode": "230203",
-				"countyName": "建华区"
-			}, {
-				"countyCode": "230204",
-				"countyName": "铁锋区"
-			}, {
-				"countyCode": "230208",
-				"countyName": "梅里斯达斡尔族区"
-			}, {
-				"countyCode": "230230",
-				"countyName": "克东县"
-			}, {
-				"countyCode": "230227",
-				"countyName": "富裕县"
-			}, {
-				"countyCode": "230205",
-				"countyName": "昂昂溪区"
-			}, {
-				"countyCode": "230221",
-				"countyName": "龙江县"
-			}, {
-				"countyCode": "230206",
-				"countyName": "富拉尔基区"
-			}, {
-				"countyCode": "230223",
-				"countyName": "依安县"
-			}, {
-				"countyCode": "230225",
-				"countyName": "甘南县"
-			}, {
-				"countyCode": "230229",
-				"countyName": "克山县"
-			}, {
-				"countyCode": "230281",
-				"countyName": "讷河市"
-			}, {
-				"countyCode": "230202",
-				"countyName": "龙沙区"
-			}, {
-				"countyCode": "230231",
-				"countyName": "拜泉县"
-			}, {
-				"countyCode": "230224",
-				"countyName": "泰来县"
-			}]
-		}, {
-			"cityCode": "230500",
-			"cityName": "双鸭山市",
-			"county": [{
-				"countyCode": "230524",
-				"countyName": "饶河县"
-			}, {
-				"countyCode": "230506",
-				"countyName": "宝山区"
-			}, {
-				"countyCode": "230503",
-				"countyName": "岭东区"
-			}, {
-				"countyCode": "230505",
-				"countyName": "四方台区"
-			}, {
-				"countyCode": "230523",
-				"countyName": "宝清县"
-			}, {
-				"countyCode": "230521",
-				"countyName": "集贤县"
-			}, {
-				"countyCode": "230522",
-				"countyName": "友谊县"
-			}, {
-				"countyCode": "230502",
-				"countyName": "尖山区"
-			}]
-		}, {
-			"cityCode": "230100",
-			"cityName": "哈尔滨市",
-			"county": [{
-				"countyCode": "230109",
-				"countyName": "松北区"
-			}, {
-				"countyCode": "230127",
-				"countyName": "木兰县"
-			}, {
-				"countyCode": "230124",
-				"countyName": "方正县"
-			}, {
-				"countyCode": "230103",
-				"countyName": "南岗区"
-			}, {
-				"countyCode": "230183",
-				"countyName": "尚志市"
-			}, {
-				"countyCode": "230129",
-				"countyName": "延寿县"
-			}, {
-				"countyCode": "230126",
-				"countyName": "巴彦县"
-			}, {
-				"countyCode": "230125",
-				"countyName": "宾县"
-			}, {
-				"countyCode": "230102",
-				"countyName": "道里区"
-			}, {
-				"countyCode": "230111",
-				"countyName": "呼兰区"
-			}, {
-				"countyCode": "230112",
-				"countyName": "阿城区"
-			}, {
-				"countyCode": "230110",
-				"countyName": "香坊区"
-			}, {
-				"countyCode": "230108",
-				"countyName": "平房区"
-			}, {
-				"countyCode": "230182",
-				"countyName": "双城区"
-			}, {
-				"countyCode": "230123",
-				"countyName": "依兰县"
-			}, {
-				"countyCode": "230184",
-				"countyName": "五常市"
-			}, {
-				"countyCode": "230104",
-				"countyName": "道外区"
-			}, {
-				"countyCode": "230128",
-				"countyName": "通河县"
-			}]
-		}, {
-			"cityCode": "231000",
-			"cityName": "牡丹江市",
-			"county": [{
-				"countyCode": "231003",
-				"countyName": "阳明区"
-			}, {
-				"countyCode": "231005",
-				"countyName": "西安区"
-			}, {
-				"countyCode": "231025",
-				"countyName": "林口县"
-			}, {
-				"countyCode": "231024",
-				"countyName": "东宁市"
-			}, {
-				"countyCode": "231004",
-				"countyName": "爱民区"
-			}, {
-				"countyCode": "231084",
-				"countyName": "宁安市"
-			}, {
-				"countyCode": "231083",
-				"countyName": "海林市"
-			}, {
-				"countyCode": "231002",
-				"countyName": "东安区"
-			}, {
-				"countyCode": "231085",
-				"countyName": "穆棱市"
-			}, {
-				"countyCode": "231081",
-				"countyName": "绥芬河市"
-			}]
-		}, {
-			"cityCode": "230900",
-			"cityName": "七台河市",
-			"county": [{
-				"countyCode": "230904",
-				"countyName": "茄子河区"
-			}, {
-				"countyCode": "230921",
-				"countyName": "勃利县"
-			}, {
-				"countyCode": "230902",
-				"countyName": "新兴区"
-			}, {
-				"countyCode": "230903",
-				"countyName": "桃山区"
-			}]
-		}, {
-			"cityCode": "231100",
-			"cityName": "黑河市",
-			"county": [{
-				"countyCode": "231102",
-				"countyName": "爱辉区"
-			}, {
-				"countyCode": "231182",
-				"countyName": "五大连池市"
-			}, {
-				"countyCode": "231181",
-				"countyName": "北安市"
-			}, {
-				"countyCode": "231124",
-				"countyName": "孙吴县"
-			}, {
-				"countyCode": "231123",
-				"countyName": "逊克县"
-			}, {
-				"countyCode": "231121",
-				"countyName": "嫩江县"
-			}]
-		}, {
-			"cityCode": "230600",
-			"cityName": "大庆市",
-			"county": [{
-				"countyCode": "230605",
-				"countyName": "红岗区"
-			}, {
-				"countyCode": "230606",
-				"countyName": "大同区"
-			}, {
-				"countyCode": "230623",
-				"countyName": "林甸县"
-			}, {
-				"countyCode": "230622",
-				"countyName": "肇源县"
-			}, {
-				"countyCode": "230621",
-				"countyName": "肇州县"
-			}, {
-				"countyCode": "230624",
-				"countyName": "杜尔伯特蒙古族自治县"
-			}, {
-				"countyCode": "230603",
-				"countyName": "龙凤区"
-			}, {
-				"countyCode": "230602",
-				"countyName": "萨尔图区"
-			}, {
-				"countyCode": "230604",
-				"countyName": "让胡路区"
-			}]
-		}, {
-			"cityCode": "232700",
-			"cityName": "大兴安岭地区",
-			"county": [{
-				"countyCode": "232703",
-				"countyName": "新林区"
-			}, {
-				"countyCode": "232702",
-				"countyName": "松岭区"
-			}, {
-				"countyCode": "232701",
-				"countyName": "加格达奇区"
-			}, {
-				"countyCode": "232722",
-				"countyName": "塔河县"
-			}, {
-				"countyCode": "232721",
-				"countyName": "呼玛县"
-			}, {
-				"countyCode": "232704",
-				"countyName": "呼中区"
-			}, {
-				"countyCode": "232723",
-				"countyName": "漠河市"
-			}]
-		}, {
-			"cityCode": "231200",
-			"cityName": "绥化市",
-			"county": [{
-				"countyCode": "231281",
-				"countyName": "安达市"
-			}, {
-				"countyCode": "231224",
-				"countyName": "庆安县"
-			}, {
-				"countyCode": "231282",
-				"countyName": "肇东市"
-			}, {
-				"countyCode": "231283",
-				"countyName": "海伦市"
-			}, {
-				"countyCode": "231225",
-				"countyName": "明水县"
-			}, {
-				"countyCode": "231222",
-				"countyName": "兰西县"
-			}, {
-				"countyCode": "231223",
-				"countyName": "青冈县"
-			}, {
-				"countyCode": "231226",
-				"countyName": "绥棱县"
-			}, {
-				"countyCode": "231221",
-				"countyName": "望奎县"
-			}, {
-				"countyCode": "231202",
-				"countyName": "北林区"
-			}]
-		}, {
-			"cityCode": "230300",
-			"cityName": "鸡西市",
-			"county": [{
-				"countyCode": "230303",
-				"countyName": "恒山区"
-			}, {
-				"countyCode": "230302",
-				"countyName": "鸡冠区"
-			}, {
-				"countyCode": "230305",
-				"countyName": "梨树区"
-			}, {
-				"countyCode": "230321",
-				"countyName": "鸡东县"
-			}, {
-				"countyCode": "230304",
-				"countyName": "滴道区"
-			}, {
-				"countyCode": "230381",
-				"countyName": "虎林市"
-			}, {
-				"countyCode": "230307",
-				"countyName": "麻山区"
-			}, {
-				"countyCode": "230306",
-				"countyName": "城子河区"
-			}, {
-				"countyCode": "230382",
-				"countyName": "密山市"
-			}]
-		}]
-	}, {
-		"provinceCode": "310000",
-		"provinceName": "上海",
-		"city": [{
-			"cityCode": "310000-1",
-			"cityName": "上海市",
-			"county": [{
-				"countyCode": "310115",
-				"countyName": "浦东新区"
-			}, {
-				"countyCode": "310110",
-				"countyName": "杨浦区"
-			}, {
-				"countyCode": "310230",
-				"countyName": "崇明区"
-			}, {
-				"countyCode": "310113",
-				"countyName": "宝山区"
-			}, {
-				"countyCode": "310114",
-				"countyName": "嘉定区"
-			}, {
-				"countyCode": "310109",
-				"countyName": "虹口区"
-			}, {
-				"countyCode": "310101",
-				"countyName": "黄浦区"
-			}, {
-				"countyCode": "310120",
-				"countyName": "奉贤区"
-			}, {
-				"countyCode": "310118",
-				"countyName": "青浦区"
-			}, {
-				"countyCode": "310112",
-				"countyName": "闵行区"
-			}, {
-				"countyCode": "310105",
-				"countyName": "长宁区"
-			}, {
-				"countyCode": "310104",
-				"countyName": "徐汇区"
-			}, {
-				"countyCode": "310117",
-				"countyName": "松江区"
-			}, {
-				"countyCode": "310106",
-				"countyName": "静安区"
-			}, {
-				"countyCode": "310107",
-				"countyName": "普陀区"
-			}, {
-				"countyCode": "310116",
-				"countyName": "金山区"
-			}]
-		}]
-	}, {
-		"provinceCode": "340000",
-		"provinceName": "安徽省",
-		"city": [{
-			"cityCode": "341000",
-			"cityName": "黄山市",
-			"county": [{
-				"countyCode": "341022",
-				"countyName": "休宁县"
-			}, {
-				"countyCode": "341024",
-				"countyName": "祁门县"
-			}, {
-				"countyCode": "341021",
-				"countyName": "歙县"
-			}, {
-				"countyCode": "341003",
-				"countyName": "黄山区"
-			}, {
-				"countyCode": "341023",
-				"countyName": "黟县"
-			}, {
-				"countyCode": "341004",
-				"countyName": "徽州区"
-			}, {
-				"countyCode": "341002",
-				"countyName": "屯溪区"
-			}]
-		}, {
-			"cityCode": "340200",
-			"cityName": "芜湖市",
-			"county": [{
-				"countyCode": "340208",
-				"countyName": "三山区"
-			}, {
-				"countyCode": "340222",
-				"countyName": "繁昌县"
-			}, {
-				"countyCode": "340207",
-				"countyName": "鸠江区"
-			}, {
-				"countyCode": "340221",
-				"countyName": "芜湖县"
-			}, {
-				"countyCode": "340202",
-				"countyName": "镜湖区"
-			}, {
-				"countyCode": "340203",
-				"countyName": "弋江区"
-			}, {
-				"countyCode": "340225",
-				"countyName": "无为县"
-			}, {
-				"countyCode": "340223",
-				"countyName": "南陵县"
-			}]
-		}, {
-			"cityCode": "340800",
-			"cityName": "安庆市",
-			"county": [{
-				"countyCode": "340826",
-				"countyName": "宿松县"
-			}, {
-				"countyCode": "340824",
-				"countyName": "潜山市"
-			}, {
-				"countyCode": "340881",
-				"countyName": "桐城市"
-			}, {
-				"countyCode": "340828",
-				"countyName": "岳西县"
-			}, {
-				"countyCode": "340825",
-				"countyName": "太湖县"
-			}, {
-				"countyCode": "340811",
-				"countyName": "宜秀区"
-			}, {
-				"countyCode": "340803",
-				"countyName": "大观区"
-			}, {
-				"countyCode": "340827",
-				"countyName": "望江县"
-			}, {
-				"countyCode": "340802",
-				"countyName": "迎江区"
-			}, {
-				"countyCode": "340822",
-				"countyName": "怀宁县"
-			}]
-		}, {
-			"cityCode": "341100",
-			"cityName": "滁州市",
-			"county": [{
-				"countyCode": "341103",
-				"countyName": "南谯区"
-			}, {
-				"countyCode": "341102",
-				"countyName": "琅琊区"
-			}, {
-				"countyCode": "341181",
-				"countyName": "天长市"
-			}, {
-				"countyCode": "341125",
-				"countyName": "定远县"
-			}, {
-				"countyCode": "341124",
-				"countyName": "全椒县"
-			}, {
-				"countyCode": "341122",
-				"countyName": "来安县"
-			}, {
-				"countyCode": "341182",
-				"countyName": "明光市"
-			}, {
-				"countyCode": "341126",
-				"countyName": "凤阳县"
-			}]
-		}, {
-			"cityCode": "340600",
-			"cityName": "淮北市",
-			"county": [{
-				"countyCode": "340621",
-				"countyName": "濉溪县"
-			}, {
-				"countyCode": "340603",
-				"countyName": "相山区"
-			}, {
-				"countyCode": "340602",
-				"countyName": "杜集区"
-			}, {
-				"countyCode": "340604",
-				"countyName": "烈山区"
-			}]
-		}, {
-			"cityCode": "340700",
-			"cityName": "铜陵市",
-			"county": [{
-				"countyCode": "340711",
-				"countyName": "郊区"
-			}, {
-				"countyCode": "340702",
-				"countyName": "铜官山区"
-			}, {
-				"countyCode": "340823",
-				"countyName": "枞阳县"
-			}, {
-				"countyCode": "340703",
-				"countyName": "铜官区"
-			}, {
-				"countyCode": "340721",
-				"countyName": "义安区"
-			}]
-		}, {
-			"cityCode": "340300",
-			"cityName": "蚌埠市",
-			"county": [{
-				"countyCode": "340303",
-				"countyName": "蚌山区"
-			}, {
-				"countyCode": "340323",
-				"countyName": "固镇县"
-			}, {
-				"countyCode": "340322",
-				"countyName": "五河县"
-			}, {
-				"countyCode": "340304",
-				"countyName": "禹会区"
-			}, {
-				"countyCode": "340311",
-				"countyName": "淮上区"
-			}, {
-				"countyCode": "340302",
-				"countyName": "龙子湖区"
-			}, {
-				"countyCode": "340321",
-				"countyName": "怀远县"
-			}]
-		}, {
-			"cityCode": "340400",
-			"cityName": "淮南市",
-			"county": [{
-				"countyCode": "340421",
-				"countyName": "凤台县"
-			}, {
-				"countyCode": "341521",
-				"countyName": "寿县"
-			}, {
-				"countyCode": "340403",
-				"countyName": "田家庵区"
-			}, {
-				"countyCode": "340404",
-				"countyName": "谢家集区"
-			}, {
-				"countyCode": "340406",
-				"countyName": "潘集区"
-			}, {
-				"countyCode": "340405",
-				"countyName": "八公山区"
-			}, {
-				"countyCode": "340402",
-				"countyName": "大通区"
-			}]
-		}, {
-			"cityCode": "341300",
-			"cityName": "宿州市",
-			"county": [{
-				"countyCode": "341321",
-				"countyName": "砀山县"
-			}, {
-				"countyCode": "341322",
-				"countyName": "萧县"
-			}, {
-				"countyCode": "341324",
-				"countyName": "泗县"
-			}, {
-				"countyCode": "341323",
-				"countyName": "灵璧县"
-			}, {
-				"countyCode": "341302",
-				"countyName": "埇桥区"
-			}]
-		}, {
-			"cityCode": "341700",
-			"cityName": "池州市",
-			"county": [{
-				"countyCode": "341723",
-				"countyName": "青阳县"
-			}, {
-				"countyCode": "341722",
-				"countyName": "石台县"
-			}, {
-				"countyCode": "341721",
-				"countyName": "东至县"
-			}, {
-				"countyCode": "341702",
-				"countyName": "贵池区"
-			}]
-		}, {
-			"cityCode": "340500",
-			"cityName": "马鞍山市",
-			"county": [{
-				"countyCode": "340522",
-				"countyName": "含山县"
-			}, {
-				"countyCode": "340503",
-				"countyName": "花山区"
-			}, {
-				"countyCode": "340506",
-				"countyName": "博望区"
-			}, {
-				"countyCode": "340523",
-				"countyName": "和县"
-			}, {
-				"countyCode": "340521",
-				"countyName": "当涂县"
-			}, {
-				"countyCode": "340504",
-				"countyName": "雨山区"
-			}]
-		}, {
-			"cityCode": "341200",
-			"cityName": "阜阳市",
-			"county": [{
-				"countyCode": "341222",
-				"countyName": "太和县"
-			}, {
-				"countyCode": "341226",
-				"countyName": "颍上县"
-			}, {
-				"countyCode": "341221",
-				"countyName": "临泉县"
-			}, {
-				"countyCode": "341204",
-				"countyName": "颍泉区"
-			}, {
-				"countyCode": "341225",
-				"countyName": "阜南县"
-			}, {
-				"countyCode": "341282",
-				"countyName": "界首市"
-			}, {
-				"countyCode": "341203",
-				"countyName": "颍东区"
-			}, {
-				"countyCode": "341202",
-				"countyName": "颍州区"
-			}]
-		}, {
-			"cityCode": "341600",
-			"cityName": "亳州市",
-			"county": [{
-				"countyCode": "341621",
-				"countyName": "涡阳县"
-			}, {
-				"countyCode": "341623",
-				"countyName": "利辛县"
-			}, {
-				"countyCode": "341602",
-				"countyName": "谯城区"
-			}, {
-				"countyCode": "341622",
-				"countyName": "蒙城县"
-			}]
-		}, {
-			"cityCode": "341800",
-			"cityName": "宣城市",
-			"county": [{
-				"countyCode": "341881",
-				"countyName": "宁国市"
-			}, {
-				"countyCode": "341822",
-				"countyName": "广德县"
-			}, {
-				"countyCode": "341821",
-				"countyName": "郎溪县"
-			}, {
-				"countyCode": "341823",
-				"countyName": "泾县"
-			}, {
-				"countyCode": "341825",
-				"countyName": "旌德县"
-			}, {
-				"countyCode": "341802",
-				"countyName": "宣州区"
-			}, {
-				"countyCode": "341824",
-				"countyName": "绩溪县"
-			}]
-		}, {
-			"cityCode": "340100",
-			"cityName": "合肥市",
-			"county": [{
-				"countyCode": "340181",
-				"countyName": "巢湖市"
-			}, {
-				"countyCode": "340104",
-				"countyName": "蜀山区"
-			}, {
-				"countyCode": "340122",
-				"countyName": "肥东县"
-			}, {
-				"countyCode": "340111",
-				"countyName": "包河区"
-			}, {
-				"countyCode": "340102",
-				"countyName": "瑶海区"
-			}, {
-				"countyCode": "340123",
-				"countyName": "肥西县"
-			}, {
-				"countyCode": "340124",
-				"countyName": "庐江县"
-			}, {
-				"countyCode": "340121",
-				"countyName": "长丰县"
-			}, {
-				"countyCode": "340103",
-				"countyName": "庐阳区"
-			}]
-		}, {
-			"cityCode": "341500",
-			"cityName": "六安市",
-			"county": [{
-				"countyCode": "341525",
-				"countyName": "霍山县"
-			}, {
-				"countyCode": "341502",
-				"countyName": "金安区"
-			}, {
-				"countyCode": "341503",
-				"countyName": "裕安区"
-			}, {
-				"countyCode": "341522",
-				"countyName": "霍邱县"
-			}, {
-				"countyCode": "341504",
-				"countyName": "叶集区"
-			}, {
-				"countyCode": "341523",
-				"countyName": "舒城县"
-			}, {
-				"countyCode": "341524",
-				"countyName": "金寨县"
-			}]
-		}]
-	}, {
-		"provinceCode": "350000",
-		"provinceName": "福建省",
-		"city": [{
-			"cityCode": "350200",
-			"cityName": "厦门市",
-			"county": [{
-				"countyCode": "350206",
-				"countyName": "湖里区"
-			}, {
-				"countyCode": "350212",
-				"countyName": "同安区"
-			}, {
-				"countyCode": "350203",
-				"countyName": "思明区"
-			}, {
-				"countyCode": "350213",
-				"countyName": "翔安区"
-			}, {
-				"countyCode": "350205",
-				"countyName": "海沧区"
-			}, {
-				"countyCode": "350211",
-				"countyName": "集美区"
-			}]
-		}, {
-			"cityCode": "350800",
-			"cityName": "龙岩市",
-			"county": [{
-				"countyCode": "350881",
-				"countyName": "漳平市"
-			}, {
-				"countyCode": "350825",
-				"countyName": "连城县"
-			}, {
-				"countyCode": "350821",
-				"countyName": "长汀县"
-			}, {
-				"countyCode": "350802",
-				"countyName": "新罗区"
-			}, {
-				"countyCode": "350823",
-				"countyName": "上杭县"
-			}, {
-				"countyCode": "350822",
-				"countyName": "永定区"
-			}, {
-				"countyCode": "350824",
-				"countyName": "武平县"
-			}]
-		}, {
-			"cityCode": "350100",
-			"cityName": "福州市",
-			"county": [{
-				"countyCode": "350124",
-				"countyName": "闽清县"
-			}, {
-				"countyCode": "350103",
-				"countyName": "台江区"
-			}, {
-				"countyCode": "350121",
-				"countyName": "闽侯县"
-			}, {
-				"countyCode": "350182",
-				"countyName": "长乐区"
-			}, {
-				"countyCode": "350125",
-				"countyName": "永泰县"
-			}, {
-				"countyCode": "350111",
-				"countyName": "晋安区"
-			}, {
-				"countyCode": "350123",
-				"countyName": "罗源县"
-			}, {
-				"countyCode": "350102",
-				"countyName": "鼓楼区"
-			}, {
-				"countyCode": "350105",
-				"countyName": "马尾区"
-			}, {
-				"countyCode": "350104",
-				"countyName": "仓山区"
-			}, {
-				"countyCode": "350128",
-				"countyName": "平潭县"
-			}, {
-				"countyCode": "350181",
-				"countyName": "福清市"
-			}, {
-				"countyCode": "350122",
-				"countyName": "连江县"
-			}]
-		}, {
-			"cityCode": "350700",
-			"cityName": "南平市",
-			"county": [{
-				"countyCode": "350724",
-				"countyName": "松溪县"
-			}, {
-				"countyCode": "350783",
-				"countyName": "建瓯市"
-			}, {
-				"countyCode": "350725",
-				"countyName": "政和县"
-			}, {
-				"countyCode": "350723",
-				"countyName": "光泽县"
-			}, {
-				"countyCode": "350721",
-				"countyName": "顺昌县"
-			}, {
-				"countyCode": "350781",
-				"countyName": "邵武市"
-			}, {
-				"countyCode": "350782",
-				"countyName": "武夷山市"
-			}, {
-				"countyCode": "350722",
-				"countyName": "浦城县"
-			}, {
-				"countyCode": "350784",
-				"countyName": "建阳区"
-			}, {
-				"countyCode": "350702",
-				"countyName": "延平区"
-			}]
-		}, {
-			"cityCode": "350900",
-			"cityName": "宁德市",
-			"county": [{
-				"countyCode": "350922",
-				"countyName": "古田县"
-			}, {
-				"countyCode": "350924",
-				"countyName": "寿宁县"
-			}, {
-				"countyCode": "350902",
-				"countyName": "蕉城区"
-			}, {
-				"countyCode": "350926",
-				"countyName": "柘荣县"
-			}, {
-				"countyCode": "350925",
-				"countyName": "周宁县"
-			}, {
-				"countyCode": "350982",
-				"countyName": "福鼎市"
-			}, {
-				"countyCode": "350923",
-				"countyName": "屏南县"
-			}, {
-				"countyCode": "350981",
-				"countyName": "福安市"
-			}, {
-				"countyCode": "350921",
-				"countyName": "霞浦县"
-			}]
-		}, {
-			"cityCode": "350500",
-			"cityName": "泉州市",
-			"county": [{
-				"countyCode": "350526",
-				"countyName": "德化县"
-			}, {
-				"countyCode": "350582",
-				"countyName": "晋江市"
-			}, {
-				"countyCode": "350583",
-				"countyName": "南安市"
-			}, {
-				"countyCode": "350503",
-				"countyName": "丰泽区"
-			}, {
-				"countyCode": "350581",
-				"countyName": "石狮市"
-			}, {
-				"countyCode": "350525",
-				"countyName": "永春县"
-			}, {
-				"countyCode": "350521",
-				"countyName": "惠安县"
-			}, {
-				"countyCode": "350524",
-				"countyName": "安溪县"
-			}, {
-				"countyCode": "350502",
-				"countyName": "鲤城区"
-			}, {
-				"countyCode": "350505",
-				"countyName": "泉港区"
-			}, {
-				"countyCode": "350527",
-				"countyName": "金门县"
-			}, {
-				"countyCode": "350504",
-				"countyName": "洛江区"
-			}]
-		}, {
-			"cityCode": "350400",
-			"cityName": "三明市",
-			"county": [{
-				"countyCode": "350421",
-				"countyName": "明溪县"
-			}, {
-				"countyCode": "350403",
-				"countyName": "三元区"
-			}, {
-				"countyCode": "350423",
-				"countyName": "清流县"
-			}, {
-				"countyCode": "350426",
-				"countyName": "尤溪县"
-			}, {
-				"countyCode": "350481",
-				"countyName": "永安市"
-			}, {
-				"countyCode": "350424",
-				"countyName": "宁化县"
-			}, {
-				"countyCode": "350425",
-				"countyName": "大田县"
-			}, {
-				"countyCode": "350427",
-				"countyName": "沙县"
-			}, {
-				"countyCode": "350430",
-				"countyName": "建宁县"
-			}, {
-				"countyCode": "350428",
-				"countyName": "将乐县"
-			}, {
-				"countyCode": "350402",
-				"countyName": "梅列区"
-			}, {
-				"countyCode": "350429",
-				"countyName": "泰宁县"
-			}]
-		}, {
-			"cityCode": "350300",
-			"cityName": "莆田市",
-			"county": [{
-				"countyCode": "350322",
-				"countyName": "仙游县"
-			}, {
-				"countyCode": "350303",
-				"countyName": "涵江区"
-			}, {
-				"countyCode": "350304",
-				"countyName": "荔城区"
-			}, {
-				"countyCode": "350302",
-				"countyName": "城厢区"
-			}, {
-				"countyCode": "350305",
-				"countyName": "秀屿区"
-			}]
-		}, {
-			"cityCode": "350600",
-			"cityName": "漳州市",
-			"county": [{
-				"countyCode": "350629",
-				"countyName": "华安县"
-			}, {
-				"countyCode": "350623",
-				"countyName": "漳浦县"
-			}, {
-				"countyCode": "350602",
-				"countyName": "芗城区"
-			}, {
-				"countyCode": "350625",
-				"countyName": "长泰县"
-			}, {
-				"countyCode": "350603",
-				"countyName": "龙文区"
-			}, {
-				"countyCode": "350622",
-				"countyName": "云霄县"
-			}, {
-				"countyCode": "350628",
-				"countyName": "平和县"
-			}, {
-				"countyCode": "350627",
-				"countyName": "南靖县"
-			}, {
-				"countyCode": "350681",
-				"countyName": "龙海市"
-			}, {
-				"countyCode": "350624",
-				"countyName": "诏安县"
-			}, {
-				"countyCode": "350626",
-				"countyName": "东山县"
-			}]
-		}]
-	}, {
-		"provinceCode": "360000",
-		"provinceName": "江西省",
-		"city": [{
-			"cityCode": "361000",
-			"cityName": "抚州市",
-			"county": [{
-				"countyCode": "361002",
-				"countyName": "临川区"
-			}, {
-				"countyCode": "361023",
-				"countyName": "南丰县"
-			}, {
-				"countyCode": "361026",
-				"countyName": "宜黄县"
-			}, {
-				"countyCode": "361028",
-				"countyName": "资溪县"
-			}, {
-				"countyCode": "361029",
-				"countyName": "东乡区"
-			}, {
-				"countyCode": "361027",
-				"countyName": "金溪县"
-			}, {
-				"countyCode": "361022",
-				"countyName": "黎川县"
-			}, {
-				"countyCode": "361021",
-				"countyName": "南城县"
-			}, {
-				"countyCode": "361025",
-				"countyName": "乐安县"
-			}, {
-				"countyCode": "361024",
-				"countyName": "崇仁县"
-			}, {
-				"countyCode": "361030",
-				"countyName": "广昌县"
-			}]
-		}, {
-			"cityCode": "360900",
-			"cityName": "宜春市",
-			"county": [{
-				"countyCode": "360981",
-				"countyName": "丰城市"
-			}, {
-				"countyCode": "360902",
-				"countyName": "袁州区"
-			}, {
-				"countyCode": "360921",
-				"countyName": "奉新县"
-			}, {
-				"countyCode": "360983",
-				"countyName": "高安市"
-			}, {
-				"countyCode": "360922",
-				"countyName": "万载县"
-			}, {
-				"countyCode": "360926",
-				"countyName": "铜鼓县"
-			}, {
-				"countyCode": "360923",
-				"countyName": "上高县"
-			}, {
-				"countyCode": "360924",
-				"countyName": "宜丰县"
-			}, {
-				"countyCode": "360925",
-				"countyName": "靖安县"
-			}, {
-				"countyCode": "360982",
-				"countyName": "樟树市"
-			}]
-		}, {
-			"cityCode": "360100",
-			"cityName": "南昌市",
-			"county": [{
-				"countyCode": "360104",
-				"countyName": "青云谱区"
-			}, {
-				"countyCode": "360105",
-				"countyName": "湾里区"
-			}, {
-				"countyCode": "360124",
-				"countyName": "进贤县"
-			}, {
-				"countyCode": "360102",
-				"countyName": "东湖区"
-			}, {
-				"countyCode": "360123",
-				"countyName": "安义县"
-			}, {
-				"countyCode": "360122",
-				"countyName": "新建区"
-			}, {
-				"countyCode": "360121",
-				"countyName": "南昌县"
-			}, {
-				"countyCode": "360111",
-				"countyName": "青山湖区"
-			}, {
-				"countyCode": "360103",
-				"countyName": "西湖区"
-			}]
-		}, {
-			"cityCode": "360700",
-			"cityName": "赣州市",
-			"county": [{
-				"countyCode": "360725",
-				"countyName": "崇义县"
-			}, {
-				"countyCode": "360727",
-				"countyName": "龙南县"
-			}, {
-				"countyCode": "360728",
-				"countyName": "定南县"
-			}, {
-				"countyCode": "360723",
-				"countyName": "大余县"
-			}, {
-				"countyCode": "360734",
-				"countyName": "寻乌县"
-			}, {
-				"countyCode": "360702",
-				"countyName": "章贡区"
-			}, {
-				"countyCode": "360726",
-				"countyName": "安远县"
-			}, {
-				"countyCode": "360729",
-				"countyName": "全南县"
-			}, {
-				"countyCode": "360735",
-				"countyName": "石城县"
-			}, {
-				"countyCode": "360782",
-				"countyName": "南康区"
-			}, {
-				"countyCode": "360721",
-				"countyName": "赣县区"
-			}, {
-				"countyCode": "360732",
-				"countyName": "兴国县"
-			}, {
-				"countyCode": "360781",
-				"countyName": "瑞金市"
-			}, {
-				"countyCode": "360724",
-				"countyName": "上犹县"
-			}, {
-				"countyCode": "360730",
-				"countyName": "宁都县"
-			}, {
-				"countyCode": "360733",
-				"countyName": "会昌县"
-			}, {
-				"countyCode": "360722",
-				"countyName": "信丰县"
-			}, {
-				"countyCode": "360731",
-				"countyName": "于都县"
-			}]
-		}, {
-			"cityCode": "360200",
-			"cityName": "景德镇市",
-			"county": [{
-				"countyCode": "360222",
-				"countyName": "浮梁县"
-			}, {
-				"countyCode": "360281",
-				"countyName": "乐平市"
-			}, {
-				"countyCode": "360202",
-				"countyName": "昌江区"
-			}, {
-				"countyCode": "360203",
-				"countyName": "珠山区"
-			}]
-		}, {
-			"cityCode": "360800",
-			"cityName": "吉安市",
-			"county": [{
-				"countyCode": "360829",
-				"countyName": "安福县"
-			}, {
-				"countyCode": "360821",
-				"countyName": "吉安县"
-			}, {
-				"countyCode": "360827",
-				"countyName": "遂川县"
-			}, {
-				"countyCode": "360803",
-				"countyName": "青原区"
-			}, {
-				"countyCode": "360828",
-				"countyName": "万安县"
-			}, {
-				"countyCode": "360826",
-				"countyName": "泰和县"
-			}, {
-				"countyCode": "360823",
-				"countyName": "峡江县"
-			}, {
-				"countyCode": "360822",
-				"countyName": "吉水县"
-			}, {
-				"countyCode": "360802",
-				"countyName": "吉州区"
-			}, {
-				"countyCode": "360824",
-				"countyName": "新干县"
-			}, {
-				"countyCode": "360830",
-				"countyName": "永新县"
-			}, {
-				"countyCode": "360881",
-				"countyName": "井冈山市"
-			}, {
-				"countyCode": "360825",
-				"countyName": "永丰县"
-			}]
-		}, {
-			"cityCode": "360400",
-			"cityName": "九江市",
-			"county": [{
-				"countyCode": "360423",
-				"countyName": "武宁县"
-			}, {
-				"countyCode": "360421",
-				"countyName": "柴桑区"
-			}, {
-				"countyCode": "360429",
-				"countyName": "湖口县"
-			}, {
-				"countyCode": "360427",
-				"countyName": "庐山市"
-			}, {
-				"countyCode": "360426",
-				"countyName": "德安县"
-			}, {
-				"countyCode": "360428",
-				"countyName": "都昌县"
-			}, {
-				"countyCode": "360430",
-				"countyName": "彭泽县"
-			}, {
-				"countyCode": "360403",
-				"countyName": "浔阳区"
-			}, {
-				"countyCode": "360402",
-				"countyName": "濂溪区"
-			}, {
-				"countyCode": "360424",
-				"countyName": "修水县"
-			}, {
-				"countyCode": "360481",
-				"countyName": "瑞昌市"
-			}, {
-				"countyCode": "360425",
-				"countyName": "永修县"
-			}, {
-				"countyCode": "360482",
-				"countyName": "共青城市"
-			}]
-		}, {
-			"cityCode": "360600",
-			"cityName": "鹰潭市",
-			"county": [{
-				"countyCode": "360602",
-				"countyName": "月湖区"
-			}, {
-				"countyCode": "360622",
-				"countyName": "余江区"
-			}, {
-				"countyCode": "360681",
-				"countyName": "贵溪市"
-			}]
-		}, {
-			"cityCode": "360500",
-			"cityName": "新余市",
-			"county": [{
-				"countyCode": "360521",
-				"countyName": "分宜县"
-			}, {
-				"countyCode": "360502",
-				"countyName": "渝水区"
-			}]
-		}, {
-			"cityCode": "361100",
-			"cityName": "上饶市",
-			"county": [{
-				"countyCode": "361181",
-				"countyName": "德兴市"
-			}, {
-				"countyCode": "361102",
-				"countyName": "信州区"
-			}, {
-				"countyCode": "361130",
-				"countyName": "婺源县"
-			}, {
-				"countyCode": "361128",
-				"countyName": "鄱阳县"
-			}, {
-				"countyCode": "361129",
-				"countyName": "万年县"
-			}, {
-				"countyCode": "361123",
-				"countyName": "玉山县"
-			}, {
-				"countyCode": "361122",
-				"countyName": "广丰区"
-			}, {
-				"countyCode": "361124",
-				"countyName": "铅山县"
-			}, {
-				"countyCode": "361121",
-				"countyName": "上饶县"
-			}, {
-				"countyCode": "361127",
-				"countyName": "余干县"
-			}, {
-				"countyCode": "361126",
-				"countyName": "弋阳县"
-			}, {
-				"countyCode": "361125",
-				"countyName": "横峰县"
-			}]
-		}, {
-			"cityCode": "360300",
-			"cityName": "萍乡市",
-			"county": [{
-				"countyCode": "360322",
-				"countyName": "上栗县"
-			}, {
-				"countyCode": "360313",
-				"countyName": "湘东区"
-			}, {
-				"countyCode": "360302",
-				"countyName": "安源区"
-			}, {
-				"countyCode": "360323",
-				"countyName": "芦溪县"
-			}, {
-				"countyCode": "360321",
-				"countyName": "莲花县"
-			}]
-		}]
-	}, {
-		"provinceCode": "370000",
-		"provinceName": "山东省",
-		"city": [{
-			"cityCode": "370400",
-			"cityName": "枣庄市",
-			"county": [{
-				"countyCode": "370402",
-				"countyName": "市中区"
-			}, {
-				"countyCode": "370481",
-				"countyName": "滕州市"
-			}, {
-				"countyCode": "370406",
-				"countyName": "山亭区"
-			}, {
-				"countyCode": "370405",
-				"countyName": "台儿庄区"
-			}, {
-				"countyCode": "370403",
-				"countyName": "薛城区"
-			}, {
-				"countyCode": "370404",
-				"countyName": "峄城区"
-			}]
-		}, {
-			"cityCode": "371100",
-			"cityName": "日照市",
-			"county": [{
-				"countyCode": "371121",
-				"countyName": "五莲县"
-			}, {
-				"countyCode": "371102",
-				"countyName": "东港区"
-			}, {
-				"countyCode": "371122",
-				"countyName": "莒县"
-			}, {
-				"countyCode": "371103",
-				"countyName": "岚山区"
-			}]
-		}, {
-			"cityCode": "371700",
-			"cityName": "菏泽市",
-			"county": [{
-				"countyCode": "371722",
-				"countyName": "单县"
-			}, {
-				"countyCode": "371724",
-				"countyName": "巨野县"
-			}, {
-				"countyCode": "371721",
-				"countyName": "曹县"
-			}, {
-				"countyCode": "371702",
-				"countyName": "牡丹区"
-			}, {
-				"countyCode": "371727",
-				"countyName": "定陶区"
-			}, {
-				"countyCode": "371728",
-				"countyName": "东明县"
-			}, {
-				"countyCode": "371723",
-				"countyName": "成武县"
-			}, {
-				"countyCode": "371725",
-				"countyName": "郓城县"
-			}, {
-				"countyCode": "371726",
-				"countyName": "鄄城县"
-			}]
-		}, {
-			"cityCode": "371500",
-			"cityName": "聊城市",
-			"county": [{
-				"countyCode": "371524",
-				"countyName": "东阿县"
-			}, {
-				"countyCode": "371521",
-				"countyName": "阳谷县"
-			}, {
-				"countyCode": "371526",
-				"countyName": "高唐县"
-			}, {
-				"countyCode": "371502",
-				"countyName": "东昌府区"
-			}, {
-				"countyCode": "371581",
-				"countyName": "临清市"
-			}, {
-				"countyCode": "371522",
-				"countyName": "莘县"
-			}, {
-				"countyCode": "371525",
-				"countyName": "冠县"
-			}, {
-				"countyCode": "371523",
-				"countyName": "茌平县"
-			}]
-		}, {
-			"cityCode": "371000",
-			"cityName": "威海市",
-			"county": [{
-				"countyCode": "371002",
-				"countyName": "环翠区"
-			}, {
-				"countyCode": "371083",
-				"countyName": "乳山市"
-			}, {
-				"countyCode": "371082",
-				"countyName": "荣成市"
-			}, {
-				"countyCode": "371081",
-				"countyName": "文登区"
-			}]
-		}, {
-			"cityCode": "370300",
-			"cityName": "淄博市",
-			"county": [{
-				"countyCode": "370322",
-				"countyName": "高青县"
-			}, {
-				"countyCode": "370321",
-				"countyName": "桓台县"
-			}, {
-				"countyCode": "370305",
-				"countyName": "临淄区"
-			}, {
-				"countyCode": "370306",
-				"countyName": "周村区"
-			}, {
-				"countyCode": "370323",
-				"countyName": "沂源县"
-			}, {
-				"countyCode": "370304",
-				"countyName": "博山区"
-			}, {
-				"countyCode": "370302",
-				"countyName": "淄川区"
-			}, {
-				"countyCode": "370303",
-				"countyName": "张店区"
-			}]
-		}, {
-			"cityCode": "370800",
-			"cityName": "济宁市",
-			"county": [{
-				"countyCode": "370811",
-				"countyName": "任城区"
-			}, {
-				"countyCode": "370802",
-				"countyName": "市中区"
-			}, {
-				"countyCode": "370882",
-				"countyName": "兖州区"
-			}, {
-				"countyCode": "370830",
-				"countyName": "汶上县"
-			}, {
-				"countyCode": "370883",
-				"countyName": "邹城市"
-			}, {
-				"countyCode": "370828",
-				"countyName": "金乡县"
-			}, {
-				"countyCode": "370829",
-				"countyName": "嘉祥县"
-			}, {
-				"countyCode": "370826",
-				"countyName": "微山县"
-			}, {
-				"countyCode": "370881",
-				"countyName": "曲阜市"
-			}, {
-				"countyCode": "370827",
-				"countyName": "鱼台县"
-			}, {
-				"countyCode": "370831",
-				"countyName": "泗水县"
-			}, {
-				"countyCode": "370832",
-				"countyName": "梁山县"
-			}]
-		}, {
-			"cityCode": "371200",
-			"cityName": "莱芜市",
-			"county": [{
-				"countyCode": "371202",
-				"countyName": "莱城区"
-			}, {
-				"countyCode": "371203",
-				"countyName": "钢城区"
-			}]
-		}, {
-			"cityCode": "370500",
-			"cityName": "东营市",
-			"county": [{
-				"countyCode": "370523",
-				"countyName": "广饶县"
-			}, {
-				"countyCode": "370521",
-				"countyName": "垦利区"
-			}, {
-				"countyCode": "370502",
-				"countyName": "东营区"
-			}, {
-				"countyCode": "370522",
-				"countyName": "利津县"
-			}, {
-				"countyCode": "370503",
-				"countyName": "河口区"
-			}]
-		}, {
-			"cityCode": "371600",
-			"cityName": "滨州市",
-			"county": [{
-				"countyCode": "371625",
-				"countyName": "博兴县"
-			}, {
-				"countyCode": "371622",
-				"countyName": "阳信县"
-			}, {
-				"countyCode": "371621",
-				"countyName": "惠民县"
-			}, {
-				"countyCode": "371626",
-				"countyName": "邹平市"
-			}, {
-				"countyCode": "371602",
-				"countyName": "滨城区"
-			}, {
-				"countyCode": "371623",
-				"countyName": "无棣县"
-			}, {
-				"countyCode": "371624",
-				"countyName": "沾化区"
-			}]
-		}, {
-			"cityCode": "371300",
-			"cityName": "临沂市",
-			"county": [{
-				"countyCode": "371328",
-				"countyName": "蒙阴县"
-			}, {
-				"countyCode": "371302",
-				"countyName": "兰山区"
-			}, {
-				"countyCode": "371329",
-				"countyName": "临沭县"
-			}, {
-				"countyCode": "371321",
-				"countyName": "沂南县"
-			}, {
-				"countyCode": "371311",
-				"countyName": "罗庄区"
-			}, {
-				"countyCode": "371325",
-				"countyName": "费县"
-			}, {
-				"countyCode": "371326",
-				"countyName": "平邑县"
-			}, {
-				"countyCode": "371327",
-				"countyName": "莒南县"
-			}, {
-				"countyCode": "371312",
-				"countyName": "河东区"
-			}, {
-				"countyCode": "371324",
-				"countyName": "兰陵县"
-			}, {
-				"countyCode": "371323",
-				"countyName": "沂水县"
-			}, {
-				"countyCode": "371322",
-				"countyName": "郯城县"
-			}]
-		}, {
-			"cityCode": "370200",
-			"cityName": "青岛市",
-			"county": [{
-				"countyCode": "370211",
-				"countyName": "黄岛区"
-			}, {
-				"countyCode": "370203",
-				"countyName": "市北区"
-			}, {
-				"countyCode": "370281",
-				"countyName": "胶州市"
-			}, {
-				"countyCode": "370212",
-				"countyName": "崂山区"
-			}, {
-				"countyCode": "370202",
-				"countyName": "市南区"
-			}, {
-				"countyCode": "370282",
-				"countyName": "即墨区"
-			}, {
-				"countyCode": "370205",
-				"countyName": "四方区"
-			}, {
-				"countyCode": "370214",
-				"countyName": "城阳区"
-			}, {
-				"countyCode": "370283",
-				"countyName": "平度市"
-			}, {
-				"countyCode": "370213",
-				"countyName": "李沧区"
-			}, {
-				"countyCode": "370285",
-				"countyName": "莱西市"
-			}]
-		}, {
-			"cityCode": "370100",
-			"cityName": "济南市",
-			"county": [{
-				"countyCode": "370124",
-				"countyName": "平阴县"
-			}, {
-				"countyCode": "370103",
-				"countyName": "市中区"
-			}, {
-				"countyCode": "370181",
-				"countyName": "章丘区"
-			}, {
-				"countyCode": "370126",
-				"countyName": "商河县"
-			}, {
-				"countyCode": "370125",
-				"countyName": "济阳区"
-			}, {
-				"countyCode": "370113",
-				"countyName": "长清区"
-			}, {
-				"countyCode": "370102",
-				"countyName": "历下区"
-			}, {
-				"countyCode": "370112",
-				"countyName": "历城区"
-			}, {
-				"countyCode": "370105",
-				"countyName": "天桥区"
-			}, {
-				"countyCode": "370104",
-				"countyName": "槐荫区"
-			}]
-		}, {
-			"cityCode": "371400",
-			"cityName": "德州市",
-			"county": [{
-				"countyCode": "371481",
-				"countyName": "乐陵市"
-			}, {
-				"countyCode": "371423",
-				"countyName": "庆云县"
-			}, {
-				"countyCode": "371421",
-				"countyName": "陵城区"
-			}, {
-				"countyCode": "371482",
-				"countyName": "禹城市"
-			}, {
-				"countyCode": "371424",
-				"countyName": "临邑县"
-			}, {
-				"countyCode": "371426",
-				"countyName": "平原县"
-			}, {
-				"countyCode": "371425",
-				"countyName": "齐河县"
-			}, {
-				"countyCode": "371427",
-				"countyName": "夏津县"
-			}, {
-				"countyCode": "371422",
-				"countyName": "宁津县"
-			}, {
-				"countyCode": "371428",
-				"countyName": "武城县"
-			}, {
-				"countyCode": "371402",
-				"countyName": "德城区"
-			}]
-		}, {
-			"cityCode": "370900",
-			"cityName": "泰安市",
-			"county": [{
-				"countyCode": "370911",
-				"countyName": "岱岳区"
-			}, {
-				"countyCode": "370923",
-				"countyName": "东平县"
-			}, {
-				"countyCode": "370983",
-				"countyName": "肥城市"
-			}, {
-				"countyCode": "370921",
-				"countyName": "宁阳县"
-			}, {
-				"countyCode": "370982",
-				"countyName": "新泰市"
-			}, {
-				"countyCode": "370902",
-				"countyName": "泰山区"
-			}]
-		}, {
-			"cityCode": "370600",
-			"cityName": "烟台市",
-			"county": [{
-				"countyCode": "370686",
-				"countyName": "栖霞市"
-			}, {
-				"countyCode": "370634",
-				"countyName": "长岛县"
-			}, {
-				"countyCode": "370613",
-				"countyName": "莱山区"
-			}, {
-				"countyCode": "370612",
-				"countyName": "牟平区"
-			}, {
-				"countyCode": "370681",
-				"countyName": "龙口市"
-			}, {
-				"countyCode": "370683",
-				"countyName": "莱州市"
-			}, {
-				"countyCode": "370602",
-				"countyName": "芝罘区"
-			}, {
-				"countyCode": "370682",
-				"countyName": "莱阳市"
-			}, {
-				"countyCode": "370685",
-				"countyName": "招远市"
-			}, {
-				"countyCode": "370611",
-				"countyName": "福山区"
-			}, {
-				"countyCode": "370684",
-				"countyName": "蓬莱市"
-			}, {
-				"countyCode": "370687",
-				"countyName": "海阳市"
-			}]
-		}, {
-			"cityCode": "370700",
-			"cityName": "潍坊市",
-			"county": [{
-				"countyCode": "370781",
-				"countyName": "青州市"
-			}, {
-				"countyCode": "370782",
-				"countyName": "诸城市"
-			}, {
-				"countyCode": "370703",
-				"countyName": "寒亭区"
-			}, {
-				"countyCode": "370785",
-				"countyName": "高密市"
-			}, {
-				"countyCode": "370702",
-				"countyName": "潍城区"
-			}, {
-				"countyCode": "370725",
-				"countyName": "昌乐县"
-			}, {
-				"countyCode": "370704",
-				"countyName": "坊子区"
-			}, {
-				"countyCode": "370784",
-				"countyName": "安丘市"
-			}, {
-				"countyCode": "370705",
-				"countyName": "奎文区"
-			}, {
-				"countyCode": "370724",
-				"countyName": "临朐县"
-			}, {
-				"countyCode": "370786",
-				"countyName": "昌邑市"
-			}, {
-				"countyCode": "370783",
-				"countyName": "寿光市"
-			}]
-		}]
-	}, {
-		"provinceCode": "410000",
-		"provinceName": "河南省",
-		"city": [{
-			"cityCode": "411500",
-			"cityName": "信阳市",
-			"county": [{
-				"countyCode": "411523",
-				"countyName": "新县"
-			}, {
-				"countyCode": "411525",
-				"countyName": "固始县"
-			}, {
-				"countyCode": "411524",
-				"countyName": "商城县"
-			}, {
-				"countyCode": "411528",
-				"countyName": "息县"
-			}, {
-				"countyCode": "411502",
-				"countyName": "浉河区"
-			}, {
-				"countyCode": "411521",
-				"countyName": "罗山县"
-			}, {
-				"countyCode": "411522",
-				"countyName": "光山县"
-			}, {
-				"countyCode": "411503",
-				"countyName": "平桥区"
-			}, {
-				"countyCode": "411526",
-				"countyName": "潢川县"
-			}, {
-				"countyCode": "411527",
-				"countyName": "淮滨县"
-			}]
-		}, {
-			"cityCode": "410300",
-			"cityName": "洛阳市",
-			"county": [{
-				"countyCode": "410323",
-				"countyName": "新安县"
-			}, {
-				"countyCode": "410306",
-				"countyName": "吉利区"
-			}, {
-				"countyCode": "410328",
-				"countyName": "洛宁县"
-			}, {
-				"countyCode": "410325",
-				"countyName": "嵩县"
-			}, {
-				"countyCode": "410302",
-				"countyName": "老城区"
-			}, {
-				"countyCode": "410322",
-				"countyName": "孟津县"
-			}, {
-				"countyCode": "410311",
-				"countyName": "洛龙区"
-			}, {
-				"countyCode": "410304",
-				"countyName": "瀍河回族区"
-			}, {
-				"countyCode": "410327",
-				"countyName": "宜阳县"
-			}, {
-				"countyCode": "410381",
-				"countyName": "偃师市"
-			}, {
-				"countyCode": "410326",
-				"countyName": "汝阳县"
-			}, {
-				"countyCode": "410329",
-				"countyName": "伊川县"
-			}, {
-				"countyCode": "410305",
-				"countyName": "涧西区"
-			}, {
-				"countyCode": "410324",
-				"countyName": "栾川县"
-			}, {
-				"countyCode": "410303",
-				"countyName": "西工区"
-			}]
-		}, {
-			"cityCode": "411200",
-			"cityName": "三门峡市",
-			"county": [{
-				"countyCode": "411222",
-				"countyName": "陕州区"
-			}, {
-				"countyCode": "411281",
-				"countyName": "义马市"
-			}, {
-				"countyCode": "411282",
-				"countyName": "灵宝市"
-			}, {
-				"countyCode": "411221",
-				"countyName": "渑池县"
-			}, {
-				"countyCode": "411202",
-				"countyName": "湖滨区"
-			}, {
-				"countyCode": "411224",
-				"countyName": "卢氏县"
-			}]
-		}, {
-			"cityCode": "411700",
-			"cityName": "驻马店市",
-			"county": [{
-				"countyCode": "411729",
-				"countyName": "新蔡县"
-			}, {
-				"countyCode": "411728",
-				"countyName": "遂平县"
-			}, {
-				"countyCode": "411727",
-				"countyName": "汝南县"
-			}, {
-				"countyCode": "411724",
-				"countyName": "正阳县"
-			}, {
-				"countyCode": "411723",
-				"countyName": "平舆县"
-			}, {
-				"countyCode": "411725",
-				"countyName": "确山县"
-			}, {
-				"countyCode": "411722",
-				"countyName": "上蔡县"
-			}, {
-				"countyCode": "411702",
-				"countyName": "驿城区"
-			}, {
-				"countyCode": "411721",
-				"countyName": "西平县"
-			}, {
-				"countyCode": "411726",
-				"countyName": "泌阳县"
-			}]
-		}, {
-			"cityCode": "410500",
-			"cityName": "安阳市",
-			"county": [{
-				"countyCode": "410505",
-				"countyName": "殷都区"
-			}, {
-				"countyCode": "410527",
-				"countyName": "内黄县"
-			}, {
-				"countyCode": "410522",
-				"countyName": "安阳县"
-			}, {
-				"countyCode": "410526",
-				"countyName": "滑县"
-			}, {
-				"countyCode": "410502",
-				"countyName": "文峰区"
-			}, {
-				"countyCode": "410503",
-				"countyName": "北关区"
-			}, {
-				"countyCode": "410506",
-				"countyName": "龙安区"
-			}, {
-				"countyCode": "410523",
-				"countyName": "汤阴县"
-			}, {
-				"countyCode": "410581",
-				"countyName": "林州市"
-			}]
-		}, {
-			"cityCode": "411300",
-			"cityName": "南阳市",
-			"county": [{
-				"countyCode": "411325",
-				"countyName": "内乡县"
-			}, {
-				"countyCode": "411328",
-				"countyName": "唐河县"
-			}, {
-				"countyCode": "411381",
-				"countyName": "邓州市"
-			}, {
-				"countyCode": "411322",
-				"countyName": "方城县"
-			}, {
-				"countyCode": "411330",
-				"countyName": "桐柏县"
-			}, {
-				"countyCode": "411321",
-				"countyName": "南召县"
-			}, {
-				"countyCode": "411323",
-				"countyName": "西峡县"
-			}, {
-				"countyCode": "411327",
-				"countyName": "社旗县"
-			}, {
-				"countyCode": "411302",
-				"countyName": "宛城区"
-			}, {
-				"countyCode": "411303",
-				"countyName": "卧龙区"
-			}, {
-				"countyCode": "411326",
-				"countyName": "淅川县"
-			}, {
-				"countyCode": "411329",
-				"countyName": "新野县"
-			}, {
-				"countyCode": "411324",
-				"countyName": "镇平县"
-			}]
-		}, {
-			"cityCode": "410700",
-			"cityName": "新乡市",
-			"county": [{
-				"countyCode": "410711",
-				"countyName": "牧野区"
-			}, {
-				"countyCode": "410721",
-				"countyName": "新乡县"
-			}, {
-				"countyCode": "410704",
-				"countyName": "凤泉区"
-			}, {
-				"countyCode": "410781",
-				"countyName": "卫辉市"
-			}, {
-				"countyCode": "410727",
-				"countyName": "封丘县"
-			}, {
-				"countyCode": "410702",
-				"countyName": "红旗区"
-			}, {
-				"countyCode": "410726",
-				"countyName": "延津县"
-			}, {
-				"countyCode": "410703",
-				"countyName": "卫滨区"
-			}, {
-				"countyCode": "410782",
-				"countyName": "辉县市"
-			}, {
-				"countyCode": "410728",
-				"countyName": "长垣县"
-			}, {
-				"countyCode": "410724",
-				"countyName": "获嘉县"
-			}, {
-				"countyCode": "410725",
-				"countyName": "原阳县"
-			}]
-		}, {
-			"cityCode": "410200",
-			"cityName": "开封市",
-			"county": [{
-				"countyCode": "410205",
-				"countyName": "禹王台区"
-			}, {
-				"countyCode": "410222",
-				"countyName": "通许县"
-			}, {
-				"countyCode": "410225",
-				"countyName": "兰考县"
-			}, {
-				"countyCode": "410223",
-				"countyName": "尉氏县"
-			}, {
-				"countyCode": "410203",
-				"countyName": "顺河回族区"
-			}, {
-				"countyCode": "410204",
-				"countyName": "鼓楼区"
-			}, {
-				"countyCode": "410224",
-				"countyName": "祥符区"
-			}, {
-				"countyCode": "410221",
-				"countyName": "杞县"
-			}, {
-				"countyCode": "410211",
-				"countyName": "金明区"
-			}, {
-				"countyCode": "410202",
-				"countyName": "龙亭区"
-			}]
-		}, {
-			"cityCode": "411400",
-			"cityName": "商丘市",
-			"county": [{
-				"countyCode": "411402",
-				"countyName": "梁园区"
-			}, {
-				"countyCode": "411422",
-				"countyName": "睢县"
-			}, {
-				"countyCode": "411423",
-				"countyName": "宁陵县"
-			}, {
-				"countyCode": "411421",
-				"countyName": "民权县"
-			}, {
-				"countyCode": "411424",
-				"countyName": "柘城县"
-			}, {
-				"countyCode": "411425",
-				"countyName": "虞城县"
-			}, {
-				"countyCode": "411426",
-				"countyName": "夏邑县"
-			}, {
-				"countyCode": "411481",
-				"countyName": "永城市"
-			}, {
-				"countyCode": "411403",
-				"countyName": "睢阳区"
-			}]
-		}, {
-			"cityCode": "411000",
-			"cityName": "许昌市",
-			"county": [{
-				"countyCode": "411024",
-				"countyName": "鄢陵县"
-			}, {
-				"countyCode": "411082",
-				"countyName": "长葛市"
-			}, {
-				"countyCode": "411002",
-				"countyName": "魏都区"
-			}, {
-				"countyCode": "411081",
-				"countyName": "禹州市"
-			}, {
-				"countyCode": "411025",
-				"countyName": "襄城县"
-			}, {
-				"countyCode": "411023",
-				"countyName": "建安区"
-			}]
-		}, {
-			"cityCode": "410100",
-			"cityName": "郑州市",
-			"county": [{
-				"countyCode": "410185",
-				"countyName": "登封市"
-			}, {
-				"countyCode": "410182",
-				"countyName": "荥阳市"
-			}, {
-				"countyCode": "410104",
-				"countyName": "管城回族区"
-			}, {
-				"countyCode": "410108",
-				"countyName": "惠济区"
-			}, {
-				"countyCode": "410122",
-				"countyName": "中牟县"
-			}, {
-				"countyCode": "410105",
-				"countyName": "金水区"
-			}, {
-				"countyCode": "410183",
-				"countyName": "新密市"
-			}, {
-				"countyCode": "410184",
-				"countyName": "新郑市"
-			}, {
-				"countyCode": "410181",
-				"countyName": "巩义市"
-			}, {
-				"countyCode": "410106",
-				"countyName": "上街区"
-			}, {
-				"countyCode": "410103",
-				"countyName": "二七区"
-			}, {
-				"countyCode": "410102",
-				"countyName": "中原区"
-			}]
-		}, {
-			"cityCode": "419001",
-			"cityName": "济源市",
-			"county": [{
-				"countyCode": "419001-1",
-				"countyName": "济源市"
-			}]
-		}, {
-			"cityCode": "410400",
-			"cityName": "平顶山市",
-			"county": [{
-				"countyCode": "410481",
-				"countyName": "舞钢市"
-			}, {
-				"countyCode": "410421",
-				"countyName": "宝丰县"
-			}, {
-				"countyCode": "410482",
-				"countyName": "汝州市"
-			}, {
-				"countyCode": "410404",
-				"countyName": "石龙区"
-			}, {
-				"countyCode": "410403",
-				"countyName": "卫东区"
-			}, {
-				"countyCode": "410411",
-				"countyName": "湛河区"
-			}, {
-				"countyCode": "410402",
-				"countyName": "新华区"
-			}, {
-				"countyCode": "410423",
-				"countyName": "鲁山县"
-			}, {
-				"countyCode": "410422",
-				"countyName": "叶县"
-			}, {
-				"countyCode": "410425",
-				"countyName": "郏县"
-			}]
-		}, {
-			"cityCode": "410900",
-			"cityName": "濮阳市",
-			"county": [{
-				"countyCode": "410902",
-				"countyName": "华龙区"
-			}, {
-				"countyCode": "410922",
-				"countyName": "清丰县"
-			}, {
-				"countyCode": "410926",
-				"countyName": "范县"
-			}, {
-				"countyCode": "410927",
-				"countyName": "台前县"
-			}, {
-				"countyCode": "410923",
-				"countyName": "南乐县"
-			}, {
-				"countyCode": "410928",
-				"countyName": "濮阳县"
-			}]
-		}, {
-			"cityCode": "410600",
-			"cityName": "鹤壁市",
-			"county": [{
-				"countyCode": "410603",
-				"countyName": "山城区"
-			}, {
-				"countyCode": "410611",
-				"countyName": "淇滨区"
-			}, {
-				"countyCode": "410602",
-				"countyName": "鹤山区"
-			}, {
-				"countyCode": "410621",
-				"countyName": "浚县"
-			}, {
-				"countyCode": "410622",
-				"countyName": "淇县"
-			}]
-		}, {
-			"cityCode": "411100",
-			"cityName": "漯河市",
-			"county": [{
-				"countyCode": "411102",
-				"countyName": "源汇区"
-			}, {
-				"countyCode": "411122",
-				"countyName": "临颍县"
-			}, {
-				"countyCode": "411103",
-				"countyName": "郾城区"
-			}, {
-				"countyCode": "411104",
-				"countyName": "召陵区"
-			}, {
-				"countyCode": "411121",
-				"countyName": "舞阳县"
-			}]
-		}, {
-			"cityCode": "411600",
-			"cityName": "周口市",
-			"county": [{
-				"countyCode": "411626",
-				"countyName": "淮阳县"
-			}, {
-				"countyCode": "411681",
-				"countyName": "项城市"
-			}, {
-				"countyCode": "411624",
-				"countyName": "沈丘县"
-			}, {
-				"countyCode": "411622",
-				"countyName": "西华县"
-			}, {
-				"countyCode": "411627",
-				"countyName": "太康县"
-			}, {
-				"countyCode": "411623",
-				"countyName": "商水县"
-			}, {
-				"countyCode": "411628",
-				"countyName": "鹿邑县"
-			}, {
-				"countyCode": "411602",
-				"countyName": "川汇区"
-			}, {
-				"countyCode": "411621",
-				"countyName": "扶沟县"
-			}, {
-				"countyCode": "411625",
-				"countyName": "郸城县"
-			}]
-		}, {
-			"cityCode": "410800",
-			"cityName": "焦作市",
-			"county": [{
-				"countyCode": "410883",
-				"countyName": "孟州市"
-			}, {
-				"countyCode": "410823",
-				"countyName": "武陟县"
-			}, {
-				"countyCode": "410882",
-				"countyName": "沁阳市"
-			}, {
-				"countyCode": "410822",
-				"countyName": "博爱县"
-			}, {
-				"countyCode": "410821",
-				"countyName": "修武县"
-			}, {
-				"countyCode": "410825",
-				"countyName": "温县"
-			}, {
-				"countyCode": "410804",
-				"countyName": "马村区"
-			}, {
-				"countyCode": "410802",
-				"countyName": "解放区"
-			}, {
-				"countyCode": "410811",
-				"countyName": "山阳区"
-			}, {
-				"countyCode": "410803",
-				"countyName": "中站区"
-			}]
-		}]
-	}, {
-		"provinceCode": "420000",
-		"provinceName": "湖北省",
-		"city": [{
-			"cityCode": "429004",
-			"cityName": "仙桃市",
-			"county": [{
-				"countyCode": "429004-1",
-				"countyName": "仙桃市"
-			}]
-		}, {
-			"cityCode": "421200",
-			"cityName": "咸宁市",
-			"county": [{
-				"countyCode": "421223",
-				"countyName": "崇阳县"
-			}, {
-				"countyCode": "421224",
-				"countyName": "通山县"
-			}, {
-				"countyCode": "421202",
-				"countyName": "咸安区"
-			}, {
-				"countyCode": "421222",
-				"countyName": "通城县"
-			}, {
-				"countyCode": "421221",
-				"countyName": "嘉鱼县"
-			}, {
-				"countyCode": "421281",
-				"countyName": "赤壁市"
-			}]
-		}, {
-			"cityCode": "421300",
-			"cityName": "随州市",
-			"county": [{
-				"countyCode": "421381",
-				"countyName": "广水市"
-			}, {
-				"countyCode": "421303",
-				"countyName": "曾都区"
-			}, {
-				"countyCode": "421321",
-				"countyName": "随县"
-			}]
-		}, {
-			"cityCode": "422800",
-			"cityName": "恩施土家族苗族自治州",
-			"county": [{
-				"countyCode": "422828",
-				"countyName": "鹤峰县"
-			}, {
-				"countyCode": "422825",
-				"countyName": "宣恩县"
-			}, {
-				"countyCode": "422801",
-				"countyName": "恩施市"
-			}, {
-				"countyCode": "422822",
-				"countyName": "建始县"
-			}, {
-				"countyCode": "422823",
-				"countyName": "巴东县"
-			}, {
-				"countyCode": "422826",
-				"countyName": "咸丰县"
-			}, {
-				"countyCode": "422827",
-				"countyName": "来凤县"
-			}, {
-				"countyCode": "422802",
-				"countyName": "利川市"
-			}]
-		}, {
-			"cityCode": "420900",
-			"cityName": "孝感市",
-			"county": [{
-				"countyCode": "420902",
-				"countyName": "孝南区"
-			}, {
-				"countyCode": "420981",
-				"countyName": "应城市"
-			}, {
-				"countyCode": "420923",
-				"countyName": "云梦县"
-			}, {
-				"countyCode": "420982",
-				"countyName": "安陆市"
-			}, {
-				"countyCode": "420922",
-				"countyName": "大悟县"
-			}, {
-				"countyCode": "420921",
-				"countyName": "孝昌县"
-			}, {
-				"countyCode": "420984",
-				"countyName": "汉川市"
-			}]
-		}, {
-			"cityCode": "420100",
-			"cityName": "武汉市",
-			"county": [{
-				"countyCode": "420104",
-				"countyName": "硚口区"
-			}, {
-				"countyCode": "420107",
-				"countyName": "青山区"
-			}, {
-				"countyCode": "420116",
-				"countyName": "黄陂区"
-			}, {
-				"countyCode": "420102",
-				"countyName": "江岸区"
-			}, {
-				"countyCode": "420115",
-				"countyName": "江夏区"
-			}, {
-				"countyCode": "420114",
-				"countyName": "蔡甸区"
-			}, {
-				"countyCode": "420106",
-				"countyName": "武昌区"
-			}, {
-				"countyCode": "420112",
-				"countyName": "东西湖区"
-			}, {
-				"countyCode": "420105",
-				"countyName": "汉阳区"
-			}, {
-				"countyCode": "420113",
-				"countyName": "汉南区"
-			}, {
-				"countyCode": "420111",
-				"countyName": "洪山区"
-			}, {
-				"countyCode": "420103",
-				"countyName": "江汉区"
-			}, {
-				"countyCode": "420117",
-				"countyName": "新洲区"
-			}]
-		}, {
-			"cityCode": "420500",
-			"cityName": "宜昌市",
-			"county": [{
-				"countyCode": "420502",
-				"countyName": "西陵区"
-			}, {
-				"countyCode": "420505",
-				"countyName": "猇亭区"
-			}, {
-				"countyCode": "420503",
-				"countyName": "伍家岗区"
-			}, {
-				"countyCode": "420581",
-				"countyName": "宜都市"
-			}, {
-				"countyCode": "420504",
-				"countyName": "点军区"
-			}, {
-				"countyCode": "420526",
-				"countyName": "兴山县"
-			}, {
-				"countyCode": "420525",
-				"countyName": "远安县"
-			}, {
-				"countyCode": "420527",
-				"countyName": "秭归县"
-			}, {
-				"countyCode": "420583",
-				"countyName": "枝江市"
-			}, {
-				"countyCode": "420529",
-				"countyName": "五峰土家族自治县"
-			}, {
-				"countyCode": "420582",
-				"countyName": "当阳市"
-			}, {
-				"countyCode": "420506",
-				"countyName": "夷陵区"
-			}, {
-				"countyCode": "420528",
-				"countyName": "长阳土家族自治县"
-			}]
-		}, {
-			"cityCode": "420800",
-			"cityName": "荆门市",
-			"county": [{
-				"countyCode": "420804",
-				"countyName": "掇刀区"
-			}, {
-				"countyCode": "420822",
-				"countyName": "沙洋县"
-			}, {
-				"countyCode": "420802",
-				"countyName": "东宝区"
-			}, {
-				"countyCode": "420881",
-				"countyName": "钟祥市"
-			}, {
-				"countyCode": "420821",
-				"countyName": "京山市"
-			}]
-		}, {
-			"cityCode": "429006",
-			"cityName": "天门市",
-			"county": [{
-				"countyCode": "429006-1",
-				"countyName": "天门市"
-			}]
-		}, {
-			"cityCode": "421000",
-			"cityName": "荆州市",
-			"county": [{
-				"countyCode": "421003",
-				"countyName": "荆州区"
-			}, {
-				"countyCode": "421023",
-				"countyName": "监利县"
-			}, {
-				"countyCode": "421087",
-				"countyName": "松滋市"
-			}, {
-				"countyCode": "421022",
-				"countyName": "公安县"
-			}, {
-				"countyCode": "421002",
-				"countyName": "沙市区"
-			}, {
-				"countyCode": "421024",
-				"countyName": "江陵县"
-			}, {
-				"countyCode": "421081",
-				"countyName": "石首市"
-			}, {
-				"countyCode": "421083",
-				"countyName": "洪湖市"
-			}]
-		}, {
-			"cityCode": "420600",
-			"cityName": "襄阳市",
-			"county": [{
-				"countyCode": "420625",
-				"countyName": "谷城县"
-			}, {
-				"countyCode": "420607",
-				"countyName": "襄州区"
-			}, {
-				"countyCode": "420606",
-				"countyName": "樊城区"
-			}, {
-				"countyCode": "420602",
-				"countyName": "襄城区"
-			}, {
-				"countyCode": "420626",
-				"countyName": "保康县"
-			}, {
-				"countyCode": "420624",
-				"countyName": "南漳县"
-			}, {
-				"countyCode": "420683",
-				"countyName": "枣阳市"
-			}, {
-				"countyCode": "420682",
-				"countyName": "老河口市"
-			}, {
-				"countyCode": "420684",
-				"countyName": "宜城市"
-			}]
-		}, {
-			"cityCode": "420700",
-			"cityName": "鄂州市",
-			"county": [{
-				"countyCode": "420702",
-				"countyName": "梁子湖区"
-			}, {
-				"countyCode": "420703",
-				"countyName": "华容区"
-			}, {
-				"countyCode": "420704",
-				"countyName": "鄂城区"
-			}]
-		}, {
-			"cityCode": "429021",
-			"cityName": "神农架林区",
-			"county": [{
-				"countyCode": "429021-1",
-				"countyName": "神农架林区"
-			}]
-		}, {
-			"cityCode": "420200",
-			"cityName": "黄石市",
-			"county": [{
-				"countyCode": "420202",
-				"countyName": "黄石港区"
-			}, {
-				"countyCode": "420281",
-				"countyName": "大冶市"
-			}, {
-				"countyCode": "420205",
-				"countyName": "铁山区"
-			}, {
-				"countyCode": "420222",
-				"countyName": "阳新县"
-			}, {
-				"countyCode": "420203",
-				"countyName": "西塞山区"
-			}, {
-				"countyCode": "420204",
-				"countyName": "下陆区"
-			}]
-		}, {
-			"cityCode": "421100",
-			"cityName": "黄冈市",
-			"county": [{
-				"countyCode": "421181",
-				"countyName": "麻城市"
-			}, {
-				"countyCode": "421125",
-				"countyName": "浠水县"
-			}, {
-				"countyCode": "421121",
-				"countyName": "团风县"
-			}, {
-				"countyCode": "421182",
-				"countyName": "武穴市"
-			}, {
-				"countyCode": "421124",
-				"countyName": "英山县"
-			}, {
-				"countyCode": "421122",
-				"countyName": "红安县"
-			}, {
-				"countyCode": "421102",
-				"countyName": "黄州区"
-			}, {
-				"countyCode": "421123",
-				"countyName": "罗田县"
-			}, {
-				"countyCode": "421126",
-				"countyName": "蕲春县"
-			}, {
-				"countyCode": "421127",
-				"countyName": "黄梅县"
-			}]
-		}, {
-			"cityCode": "420300",
-			"cityName": "十堰市",
-			"county": [{
-				"countyCode": "420322",
-				"countyName": "郧西县"
-			}, {
-				"countyCode": "420321",
-				"countyName": "郧阳区"
-			}, {
-				"countyCode": "420323",
-				"countyName": "竹山县"
-			}, {
-				"countyCode": "420324",
-				"countyName": "竹溪县"
-			}, {
-				"countyCode": "420325",
-				"countyName": "房县"
-			}, {
-				"countyCode": "420302",
-				"countyName": "茅箭区"
-			}, {
-				"countyCode": "420303",
-				"countyName": "张湾区"
-			}, {
-				"countyCode": "420381",
-				"countyName": "丹江口市"
-			}]
-		}, {
-			"cityCode": "429005",
-			"cityName": "潜江市",
-			"county": [{
-				"countyCode": "429005-1",
-				"countyName": "潜江市"
-			}]
-		}]
-	}, {
-		"provinceCode": "430000",
-		"provinceName": "湖南省",
-		"city": [{
-			"cityCode": "430300",
-			"cityName": "湘潭市",
-			"county": [{
-				"countyCode": "430381",
-				"countyName": "湘乡市"
-			}, {
-				"countyCode": "430302",
-				"countyName": "雨湖区"
-			}, {
-				"countyCode": "430382",
-				"countyName": "韶山市"
-			}, {
-				"countyCode": "430321",
-				"countyName": "湘潭县"
-			}, {
-				"countyCode": "430304",
-				"countyName": "岳塘区"
-			}]
-		}, {
-			"cityCode": "430600",
-			"cityName": "岳阳市",
-			"county": [{
-				"countyCode": "430623",
-				"countyName": "华容县"
-			}, {
-				"countyCode": "430682",
-				"countyName": "临湘市"
-			}, {
-				"countyCode": "430603",
-				"countyName": "云溪区"
-			}, {
-				"countyCode": "430681",
-				"countyName": "汨罗市"
-			}, {
-				"countyCode": "430624",
-				"countyName": "湘阴县"
-			}, {
-				"countyCode": "430602",
-				"countyName": "岳阳楼区"
-			}, {
-				"countyCode": "430626",
-				"countyName": "平江县"
-			}, {
-				"countyCode": "430611",
-				"countyName": "君山区"
-			}, {
-				"countyCode": "430621",
-				"countyName": "岳阳县"
-			}]
-		}, {
-			"cityCode": "430100",
-			"cityName": "长沙市",
-			"county": [{
-				"countyCode": "430111",
-				"countyName": "雨花区"
-			}, {
-				"countyCode": "430103",
-				"countyName": "天心区"
-			}, {
-				"countyCode": "430104",
-				"countyName": "岳麓区"
-			}, {
-				"countyCode": "430181",
-				"countyName": "浏阳市"
-			}, {
-				"countyCode": "430124",
-				"countyName": "宁乡市"
-			}, {
-				"countyCode": "430112",
-				"countyName": "望城区"
-			}, {
-				"countyCode": "430121",
-				"countyName": "长沙县"
-			}, {
-				"countyCode": "430105",
-				"countyName": "开福区"
-			}, {
-				"countyCode": "430102",
-				"countyName": "芙蓉区"
-			}]
-		}, {
-			"cityCode": "430200",
-			"cityName": "株洲市",
-			"county": [{
-				"countyCode": "430202",
-				"countyName": "荷塘区"
-			}, {
-				"countyCode": "430225",
-				"countyName": "炎陵县"
-			}, {
-				"countyCode": "430281",
-				"countyName": "醴陵市"
-			}, {
-				"countyCode": "430203",
-				"countyName": "芦淞区"
-			}, {
-				"countyCode": "430224",
-				"countyName": "茶陵县"
-			}, {
-				"countyCode": "430211",
-				"countyName": "天元区"
-			}, {
-				"countyCode": "430221",
-				"countyName": "株洲县"
-			}, {
-				"countyCode": "430223",
-				"countyName": "攸县"
-			}, {
-				"countyCode": "430204",
-				"countyName": "石峰区"
-			}]
-		}, {
-			"cityCode": "431000",
-			"cityName": "郴州市",
-			"county": [{
-				"countyCode": "431028",
-				"countyName": "安仁县"
-			}, {
-				"countyCode": "431021",
-				"countyName": "桂阳县"
-			}, {
-				"countyCode": "431002",
-				"countyName": "北湖区"
-			}, {
-				"countyCode": "431027",
-				"countyName": "桂东县"
-			}, {
-				"countyCode": "431024",
-				"countyName": "嘉禾县"
-			}, {
-				"countyCode": "431026",
-				"countyName": "汝城县"
-			}, {
-				"countyCode": "431023",
-				"countyName": "永兴县"
-			}, {
-				"countyCode": "431025",
-				"countyName": "临武县"
-			}, {
-				"countyCode": "431022",
-				"countyName": "宜章县"
-			}, {
-				"countyCode": "431003",
-				"countyName": "苏仙区"
-			}, {
-				"countyCode": "431081",
-				"countyName": "资兴市"
-			}]
-		}, {
-			"cityCode": "431200",
-			"cityName": "怀化市",
-			"county": [{
-				"countyCode": "431223",
-				"countyName": "辰溪县"
-			}, {
-				"countyCode": "431202",
-				"countyName": "鹤城区"
-			}, {
-				"countyCode": "431224",
-				"countyName": "溆浦县"
-			}, {
-				"countyCode": "431226",
-				"countyName": "麻阳苗族自治县"
-			}, {
-				"countyCode": "431229",
-				"countyName": "靖州苗族侗族自治县"
-			}, {
-				"countyCode": "431230",
-				"countyName": "通道侗族自治县"
-			}, {
-				"countyCode": "431281",
-				"countyName": "洪江市"
-			}, {
-				"countyCode": "431228",
-				"countyName": "芷江侗族自治县"
-			}, {
-				"countyCode": "431221",
-				"countyName": "中方县"
-			}, {
-				"countyCode": "431225",
-				"countyName": "会同县"
-			}, {
-				"countyCode": "431227",
-				"countyName": "新晃侗族自治县"
-			}, {
-				"countyCode": "431222",
-				"countyName": "沅陵县"
-			}]
-		}, {
-			"cityCode": "431100",
-			"cityName": "永州市",
-			"county": [{
-				"countyCode": "431123",
-				"countyName": "双牌县"
-			}, {
-				"countyCode": "431125",
-				"countyName": "江永县"
-			}, {
-				"countyCode": "431102",
-				"countyName": "零陵区"
-			}, {
-				"countyCode": "431129",
-				"countyName": "江华瑶族自治县"
-			}, {
-				"countyCode": "431124",
-				"countyName": "道县"
-			}, {
-				"countyCode": "431127",
-				"countyName": "蓝山县"
-			}, {
-				"countyCode": "431103",
-				"countyName": "冷水滩区"
-			}, {
-				"countyCode": "431122",
-				"countyName": "东安县"
-			}, {
-				"countyCode": "431128",
-				"countyName": "新田县"
-			}, {
-				"countyCode": "431121",
-				"countyName": "祁阳县"
-			}, {
-				"countyCode": "431126",
-				"countyName": "宁远县"
-			}]
-		}, {
-			"cityCode": "430700",
-			"cityName": "常德市",
-			"county": [{
-				"countyCode": "430703",
-				"countyName": "鼎城区"
-			}, {
-				"countyCode": "430725",
-				"countyName": "桃源县"
-			}, {
-				"countyCode": "430724",
-				"countyName": "临澧县"
-			}, {
-				"countyCode": "430781",
-				"countyName": "津市市"
-			}, {
-				"countyCode": "430702",
-				"countyName": "武陵区"
-			}, {
-				"countyCode": "430721",
-				"countyName": "安乡县"
-			}, {
-				"countyCode": "430726",
-				"countyName": "石门县"
-			}, {
-				"countyCode": "430722",
-				"countyName": "汉寿县"
-			}, {
-				"countyCode": "430723",
-				"countyName": "澧县"
-			}]
-		}, {
-			"cityCode": "431300",
-			"cityName": "娄底市",
-			"county": [{
-				"countyCode": "431322",
-				"countyName": "新化县"
-			}, {
-				"countyCode": "431302",
-				"countyName": "娄星区"
-			}, {
-				"countyCode": "431321",
-				"countyName": "双峰县"
-			}, {
-				"countyCode": "431381",
-				"countyName": "冷水江市"
-			}, {
-				"countyCode": "431382",
-				"countyName": "涟源市"
-			}]
-		}, {
-			"cityCode": "430800",
-			"cityName": "张家界市",
-			"county": [{
-				"countyCode": "430821",
-				"countyName": "慈利县"
-			}, {
-				"countyCode": "430822",
-				"countyName": "桑植县"
-			}, {
-				"countyCode": "430802",
-				"countyName": "永定区"
-			}, {
-				"countyCode": "430811",
-				"countyName": "武陵源区"
-			}]
-		}, {
-			"cityCode": "430400",
-			"cityName": "衡阳市",
-			"county": [{
-				"countyCode": "430423",
-				"countyName": "衡山县"
-			}, {
-				"countyCode": "430408",
-				"countyName": "蒸湘区"
-			}, {
-				"countyCode": "430405",
-				"countyName": "珠晖区"
-			}, {
-				"countyCode": "430481",
-				"countyName": "耒阳市"
-			}, {
-				"countyCode": "430422",
-				"countyName": "衡南县"
-			}, {
-				"countyCode": "430426",
-				"countyName": "祁东县"
-			}, {
-				"countyCode": "430407",
-				"countyName": "石鼓区"
-			}, {
-				"countyCode": "430482",
-				"countyName": "常宁市"
-			}, {
-				"countyCode": "430424",
-				"countyName": "衡东县"
-			}, {
-				"countyCode": "430406",
-				"countyName": "雁峰区"
-			}, {
-				"countyCode": "430421",
-				"countyName": "衡阳县"
-			}, {
-				"countyCode": "430412",
-				"countyName": "南岳区"
-			}]
-		}, {
-			"cityCode": "430500",
-			"cityName": "邵阳市",
-			"county": [{
-				"countyCode": "430524",
-				"countyName": "隆回县"
-			}, {
-				"countyCode": "430503",
-				"countyName": "大祥区"
-			}, {
-				"countyCode": "430528",
-				"countyName": "新宁县"
-			}, {
-				"countyCode": "430529",
-				"countyName": "城步苗族自治县"
-			}, {
-				"countyCode": "430581",
-				"countyName": "武冈市"
-			}, {
-				"countyCode": "430502",
-				"countyName": "双清区"
-			}, {
-				"countyCode": "430523",
-				"countyName": "邵阳县"
-			}, {
-				"countyCode": "430522",
-				"countyName": "新邵县"
-			}, {
-				"countyCode": "430521",
-				"countyName": "邵东县"
-			}, {
-				"countyCode": "430525",
-				"countyName": "洞口县"
-			}, {
-				"countyCode": "430511",
-				"countyName": "北塔区"
-			}, {
-				"countyCode": "430527",
-				"countyName": "绥宁县"
-			}]
-		}, {
-			"cityCode": "433100",
-			"cityName": "湘西土家族苗族自治州",
-			"county": [{
-				"countyCode": "433123",
-				"countyName": "凤凰县"
-			}, {
-				"countyCode": "433126",
-				"countyName": "古丈县"
-			}, {
-				"countyCode": "433125",
-				"countyName": "保靖县"
-			}, {
-				"countyCode": "433124",
-				"countyName": "花垣县"
-			}, {
-				"countyCode": "433127",
-				"countyName": "永顺县"
-			}, {
-				"countyCode": "433122",
-				"countyName": "泸溪县"
-			}, {
-				"countyCode": "433101",
-				"countyName": "吉首市"
-			}, {
-				"countyCode": "433130",
-				"countyName": "龙山县"
-			}]
-		}, {
-			"cityCode": "430900",
-			"cityName": "益阳市",
-			"county": [{
-				"countyCode": "430923",
-				"countyName": "安化县"
-			}, {
-				"countyCode": "430921",
-				"countyName": "南县"
-			}, {
-				"countyCode": "430902",
-				"countyName": "资阳区"
-			}, {
-				"countyCode": "430981",
-				"countyName": "沅江市"
-			}, {
-				"countyCode": "430903",
-				"countyName": "赫山区"
-			}, {
-				"countyCode": "430922",
-				"countyName": "桃江县"
-			}]
-		}]
-	}, {
-		"provinceCode": "450000",
-		"provinceName": "广西壮族自治区",
-		"city": [{
-			"cityCode": "450400",
-			"cityName": "梧州市",
-			"county": [{
-				"countyCode": "450481",
-				"countyName": "岑溪市"
-			}, {
-				"countyCode": "450423",
-				"countyName": "蒙山县"
-			}, {
-				"countyCode": "450421",
-				"countyName": "苍梧县"
-			}, {
-				"countyCode": "450422",
-				"countyName": "藤县"
-			}, {
-				"countyCode": "450403",
-				"countyName": "万秀区"
-			}, {
-				"countyCode": "450405",
-				"countyName": "长洲区"
-			}, {
-				"countyCode": "450424",
-				"countyName": "龙圩区"
-			}, {
-				"countyCode": "450404",
-				"countyName": "蝶山区"
-			}]
-		}, {
-			"cityCode": "450500",
-			"cityName": "北海市",
-			"county": [{
-				"countyCode": "450521",
-				"countyName": "合浦县"
-			}, {
-				"countyCode": "450512",
-				"countyName": "铁山港区"
-			}, {
-				"countyCode": "450502",
-				"countyName": "海城区"
-			}, {
-				"countyCode": "450503",
-				"countyName": "银海区"
-			}]
-		}, {
-			"cityCode": "450300",
-			"cityName": "桂林市",
-			"county": [{
-				"countyCode": "450327",
-				"countyName": "灌阳县"
-			}, {
-				"countyCode": "450305",
-				"countyName": "七星区"
-			}, {
-				"countyCode": "450326",
-				"countyName": "永福县"
-			}, {
-				"countyCode": "450325",
-				"countyName": "兴安县"
-			}, {
-				"countyCode": "450321",
-				"countyName": "阳朔县"
-			}, {
-				"countyCode": "450332",
-				"countyName": "恭城瑶族自治县"
-			}, {
-				"countyCode": "450302",
-				"countyName": "秀峰区"
-			}, {
-				"countyCode": "450304",
-				"countyName": "象山区"
-			}, {
-				"countyCode": "450330",
-				"countyName": "平乐县"
-			}, {
-				"countyCode": "450331",
-				"countyName": "荔浦县"
-			}, {
-				"countyCode": "450329",
-				"countyName": "资源县"
-			}, {
-				"countyCode": "450323",
-				"countyName": "灵川县"
-			}, {
-				"countyCode": "450324",
-				"countyName": "全州县"
-			}, {
-				"countyCode": "450322",
-				"countyName": "临桂区"
-			}, {
-				"countyCode": "450303",
-				"countyName": "叠彩区"
-			}, {
-				"countyCode": "450311",
-				"countyName": "雁山区"
-			}, {
-				"countyCode": "450328",
-				"countyName": "龙胜各族自治县"
-			}]
-		}, {
-			"cityCode": "451100",
-			"cityName": "贺州市",
-			"county": [{
-				"countyCode": "451121",
-				"countyName": "昭平县"
-			}, {
-				"countyCode": "451122",
-				"countyName": "钟山县"
-			}, {
-				"countyCode": "451102",
-				"countyName": "八步区"
-			}, {
-				"countyCode": "451123",
-				"countyName": "富川瑶族自治县"
-			}, {
-				"countyCode": "451103",
-				"countyName": "平桂区"
-			}]
-		}, {
-			"cityCode": "450800",
-			"cityName": "贵港市",
-			"county": [{
-				"countyCode": "450804",
-				"countyName": "覃塘区"
-			}, {
-				"countyCode": "450881",
-				"countyName": "桂平市"
-			}, {
-				"countyCode": "450821",
-				"countyName": "平南县"
-			}, {
-				"countyCode": "450803",
-				"countyName": "港南区"
-			}, {
-				"countyCode": "450802",
-				"countyName": "港北区"
-			}]
-		}, {
-			"cityCode": "450900",
-			"cityName": "玉林市",
-			"county": [{
-				"countyCode": "450921",
-				"countyName": "容县"
-			}, {
-				"countyCode": "450924",
-				"countyName": "兴业县"
-			}, {
-				"countyCode": "450902",
-				"countyName": "玉州区"
-			}, {
-				"countyCode": "450903",
-				"countyName": "福绵区"
-			}, {
-				"countyCode": "450981",
-				"countyName": "北流市"
-			}, {
-				"countyCode": "450923",
-				"countyName": "博白县"
-			}, {
-				"countyCode": "450922",
-				"countyName": "陆川县"
-			}]
-		}, {
-			"cityCode": "450200",
-			"cityName": "柳州市",
-			"county": [{
-				"countyCode": "450225",
-				"countyName": "融水苗族自治县"
-			}, {
-				"countyCode": "450202",
-				"countyName": "城中区"
-			}, {
-				"countyCode": "450223",
-				"countyName": "鹿寨县"
-			}, {
-				"countyCode": "450226",
-				"countyName": "三江侗族自治县"
-			}, {
-				"countyCode": "450204",
-				"countyName": "柳南区"
-			}, {
-				"countyCode": "450203",
-				"countyName": "鱼峰区"
-			}, {
-				"countyCode": "450222",
-				"countyName": "柳城县"
-			}, {
-				"countyCode": "450224",
-				"countyName": "融安县"
-			}, {
-				"countyCode": "450205",
-				"countyName": "柳北区"
-			}, {
-				"countyCode": "450221",
-				"countyName": "柳江区"
-			}]
-		}, {
-			"cityCode": "451000",
-			"cityName": "百色市",
-			"county": [{
-				"countyCode": "451002",
-				"countyName": "右江区"
-			}, {
-				"countyCode": "451031",
-				"countyName": "隆林各族自治县"
-			}, {
-				"countyCode": "451027",
-				"countyName": "凌云县"
-			}, {
-				"countyCode": "451023",
-				"countyName": "平果县"
-			}, {
-				"countyCode": "451026",
-				"countyName": "那坡县"
-			}, {
-				"countyCode": "451030",
-				"countyName": "西林县"
-			}, {
-				"countyCode": "451024",
-				"countyName": "德保县"
-			}, {
-				"countyCode": "451022",
-				"countyName": "田东县"
-			}, {
-				"countyCode": "451021",
-				"countyName": "田阳县"
-			}, {
-				"countyCode": "451028",
-				"countyName": "乐业县"
-			}, {
-				"countyCode": "451029",
-				"countyName": "田林县"
-			}, {
-				"countyCode": "451025",
-				"countyName": "靖西市"
-			}]
-		}, {
-			"cityCode": "451300",
-			"cityName": "来宾市",
-			"county": [{
-				"countyCode": "451381",
-				"countyName": "合山市"
-			}, {
-				"countyCode": "451322",
-				"countyName": "象州县"
-			}, {
-				"countyCode": "451324",
-				"countyName": "金秀瑶族自治县"
-			}, {
-				"countyCode": "451321",
-				"countyName": "忻城县"
-			}, {
-				"countyCode": "451302",
-				"countyName": "兴宾区"
-			}, {
-				"countyCode": "451323",
-				"countyName": "武宣县"
-			}]
-		}, {
-			"cityCode": "450100",
-			"cityName": "南宁市",
-			"county": [{
-				"countyCode": "450105",
-				"countyName": "江南区"
-			}, {
-				"countyCode": "450107",
-				"countyName": "西乡塘区"
-			}, {
-				"countyCode": "450109",
-				"countyName": "邕宁区"
-			}, {
-				"countyCode": "450126",
-				"countyName": "宾阳县"
-			}, {
-				"countyCode": "450108",
-				"countyName": "良庆区"
-			}, {
-				"countyCode": "450125",
-				"countyName": "上林县"
-			}, {
-				"countyCode": "450123",
-				"countyName": "隆安县"
-			}, {
-				"countyCode": "450124",
-				"countyName": "马山县"
-			}, {
-				"countyCode": "450122",
-				"countyName": "武鸣区"
-			}, {
-				"countyCode": "450102",
-				"countyName": "兴宁区"
-			}, {
-				"countyCode": "450127",
-				"countyName": "横县"
-			}, {
-				"countyCode": "450103",
-				"countyName": "青秀区"
-			}]
-		}, {
-			"cityCode": "450700",
-			"cityName": "钦州市",
-			"county": [{
-				"countyCode": "450702",
-				"countyName": "钦南区"
-			}, {
-				"countyCode": "450722",
-				"countyName": "浦北县"
-			}, {
-				"countyCode": "450721",
-				"countyName": "灵山县"
-			}, {
-				"countyCode": "450703",
-				"countyName": "钦北区"
-			}]
-		}, {
-			"cityCode": "450600",
-			"cityName": "防城港市",
-			"county": [{
-				"countyCode": "450603",
-				"countyName": "防城区"
-			}, {
-				"countyCode": "450621",
-				"countyName": "上思县"
-			}, {
-				"countyCode": "450602",
-				"countyName": "港口区"
-			}, {
-				"countyCode": "450681",
-				"countyName": "东兴市"
-			}]
-		}, {
-			"cityCode": "451200",
-			"cityName": "河池市",
-			"county": [{
-				"countyCode": "451202",
-				"countyName": "金城江区"
-			}, {
-				"countyCode": "451281",
-				"countyName": "宜州区"
-			}, {
-				"countyCode": "451221",
-				"countyName": "南丹县"
-			}, {
-				"countyCode": "451224",
-				"countyName": "东兰县"
-			}, {
-				"countyCode": "451228",
-				"countyName": "都安瑶族自治县"
-			}, {
-				"countyCode": "451229",
-				"countyName": "大化瑶族自治县"
-			}, {
-				"countyCode": "451222",
-				"countyName": "天峨县"
-			}, {
-				"countyCode": "451225",
-				"countyName": "罗城仫佬族自治县"
-			}, {
-				"countyCode": "451227",
-				"countyName": "巴马瑶族自治县"
-			}, {
-				"countyCode": "451226",
-				"countyName": "环江毛南族自治县"
-			}, {
-				"countyCode": "451223",
-				"countyName": "凤山县"
-			}]
-		}, {
-			"cityCode": "451400",
-			"cityName": "崇左市",
-			"county": [{
-				"countyCode": "451423",
-				"countyName": "龙州县"
-			}, {
-				"countyCode": "451425",
-				"countyName": "天等县"
-			}, {
-				"countyCode": "451481",
-				"countyName": "凭祥市"
-			}, {
-				"countyCode": "451422",
-				"countyName": "宁明县"
-			}, {
-				"countyCode": "451402",
-				"countyName": "江州区"
-			}, {
-				"countyCode": "451421",
-				"countyName": "扶绥县"
-			}, {
-				"countyCode": "451424",
-				"countyName": "大新县"
-			}]
-		}]
-	}, {
-		"provinceCode": "460000",
-		"provinceName": "海南省",
-		"city": [{
-			"cityCode": "469005",
-			"cityName": "文昌市",
-			"county": [{
-				"countyCode": "469005-1",
-				"countyName": "文昌市"
-			}]
-		}, {
-			"cityCode": "460300",
-			"cityName": "三沙市",
-			"county": [{
-				"countyCode": "460321",
-				"countyName": "西沙群岛"
-			}, {
-				"countyCode": "460322",
-				"countyName": "南沙群岛"
-			}, {
-				"countyCode": "469031",
-				"countyName": "西沙群岛"
-			}, {
-				"countyCode": "469032",
-				"countyName": "南沙群岛"
-			}, {
-				"countyCode": "460323",
-				"countyName": "中沙群岛的岛礁及其海域"
-			}]
-		}, {
-			"cityCode": "469027",
-			"cityName": "乐东黎族自治县",
-			"county": [{
-				"countyCode": "469027-1",
-				"countyName": "乐东黎族自治县"
-			}]
-		}, {
-			"cityCode": "460200",
-			"cityName": "三亚市",
-			"county": [{
-				"countyCode": "460203",
-				"countyName": "吉阳区"
-			}, {
-				"countyCode": "460202",
-				"countyName": "海棠区"
-			}, {
-				"countyCode": "460205",
-				"countyName": "崖州区"
-			}, {
-				"countyCode": "460204",
-				"countyName": "天涯区"
-			}]
-		}, {
-			"cityCode": "469002",
-			"cityName": "琼海市",
-			"county": [{
-				"countyCode": "469002-1",
-				"countyName": "琼海市"
-			}]
-		}, {
-			"cityCode": "469021",
-			"cityName": "定安县",
-			"county": [{
-				"countyCode": "469021-1",
-				"countyName": "定安县"
-			}]
-		}, {
-			"cityCode": "460100",
-			"cityName": "海口市",
-			"county": [{
-				"countyCode": "460107",
-				"countyName": "琼山区"
-			}, {
-				"countyCode": "460108",
-				"countyName": "美兰区"
-			}, {
-				"countyCode": "460105",
-				"countyName": "秀英区"
-			}, {
-				"countyCode": "460106",
-				"countyName": "龙华区"
-			}]
-		}, {
-			"cityCode": "469006",
-			"cityName": "万宁市",
-			"county": [{
-				"countyCode": "469006-1",
-				"countyName": "万宁市"
-			}]
-		}, {
-			"cityCode": "469029",
-			"cityName": "保亭黎族苗族自治县",
-			"county": [{
-				"countyCode": "469029-1",
-				"countyName": "保亭黎族苗族自治县"
-			}]
-		}, {
-			"cityCode": "469003",
-			"cityName": "儋州市",
-			"county": [{
-				"countyCode": "469003-1",
-				"countyName": "儋州市"
-			}]
-		}, {
-			"cityCode": "469023",
-			"cityName": "澄迈县",
-			"county": [{
-				"countyCode": "469023-1",
-				"countyName": "澄迈县"
-			}]
-		}, {
-			"cityCode": "469022",
-			"cityName": "屯昌县",
-			"county": [{
-				"countyCode": "469022-1",
-				"countyName": "屯昌县"
-			}]
-		}, {
-			"cityCode": "469028",
-			"cityName": "陵水黎族自治县",
-			"county": [{
-				"countyCode": "469028-1",
-				"countyName": "陵水黎族自治县"
-			}]
-		}, {
-			"cityCode": "469007",
-			"cityName": "东方市",
-			"county": [{
-				"countyCode": "469007-1",
-				"countyName": "东方市"
-			}]
-		}, {
-			"cityCode": "469001",
-			"cityName": "五指山市",
-			"county": [{
-				"countyCode": "469001-1",
-				"countyName": "五指山市"
-			}]
-		}, {
-			"cityCode": "469025",
-			"cityName": "白沙黎族自治县",
-			"county": [{
-				"countyCode": "469025-1",
-				"countyName": "白沙黎族自治县"
-			}]
-		}, {
-			"cityCode": "469026",
-			"cityName": "昌江黎族自治县",
-			"county": [{
-				"countyCode": "469026-1",
-				"countyName": "昌江黎族自治县"
-			}]
-		}, {
-			"cityCode": "469024",
-			"cityName": "临高县",
-			"county": [{
-				"countyCode": "469024-1",
-				"countyName": "临高县"
-			}]
-		}, {
-			"cityCode": "469030",
-			"cityName": "琼中黎族苗族自治县",
-			"county": [{
-				"countyCode": "469030-1",
-				"countyName": "琼中黎族苗族自治县"
-			}]
-		}]
-	}, {
-		"provinceCode": "500000",
-		"provinceName": "重庆",
-		"city": [{
-			"cityCode": "500000-1",
-			"cityName": "重庆市",
-			"county": [{
-				"countyCode": "500108",
-				"countyName": "南岸区"
-			}, {
-				"countyCode": "500101",
-				"countyName": "万州区"
-			}, {
-				"countyCode": "500103",
-				"countyName": "渝中区"
-			}, {
-				"countyCode": "500106",
-				"countyName": "沙坪坝区"
-			}, {
-				"countyCode": "500102",
-				"countyName": "涪陵区"
-			}, {
-				"countyCode": "500226",
-				"countyName": "荣昌区"
-			}, {
-				"countyCode": "500223",
-				"countyName": "潼南区"
-			}, {
-				"countyCode": "500242",
-				"countyName": "酉阳土家族苗族自治县"
-			}, {
-				"countyCode": "500232",
-				"countyName": "武隆区"
-			}, {
-				"countyCode": "500113",
-				"countyName": "巴南区"
-			}, {
-				"countyCode": "500109",
-				"countyName": "北碚区"
-			}, {
-				"countyCode": "500104",
-				"countyName": "大渡口区"
-			}, {
-				"countyCode": "500117",
-				"countyName": "合川区"
-			}, {
-				"countyCode": "500112",
-				"countyName": "渝北区"
-			}, {
-				"countyCode": "500116",
-				"countyName": "江津区"
-			}, {
-				"countyCode": "500228",
-				"countyName": "梁平区"
-			}, {
-				"countyCode": "500119",
-				"countyName": "南川区"
-			}, {
-				"countyCode": "500110",
-				"countyName": "綦江区"
-			}, {
-				"countyCode": "500227",
-				"countyName": "璧山区"
-			}, {
-				"countyCode": "500115",
-				"countyName": "长寿区"
-			}, {
-				"countyCode": "500231",
-				"countyName": "垫江县"
-			}, {
-				"countyCode": "500230",
-				"countyName": "丰都县"
-			}, {
-				"countyCode": "500224",
-				"countyName": "铜梁区"
-			}, {
-				"countyCode": "500243",
-				"countyName": "彭水苗族土家族自治县"
-			}, {
-				"countyCode": "500105",
-				"countyName": "江北区"
-			}, {
-				"countyCode": "500107",
-				"countyName": "九龙坡区"
-			}, {
-				"countyCode": "500236",
-				"countyName": "奉节县"
-			}, {
-				"countyCode": "500111",
-				"countyName": "大足区"
-			}, {
-				"countyCode": "500234",
-				"countyName": "开州区"
-			}, {
-				"countyCode": "500241",
-				"countyName": "秀山土家族苗族自治县"
-			}, {
-				"countyCode": "500229",
-				"countyName": "城口县"
-			}, {
-				"countyCode": "500238",
-				"countyName": "巫溪县"
-			}, {
-				"countyCode": "500118",
-				"countyName": "永川区"
-			}, {
-				"countyCode": "500233",
-				"countyName": "忠县"
-			}, {
-				"countyCode": "500240",
-				"countyName": "石柱土家族自治县"
-			}, {
-				"countyCode": "500114",
-				"countyName": "黔江区"
-			}, {
-				"countyCode": "500237",
-				"countyName": "巫山县"
-			}, {
-				"countyCode": "500235",
-				"countyName": "云阳县"
-			}]
-		}]
-	}, {
-		"provinceCode": "510000",
-		"provinceName": "四川省",
-		"city": [{
-			"cityCode": "511300",
-			"cityName": "南充市",
-			"county": [{
-				"countyCode": "511304",
-				"countyName": "嘉陵区"
-			}, {
-				"countyCode": "511323",
-				"countyName": "蓬安县"
-			}, {
-				"countyCode": "511322",
-				"countyName": "营山县"
-			}, {
-				"countyCode": "511381",
-				"countyName": "阆中市"
-			}, {
-				"countyCode": "511303",
-				"countyName": "高坪区"
-			}, {
-				"countyCode": "511324",
-				"countyName": "仪陇县"
-			}, {
-				"countyCode": "511302",
-				"countyName": "顺庆区"
-			}, {
-				"countyCode": "511321",
-				"countyName": "南部县"
-			}, {
-				"countyCode": "511325",
-				"countyName": "西充县"
-			}]
-		}, {
-			"cityCode": "511800",
-			"cityName": "雅安市",
-			"county": [{
-				"countyCode": "511826",
-				"countyName": "芦山县"
-			}, {
-				"countyCode": "511824",
-				"countyName": "石棉县"
-			}, {
-				"countyCode": "511803",
-				"countyName": "名山区"
-			}, {
-				"countyCode": "511827",
-				"countyName": "宝兴县"
-			}, {
-				"countyCode": "511802",
-				"countyName": "雨城区"
-			}, {
-				"countyCode": "511823",
-				"countyName": "汉源县"
-			}, {
-				"countyCode": "511825",
-				"countyName": "天全县"
-			}, {
-				"countyCode": "511822",
-				"countyName": "荥经县"
-			}]
-		}, {
-			"cityCode": "513400",
-			"cityName": "凉山彝族自治州",
-			"county": [{
-				"countyCode": "513427",
-				"countyName": "宁南县"
-			}, {
-				"countyCode": "513432",
-				"countyName": "喜德县"
-			}, {
-				"countyCode": "513431",
-				"countyName": "昭觉县"
-			}, {
-				"countyCode": "513401",
-				"countyName": "西昌市"
-			}, {
-				"countyCode": "513437",
-				"countyName": "雷波县"
-			}, {
-				"countyCode": "513433",
-				"countyName": "冕宁县"
-			}, {
-				"countyCode": "513434",
-				"countyName": "越西县"
-			}, {
-				"countyCode": "513435",
-				"countyName": "甘洛县"
-			}, {
-				"countyCode": "513429",
-				"countyName": "布拖县"
-			}, {
-				"countyCode": "513430",
-				"countyName": "金阳县"
-			}, {
-				"countyCode": "513436",
-				"countyName": "美姑县"
-			}, {
-				"countyCode": "513428",
-				"countyName": "普格县"
-			}, {
-				"countyCode": "513424",
-				"countyName": "德昌县"
-			}, {
-				"countyCode": "513425",
-				"countyName": "会理县"
-			}, {
-				"countyCode": "513423",
-				"countyName": "盐源县"
-			}, {
-				"countyCode": "513426",
-				"countyName": "会东县"
-			}, {
-				"countyCode": "513422",
-				"countyName": "木里藏族自治县"
-			}]
-		}, {
-			"cityCode": "511400",
-			"cityName": "眉山市",
-			"county": [{
-				"countyCode": "511422",
-				"countyName": "彭山区"
-			}, {
-				"countyCode": "511424",
-				"countyName": "丹棱县"
-			}, {
-				"countyCode": "511425",
-				"countyName": "青神县"
-			}, {
-				"countyCode": "511402",
-				"countyName": "东坡区"
-			}, {
-				"countyCode": "511423",
-				"countyName": "洪雅县"
-			}, {
-				"countyCode": "511421",
-				"countyName": "仁寿县"
-			}]
-		}, {
-			"cityCode": "510300",
-			"cityName": "自贡市",
-			"county": [{
-				"countyCode": "510304",
-				"countyName": "大安区"
-			}, {
-				"countyCode": "510302",
-				"countyName": "自流井区"
-			}, {
-				"countyCode": "510321",
-				"countyName": "荣县"
-			}, {
-				"countyCode": "510303",
-				"countyName": "贡井区"
-			}, {
-				"countyCode": "510322",
-				"countyName": "富顺县"
-			}, {
-				"countyCode": "510311",
-				"countyName": "沿滩区"
-			}]
-		}, {
-			"cityCode": "511900",
-			"cityName": "巴中市",
-			"county": [{
-				"countyCode": "511903",
-				"countyName": "恩阳区"
-			}, {
-				"countyCode": "511921",
-				"countyName": "通江县"
-			}, {
-				"countyCode": "511922",
-				"countyName": "南江县"
-			}, {
-				"countyCode": "511902",
-				"countyName": "巴州区"
-			}, {
-				"countyCode": "511923",
-				"countyName": "平昌县"
-			}]
-		}, {
-			"cityCode": "513300",
-			"cityName": "甘孜藏族自治州",
-			"county": [{
-				"countyCode": "513328",
-				"countyName": "甘孜县"
-			}, {
-				"countyCode": "513324",
-				"countyName": "九龙县"
-			}, {
-				"countyCode": "513332",
-				"countyName": "石渠县"
-			}, {
-				"countyCode": "513337",
-				"countyName": "稻城县"
-			}, {
-				"countyCode": "513326",
-				"countyName": "道孚县"
-			}, {
-				"countyCode": "513330",
-				"countyName": "德格县"
-			}, {
-				"countyCode": "513336",
-				"countyName": "乡城县"
-			}, {
-				"countyCode": "513325",
-				"countyName": "雅江县"
-			}, {
-				"countyCode": "513334",
-				"countyName": "理塘县"
-			}, {
-				"countyCode": "513329",
-				"countyName": "新龙县"
-			}, {
-				"countyCode": "513338",
-				"countyName": "得荣县"
-			}, {
-				"countyCode": "513331",
-				"countyName": "白玉县"
-			}, {
-				"countyCode": "513323",
-				"countyName": "丹巴县"
-			}, {
-				"countyCode": "513327",
-				"countyName": "炉霍县"
-			}, {
-				"countyCode": "513335",
-				"countyName": "巴塘县"
-			}, {
-				"countyCode": "513321",
-				"countyName": "康定市"
-			}, {
-				"countyCode": "513333",
-				"countyName": "色达县"
-			}, {
-				"countyCode": "513322",
-				"countyName": "泸定县"
-			}]
-		}, {
-			"cityCode": "511700",
-			"cityName": "达州市",
-			"county": [{
-				"countyCode": "511722",
-				"countyName": "宣汉县"
-			}, {
-				"countyCode": "511781",
-				"countyName": "万源市"
-			}, {
-				"countyCode": "511724",
-				"countyName": "大竹县"
-			}, {
-				"countyCode": "511723",
-				"countyName": "开江县"
-			}, {
-				"countyCode": "511721",
-				"countyName": "达川区"
-			}, {
-				"countyCode": "511702",
-				"countyName": "通川区"
-			}, {
-				"countyCode": "511725",
-				"countyName": "渠县"
-			}]
-		}, {
-			"cityCode": "510500",
-			"cityName": "泸州市",
-			"county": [{
-				"countyCode": "510524",
-				"countyName": "叙永县"
-			}, {
-				"countyCode": "510521",
-				"countyName": "泸县"
-			}, {
-				"countyCode": "510502",
-				"countyName": "江阳区"
-			}, {
-				"countyCode": "510504",
-				"countyName": "龙马潭区"
-			}, {
-				"countyCode": "510525",
-				"countyName": "古蔺县"
-			}, {
-				"countyCode": "510522",
-				"countyName": "合江县"
-			}, {
-				"countyCode": "510503",
-				"countyName": "纳溪区"
-			}]
-		}, {
-			"cityCode": "510800",
-			"cityName": "广元市",
-			"county": [{
-				"countyCode": "510802",
-				"countyName": "利州区"
-			}, {
-				"countyCode": "510811",
-				"countyName": "昭化区"
-			}, {
-				"countyCode": "510824",
-				"countyName": "苍溪县"
-			}, {
-				"countyCode": "510812",
-				"countyName": "朝天区"
-			}, {
-				"countyCode": "510823",
-				"countyName": "剑阁县"
-			}, {
-				"countyCode": "510821",
-				"countyName": "旺苍县"
-			}, {
-				"countyCode": "510822",
-				"countyName": "青川县"
-			}]
-		}, {
-			"cityCode": "512000",
-			"cityName": "资阳市",
-			"county": [{
-				"countyCode": "512022",
-				"countyName": "乐至县"
-			}, {
-				"countyCode": "512021",
-				"countyName": "安岳县"
-			}, {
-				"countyCode": "512002",
-				"countyName": "雁江区"
-			}]
-		}, {
-			"cityCode": "510400",
-			"cityName": "攀枝花市",
-			"county": [{
-				"countyCode": "510411",
-				"countyName": "仁和区"
-			}, {
-				"countyCode": "510422",
-				"countyName": "盐边县"
-			}, {
-				"countyCode": "510403",
-				"countyName": "西区"
-			}, {
-				"countyCode": "510421",
-				"countyName": "米易县"
-			}, {
-				"countyCode": "510402",
-				"countyName": "东区"
-			}]
-		}, {
-			"cityCode": "510100",
-			"cityName": "成都市",
-			"county": [{
-				"countyCode": "510115",
-				"countyName": "温江区"
-			}, {
-				"countyCode": "510105",
-				"countyName": "青羊区"
-			}, {
-				"countyCode": "510124",
-				"countyName": "郫都区"
-			}, {
-				"countyCode": "510122",
-				"countyName": "双流区"
-			}, {
-				"countyCode": "510129",
-				"countyName": "大邑县"
-			}, {
-				"countyCode": "510106",
-				"countyName": "金牛区"
-			}, {
-				"countyCode": "510112",
-				"countyName": "龙泉驿区"
-			}, {
-				"countyCode": "512081",
-				"countyName": "简阳市"
-			}, {
-				"countyCode": "510181",
-				"countyName": "都江堰市"
-			}, {
-				"countyCode": "510108",
-				"countyName": "成华区"
-			}, {
-				"countyCode": "510132",
-				"countyName": "新津县"
-			}, {
-				"countyCode": "510113",
-				"countyName": "青白江区"
-			}, {
-				"countyCode": "510182",
-				"countyName": "彭州市"
-			}, {
-				"countyCode": "510114",
-				"countyName": "新都区"
-			}, {
-				"countyCode": "510184",
-				"countyName": "崇州市"
-			}, {
-				"countyCode": "510121",
-				"countyName": "金堂县"
-			}, {
-				"countyCode": "510107",
-				"countyName": "武侯区"
-			}, {
-				"countyCode": "510104",
-				"countyName": "锦江区"
-			}, {
-				"countyCode": "510131",
-				"countyName": "蒲江县"
-			}, {
-				"countyCode": "510183",
-				"countyName": "邛崃市"
-			}]
-		}, {
-			"cityCode": "511100",
-			"cityName": "乐山市",
-			"county": [{
-				"countyCode": "511132",
-				"countyName": "峨边彝族自治县"
-			}, {
-				"countyCode": "511113",
-				"countyName": "金口河区"
-			}, {
-				"countyCode": "511111",
-				"countyName": "沙湾区"
-			}, {
-				"countyCode": "511181",
-				"countyName": "峨眉山市"
-			}, {
-				"countyCode": "511126",
-				"countyName": "夹江县"
-			}, {
-				"countyCode": "511102",
-				"countyName": "市中区"
-			}, {
-				"countyCode": "511112",
-				"countyName": "五通桥区"
-			}, {
-				"countyCode": "511124",
-				"countyName": "井研县"
-			}, {
-				"countyCode": "511129",
-				"countyName": "沐川县"
-			}, {
-				"countyCode": "511123",
-				"countyName": "犍为县"
-			}, {
-				"countyCode": "511133",
-				"countyName": "马边彝族自治县"
-			}]
-		}, {
-			"cityCode": "510700",
-			"cityName": "绵阳市",
-			"county": [{
-				"countyCode": "510724",
-				"countyName": "安州区"
-			}, {
-				"countyCode": "510725",
-				"countyName": "梓潼县"
-			}, {
-				"countyCode": "510781",
-				"countyName": "江油市"
-			}, {
-				"countyCode": "510704",
-				"countyName": "游仙区"
-			}, {
-				"countyCode": "510727",
-				"countyName": "平武县"
-			}, {
-				"countyCode": "510723",
-				"countyName": "盐亭县"
-			}, {
-				"countyCode": "510703",
-				"countyName": "涪城区"
-			}, {
-				"countyCode": "510722",
-				"countyName": "三台县"
-			}, {
-				"countyCode": "510726",
-				"countyName": "北川羌族自治县"
-			}]
-		}, {
-			"cityCode": "511600",
-			"cityName": "广安市",
-			"county": [{
-				"countyCode": "511623",
-				"countyName": "邻水县"
-			}, {
-				"countyCode": "511622",
-				"countyName": "武胜县"
-			}, {
-				"countyCode": "511603000000",
-				"countyName": "前锋区"
-			}, {
-				"countyCode": "511602",
-				"countyName": "广安区"
-			}, {
-				"countyCode": "511621",
-				"countyName": "岳池县"
-			}, {
-				"countyCode": "511681",
-				"countyName": "华蓥市"
-			}]
-		}, {
-			"cityCode": "511500",
-			"cityName": "宜宾市",
-			"county": [{
-				"countyCode": "511523",
-				"countyName": "江安县"
-			}, {
-				"countyCode": "511521",
-				"countyName": "叙州区"
-			}, {
-				"countyCode": "511525",
-				"countyName": "高县"
-			}, {
-				"countyCode": "511529",
-				"countyName": "屏山县"
-			}, {
-				"countyCode": "511528",
-				"countyName": "兴文县"
-			}, {
-				"countyCode": "511502",
-				"countyName": "翠屏区"
-			}, {
-				"countyCode": "511527",
-				"countyName": "筠连县"
-			}, {
-				"countyCode": "511524",
-				"countyName": "长宁县"
-			}, {
-				"countyCode": "511526",
-				"countyName": "珙县"
-			}, {
-				"countyCode": "511503",
-				"countyName": "南溪区"
-			}]
-		}, {
-			"cityCode": "511000",
-			"cityName": "内江市",
-			"county": [{
-				"countyCode": "511024",
-				"countyName": "威远县"
-			}, {
-				"countyCode": "511002",
-				"countyName": "市中区"
-			}, {
-				"countyCode": "511011",
-				"countyName": "东兴区"
-			}, {
-				"countyCode": "511028",
-				"countyName": "隆昌市"
-			}, {
-				"countyCode": "511025",
-				"countyName": "资中县"
-			}]
-		}, {
-			"cityCode": "513200",
-			"cityName": "阿坝藏族羌族自治州",
-			"county": [{
-				"countyCode": "513230",
-				"countyName": "壤塘县"
-			}, {
-				"countyCode": "513225",
-				"countyName": "九寨沟县"
-			}, {
-				"countyCode": "513223",
-				"countyName": "茂县"
-			}, {
-				"countyCode": "513226",
-				"countyName": "金川县"
-			}, {
-				"countyCode": "513227",
-				"countyName": "小金县"
-			}, {
-				"countyCode": "513233",
-				"countyName": "红原县"
-			}, {
-				"countyCode": "513222",
-				"countyName": "理县"
-			}, {
-				"countyCode": "513232",
-				"countyName": "若尔盖县"
-			}, {
-				"countyCode": "513221",
-				"countyName": "汶川县"
-			}, {
-				"countyCode": "513228",
-				"countyName": "黑水县"
-			}, {
-				"countyCode": "513229",
-				"countyName": "马尔康市"
-			}, {
-				"countyCode": "513231",
-				"countyName": "阿坝县"
-			}, {
-				"countyCode": "513224",
-				"countyName": "松潘县"
-			}]
-		}, {
-			"cityCode": "510900",
-			"cityName": "遂宁市",
-			"county": [{
-				"countyCode": "510904",
-				"countyName": "安居区"
-			}, {
-				"countyCode": "510923",
-				"countyName": "大英县"
-			}, {
-				"countyCode": "510922",
-				"countyName": "射洪县"
-			}, {
-				"countyCode": "510903",
-				"countyName": "船山区"
-			}, {
-				"countyCode": "510921",
-				"countyName": "蓬溪县"
-			}]
-		}, {
-			"cityCode": "510600",
-			"cityName": "德阳市",
-			"county": [{
-				"countyCode": "510682",
-				"countyName": "什邡市"
-			}, {
-				"countyCode": "510683",
-				"countyName": "绵竹市"
-			}, {
-				"countyCode": "510623",
-				"countyName": "中江县"
-			}, {
-				"countyCode": "510681",
-				"countyName": "广汉市"
-			}, {
-				"countyCode": "510626",
-				"countyName": "罗江区"
-			}, {
-				"countyCode": "510603",
-				"countyName": "旌阳区"
-			}]
-		}]
-	}, {
-		"provinceCode": "520000",
-		"provinceName": "贵州省",
-		"city": [{
-			"cityCode": "520100",
-			"cityName": "贵阳市",
-			"county": [{
-				"countyCode": "520103",
-				"countyName": "云岩区"
-			}, {
-				"countyCode": "520123",
-				"countyName": "修文县"
-			}, {
-				"countyCode": "520121",
-				"countyName": "开阳县"
-			}, {
-				"countyCode": "520114",
-				"countyName": "小河区"
-			}, {
-				"countyCode": "520122",
-				"countyName": "息烽县"
-			}, {
-				"countyCode": "520113",
-				"countyName": "白云区"
-			}, {
-				"countyCode": "520115",
-				"countyName": "观山湖区"
-			}, {
-				"countyCode": "520102",
-				"countyName": "南明区"
-			}, {
-				"countyCode": "520181",
-				"countyName": "清镇市"
-			}, {
-				"countyCode": "520112",
-				"countyName": "乌当区"
-			}, {
-				"countyCode": "520111",
-				"countyName": "花溪区"
-			}]
-		}, {
-			"cityCode": "520300",
-			"cityName": "遵义市",
-			"county": [{
-				"countyCode": "520381",
-				"countyName": "赤水市"
-			}, {
-				"countyCode": "520329",
-				"countyName": "余庆县"
-			}, {
-				"countyCode": "520325",
-				"countyName": "道真仡佬族苗族自治县"
-			}, {
-				"countyCode": "520326",
-				"countyName": "务川仡佬族苗族自治县"
-			}, {
-				"countyCode": "520328",
-				"countyName": "湄潭县"
-			}, {
-				"countyCode": "520327",
-				"countyName": "凤冈县"
-			}, {
-				"countyCode": "520302",
-				"countyName": "红花岗区"
-			}, {
-				"countyCode": "520382",
-				"countyName": "仁怀市"
-			}, {
-				"countyCode": "520321",
-				"countyName": "播州区"
-			}, {
-				"countyCode": "520330",
-				"countyName": "习水县"
-			}, {
-				"countyCode": "520324",
-				"countyName": "正安县"
-			}, {
-				"countyCode": "520303",
-				"countyName": "汇川区"
-			}, {
-				"countyCode": "520323",
-				"countyName": "绥阳县"
-			}, {
-				"countyCode": "520322",
-				"countyName": "桐梓县"
-			}]
-		}, {
-			"cityCode": "522700",
-			"cityName": "黔南布依族苗族自治州",
-			"county": [{
-				"countyCode": "522722",
-				"countyName": "荔波县"
-			}, {
-				"countyCode": "522725",
-				"countyName": "瓮安县"
-			}, {
-				"countyCode": "522702",
-				"countyName": "福泉市"
-			}, {
-				"countyCode": "522728",
-				"countyName": "罗甸县"
-			}, {
-				"countyCode": "522723",
-				"countyName": "贵定县"
-			}, {
-				"countyCode": "522701",
-				"countyName": "都匀市"
-			}, {
-				"countyCode": "522726",
-				"countyName": "独山县"
-			}, {
-				"countyCode": "522731",
-				"countyName": "惠水县"
-			}, {
-				"countyCode": "522732",
-				"countyName": "三都水族自治县"
-			}, {
-				"countyCode": "522727",
-				"countyName": "平塘县"
-			}, {
-				"countyCode": "522729",
-				"countyName": "长顺县"
-			}, {
-				"countyCode": "522730",
-				"countyName": "龙里县"
-			}]
-		}, {
-			"cityCode": "520200",
-			"cityName": "六盘水市",
-			"county": [{
-				"countyCode": "520222",
-				"countyName": "盘州市"
-			}, {
-				"countyCode": "520203",
-				"countyName": "六枝特区"
-			}, {
-				"countyCode": "520201",
-				"countyName": "钟山区"
-			}, {
-				"countyCode": "520221",
-				"countyName": "水城县"
-			}]
-		}, {
-			"cityCode": "520400",
-			"cityName": "安顺市",
-			"county": [{
-				"countyCode": "520424",
-				"countyName": "关岭布依族苗族自治县"
-			}, {
-				"countyCode": "520423",
-				"countyName": "镇宁布依族苗族自治县"
-			}, {
-				"countyCode": "520422",
-				"countyName": "普定县"
-			}, {
-				"countyCode": "520421",
-				"countyName": "平坝区"
-			}, {
-				"countyCode": "520425",
-				"countyName": "紫云苗族布依族自治县"
-			}, {
-				"countyCode": "520402",
-				"countyName": "西秀区"
-			}]
-		}, {
-			"cityCode": "520500",
-			"cityName": "毕节市",
-			"county": [{
-				"countyCode": "520523",
-				"countyName": "金沙县"
-			}, {
-				"countyCode": "520524",
-				"countyName": "织金县"
-			}, {
-				"countyCode": "520525",
-				"countyName": "纳雍县"
-			}, {
-				"countyCode": "520522",
-				"countyName": "黔西县"
-			}, {
-				"countyCode": "520526",
-				"countyName": "威宁彝族回族苗族自治县"
-			}, {
-				"countyCode": "520527",
-				"countyName": "赫章县"
-			}, {
-				"countyCode": "520521",
-				"countyName": "大方县"
-			}, {
-				"countyCode": "520502",
-				"countyName": "七星关区"
-			}]
-		}, {
-			"cityCode": "522600",
-			"cityName": "黔东南苗族侗族自治州",
-			"county": [{
-				"countyCode": "522626",
-				"countyName": "岑巩县"
-			}, {
-				"countyCode": "522630",
-				"countyName": "台江县"
-			}, {
-				"countyCode": "522624",
-				"countyName": "三穗县"
-			}, {
-				"countyCode": "522625",
-				"countyName": "镇远县"
-			}, {
-				"countyCode": "522636",
-				"countyName": "丹寨县"
-			}, {
-				"countyCode": "522633",
-				"countyName": "从江县"
-			}, {
-				"countyCode": "522634",
-				"countyName": "雷山县"
-			}, {
-				"countyCode": "522623",
-				"countyName": "施秉县"
-			}, {
-				"countyCode": "522629",
-				"countyName": "剑河县"
-			}, {
-				"countyCode": "522628",
-				"countyName": "锦屏县"
-			}, {
-				"countyCode": "522632",
-				"countyName": "榕江县"
-			}, {
-				"countyCode": "522631",
-				"countyName": "黎平县"
-			}, {
-				"countyCode": "522627",
-				"countyName": "天柱县"
-			}, {
-				"countyCode": "522622",
-				"countyName": "黄平县"
-			}, {
-				"countyCode": "522635",
-				"countyName": "麻江县"
-			}, {
-				"countyCode": "522601",
-				"countyName": "凯里市"
-			}]
-		}, {
-			"cityCode": "522300",
-			"cityName": "黔西南布依族苗族自治州",
-			"county": [{
-				"countyCode": "522326",
-				"countyName": "望谟县"
-			}, {
-				"countyCode": "522327",
-				"countyName": "册亨县"
-			}, {
-				"countyCode": "522323",
-				"countyName": "普安县"
-			}, {
-				"countyCode": "522322",
-				"countyName": "兴仁县"
-			}, {
-				"countyCode": "522301",
-				"countyName": "兴义市"
-			}, {
-				"countyCode": "522328",
-				"countyName": "安龙县"
-			}, {
-				"countyCode": "522324",
-				"countyName": "晴隆县"
-			}, {
-				"countyCode": "522325",
-				"countyName": "贞丰县"
-			}]
-		}, {
-			"cityCode": "520600",
-			"cityName": "铜仁市",
-			"county": [{
-				"countyCode": "520602",
-				"countyName": "碧江区"
-			}, {
-				"countyCode": "520622",
-				"countyName": "玉屏侗族自治县"
-			}, {
-				"countyCode": "520603",
-				"countyName": "万山区"
-			}, {
-				"countyCode": "520627",
-				"countyName": "沿河土家族自治县"
-			}, {
-				"countyCode": "520624",
-				"countyName": "思南县"
-			}, {
-				"countyCode": "520626",
-				"countyName": "德江县"
-			}, {
-				"countyCode": "520628",
-				"countyName": "松桃苗族自治县"
-			}, {
-				"countyCode": "520621",
-				"countyName": "江口县"
-			}, {
-				"countyCode": "520623",
-				"countyName": "石阡县"
-			}, {
-				"countyCode": "520625",
-				"countyName": "印江土家族苗族自治县"
-			}]
-		}]
-	}, {
-		"provinceCode": "530000",
-		"provinceName": "云南省",
-		"city": [{
-			"cityCode": "530400",
-			"cityName": "玉溪市",
-			"county": [{
-				"countyCode": "530425",
-				"countyName": "易门县"
-			}, {
-				"countyCode": "530423",
-				"countyName": "通海县"
-			}, {
-				"countyCode": "530421",
-				"countyName": "江川区"
-			}, {
-				"countyCode": "530424",
-				"countyName": "华宁县"
-			}, {
-				"countyCode": "530426",
-				"countyName": "峨山彝族自治县"
-			}, {
-				"countyCode": "530402",
-				"countyName": "红塔区"
-			}, {
-				"countyCode": "530422",
-				"countyName": "澄江县"
-			}, {
-				"countyCode": "530427",
-				"countyName": "新平彝族傣族自治县"
-			}, {
-				"countyCode": "530428",
-				"countyName": "元江哈尼族彝族傣族自治县"
-			}]
-		}, {
-			"cityCode": "533100",
-			"cityName": "德宏傣族景颇族自治州",
-			"county": [{
-				"countyCode": "533124",
-				"countyName": "陇川县"
-			}, {
-				"countyCode": "533122",
-				"countyName": "梁河县"
-			}, {
-				"countyCode": "533123",
-				"countyName": "盈江县"
-			}, {
-				"countyCode": "533103",
-				"countyName": "芒市"
-			}, {
-				"countyCode": "533102",
-				"countyName": "瑞丽市"
-			}]
-		}, {
-			"cityCode": "532900",
-			"cityName": "大理白族自治州",
-			"county": [{
-				"countyCode": "532927",
-				"countyName": "巍山彝族回族自治县"
-			}, {
-				"countyCode": "532931",
-				"countyName": "剑川县"
-			}, {
-				"countyCode": "532923",
-				"countyName": "祥云县"
-			}, {
-				"countyCode": "532932",
-				"countyName": "鹤庆县"
-			}, {
-				"countyCode": "532928",
-				"countyName": "永平县"
-			}, {
-				"countyCode": "532929",
-				"countyName": "云龙县"
-			}, {
-				"countyCode": "532930",
-				"countyName": "洱源县"
-			}, {
-				"countyCode": "532924",
-				"countyName": "宾川县"
-			}, {
-				"countyCode": "532925",
-				"countyName": "弥渡县"
-			}, {
-				"countyCode": "532926",
-				"countyName": "南涧彝族自治县"
-			}, {
-				"countyCode": "532901",
-				"countyName": "大理市"
-			}, {
-				"countyCode": "532922",
-				"countyName": "漾濞彝族自治县"
-			}]
-		}, {
-			"cityCode": "530100",
-			"cityName": "昆明市",
-			"county": [{
-				"countyCode": "530124",
-				"countyName": "富民县"
-			}, {
-				"countyCode": "530114",
-				"countyName": "呈贡区"
-			}, {
-				"countyCode": "530126",
-				"countyName": "石林彝族自治县"
-			}, {
-				"countyCode": "530181",
-				"countyName": "安宁市"
-			}, {
-				"countyCode": "530128",
-				"countyName": "禄劝彝族苗族自治县"
-			}, {
-				"countyCode": "530125",
-				"countyName": "宜良县"
-			}, {
-				"countyCode": "530103",
-				"countyName": "盘龙区"
-			}, {
-				"countyCode": "530102",
-				"countyName": "五华区"
-			}, {
-				"countyCode": "530122",
-				"countyName": "晋宁区"
-			}, {
-				"countyCode": "530113",
-				"countyName": "东川区"
-			}, {
-				"countyCode": "530111",
-				"countyName": "官渡区"
-			}, {
-				"countyCode": "530127",
-				"countyName": "嵩明县"
-			}, {
-				"countyCode": "530112",
-				"countyName": "西山区"
-			}, {
-				"countyCode": "530129",
-				"countyName": "寻甸回族彝族自治县"
-			}]
-		}, {
-			"cityCode": "530900",
-			"cityName": "临沧市",
-			"county": [{
-				"countyCode": "530921",
-				"countyName": "凤庆县"
-			}, {
-				"countyCode": "530926",
-				"countyName": "耿马傣族佤族自治县"
-			}, {
-				"countyCode": "530922",
-				"countyName": "云县"
-			}, {
-				"countyCode": "530924",
-				"countyName": "镇康县"
-			}, {
-				"countyCode": "530923",
-				"countyName": "永德县"
-			}, {
-				"countyCode": "530927",
-				"countyName": "沧源佤族自治县"
-			}, {
-				"countyCode": "530925",
-				"countyName": "双江拉祜族佤族布朗族傣族自治县"
-			}, {
-				"countyCode": "530902",
-				"countyName": "临翔区"
-			}]
-		}, {
-			"cityCode": "532300",
-			"cityName": "楚雄彝族自治州",
-			"county": [{
-				"countyCode": "532329",
-				"countyName": "武定县"
-			}, {
-				"countyCode": "532324",
-				"countyName": "南华县"
-			}, {
-				"countyCode": "532327",
-				"countyName": "永仁县"
-			}, {
-				"countyCode": "532328",
-				"countyName": "元谋县"
-			}, {
-				"countyCode": "532331",
-				"countyName": "禄丰县"
-			}, {
-				"countyCode": "532326",
-				"countyName": "大姚县"
-			}, {
-				"countyCode": "532325",
-				"countyName": "姚安县"
-			}, {
-				"countyCode": "532301",
-				"countyName": "楚雄市"
-			}, {
-				"countyCode": "532323",
-				"countyName": "牟定县"
-			}, {
-				"countyCode": "532322",
-				"countyName": "双柏县"
-			}]
-		}, {
-			"cityCode": "532800",
-			"cityName": "西双版纳傣族自治州",
-			"county": [{
-				"countyCode": "532823",
-				"countyName": "勐腊县"
-			}, {
-				"countyCode": "532801",
-				"countyName": "景洪市"
-			}, {
-				"countyCode": "532822",
-				"countyName": "勐海县"
-			}]
-		}, {
-			"cityCode": "532600",
-			"cityName": "文山壮族苗族自治州",
-			"county": [{
-				"countyCode": "532601",
-				"countyName": "文山市"
-			}, {
-				"countyCode": "532623",
-				"countyName": "西畴县"
-			}, {
-				"countyCode": "532627",
-				"countyName": "广南县"
-			}, {
-				"countyCode": "532625",
-				"countyName": "马关县"
-			}, {
-				"countyCode": "532622",
-				"countyName": "砚山县"
-			}, {
-				"countyCode": "532628",
-				"countyName": "富宁县"
-			}, {
-				"countyCode": "532624",
-				"countyName": "麻栗坡县"
-			}, {
-				"countyCode": "532626",
-				"countyName": "丘北县"
-			}]
-		}, {
-			"cityCode": "530300",
-			"cityName": "曲靖市",
-			"county": [{
-				"countyCode": "530302",
-				"countyName": "麒麟区"
-			}, {
-				"countyCode": "530325",
-				"countyName": "富源县"
-			}, {
-				"countyCode": "530326",
-				"countyName": "会泽县"
-			}, {
-				"countyCode": "530324",
-				"countyName": "罗平县"
-			}, {
-				"countyCode": "530328",
-				"countyName": "沾益区"
-			}, {
-				"countyCode": "530323",
-				"countyName": "师宗县"
-			}, {
-				"countyCode": "530321",
-				"countyName": "马龙区"
-			}, {
-				"countyCode": "530322",
-				"countyName": "陆良县"
-			}, {
-				"countyCode": "530381",
-				"countyName": "宣威市"
-			}]
-		}, {
-			"cityCode": "533400",
-			"cityName": "迪庆藏族自治州",
-			"county": [{
-				"countyCode": "533421",
-				"countyName": "香格里拉市"
-			}, {
-				"countyCode": "533422",
-				"countyName": "德钦县"
-			}, {
-				"countyCode": "533423",
-				"countyName": "维西傈僳族自治县"
-			}]
-		}, {
-			"cityCode": "530600",
-			"cityName": "昭通市",
-			"county": [{
-				"countyCode": "530629",
-				"countyName": "威信县"
-			}, {
-				"countyCode": "530624",
-				"countyName": "大关县"
-			}, {
-				"countyCode": "530630",
-				"countyName": "水富县"
-			}, {
-				"countyCode": "530626",
-				"countyName": "绥江县"
-			}, {
-				"countyCode": "530628",
-				"countyName": "彝良县"
-			}, {
-				"countyCode": "530623",
-				"countyName": "盐津县"
-			}, {
-				"countyCode": "530602",
-				"countyName": "昭阳区"
-			}, {
-				"countyCode": "530621",
-				"countyName": "鲁甸县"
-			}, {
-				"countyCode": "530627",
-				"countyName": "镇雄县"
-			}, {
-				"countyCode": "530625",
-				"countyName": "永善县"
-			}, {
-				"countyCode": "530622",
-				"countyName": "巧家县"
-			}]
-		}, {
-			"cityCode": "533300",
-			"cityName": "怒江傈僳族自治州",
-			"county": [{
-				"countyCode": "533323",
-				"countyName": "福贡县"
-			}, {
-				"countyCode": "533324",
-				"countyName": "贡山独龙族怒族自治县"
-			}, {
-				"countyCode": "533321",
-				"countyName": "泸水市"
-			}, {
-				"countyCode": "533325",
-				"countyName": "兰坪白族普米族自治县"
-			}]
-		}, {
-			"cityCode": "530700",
-			"cityName": "丽江市",
-			"county": [{
-				"countyCode": "530724",
-				"countyName": "宁蒗彝族自治县"
-			}, {
-				"countyCode": "530722",
-				"countyName": "永胜县"
-			}, {
-				"countyCode": "530702",
-				"countyName": "古城区"
-			}, {
-				"countyCode": "530721",
-				"countyName": "玉龙纳西族自治县"
-			}, {
-				"countyCode": "530723",
-				"countyName": "华坪县"
-			}]
-		}, {
-			"cityCode": "530800",
-			"cityName": "普洱市",
-			"county": [{
-				"countyCode": "530822",
-				"countyName": "墨江哈尼族自治县"
-			}, {
-				"countyCode": "530823",
-				"countyName": "景东彝族自治县"
-			}, {
-				"countyCode": "530827",
-				"countyName": "孟连傣族拉祜族佤族自治县"
-			}, {
-				"countyCode": "530825",
-				"countyName": "镇沅彝族哈尼族拉祜族自治县"
-			}, {
-				"countyCode": "530828",
-				"countyName": "澜沧拉祜族自治县"
-			}, {
-				"countyCode": "530829",
-				"countyName": "西盟佤族自治县"
-			}, {
-				"countyCode": "530821",
-				"countyName": "宁洱哈尼族彝族自治县"
-			}, {
-				"countyCode": "530802",
-				"countyName": "思茅区"
-			}, {
-				"countyCode": "530826",
-				"countyName": "江城哈尼族彝族自治县"
-			}, {
-				"countyCode": "530824",
-				"countyName": "景谷傣族彝族自治县"
-			}]
-		}, {
-			"cityCode": "532500",
-			"cityName": "红河哈尼族彝族自治州",
-			"county": [{
-				"countyCode": "532525",
-				"countyName": "石屏县"
-			}, {
-				"countyCode": "532530",
-				"countyName": "金平苗族瑶族傣族自治县"
-			}, {
-				"countyCode": "532503",
-				"countyName": "蒙自市"
-			}, {
-				"countyCode": "532528",
-				"countyName": "元阳县"
-			}, {
-				"countyCode": "532527",
-				"countyName": "泸西县"
-			}, {
-				"countyCode": "532502",
-				"countyName": "开远市"
-			}, {
-				"countyCode": "532524",
-				"countyName": "建水县"
-			}, {
-				"countyCode": "532532",
-				"countyName": "河口瑶族自治县"
-			}, {
-				"countyCode": "532529",
-				"countyName": "红河县"
-			}, {
-				"countyCode": "532531",
-				"countyName": "绿春县"
-			}, {
-				"countyCode": "532501",
-				"countyName": "个旧市"
-			}, {
-				"countyCode": "532523",
-				"countyName": "屏边苗族自治县"
-			}, {
-				"countyCode": "532526",
-				"countyName": "弥勒市"
-			}]
-		}, {
-			"cityCode": "530500",
-			"cityName": "保山市",
-			"county": [{
-				"countyCode": "530523",
-				"countyName": "龙陵县"
-			}, {
-				"countyCode": "530522",
-				"countyName": "腾冲市"
-			}, {
-				"countyCode": "530521",
-				"countyName": "施甸县"
-			}, {
-				"countyCode": "530502",
-				"countyName": "隆阳区"
-			}, {
-				"countyCode": "530524",
-				"countyName": "昌宁县"
-			}]
-		}]
-	}, {
-		"provinceCode": "540000",
-		"provinceName": "西藏自治区",
-		"city": [{
-			"cityCode": "542100",
-			"cityName": "昌都市",
-			"county": [{
-				"countyCode": "542122",
-				"countyName": "江达县"
-			}, {
-				"countyCode": "542129",
-				"countyName": "芒康县"
-			}, {
-				"countyCode": "542128",
-				"countyName": "左贡县"
-			}, {
-				"countyCode": "542126",
-				"countyName": "察雅县"
-			}, {
-				"countyCode": "542132",
-				"countyName": "洛隆县"
-			}, {
-				"countyCode": "542121",
-				"countyName": "卡若区"
-			}, {
-				"countyCode": "542125",
-				"countyName": "丁青县"
-			}, {
-				"countyCode": "542133",
-				"countyName": "边坝县"
-			}, {
-				"countyCode": "542123",
-				"countyName": "贡觉县"
-			}, {
-				"countyCode": "542127",
-				"countyName": "八宿县"
-			}, {
-				"countyCode": "542124",
-				"countyName": "类乌齐县"
-			}]
-		}, {
-			"cityCode": "542200",
-			"cityName": "山南市",
-			"county": [{
-				"countyCode": "542229",
-				"countyName": "加查县"
-			}, {
-				"countyCode": "542225",
-				"countyName": "琼结县"
-			}, {
-				"countyCode": "542232",
-				"countyName": "错那县"
-			}, {
-				"countyCode": "542221",
-				"countyName": "乃东区"
-			}, {
-				"countyCode": "542224",
-				"countyName": "桑日县"
-			}, {
-				"countyCode": "542222",
-				"countyName": "扎囊县"
-			}, {
-				"countyCode": "542227",
-				"countyName": "措美县"
-			}, {
-				"countyCode": "542223",
-				"countyName": "贡嘎县"
-			}, {
-				"countyCode": "542228",
-				"countyName": "洛扎县"
-			}, {
-				"countyCode": "542226",
-				"countyName": "曲松县"
-			}, {
-				"countyCode": "542233",
-				"countyName": "浪卡子县"
-			}, {
-				"countyCode": "542231",
-				"countyName": "隆子县"
-			}]
-		}, {
-			"cityCode": "542400",
-			"cityName": "那曲市",
-			"county": [{
-				"countyCode": "542426",
-				"countyName": "申扎县"
-			}, {
-				"countyCode": "542423",
-				"countyName": "比如县"
-			}, {
-				"countyCode": "542430",
-				"countyName": "尼玛县"
-			}, {
-				"countyCode": "542421",
-				"countyName": "色尼区"
-			}, {
-				"countyCode": "542422",
-				"countyName": "嘉黎县"
-			}, {
-				"countyCode": "542424",
-				"countyName": "聂荣县"
-			}, {
-				"countyCode": "542427",
-				"countyName": "索县"
-			}, {
-				"countyCode": "542425",
-				"countyName": "安多县"
-			}, {
-				"countyCode": "542428",
-				"countyName": "班戈县"
-			}, {
-				"countyCode": "542429",
-				"countyName": "巴青县"
-			}]
-		}, {
-			"cityCode": "542600",
-			"cityName": "林芝市",
-			"county": [{
-				"countyCode": "542623",
-				"countyName": "米林县"
-			}, {
-				"countyCode": "542626",
-				"countyName": "察隅县"
-			}, {
-				"countyCode": "542627",
-				"countyName": "朗县"
-			}, {
-				"countyCode": "542622",
-				"countyName": "工布江达县"
-			}, {
-				"countyCode": "542625",
-				"countyName": "波密县"
-			}, {
-				"countyCode": "542624",
-				"countyName": "墨脱县"
-			}, {
-				"countyCode": "542621",
-				"countyName": "巴宜区"
-			}]
-		}, {
-			"cityCode": "540100",
-			"cityName": "拉萨市",
-			"county": [{
-				"countyCode": "540121",
-				"countyName": "林周县"
-			}, {
-				"countyCode": "540124",
-				"countyName": "曲水县"
-			}, {
-				"countyCode": "540126",
-				"countyName": "达孜区"
-			}, {
-				"countyCode": "540125",
-				"countyName": "堆龙德庆区"
-			}, {
-				"countyCode": "540122",
-				"countyName": "当雄县"
-			}, {
-				"countyCode": "540127",
-				"countyName": "墨竹工卡县"
-			}, {
-				"countyCode": "540123",
-				"countyName": "尼木县"
-			}, {
-				"countyCode": "540102",
-				"countyName": "城关区"
-			}]
-		}, {
-			"cityCode": "542300",
-			"cityName": "日喀则市",
-			"county": [{
-				"countyCode": "542335",
-				"countyName": "吉隆县"
-			}, {
-				"countyCode": "542323",
-				"countyName": "江孜县"
-			}, {
-				"countyCode": "542331",
-				"countyName": "康马县"
-			}, {
-				"countyCode": "542322",
-				"countyName": "南木林县"
-			}, {
-				"countyCode": "542338",
-				"countyName": "岗巴县"
-			}, {
-				"countyCode": "542336",
-				"countyName": "聂拉木县"
-			}, {
-				"countyCode": "542328",
-				"countyName": "谢通门县"
-			}, {
-				"countyCode": "542325",
-				"countyName": "萨迦县"
-			}, {
-				"countyCode": "542329",
-				"countyName": "白朗县"
-			}, {
-				"countyCode": "542326",
-				"countyName": "拉孜县"
-			}, {
-				"countyCode": "542332",
-				"countyName": "定结县"
-			}, {
-				"countyCode": "542327",
-				"countyName": "昂仁县"
-			}, {
-				"countyCode": "542334",
-				"countyName": "亚东县"
-			}, {
-				"countyCode": "542337",
-				"countyName": "萨嘎县"
-			}, {
-				"countyCode": "542324",
-				"countyName": "定日县"
-			}, {
-				"countyCode": "542333",
-				"countyName": "仲巴县"
-			}, {
-				"countyCode": "542301",
-				"countyName": "桑珠孜区"
-			}, {
-				"countyCode": "542330",
-				"countyName": "仁布县"
-			}]
-		}, {
-			"cityCode": "542500",
-			"cityName": "阿里地区",
-			"county": [{
-				"countyCode": "542523",
-				"countyName": "噶尔县"
-			}, {
-				"countyCode": "542525",
-				"countyName": "革吉县"
-			}, {
-				"countyCode": "542524",
-				"countyName": "日土县"
-			}, {
-				"countyCode": "542527",
-				"countyName": "措勤县"
-			}, {
-				"countyCode": "542521",
-				"countyName": "普兰县"
-			}, {
-				"countyCode": "542526",
-				"countyName": "改则县"
-			}, {
-				"countyCode": "542522",
-				"countyName": "札达县"
-			}]
-		}]
-	}, {
-		"provinceCode": "610000",
-		"provinceName": "陕西省",
-		"city": [{
-			"cityCode": "610800",
-			"cityName": "榆林市",
-			"county": [{
-				"countyCode": "610831",
-				"countyName": "子洲县"
-			}, {
-				"countyCode": "610825",
-				"countyName": "定边县"
-			}, {
-				"countyCode": "610827",
-				"countyName": "米脂县"
-			}, {
-				"countyCode": "610821",
-				"countyName": "神木市"
-			}, {
-				"countyCode": "610829",
-				"countyName": "吴堡县"
-			}, {
-				"countyCode": "610822",
-				"countyName": "府谷县"
-			}, {
-				"countyCode": "610830",
-				"countyName": "清涧县"
-			}, {
-				"countyCode": "610823",
-				"countyName": "横山区"
-			}, {
-				"countyCode": "610824",
-				"countyName": "靖边县"
-			}, {
-				"countyCode": "610826",
-				"countyName": "绥德县"
-			}, {
-				"countyCode": "610802",
-				"countyName": "榆阳区"
-			}, {
-				"countyCode": "610828",
-				"countyName": "佳县"
-			}]
-		}, {
-			"cityCode": "610200",
-			"cityName": "铜川市",
-			"county": [{
-				"countyCode": "610202",
-				"countyName": "王益区"
-			}, {
-				"countyCode": "610203",
-				"countyName": "印台区"
-			}, {
-				"countyCode": "610204",
-				"countyName": "耀州区"
-			}, {
-				"countyCode": "610222",
-				"countyName": "宜君县"
-			}]
-		}, {
-			"cityCode": "611000",
-			"cityName": "商洛市",
-			"county": [{
-				"countyCode": "611022",
-				"countyName": "丹凤县"
-			}, {
-				"countyCode": "611023",
-				"countyName": "商南县"
-			}, {
-				"countyCode": "611026",
-				"countyName": "柞水县"
-			}, {
-				"countyCode": "611025",
-				"countyName": "镇安县"
-			}, {
-				"countyCode": "611024",
-				"countyName": "山阳县"
-			}, {
-				"countyCode": "611021",
-				"countyName": "洛南县"
-			}, {
-				"countyCode": "611002",
-				"countyName": "商州区"
-			}]
-		}, {
-			"cityCode": "610500",
-			"cityName": "渭南市",
-			"county": [{
-				"countyCode": "610582",
-				"countyName": "华阴市"
-			}, {
-				"countyCode": "610524",
-				"countyName": "合阳县"
-			}, {
-				"countyCode": "610521",
-				"countyName": "华州区"
-			}, {
-				"countyCode": "610581",
-				"countyName": "韩城市"
-			}, {
-				"countyCode": "610526",
-				"countyName": "蒲城县"
-			}, {
-				"countyCode": "610527",
-				"countyName": "白水县"
-			}, {
-				"countyCode": "610522",
-				"countyName": "潼关县"
-			}, {
-				"countyCode": "610528",
-				"countyName": "富平县"
-			}, {
-				"countyCode": "610523",
-				"countyName": "大荔县"
-			}, {
-				"countyCode": "610502",
-				"countyName": "临渭区"
-			}, {
-				"countyCode": "610525",
-				"countyName": "澄城县"
-			}]
-		}, {
-			"cityCode": "610300",
-			"cityName": "宝鸡市",
-			"county": [{
-				"countyCode": "610328",
-				"countyName": "千阳县"
-			}, {
-				"countyCode": "610330",
-				"countyName": "凤县"
-			}, {
-				"countyCode": "610329",
-				"countyName": "麟游县"
-			}, {
-				"countyCode": "610323",
-				"countyName": "岐山县"
-			}, {
-				"countyCode": "610302",
-				"countyName": "渭滨区"
-			}, {
-				"countyCode": "610327",
-				"countyName": "陇县"
-			}, {
-				"countyCode": "610322",
-				"countyName": "凤翔县"
-			}, {
-				"countyCode": "610324",
-				"countyName": "扶风县"
-			}, {
-				"countyCode": "610304",
-				"countyName": "陈仓区"
-			}, {
-				"countyCode": "610303",
-				"countyName": "金台区"
-			}, {
-				"countyCode": "610326",
-				"countyName": "眉县"
-			}, {
-				"countyCode": "610331",
-				"countyName": "太白县"
-			}]
-		}, {
-			"cityCode": "610900",
-			"cityName": "安康市",
-			"county": [{
-				"countyCode": "610927",
-				"countyName": "镇坪县"
-			}, {
-				"countyCode": "610923",
-				"countyName": "宁陕县"
-			}, {
-				"countyCode": "610922",
-				"countyName": "石泉县"
-			}, {
-				"countyCode": "610921",
-				"countyName": "汉阴县"
-			}, {
-				"countyCode": "610925",
-				"countyName": "岚皋县"
-			}, {
-				"countyCode": "610926",
-				"countyName": "平利县"
-			}, {
-				"countyCode": "610928",
-				"countyName": "旬阳县"
-			}, {
-				"countyCode": "610929",
-				"countyName": "白河县"
-			}, {
-				"countyCode": "610902",
-				"countyName": "汉滨区"
-			}, {
-				"countyCode": "610924",
-				"countyName": "紫阳县"
-			}]
-		}, {
-			"cityCode": "610700",
-			"cityName": "汉中市",
-			"county": [{
-				"countyCode": "610724",
-				"countyName": "西乡县"
-			}, {
-				"countyCode": "610721",
-				"countyName": "南郑区"
-			}, {
-				"countyCode": "610722",
-				"countyName": "城固县"
-			}, {
-				"countyCode": "610727",
-				"countyName": "略阳县"
-			}, {
-				"countyCode": "610728",
-				"countyName": "镇巴县"
-			}, {
-				"countyCode": "610702",
-				"countyName": "汉台区"
-			}, {
-				"countyCode": "610729",
-				"countyName": "留坝县"
-			}, {
-				"countyCode": "610723",
-				"countyName": "洋县"
-			}, {
-				"countyCode": "610730",
-				"countyName": "佛坪县"
-			}, {
-				"countyCode": "610726",
-				"countyName": "宁强县"
-			}, {
-				"countyCode": "610725",
-				"countyName": "勉县"
-			}]
-		}, {
-			"cityCode": "610600",
-			"cityName": "延安市",
-			"county": [{
-				"countyCode": "610628",
-				"countyName": "富县"
-			}, {
-				"countyCode": "610631",
-				"countyName": "黄龙县"
-			}, {
-				"countyCode": "610602",
-				"countyName": "宝塔区"
-			}, {
-				"countyCode": "610630",
-				"countyName": "宜川县"
-			}, {
-				"countyCode": "610624",
-				"countyName": "安塞区"
-			}, {
-				"countyCode": "610629",
-				"countyName": "洛川县"
-			}, {
-				"countyCode": "610621",
-				"countyName": "延长县"
-			}, {
-				"countyCode": "610632",
-				"countyName": "黄陵县"
-			}, {
-				"countyCode": "610626",
-				"countyName": "吴起县"
-			}, {
-				"countyCode": "610623",
-				"countyName": "子长县"
-			}, {
-				"countyCode": "610627",
-				"countyName": "甘泉县"
-			}, {
-				"countyCode": "610625",
-				"countyName": "志丹县"
-			}, {
-				"countyCode": "610622",
-				"countyName": "延川县"
-			}]
-		}, {
-			"cityCode": "610100",
-			"cityName": "西安市",
-			"county": [{
-				"countyCode": "610116",
-				"countyName": "长安区"
-			}, {
-				"countyCode": "610112",
-				"countyName": "未央区"
-			}, {
-				"countyCode": "610102",
-				"countyName": "新城区"
-			}, {
-				"countyCode": "610114",
-				"countyName": "阎良区"
-			}, {
-				"countyCode": "610111",
-				"countyName": "灞桥区"
-			}, {
-				"countyCode": "610126",
-				"countyName": "高陵区"
-			}, {
-				"countyCode": "610122",
-				"countyName": "蓝田县"
-			}, {
-				"countyCode": "610103",
-				"countyName": "碑林区"
-			}, {
-				"countyCode": "610115",
-				"countyName": "临潼区"
-			}, {
-				"countyCode": "610113",
-				"countyName": "雁塔区"
-			}, {
-				"countyCode": "610124",
-				"countyName": "周至县"
-			}, {
-				"countyCode": "610104",
-				"countyName": "莲湖区"
-			}, {
-				"countyCode": "610125",
-				"countyName": "鄠邑区"
-			}]
-		}, {
-			"cityCode": "610400",
-			"cityName": "咸阳市",
-			"county": [{
-				"countyCode": "610430",
-				"countyName": "淳化县"
-			}, {
-				"countyCode": "610423",
-				"countyName": "泾阳县"
-			}, {
-				"countyCode": "610481",
-				"countyName": "兴平市"
-			}, {
-				"countyCode": "610422",
-				"countyName": "三原县"
-			}, {
-				"countyCode": "610424",
-				"countyName": "乾县"
-			}, {
-				"countyCode": "610426",
-				"countyName": "永寿县"
-			}, {
-				"countyCode": "610427",
-				"countyName": "彬州市"
-			}, {
-				"countyCode": "610402",
-				"countyName": "秦都区"
-			}, {
-				"countyCode": "610404",
-				"countyName": "渭城区"
-			}, {
-				"countyCode": "610403",
-				"countyName": "杨陵区"
-			}, {
-				"countyCode": "610431",
-				"countyName": "武功县"
-			}, {
-				"countyCode": "610428",
-				"countyName": "长武县"
-			}, {
-				"countyCode": "610425",
-				"countyName": "礼泉县"
-			}, {
-				"countyCode": "610429",
-				"countyName": "旬邑县"
-			}]
-		}]
-	}, {
-		"provinceCode": "620000",
-		"provinceName": "甘肃省",
-		"city": [{
-			"cityCode": "620500",
-			"cityName": "天水市",
-			"county": [{
-				"countyCode": "620524",
-				"countyName": "武山县"
-			}, {
-				"countyCode": "620502",
-				"countyName": "秦州区"
-			}, {
-				"countyCode": "620521",
-				"countyName": "清水县"
-			}, {
-				"countyCode": "620523",
-				"countyName": "甘谷县"
-			}, {
-				"countyCode": "620522",
-				"countyName": "秦安县"
-			}, {
-				"countyCode": "620503",
-				"countyName": "麦积区"
-			}, {
-				"countyCode": "620525",
-				"countyName": "张家川回族自治县"
-			}]
-		}, {
-			"cityCode": "620300",
-			"cityName": "金昌市",
-			"county": [{
-				"countyCode": "620302",
-				"countyName": "金川区"
-			}, {
-				"countyCode": "620321",
-				"countyName": "永昌县"
-			}]
-		}, {
-			"cityCode": "620600",
-			"cityName": "武威市",
-			"county": [{
-				"countyCode": "620602",
-				"countyName": "凉州区"
-			}, {
-				"countyCode": "620623",
-				"countyName": "天祝藏族自治县"
-			}, {
-				"countyCode": "620622",
-				"countyName": "古浪县"
-			}, {
-				"countyCode": "620621",
-				"countyName": "民勤县"
-			}]
-		}, {
-			"cityCode": "620700",
-			"cityName": "张掖市",
-			"county": [{
-				"countyCode": "620702",
-				"countyName": "甘州区"
-			}, {
-				"countyCode": "620724",
-				"countyName": "高台县"
-			}, {
-				"countyCode": "620725",
-				"countyName": "山丹县"
-			}, {
-				"countyCode": "620723",
-				"countyName": "临泽县"
-			}, {
-				"countyCode": "620722",
-				"countyName": "民乐县"
-			}, {
-				"countyCode": "620721",
-				"countyName": "肃南裕固族自治县"
-			}]
-		}, {
-			"cityCode": "621200",
-			"cityName": "陇南市",
-			"county": [{
-				"countyCode": "621225",
-				"countyName": "西和县"
-			}, {
-				"countyCode": "621223",
-				"countyName": "宕昌县"
-			}, {
-				"countyCode": "621227",
-				"countyName": "徽县"
-			}, {
-				"countyCode": "621224",
-				"countyName": "康县"
-			}, {
-				"countyCode": "621221",
-				"countyName": "成县"
-			}, {
-				"countyCode": "621228",
-				"countyName": "两当县"
-			}, {
-				"countyCode": "621226",
-				"countyName": "礼县"
-			}, {
-				"countyCode": "621222",
-				"countyName": "文县"
-			}, {
-				"countyCode": "621202",
-				"countyName": "武都区"
-			}]
-		}, {
-			"cityCode": "620100",
-			"cityName": "兰州市",
-			"county": [{
-				"countyCode": "620121",
-				"countyName": "永登县"
-			}, {
-				"countyCode": "620111",
-				"countyName": "红古区"
-			}, {
-				"countyCode": "620103",
-				"countyName": "七里河区"
-			}, {
-				"countyCode": "620122",
-				"countyName": "皋兰县"
-			}, {
-				"countyCode": "620104",
-				"countyName": "西固区"
-			}, {
-				"countyCode": "620102",
-				"countyName": "城关区"
-			}, {
-				"countyCode": "620105",
-				"countyName": "安宁区"
-			}, {
-				"countyCode": "620123",
-				"countyName": "榆中县"
-			}]
-		}, {
-			"cityCode": "621000",
-			"cityName": "庆阳市",
-			"county": [{
-				"countyCode": "621025",
-				"countyName": "正宁县"
-			}, {
-				"countyCode": "621026",
-				"countyName": "宁县"
-			}, {
-				"countyCode": "621027",
-				"countyName": "镇原县"
-			}, {
-				"countyCode": "621023",
-				"countyName": "华池县"
-			}, {
-				"countyCode": "621002",
-				"countyName": "西峰区"
-			}, {
-				"countyCode": "621024",
-				"countyName": "合水县"
-			}, {
-				"countyCode": "621022",
-				"countyName": "环县"
-			}, {
-				"countyCode": "621021",
-				"countyName": "庆城县"
-			}]
-		}, {
-			"cityCode": "620200",
-			"cityName": "嘉峪关市",
-			"county": [{
-				"countyCode": "620200-1",
-				"countyName": "嘉峪关市"
-			}]
-		}, {
-			"cityCode": "620800",
-			"cityName": "平凉市",
-			"county": [{
-				"countyCode": "620826",
-				"countyName": "静宁县"
-			}, {
-				"countyCode": "620822",
-				"countyName": "灵台县"
-			}, {
-				"countyCode": "620823",
-				"countyName": "崇信县"
-			}, {
-				"countyCode": "620825",
-				"countyName": "庄浪县"
-			}, {
-				"countyCode": "620824",
-				"countyName": "华亭县"
-			}, {
-				"countyCode": "620821",
-				"countyName": "泾川县"
-			}, {
-				"countyCode": "620802",
-				"countyName": "崆峒区"
-			}]
-		}, {
-			"cityCode": "623000",
-			"cityName": "甘南藏族自治州",
-			"county": [{
-				"countyCode": "623024",
-				"countyName": "迭部县"
-			}, {
-				"countyCode": "623026",
-				"countyName": "碌曲县"
-			}, {
-				"countyCode": "623022",
-				"countyName": "卓尼县"
-			}, {
-				"countyCode": "623021",
-				"countyName": "临潭县"
-			}, {
-				"countyCode": "623025",
-				"countyName": "玛曲县"
-			}, {
-				"countyCode": "623001",
-				"countyName": "合作市"
-			}, {
-				"countyCode": "623027",
-				"countyName": "夏河县"
-			}, {
-				"countyCode": "623023",
-				"countyName": "舟曲县"
-			}]
-		}, {
-			"cityCode": "620400",
-			"cityName": "白银市",
-			"county": [{
-				"countyCode": "620422",
-				"countyName": "会宁县"
-			}, {
-				"countyCode": "620403",
-				"countyName": "平川区"
-			}, {
-				"countyCode": "620423",
-				"countyName": "景泰县"
-			}, {
-				"countyCode": "620421",
-				"countyName": "靖远县"
-			}, {
-				"countyCode": "620402",
-				"countyName": "白银区"
-			}]
-		}, {
-			"cityCode": "620900",
-			"cityName": "酒泉市",
-			"county": [{
-				"countyCode": "620921",
-				"countyName": "金塔县"
-			}, {
-				"countyCode": "620924",
-				"countyName": "阿克塞哈萨克族自治县"
-			}, {
-				"countyCode": "620923",
-				"countyName": "肃北蒙古族自治县"
-			}, {
-				"countyCode": "620922",
-				"countyName": "瓜州县"
-			}, {
-				"countyCode": "620981",
-				"countyName": "玉门市"
-			}, {
-				"countyCode": "620902",
-				"countyName": "肃州区"
-			}, {
-				"countyCode": "620982",
-				"countyName": "敦煌市"
-			}]
-		}, {
-			"cityCode": "621100",
-			"cityName": "定西市",
-			"county": [{
-				"countyCode": "621122",
-				"countyName": "陇西县"
-			}, {
-				"countyCode": "621123",
-				"countyName": "渭源县"
-			}, {
-				"countyCode": "621125",
-				"countyName": "漳县"
-			}, {
-				"countyCode": "621124",
-				"countyName": "临洮县"
-			}, {
-				"countyCode": "621121",
-				"countyName": "通渭县"
-			}, {
-				"countyCode": "621126",
-				"countyName": "岷县"
-			}, {
-				"countyCode": "621102",
-				"countyName": "安定区"
-			}]
-		}, {
-			"cityCode": "622900",
-			"cityName": "临夏回族自治州",
-			"county": [{
-				"countyCode": "622921",
-				"countyName": "临夏县"
-			}, {
-				"countyCode": "622925",
-				"countyName": "和政县"
-			}, {
-				"countyCode": "622924",
-				"countyName": "广河县"
-			}, {
-				"countyCode": "622901",
-				"countyName": "临夏市"
-			}, {
-				"countyCode": "622926",
-				"countyName": "东乡族自治县"
-			}, {
-				"countyCode": "622923",
-				"countyName": "永靖县"
-			}, {
-				"countyCode": "622927",
-				"countyName": "积石山保安族东乡族撒拉族自治县"
-			}, {
-				"countyCode": "622922",
-				"countyName": "康乐县"
-			}]
-		}]
-	}, {
-		"provinceCode": "630000",
-		"provinceName": "青海省",
-		"city": [{
-			"cityCode": "632200",
-			"cityName": "海北藏族自治州",
-			"county": [{
-				"countyCode": "632224",
-				"countyName": "刚察县"
-			}, {
-				"countyCode": "632222",
-				"countyName": "祁连县"
-			}, {
-				"countyCode": "632223",
-				"countyName": "海晏县"
-			}, {
-				"countyCode": "632221",
-				"countyName": "门源回族自治县"
-			}]
-		}, {
-			"cityCode": "632500",
-			"cityName": "海南藏族自治州",
-			"county": [{
-				"countyCode": "632522",
-				"countyName": "同德县"
-			}, {
-				"countyCode": "632525",
-				"countyName": "贵南县"
-			}, {
-				"countyCode": "632524",
-				"countyName": "兴海县"
-			}, {
-				"countyCode": "632523",
-				"countyName": "贵德县"
-			}, {
-				"countyCode": "632521",
-				"countyName": "共和县"
-			}]
-		}, {
-			"cityCode": "630100",
-			"cityName": "西宁市",
-			"county": [{
-				"countyCode": "630102",
-				"countyName": "城东区"
-			}, {
-				"countyCode": "630122",
-				"countyName": "湟中县"
-			}, {
-				"countyCode": "630105",
-				"countyName": "城北区"
-			}, {
-				"countyCode": "630121",
-				"countyName": "大通回族土族自治县"
-			}, {
-				"countyCode": "630103",
-				"countyName": "城中区"
-			}, {
-				"countyCode": "630104",
-				"countyName": "城西区"
-			}, {
-				"countyCode": "630123",
-				"countyName": "湟源县"
-			}]
-		}, {
-			"cityCode": "632700",
-			"cityName": "玉树藏族自治州",
-			"county": [{
-				"countyCode": "632726",
-				"countyName": "曲麻莱县"
-			}, {
-				"countyCode": "632721",
-				"countyName": "玉树市"
-			}, {
-				"countyCode": "632723",
-				"countyName": "称多县"
-			}, {
-				"countyCode": "632722",
-				"countyName": "杂多县"
-			}, {
-				"countyCode": "632725",
-				"countyName": "囊谦县"
-			}, {
-				"countyCode": "632724",
-				"countyName": "治多县"
-			}]
-		}, {
-			"cityCode": "632800",
-			"cityName": "海西蒙古族藏族自治州",
-			"county": [{
-				"countyCode": "632801",
-				"countyName": "格尔木市"
-			}, {
-				"countyCode": "632823",
-				"countyName": "天峻县"
-			}, {
-				"countyCode": "632802",
-				"countyName": "德令哈市"
-			}, {
-				"countyCode": "632822",
-				"countyName": "都兰县"
-			}, {
-				"countyCode": "632821",
-				"countyName": "乌兰县"
-			}, {
-				"countyCode": "632803",
-				"countyName": "茫崖市"
-			}]
-		}, {
-			"cityCode": "632100",
-			"cityName": "海东市",
-			"county": [{
-				"countyCode": "632128",
-				"countyName": "循化撒拉族自治县"
-			}, {
-				"countyCode": "632126",
-				"countyName": "互助土族自治县"
-			}, {
-				"countyCode": "632127",
-				"countyName": "化隆回族自治县"
-			}, {
-				"countyCode": "632122",
-				"countyName": "民和回族土族自治县"
-			}, {
-				"countyCode": "632121",
-				"countyName": "平安区"
-			}, {
-				"countyCode": "632123",
-				"countyName": "乐都区"
-			}]
-		}, {
-			"cityCode": "632300",
-			"cityName": "黄南藏族自治州",
-			"county": [{
-				"countyCode": "632322",
-				"countyName": "尖扎县"
-			}, {
-				"countyCode": "632323",
-				"countyName": "泽库县"
-			}, {
-				"countyCode": "632324",
-				"countyName": "河南蒙古族自治县"
-			}, {
-				"countyCode": "632321",
-				"countyName": "同仁县"
-			}]
-		}, {
-			"cityCode": "632600",
-			"cityName": "果洛藏族自治州",
-			"county": [{
-				"countyCode": "632625",
-				"countyName": "久治县"
-			}, {
-				"countyCode": "632623",
-				"countyName": "甘德县"
-			}, {
-				"countyCode": "632622",
-				"countyName": "班玛县"
-			}, {
-				"countyCode": "632626",
-				"countyName": "玛多县"
-			}, {
-				"countyCode": "632624",
-				"countyName": "达日县"
-			}, {
-				"countyCode": "632621",
-				"countyName": "玛沁县"
-			}]
-		}]
-	}, {
-		"provinceCode": "640000",
-		"provinceName": "宁夏回族自治区",
-		"city": [{
-			"cityCode": "640200",
-			"cityName": "石嘴山市",
-			"county": [{
-				"countyCode": "640205",
-				"countyName": "惠农区"
-			}, {
-				"countyCode": "640202",
-				"countyName": "大武口区"
-			}, {
-				"countyCode": "640221",
-				"countyName": "平罗县"
-			}]
-		}, {
-			"cityCode": "640300",
-			"cityName": "吴忠市",
-			"county": [{
-				"countyCode": "640323",
-				"countyName": "盐池县"
-			}, {
-				"countyCode": "640381",
-				"countyName": "青铜峡市"
-			}, {
-				"countyCode": "640302",
-				"countyName": "利通区"
-			}, {
-				"countyCode": "640303",
-				"countyName": "红寺堡区"
-			}, {
-				"countyCode": "640324",
-				"countyName": "同心县"
-			}]
-		}, {
-			"cityCode": "640500",
-			"cityName": "中卫市",
-			"county": [{
-				"countyCode": "640522",
-				"countyName": "海原县"
-			}, {
-				"countyCode": "640502",
-				"countyName": "沙坡头区"
-			}, {
-				"countyCode": "640521",
-				"countyName": "中宁县"
-			}]
-		}, {
-			"cityCode": "640400",
-			"cityName": "固原市",
-			"county": [{
-				"countyCode": "640402",
-				"countyName": "原州区"
-			}, {
-				"countyCode": "640423",
-				"countyName": "隆德县"
-			}, {
-				"countyCode": "640424",
-				"countyName": "泾源县"
-			}, {
-				"countyCode": "640422",
-				"countyName": "西吉县"
-			}, {
-				"countyCode": "640425",
-				"countyName": "彭阳县"
-			}]
-		}, {
-			"cityCode": "640100",
-			"cityName": "银川市",
-			"county": [{
-				"countyCode": "640106",
-				"countyName": "金凤区"
-			}, {
-				"countyCode": "640105",
-				"countyName": "西夏区"
-			}, {
-				"countyCode": "640122",
-				"countyName": "贺兰县"
-			}, {
-				"countyCode": "640104",
-				"countyName": "兴庆区"
-			}, {
-				"countyCode": "640181",
-				"countyName": "灵武市"
-			}, {
-				"countyCode": "640121",
-				"countyName": "永宁县"
-			}]
-		}]
-	}, {
-		"provinceCode": "650000",
-		"provinceName": "新疆维吾尔自治区",
-		"city": [{
-			"cityCode": "650200",
-			"cityName": "克拉玛依市",
-			"county": [{
-				"countyCode": "650203",
-				"countyName": "克拉玛依区"
-			}, {
-				"countyCode": "650205",
-				"countyName": "乌尔禾区"
-			}, {
-				"countyCode": "650202",
-				"countyName": "独山子区"
-			}, {
-				"countyCode": "650204",
-				"countyName": "白碱滩区"
-			}]
-		}, {
-			"cityCode": "652800",
-			"cityName": "巴音郭楞蒙古自治州",
-			"county": [{
-				"countyCode": "652829",
-				"countyName": "博湖县"
-			}, {
-				"countyCode": "652824",
-				"countyName": "若羌县"
-			}, {
-				"countyCode": "652826",
-				"countyName": "焉耆回族自治县"
-			}, {
-				"countyCode": "652823",
-				"countyName": "尉犁县"
-			}, {
-				"countyCode": "652822",
-				"countyName": "轮台县"
-			}, {
-				"countyCode": "652825",
-				"countyName": "且末县"
-			}, {
-				"countyCode": "652801",
-				"countyName": "库尔勒市"
-			}, {
-				"countyCode": "652827",
-				"countyName": "和静县"
-			}, {
-				"countyCode": "652828",
-				"countyName": "和硕县"
-			}]
-		}, {
-			"cityCode": "654200",
-			"cityName": "塔城地区",
-			"county": [{
-				"countyCode": "654223",
-				"countyName": "沙湾县"
-			}, {
-				"countyCode": "654201",
-				"countyName": "塔城市"
-			}, {
-				"countyCode": "654226",
-				"countyName": "和布克赛尔蒙古自治县"
-			}, {
-				"countyCode": "654202",
-				"countyName": "乌苏市"
-			}, {
-				"countyCode": "654224",
-				"countyName": "托里县"
-			}, {
-				"countyCode": "654221",
-				"countyName": "额敏县"
-			}, {
-				"countyCode": "654225",
-				"countyName": "裕民县"
-			}]
-		}, {
-			"cityCode": "652200",
-			"cityName": "哈密市",
-			"county": [{
-				"countyCode": "652222",
-				"countyName": "巴里坤哈萨克自治县"
-			}, {
-				"countyCode": "652201",
-				"countyName": "伊州区"
-			}, {
-				"countyCode": "652223",
-				"countyName": "伊吾县"
-			}]
-		}, {
-			"cityCode": "654000",
-			"cityName": "伊犁哈萨克自治州",
-			"county": [{
-				"countyCode": "654027",
-				"countyName": "特克斯县"
-			}, {
-				"countyCode": "654024",
-				"countyName": "巩留县"
-			}, {
-				"countyCode": "654022",
-				"countyName": "察布查尔锡伯自治县"
-			}, {
-				"countyCode": "654004",
-				"countyName": "霍尔果斯市"
-			}, {
-				"countyCode": "654023",
-				"countyName": "霍城县"
-			}, {
-				"countyCode": "654028",
-				"countyName": "尼勒克县"
-			}, {
-				"countyCode": "654003",
-				"countyName": "奎屯市"
-			}, {
-				"countyCode": "654021",
-				"countyName": "伊宁县"
-			}, {
-				"countyCode": "654025",
-				"countyName": "新源县"
-			}, {
-				"countyCode": "654002",
-				"countyName": "伊宁市"
-			}, {
-				"countyCode": "654026",
-				"countyName": "昭苏县"
-			}]
-		}, {
-			"cityCode": "654300",
-			"cityName": "阿勒泰地区",
-			"county": [{
-				"countyCode": "654325",
-				"countyName": "青河县"
-			}, {
-				"countyCode": "654326",
-				"countyName": "吉木乃县"
-			}, {
-				"countyCode": "654321",
-				"countyName": "布尔津县"
-			}, {
-				"countyCode": "654323",
-				"countyName": "福海县"
-			}, {
-				"countyCode": "654301",
-				"countyName": "阿勒泰市"
-			}, {
-				"countyCode": "654322",
-				"countyName": "富蕴县"
-			}, {
-				"countyCode": "654324",
-				"countyName": "哈巴河县"
-			}]
-		}, {
-			"cityCode": "652100",
-			"cityName": "吐鲁番市",
-			"county": [{
-				"countyCode": "652122",
-				"countyName": "鄯善县"
-			}, {
-				"countyCode": "652101",
-				"countyName": "高昌区"
-			}, {
-				"countyCode": "652123",
-				"countyName": "托克逊县"
-			}]
-		}, {
-			"cityCode": "650100",
-			"cityName": "乌鲁木齐市",
-			"county": [{
-				"countyCode": "650121",
-				"countyName": "乌鲁木齐县"
-			}, {
-				"countyCode": "650109",
-				"countyName": "米东区"
-			}, {
-				"countyCode": "650103",
-				"countyName": "沙依巴克区"
-			}, {
-				"countyCode": "650105",
-				"countyName": "水磨沟区"
-			}, {
-				"countyCode": "650107",
-				"countyName": "达坂城区"
-			}, {
-				"countyCode": "650104",
-				"countyName": "新市区"
-			}, {
-				"countyCode": "650102",
-				"countyName": "天山区"
-			}, {
-				"countyCode": "650106",
-				"countyName": "头屯河区"
-			}]
-		}, {
-			"cityCode": "659002",
-			"cityName": "阿拉尔市",
-			"county": [{
-				"countyCode": "659002-1",
-				"countyName": "阿拉尔市"
-			}]
-		}, {
-			"cityCode": "653200",
-			"cityName": "和田地区",
-			"county": [{
-				"countyCode": "653222",
-				"countyName": "墨玉县"
-			}, {
-				"countyCode": "653226",
-				"countyName": "于田县"
-			}, {
-				"countyCode": "653223",
-				"countyName": "皮山县"
-			}, {
-				"countyCode": "653221",
-				"countyName": "和田县"
-			}, {
-				"countyCode": "653224",
-				"countyName": "洛浦县"
-			}, {
-				"countyCode": "653225",
-				"countyName": "策勒县"
-			}, {
-				"countyCode": "653227",
-				"countyName": "民丰县"
-			}, {
-				"countyCode": "653201",
-				"countyName": "和田市"
-			}]
-		}, {
-			"cityCode": "659003",
-			"cityName": "图木舒克市",
-			"county": [{
-				"countyCode": "659003-1",
-				"countyName": "图木舒克市"
-			}]
-		}, {
-			"cityCode": "695005",
-			"cityName": "北屯市",
-			"county": [{
-				"countyCode": "695005-1",
-				"countyName": "北屯市"
-			}]
-		}, {
-			"cityCode": "652300",
-			"cityName": "昌吉回族自治州",
-			"county": [{
-				"countyCode": "652302",
-				"countyName": "阜康市"
-			}, {
-				"countyCode": "652324",
-				"countyName": "玛纳斯县"
-			}, {
-				"countyCode": "652325",
-				"countyName": "奇台县"
-			}, {
-				"countyCode": "652323",
-				"countyName": "呼图壁县"
-			}, {
-				"countyCode": "652301",
-				"countyName": "昌吉市"
-			}, {
-				"countyCode": "652327",
-				"countyName": "吉木萨尔县"
-			}, {
-				"countyCode": "652328",
-				"countyName": "木垒哈萨克自治县"
-			}, {
-				"countyCode": "652303",
-				"countyName": "准东开发区"
-			}]
-		}, {
-			"cityCode": "653100",
-			"cityName": "喀什地区",
-			"county": [{
-				"countyCode": "653128",
-				"countyName": "岳普湖县"
-			}, {
-				"countyCode": "653129",
-				"countyName": "伽师县"
-			}, {
-				"countyCode": "653126",
-				"countyName": "叶城县"
-			}, {
-				"countyCode": "653122",
-				"countyName": "疏勒县"
-			}, {
-				"countyCode": "653124",
-				"countyName": "泽普县"
-			}, {
-				"countyCode": "653121",
-				"countyName": "疏附县"
-			}, {
-				"countyCode": "653131",
-				"countyName": "塔什库尔干塔吉克自治县"
-			}, {
-				"countyCode": "653130",
-				"countyName": "巴楚县"
-			}, {
-				"countyCode": "653123",
-				"countyName": "英吉沙县"
-			}, {
-				"countyCode": "653127",
-				"countyName": "麦盖提县"
-			}, {
-				"countyCode": "653125",
-				"countyName": "莎车县"
-			}, {
-				"countyCode": "653101",
-				"countyName": "喀什市"
-			}]
-		}, {
-			"cityCode": "659001",
-			"cityName": "石河子市",
-			"county": [{
-				"countyCode": "659001-1",
-				"countyName": "石河子市"
-			}]
-		}, {
-			"cityCode": "695006",
-			"cityName": "铁门关市",
-			"county": [{
-				"countyCode": "695006-1",
-				"countyName": "铁门关市"
-			}]
-		}, {
-			"cityCode": "652900",
-			"cityName": "阿克苏地区",
-			"county": [{
-				"countyCode": "652901",
-				"countyName": "阿克苏市"
-			}, {
-				"countyCode": "652922",
-				"countyName": "温宿县"
-			}, {
-				"countyCode": "652928",
-				"countyName": "阿瓦提县"
-			}, {
-				"countyCode": "652929",
-				"countyName": "柯坪县"
-			}, {
-				"countyCode": "652925",
-				"countyName": "新和县"
-			}, {
-				"countyCode": "652924",
-				"countyName": "沙雅县"
-			}, {
-				"countyCode": "652927",
-				"countyName": "乌什县"
-			}, {
-				"countyCode": "652923",
-				"countyName": "库车县"
-			}, {
-				"countyCode": "652926",
-				"countyName": "拜城县"
-			}]
-		}, {
-			"cityCode": "653000",
-			"cityName": "克孜勒苏柯尔克孜自治州",
-			"county": [{
-				"countyCode": "653023",
-				"countyName": "阿合奇县"
-			}, {
-				"countyCode": "653022",
-				"countyName": "阿克陶县"
-			}, {
-				"countyCode": "653001",
-				"countyName": "阿图什市"
-			}, {
-				"countyCode": "653024",
-				"countyName": "乌恰县"
-			}]
-		}, {
-			"cityCode": "659004",
-			"cityName": "五家渠市",
-			"county": [{
-				"countyCode": "659004-1",
-				"countyName": "五家渠市"
-			}]
-		}, {
-			"cityCode": "652700",
-			"cityName": "博尔塔拉蒙古自治州",
-			"county": [{
-				"countyCode": "652701",
-				"countyName": "博乐市"
-			}, {
-				"countyCode": "652723",
-				"countyName": "温泉县"
-			}, {
-				"countyCode": "652722",
-				"countyName": "精河县"
-			}]
-		}, {
-			"cityCode": "695007",
-			"cityName": "双河市",
-			"county": [{
-				"countyCode": "695007-1",
-				"countyName": "双河市"
-			}]
-		}]
-		}, {
-		"provinceCode": "330000",
-		"provinceName": "浙江省",
-		"city": [{
-			"cityCode": "330900",
-			"cityName": "舟山市",
-			"county": [{
-				"countyCode": "330922",
-				"countyName": "嵊泗县"
-			}, {
-				"countyCode": "330903",
-				"countyName": "普陀区"
-			}, {
-				"countyCode": "330902",
-				"countyName": "定海区"
-			}, {
-				"countyCode": "330921",
-				"countyName": "岱山县"
-			}]
-		}, {
-			"cityCode": "330800",
-			"cityName": "衢州市",
-			"county": [{
-				"countyCode": "330824",
-				"countyName": "开化县"
-			}, {
-				"countyCode": "330803",
-				"countyName": "衢江区"
-			}, {
-				"countyCode": "330881",
-				"countyName": "江山市"
-			}, {
-				"countyCode": "330802",
-				"countyName": "柯城区"
-			}, {
-				"countyCode": "330822",
-				"countyName": "常山县"
-			}, {
-				"countyCode": "330825",
-				"countyName": "龙游县"
-			}]
-		}, {
-			"cityCode": "330700",
-			"cityName": "金华市",
-			"county": [{
-				"countyCode": "330782",
-				"countyName": "义乌市"
-			}, {
-				"countyCode": "330784",
-				"countyName": "永康市"
-			}, {
-				"countyCode": "330727",
-				"countyName": "磐安县"
-			}, {
-				"countyCode": "330702",
-				"countyName": "婺城区"
-			}, {
-				"countyCode": "330726",
-				"countyName": "浦江县"
-			}, {
-				"countyCode": "330783",
-				"countyName": "东阳市"
-			}, {
-				"countyCode": "330781",
-				"countyName": "兰溪市"
-			}, {
-				"countyCode": "330723",
-				"countyName": "武义县"
-			}, {
-				"countyCode": "330703",
-				"countyName": "金东区"
-			}]
-		}, {
-			"cityCode": "330300",
-			"cityName": "温州市",
-			"county": [{
-				"countyCode": "330302",
-				"countyName": "鹿城区"
-			}, {
-				"countyCode": "330322",
-				"countyName": "洞头区"
-			}, {
-				"countyCode": "330381",
-				"countyName": "瑞安市"
-			}, {
-				"countyCode": "330329",
-				"countyName": "泰顺县"
-			}, {
-				"countyCode": "330324",
-				"countyName": "永嘉县"
-			}, {
-				"countyCode": "330304",
-				"countyName": "瓯海区"
-			}, {
-				"countyCode": "330327",
-				"countyName": "苍南县"
-			}, {
-				"countyCode": "330328",
-				"countyName": "文成县"
-			}, {
-				"countyCode": "330326",
-				"countyName": "平阳县"
-			}, {
-				"countyCode": "330382",
-				"countyName": "乐清市"
-			}, {
-				"countyCode": "330303",
-				"countyName": "龙湾区"
-			}]
-		}, {
-			"cityCode": "330200",
-			"cityName": "宁波市",
-			"county": [{
-				"countyCode": "330204",
-				"countyName": "江东区"
-			}, {
-				"countyCode": "330225",
-				"countyName": "象山县"
-			}, {
-				"countyCode": "330212",
-				"countyName": "鄞州区"
-			}, {
-				"countyCode": "330226",
-				"countyName": "宁海县"
-			}, {
-				"countyCode": "330283",
-				"countyName": "奉化区"
-			}, {
-				"countyCode": "330282",
-				"countyName": "慈溪市"
-			}, {
-				"countyCode": "330281",
-				"countyName": "余姚市"
-			}, {
-				"countyCode": "330211",
-				"countyName": "镇海区"
-			}, {
-				"countyCode": "330205",
-				"countyName": "江北区"
-			}, {
-				"countyCode": "330206",
-				"countyName": "北仑区"
-			}, {
-				"countyCode": "330203",
-				"countyName": "海曙区"
-			}]
-		}, {
-			"cityCode": "330100",
-			"cityName": "杭州市",
-			"county": [{
-				"countyCode": "330110",
-				"countyName": "余杭区"
-			}, {
-				"countyCode": "330106",
-				"countyName": "西湖区"
-			}, {
-				"countyCode": "330109",
-				"countyName": "萧山区"
-			}, {
-				"countyCode": "330185",
-				"countyName": "临安区"
-			}, {
-				"countyCode": "330122",
-				"countyName": "桐庐县"
-			}, {
-				"countyCode": "330103",
-				"countyName": "下城区"
-			}, {
-				"countyCode": "330182",
-				"countyName": "建德市"
-			}, {
-				"countyCode": "330102",
-				"countyName": "上城区"
-			}, {
-				"countyCode": "330127",
-				"countyName": "淳安县"
-			}, {
-				"countyCode": "330105",
-				"countyName": "拱墅区"
-			}, {
-				"countyCode": "330104",
-				"countyName": "江干区"
-			}, {
-				"countyCode": "330108",
-				"countyName": "滨江区"
-			}, {
-				"countyCode": "330183",
-				"countyName": "富阳区"
-			}]
-		}, {
-			"cityCode": "330400",
-			"cityName": "嘉兴市",
-			"county": [{
-				"countyCode": "330482",
-				"countyName": "平湖市"
-			}, {
-				"countyCode": "330402",
-				"countyName": "南湖区"
-			}, {
-				"countyCode": "330481",
-				"countyName": "海宁市"
-			}, {
-				"countyCode": "330421",
-				"countyName": "嘉善县"
-			}, {
-				"countyCode": "330424",
-				"countyName": "海盐县"
-			}, {
-				"countyCode": "330411",
-				"countyName": "秀洲区"
-			}, {
-				"countyCode": "330483",
-				"countyName": "桐乡市"
-			}]
-		}, {
-			"cityCode": "330600",
-			"cityName": "绍兴市",
-			"county": [{
-				"countyCode": "330681",
-				"countyName": "诸暨市"
-			}, {
-				"countyCode": "330602",
-				"countyName": "越城区"
-			}, {
-				"countyCode": "330682",
-				"countyName": "上虞区"
-			}, {
-				"countyCode": "330683",
-				"countyName": "嵊州市"
-			}, {
-				"countyCode": "330624",
-				"countyName": "新昌县"
-			}, {
-				"countyCode": "330621",
-				"countyName": "柯桥区"
-			}]
-		}, {
-			"cityCode": "331100",
-			"cityName": "丽水市",
-			"county": [{
-				"countyCode": "331125",
-				"countyName": "云和县"
-			}, {
-				"countyCode": "331121",
-				"countyName": "青田县"
-			}, {
-				"countyCode": "331126",
-				"countyName": "庆元县"
-			}, {
-				"countyCode": "331124",
-				"countyName": "松阳县"
-			}, {
-				"countyCode": "331123",
-				"countyName": "遂昌县"
-			}, {
-				"countyCode": "331122",
-				"countyName": "缙云县"
-			}, {
-				"countyCode": "331127",
-				"countyName": "景宁畲族自治县"
-			}, {
-				"countyCode": "331102",
-				"countyName": "莲都区"
-			}, {
-				"countyCode": "331181",
-				"countyName": "龙泉市"
-			}]
-		}, {
-			"cityCode": "330500",
-			"cityName": "湖州市",
-			"county": [{
-				"countyCode": "330522",
-				"countyName": "长兴县"
-			}, {
-				"countyCode": "330503",
-				"countyName": "南浔区"
-			}, {
-				"countyCode": "330523",
-				"countyName": "安吉县"
-			}, {
-				"countyCode": "330502",
-				"countyName": "吴兴区"
-			}, {
-				"countyCode": "330521",
-				"countyName": "德清县"
-			}]
-		}, {
-			"cityCode": "331000",
-			"cityName": "台州市",
-			"county": [{
-				"countyCode": "331024",
-				"countyName": "仙居县"
-			}, {
-				"countyCode": "331021",
-				"countyName": "玉环市"
-			}, {
-				"countyCode": "331082",
-				"countyName": "临海市"
-			}, {
-				"countyCode": "331023",
-				"countyName": "天台县"
-			}, {
-				"countyCode": "331003",
-				"countyName": "黄岩区"
-			}, {
-				"countyCode": "331004",
-				"countyName": "路桥区"
-			}, {
-				"countyCode": "331022",
-				"countyName": "三门县"
-			}, {
-				"countyCode": "331002",
-				"countyName": "椒江区"
-			}, {
-				"countyCode": "331081",
-				"countyName": "温岭市"
-			}]
-		}]
-	}, {
-		"provinceCode": "320000",
-		"provinceName": "江苏省",
-		"city": [{
-			"cityCode": "320200",
-			"cityName": "无锡市",
-			"county": [{
-				"countyCode": "320282",
-				"countyName": "宜兴市"
-			}, {
-				"countyCode": "320205",
-				"countyName": "锡山区"
-			}, {
-				"countyCode": "320211",
-				"countyName": "滨湖区"
-			}, {
-				"countyCode": "320281",
-				"countyName": "江阴市"
-			}, {
-				"countyCode": "320206",
-				"countyName": "惠山区"
-			}, {
-				"countyCode": "320207",
-				"countyName": "梁溪区"
-			}, {
-				"countyCode": "320214",
-				"countyName": "新吴区"
-			}]
-		}, {
-			"cityCode": "320400",
-			"cityName": "常州市",
-			"county": [{
-				"countyCode": "320412",
-				"countyName": "武进区"
-			}, {
-				"countyCode": "320405",
-				"countyName": "戚墅堰区"
-			}, {
-				"countyCode": "320481",
-				"countyName": "溧阳市"
-			}, {
-				"countyCode": "320402",
-				"countyName": "天宁区"
-			}, {
-				"countyCode": "320411",
-				"countyName": "新北区"
-			}, {
-				"countyCode": "320404",
-				"countyName": "钟楼区"
-			}, {
-				"countyCode": "320482",
-				"countyName": "金坛区"
-			}]
-		}, {
-			"cityCode": "320500",
-			"cityName": "苏州市",
-			"county": [{
-				"countyCode": "320509",
-				"countyName": "吴江区"
-			}, {
-				"countyCode": "320506",
-				"countyName": "吴中区"
-			}, {
-				"countyCode": "320582",
-				"countyName": "张家港市"
-			}, {
-				"countyCode": "320508",
-				"countyName": "姑苏区"
-			}, {
-				"countyCode": "320571",
-				"countyName": "苏州工业园区"
-			}, {
-				"countyCode": "320583",
-				"countyName": "昆山市"
-			}, {
-				"countyCode": "320581",
-				"countyName": "常熟市"
-			}, {
-				"countyCode": "320505",
-				"countyName": "虎丘区"
-			}, {
-				"countyCode": "320507",
-				"countyName": "相城区"
-			}, {
-				"countyCode": "320585",
-				"countyName": "太仓市"
-			}]
-		}, {
-			"cityCode": "320800",
-			"cityName": "淮安市",
-			"county": [{
-				"countyCode": "320811",
-				"countyName": "清浦区"
-			}, {
-				"countyCode": "320829",
-				"countyName": "洪泽区"
-			}, {
-				"countyCode": "320802",
-				"countyName": "清江浦区"
-			}, {
-				"countyCode": "320803",
-				"countyName": "淮安区"
-			}, {
-				"countyCode": "320831",
-				"countyName": "金湖县"
-			}, {
-				"countyCode": "320804",
-				"countyName": "淮阴区"
-			}, {
-				"countyCode": "320830",
-				"countyName": "盱眙县"
-			}, {
-				"countyCode": "320826",
-				"countyName": "涟水县"
-			}]
-		}, {
-			"cityCode": "320300",
-			"cityName": "徐州市",
-			"county": [{
-				"countyCode": "320381",
-				"countyName": "新沂市"
-			}, {
-				"countyCode": "320324",
-				"countyName": "睢宁县"
-			}, {
-				"countyCode": "320311",
-				"countyName": "泉山区"
-			}, {
-				"countyCode": "320302",
-				"countyName": "鼓楼区"
-			}, {
-				"countyCode": "320305",
-				"countyName": "贾汪区"
-			}, {
-				"countyCode": "320303",
-				"countyName": "云龙区"
-			}, {
-				"countyCode": "320312",
-				"countyName": "铜山区"
-			}, {
-				"countyCode": "320321",
-				"countyName": "丰县"
-			}, {
-				"countyCode": "320322",
-				"countyName": "沛县"
-			}, {
-				"countyCode": "320382",
-				"countyName": "邳州市"
-			}]
-		}, {
-			"cityCode": "321200",
-			"cityName": "泰州市",
-			"county": [{
-				"countyCode": "321203",
-				"countyName": "高港区"
-			}, {
-				"countyCode": "321202",
-				"countyName": "海陵区"
-			}, {
-				"countyCode": "321283",
-				"countyName": "泰兴市"
-			}, {
-				"countyCode": "321284",
-				"countyName": "姜堰区"
-			}, {
-				"countyCode": "321282",
-				"countyName": "靖江市"
-			}, {
-				"countyCode": "321281",
-				"countyName": "兴化市"
-			}]
-		}, {
-			"cityCode": "320700",
-			"cityName": "连云港市",
-			"county": [{
-				"countyCode": "320723",
-				"countyName": "灌云县"
-			}, {
-				"countyCode": "320721",
-				"countyName": "赣榆区"
-			}, {
-				"countyCode": "320705",
-				"countyName": "新浦区"
-			}, {
-				"countyCode": "320722",
-				"countyName": "东海县"
-			}, {
-				"countyCode": "320706",
-				"countyName": "海州区"
-			}, {
-				"countyCode": "320703",
-				"countyName": "连云区"
-			}, {
-				"countyCode": "320724",
-				"countyName": "灌南县"
-			}]
-		}, {
-			"cityCode": "321100",
-			"cityName": "镇江市",
-			"county": [{
-				"countyCode": "321112",
-				"countyName": "丹徒区"
-			}, {
-				"countyCode": "321102",
-				"countyName": "京口区"
-			}, {
-				"countyCode": "321182",
-				"countyName": "扬中市"
-			}, {
-				"countyCode": "321181",
-				"countyName": "丹阳市"
-			}, {
-				"countyCode": "321183",
-				"countyName": "句容市"
-			}, {
-				"countyCode": "321111",
-				"countyName": "润州区"
-			}]
-		}, {
-			"cityCode": "320600",
-			"cityName": "南通市",
-			"county": [{
-				"countyCode": "320602",
-				"countyName": "崇川区"
-			}, {
-				"countyCode": "320684",
-				"countyName": "海门市"
-			}, {
-				"countyCode": "320681",
-				"countyName": "启东市"
-			}, {
-				"countyCode": "320612",
-				"countyName": "通州区"
-			}, {
-				"countyCode": "320621",
-				"countyName": "海安市"
-			}, {
-				"countyCode": "320623",
-				"countyName": "如东县"
-			}, {
-				"countyCode": "320611",
-				"countyName": "港闸区"
-			}, {
-				"countyCode": "320682",
-				"countyName": "如皋市"
-			}]
-		}, {
-			"cityCode": "320900",
-			"cityName": "盐城市",
-			"county": [{
-				"countyCode": "320922",
-				"countyName": "滨海县"
-			}, {
-				"countyCode": "320981",
-				"countyName": "东台市"
-			}, {
-				"countyCode": "320925",
-				"countyName": "建湖县"
-			}, {
-				"countyCode": "320903",
-				"countyName": "盐都区"
-			}, {
-				"countyCode": "320921",
-				"countyName": "响水县"
-			}, {
-				"countyCode": "320924",
-				"countyName": "射阳县"
-			}, {
-				"countyCode": "320902",
-				"countyName": "亭湖区"
-			}, {
-				"countyCode": "320923",
-				"countyName": "阜宁县"
-			}, {
-				"countyCode": "320982",
-				"countyName": "大丰区"
-			}]
-		}, {
-			"cityCode": "320100",
-			"cityName": "南京市",
-			"county": [{
-				"countyCode": "320106",
-				"countyName": "鼓楼区"
-			}, {
-				"countyCode": "320115",
-				"countyName": "江宁区"
-			}, {
-				"countyCode": "320111",
-				"countyName": "浦口区"
-			}, {
-				"countyCode": "320116",
-				"countyName": "六合区"
-			}, {
-				"countyCode": "320104",
-				"countyName": "秦淮区"
-			}, {
-				"countyCode": "320124",
-				"countyName": "溧水区"
-			}, {
-				"countyCode": "320125",
-				"countyName": "高淳区"
-			}, {
-				"countyCode": "320113",
-				"countyName": "栖霞区"
-			}, {
-				"countyCode": "320107",
-				"countyName": "下关区"
-			}, {
-				"countyCode": "320102",
-				"countyName": "玄武区"
-			}, {
-				"countyCode": "320105",
-				"countyName": "建邺区"
-			}, {
-				"countyCode": "320114",
-				"countyName": "雨花台区"
-			}, {
-				"countyCode": "320103",
-				"countyName": "白下区"
-			}]
-		}, {
-			"cityCode": "321000",
-			"cityName": "扬州市",
-			"county": [{
-				"countyCode": "321084",
-				"countyName": "高邮市"
-			}, {
-				"countyCode": "321023",
-				"countyName": "宝应县"
-			}, {
-				"countyCode": "321012",
-				"countyName": "江都区"
-			}, {
-				"countyCode": "321003",
-				"countyName": "邗江区"
-			}, {
-				"countyCode": "321081",
-				"countyName": "仪征市"
-			}, {
-				"countyCode": "321002",
-				"countyName": "广陵区"
-			}]
-		}, {
-			"cityCode": "321300",
-			"cityName": "宿迁市",
-			"county": [{
-				"countyCode": "321323",
-				"countyName": "泗阳县"
-			}, {
-				"countyCode": "321302",
-				"countyName": "宿城区"
-			}, {
-				"countyCode": "321311",
-				"countyName": "宿豫区"
-			}, {
-				"countyCode": "321324",
-				"countyName": "泗洪县"
-			}, {
-				"countyCode": "321322",
-				"countyName": "沭阳县"
-			}]
-		}]
-	}, {
-		"provinceCode": "440000",
-		"provinceName": "广东省",
-		"city": [{
-			"cityCode": "445100",
-			"cityName": "潮州市",
-			"county": [{
-				"countyCode": "445123",
-				"countyName": "潮安县"
-			}, {
-				"countyCode": "445122",
-				"countyName": "饶平县"
-			}, {
-				"countyCode": "445121",
-				"countyName": "潮安区"
-			}, {
-				"countyCode": "445102",
-				"countyName": "湘桥区"
-			}]
-		}, {
-			"cityCode": "441800",
-			"cityName": "清远市",
-			"county": [{
-				"countyCode": "441802",
-				"countyName": "清城区"
-			}, {
-				"countyCode": "441825",
-				"countyName": "连山壮族瑶族自治县"
-			}, {
-				"countyCode": "441821",
-				"countyName": "佛冈县"
-			}, {
-				"countyCode": "441882",
-				"countyName": "连州市"
-			}, {
-				"countyCode": "441823",
-				"countyName": "阳山县"
-			}, {
-				"countyCode": "441826",
-				"countyName": "连南瑶族自治县"
-			}, {
-				"countyCode": "441827",
-				"countyName": "清新区"
-			}, {
-				"countyCode": "441881",
-				"countyName": "英德市"
-			}]
-		}, {
-			"cityCode": "441300",
-			"cityName": "惠州市",
-			"county": [{
-				"countyCode": "441303",
-				"countyName": "惠阳区"
-			}, {
-				"countyCode": "441322",
-				"countyName": "博罗县"
-			}, {
-				"countyCode": "441323",
-				"countyName": "惠东县"
-			}, {
-				"countyCode": "441324",
-				"countyName": "龙门县"
-			}, {
-				"countyCode": "441302",
-				"countyName": "惠城区"
-			}]
-		}, {
-			"cityCode": "445200",
-			"cityName": "揭阳市",
-			"county": [{
-				"countyCode": "445221",
-				"countyName": "揭东区"
-			}, {
-				"countyCode": "445224",
-				"countyName": "惠来县"
-			}, {
-				"countyCode": "445222",
-				"countyName": "揭西县"
-			}, {
-				"countyCode": "445281",
-				"countyName": "普宁市"
-			}, {
-				"countyCode": "445202",
-				"countyName": "榕城区"
-			}]
-		}, {
-			"cityCode": "440300",
-			"cityName": "深圳市",
-			"county": [{
-				"countyCode": "440303",
-				"countyName": "罗湖区"
-			}, {
-				"countyCode": "440306",
-				"countyName": "宝安区"
-			}, {
-				"countyCode": "440305",
-				"countyName": "南山区"
-			}, {
-				"countyCode": "440307",
-				"countyName": "龙岗区"
-			}, {
-				"countyCode": "440311",
-				"countyName": "光明区"
-			}, {
-				"countyCode": "440309",
-				"countyName": "龙华区"
-			}, {
-				"countyCode": "440308",
-				"countyName": "盐田区"
-			}, {
-				"countyCode": "440304",
-				"countyName": "福田区"
-			}, {
-				"countyCode": "440312",
-				"countyName": "坪山区"
-			}, {
-				"countyCode": "440313",
-				"countyName": "大鹏新区"
-			}]
-		}, {
-			"cityCode": "441900",
-			"cityName": "东莞市",
-			"county": [{
-				"countyCode": "441900-1",
-				"countyName": "东莞市"
-			}]
-		}, {
-			"cityCode": "441400",
-			"cityName": "梅州市",
-			"county": [{
-				"countyCode": "441422",
-				"countyName": "大埔县"
-			}, {
-				"countyCode": "441423",
-				"countyName": "丰顺县"
-			}, {
-				"countyCode": "441426",
-				"countyName": "平远县"
-			}, {
-				"countyCode": "441481",
-				"countyName": "兴宁市"
-			}, {
-				"countyCode": "441427",
-				"countyName": "蕉岭县"
-			}, {
-				"countyCode": "441421",
-				"countyName": "梅县区"
-			}, {
-				"countyCode": "441424",
-				"countyName": "五华县"
-			}, {
-				"countyCode": "441402",
-				"countyName": "梅江区"
-			}]
-		}, {
-			"cityCode": "440500-1",
-			"cityName": "汕头市",
-			"county": [{
-				"countyCode": "440515",
-				"countyName": "澄海区"
-			}, {
-				"countyCode": "440511",
-				"countyName": "金平区"
-			}, {
-				"countyCode": "440523",
-				"countyName": "南澳县"
-			}, {
-				"countyCode": "440513",
-				"countyName": "潮阳区"
-			}, {
-				"countyCode": "440514",
-				"countyName": "潮南区"
-			}, {
-				"countyCode": "440507",
-				"countyName": "龙湖区"
-			}, {
-				"countyCode": "440512",
-				"countyName": "濠江区"
-			}]
-		}, {
-			"cityCode": "441600",
-			"cityName": "河源市",
-			"county": [{
-				"countyCode": "441602",
-				"countyName": "源城区"
-			}, {
-				"countyCode": "441621",
-				"countyName": "紫金县"
-			}, {
-				"countyCode": "441624",
-				"countyName": "和平县"
-			}, {
-				"countyCode": "441622",
-				"countyName": "龙川县"
-			}, {
-				"countyCode": "441625",
-				"countyName": "东源县"
-			}, {
-				"countyCode": "441623",
-				"countyName": "连平县"
-			}]
-		}, {
-			"cityCode": "445300",
-			"cityName": "云浮市",
-			"county": [{
-				"countyCode": "445322",
-				"countyName": "郁南县"
-			}, {
-				"countyCode": "445381",
-				"countyName": "罗定市"
-			}, {
-				"countyCode": "445302",
-				"countyName": "云城区"
-			}, {
-				"countyCode": "445321",
-				"countyName": "新兴县"
-			}, {
-				"countyCode": "445323",
-				"countyName": "云安区"
-			}]
-		}, {
-			"cityCode": "440400",
-			"cityName": "珠海市",
-			"county": [{
-				"countyCode": "440404",
-				"countyName": "金湾区"
-			}, {
-				"countyCode": "440403",
-				"countyName": "斗门区"
-			}, {
-				"countyCode": "440402",
-				"countyName": "香洲区"
-			}]
-		}, {
-			"cityCode": "440700",
-			"cityName": "江门市",
-			"county": [{
-				"countyCode": "440785",
-				"countyName": "恩平市"
-			}, {
-				"countyCode": "440704",
-				"countyName": "江海区"
-			}, {
-				"countyCode": "440705",
-				"countyName": "新会区"
-			}, {
-				"countyCode": "440784",
-				"countyName": "鹤山市"
-			}, {
-				"countyCode": "440703",
-				"countyName": "蓬江区"
-			}, {
-				"countyCode": "440783",
-				"countyName": "开平市"
-			}, {
-				"countyCode": "440781",
-				"countyName": "台山市"
-			}]
-		}, {
-			"cityCode": "441500",
-			"cityName": "汕尾市",
-			"county": [{
-				"countyCode": "441523",
-				"countyName": "陆河县"
-			}, {
-				"countyCode": "441502",
-				"countyName": "城区"
-			}, {
-				"countyCode": "441581",
-				"countyName": "陆丰市"
-			}, {
-				"countyCode": "441521",
-				"countyName": "海丰县"
-			}]
-		}, {
-			"cityCode": "441200",
-			"cityName": "肇庆市",
-			"county": [{
-				"countyCode": "441203",
-				"countyName": "鼎湖区"
-			}, {
-				"countyCode": "441224",
-				"countyName": "怀集县"
-			}, {
-				"countyCode": "441283",
-				"countyName": "高要区"
-			}, {
-				"countyCode": "441284",
-				"countyName": "四会市"
-			}, {
-				"countyCode": "441202",
-				"countyName": "端州区"
-			}, {
-				"countyCode": "441225",
-				"countyName": "封开县"
-			}, {
-				"countyCode": "441226",
-				"countyName": "德庆县"
-			}, {
-				"countyCode": "441223",
-				"countyName": "广宁县"
-			}]
-		}, {
-			"cityCode": "440200",
-			"cityName": "韶关市",
-			"county": [{
-				"countyCode": "440222",
-				"countyName": "始兴县"
-			}, {
-				"countyCode": "440281",
-				"countyName": "乐昌市"
-			}, {
-				"countyCode": "440203",
-				"countyName": "武江区"
-			}, {
-				"countyCode": "440233",
-				"countyName": "新丰县"
-			}, {
-				"countyCode": "440224",
-				"countyName": "仁化县"
-			}, {
-				"countyCode": "440232",
-				"countyName": "乳源瑶族自治县"
-			}, {
-				"countyCode": "440229",
-				"countyName": "翁源县"
-			}, {
-				"countyCode": "440282",
-				"countyName": "南雄市"
-			}, {
-				"countyCode": "440205",
-				"countyName": "曲江区"
-			}, {
-				"countyCode": "440204",
-				"countyName": "浈江区"
-			}]
-		}, {
-			"cityCode": "440600",
-			"cityName": "佛山市",
-			"county": [{
-				"countyCode": "440606",
-				"countyName": "顺德区"
-			}, {
-				"countyCode": "440604",
-				"countyName": "禅城区"
-			}, {
-				"countyCode": "440607",
-				"countyName": "三水区"
-			}, {
-				"countyCode": "440608",
-				"countyName": "高明区"
-			}, {
-				"countyCode": "440605",
-				"countyName": "南海区"
-			}]
-		}, {
-			"cityCode": "440100",
-			"cityName": "广州市",
-			"county": [{
-				"countyCode": "440114",
-				"countyName": "花都区"
-			}, {
-				"countyCode": "440111",
-				"countyName": "白云区"
-			}, {
-				"countyCode": "440115",
-				"countyName": "南沙区"
-			}, {
-				"countyCode": "440113",
-				"countyName": "番禺区"
-			}, {
-				"countyCode": "440183",
-				"countyName": "增城区"
-			}, {
-				"countyCode": "440112",
-				"countyName": "黄埔区"
-			}, {
-				"countyCode": "440106",
-				"countyName": "天河区"
-			}, {
-				"countyCode": "440184",
-				"countyName": "从化区"
-			}, {
-				"countyCode": "440105",
-				"countyName": "海珠区"
-			}, {
-				"countyCode": "440103",
-				"countyName": "荔湾区"
-			}, {
-				"countyCode": "440104",
-				"countyName": "越秀区"
-			}]
-		}, {
-			"cityCode": "442000",
-			"cityName": "中山市",
-			"county": [{
-				"countyCode": "442000-1",
-				"countyName": "中山市"
-			}]
-		}, {
-			"cityCode": "440800",
-			"cityName": "湛江市",
-			"county": [{
-				"countyCode": "440881",
-				"countyName": "廉江市"
-			}, {
-				"countyCode": "440804",
-				"countyName": "坡头区"
-			}, {
-				"countyCode": "440882",
-				"countyName": "雷州市"
-			}, {
-				"countyCode": "440823",
-				"countyName": "遂溪县"
-			}, {
-				"countyCode": "440803",
-				"countyName": "霞山区"
-			}, {
-				"countyCode": "440825",
-				"countyName": "徐闻县"
-			}, {
-				"countyCode": "440802",
-				"countyName": "赤坎区"
-			}, {
-				"countyCode": "440811",
-				"countyName": "麻章区"
-			}, {
-				"countyCode": "440883",
-				"countyName": "吴川市"
-			}]
-		}, {
-			"cityCode": "441700",
-			"cityName": "阳江市",
-			"county": [{
-				"countyCode": "441781",
-				"countyName": "阳春市"
-			}, {
-				"countyCode": "441702",
-				"countyName": "江城区"
-			}, {
-				"countyCode": "441721",
-				"countyName": "阳西县"
-			}, {
-				"countyCode": "441723",
-				"countyName": "阳东区"
-			}]
-		}, {
-			"cityCode": "440900",
-			"cityName": "茂名市",
-			"county": [{
-				"countyCode": "440902",
-				"countyName": "茂南区"
-			}, {
-				"countyCode": "440923",
-				"countyName": "电白区"
-			}, {
-				"countyCode": "440982",
-				"countyName": "化州市"
-			}, {
-				"countyCode": "440903",
-				"countyName": "茂港区 "
-			}, {
-				"countyCode": "440981",
-				"countyName": "高州市"
-			}, {
-				"countyCode": "440983",
-				"countyName": "信宜市"
-			}]
-		}]
-	}, {
-		"provinceCode": "810000",
-		"provinceName": "香港特别行政区",
-		"city": [{
-			"cityCode": "810000-1",
-			"cityName": "香港",
-			"county": [{
-				"countyCode": "810400",
-				"countyName": "离岛"
-			}, {
-				"countyCode": "810100",
-				"countyName": "香港岛"
-			}, {
-				"countyCode": "810300",
-				"countyName": "新界"
-			}, {
-				"countyCode": "810200",
-				"countyName": "九龙"
-			}]
-		}]
-	}
-]

+ 0 - 103
jxtxkj/components/wangding-pickerAddress/wangding-pickerAddress.vue

@@ -1,103 +0,0 @@
-<template>
-	<picker @change="bindPickerChange" @columnchange="columnchange" :range="array" range-key="name" :value="value" mode="multiSelector">
-		<slot></slot>
-	</picker>
-</template>
-
-<script>
-	import AllAddress from './data.js'
-	let selectVal = ['','','']
-	
-	export default {
-		data() {
-			return{
-				value: [0,0,0],
-				array: [],
-				index: 0
-			}
-		},
-		created() {
-			this.initSelect()
-		},
-		methods:{
-			// 初始化地址选项
-			initSelect() {
-				this.updateSourceDate() // 更新源数据
-				.updateAddressDate() // 更新结果数据
-				.$forceUpdate()  // 触发双向绑定
-			},
-			// 地址控件改变控件
-			columnchange(d) {
-				this.updateSelectIndex(d.detail.column, d.detail.value) // 更新选择索引
-				.updateSourceDate() // 更新源数据
-				.updateAddressDate() // 更新结果数据
-				.$forceUpdate()  // 触发双向绑定
-			},
-			
-			/**
-			 * 更新源数据
-			 * */
-			updateSourceDate() {
-				this.array = []
-				this.array[0] = AllAddress.map(obj => {
-					return {
-						name: obj.provinceName
-					}
-				})
-				this.array[1] = AllAddress[this.value[0]].city.map(obj => {
-					return {
-						name: obj.cityName
-					}
-				})
-				this.array[2] = AllAddress[this.value[0]].city[this.value[1]].county.map(obj => { 
-					return {
-						name: obj.countyName
-					}
-				})
-				return this
-			},
-			
-			/**
-			 * 更新索引
-			 * */
-			updateSelectIndex(column, value){
-				let arr = JSON.parse(JSON.stringify(this.value)) 
-				arr[column] = value
-				if(column === 0 ) {
-					arr[1] = 0
-					arr[2] = 0
-				}
-				if(column === 1 ) {
-					arr[2] = 0
-				}
-				this.value = arr
-				return this
-			},
-			
-			/**
-			 * 更新结果数据 
-			 * */
-			updateAddressDate() {
-				selectVal[0] = this.array[0][this.value[0]].name
-				selectVal[1] = this.array[1][this.value[1]].name 
-				selectVal[2] = this.array[2][this.value[2]].name 
-				return this
-			},
-			
-			/**
-			 * 点击确定
-			 * */
-			bindPickerChange(e) {
-				this.$emit('change', {
-					index: this.value,
-					data: selectVal
-				})
-				return this
-			}
-			
-		}
-	}
-</script>
-
-<style>
-</style>

+ 1 - 0
jxtxkj/main.js

@@ -4,6 +4,7 @@ import App from './App'
 import Vue from 'vue'
 import uView from "uview-ui";
 Vue.use(uView);
+
 Vue.config.productionTip = false
 App.mpType = 'app'
 const app = new Vue({

+ 6 - 3
jxtxkj/manifest.json

@@ -17,7 +17,9 @@
             "delay" : 0
         },
         /* 模块配置 */
-        "modules" : {},
+        "modules" : {
+            "Payment" : {}
+        },
         /* 应用发布信息 */
         "distribute" : {
             /* android打包配置 */
@@ -53,9 +55,10 @@
     "quickapp" : {},
     /* 小程序特有相关 */
     "mp-weixin" : {
-        "appid" : "",
+        "appid" : "wx403f5c24f71d4fa0",
         "setting" : {
-            "urlCheck" : false
+            "urlCheck" : false,
+            "minified" : true
         },
         "usingComponents" : true
     },

+ 19 - 19
jxtxkj/pages.json

@@ -27,35 +27,35 @@
 		{
 			"path": "pages/index/search/search",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "搜索"
 			}
 		},
 		{
 			"path": "pages/index/declare/declare",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "职称申报"
 			}
 		},
 		{
 			"path": "pages/index/declare/declare_success",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "职称申报"
 			}
 		},
 		{
 			"path": "pages/index/course/detail",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "课程详情"
 			}
 		},
 		{
 			"path": "pages/index/course/buy",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "确认订单"
 			}
 		},
@@ -112,91 +112,91 @@
 		{
 			"path": "pages/mine/personal",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "个人资料"
 			}
 		},
 		{
 			"path": "pages/mine/change",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "个人资料"
 			}
 		},
 		{
 			"path": "pages/mine/allCourse",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "个人资料"
 			}
 		},
 		{
 			"path": "pages/mine/exam/exam",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "我的考试"
 			}
 		},
 		{
 			"path": "pages/mine/exam/wrong",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "收藏题目"
 			}
 		},
 		{
 			"path": "pages/mine/order/order",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "我的订单"
 			}
 		},
 		{
 			"path": "pages/mine/order/detail",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "我的订单"
 			}
 		},
 		{
 			"path": "pages/mine/order/apply",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "我的订单"
 			}
 		},
 		{
 			"path": "pages/mine/comment",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "我的评论"
 			}
 		},
 		{
 			"path": "pages/mine/collect",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "我的收藏"
 			}
 		},
 		{
 			"path": "pages/mine/password/editPassword",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "修改密码"
 			}
 		},
 		{
 			"path": "pages/mine/password/success",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "修改密码"
 			}
 		},
 		{
 			"path": "pages/mine/certificate",
 			"style": {
-				"navigationStyle": "custom" ,// 隐藏系统导航栏
+				// "navigationStyle": "custom" ,// 隐藏系统导航栏
 				"navigationBarTitleText": "我的证书"
 			}
 		}
@@ -229,7 +229,7 @@
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
 		"navigationBarTitleText": "uni-app",
-		"navigationBarBackgroundColor": "#F8F8F8",
+		"navigationBarBackgroundColor": "#FFFFFF",
 		"backgroundColor": "#F8F8F8"
 	},
 	"uniIdRouter": {}

+ 66 - 25
jxtxkj/pages/index/course/buy.vue

@@ -1,14 +1,14 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftText="确认订单" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
+		<!-- <u-navbar height="44" leftText="确认订单" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
 		<view class="box hflex acenter">
-			<image :src="good.src" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
+			<image :src="good.img" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
 			<view class="box_right vflex">
 				<view class="title">{{good.title}}</view>
-				<view class="text_style1" style="padding: 14rpx 0 8rpx;">总学时:{{good.hours}}</view>
+				<view class="text_style1" style="padding: 14rpx 0 8rpx;">总学时:{{good.period}}</view>
 				<view class="text_style1" style="padding: 0 0 14rpx;">讲师:{{good.lecturer}}</view>
-				<view v-if="type == 1" class="price">¥{{good.price}}</view>
+				<view v-if="good.type == 1" class="price">¥{{good.price}}</view>
 				<view v-else class="hflex acenter">
 					<image src="/static/images/integral/integral.png" mode="widthFix" style="width: 44rpx;"></image>
 					<view class="price">{{good.price}}</view>
@@ -19,7 +19,7 @@
 			<view class="title" style="font-size: 32rpx;">订单信息</view>
 			<view class="hflex acenter jbetween item">
 				<view class="leftText">商品总价</view>
-				<view v-if="type == 1" class="price">¥{{good.price}}</view>
+				<view v-if="good.type == 1" class="price">¥{{good.price}}</view>
 				<view v-else class="hflex acenter">
 					<image src="/static/images/integral/integral.png" mode="widthFix" style="width: 44rpx;"></image>
 					<view class="price">{{good.price}}</view>
@@ -27,18 +27,18 @@
 			</view>
 			<view class="hflex acenter jbetween item">
 				<view class="leftText">订单编号</view>
-				<view class="rightText">{{order.orderId}}</view>
+				<view class="rightText">{{order_no}}</view>
 			</view>
 			<view class="hflex acenter jbetween item">
 				<view class="leftText">创建时间</view>
 				<view class="rightText">{{order.time}}</view>
 			</view>
-			<view class="hflex acenter jbetween item">
+			<!-- <view class="hflex acenter jbetween item">
 				<view class="leftText">订单账号</view>
 				<view class="rightText">{{order.account}}</view>
-			</view>
+			</view> -->
 		</view>
-		<view class="box hflex acenter jbetween" style="padding: 24rpx 22rpx;">
+		<view class="box hflex acenter jbetween" style="padding: 24rpx 22rpx;" v-if="good.type == 1">
 			<view class="hflex acenter">
 				<u-icon name="weixin-circle-fill" color="#00e06e" size="24"></u-icon>
 				<view class="leftText" style="padding-left: 24rpx;">微信支付</view>
@@ -70,32 +70,47 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
+	
 	export default {
 		data() {
 			return {
-				good: {
-					src: '/static/images/index/product.jpg',
-					title: '基于能源互联网的新能源',
-					lecturer: '吴迪',
-					hours: '60',
-					price: '369',
-					type: 2
-				},
+				good: {},
 				order: {
 					orderId: '156149967979879',
 					time: '',
 					account: 'jx-265156-11',
 				},
 				showPay: false,
-				value: ''
+				value: '',
+				id: 0,
+				order_no: '',
 			}
 		},
-		onLoad() {
+		onLoad(options) {
+			this.order_no = options.order_no
+			this.id = options.id
+			this.getData(this.id)
 			this.getDate()
 		},
 		methods: {
 			leftClick() {
 			},
+			// 获取订单课程信息
+			getData(id) {
+				var that = this
+				$api.req({
+					url: '/api/Index/courseDetail',
+					data: {
+						id: id
+					}
+				}, function(res) {
+					console.log("订单课程信息=",res);
+					if (res.code === 1) {
+						that.good = res.data
+					}
+				})
+			},
 			// 获取当前时间 
 			getDate() {
 				let year = new Date().getFullYear();
@@ -123,17 +138,43 @@
 			},
 			// 微信支付
 			pay() {
-				if (this.good.type == 1) {
-					uni.redirectTo({
-						url: '/pages/index/course/detail?buy=true'
+				var that = this
+				if (that.good.type == 1) {
+					$api.req({
+						url: '/api/Index/payOrder',
+						data: {
+							order_no: that.order_no,
+							pay_type: 'wx'
+						}
+					}, function(res) {
+						const payment = res.data
+						wx.requestPayment({
+						  ...payment,
+						  success (res) {
+							console.log('pay success', res)
+						  },
+						  fail (err) {
+							console.error('pay fail', err)
+						  }
+						})
 					})
 				} else {
-					this.showPay = true
+					that.showPay = true
 				}
 			},
 			// 积分支付
 			payIntegral() {
-				
+				var that = this
+				$api.req({
+					url: '/api/Index/payIntegralOrder',
+					data: {
+						order_no: that.order_no
+					}
+				}, function(res) {
+					$api.info(res.msg)
+					that.showPay = false
+					$api.jump('/pages/index/course/detail/id=' + that.good.id,1)
+				})
 			}
 		}
 	}

+ 317 - 176
jxtxkj/pages/index/course/detail.vue

@@ -1,9 +1,11 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="课程详情" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
+		<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="课程详情" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
 		<view class="banner">
-			<image :src="course.banner" mode="widthFix" style="width:750rpx"></image>
+			<image v-if="!show" :src="course.img" mode="widthFix" style="width:750rpx"></image>
+			<video v-else id="popup_video" :src="courseClassDetail.video" object-fit="contain" :show-center-play-btn="false" :controls="true" @fullscreenchange="fullscreenchange"
+				@timeupdate="timeupdate" @ended="ended" :show-progress="user.is_kj == 1?true :false" :enable-progress-gesture="user.is_kj == 1?true :false"></video>
 		</view>
 		<u-tabs :list="tabs" @click="changeTabs" :scrollable="false"
 			:inactiveStyle="{
@@ -16,25 +18,30 @@
 		<view class="content" v-if="active == 0">
 			<view class="box1">
 				<view class="hflex acenter jbetween">
-					<view class="title" style="font-size: 36rpx;">{{course.title}}</view>
-					<u-icon v-if="course.collect" name="star-fill" color="#FA6400" size="28" @click="collect"></u-icon>
+					<view class="title" style="font-size: 36rpx;">{{course.name}}</view>
+					<u-icon v-if="course.is_collection == 1" name="star-fill" color="#FA6400" size="28" @click="collect"></u-icon>
 					<u-icon v-else name="star" color="#FA6400" size="28" @click="collect"></u-icon>
 				</view>
 				<view class="hflex acenter" style="padding: 14rpx 0 30rpx;">
-					<view class="text_style1" style="padding-right: 40rpx;" v-if="!course.buy">
-						总学时:{{course.hours}}
+					<view class="text_style1" style="padding-right: 40rpx;" v-if="!course.is_buy == 1">
+						总学时:{{course.period?course.period:''}}
 					</view>
 					<view class="text_style1">
-						讲师:{{course.lecturer}}
+						讲师:{{course.lecturer?course.lecturer:''}}
 					</view>
 				</view>
-				<view class="text_style1" v-if="course.buy">
-					进度:{{course.learned}}/{{course.hours}}时
-				</view>
-				<view class="progress">
-					<u-line-progress class="line_progress" :percentage="progress" :showText="false" height="8" activeColor="#2988FE"></u-line-progress>
+				<view class="vflex" v-if="course.is_buy == 1">
+					<view class="text_style1">
+						进度:{{course.study_class_count}}/{{course.period}}时
+					</view>
+					<view class="progress">
+						<u-line-progress class="line_progress" :percentage="progress" :showText="false" height="8" activeColor="#2988FE"></u-line-progress>
+					</view>
 				</view>
-				<view class="hflex acenter jbetween">
+				<view class="hflex acenter jbetween" v-else>
+					<!-- <view class="price">
+						¥{{course.price}}
+					</view> -->
 					<view class="price" v-if="!course.buy&&course.type == 1">
 						¥{{course.price}}
 					</view>
@@ -44,24 +51,24 @@
 					</view>
 					<view></view>
 					<view class="text_style1">
-						已有{{course.collectNums}}人收藏
+						已有{{course.collection_count?course.collection_count:'0'}}人收藏
 					</view>
 				</view>
 			</view>
-			<view class="box2">
+			<view class="box2" v-if="study.length>0">
 				<view class="title">
 					最近学习
 				</view>
 				<scroll-view scroll-x="true" class="hflex acenter scroll-view_H" @scroll="scroll">
 					<view v-for="(item,index) in study" :key="index" class="study_item">
 						<view class="hflex acenter">
-							<u-avatar :src="item.avatar"></u-avatar>
+							<u-avatar :src="item.headimg"></u-avatar>
 							<view class="vflex" style="padding-left: 12rpx;">
 								<view class="name">
-									{{item.name}}
+									{{item.user_name}}
 								</view>
 								<view class="name">
-									{{item.state}}{{item.num}}课
+									已学习{{item.is_accomplish}}课
 								</view>
 							</view>
 						</view>
@@ -72,7 +79,8 @@
 				<view class="title">
 					课程概述
 				</view>
-				<image :src="course.img" mode="widthFix" style="width: 100%;"></image>
+				<u-parse :content="course.content"></u-parse>
+				<!-- <image :src="course.img" mode="widthFix" style="width: 100%;"></image> -->
 			</view>
 		</view>
 		<view class="content" v-else-if="active == 1">
@@ -80,18 +88,18 @@
 				<block v-for="(item,index) in catalog" :key="index">
 					<view class="box3 hflex acenter jbetween" @click="startLearn(index)">
 						<view class="hflex acenter">
-							<view class="" v-if="course.buy">
-								<u-checkbox :checked="item.selected" :disabled="true"></u-checkbox>
+							<view class="" v-if="course.is_buy == 1">
+								<!-- <u-checkbox :checked="item.selected"></u-checkbox> -->
 							</view>
 							<view class="text_style2">
-								{{item.num}}:
+								{{index+1}}:
 							</view>
 							<view class="text_style2">
 								{{item.name}}
 							</view>
 						</view>
 						<view class="text_style3">
-							({{item.time}})
+							({{item.playtime}})
 						</view>
 					</view>
 				</block>
@@ -100,14 +108,14 @@
 		<view class="content" v-else-if="active == 2">
 			<block v-for="(item,index) in commentList" :key="index">
 				<view class="box4 hflex">
-					<u-avatar :src="item.avatar"></u-avatar>
+					<u-avatar :src="item.headimg"></u-avatar>
 					<view class="vflex box4_right">
 						<view class="hflex acenter jbetween">
 							<view class="box4_name">
-								{{item.name}}
+								{{item.user_name}}
 							</view>
 							<view class="box4_date">
-								{{item.date}}
+								{{item.create_at}}
 							</view>
 						</view>
 						<view class="box4_content hflex fwrap">
@@ -118,7 +126,7 @@
 			</block>
 		</view>
 		<view class="bottom hflex acenter jcenter">
-			<u-button v-if="!course.buy" @click="join">立即参加</u-button>
+			<u-button v-if="course.is_buy == 0" @click="buyCourse">立即参加</u-button>
 			<view class="hflex acenter" v-else-if="active == 2">
 				<u-input placeholder="说点什么吧" v-model="commentValue">
 					<template slot="suffix">
@@ -127,8 +135,11 @@
 				</u-input>
 				<view class="btn" @click="sendComment">发送</view>
 			</view>
-			<u-button v-else-if="progress == 100" @click="exam.show = true">开始考试</u-button>
-			<u-button v-else-if="course.buy" @click="">继续学习</u-button>
+			<view class="" v-else-if="active == 0">
+				<u-button v-if="course.study_class_count == course.period" @click="openExam">开始考试</u-button>
+				<!-- <u-button v-else-if="course.study_class_count !== 0">继续学习</u-button> -->
+				<u-button v-else-if="course.is_buy == 1" @click="startStudy(1)">开始学习</u-button>
+			</view>
 		</view>
 		<!-- 考试须知 -->
 		<u-modal :show="exam.show" title="考试须知" confirmText="开始考试" @confirm="startExam">
@@ -140,22 +151,12 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				course: {
-					banner: '/static/images/index/product.jpg',
-					title: '基于能源互联网的新能源',
-					lecturer: '吴迪',
-					hours: 60,
-					learned: 60,
-					type: 2,
-					price: 369,
-					collect: false,
-					collectNums: 9875,
-					img: 'https://cdn.uviewui.com/uview/album/1.jpg',
-					buy: true
-				},
+				show: false,
+				course: {},
 				progress: '',
 				tabs: [
 					{
@@ -169,170 +170,305 @@
 					}
 				],
 				active: 0,
-				study: [
-					{
-						index: 0,
-						avatar: 'http://pic2.sc.chinaz.com/Files/pic/pic9/202002/hpic2119_s.jpg',
-						name: '半岛汪汪队',
-						state: '已完成',
-						num: 12
-					},
-					{
-						index: 1,
-						avatar: 'http://pic2.sc.chinaz.com/Files/pic/pic9/202002/hpic2119_s.jpg',
-						name: '半岛汪汪队',
-						state: '正在学习',
-						num: 12
-					},
-					{
-						index: 2,
-						avatar: 'http://pic2.sc.chinaz.com/Files/pic/pic9/202002/hpic2119_s.jpg',
-						name: '半岛汪汪队',
-						state: '已完成',
-						num: 12
-					},
-					{
-						index: 3,
-						avatar: 'http://pic2.sc.chinaz.com/Files/pic/pic9/202002/hpic2119_s.jpg',
-						name: '半岛汪汪队',
-						state: '正在学习',
-						num: 12
-					}
-				],
-				catalog: [
-					{
-						index: 0,
-						num: '课时1',
-						name: '新能源是什么?',
-						time: '23:21',
-						selected: true
-					},
-					{
-						index: 1,
-						num: '课时2',
-						name: '为什么需要新能源?',
-						time: '23:21',
-						selected: true
-					},
-					{
-						index: 2,
-						num: '课时3',
-						name: '新能源能为我们带来什么?',
-						time: '23:21',
-						selected: false
-					},
-					{
-						index: 3,
-						num: '课时4',
-						name: '新能源是什么?',
-						time: '23:21',
-						selected: false
-					},
-					{
-						index: 4,
-						num: '课时5',
-						name: '为什么需要新能源?',
-						time: '23:21',
-						selected: false
-					}
-				],
-				commentList: [
-					{
-						index: 0,
-						avatar: 'http://pic2.sc.chinaz.com/Files/pic/pic9/202002/hpic2119_s.jpg',
-						name: '半岛企鹅',
-						date: '11月13日',
-						content: '老师讲的太好了,非常感谢老师的教诲,虽然我啥也没听懂'
-					},
-					{
-						index: 1,
-						avatar: 'http://pic2.sc.chinaz.com/Files/pic/pic9/202002/hpic2119_s.jpg',
-						name: '就这啊',
-						date: '11月13日',
-						content: '就这就这就这就这啊'
-					},
-					{
-						index: 2,
-						avatar: 'http://pic2.sc.chinaz.com/Files/pic/pic9/202002/hpic2119_s.jpg',
-						name: '花舞之涯',
-						date: '11月13日',
-						content: '很喜欢老哥的课,自从学了老师的课,从以前的死记硬背变成了找技巧找词根记单词,真的感觉心可以静下来学习英语了,天天看一节课,课后及时复习,我觉得在做卷子真是进不了不少,不仅仅是知识上的长进,心静才能认真思考做题。'
-					},
-					{
-						index: 3,
-						avatar: 'http://pic2.sc.chinaz.com/Files/pic/pic9/202002/hpic2119_s.jpg',
-						name: '半岛企鹅',
-						date: '11月13日',
-						content: '老师讲的太好了,非常感谢老师的教诲,虽然我啥也没听懂'
-					},
-					{
-						index: 4,
-						avatar: 'http://pic2.sc.chinaz.com/Files/pic/pic9/202002/hpic2119_s.jpg',
-						name: '半岛企鹅',
-						date: '11月13日',
-						content: '老师讲的太好了,非常感谢老师的教诲,虽然我啥也没听懂'
-					}
-				],
+				study: [],
+				catalog: [],
+				class_id: 1,
+				courseClassDetail: [],
+				videoContext: '',
+				commentList: [],
 				commentValue: '',
 				exam: {
 					show: false,
-					content: '马明根斗土石效点离七观没验调等而需得石车速个可放至为切段例什任花定江前拉府治难身包划连民或温样使系何了给级下将铁历取二般情日片车走却料你大门府质各。江情提真体圆等前程处布与如身料干得也部定造气非单素以难不音集影有速几查近属商因无办对系能电法非出究半所或必精为界住后即产来着过节志改气。定想料有程布眼石进高单置土更斗圆公候交去劳么此低装出必将候万段种整周何自府形月土红相派山型及温都干同学管。最万到府共分命导两不处速律民年路得带提天么参同此热重件养传学位元自持报较法出状比名者建些业风从切时。'
-				}
+					content: '考试须知。'
+				},
+				currentTime: 0,
+				page: 1,
+				limit: 10,
+				user: {}
 			}
 		},
 		onLoad(e) {
-			console.log(e);
-			this.totalProgress()
-			// this.course.buy = e.buy
-			console.log(this.course.buy);
+			var id = e.id
+			this.getUser()
+			this.getData(id)
+			this.getClass(id)
+			this.getCommit(id)
+			this.getStudy(id)
+			
+		},
+		onHide() {
+			this.submitTime(this.currentTime)
+		},
+		onshow() {
+			this.getData(id)
+		},
+		onUnload() {
+			this.submitTime(this.currentTime)
 		},
 		methods: {
-			leftClick() {
+			// 获取用户信息
+			getUser() {
+				var that = this
+				$api.req({
+					url: '/api/User/userinfo'
+				}, function(res) {
+					console.log(res);
+					if (res.code == 1) {
+						that.user = res.data
+					}
+				})
+			},
+			// 根据id获取课程信息
+			getData(id) {
+				var that = this
+				$api.req({
+					url: '/api/Index/courseDetail',
+					data: {
+						id: id
+					}
+				}, function(res) {
+					console.log("课程信息=",res);
+					if (res.code === 1) {
+						that.course = res.data
+						that.totalProgress()
+					}
+				})
+			},
+			// 根据id获取课程目录信息
+			getClass(id) {
+				var that = this
+				$api.req({
+					url: '/api/Index/courseClassList',
+					data: {
+						id: id
+					}
+				}, function(res) {
+					console.log("课程目录=",res);
+					if (res.code === 1) {
+						that.catalog = res.data.list
+					}
+				})
+			},
+			// 根据id获取课程评论信息
+			getCommit(id) {
+				var that = this
+				$api.req({
+					url: '/api/Index/courseCommentsList',
+					data: {
+						id: id
+					}
+				}, function(res) {
+					console.log(res);
+					if(res.code == 1) {
+						that.commentList = res.data.list
+					}
+				})
+			},
+			// 获取学院榜样
+			getStudy(id) {
+				var that = this
+				$api.req({
+					url: '/api/Index/studentsDynamic',
+					data: {
+						page: that.page,
+						limit: that.limit,
+						id: id
+					}
+				}, function(res) {
+					console.log(res);
+					if (res.code == 1) {
+						that.study = res.data.list
+					}
+				})
 			},
 			// 计算进度条
 			totalProgress() {
 				var course = this.course
-				var progress = course.learned / course.hours * 100
+				var progress = course.study_class_count / course.period * 100
 				this.progress = progress
+				console.log(this.course)
 			},
 			// 切换tabs
 			changeTabs(e) {
-				this.active = e.index
+				var that = this
+				that.active = e.index
 			},
 			// 购买课程
-			join() {
-				uni.navigateTo({
-					url: '/pages/index/course/buy'
-				})
+			buyCourse() {
+				var that = this
+				var order_no = ''
+				console.log(that.course.type)
+				if (that.course.type == 1) {
+					$api.req({
+						url: '/api/Index/createOrder',
+						data: {
+							id: that.course.id
+						}
+					}, function(res) {
+						console.log(res);
+						order_no = res.order_no
+						$api.jump('/pages/index/course/buy?order_no=' + order_no + '&id=' + that.course.id)
+					})
+				} else {
+					$api.req({
+						url: '/api/Index/createIntergalOrder',
+						data: {
+							id: that.course.id
+						}
+					}, function(res) {
+						console.log(res);
+						order_no = res.data.order_no
+						$api.jump('/pages/index/course/buy?order_no=' + order_no + '&id=' + that.course.id)
+					})
+				}
+				// $api.jump('/pages/index/course/buy?id=' + this.course.id)
 			},
 			// 收藏
-			collect(index) {
-				this.course.collect = !this.course.collect
+			collect() {
+				var that = this
+				if (that.course.is_collection == 0) {
+					that.course.is_collection = 1
+				} else {
+					that.course.is_collection = 0
+				}
+				$api.req({
+					url: '/api/Index/collectionCancelCourse',
+					data: {
+						id: that.course.id,
+						type: that.course.is_collection
+					}
+				}, function(res) {
+					console.log("收藏=",res);
+					if (res.code == 1) {
+						$api.info(res.msg)
+					}
+				})
 			},
 			scroll(e) {
 							
 			},
+			// 开始学习
+			startStudy(id) {
+				var that = this
+				that.class_id = id
+				$api.req({
+					url: '/api/Index/courseClassDetail',
+					data: {
+						id: that.course.id,
+						class_id: that.class_id
+					}
+				}, function(res) {
+					if (res.code == 1) {
+						that.courseClassDetail = res.data
+						that.show = true
+						that.videoContext = uni.createVideoContext('popup_video', that);
+						// that.videoContext.requestFullScreen();
+					}
+				})
+			},
+			// 退出全屏的时候暂停视频
+			fullscreenchange(e) {
+				if (!e.detail.fullScreen) {
+					this.videoContext.pause()
+				}
+			},
+			// 播放进度发生改变
+			timeupdate(e) {
+				this.currentTime = e.detail.currentTime
+				// this.submitTime(this.currentTime)
+			},
+			// 视频播放完成
+			ended() {
+				var that = this
+				const index = uni.getStorageSync('index')
+				$api.req({
+					url: '/api/Index/endStudy',
+					data: {
+						id: that.course.id,
+						class_id: that.class_id
+					}
+				}, function(res) {
+					console.log(res)
+					if(res.code == 1) {
+						that.catalog[index].selected = true
+						that.getData(id)
+					}
+				})
+			},			
 			// 学习
 			startLearn(index) {
-				this.catalog[index].selected = true
+				// this.catalog[index].selected = true
+				uni.setStorageSync('index',index)
+				var that = this
+				that.class_id = that.catalog[index].id
+				$api.req({
+					url: '/api/Index/startStudy',
+					data: {
+						id: that.course.id,
+						class_id: that.class_id
+					}
+				}, function(res) {
+					if (res.code == 1) {
+						that.startStudy(that.class_id)
+					} 
+				})
+				
 			},
 			// 发送评论
 			sendComment() {
-				var comment = {}
-				comment.avatar = this.commentList[0].avatar
-				comment.name = this.commentList[0].name
-				let month = new Date().getMonth() +1;
-				let day = new Date().getDate();
-				comment.date = month + '月' + day + '日'
-				comment.content = this.commentValue
-				console.log(comment);
-				this.commentList.unshift(comment)
-				this.commentValue = ""
+				var that = this
+				$api.req({
+					url: '/api/Index/submitComments',
+					data: {
+						id: that.course.id,
+						class_id: that.class_id,
+						content: that.commentValue
+					}
+				},function(res) {
+					console.log("评论:",res);
+					that.commentValue = ""
+					that.getCommit(that.course.id)
+				})
 			},
 			// 开始考试
 			startExam() {
-				uni.navigateTo({
-					url: '/pages/index/exam/exam'
+				$api.jump('/pages/index/exam/exam?id=' + this.course.id)
+				this.exam.show = false
+				/* var that = this
+				$api.req({
+					url: '/api/User/startQuestions',
+					data: {
+						id: that.course.id
+					}
+				}, function(res) {
+					console.log(res);
+					if (res.code == 1) {
+						
+					}
+				}) */
+			},
+			// 提交观看时间
+			submitTime(time) {
+				var that = this
+				$api.req({
+					url: '/api/Index/nowTime',
+					data: {
+						id: that.course.id,
+						class_id: that.class_id,
+						now: time
+					}
+				}, function(res) {
+					console.log(res)
+				})
+			},
+			// 打开考试须知
+			openExam() {
+				var that = this
+				$api.req({
+					url: '/api/Publics/config_info'
+				}, function(res) {
+					that.exam.show = true
+					that.exam.content = res.data.test_instructions 
 				})
 			}
 		}
@@ -341,6 +477,7 @@
 
 <style lang="scss" scoped>
 	.web_box::v-deep {
+		position: relative;
 		
 		.u-navbar {
 			width: 100%;
@@ -348,7 +485,11 @@
 			padding: 36px 16px 0 0;
 		}
 		.banner {
-			margin-top: 63rpx;
+			width: 100%;
+			// margin-top: 63rpx;
+		}
+		video {
+			width: 100%;
 		}
 		.content {
 			width: 100%;

+ 23 - 7
jxtxkj/pages/index/declare/declare.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftText="职称申报" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
+		<!-- <u-navbar height="44" leftText="职称申报" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
 		<view class="form vflex jbetween">
 			<u--form labelPosition="top" labelWidth="100%" ref="form1">
 				<u-form-item label="1.您目前的学历?" prop="education" ref="item1">
@@ -16,8 +16,8 @@
 				<u-form-item label="4.您需要评审的专业?" prop="specialized" ref="item1">
 					<u--input v-model="specialized" border="none"></u--input>
 				</u-form-item>
-				<u-form-item label="5.您的出生年月?" prop="birth" ref="item1">
-					<u--input v-model="birthe" border="none"></u--input>
+				<u-form-item label="5.您的出生年月?(XXXX-XX-XX)" prop="birth" ref="item1">
+					<u--input v-model="birth" border="none"></u--input>
 				</u-form-item>
 			</u--form>
 			<u-button @click="submit">提交信息</u-button>
@@ -26,6 +26,8 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
+	
 	export default {
 		data() {
 			return {
@@ -44,9 +46,23 @@
 			},
 			// 提交表单
 			submit() {
-				uni.navigateTo({
-					url: '/pages/index/declare/declare_success'
-				})
+				var that = this
+				if ($api.formCheck(that.education,"required") && $api.formCheck(that.name,"truename") && $api.formCheck(that.phone,"phone") && $api.formCheck(that.specialized,"required") && $api.formCheck(that.birth,"date")) {
+					$api.req({
+						url: '/api/Index/submitReview',
+						data: {
+							schooling: that.education,
+							name: that.name,
+							phone: that.phone,
+							professional: that.specialized,
+							date_brith: that.birth
+						}
+					}, function(res) {
+						if (res.code == 1) {
+							$api.jump('/pages/index/declare/declare_success')
+						}
+					})
+				}
 			},
 		}
 	}

+ 2 - 2
jxtxkj/pages/index/declare/declare_success.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftText="职称申报" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
+		<!-- <u-navbar height="44" leftText="职称申报" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
 		<view class="content vflex acenter jcenter">
 			<view class="vflex acenter jcenter">
 				<u--image src="/static/images/index/success.png" width="144rpx" height="144rpx"></u--image>

+ 176 - 322
jxtxkj/pages/index/exam/exam.vue

@@ -4,73 +4,66 @@
 		</u-navbar>
 		<view class="top">
 			<view class="hflex acenter jbetween">
-				<view class="name">{{examPaper.name}}</view>
-				<view class="text_style1"><span style="font-size: 40rpx;">{{index}}</span>/{{examPaper.exam.length}}</view>
+				<view class="name">{{course.name}}</view>
+				<view class="text_style1"><span style="font-size: 40rpx;">{{index}}</span>/{{examPaper.length}}</view>
 			</view>
 			<view class="hflex acenter jbetween" style="padding-top: 20rpx;">
 				<view class="hflex acenter">
 					<image src="/static/images/index/clock.png" mode="widthFix" style="width: 44rpx;padding-right: 16rpx;"></image>
-					<u-count-down :time="examPaper.time * 60 * 1000" format="HH:mm:ss" autoStart></u-count-down>
+					<u-count-down :time="course.answer_time * 60 * 1000" format="HH:mm:ss" autoStart @finish="finish"></u-count-down>
 				</view>
 				<view class="hflex acenter">
 					<view class="answer">
-						<u-icon name="order" color="#333333" size="22" @click="showSheet = true"></u-icon>
+						<u-icon name="order" color="#333333" size="22" @click="open"></u-icon>
 					</view>
-					<u-icon v-if="examPaper.exam[index - 1].collect" name="star-fill" color="#FA6400" size="22" @click="collect"></u-icon>
-					<u-icon v-else name="star" color="#333333" size="22" @click="collect"></u-icon>
+					<!-- <u-icon v-if="examPaper[index - 1].is_collect == 0" name="star-fill" color="#FA6400" size="22" @click="collect"></u-icon>
+					<u-icon v-else name="star" color="#333333" size="22" @click="collect"></u-icon> -->
 				</view>
 			</view>
 		</view>
 		<view class="center">
-			<view class="type">{{examPaper.exam[index - 1].type}}</view>
+			<!-- <view class="type" v-if="examPaper[index - 1].type == 1">单选题</view> -->
+			<view class="type" v-if="examPaper[index - 1].type == 1">单选题</view>
+			<view class="type" v-else-if="examPaper[index - 1].type == 2">多选题</view>
+			<view class="type" v-else-if="examPaper[index - 1].type == 3">判断题</view>
 			<view class="content">
-				<u-parse :content="examPaper.exam[index - 1].topic"></u-parse>
+				<u-parse :content="examPaper[index - 1].title"></u-parse>
 			</view>
 			<view class="">
-				<view class="hflex acenter cell" @click="select('A')">
-					<view class="options" :class="examPaper.exam[index - 1].value.includes('A') ? 'active' : ''">A</view>
-					<view class="options_value">{{examPaper.exam[index - 1].options[0].name}}</view>
-				</view>
-				<view class="hflex acenter cell" @click="select('B')">
-					<view class="options" :class="examPaper.exam[index - 1].value.includes('B') ? 'active' : ''">B</view>
-					<view class="options_value">{{examPaper.exam[index - 1].options[1].name}}</view>
-				</view>
-				<view class="hflex acenter cell" @click="select('C')">
-					<view class="options" :class="examPaper.exam[index - 1].value.includes('C') ? 'active' : ''">C</view>
-					<view class="options_value">{{examPaper.exam[index - 1].options[2].name}}</view>
-				</view>
-				<view class="hflex acenter cell" @click="select('D')">
-					<view class="options" :class="examPaper.exam[index - 1].value.includes('D') ? 'active' : ''">D</view>
-					<view class="options_value">{{examPaper.exam[index - 1].options[3].name}}</view>
-				</view>
+				<block v-for="(item,inx) in examPaper[index - 1].items" :key="inx">
+					<view class="hflex acenter cell" @click="select(inx)">
+						<view class="options" :class="choice.indexOf(examPaper[index - 1].items[inx].ladder_title) != -1 ? 'active' : ''">{{item.ladder_title}}</view>
+						<view class="options_value">{{item.ladder_num}}</view>
+					</view>
+				</block>
 			</view>
 			<view class="changebtn">
-				<view v-if="index === examPaper.exam.length" class="btn1" @click="showSheet = true">交卷</view>
+				<view v-if="index === examPaper.length" class="btn1" @click="submit">交卷</view>
 				<view v-else class="btn1" @click="nextExam">下一题</view>
 			</view>
 		</view>
 		<!-- 离开考试 -->
-		<u-popup :show="showLeave" @close="showLeave = false" mode="center">
+		<u-popup :show="showLeave" @close="close1" mode="center">
 			<view class="popup vflex acenter jcenter">
 				<view class="popup_title">正在考试中</view>
 				<view class="popup_content">是否确定离开</view>
 				<view class="hflex acenter jcenter">
 					<view class="leftBtn" @click="leave">确定离开</view>
-					<view class="rightBtn" @click="showLeave = false">继续答题</view>
+					<view class="rightBtn" @click="close1">继续答题</view>
 				</view>
 			</view>
 		</u-popup>
 		<!-- 答题卡 -->
-		<u-popup :show="showSheet" @close="showSheet = false" mode="bottom" :round="10">
+		<u-popup :show="showSheet" @close="close2" mode="bottom" :round="10">
 			<view class="popup_sheet vflex acenter jcenter">
 				<view class="hflex acenter jbetween" style="width: 100%;">
 					<view></view>
 					<view class="popup_title">答题卡</view>
-					<u-icon name="close" color="#333333" size="18" @click="showSheet = false"></u-icon>
+					<u-icon name="close" color="#333333" size="18" @click="close2"></u-icon>
 				</view>
 				<view class="hflex acenter fwrap">
-					<block v-for="(item,index) in examPaper.exam" :key="index">
-						<view class="options options_item" :class="item.state ? 'active' : ''" @click="toTest(index)">{{index + 1}}</view>
+					<block v-for="(item,inx) in examPaper" :key="inx">
+						<view class="options options_item" :class="item.state ? 'active' : ''" @click="toTest(inx)">{{inx + 1}}</view>
 					</block>
 				</view>
 				<view class="sheet_bottom">
@@ -82,287 +75,26 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				examPaper: {
-					name: '基于能源互联网的新能源',
-					time: 90,
-					exam: [
-						{
-							id: 1,
-							type: '单选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-						{
-							id: 1,
-							type: '多选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-						{
-							id: 1,
-							type: '单选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-						{
-							id: 1,
-							type: '多选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-						{
-							id: 1,
-							type: '单选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-						{
-							id: 1,
-							type: '多选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-						{
-							id: 1,
-							type: '单选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-						{
-							id: 1,
-							type: '多选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-						{
-							id: 1,
-							type: '单选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-						{
-							id: 1,
-							type: '多选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-						{
-							id: 1,
-							type: '单选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-						{
-							id: 1,
-							type: '多选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: []
-						},
-					]
-				},
+				id: 1,
+				log_id: 3,
+				examPaper: [],
+				course: {},
 				index: 1,
 				showLeave: false,
+				choice: '',
 				values: [],
+				answer: [],
 				showSheet:false
 			}
 		},
-		onLoad() {
-
+		onLoad(options) {
+			this.id = options.id
+			this.startExam(this.id)
+			this.getExamTime(this.id)
 		},
 		methods: {
 			// 离开考试
@@ -373,41 +105,163 @@
 			leave() {
 				
 			},
-			// 收藏题目
-			collect() {
-				this.examPaper.exam[this.index - 1].collect = !this.examPaper.exam[this.index - 1].collect
+			// 关闭
+			close1() {
+				this.showLeave = false
+			},
+			// 关闭答题卡
+			close2() {
+				this.showSheet = false
+			},
+			// 开始考试
+			startExam(id) {
+				var that = this
+				$api.req({
+					url: '/api/User/startQuestions',
+					data: {
+						id: id
+					}
+				}, function(res) {
+					if (res.code == 1) {
+						that.id = res.data.course_id
+						that.log_id = res.data.log_id
+						that.getQuestions()
+					}
+				})
+			},
+			// 获取试题
+			getQuestions() {
+				var that = this
+				$api.req({
+					url: '/api/User/questionsList',
+					data: {
+						id: that.id
+					}
+				}, function(res) {
+					if (res.code == 1) {
+						that.examPaper = res.data
+					}
+				})
+			},
+			// 获取考试时间
+			getExamTime(id) {
+				var that = this
+				$api.req({
+					url: '/api/Index/courseDetail',
+					data: {
+						id: id
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						that.course = res.data
+					}
+				})
+			},
+			// 打开答题卡
+			open() {
+				this.showSheet = true
 			},
 			// 选择答案
-			select(val) {
+			select(option) {
 				var that = this
 				var index = that.index - 1
-				that.values.push(val)
-				var length = that.values.length - 1
-				if (that.examPaper.exam[index].type == '单选题') {
-					that.examPaper.exam[index].value = that.values[length]
-					that.examPaper.exam[index].state = true
+				if (that.examPaper[index].type !== 2) {
+					that.choice = that.examPaper[index].items[option].ladder_title
+					that.values = {
+						id: that.index,
+						answer: that.choice
+					}
 				} else {
-					that.examPaper.exam[index].value = that.values
-					that.examPaper.exam[index].state = true
+					that.choice = that.choice + that.examPaper[index].items[option].ladder_title + '、'
+					that.values = {
+						id: that.index,
+						answer: that.choice
+					}
 				}
 			},
-			// 答题卡
+			// 答题卡对应题目
 			toTest(inx) {
-				this.index = inx + 1
-				this.showSheet = false
+				var that = this
+				that.values = {}
+				that.index = inx + 1
+				that.showSheet = false
+				console.log("values: ",that.values);
+				console.log("answer:",that.answer);
+				// for (let i = 0;i<that.answer.length;i++) {
+				// 	if (that.index == that.answer[i].id) {
+				// 		that.values = {
+				// 			id: that.answer[i].id,
+				// 			answer: that.answer[i].answer
+				// 		}
+				// 	}
+				// }
 			},
 			// 下一题
 			nextExam() {
+				var that = this
+				if (that.values !== {}) {
+					if(that.values.answer.charAt(that.values.answer.length - 1) == '、') {
+						that.values.answer = that.values.answer.substr(0,that.values.answer.length-1);
+					}
+				}
+				if (that.answer.length > 0) {
+					console.log(that.answer);
+					for (let i = 0;i<that.answer.length;i++) {
+						if (that.values.id == that.answer[i].id) {
+							that.answer[i].answer = that.values.answer
+							that.values = []
+							break;
+						}
+					}
+					console.log(1111);
+					console.log(that.answer);
+					if (that.values.length !== 0) {
+						that.answer.push(that.values)
+					}
+					
+				} else {
+					that.answer.push(that.values)
+				}
+				if (that.choice != '') {
+					that.examPaper[that.index - 1].state = true
+				}
+				that.choice = ''
+				that.values = []
+				that.index ++;
+			},
+			// 最后一题
+			submit() {
+				if(this.values.answer.charAt(this.values.answer.length - 1) == '、') {
+					this.values.answer = this.values.answer.substr(0,this.values.answer.length-1);
+				}
+				this.answer.push(this.values)
+				if (this.choice != '') {
+					this.examPaper[this.index - 1].state = true
+				}
+				this.choice = ''
 				this.values = []
-				this.index ++;
+				this.open()
+			},
+			// 倒计时结束
+			finish() {
+				console.log("倒计时结束,自动交卷");
 			},
 			// 交卷
 			submitExam() {
-				
-				uni.navigateTo({
-					url: '/pages/index/exam/submit'
+				var that = this
+				that.answer = JSON.stringify(that.answer)
+				$api.req({
+					url: '/api/User/subQuestions',
+					data: {
+						id: that.id,
+						log_id: that.log_id,
+						answer: that.answer
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.jump('/pages/index/exam/submit?data=' + JSON.stringify(res.data) + '&log_id=' + that.log_id, 1)
+					}
 				})
-				
 			}
 		}
 	}

+ 98 - 120
jxtxkj/pages/index/exam/parse.vue

@@ -1,11 +1,12 @@
 <template>
 	<view class="web_box vflex active jbetween">
-		<view class="">
+		<view class="" >
 			<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="题目解析" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
 			</u-navbar>
 			<view class="box">
 				<view class="hflex acenter jend">
-					<view class="text_style1"><span style="font-size: 40rpx;">{{index}}</span>/{{examPaper.exam.length}}</view>
+					<view class="text_style1" v-if="examPaper.log_info.length == 0"><span style="font-size: 40rpx;">{{index}}</span>/{{examPaper.log_info.length}}</view>
+					<view class="text_style1" v-else><span style="font-size: 40rpx;">{{index + 1}}</span>/{{examPaper.log_info.length}}</view>
 				</view>
 				<view class="hflex acenter jbetween">
 					<view class="hflex acenter">
@@ -13,59 +14,59 @@
 					</view>
 					<view class="hflex acenter">
 						<view class="answer">
-							<u-icon name="order" color="#333333" size="22" @click="showSheet = true"></u-icon>
+							<u-icon name="order" color="#333333" size="22" @click="open"></u-icon>
 						</view>
-						<u-icon v-if="examPaper.exam[index - 1].collect" name="star-fill" color="#FA6400" size="22" @click="collect"></u-icon>
-						<u-icon v-else name="star" color="#333333" size="22" @click="collect"></u-icon>
+						<u-icon v-if="examPaper.log_info[index].is_collection == 1" name="star-fill" color="#FA6400" size="22" @click="collect(0)"></u-icon>
+						<u-icon v-else name="star" color="#333333" size="22" @click="collect(1)"></u-icon>
 					</view>
 				</view>
 			</view>
-			<view class="box">
-				<view class="type">{{examPaper.exam[index - 1].type}}</view>
+			<view class="box" v-if="examPaper.log_info.length !== 0">
+				<!-- <view class="type">{{examPaper.log_info[index].type ==1}}单选题</view> -->
+				<view class="type" v-if="examPaper.log_info[index].type == 1">单选题</view>
+				<view class="type" v-else-if="examPaper.log_info[index].type == 2">多选题</view>
+				<view class="type" v-else-if="examPaper.log_info[index].type == 3">判断题</view>
 				<view class="content">
-					<u-parse :content="examPaper.exam[index - 1].topic"></u-parse>
+					<u-parse :content="examPaper.log_info[index].title"></u-parse>
 				</view>
 				<view class="">
-					<view class="hflex acenter cell">
-						<view class="options" :class="examPaper.exam[index - 1].answer.includes('A') ? 'active' : ''">A</view>
-						<view class="options_value">{{examPaper.exam[index - 1].options[0].name}}</view>
-					</view>
-					<view class="hflex acenter cell">
-						<view class="options" :class="examPaper.exam[index - 1].answer.includes('B') ? 'active' : ''">B</view>
-						<view class="options_value">{{examPaper.exam[index - 1].options[1].name}}</view>
-					</view>
-					<view class="hflex acenter cell">
-						<view class="options" :class="examPaper.exam[index - 1].answer.includes('C') ? 'active' : ''">C</view>
-						<view class="options_value">{{examPaper.exam[index - 1].options[2].name}}</view>
-					</view>
-					<view class="hflex acenter cell">
-						<view class="options" :class="examPaper.exam[index - 1].answer.includes('D') ? 'active' : ''">D</view>
-						<view class="options_value">{{examPaper.exam[index - 1].options[3].name}}</view>
-					</view>
+					<block v-for="(item,inx) in examPaper.log_info[index].items" :key="inx">
+						<view class="hflex acenter cell">
+							<view v-if="examPaper.log_info[index].type == 2" class="options" :class="examPaper.log_info[index].success_answer.indexOf(item.ladder_title) != -1 ? 'active' : ''">{{item.ladder_title}}</view>
+							<view v-else class="options" :class="item.ladder_title == examPaper.log_info[index].success_answer ? 'active' : ''">{{item.ladder_title}}</view>
+							<view class="options_value">{{item.ladder_num}}</view>
+						</view>
+					</block>
 				</view>
 			</view>
-			<view class="box">
+			<view class="box" v-if="examPaper.log_info.length !== 0">
 				<view class="answer_bg hflex acenter jbetween">
-					<view class="text_style2">正确答案:{{examPaper.exam[index - 1].answer}}</view>
-					<view class="text_style2">你的答案:{{examPaper.exam[index - 1].value}}</view>
+					<view class="text_style2">正确答案:{{examPaper.log_info[index].success_answer}}</view>
+					<view class="text_style2">你的答案:{{examPaper.log_info[index].member_answer}}</view>
+				</view>
+			</view>
+			<view class="box vflex acenter jcenter" v-if="examPaper.log_info.length == 0">
+				<image src="../../../static/images/common/see_none.png"  class="img_none"></image>
+				<view class="text_none">
+					满分答卷
 				</view>
 			</view>
 		</view>
-		<view class="bottom hflex acenter jcenter">
-			<view v-if="index === examPaper.exam.length" class="btn1" @click="result">返回</view>
+		<view class="bottom hflex acenter jcenter" >
+			<view v-if="index === examPaper.log_info.length || index === examPaper.log_info.length - 1" class="btn1" @click="result">返回</view>
 			<view v-else class="btn1" @click="nextExam">下一题</view>
 		</view>
 		<!-- 答题卡 -->
-		<u-popup :show="showSheet" @close="showSheet = false" mode="bottom" :round="10">
+		<u-popup :show="showSheet" @close="close" mode="bottom" :round="10">
 			<view class="popup_sheet vflex acenter jcenter">
 				<view class="hflex acenter jbetween" style="width: 100%;">
 					<view></view>
 					<view class="popup_title">答题卡</view>
-					<u-icon name="close" color="#333333" size="18" @click="showSheet = false"></u-icon>
+					<u-icon name="close" color="#333333" size="18" @click="close"></u-icon>
 				</view>
 				<view class="hflex acenter fwrap">
-					<block v-for="(item,index) in examPaper.exam" :key="index">
-						<view class="options options_item" :class="item.state ? 'active' : ''" @click="toTest(index)">{{index + 1}}</view>
+					<block v-for="(item,index) in examPaper.log_info" :key="index">
+						<view class="options options_item active" @click="toTest(index)">{{index + 1}}</view>
 					</block>
 				</view>
 				<view class="sheet_bottom">
@@ -77,115 +78,82 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				examPaper: {
-					name: '基于能源互联网的新能源',
-					time: 90,
-					exam: [
-						{
-							id: 1,
-							type: '单选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: ['A'],
-							answer: ['B']
-						},
-						{
-							id: 1,
-							type: '多选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: ['A','B','C'],
-							answer: ['A','B','C','D']
-						},
-						{
-							id: 1,
-							type: '单选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: ['A'],
-							answer: ['B']
-						},
-					],
-					
-				},
-				index: 1,
-				showSheet:false
+				examPaper: {},
+				index: 0,
+				showSheet:false,
+				state: 0,
+				log_id: 1,
 			}
 		},
-		onLoad() {
-			
+		onLoad(options) {
+			this.state = options.state
+			this.log_id = options.log_id
+			this.sellQuestionsLog()
 		},
 		methods: {
 			leftClick() {
 				
 			},
+			sellQuestionsLog() {
+				var that = this
+				$api.req({
+					url: '/api/User/sellQuestionsLog',
+					data: {
+						log_id: that.log_id,
+						state: that.state
+					}
+				}, function(res) {
+					console.log("解析",res)
+					if (res.code == 1) {
+						that.examPaper = res.data
+					}
+				})
+			},
 			// 收藏题目
-			collect() {
-				this.examPaper.exam[this.index - 1].collect = !this.examPaper.exam[this.index - 1].collect
+			collect(type) {
+				var that = this
+				var questions_id = that.examPaper.log_info[that.index].questions_id
+				var info_id = that.examPaper.log_info[that.index].id
+				$api.req({
+					url: '/api/User/collectionQuestions',
+					data: {
+						id: that.examPaper.course_id,
+						questions_id: questions_id,
+						info_id: info_id,
+						type: type
+					}
+				}, function(res) {
+					console.log(res);
+					$api.info(res.msg)
+					that.sellQuestionsLog()
+				})
+				// this.examPaper.exam[this.index].collect = !this.examPaper.exam[this.index].collect
 			},
 			// 下一题
 			nextExam() {
 				this.values = []
 				this.index ++;
 			},
+			// 打开答题卡
+			open() {
+				this.showSheet = true
+			},
+			// 关闭答题卡
+			close() {
+				this.showSheet = false
+			},
 			// 答题卡
 			toTest(inx) {
-				this.index = inx + 1
-				this.showSheet = false
+				this.index = inx
+				this.close()
 			},
 			// 返回
 			result() {
-				uni.switchTab({
-					url: '/pages/index/index'
-				})
+				$api.jump(-1)
 			}
 		}
 	}
@@ -331,5 +299,15 @@
 			text-align: center;
 			line-height: 80rpx;
 		}
+		.text_none {
+			font-size: 32rpx;
+			color: #333333;
+			margin-top: 44rpx;
+		}
+		.img_none {
+			margin-top: 300rpx;
+			width: 524rpx;
+			height: 308rpx;
+		}
 	}
 </style>

+ 44 - 58
jxtxkj/pages/index/exam/submit.vue

@@ -4,17 +4,17 @@
 			<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="考试成绩" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
 			</u-navbar>
 			<view class="box vflex acenter jcenter">
-				<view v-if="course.score < 60" class="title">考试未合格</view>
+				<view v-if="course.is_pass == 0" class="title">考试未合格</view>
 				<view v-else class="title">
-					<image :src="course.img" mode="widthFix" style="width: 660rpx;"></image>
+					<image :src="course.certificate" mode="widthFix" style="width: 660rpx;"></image>
 				</view>
 				<view class="hflex aend">
-					<view v-if="course.score < 60" class="score">{{course.score}}</view>
+					<view v-if="course.is_pass == 0" class="score">{{course.score}}</view>
 					<view v-else class="score" style="color: #3DA1FE;">{{course.score}}</view>
-					<view class="score_total">/100分</view>
+					<view class="score_total">/{{course.all_score}}分</view>
 				</view>
 				<view class="name hflex acenter jbetween">
-					<view>{{course.title}}</view>
+					<view>{{course.name}}</view>
 					<view>{{date}}</view>
 				</view>
 			</view>
@@ -22,8 +22,8 @@
 				<view class="hflex acenter jbetween" style="width: 100%;">
 					<view class="box_title">答题卡</view>
 					<view class="hflex acenter">
-						<view class="item1"></view>
-						<view class="text">未答</view>
+						<!-- <view class="item1"></view>
+						<view class="text">未答</view> -->
 						<view class="item2"></view>
 						<view class="text">答对</view>
 						<view class="item3"></view>
@@ -31,14 +31,14 @@
 					</view>
 				</view>
 				<view class="hflex acenter fwrap">
-					<block v-for="(item,index) in course.answer" :key="index">
-						<view class="item hflex acenter jcenter" v-if="item.state == 0">
+					<block v-for="(item,index) in course.log_info" :key="index">
+						<!-- <view class="item hflex acenter jcenter" v-if="item.is_right == 0">
 							{{index + 1}}
-						</view>
-						<view class="item hflex acenter jcenter blue" v-if="item.state == 1">
+						</view> -->
+						<view class="item hflex acenter jcenter blue" v-if="item.is_right == 1">
 							{{index + 1}}
 						</view>
-						<view class="item hflex acenter jcenter red" v-if="item.state == 2">
+						<view class="item hflex acenter jcenter red" v-if="item.is_right == 0">
 							{{index + 1}}
 						</view>
 					</block>
@@ -46,78 +46,64 @@
 			</view>
 		</view>
 		<view class="bottom hflex acenter jcenter">
-			<view class="leftBtn" @click="parse">全部解析</view>
-			<view class="rightBtn"  @click="parse">错题解析</view></strong>
+			<view class="leftBtn" @click="parse(1)">全部解析</view>
+			<view class="rightBtn"  @click="parse(2)">错题解析</view></strong>
 		</view>
 	</view>
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				course: {
-					title: '基于能源互联网的新能源',
-					score: '58',
-					img: '/static/images/index/certificate.png',
-					answer:[
-						{
-							state: 1
-						},
-						{
-							state: 2
-						},
-						{
-							state: 0
-						},
-						{
-							state: 1
-						},
-						{
-							state: 2
-						},
-						{
-							state: 0
-						},
-						{
-							state: 1
-						},
-						{
-							state: 2
-						},
-						{
-							state: 0
-						}
-					]
-				},
-				date: ''
+				course: {},
+				date: '',
+				state: {},
+				log_id: 0
 			}
 		},
-		onLoad() {
+		onLoad(option) {
+			this.state = JSON.parse(option.data)
+			this.log_id = option.log_id
+			this.sellQuestionsLog()
 			this.getDate()
 		},
 		methods: {
 			leftClick() {
 				
 			},
+			sellQuestionsLog() {
+				var that = this
+				$api.req({
+					url: '/api/User/sellQuestionsLog',
+					data: {
+						log_id: that.log_id,
+						state: 1
+					}
+				}, function(res) {
+					console.log("试卷成绩",res)
+					if (res.code == 1) {
+						that.course = res.data
+					}
+				})
+			},
 			// 获取当前时间
 			getDate() {
 				const nowDate = new Date();
 				const date = {
 					year: nowDate.getFullYear(),
-					month: nowDate.getMonth() + 1,
+					month: nowDate.getMonth() + 1,	
 					date: nowDate.getDate(),
 				}
-				const newmonth = date.month > 10 ? date.month : '0' + date.month
-				const day = date.date > 10 ? date.date : '0' + date.date
+				const newmonth = date.month >= 10 ? date.month : '0' + date.month
+				const day = date.date >= 10 ? date.date : '0' + date.date
 				this.date = date.year + '-' + newmonth + '-' + day
-				console.log(this.date);
+				console.log("当前时间:",this.date);
 			},
 			// 查看解析
-			parse() {
-				uni.navigateTo({
-					url: '/pages/index/exam/parse'
-				})
+			parse(state) {
+				$api.jump('/pages/index/exam/parse?state=' + state + '&log_id=' + this.log_id)
 			}
 		}
 	}

+ 122 - 83
jxtxkj/pages/index/index.vue

@@ -1,12 +1,12 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" @rightClick="rightClick" :autoBack="true" bgColor="rgba(0,0,0,0)">
+		<u-navbar height="44" @rightClick="rightClick" :fixed="false" :autoBack="true" bgColor="rgba(0,0,0,0)">
 			<view class="u-nav-slot" slot="left">
 				<u--image src="/static/images/index/search.png" width="27px" height="28px" @click="search"></u--image>
 			</view>
 		</u-navbar>
 		<view class="u-demo-block top_swiper">
-			<u-swiper :list="swiperList" previousMargin="30" nextMargin="30" circular :autoplay="true" radius="5" bgColor="rgba(0,0,0,0)"></u-swiper>
+			<u-swiper :list="swiperList" @click="toDetail" previousMargin="30" nextMargin="30" circular :autoplay="true" radius="5" bgColor="rgba(0,0,0,0)"></u-swiper>
 		</view>
 		<view class="banner">
 			<image :src="banner" mode="widthFix" style="width: 100%;border-radius: 12px;" @click="declare"></image>
@@ -14,21 +14,27 @@
 		<view class="tabs hflex acenter jaround">
 			<block v-for="(item,index) in tabs" :key="index">
 				<view class="tabs_item" :class="index == active ? 'active' : ''" @click="changeTabs(index)"> 
-					{{item.text}}
+					{{item.name}}
 				</view>
 			</block>
 		</view>
-		<view class="list hflex acenter fwrap">
+		<view class="list vflex acenter jcenter" v-if="product.length == 0">
+			<image src="/static/images/index/empty-list.png" mode="aspectFill"></image>
+			<view class="no_data">
+				暂无数据
+			</view>
+		</view>
+		<view class="list hflex acenter fwrap" v-else>
 			<block v-for="(item,index) in product" :key="index">
-				<view class="item" @click="detail(index)">
-					<u--image :src="item.src" width="325rpx" height="182rpx" radius="12"></u--image>
-					<view class="title">{{item.title}}</view>
+				<view class="item" @click="detail(item.id)">
+					<u--image :src="item.img" width="325rpx" height="182rpx" radius="12"></u--image>
+					<view class="title u-line-1">{{item.name}}</view>
 					<view class="hflex acenter" style="padding: 5px 0 2px;">
 						<view class="text_style1">
 							讲师:{{item.lecturer}}
 						</view>
 						<view class="text_style1">
-							学时:{{item.hours}}
+							学时:{{item.period}}
 						</view>
 					</view>
 					<view class="price">¥{{item.price}}</view>
@@ -39,86 +45,32 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				swiperList: [
-					'/static/images/index/swiper_item.png',
-					'/static/images/index/swiper_item.png',
-					'/static/images/index/swiper_item.png'
-				],
+				swiperList: [],
+				swiperListId: [],
 				banner: '/static/images/index/banner.png',
-				tabs: [
-					{
-						text: '热门课程'
-					},
-					{
-						text: '经济类'
-					},
-					{
-						text: '化工类'
-					},
-					{
-						text: '交通类'
-					}
-				],
+				tabs: [],
 				active: 0,
-				product: [
-					{
-						index: 0,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-						type: 1
-					},
-					{
-						index: 1,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-						type: 1
-					},
-					{
-						index: 2,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-						type: 1
-					},
-					{
-						index: 3,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-						type: 1
-					},
-					{
-						index: 4,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-						type: 1
-					}
-				]
+				product: [],
+				page: 1,
+				pageSize: 10,
+				total: 0
 			}
 		},
 		onLoad() {
-
+			var that = this
+			that.getBanner()
+			that.coursecate()
+			
 		},
 		methods: {
 			// 切换tabs
 			changeTabs(index) {
 				this.active = index
+				this.getCourseTabsList(this.tabs[index].id)
 			},
 			// 点击搜索
 			search() {
@@ -128,15 +80,98 @@
 			},
 			// 点击进入申报专区
 			declare() {
-				uni.navigateTo({
-					url: '/pages/index/declare/declare'
-				})
+				$api.jump('/pages/index/declare/declare')
 			},
 			// 点击进入课程详情
-			detail(index) {
-				uni.navigateTo({
-					url: '/pages/index/course/detail?index=' + index
+			detail(id) {
+				var login = uni.getStorageSync('token')
+				if (login) {
+					$api.jump('/pages/index/course/detail?id=' + id)
+				}else {
+					$api.info('请先登录')
+				}
+				
+			},
+			// 获取首页banner 
+			getBanner() {
+				var that = this
+				$api.req({
+					url: '/api/Index/banner_list'
+				}, function(res) {
+					if (res.code == 1) {
+						for (var i=0;i<res.data.length;i++){
+							that.swiperList.push(res.data[i].img)
+							that.swiperListId.push(res.data[i].course_id)
+						}
+					}
+				})
+			},
+			// 点击banner跳转
+			toDetail(e) {
+				console.log(e)
+				var id = this.swiperListId[e]
+				this.detail(id)
+			},
+			// 获取课程分类
+			coursecate() {
+				var that = this
+				$api.req({
+					url: '/api/Index/coursecate',
+				}, function(res) {
+					console.log(res);
+					if(res.code == 1) {
+						that.tabs = res.data
+						that.getCourseList()
+					}
+				})
+			},
+			// 获取首页课程列表
+			getCourseList() {
+				var that = this
+				$api.req({
+					url: '/api/Index/courselist',
+					data: {
+						page: that.page,
+						limit: that.pageSize,
+						cate_id: that.tabs[that.active].id
+					}
+				}, function(res) {
+					console.log(res);
+					if(res.code == 1) {
+						that.total = res.data.count
+						that.product = that.product.concat(res.data.list)
+					}
 				})
+			},
+			getCourseTabsList(index) {
+				var that = this
+				that.page = 1
+				$api.req({
+					url: '/api/Index/courselist',
+					data: {
+						page: that.page,
+						limit: that.pageSize,
+						cate_id: index
+					}
+				}, function(res) {
+					console.log(res);
+					if(res.code == 1) {
+						that.total = res.data.count
+						that.product = res.data.list
+					}
+				})
+			},
+			// 触底事件
+			onReachBottom() {
+				console.log("到底了");
+				console.log(typeof(this.page) , Number(this.pageSize));
+				if (Number(this.page) * Number(this.pageSize) >= Number(this.total)) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.getCourseList()
+				}
+				
 			}
 		}
 	}
@@ -146,11 +181,12 @@
 	.web_box::v-deep {
 		background: url('@/static/images/index/bg.png') no-repeat;
 		background-size: 100%;
+		// height: 110vh;
 		
 		.u-navbar {
 			width: 100%;
 			box-sizing: border-box;
-			padding: 36px 16px 0 0;
+			padding: 0 16px 0 0;
 		}
 		.top_swiper {
 			padding-top: 25px;
@@ -187,7 +223,7 @@
 		}
 		.item {
 			width: 337rpx;
-			height: 159px;
+			height: auto;
 			background: #FFFFFF;
 			box-shadow: 0px 2px 6px 0px rgba(213,213,213,0.5);
 			border-radius: 12px;
@@ -217,5 +253,8 @@
 			color: #FA6400;
 			line-height: 22px;
 		}
+		.no_data {
+			
+		}
 	}
 </style>

+ 117 - 94
jxtxkj/pages/index/search/search.vue

@@ -1,15 +1,15 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftText="职称申报" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
+		<!-- <u-navbar height="44" leftText="职称申报" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
 		<view class="search_top hflex acenter">
-			<u--input placeholder="寻找课程" border="none" prefixIcon="search" v-model="value" @change="change"></u--input>
-			<view @click="search">搜索</view>
+			<u--input placeholder="寻找课程" border="none" prefixIcon="search" v-model="value" @change="change" @confirm="search"></u--input>
+			<view @click="cancel">取消</view>
 		</view>
 		<view class="content" v-if="!result">
 			<view class="hflex acenter jbetween">
 				<view class="leftText">搜索记录</view>
-				<view class="hflex acenter">
+				<view class="hflex acenter" @click="detele">
 					<u-icon name="trash" color="#999999" size="19"></u-icon>
 					<view class="rightText">删除记录</view>
 				</view>
@@ -17,134 +17,147 @@
 			<view class="hflex acenter fwrap list">
 				<block v-for="(item,index) in history" :key="index">
 					<view class="item">
-						<u--image :src="item.src" width="322rpx" height="182rpx" radius="8"></u--image>
-						<view class="text_style1">{{item.title}}</view>
+						<u--image :src="item.img" width="322rpx" height="182rpx" radius="8"></u--image>
+						<view class="text_style1">{{item.name}}</view>
 					</view>
 				</block>
 			</view>
 		</view>
-		<view class="content" v-else>
+		<view class="content" v-else-if="product.length>0">
 			<block v-for="(item,index) in product" :key="index">
-				<view class="item2 hflex">
-					<u--image :src="item.src" width="322rpx" height="182rpx" radius="8"></u--image>
+				<view class="item2 hflex" @click="detail(index)">
+					<u--image :src="item.img" width="322rpx" height="182rpx" radius="8"></u--image>
 					<view class="item_right">
 						<view class="title">
-							{{item.title}}
+							{{item.name}}
 						</view>
 						<view class="text_style2">
-							总学时:{{item.hours}}
+							总学时:{{item.period}}
 						</view>
 						<view class="text_style2">
 							讲师:{{item.lecturer}}
 						</view>
 						<view class="hflex acenter jbetween">
 							<view class="price">¥{{item.price}}</view>
-							<u-icon v-if="item.collect" name="star-fill" color="#FA6400" size="28" @click="collect(index)"></u-icon>
-							<u-icon v-else name="star" color="#FA6400" size="28" @click="collect(index)"></u-icon>
+							<!-- <u-icon v-if="item.is_collection" name="star-fill" color="#FA6400" size="28" @click="collect(index)"></u-icon>
+							<u-icon v-else name="star" color="#FA6400" size="28" @click="collect(index)"></u-icon> -->
 						</view>
 					</view>
 				</view>
 			</block>
 		</view>
+		<view class="content vflex acenter jcenter" v-else-if="product.length==0">
+			<image src="../../../static/images/common/search_none.png" class="img_none"></image>
+			<view class="text_none">
+				搜索内容为空
+			</view>
+		</view>
 	</view>
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
 				value: '',
-				history: [
-					{
-						index: 0,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-					},
-					{
-						index: 0,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-					},
-					{
-						index: 0,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-					},
-					{
-						index: 0,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-					},
-					{
-						index: 0,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-					}
-				],
+				history: [],
 				result: false,
-				product: [
-					{
-						index: 0,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-						collect: true
-					},
-					{
-						index: 1,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-						collect: false
-					},
-					{
-						index: 2,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-						collect: false
-					},
-					{
-						index: 3,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-						collect: false
-					},
-					{
-						index: 4,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-						collect: false
-					}
-				]
+				product: [],
+				page: 1,
+				limit: 10,
+				total: 0
 			}
 		},
 		onLoad() {
-	
+			this.getHistory()
 		},
 		methods: {
 			leftClick() {
 			},
 			// 收藏
-			collect(index) {
-				this.product[index].collect = !this.product[index].collect
+			// collect(index) {
+			// 	this.product[index].collect = !this.product[index].collect
+			// },
+			change(e) {
+				console.log(e)
+				this.value = e
 			},
-			// 搜索
+			// 开始搜索
 			search() {
-				this.result = true
-			}
+				var that = this
+				that.result = true
+				$api.req({
+					url: '/api/Index/courselist',
+					data: {
+						page: that.page,
+						limit: that.limit,
+						keywords: that.value
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						that.product = res.data.list
+						that.total = res.data.count
+					}
+				})
+			},
+			// 获得搜索记录
+			getHistory() {
+				var that = this
+				uni.getStorage({
+					key: 'history',
+					success: function(res) {
+						console.log("缓存",res)
+						that.history.push(res.data) 
+						console.log("缓存记录",that.history)
+					}
+				})
+			},
+			// 取消
+			cancel() {
+				this.result = false
+				this.value = ''
+			},
+			// 删除记录
+			detele() {
+				uni.removeStorage({
+					key: 'history',
+					success: function (res) {
+					},
+					
+				});
+				this.history = []
+			},
+			// 点击进入课程详情
+			detail(index) {
+				var that = this
+				$api.jump('/pages/index/course/detail?id=' + that.product[index].id)
+				var data = {
+					id: that.product[index].id,
+					img: that.product[index].img,
+					name: that.product[index].name
+				}
+				uni.setStorage({
+					data: data,
+					key: 'history',
+					success() {
+						that.getHistory()
+					},
+				})
+			},
+			// 触底事件
+			onReachBottom() {
+				console.log("到底了");
+				console.log(this.page );
+				console.log(this.limit);
+				console.log(Number(this.total));
+				if (Number(this.page) * Number(this.limit) >= Number(this.total)) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.change()
+				}
+			},
 		}
 	}
 </script>
@@ -241,5 +254,15 @@
 			color: #FA6400;
 			line-height: 22px;
 		}
+		.text_none {
+			font-size: 32rpx;
+			color: #333333;
+			margin-top: 44rpx;
+		}
+		.img_none {
+			margin-top: 300rpx;
+			width: 560rpx;
+			height: 280rpx;
+		}
 	}
 </style>

+ 281 - 111
jxtxkj/pages/integral/integral.vue

@@ -1,45 +1,38 @@
 <template>
 	<view class="web_box">
-		<u-navbar title="积分商城" height="44" :autoBack="true" bgColor="rgba(0,0,0,0)">
+		<u-navbar title="积分商城" height="44" :fixed="false" :autoBack="true" bgColor="rgba(0,0,0,0)">
 			<view class="u-nav-slot" slot="left">
 			</view>
 		</u-navbar>
 		<view class="top hflex acenter jbetween">
 			<view class="hflex acenter">
-				<u-avatar :src="user.avatar" size="52px"></u-avatar>
+				<u-avatar :src="user.headimg" size="52px"></u-avatar>
 				<view class="vflex" style="padding-left: 12rpx;">
-					<view class="top_name">{{user.name}}</view>
+					<view class="top_name">{{user.user_name}}</view>
 					<view class="hflex acenter" style="padding-top: 8rpx;">
 						<image src="/static/images/integral/integral.png" mode="widthFix" style="width: 44rpx;"></image>
-						<view class="top_integral">积分:{{user.integral}}</view>
+						<view class="top_integral">积分:{{user.integral?user.integral:0}}</view>
 					</view>
 				</view>
 			</view>
-			<view class="rule" @click="showRule = true">积分规则</view>
+			<view class="rule" @click="seeRule">积分规则</view>
 		</view>
 		<view class="tabs">
-			<u-tabs :list="tabs" @click="changeTabs"
-				:activeStyle="{
-					color: '#333333',
-					transform: 'scale(1.15)'
-				}"
-				:inactiveStyle="{
-					color: '#999999',
-					transform: 'scale(1)'
-				}"
-				lineWidth="60"
-				lineColor="linear-gradient(270deg, #2988FE 0%, rgba(41,136,254,0) 100%);"
-			></u-tabs>
 			<view class="hflex acenter" style="margin: 16rpx 0;">
-				<block v-for="(item,index) in tabs2" :key="index">
-					<view class="tabs2" :class="active2 == index ? 'active2' : ''" @click="changeTabs2(index)">{{item.name}}</view>
+				<block v-for="(item,index) in tabs" :key="index">
+					<view class="tabs1" :class="active == index ? 'active' : ''" @click="changeTabs(index)">{{item.title}}</view>
+				</block>
+			</view>
+			<view class="hflex acenter" style="margin: 16rpx 0;">
+				<block v-for="(item,index) in tabs[active].child" :key="index">
+					<view class="tabs2" :class="active2 == index ? 'active2' : ''" @click="changeTabs2(index)">{{item.title}}</view>
 				</block>
 			</view>
 			<view class="tabs3 hflex acenter jbetween">
 				<block v-for="(item,index) in tabs3" :key="index">
-					<view class="tabs3_item" :class="active3 == index ? 'active3' : ''" @click="changeTabs2(index)">{{item.name}}</view>
+					<view class="tabs3_item" :class="active3 == index ? 'active3' : ''" @click="changeTabs3(index)">{{item.name}}</view>
 				</block>
-				<view class="interval hflex acenter jbetween">
+				<view class="interval hflex acenter jbetween" @click="showRange = true">
 					<view>价格区间</view>
 					<u-icon name="arrow-down-fill" color="#666666" size="8"></u-icon>
 				</view>
@@ -48,11 +41,11 @@
 		<view class="list hflex fwrap acenter">
 			<block v-for="(item,index) in goods" :key="index">
 				<view class="list_item" @click="toDetail(index)">
-					<image :src="item.src" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
-					<view class="item_title">{{item.title}}</view>
+					<image :src="item.img" mode="widthFix" style="width: 302rpx;border-radius: 16rpx;"></image>
+					<view class="item_title">{{item.name}}</view>
 					<view class="hflex acenter" style="padding: 10rpx 0 14rpx;">
 						<view class="text_style1">讲师:{{item.lecturer}}</view>
-						<view class="text_style1" style="padding-left: 26rpx;">总学时:{{item.hours}}学时</view>
+						<view class="text_style1" style="padding-left: 26rpx;">总学时:{{item.period}}学时</view>
 					</view>
 					<view class="hflex acenter">
 						<image src="/static/images/integral/integral.png" mode="widthFix" style="width: 44rpx;"></image>
@@ -67,46 +60,45 @@
 				<rich-text :nodes="ruleContent"></rich-text>
 			</view>
 		</u-modal>
+		<!-- 价格区间 -->
+		<u-popup :show="showRange" @close="showRange = false" mode="bottom" :round="12">
+			<view class="popup">
+				<view class="popup_title hflex">
+					<view>价格区间<span style="font-size: 28rpx;">(积分)</span></view>
+				</view>
+				<view class="popup_content">
+					<view class="hflex acenter jaround">
+						<u--input type="number" placeholder="自定最低价" v-model="minPrice" @change="change"></u--input>
+						<view>——</view>
+						<u--input type="number" placeholder="自定最高价" v-model="maxPrice"></u--input>
+					</view>
+					<view class="hflex acenter jaround" style="padding-top: 40rpx;">
+						<block v-for="(item,index) in range" :key="index">
+							<view class="item" :class="active4 == index ? 'active4' : ''" @click="selePrice(index)">{{item.minPrice}}-{{item.maxPrice}}</view>
+						</block>
+					</view>
+				</view>
+				<view class="hflex acenter">
+					<view class="btn1" @click="cancel">取消</view>
+					<view class="btn2" @click="finish">完成</view>
+				</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				user: {
-					avatar: 'http://pic2.sc.chinaz.com/Files/pic/pic9/202002/hpic2119_s.jpg',
-					name: '想喝可乐',
-					integral: 41666
-				},
+				user: {},
 				showRule: false,
 				ruleTitle: '积分规则',
 				ruleContent: '',
-				tabs: [
-					{
-						name: '经济类'
-					},
-					{
-						name: '化工类'
-					},
-					{
-						name: '交通类'
-					}
-				],
-				tabs2: [
-					{
-						name: '能源'
-					},
-					{
-						name: '能源'
-					},
-					{
-						name: '能源'
-					},
-					{
-						name: '能源'
-					}
-				],
+				tabs: [],
+				active: 0,
+				tabs2: [],
 				active2: 0,
 				tabs3: [
 					{
@@ -120,80 +112,173 @@
 					}
 				],
 				active3: 0,
-				goods: [
+				goods: [],
+				showRange: false,
+				minPrice: '',
+				maxPrice: '',
+				range: [
 					{
-						index: 0,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '1998',
-						type: 2
+						minPrice: 0,
+						maxPrice: 1000,
 					},
 					{
-						index: 1,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '1998',
-						type: 2
+						minPrice: 1000,
+						maxPrice: 5000,
 					},
 					{
-						index: 2,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '1998',
-						type: 2
+						minPrice: 5000,
+						maxPrice: 10000,
 					},
-					{
-						index: 3,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '1998',
-						type: 2
-					},
-					{
-						index: 4,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '1998',
-						type: 2
-					},
-					{
-						index: 5,
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '1998',
-						type: 2
-					},
-				]
+				],
+				active4: -1,
+				page: 1,
+				limit: 10,
+				total: 0,
 			}
 		},
 		onLoad() {
-	
+			this.getUser()
+			this.courseIntegralCate()
+			
+		},
+		onShow() {
+			this.getUser()
+			this.courseIntegralCate()
 		},
 		methods: {
+			// 获取用户信息
+			getUser() {
+				var that = this
+				$api.req({
+					url: '/api/User/userinfo'
+				}, function(res) {
+					console.log("个人信息:",res);
+					if (res.code == 1) {
+						that.user = res.data
+					}
+				})
+			},
+			// 获取商城分类
+			courseIntegralCate() {
+				var that = this
+				$api.req({
+					url: '/api/Index/courseIntegralCate'
+				}, function(res) {
+					console.log("商城分类:",res);
+					if (res.code == 1) {
+						that.tabs = res.data
+						that.courseIntegrallist()
+					}else {
+						$api.info(res.msg)
+					}
+				})
+			},
+			// 获取商城列表
+			courseIntegrallist() {
+				var that = this
+				$api.req({
+					url: '/api/Index/courseIntegrallist',
+					data: {
+						page: that.page,
+						limit: that.limit,
+						cate_one_id: that.tabs[that.active].id,
+						cate_two_id: that.tabs[that.active].child[that.active2].id,
+						order: that.active3 + 1,
+						price_min: that.minPrice,
+						price_max: that.maxPrice,
+					}
+				}, function(res) {
+					console.log("商城列表:",res);
+					if (res.code == 1) {
+						if (that.page > 1) {
+							that.goods = that.goods.concat(res.data.list)
+						} else {
+							that.goods = res.data.list
+							that.total = res.data.count
+						}
+						
+						
+					}
+				})
+			},
 			// 切换tabs
-			changeTabs(item) {
-				console.log(item);
+			changeTabs(index) {
+				this.active = index
+				this.page = 1
+				this.courseIntegrallist()
 			},
 			// 切换第2个tabs
 			changeTabs2(index) {
 				this.active2 = index
+				this.page = 1
+				this.courseIntegrallist()
 			},
+			// 切换第三个tabs
+			changeTabs3(index) {
+				this.active3 = index
+				this.page = 1
+				this.courseIntegrallist()
+			},
+			// 选择价格区间 
+			selePrice(index) {
+				this.active4 = index
+			},
+			change() {
+				this.active4 = -1
+			},
+			// 确定区间
+			finish() {
+				var that = this
+				that.showRange = false
+				if (that.active4 !== -1) {
+					that.minPrice = that.range[that.active4].minPrice
+					that.maxPrice = that.range[that.active4].maxPrice
+				}
+				this.page = 1
+				that.courseIntegrallist()
+				that.active4 = -1
+			},
+			// 返回
+			cancel() {
+				that.showRange = false
+				that.active4 = -1
+			},
+			// 具体课程
 			toDetail(index) {
-				uni.navigateTo({
-					url: '/pages/index/course/detail?index=' + index
+				var login = uni.getStorageSync('token') 
+				if (login) {
+					$api.jump('/pages/index/course/detail?id=' + this.goods[index].id)
+				} else {
+					$api.info('请先登录')
+				}
+				
+			},
+			// 触底事件
+			onReachBottom() {
+				console.log("到底了");
+				console.log(this.page );
+				console.log(this.limit);
+				console.log(Number(this.total));
+				if (Number(this.page) * Number(this.limit) >= Number(this.total)) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.courseIntegrallist()
+				}
+			},
+			// 积分规则
+			seeRule() {
+				var that = this
+				$api.req({
+					url: '/api/Publics/config_info'
+				}, function(res) {
+					if (res.code == 1) {
+						that.ruleContent = res.data.integration_rule
+						that.showRule = true
+					}
 				})
+				
+				
 			}
 		}
 	}
@@ -204,11 +289,12 @@
 		background: url('@/static/images/integral/bg.png') no-repeat;
 		background-size: 100%;
 		padding: 0 40rpx;
+		// height: 110vh;
 		
 		.u-navbar {
 			width: 100%;
 			box-sizing: border-box;
-			padding: 36px 16px 0 0;
+			padding: 0 16px 0 0;
 		}
 		.top {
 			margin-top: 44rpx;
@@ -234,8 +320,28 @@
 			color: #333333;
 			line-height: 20px;
 		}
+		.tabs1 {
+			font-weight: 400;
+			color: #999999;
+			font-size: 32rpx;
+		}
+		.active {
+			position: relative;
+			font-size: 40rpx;
+			color: #333333;
+			font-weight: 500;
+		}
+		.active::after {
+			position: absolute;
+			content: "";
+			left: 0;
+			bottom: -5rpx;
+			width: 120rpx;
+			height: 5rpx;
+			background: linear-gradient(270deg, #2988FE 0%, rgba(41,136,254,0) 100%);
+		}
 		.tabs2 {
-			width: 104px;
+			width: 208rpx;
 			height: 42rpx;
 			background: #FFFFFF;
 			border-radius: 4px;
@@ -305,5 +411,69 @@
 			font-weight: 600;
 			color: #F7B500;
 		}
+		.popup {
+			width: 100%;
+			box-sizing: border-box;
+			padding: 26rpx 30rpx;
+			background: #FFFFFF;
+			box-shadow: 0px 2px 6px 0px rgba(213,213,213,0.5);
+		}
+		.popup_title {
+			font-size: 36rpx;
+			font-weight: 500;
+			color: #333333;
+		}
+		.popup_content {
+			width: 100%;
+			padding: 38rpx 0 102rpx;
+		}
+		.u-input {
+			width: 272rpx !important;
+			height: 50rpx;
+			background: #EEEEEE;
+			border-radius: 16rpx !important;
+			
+		}
+		.u-input__content__field-wrapper__field {
+			
+			text-align: center !important;
+		}
+		.item {
+			width: 174rpx;
+			height: 50rpx;
+			background: #EEEEEE;
+			border-radius: 16rpx;
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #333333;
+			text-align: center;
+			line-height: 50rpx;
+		}
+		.active4 {
+			background: #2988FE;
+			color: #FFFFFF;
+		}
+		.btn1 {
+			width: 340rpx;
+			height: 64rpx;
+			background: #A5CDFF;
+			border-radius: 48px 0px 0px 48px;
+			text-align: center;
+			font-size: 36rpx;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 64rpx;
+		}
+		.btn2 {
+			width: 340rpx;
+			height: 64rpx;
+			background: linear-gradient(135deg, #53BDFF 0%, #2988FE 100%);
+			border-radius: 0px 48px 48px 0px;
+			text-align: center;
+			font-size: 36rpx;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 64rpx;
+		}
 	}
 </style>

+ 1 - 1
jxtxkj/pages/login/choose.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="web_box">
 		<view class="logo vflex acenter jcenter">
-			<image src="/static/logo.png" mode="widthFix" style="width: 170rpx;"></image>
+			<image src="/static/images/logo.jpg" style="width: 170rpx;height:170rpx"></image>
 			<view class="name">
 				嘉兴拓新科技服务有限公司
 			</view>

+ 22 - 2
jxtxkj/pages/login/forget.vue

@@ -6,7 +6,7 @@
 		<view class="form">
 			<u--form ref="form1">
 				<u-form-item borderBottom>
-					<u--input border="none" v-model="userInfo.phoneNumber" placeholder="请输入手机号"></u--input>
+					<u--input border="none" v-model="userInfo.name" placeholder="请输入手机号"></u--input>
 				</u-form-item>
 				<u-form-item borderBottom>
 					<u-input border="none" v-model="userInfo.code" placeholder="请输入验证码">
@@ -47,11 +47,13 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
 				userInfo: {
 					name: '',
+					code: '',
 					password: '',
 					password2: ''
 				},
@@ -68,7 +70,7 @@
 		methods: {
 			// 阅读并同意
 			checkboxChange(n) {
-				console.log('change', n);
+				this.agree = !this.agree
 			},
 			// 打开弹出层
 			open(index) {
@@ -109,6 +111,24 @@
 				uni.navigateTo({
 					url: '/pages/login/login'
 				})
+			},
+			// 修改并登录
+			login() {
+				var that = this
+				if ($api.formCheck(that.userInfo.name,"phone") && $api.formCheck(that.userInfo.code,"code6") && $api.formCheck(that.userInfo.password,"pwd") && $api.formCheck(that.userInfo.password2,"pwd")) {
+					if (that.agree) {
+						if (that.userInfo.password === that.userInfo.password2) {
+							uni.setStorageSync("login", true)
+							uni.switchTab({
+								url: '/pages/mine/mine'
+							})
+						} else {
+							$api.info("请输入正确的密码")
+						} 
+					} else {
+						$api.info("请先阅读并同意用户协议和隐私协议")
+					}
+				}
 			}
 		}
 	}

+ 42 - 11
jxtxkj/pages/login/login.vue

@@ -5,10 +5,10 @@
 		</view>
 		<view class="form">
 			<u--form ref="form1">
-				<u-form-item borderBottom>
-					<u--input border="none" v-model="userInfo.phoneNumber" placeholder="请输入手机号"></u--input>
+				<u-form-item borderBottom prop="name">
+					<u--input border="none" v-model="userInfo.name" placeholder="请输入手机号"></u--input>
 				</u-form-item>
-				<u-form-item borderBottom>
+				<u-form-item borderBottom prop="password">
 					<u--input border="none" type="password" v-model="userInfo.password" placeholder="请输入账号密码"></u--input>
 				</u-form-item>
 			</u--form>
@@ -36,6 +36,7 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
@@ -46,7 +47,8 @@
 				agree: false,
 				showProtocol: false,
 				protocolTitle: '',
-				protocolContent: ''
+				protocolContent: '',
+				
 			}
 		},
 		onLoad() {
@@ -55,14 +57,21 @@
 		methods: {
 			// 阅读并同意
 			checkboxChange(n) {
-				console.log('change', n);
+				this.agree = !this.agree
 			},
 			// 打开弹出层
 			open(index) {
 				const that = this
 				if(index == 0) {
-					that.protocolTitle = '用户协议'
-					that.protocolContent = ''
+					$api.req({
+						url: '/api/Publics/config_info'
+					}, function(res) {
+						if (res.code == 1) {
+							that.protocolTitle = '用户协议'
+							that.protocolContent = res.data.xieyi
+						}
+					})
+					
 				} else {
 					that.protocolTitle = '隐私政策'
 					that.protocolContent = ''
@@ -80,11 +89,33 @@
 					url: '/pages/login/forget'
 				})
 			},
+			// 登录
 			login() {
-				uni.setStorageSync("login", true)
-				uni.switchTab({
-					url: '/pages/mine/mine'
-				})
+				var that = this
+				
+				if ($api.formCheck(that.userInfo.name,"phone") && $api.formCheck(that.userInfo.password, "pwd")) {
+					if (!that.agree) {
+						$api.info('请先阅读并同意用户协议和隐私协议')
+					} else {
+						$api.req({
+							url: '/api/Login/login',
+							data: {
+								type: 1,
+								phone: that.userInfo.name,
+								password: that.userInfo.password
+							}
+						}, function(res) {
+							if (res.code == 1) {
+								$api.info(res.msg)
+								uni.setStorageSync("token",res.data)
+								$api.jump("/pages/mine/mine",3)
+							} else if(res.code == 0) {
+								$api.info(res.msg)
+							}
+						})
+						
+					}
+				}
 			}
 		}
 	}

+ 89 - 26
jxtxkj/pages/login/register.vue

@@ -10,13 +10,13 @@
 				</u-form-item>
 				<u-form-item borderBottom>
 					<picker @change="bindSexChange" :value="index" :range="sexList">
-						<u--input border="none" v-model="userInfo.sex" disabled placeholder="请选择性别" suffixIcon="arrow-down"></u--input>
+						<u--input border="none" v-model="sexList[userInfo.sex]" disabled placeholder="请选择性别" suffixIcon="arrow-down"></u--input>
 					</picker>
 				</u-form-item>
 				<u-form-item borderBottom>
-					<pickerAddress @change="changeAddress">
-						<u--input border="none" v-model="userInfo.region" disabled placeholder="请选择地区" suffixIcon="arrow-down"></u--input>
-					</pickerAddress>
+					<picker mode="region" @change="changeAddress" :value="index" :range="address">
+						<u--input border="none" v-model="region" disabled placeholder="请选择地区" suffixIcon="arrow-down"></u--input>
+					</picker>
 				</u-form-item>
 				<u-form-item borderBottom>
 					<u--input border="none" v-model="userInfo.employer" placeholder="请输入工作单位"></u--input>
@@ -62,46 +62,55 @@
 </template>
 
 <script>
-	import pickerAddress from '@/components/wangding-pickerAddress/wangding-pickerAddress.vue'	
+	import $api from '@/static/js/api.js'
+	
 	export default {
-		components:{
-			pickerAddress
-		},
 		data() {
 			return {
 				userInfo: {
 					name: '',
 					sex: '',
-					region: '',
+					province: '',
+					city: '',
+					area: '',
 					employer: '',
 					IDnumber: '',
 					phoneNumber: '',
 					code: '',
 					password: '',
 				},
-				sexList: ['男','女'],
-				txt: '选择地址',
+				region: '',
+				sexList: ['保密','男','女'],
+				address: [],
 				tips: '',
 				agree: false,
 				showProtocol: false,
 				protocolTitle: '',
-				protocolContent: ''
+				protocolContent: '',
+				code: '',
 			}
 		},
-		onLoad() {
-			
+		onLoad(options) {
+			this.code = decodeURIComponent(options.scene)
+			console.log(this.code);
+			if (this.code == "undefined") {
+				this.code = ""
+				console.log(this.code);
+			}
 		},
 		methods: {
 			// 选择性别
 			bindSexChange: function(e) {
 				var index = e.detail.value
-				this.userInfo.sex = this.sexList[index]
+				this.userInfo.sex = index
 			},
 			// 选择城市
-			changeAddress(data){
-				this.txt = data.data.join('')
-				console.log(data.data.join(''))
-				this.userInfo.region = this.txt
+			changeAddress(e){
+				var index = e.detail.value
+				this.userInfo.province = index[0]
+				this.userInfo.city = index[1]
+				this.userInfo.area = index[2]
+				this.region = this.userInfo.province + '-' + this.userInfo.city + '-' + this.userInfo.area
 			},
 			// 验证码文字改变
 			codeChange(text) {
@@ -109,16 +118,26 @@
 			},
 			// 获得验证码
 			getCode() {
+				var that = this
 				if (this.$refs.uCode.canGetCode) {
-				  // 模拟向后端请求验证码
 				  uni.showLoading({
 					title: '正在获取验证码'
 				  })
+				  
 				  setTimeout(() => {
 					uni.hideLoading();
-					// 这里此提示会被this.start()方法中的提示覆盖
 					uni.$u.toast('验证码已发送');
-					// 通知验证码组件内部开始倒计时
+					$api.req({
+						url: '/api/Sms/send',
+						data: {
+							phone: that.userInfo.phoneNumber,
+							event: 'register'
+						}
+					},function(res) {
+						if (res.code == 1) {
+							// $api.info("发送成功")
+						}
+					})
 					this.$refs.uCode.start();
 				  }, 2000);
 				} else {
@@ -127,14 +146,21 @@
 			},
 			// 阅读并同意
 			checkboxChange(n) {
-				console.log('change', n);
+				this.agree = !this.agree
 			},
 			// 打开弹出层
 			open(index) {
-				const that = this
+				var that = this
 				if(index == 0) {
-					that.protocolTitle = '用户协议'
-					that.protocolContent = ''
+					$api.req({
+						url: '/api/Publics/config_info'
+					}, function(res) {
+						if (res.code == 1) {
+							that.protocolTitle = '用户协议'
+							that.protocolContent = res.data.xieyi
+						}
+					})
+					
 				} else {
 					that.protocolTitle = '隐私政策'
 					that.protocolContent = ''
@@ -146,6 +172,43 @@
 				uni.navigateTo({
 					url: '/pages/login/login'
 				})
+			},
+			// 注册并登录
+			submit() {
+				var that = this
+				var userInfo = that.userInfo
+				if ($api.formCheck(userInfo.name,"required") && $api.formCheck(userInfo.sex,"required") && $api.formCheck(userInfo.region,"required") && $api.formCheck(userInfo.employer,"required")
+				 && $api.formCheck(userInfo.IDnumber,"identity") && $api.formCheck(userInfo.phoneNumber,"phone") && $api.formCheck(userInfo.code,"code6") && $api.formCheck(userInfo.password,"pwd")) {
+					if (that.agree) {
+						$api.req({
+							url: '/api/Login/Register',
+							data: {
+								user_name: userInfo.name,
+								phone: userInfo.phoneNumber,
+								sex: userInfo.sex,
+								province: userInfo.province,
+								city: userInfo.city,
+								area: userInfo.area,
+								work_units: userInfo.employer,
+								id_card: userInfo.IDnumber,
+								ver_code: userInfo.code,
+								password: userInfo.password,
+								from: 2,
+								code: that.code
+							}
+						},function(res) {
+							if (res.code == 1) {
+								$api.info(res.msg)
+								uni.setStorageSync("token",res.data)
+								$api.jump("/pages/mine/mine",3)
+							} else if(res.code == 0) {
+								$api.info(res.msg)
+							}
+						})
+					} else {
+						$api.info("请先阅读并同意用户协议和隐私协议")
+					}
+				}
 			}
 		}
 	}

+ 49 - 66
jxtxkj/pages/mine/allCourse.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="全部课程" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
+		<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="全部课程" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
 		<view class="tabs hflex acenter">
 			<u-tabs :list="tabs" :activeStyle="{color: '#2988FE',}" @click="changeTab" :scrollable="false"></u-tabs>
 		</view>
@@ -11,10 +11,10 @@
 					<image :src="item.img" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
 					<view class="img_right vflex">
 						<view class="img_title">
-							{{item.title}}
+							{{item.name}}
 						</view>
-						<view class="vflex aend">
-							<view class="hours">总学时:{{item.learned}}/{{item.hours}}学时</view>
+						<view class="vflex ">
+							<view class="hours">进度:{{item.study_class_count}}/{{item.class_count}}学时</view>
 							<view class="progress">
 								<u-line-progress class="line_progress" :percentage="item.progress" :showText="false" height="8" activeColor="#2988FE"></u-line-progress>
 							</view>
@@ -29,12 +29,12 @@
 					<image :src="item.img" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
 					<view class="img_right vflex">
 						<view class="img_title">
-							{{item.title}}
+							{{item.name}}
 						</view>
-						<view class="vflex aend">
+						<view class="vflex ">
 							<view class="hours">全部完成</view>
 							<view class="progress">
-								<u-line-progress class="line_progress" :percentage="item.progress" :showText="false" height="8" activeColor="#2988FE"></u-line-progress>
+								<u-line-progress class="line_progress" :percentage="100" :showText="false" height="8" activeColor="#2988FE"></u-line-progress>
 							</view>
 						</view>
 					</view>	
@@ -45,6 +45,7 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
@@ -58,84 +59,66 @@
 				],
 				active: 0,
 				course: [],
-				course1: [
-					{
-						img: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						hours: 60,
-						learned: 57,
-						progress: 0,
-					},
-					{
-						img: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						hours: 60,
-						learned: 0,
-						progress: 0,
-					},
-					{
-						img: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						hours: 60,
-						learned: 36,
-						progress: 0,
-					}
-				],
-				course2: [
-					{
-						img: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						hours: 60,
-						learned: 60,
-						progress: 0,
-					},
-					{
-						img: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						hours: 60,
-						learned: 60,
-						progress: 0,
-					},
-					{
-						img: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						hours: 60,
-						learned: 60,
-						progress: 0,
-					}
-				]
+				page: 1,
+				limit: 10,
+				total: 0,
+				type: 1
 			}
 		},
 		onLoad() {
-			
-			this.getData()
+			var type = this.type
+			this.getCourse(type)
 		},
 		methods: {
 			leftClick() {
 			},
+			// 获取课程信息
+			getCourse(type) {
+				var that = this
+				$api.req({
+					url: '/api/User/myCourseList',
+					data: {
+						page: that.page,
+						limit: that.limit,
+						type: type
+					}
+				}, function(res) {
+					console.log("我的课程",res);
+					if (res.code == 1) {
+						that.course = res.data.list
+						that.total = rea.data.count
+						that.totalProgress()
+					}
+				})
+			},
 			// 切换tabs
 			changeTab(e) {
 				this.active = e.index
-				this.getData()
+				this.course = []
+				this.page = 0
+				this.getCourse(this.active + 1)
 			},
 			// 计算进度条
 			totalProgress() {
 				var course = this.course
 				for(var i = 0; i<course.length;i++) {
-					course[i].progress = course[i].learned / course[i].hours * 100
+					course[i].progress = course[i].study_class_count / course[i].class_count * 100
 				}
 				this.course = course
 			},
-			// 获取数据
-			getData() {
-				const that = this
-				if(that.active == 1) {
-					that.course = that.course2
+			// 触底事件
+			onReachBottom() {
+				console.log("到底了");
+				console.log(this.page );
+				console.log(this.limit);
+				console.log(Number(this.total));
+				if (Number(this.page) * Number(this.limit) >= Number(this.total)) {
+					$api.info("没有更多了")
 				} else {
-					that.course = that.course1
+					this.page++
+					this.getCourse(this.type)
 				}
-				this.totalProgress()
-			}
+			},
 		}
 	}
 </script>

+ 37 - 6
jxtxkj/pages/mine/certificate.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="我的证书" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
+		<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="我的证书" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
 		<view class="list">
 			<block v-for="(item,index) in certificateList" :key="index">
 				<view class="list_item hflex acenter">
@@ -20,11 +20,12 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
 				certificateList: [
-					{
+					/* {
 						img: '/static/images/mine/certificate.jpg',
 						name: '城市桥梁工程',
 						number: '4524165434424415',
@@ -47,16 +48,46 @@
 						name: '城市桥梁工程',
 						number: '4524165434424415',
 						date: '2022-07-05'
-					}
-				]
+					} */
+				],
+				page: 1,
+				limit: 10,
+				total: 0
 			}
 		},
 		onLoad() {
-			
+			this.getCertificateList()
 		},
 		methods: {
 			leftClick() {
 				
+			},
+			// 获取证书列表
+			getCertificateList() {
+				var that = this
+				$api.req({
+					url: '/api/User/myCertificate',
+					data: {
+						page: that.page,
+						limit: that.limit
+					}
+				}, function(res) {
+					if (res.code == 1) {
+						that.certificateList = res.data.list
+						that.total = res.data.count
+					}
+				})
+			},
+			// 触底事件
+			onReachBottom() {
+				console.log("到底了");
+				console.log(Number(this.page) , Number(this.limit));
+				if (Number(this.page) * Number(this.limit) >= Number(this.total)) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.getCertificateList()
+				}
 			}
 		}
 	}

+ 28 - 12
jxtxkj/pages/mine/change.vue

@@ -1,14 +1,19 @@
 <template>
 	<view class="web_box vflex acenter jbetween">
 		<view class="" style="width: 100%;">
-			<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="个人资料" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-			</u-navbar>
-			<view class="cell hflex acenter jbetween">
-				<view class="hflex acenter" @click="changeName">
+			<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="个人资料" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+			</u-navbar> -->
+			<view class="cell hflex acenter jbetween" v-if="active == 0">
+				<view class="hflex acenter">
 					<view class="label">昵称</view>
-					<input type="text" v-model="name">
+					<input type="text" v-model="user_name">
+				</view>
+			</view>
+			<view class="cell hflex acenter jbetween" v-else>
+				<view class="hflex acenter">
+					<view class="label">工作单位</view>
+					<input type="text" v-model="work_units">
 				</view>
-				<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
 			</view>
 		</view>
 		<view class="bottom">
@@ -18,23 +23,34 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				name: ''
+				user_name: '',
+				work_units: '',
+				active: 0
 			}
 		},
-		onLoad() {
-			
+		onLoad(options) {
+			var index = options.index
+			console.log(index);
+			this.active = index
 		},
 		methods: {
 			leftClick() {
 			},
 			// 保存
 			save() {
-				uni.navigateBack({
-					delta: 1
-				})
+				var that = this
+				var data = {}
+				if(that.active == 0) {
+					data.user_name = that.user_name
+				} else {
+					data.work_units = that.work_units
+				}
+				data = encodeURIComponent(JSON.stringify(data))
+				$api.jump('/pages/mine/personal?data=' + data,1)
 			}
 		}
 	}

+ 69 - 43
jxtxkj/pages/mine/collect.vue

@@ -1,18 +1,19 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="我的收藏" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
+		<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="我的收藏" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
 		<view class="list">
 			<block v-for="(item,index) in collectList" :key="index">
-				<view class="list_item hflex acenter">
-					<image :src="item.src" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
+				<view class="list_item hflex acenter" @click="toDetail(index)">
+					<image :src="item.img" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
 					<view class="img_right">
-						<view class="title">{{item.title}}</view>
-						<view class="text_style1">总学时:{{item.hours}}学时</view>
+						<view class="title">{{item.name}}</view>
+						<view class="text_style1">总学时:{{item.period}}学时</view>
 						<view class="text_style1">讲师:{{item.lecturer}}</view>
 						<view class="hflex acenter jbetween">
 							<view class="order_price">¥{{item.price}}</view>
-							<u-icon name="star-fill" color="#fa6400" size="22"></u-icon>
+							<u-icon v-if="show" name="star-fill" color="#fa6400" size="22" @tap.stop="collect(index)"></u-icon>
+							<u-icon v-else name="star" color="#fa6400" size="22" ></u-icon>
 						</view>
 					</view>
 				</view>
@@ -22,52 +23,77 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				collectList:[
-					{
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: 60,
-						price: 369,
-						collect: true,
-					},
-					{
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: 60,
-						price: 369,
-						collect: false,
-					},
-					{
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: 60,
-						price: 369,
-						collect: false,
-					},
-					{
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: 60,
-						price: 369,
-						collect: false,
-					},
-				]
+				collectList:[],
+				page: 1,
+				limit: 10,
+				total: 0,
+				show: true
 			}
 		},
 		onLoad() {
-			
+			this.getList()
 		},
 		methods: {
 			leftClick() {
 				
-			}
+			},
+			// 获取我的收藏
+			getList() {
+				var that = this
+				$api.req({
+					url: '/api/User/myCourseList',
+					data: {
+						page: that.page,
+						limit: that.limit,
+						type: 3
+					}
+				}, function(res) {
+					console.log("我的课程",res);
+					if (res.code == 1) {
+						that.collectList = res.data.list
+						that.total = res.data.count
+					}
+				})
+			},
+			// 点击前往详情页
+			toDetail(index) {
+				let id = this.collectList[index].id
+				$api.jump('/pages/index/course/detail?id=' + id)
+			},
+			// 取消收藏
+			collect(index) {
+				var that = this
+				let id = that.collectList[index].id
+				$api.req({
+					url: '/api/Index/collectionCancelCourse',
+					data: {
+						id: id,
+						type: 0
+					}
+				}, function(res) {
+					if (res.code == 1) {
+						$api.info(res.msg)
+						that.show = false
+					}
+				})
+			},
+			// 触底事件
+			onReachBottom() {
+				console.log("到底了");
+				console.log(this.page );
+				console.log(this.limit);
+				console.log(Number(this.total));
+				if (Number(this.page) * Number(this.limit) >= Number(this.total)) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.getList()
+				}
+			},
 		}
 	}
 </script>

+ 68 - 33
jxtxkj/pages/mine/comment.vue

@@ -1,62 +1,86 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="我的评论" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
-		<view class="list">
+		<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="我的评论" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
+		<view class="list" v-if="commentList.length > 0">
 			<block v-for="(item,index) in commentList" :key="index">
 				<view class="list_item">
 					<view class="hflex acenter jbetween">
-						<view class="title">{{item.title}}</view>
-						<view class="date">{{item.date}}</view>
+						<view class="title">{{item.name}}</view>
+						<view class="date">{{item.create_at}}</view>
 					</view>
 					<view class="box">
-						<span>{{item.name}}:</span>
+						<span>{{user_name}}:</span>
 						<span style="padding-left: 15rpx;">{{item.content}}</span>
 					</view>
 				</view>
 			</block>
 		</view> 
+		<view class="list vflex acenter jcenter" v-else>
+			<image src="../../static/images/common/comment_none.png" class="img_none"></image>
+			<view class="text_none">暂无评论</view>
+		</view>
 	</view>
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				commentList:[
-					{
-						title: '起重机械作业人员安全培训',
-						date: '200-07-18',
-						content: '了组无己置县些她正根器级装可教对展作二包被县日经文合没正但铁治意万标土个第命数活而几角斗第的车引当光。',
-						name: '小某'
-					},
-					{
-						title: '起重机械作业人员安全培训',
-						date: '200-07-18',
-						content: '了组无己置县些她正根器级装可教对展作二包被县日经文合没正但铁治意万标土个第命数活而几角斗第的车引当光。',
-						name: '小某'
-					},
-					{
-						title: '起重机械作业人员安全培训',
-						date: '200-07-18',
-						content: '了组无己置县些她正根器级装可教对展作二包被县日经文合没正但铁治意万标土个第命数活而几角斗第的车引当光。',
-						name: '小某'
-					},
-					{
-						title: '起重机械作业人员安全培训',
-						date: '200-07-18',
-						content: '了组无己置县些她正根器级装可教对展作二包被县日经文合没正但铁治意万标土个第命数活而几角斗第的车引当光。',
-						name: '小某'
-					}
-				]
+				user_name: '',
+				commentList:[],
+				page: 1,
+				limit: 10,
+				total: 0
 			}
 		},
 		onLoad() {
-			
+			this.getUserName()
+			this.getCommentList()
 		},
 		methods: {
 			leftClick() {
 				
+			},
+			getUserName() {
+				var that = this
+				$api.req({
+					url: '/api/User/userinfo',
+				}, function(res) {
+					console.log(res)
+					if (res.code == 1) {
+						that.user_name = res.data.user_name
+					}
+				})
+			},
+			// 获取评论列表
+			getCommentList() {
+				var that = this
+				$api.req({
+					url: '/api/User/myComments',
+					data: {
+						page: that.page,
+						limit: that.limit
+					}
+				}, function(res) {
+					console.log(res)
+					if (res.code == 1) {
+						that.total = res.data.count
+						that.commentList = that.commentList.concat(res.data.list)
+						console.log(that.commentList);
+					}
+				})
+			},
+			// 触底事件
+			onReachBottom() {
+				console.log("到底了");
+				if (Number(this.page) * Number(this.limit) >= Number(this.total)) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.getCommentList()
+				}
 			}
 		}
 	}
@@ -65,6 +89,7 @@
 <style scoped lang="scss">
 	.web_box::v-deep {
 		padding: 0 30rpx;
+		height: 2000rpx;
 		
 		.u-navbar {
 			width: 100%;
@@ -104,5 +129,15 @@
 			color: #333333;
 			line-height: 50rpx;
 		}
+		.text_none {
+			font-size: 32rpx;
+			color: #333333;
+			margin-top: 44rpx;
+		}
+		.img_none {
+			margin-top: 300rpx;
+			width: 530rpx;
+			height: 404rpx;
+		}
 	}
 </style>

+ 74 - 87
jxtxkj/pages/mine/exam/exam.vue

@@ -1,46 +1,61 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="我的考试" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
+		<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="我的考试" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
 		<view class="tabs hflex acenter">
 			<u-tabs :list="tabs" :activeStyle="{color: '#2988FE',}" @click="changeTab" :scrollable="false"></u-tabs>
 		</view>
-		<view class="list" v-if="active == 0">
+		<view class="list" v-if="active == 0&&record.length>0">
 			<block v-for="(item,index) in record" :key="index">
-				<view class="list_item">
+				<view class="list_item" @click="toDetail(index)">
 					<view class="title">
-						{{item.title}}
+						{{item.name}}
 					</view>
 					<view class="date">
-						{{item.date}}
+						{{item.start_at}}
 					</view>
 					<view class="bottom hflex acenter jbetween">
 						<view class="hflex acenter">
-							<span class="text_style1">{{item.fraction}}</span>/{{item.totalScore}}分
+							<span class="text_style1">{{item.score}}</span>/{{item.all_score}}分
 						</view>
 						<view class="hflex acenter">
-							<span class="text_style1">{{item.totalTopic}}</span>/{{item.topic}}题
+							<span class="text_style1">{{item.correct_count}}</span>/{{item.all_count}}题
 						</view>
-						<view class="state" :class="item.state == '未通过' ? 'yellow' : ''">{{item.state}}</view>
+						<view class="state yellow" v-if="item.is_pass == 0">未通过</view>
+						<view class="state" v-else>通过</view>
 					</view>
 				</view>
 			</block>
 		</view>
-		<view class="list" v-if="active == 1">
+		<view class="list vflex acenter jcenter" v-if="active == 0&&record.length==0">
+			<image src="../../../static/images/common/exam_none.png" class="img_none"></image>
+			<view class="text_none">
+				暂无考试记录
+			</view>
+		</view>
+		<view class="list" v-if="active == 1&&collect.length> 0">
 			<block v-for="(item,index) in collect" :key="index">
-				<view class="list_item hflex acenter jbetween" @click="wrong(index)">
-					<view class="left">{{item.title}}</view>
+				<view class="list_item hflex acenter jbetween" @click="wrong(item.id)">
+					<view class="left">{{item.name}}</view>
 					<view class="hflex acenter">
-						<view class="right">{{item.totalTopic}}道</view>
+						<view class="right">{{item.collection_count}}道</view>
 						<u-icon name="arrow-right" color="#333333" size="12"></u-icon>
 					</view>
 				</view>
 			</block>
 		</view>
+		<view class="list vflex acenter jcenter" v-if="active == 1&&collect.length==0">
+			<image src="../../../static/images/common/exam_none.png" class="img_none"></image>
+			<view class="text_none">
+				暂无收藏题目
+			</view>
+		</view>
 	</view>
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
+	
 	export default {
 		data() {
 			return {
@@ -53,90 +68,52 @@
 					}
 				],
 				active: 0,
-				record: [
-					{
-						title: '基于能源互联网的新能源(60分以上合格)',
-						date: '2022-07-22 22:49',
-						fraction: 50,
-						totalScore: 100,
-						totalTopic: 25,
-						topic: 10,
-						state: '未通过'
-					},
-					{
-						title: '基于能源互联网的新能源(60分以上合格)',
-						date: '2022-07-22 22:49',
-						fraction: 88,
-						totalScore: 100,
-						totalTopic: 25,
-						topic: 22,
-						state: '通过'
-					},
-					{
-						title: '基于能源互联网的新能源(60分以上合格)',
-						date: '2022-07-22 22:49',
-						fraction: 96,
-						totalScore: 100,
-						totalTopic: 25,
-						topic: 24,
-						state: '通过'
-					},
-					{
-						title: '基于能源互联网的新能源(60分以上合格)',
-						date: '2022-07-22 22:49',
-						fraction: 60,
-						totalScore: 100,
-						totalTopic: 25,
-						topic: 16,
-						state: '通过'
-					},
-				],
-				collect: [
-					{
-						title: '基于能源互联网的新能源',
-						totalTopic: 25,
-					},
-					{
-						title: '基于能源互联网的新能源',
-						totalTopic: 3,
-					},
-					{
-						title: '基于能源互联网的新能源',
-						totalTopic: 4,
-					},
-					{
-						title: '基于能源互联网的新能源',
-						totalTopic: 9,
-					},
-					{
-						title: '基于能源互联网的新能源',
-						totalTopic: 10,
-					},
-					{
-						title: '基于能源互联网的新能源',
-						totalTopic: 11,
-					},
-					{
-						title: '基于能源互联网的新能源',
-						totalTopic: 18,
-					},
-				]
+				record: [],
+				collect: [],
+				page: 1,
+				limit: 10,
+				type: 1
 			}
 		},
 		onLoad() {
-			
+			this.getExam(this.type)
 		},
 		methods: {
-			leftClick() {
+			// leftClick() {
+			// },
+			// 获取考试数据
+			getExam(type) {
+				var that = this
+				$api.req({
+					url: '/api/User/myExaminationApplet',
+					data: {
+						page: that.page,
+						limit: that.limit,
+						type: type
+					}
+				}, function(res) {
+					console.log("我的考试:",res);
+					if (res.code == 1) {
+						if (that.type == 1) {
+							that.record = res.data.list
+						} else {
+							that.collect = res.data.list
+						}
+					}
+				})
 			},
 			// 切换tabs
 			changeTab(e) {
 				this.active = e.index
+				this.type = this.active + 1
+				this.getExam(this.type)
 			},
-			wrong(index) {
-				uni.navigateTo({
-					url: '/pages/mine/exam/wrong'
-				})
+			// 考试详情
+			toDetail(index) {
+				
+			},
+			wrong(id) {
+				$api.jump('/pages/mine/exam/wrong?id=' + id)
 			}
 		}
 	}
@@ -217,5 +194,15 @@
 			color: #333333;
 			padding-right: 6rpx;
 		}
+		.text_none {
+			font-size: 32rpx;
+			color: #333333;
+			margin-top: 44rpx;
+		}
+		.img_none {
+			margin-top: 300rpx;
+			width: 490rpx;
+			height: 404rpx;
+		}
 	}
 </style>

+ 97 - 129
jxtxkj/pages/mine/exam/wrong.vue

@@ -1,172 +1,140 @@
 <template>
 	<view class="web_box vflex active jbetween">
 		<view class="">
-			<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="收藏题目" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-			</u-navbar>
-			<view class="box">
-				<view class="hflex acenter jbetween">
-					<view class="hflex acenter">
-						<view class="name">{{examPaper.name}}</view>
-					</view>
-					<view class="hflex acenter">
-						<view class="answer">
-							<view class="text_style1"><span style="font-size: 40rpx;">{{index}}</span>/{{examPaper.exam.length}}</view>
+			<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="收藏题目" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+			</u-navbar> -->
+			<view>
+				<view class="box">
+					<view class="hflex acenter jbetween">
+						<view class="hflex acenter">
+							<view class="name">{{examPaper[index].name}}</view>
+						</view>
+						<view class="hflex acenter">
+							<view class="answer">
+								<view class="text_style1"><span style="font-size: 40rpx;">{{index + 1}}</span>/{{examPaper.length}}</view>
+							</view>
+							<u-icon v-if="examPaper[index].is_collection == 1" name="star-fill" color="#FA6400" size="22" @click="collect(0)"></u-icon>
+							<u-icon v-else name="star" color="#333333" size="22" @click="collect(1)"></u-icon>
 						</view>
-						<u-icon v-if="examPaper.exam[index - 1].collect" name="star-fill" color="#FA6400" size="22" @click="collect"></u-icon>
-						<u-icon v-else name="star" color="#333333" size="22" @click="collect"></u-icon>
 					</view>
 				</view>
-			</view>
-			<view class="box">
-				<view class="type">{{examPaper.exam[index - 1].type}}</view>
-				<view class="content">
-					<u-parse :content="examPaper.exam[index - 1].topic"></u-parse>
-				</view>
-				<view class="">
-					<view class="hflex acenter cell" @click="select('A')">
-						<view class="options" :class="examPaper.exam[index - 1].value.includes('A') ? 'active' : ''">A</view>
-						<view class="options_value">{{examPaper.exam[index - 1].options[0].name}}</view>
-					</view>
-					<view class="hflex acenter cell" @click="select('B')">
-						<view class="options" :class="examPaper.exam[index - 1].value.includes('B') ? 'active' : ''">B</view>
-						<view class="options_value">{{examPaper.exam[index - 1].options[1].name}}</view>
-					</view>
-					<view class="hflex acenter cell" @click="select('C')">
-						<view class="options" :class="examPaper.exam[index - 1].value.includes('C') ? 'active' : ''">C</view>
-						<view class="options_value">{{examPaper.exam[index - 1].options[2].name}}</view>
+				<view class="box">
+					<view class="type">{{examPaper[index].type_name}}</view>
+					<view class="content">
+						<u-parse :content="examPaper[index].title"></u-parse>
 					</view>
-					<view class="hflex acenter cell" @click="select('D')">
-						<view class="options" :class="examPaper.exam[index - 1].value.includes('D') ? 'active' : ''">D</view>
-						<view class="options_value">{{examPaper.exam[index - 1].options[3].name}}</view>
+					<view class="">
+						<block v-for="(item2,inx2) in examPaper[index].items" :key="inx">
+							<view class="hflex acenter cell" @click="select(inx2)">
+								<view class="options" :class="choice.indexOf(item2.ladder_title) !== -1 ? 'active' : ''">{{item2.ladder_title}}</view>
+								<view class="options_value">{{item2.ladder_num}}</view>
+							</view>
+						</block>
 					</view>
 				</view>
 			</view>
-			<view class="box" v-if="examPaper.exam[index - 1].state">
+			<view class="box" v-if="examPaper[index].state">
 				<view class="answer_bg hflex acenter jbetween">
-					<view class="text_style2">正确答案:{{examPaper.exam[index - 1].answer}}</view>
-					<view class="text_style2">你的答案:{{examPaper.exam[index - 1].value}}</view>
+					<view class="text_style2">正确答案:{{examPaper[index].success_answer}}</view>
+					<view class="text_style2">你的答案:{{values.answer}}</view>
 				</view>
 			</view>
 		</view>
 		<view class="bottom hflex acenter jcenter">
-			<view v-if="index === examPaper.exam.length" class="btn1" @click="result">返回</view>
+			<view v-if="index + 1 == examPaper.length" class="btn1" @click="result">返回</view>
 			<view v-else class="btn1" @click="nextExam">下一题</view>
 		</view>
 	</view>
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				examPaper: {
-					name: '基于能源互联网的新能源',
-					time: 90,
-					exam: [
-						{
-							id: 1,
-							type: '单选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: [],
-							answer: ['B']
-						},
-						{
-							id: 1,
-							type: '多选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: [],
-							answer: ['A','B','C','D']
-						},
-						{
-							id: 1,
-							type: '单选题',
-							topic: '西别联做约今情器日《金往需例少员传应边海般运容》意构,声今情器日速国最手决查更布。',
-							options: [
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-								{
-									name: '①②③④⑤'
-								},
-							],
-							collect: false,
-							state: false,
-							value: [],
-							answer: ['B']
-						},
-					],
-					
-				},
-				index: 1,
-				values: []
+				examPaper: [],
+				index: 0,
+				values: [],
+				course_id: 0,
+				choice: '',
 			}
 		},
-		onLoad() {
-			
+		onLoad(options) {
+			this.course_id = options.id
+			this.getCollectList()
 		},
 		methods: {
 			leftClick() {
 				
 			},
-			// 收藏题目
-			collect() {
-				this.examPaper.exam[this.index - 1].collect = !this.examPaper.exam[this.index - 1].collect
+			// 获取收藏详情
+			getCollectList() {
+				var that = this
+				$api.req({
+					url: '/api/User/collectionQuestionsDetailList',
+					data: {
+						course_id: that.course_id
+					}
+				}, function(res) {
+					console.log(res)
+					if(res.code == 1) {
+						that.examPaper = res.data
+					}
+				})
+			},
+			/// 收藏题目
+			collect(type) {
+				var that = this
+				var questions_id = that.examPaper[that.index].questions_id
+				var info_id = that.examPaper[that.index].info_id
+				$api.req({
+					url: '/api/User/collectionQuestions',
+					data: {
+						id: that.examPaper.course_id,
+						questions_id: questions_id,
+						info_id: info_id,
+						type: type
+					}
+				}, function(res) {
+					console.log(res);
+					$api.info(res.msg)
+					that.getCollectList()
+				})
+				// this.examPaper.exam[this.index].collect = !this.examPaper.exam[this.index].collect
 			},
 			
 			// 选择答案
 			select(val) {
 				var that = this
-				var index = that.index - 1
-				that.values.push(val)
-				var length = that.values.length - 1
-				if (that.examPaper.exam[index].type == '单选题') {
-					that.examPaper.exam[index].value = that.values[length]
-					that.examPaper.exam[index].state = true
+				var index = that.index
+				if (that.examPaper[index].type !== 2) {
+					that.choice = that.examPaper[index].items[val].ladder_title
+					that.values = {
+						id: that.index,
+						answer: that.choice
+					}
+					that.examPaper[index].state = true
 				} else {
-					let values = that.values.join(',')
-					that.examPaper.exam[index].value = values
+					that.choice = that.choice + that.examPaper[index].items[val].ladder_title + '、'
+					that.values = {
+						id: that.index,
+						answer: that.choice
+					}
 					setTimeout(function() {
-						that.examPaper.exam[index].state = true
+						that.examPaper[index].state = true
 					},1000) 
+					// that.examPaper[index].state = true
 				}
+				// if (that.examPaper[index].type !== 2) {
+				// 	that.examPaper[index].value = that.values[length]
+				// 	that.examPaper[index].state = true
+				// } else {
+				// 	let values = that.values.join(',')
+				// 	that.examPaper[index].value = values
+				// 	setTimeout(function() {
+				// 		that.examPaper[index].state = true
+				// 	},1000) 
+				// }
 				
 			},
 			// 下一题

+ 97 - 74
jxtxkj/pages/mine/mine.vue

@@ -15,16 +15,16 @@
 			</view>
 			<view class="hflex acenter jbetween" v-else>
 				<view class="hflex acenter" @click="personalInfo">
-					<u-avatar :src="user.avatar" size="128rpx"></u-avatar>
-					<view class="text_style1" style="padding-left: 20rpx;">{{user.name}}</view>
+					<u-avatar :src="user.headimg?user.headimg:avatar" size="128rpx"></u-avatar>
+					<view class="text_style1" style="padding-left: 20rpx;">{{user.user_name}}</view>
 				</view>
-				<view @click="showInvite = true">
+				<view @click="toInvite">
 					<image src="/static/images/mine/invite.png" mode="widthFix" style="width: 180rpx;"></image>
 				</view>
 			</view>
 			<view class="hflex acenter jaround" style="margin: 40rpx 0 54rpx;">
 				<view class="vflex acenter jcenter">
-					<view class="collect_num" v-if="login">{{user.collectNum}}</view>
+					<view class="collect_num" v-if="login">{{user.collection_count}}</view>
 					<view class="collect_num" v-else>0</view>
 					<view class="text_style1">我的收藏</view>
 				</view>
@@ -43,17 +43,17 @@
 					<u-icon name="arrow-right" color="#666666" size="10"></u-icon>
 				</view>
 			</view>
-			<view class="box_content hflex acenter jcenter" v-if="login">
-				<view class="hflex acenter" v-if="!(Object.keys(newCourse).length == 1)">
-					<image :src="newCourse.img" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
+			<view class="box_content hflex acenter jcenter" v-if="login" >
+				<view class="hflex acenter" v-if="Object.keys(myCourse).length !== 0">
+					<image :src="myCourse.img" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
 					<view class="img_right vflex">
 						<view class="img_title">
-							{{newCourse.title}}
+							{{myCourse.name}}
 						</view>
 						<view class="vflex aend">
-							<view class="hours">总学时:{{newCourse.learned}}/{{newCourse.hours}}学时</view>
+							<view class="hours">总学时:{{myCourse.study_class_count}}/{{myCourse.class_count}}学时</view>
 							<view class="progress">
-								<u-line-progress class="line_progress" :percentage="newCourse.progress" :showText="false" height="8" activeColor="#2988FE"></u-line-progress>
+								<u-line-progress class="line_progress" :percentage="myCourse.progress" :showText="false" height="8" activeColor="#2988FE"></u-line-progress>
 							</view>
 						</view>
 					</view>	
@@ -79,30 +79,19 @@
 			<u-button v-if="login" @click="quit">退出登录</u-button>
 		</view>
 		<!-- 邀请码 -->
-		<u-popup :show="showInvite" @close="showInvite = false" :round="10" mode="center">
+		<u-popup :show="showInvite" @close="closeInvite" :round="10" mode="center">
 			<view class="popup">
 				<view class="popup_top hflex acenter">
-					<u-avatar :src="user.avatar" size="104rpx"></u-avatar>
+					<u-avatar :src="user.headimg" size="104rpx"></u-avatar>
 					<view class="" style="padding-left: 18rpx;">
-						<view class="text_style2" style="font-size: 32rpx;">{{user.name}}</view>
-						<view class="text_style2" style="font-size: 24rpx;">邀请ID{{user.inviteID}}</view>
+						<view class="text_style2" style="font-size: 32rpx;">{{user.user_name}}</view>
+						<view class="text_style2" style="font-size: 24rpx;">邀请ID:{{user.invite_code}}</view>
 					</view>
 				</view>
-				<view class="qrimg hflex acenter jcenter" style="width: 100%;height: 350rpx;" @longpress="_saveCode">
-				    <!-- <tki-qrcode
-						ref="qrcode"
-						:val="val"
-						background="#000"
-						foreground="#fff"
-						icon="/static/logo.png"
-						iconSize="42"
-						size="300"
-						:onval="true"
-						:loadMake="true"
-						:showLoading="false"
-						/> -->
+				<view class="qrimg hflex acenter jcenter" style="width: 100%;height: 400rpx;">
+					<image :src="user.invite_img" show-menu-by-longpress='1' @longpress="_saveCode"></image>
 				</view>
-				<view class="vflex acenter jcenter">
+				<view class="vflex acenter jcenter" style="margin-top:50rpx">
 					<view class="text_style3">扫一扫 加入拓新</view>
 					<view class="text_style3">高效学习 首选拓新</view>
 				</view>
@@ -113,28 +102,14 @@
 </template>
 
 <script>
-	import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue"
+	import $api from '@/static/js/api.js';
 	export default {
-		components: {
-			tkiQrcode
-		},
 		data() {
 			return {
 				login: false,
-				user: {
-					avatar: 'https://cdn.uviewui.com/uview/album/1.jpg',
-					name: '半岛笔记',
-					collectNum: 4,
-					integral: 41688,
-					inviteID: '3GS4679SGER'
-				},
-				newCourse: {
-					img: '/static/images/index/product.jpg',
-					title: '基于能源互联网的新能源',
-					hours: 60,
-					learned: 30,
-					progress: 0,
-				},
+				user: {},
+				avatar: '/static/images/logo.jpg',
+				myCourse: {},
 				list: [
 					{
 						src: '/static/images/mine/icon1.png',
@@ -162,50 +137,97 @@
 					}
 				],
 				showInvite: false,
-				val: {
-					avatar: 'https://cdn.uviewui.com/uview/album/1.jpg',
-					name: '半岛笔记',
-					inviteID: '3GS4679SGER'
-				},
+				page: 1,
+				limit: 1
 			}
 		},
 		onLoad() {
-			this.totalProgress()
+			this.getCourse()
+			// this.totalProgress()
 		},
 		onShow() {
+			this.getUser()
 			// 判断是否登录
 			this.isLogin()
 		},
 		methods: {
+			// 获取个人信息
+			getUser() {
+				var that = this
+				$api.req({
+					url: '/api/User/userinfo'
+				}, function(res) {
+					console.log("个人信息:",res);
+					if (res.code == 1) {
+						that.user = res.data
+						let base64 = res.data.invite_img
+						let times = new Date().getTime()
+						that.user.invite_img = wx.env.USER_DATA_PATH + '/' +times + '.png'
+						let imageData = base64.replace(/^data:image\/\w+;base64,/, "");
+						let fs = wx.getFileSystemManager();
+						fs.writeFileSync(that.user.invite_img, imageData, "base64");
+					}
+				})
+			},
+			// 获取课程信息
+			getCourse() {
+				var that = this
+				$api.req({
+					url: '/api/User/myCourseList',
+					data: {
+						page: that.page,
+						limit: that.limit,
+						type: 1
+					}
+				}, function(res) {
+					console.log("我的课程",res);
+					if (res.code == 1) {
+						that.myCourse = res.data.list[0]
+						if(res.data.count !== 0) {
+							that.totalProgress()
+						}
+					}
+				})
+			},
 			// 去登录
 			toLogin() {
-				uni.navigateTo({
-					url: '/pages/login/choose'
-				})
+				$api.jump('/pages/login/choose')
 			},
 			isLogin() {
-				this.login = uni.getStorageSync("login")
+				var that = this
+				var token = uni.getStorageSync("token")
+				console.log(token);
+				if(token.token) {
+					that.login = true
+				} else {
+					$api.info('请先登录')
+				}
 			},
 			// 计算进度条
 			totalProgress() {
-				var newCourse = this.newCourse
-				newCourse.progress = newCourse.learned / newCourse.hours * 100
-				this.newCourse = newCourse
+				var myCourse = this.myCourse
+				myCourse.progress = myCourse.study_class_count / myCourse.class_count * 100
+				this.myCourse = myCourse
 			},
 			// 长按保存图片
 			_saveCode() {
+				console.log("长按保存图片到相册")
 			},
 			// 去个人资料
 			personalInfo() {
-				uni.navigateTo({
-					url: '/pages/mine/personal'
-				})
+				$api.jump('/pages/mine/personal')
+			},
+			// 去邀请
+			toInvite() {
+				this.showInvite = true
+			},
+			// 关闭邀请
+			closeInvite() {
+				this.showInvite = false
 			},
 			// 全部课程
 			allCourse() {
-				uni.navigateTo({
-					url: '/pages/mine/allCourse'
-				})
+				$api.jump('/pages/mine/allCourse')
 			},
 			// 打开详情页
 			toDeail(index) {
@@ -230,16 +252,17 @@
 						url = '/pages/mine/certificate';
 						break;
 				}
-				uni.navigateTo({
-					url: url
-				})
+				if(!this.login) {
+					$api.info('请先登录')
+				} else {
+					$api.jump(url)
+				}
+				
 			},
 			// 退出登录
 			quit() {
-				uni.setStorageSync("login",false)
-				uni.navigateTo({
-					url: '/pages/login/choose'
-				})
+				uni.removeStorageSync("token")
+				$api.jump('/pages/login/choose',1)
 			}
 		}
 	}
@@ -333,10 +356,10 @@
 			border-bottom: none;
 		}
 		.popup {
-			width: 508rpx;
+			width: 550rpx;
 			background: #FFFFFF;
 			box-sizing: border-box;
-			padding: 48rpx 58rpx;
+			padding: 48rpx 18rpx;
 			position: relative;
 			
 		}

+ 76 - 34
jxtxkj/pages/mine/order/apply.vue

@@ -1,15 +1,15 @@
 <template>
 	<view class="web_box vflex acenter jbetween">
 		<view>
-			<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="申请发票" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-			</u-navbar>
+			<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="申请发票" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+			</u-navbar> -->
 			<view class="box hflex acenter">
-				<image :src="order.src" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
+				<image :src="course.img" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
 				<view class="img_right">
-					<view class="title">{{order.title}}</view>
-					<view class="text_style1">总学时:{{order.hours}}学时</view>
-					<view class="text_style1">讲师:{{order.lecturer}}</view>
-					<view class="order_price">¥{{order.price}}</view>
+					<view class="title">{{course.name}}</view>
+					<view class="text_style1">总学时:{{course.period}}学时</view>
+					<view class="text_style1">讲师:{{course.lecturer}}</view>
+					<view class="order_price">¥{{course.price}}</view>
 				</view>
 			</view>
 			<view class="box">
@@ -29,28 +29,28 @@
 				</view>
 				<view class="hflex acenter jbetween cell">
 					<view class="left">发票抬头</view>
-					<u--input placeholder="填写需要开具发票的姓名" border="none" v-model="topUp"></u--input>
+					<u--input placeholder="填写需要开具发票的姓名" border="none" v-model="bill.invoice_title"></u--input>
 				</view>
-				<view v-if="state == 1">
+				<view v-if="state == 2">
 					<view class="hflex acenter jbetween cell">
 						<view class="left">税号</view>
-						<u--input placeholder="纳税人识别号" border="none" v-model="taxID"></u--input>
+						<u--input placeholder="纳税人识别号" border="none" v-model="bill.taxID"></u--input>
 					</view>
 					<view class="hflex acenter jbetween cell">
 						<view class="left">开户银行</view>
-						<u--input placeholder="选填" border="none" v-model="bank"></u--input>
+						<u--input placeholder="选填" border="none" v-model="bill.bank"></u--input>
 					</view>
 					<view class="hflex acenter jbetween cell">
 						<view class="left">银行账号</view>
-						<u--input placeholder="选填" border="none" v-model="bankAccount"></u--input>
+						<u--input placeholder="选填" border="none" v-model="bill.bankAccount"></u--input>
 					</view>
 					<view class="hflex acenter jbetween cell">
 						<view class="left">企业地址</view>
-						<u--input placeholder="选填" border="none" v-model="address"></u--input>
+						<u--input placeholder="选填" border="none" v-model="bill.address"></u--input>
 					</view>
 					<view class="hflex acenter jbetween cell">
 						<view class="left">企业电话</view>
-						<u--input placeholder="选填" border="none" v-model="phone"></u--input>
+						<u--input placeholder="选填" border="none" v-model="bill.phone"></u--input>
 					</view>
 				</view>
 			</view>
@@ -59,28 +59,19 @@
 			</view>
 		</view>
 		<view class="bottom">
-			<view class="btn1">提交申请</view>
-			<view class="btn2">不开发票</view>
+			<view class="btn1" @click="invoice">提交申请</view>
+			<view class="btn2" @click="invoice_no">不开发票</view>
 		</view>
 	</view>
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				state: 0,
-				order: {
-					orderID: '156149987979879',
-					state: '已付款',
-					src: '/static/images/index/product.jpg',
-					title: '基于能源互联网的新能源',
-					lecturer: '吴迪',
-					hours: '60',
-					price: '369',
-					date: '2022-07-16  17:23:45',
-					account: 'jx-265156-11'
-				},
+				state: 1,
+				course: {},
 				index: 0,
 				bill: {
 					type: ['增值税电子普通发票'],
@@ -92,22 +83,41 @@
 							name: '企业'
 						}
 					],
-					topUp: '',
+					invoice_title: '',
 					taxID: '',
 					bank: '',
 					bankAccount: '',
 					address: '',
 					phone: ''
-				}
+				},
+				course_id: '',
+				order_no: '',
 			}
 		},
-		onLoad() {
-			
+		onLoad(options) {
+			this.course_id = options.course_id
+			this.order_no = options.order_no
+			this.getCourseData(this.course_id)
 		},
 		methods: {
 			leftClick() {
 				
 			},
+			// 根据ID获取课程信息
+			getCourseData(id) {
+				var that = this
+				$api.req({
+					url: '/api/Index/courseDetail',
+					data: {
+						id: id
+					}
+				}, function(res) {
+					console.log("课程信息=",res);
+					if (res.code === 1) {
+						that.course = res.data
+					}
+				})
+			},
 			// 选择发票类型
 			bindPickerChange(e) {
 				this.index = e.detail.value
@@ -115,11 +125,43 @@
 			// 选择发票抬头类型
 			groupChange(n) {
 				if(n == "企业") {
+					this.state = 2
+				} else {
 					this.state = 1
+				}
+			},
+			// 申请发票
+			invoice() {
+				var that = this
+				if (that.state == 1) {
+					var data = {
+						order_id: that.order_no,
+						look_up_type: that.state,
+						invoice_title: that.bill.invoice_title,
+					}
 				} else {
-					this.state = 0
+					var data = {
+						order_id: that.order_no,
+						look_up_type: that.state,
+						invoice_title: that.bill.invoice_title,
+						identify_number: that.bill.taxID,
+						bank: that.bill.bank,
+						bank_number: that.bill.bankAccount,
+						address: that.bill.address,
+						phone: that.bill.phone,
+					}
 				}
-			}
+				$api.req({
+					url: '/api/User/submitInvoice',
+					data: data
+				}, function(res) {
+					console.log(res);
+				})
+			},
+			// 不开发票
+			invoice_no() {
+				$api.jump(-1)
+			},
 		}
 	}
 </script>

+ 30 - 43
jxtxkj/pages/mine/order/detail.vue

@@ -1,48 +1,36 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" :leftText="leftText" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
+		<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" :leftText="leftText" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
 		<view class="box hflex acenter">
-			<image :src="order.src" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
+			<image :src="order.course_info.img" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
 			<view class="img_right">
-				<view class="title">{{order.title}}</view>
-				<view class="text_style1">总学时:{{order.hours}}学时</view>
-				<view class="text_style1">讲师:{{order.lecturer}}</view>
-				<view class="order_price">¥{{order.price}}</view>
+				<view class="title">{{order.course_info.name}}</view>
+				<view class="text_style1">总学时:{{order.period}}学时</view>
+				<view class="text_style1">讲师:{{order.course_info.lecturer}}</view>
+				<view class="order_price">¥{{order.course_info.price}}</view>
 			</view>
 		</view>
 		<view class="box">
 			<view class="title">订单信息</view>
 			<view class="hflex acenter jbetween cell">
 				<view class="left">商品总价</view>
-				<view class="order_price">¥{{order.price}}</view>
+				<view class="order_price">¥{{order.course_info.price}}</view>
 			</view>
 			<view class="hflex acenter jbetween cell">
 				<view class="left">订单编号</view>
-				<view class="right">{{order.orderID}}</view>
+				<view class="right">{{order.order_no}}</view>
 			</view>
 			<view class="hflex acenter jbetween cell">
 				<view class="left">创建时间</view>
-				<view class="right">{{order.date}}</view>
-			</view>
-			<view class="hflex acenter jbetween cell">
-				<view class="left">订单账号</view>
-				<view class="right">{{order.account}}</view>
-			</view>
-		</view>
-		<!-- <view class="box hflex acenter jbetween">
-			<view class="hflex acenter">
-				<u-icon name="weixin-circle-fill" color="#00e06e" size="24"></u-icon>
-				<view class="left" style="padding-left: 24rpx;">微信支付</view>
+				<view class="right">{{order.create_at}}</view>
 			</view>
 		</view>
-		<view class="hflex jend" style="width: 100%;">
-			<u-button @click="pay">立即支付</u-button>
-		</view> -->
 	</view>
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
@@ -50,33 +38,32 @@
 				order: {
 					
 				},
-				order1: {
-					orderID: '156149987979879',
-					state: '已付款',
-					src: '/static/images/index/product.jpg',
-					title: '基于能源互联网的新能源',
-					lecturer: '吴迪',
-					hours: '60',
-					price: '369',
-					date: '2022-07-16  17:23:45',
-					account: 'jx-265156-11'
-				}
+				order_no: ''
 			}
 		},
 		onLoad(e) {
-			var index = e.index
-			this.getData(index)
+			this.order_no = e.order_no
+			this.getData()
 		},
 		methods: {
 			leftClick() {},
-			getData(index) {
+			getData() {
 				var that = this
-				that.order = that.order1
-				if (that.order.state == '未付款') {
-					that.leftText="等待买家付款"
-				} else {
-					that.leftText="买家已付款"
-				}
+				$api.req({
+					url: '/api/User/OrderDetail',
+					data: {
+						order_no: that.order_no
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						that.order = res.data
+						if(res.data.status == 1) {
+							that.leftText="买家已付款"
+						} else {
+							that.leftText="等待买家付款"
+						}
+					}
+				})
 			}
 		}
 	}

+ 71 - 43
jxtxkj/pages/mine/order/order.vue

@@ -1,67 +1,76 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="我的订单" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
-		<view class="list">
+		<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="我的订单" @leftClick="leftClick" bgColor="#fff">
+		</u-navbar> -->
+		<view class="list" v-if="orderList.length > 0">
 			<block v-for="(item,index) in orderList" :key="index">
 				<view class="list_item" @click="toDetail(index)">
 					<view class="hflex acenter jbetween">
-						<view class="order_id">订单编号:{{item.orderID}}</view>
-						<view class="order_state" v-if="item.state == '未付款'">等待买家付款</view>
+						<view class="order_id">订单编号:{{item.order_no}}</view>
+						<view class="order_state" v-if="item.statie == 0">等待买家付款</view>
 					</view>
 					<view class="hflex acenter" style="padding-top: 10rpx;">
-						<image :src="item.src" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
+						<image :src="item.course_info.img" mode="widthFix" style="width: 322rpx;border-radius: 16rpx;"></image>
 						<view class="img_right">
-							<view class="title">{{item.title}}</view>
-							<view class="text_style1">总学时:{{item.hours}}学时</view>
-							<view class="text_style1">讲师:{{item.lecturer}}</view>
-							<view class="hflex acenter jbetween" v-if="item.state == '未付款'">
-								<view class="order_price">¥{{item.price}}</view>
+							<view class="title">{{item.course_info.name}}</view>
+							<view class="text_style1">总学时:{{item.period}}学时</view>
+							<view class="text_style1">讲师:{{item.course_info.lecturer}}</view>
+							<view class="hflex acenter jbetween" v-if="item.state == 0">
+								<view class="order_price">¥{{item.course_info.price}}</view>
 								<u-button @tap="toPay(index)">继续付款</u-button>
 							</view>
 							<view class="hflex acenter jbetween" v-else>
 								<view class="order_apply" @tap="toApply(index)">申请发票</view>
-								<u-button @tap="toStudy(index)">前往学习</u-button>
+								<u-button @tap="toStudy(item.course_id)">前往学习</u-button>
 							</view>
 						</view>
 					</view>
 				</view>
 			</block>
 		</view>
+		<view class="list vflex acenter jcenter">
+			<image src="../../../static/images/common/order_none.png" class="img_none"></image>
+			<view class="text_none">
+				暂无订单
+			</view>
+		</view>
 	</view>
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				orderList: [
-					{
-						orderID: '156149987979879',
-						state: '未付款',
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-					},
-					{
-						orderID: '156149987979879',
-						state: '已付款',
-						src: '/static/images/index/product.jpg',
-						title: '基于能源互联网的新能源',
-						lecturer: '吴迪',
-						hours: '60',
-						price: '369',
-					}
-				]
+				orderList: [],
+				page: 1,
+				limit: 10,
+				total: 0
 			}
 		},
 		onLoad() {
-			
+			this.getOrderList()
 		},
 		methods: {
 			leftClick() {
+				$api.jump('/pages/mine/mine',3)
+			},
+			// 获取订单列表
+			getOrderList() {
+				var that = this
+				$api.req({
+					url: '/api/User/myOrder',
+					data: {
+						page: that.page,
+						limit: that.limit
+					}
+				}, function(res) {
+					console.log(res);
+					if (res.code == 1) {
+						that.orderList = res.data.list
+						that.total = res.data.count
+					}
+				})
 			},
 			// 继续付款
 			toPay(index) {
@@ -70,29 +79,38 @@
 				})
 			},
 			// 继续学习
-			toStudy(index) {
-				uni.navigateTo({
-					url: '/pages/index/course/detail?index = ' + index
-				})
+			toStudy(id) {
+				$api.jump('/pages/index/course/detail?id= ' + id)
 			},
 			// 申请发票
 			toApply(index) {
-				uni.navigateTo({
-					url: '/pages/mine/order/apply?index = ' + index
-				})
+				$api.jump('/pages/mine/order/apply?order_no= ' + this.orderList[index].order_no + '&course_id=' + this.orderList[index].course_id)
 			},
 			// 查看详情
 			toDetail(index) {
 				if(this.orderList[index].state == '未付款') {
 					uni.navigateTo({
-						url: '/pages/index/course/buy?index = ' + index
+						url: '/pages/index/course/buy?order_no = ' + this.orderList[index].order_no
 					})
 				} else {
 					uni.navigateTo({
-						url: '/pages/mine/order/detail?index = ' + index
+						url: '/pages/mine/order/detail?order_no = ' + this.orderList[index].order_no
 					})
 				}
-			}
+			},
+			// 触底事件
+			onReachBottom() {
+				console.log("到底了");
+				console.log(this.page );
+				console.log(this.limit);
+				console.log(Number(this.total));
+				if (Number(this.page) * Number(this.limit) >= Number(this.total)) {
+					$api.info("没有更多了")
+				} else {
+					this.page++
+					this.getOrderList()
+				}
+			},
 		}
 	}
 </script>
@@ -164,5 +182,15 @@
 			color: #FA6400;
 			margin: 0;
 		}
+		.text_none {
+			font-size: 32rpx;
+			color: #333333;
+			margin-top: 44rpx;
+		}
+		.img_none {
+			margin-top: 300rpx;
+			width: 570rpx;
+			height: 328rpx;
+		}
 	}
 </style>

+ 48 - 16
jxtxkj/pages/mine/password/editPassword.vue

@@ -1,8 +1,8 @@
 <template>
 	<view class="web_box vflex acenter jbetween">
 		<view style="width: 100%;">
-			<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="修改密码" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-			</u-navbar>
+			<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="修改密码" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+			</u-navbar> -->
 			<view class="form">
 				<u--form labelPosition="left" ref="form1" labelWidth="100">
 					<u-form-item label="手机号">
@@ -32,6 +32,7 @@
 </template>
 
 <script>
+	import $api from '@/static/js/api.js';
 	export default {
 		data() {
 			return {
@@ -44,6 +45,11 @@
 		},
 		onLoad() {
 			this.getTele()
+			var login = uni.getStorageSync('token')
+			if (!login) {
+				$api.info("请先登录")
+				$api.jump(-1)
+			}
 		},
 		methods: {
 			leftClick() {
@@ -51,30 +57,56 @@
 			},
 			// 确定修改
 			edit() {
-				uni.navigateTo({
-					url: '/pages/mine/password/success'
-				})
+				var that = this
+				$api.req({
+					url: '/api/User/updatePass',
+					data: {
+						ver_code: that.code,
+						password: that.password,
+						confirmpassword: that.password2
+					}
+				}, function(res) {
+					if(res.code == 1) {
+						$api.jump('/pages/mine/password/success')
+					}
+				}) 
 			},
 			// 获取手机号
 			getTele() {
-				this.tele = '15833249966'
+				var that = this
+				$api.req({
+					url: '/api/User/userinfo'
+				}, function(res) {
+					if(res.code ==1) {
+						that.tele = res.data.phone
+					}
+				})
 			},
 			codeChange(text) {
 				this.tips = text;
 			},
 			getCode() {
+				var that = this
 				if (this.$refs.uCode.canGetCode) {
-					// 模拟向后端请求验证码
-					uni.showLoading({
-						title: '正在获取验证码'
+				  uni.showLoading({
+					title: '正在获取验证码'
+				  })
+				  
+				  setTimeout(() => {
+					uni.hideLoading();
+					uni.$u.toast('验证码已发送');
+					$api.req({
+						url: '/api/Sms/send',
+						data: {
+							phone: that.tele,
+						}
+					},function(res) {
+						if (res.code == 1) {
+							// $api.info("发送成功")
+						}
 					})
-					setTimeout(() => {
-						uni.hideLoading();
-						// 这里此提示会被this.start()方法中的提示覆盖
-						uni.$u.toast('验证码已发送');
-						// 通知验证码组件内部开始倒计时
-						this.$refs.uCode.start();
-					}, 2000);
+					this.$refs.uCode.start();
+				  }, 2000);
 				} else {
 					uni.$u.toast('倒计时结束后再发送');
 				}

+ 2 - 2
jxtxkj/pages/mine/password/success.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="web_box">
-		<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="修改密码" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
+		<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="修改密码" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
+		</u-navbar> -->
 		<view class="success vflex acenter jcenter">
 			<image src="/static/images/mine/success.png" mode="widthFix" style="width: 144rpx;"></image>
 			<view class="text">修改成功</view>

+ 206 - 62
jxtxkj/pages/mine/personal.vue

@@ -1,87 +1,181 @@
 <template>
-	<view class="web_box">
-		<u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" leftText="个人资料" @leftClick="leftClick" :autoBack="true" bgColor="#fff">
-		</u-navbar>
-		<view class="cell hflex acenter jbetween">
-			<view class="hflex acenter">
-				<view class="label">
-					<u-avatar :src="user.avatar" size="104rpx"></u-avatar>
+	<view class="web_box vflex jbetween">
+		<!-- <u-navbar height="44" leftIcon="arrow-left" leftIconColor="#000" @leftClick="leftClick" leftText="个人资料" bgColor="#fff">
+		</u-navbar> -->
+		<view style="width: 100%;box-sizing: border-box;padding: 0 30rpx;">
+			<view class="cell hflex acenter jbetween" @click="choose">
+				<view class="hflex acenter">
+					<view class="label">
+						<u-avatar :src="user.headimg" size="104rpx"></u-avatar>
+					</view>
+					<view class="title">替换头像</view>
 				</view>
-				<view class="title">替换头像</view>
+				<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
 			</view>
-			<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
-		</view>
-		<view class="cell hflex acenter jbetween">
-			<view class="hflex acenter" @click="changeName">
-				<view class="label">昵称</view>
-				<view class="title">{{user.name}}</view>
-			</view>
-			<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
-		</view>
-		<view class="cell hflex acenter jbetween">
-			<view class="hflex acenter">
-				<view class="label">性别</view>
-				<view class="title">{{user.sex}}</view>
+			<view class="cell hflex acenter jbetween">
+				<view class="hflex acenter" @click="change(0)">
+					<view class="label">昵称</view>
+					<view class="title">{{user.user_name}}</view>
+				</view>
+				<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
 			</view>
-			<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
-		</view>
-		<view class="cell hflex acenter jbetween">
-			<view class="hflex acenter">
-				<view class="label">地址</view>
-				<view class="title">{{user.address}}</view>
+			<picker @change="bindSexChange" :value="index" :range="sexList">
+				<view class="cell hflex acenter jbetween">
+					<view class="hflex acenter">
+						<view class="label">性别</view>
+						<view class="title">{{sexList[user.sex]}}</view>
+					</view>
+					<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
+				</view>
+			</picker>
+			<picker mode="region" @change="changeAddress" :value="index" :range="address">
+				<view class="cell hflex acenter jbetween">
+					<view class="hflex acenter">
+						<view class="label">地址</view>
+						<view class="title">{{user.province+user.city+user.area}}</view>
+					</view>
+					<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
+				</view>
+			</picker>
+			<view class="cell hflex acenter jbetween">
+				<view class="hflex acenter" @click="change(1)">
+					<view class="label">工作单位</view>
+					<view class="title">{{user.work_units}}</view>
+				</view>
+				<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
 			</view>
-			<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
-		</view>
-		<view class="cell hflex acenter jbetween">
-			<view class="hflex acenter">
-				<view class="label">工作单位</view>
-				<view class="title">{{user.employer}}</view>
+			<view class="cell hflex acenter jbetween">
+				<view class="hflex acenter">
+					<view class="label">身份证号</view>
+					<view class="title">{{user.id_card}}</view>
+				</view>
+				<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
 			</view>
-			<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
-		</view>
-		<view class="cell hflex acenter jbetween">
-			<view class="hflex acenter">
-				<view class="label">身份证号</view>
-				<view class="title">{{user.IDnumber}}</view>
+			<view class="cell hflex acenter jbetween">
+				<view class="hflex acenter">
+					<view class="label">手机号</view>
+					<view class="title">{{user.phone}}</view>
+				</view>
+				<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
 			</view>
-			<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
+			
 		</view>
-		<view class="cell hflex acenter jbetween">
-			<view class="hflex acenter">
-				<view class="label">手机号</view>
-				<view class="title">{{user.phoneNumber}}</view>
-			</view>
-			<u-icon name="arrow-right" color="#000000" size="14"></u-icon>
+		<view class="bottom hflex acenter jcenter">
+			<u-button @click="save">确定修改</u-button>
 		</view>
 	</view>
 </template>
 
 <script>
+	import $api from '@/static/js/api.js'
 	export default {
 		data() {
 			return {
-				user: {
-					avatar: 'https://cdn.uviewui.com/uview/album/1.jpg',
-					name: '半岛笔记',
-					sex: "男",
-					address: '山东省临沂市罗庄区',
-					employer: '嘉兴拓新科技服务有限公司',
-					IDnumber: '371351123412345995',
-					phoneNumber: '15812349966'
-				}
+				user: {},
+				sexList: ['保密','男','女'],
+				address: [],
+				// revise: false,
+				// show: false
 			}
 		},
-		onLoad() {
-			
+		onLoad(options) {
+			var that = this
+			this.getUser()
+			if(options.data) {
+				var data = JSON.parse(decodeURIComponent(options.data))
+				setTimeout(() =>{
+					if (data.user_name) {
+						that.user.user_name = data.user_name
+						// that.revise = true
+					} else {
+						that.user.work_units = data.work_units
+						// that.revise = true
+					}
+				},500)
+			}
 		},
 		methods: {
-			leftClick() {
+			// 获取个人信息 
+			getUser() {
+				var that = this
+				$api.req({
+					url: '/api/User/userinfo'
+				}, function(res) {
+					console.log("个人信息=",res);
+					if (res.code == 1) {
+						that.user = res.data
+					}
+				})
 			},
+			// 替换头像
+			choose() {
+				var that = this
+				uni.chooseImage({
+					count: 6, //默认9
+					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+					sourceType: ['album'], //从相册选择
+					success: function (res) {
+						// console.log(JSON.stringify(res.tempFilePaths));
+						const tempFilePaths = res.tempFilePaths
+						uni.uploadFile({
+							url: 'http://jxtx.zhousi.hdlkeji.com/api/Publics/uploadLocality',
+							filePath: tempFilePaths[0],
+							name: 'file',
+							formData: {
+								'user': 'test'
+							},
+							success: (res) => {
+								const data = JSON.parse(res.data)
+								if (data.code == 1) {
+									that.user.headimg = data.data.url
+								}
+							}
+						});
+					}
+				});
+				// that.revise = true
+			},
+			
 			// 改变昵称
-			changeName() {
-				uni.navigateTo({
-					url: '/pages/mine/change'
+			change(index) {
+				$api.jump('/pages/mine/change?index=' + index)
+			},
+			// 选择性别
+			bindSexChange: function(e) {
+				var index = e.detail.value
+				this.user.sex = index
+				// this.revise = true
+			},
+			// 选择城市
+			changeAddress(e){
+				var index = e.detail.value
+				this.user.province = index[0]
+				this.user.city = index[1]
+				this.user.area = index[2]
+				// this.revise = true
+			},
+			save() {
+				var that = this
+				var user = that.user
+				$api.req({
+					url: '/api/User/edit_user_info',
+					data:{
+						headimg: user.headimg,
+						user_name: user.user_name,
+						sex: user.sex,
+						province: user.province,
+						city: user.city,
+						area: user.area,
+						work_units: user.work_units
+					}
+				}, function(res) {
+					console.log("保存成功=",res);
 				})
+				this.close()
+			},
+			close() {
+				// this.show = false
+				$api.jump('/pages/mine/mine', 3)
 			}
 		}
 	}
@@ -89,7 +183,7 @@
 
 <style lang="scss" scoped>
 	.web_box::v-deep {
-		padding: 0 30rpx;
+		
 		
 		.u-navbar {
 			width: 100%;
@@ -115,5 +209,55 @@
 			font-size: 28rpx;
 			color: #333333;
 		}
+		.popup {
+			width: 100%;
+			box-sizing: border-box;
+			padding: 26rpx 30rpx;
+			background: #FFFFFF;
+			box-shadow: 0px 2px 6px 0px rgba(213,213,213,0.5);
+		}
+		.popup_title {
+			font-size: 36rpx;
+			font-weight: 500;
+			color: #333333;
+		}
+		.leftBtn {
+			width: 256rpx;
+			height: 80rpx;
+			background: rgba(41,136,254,0.2);
+			border-radius: 20px 0 0 20px;
+			font-size: 36rpx;
+			font-weight: 500;
+			color: #2988FE;
+			text-align: center;
+			line-height: 80rpx;
+		}
+		.rightBtn {
+			width: 256rpx;
+			height: 80rpx;
+			background: linear-gradient(135deg, #53BDFF 0%, #2988FE 100%);
+			border-radius: 0px 20px 20px 0px;
+			font-size: 36rpx;
+			font-weight: 500;
+			color: #FFFFFF;
+			text-align: center;
+			line-height: 80rpx;
+		}
+		.bottom {
+			width: 100%;
+			box-sizing: border-box;
+			padding: 20rpx 86rpx;
+			background: #FFFFFF;
+		}
+		.u-button {
+			width: 578rpx;
+			margin: 0;
+			height: 80rpx;
+			background: linear-gradient(135deg, #53BDFF 0%, #2988FE 100%);
+			border-radius: 40rpx;
+			font-size: 36rpx;
+			font-weight: 500;
+			color: #FFFFFF;
+		}
 	}
 </style>

TEMPAT SAMPAH
jxtxkj/static/images/common/collect_none.png


TEMPAT SAMPAH
jxtxkj/static/images/common/comment_none.png


TEMPAT SAMPAH
jxtxkj/static/images/common/exam_none.png


TEMPAT SAMPAH
jxtxkj/static/images/common/order_none.png


TEMPAT SAMPAH
jxtxkj/static/images/common/search_none.png


TEMPAT SAMPAH
jxtxkj/static/images/common/see_none.png


TEMPAT SAMPAH
jxtxkj/static/images/index/certificate.png


TEMPAT SAMPAH
jxtxkj/static/images/index/empty-list.png


TEMPAT SAMPAH
jxtxkj/static/images/index/product.jpg


TEMPAT SAMPAH
jxtxkj/static/images/index/swiper_item.png


TEMPAT SAMPAH
jxtxkj/static/images/logo.jpg


TEMPAT SAMPAH
jxtxkj/static/images/mine/certificate.jpg


+ 1991 - 0
jxtxkj/static/js/api.js

@@ -0,0 +1,1991 @@
+// 加密 sha1 md5
+var encrypt = require('./encrypt.js');
+// 缓存
+var cache = require('./cache.js');
+// 数学精确计算
+var math = require('./math.js');
+// 腾讯位置服务
+var qqMap = require("./qqmap-wx-jssdk");
+// 二维码
+var qrCode = require("./weapp.qrcode.min");
+
+module.exports = {
+
+	/**
+	 * 小程序基本配置
+	 */
+	config: {
+		name: '嘉兴拓新',
+		debug: false, //开发模式true,生产环境改为false;
+		version: 'xcx',
+		baseUrl: 'https://jxtx.zhousi.hdlkeji.com',
+		qqMap: false,
+		loading: false
+	},
+
+	/**
+	 * sha1加密
+	 * @param str
+	 * @param raw 加密方式 1str_sha1 0hex_sha1
+	 */
+	sha1: function(str, raw) {
+		return encrypt.sha1(str, raw);
+	},
+
+	/**
+	 * md5加密
+	 * @param str
+	 */
+	md5: function(str) {
+		return encrypt.md5(str);
+	},
+
+	/**
+	 * 缓存
+	 */
+	cache: cache,
+
+	/**
+	 * 数字精确计算
+	 */
+	math: math,
+
+	/**
+	 * 腾讯地图
+	 */
+	qqMap: qqMap,
+
+	/**
+	 * 消息提示
+	 * @param title
+	 * @param icon:success,error,loading,none 
+	 * @param success
+	 * @param time
+	 * @param mask
+	 */
+	info: function(title, icon, success, time, mask) {
+		if (typeof icon == 'function') {
+			success = icon;
+			icon = "none";
+		}
+		title = title == undefined ? "系统繁忙" : title;
+		icon = icon == undefined ? "none" : icon;
+		time = time == undefined ? 800 : time;
+		mask = mask == undefined ? true : mask;
+		uni.showToast({
+			title: title,
+			icon: icon,
+			mask: mask,
+			duration: time,
+			success: setTimeout(function() {
+				success && success()
+			}, time)
+		});
+	},
+
+	/**
+	 * 确认提示框
+	 * @param {Object} content
+	 * @param {Object} success
+	 * @param {Object} cancel
+	 * @param {Object} confirmText
+	 * @param {Object} cancelText
+	 */
+	modal: function(content, success, cancel, confirmText, cancelText) {
+		let opt = {};
+		opt.title = this.config.name;
+		opt.content = content;
+		// 默认不显示取消
+		opt.showCancel = false;
+		if (typeof cancel == 'function' || (typeof cancel == 'boolean' && cancel)) {
+			opt.showCancel = true;
+		} else if (typeof cancel == 'string') {
+			cancelText = confirmText;
+			confirmText = cancel;
+		}
+		if (!this.isEmpty(confirmText)) {
+			opt.confirmText = confirmText;
+		}
+		if (!this.isEmpty(cancelText)) {
+			opt.cancelText = cancelText;
+			opt.showCancel = true;
+		}
+		opt.success = function(res) {
+			if (res.confirm) {
+				success && success();
+			} else if (res.cancel) {
+				typeof cancel == 'function' && cancel();
+			}
+		};
+		uni.showModal(opt);
+	},
+
+	/**
+	 * loading 提示框
+	 * @param title
+	 */
+	loading: function(title) {
+		var that = this;
+		title = typeof title == 'string' ? title : "加载中...";
+		!that.config.loading && uni.showLoading({
+			title: title,
+			mask: true,
+			success: function() {
+				that.config.loading = true;
+			}
+		});
+	},
+
+	/**
+	 * 关闭loading 提示框
+	 */
+	closeLoading: function() {
+		var that = this;
+		that.config.loading && uni.hideLoading({
+			noConflict: true,
+			success: function() {
+				that.config.loading = false;
+			}
+		});
+	},
+
+	/**
+	 * 判断登录
+	 * @param {Object} type 0不跳转登录 1跳转登录
+	 * @param {Object} success
+	 */
+	login: function(type, success) {
+		if (typeof type == 'function') {
+			success = type;
+			type = 1;
+		} else if (typeof type == 'undefined') {
+			type = 1;
+		}
+		var that = this;
+		/* var userInfo = this.getUserInfo();
+		if (this.isEmpty(userInfo)) {
+			if (type == 1) {
+				that.info('请先登录', function() {
+					var pages = getCurrentPages();
+					var route = pages[pages.length - 1].route;
+					// if (route != 'pages/login/choose') {
+					// 	that.jump('/pages/login/choose');
+					// }
+				});
+			}
+			return false;
+		} */
+		// return success && success(userInfo) || userInfo;
+		return success
+	},
+
+	/**
+	 * 页面跳转
+	 * @param url
+	 * @param type
+	 */
+	jump: function(url, type, params) {
+		var that = this;
+		if (that.isEmpty(url) && type !== -1) return false;
+		if (url === -1) {
+			var delta = type || 1;
+			type = url;
+		} else if (type === -1) {
+			var delta = 1;
+			if (params && params.delta) {
+				delta = params.delta;
+			}
+		}
+		type = type || 0, //默认0
+			params = params || {};
+		if (that.isEmpty(params)) {
+			cache.remove('jump_data');
+		} else {
+			cache.set('jump_data', params);
+		}
+		switch (type) {
+			case -1:
+				//关闭当前页面,返回上一页面或多级页面 delta:1 返回层数
+				setTimeout(function() {
+					uni.navigateBack({
+						delta: delta
+					});
+				}, 800);
+				return;
+			case 0:
+				//保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面
+				uni.navigateTo({
+					url: url
+				});
+				return;
+			case 1:
+				//关闭当前页面,跳转到应用内的某个页面
+				uni.redirectTo({
+					url: url
+				});
+				return;
+			case 2:
+				//关闭所有页面,打开到应用内的某个页面
+				uni.reLaunch({
+					url: url
+				});
+				return;
+			case 3:
+				//跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
+				uni.switchTab({
+					url: url
+				});
+				return;
+			default:
+				return false;
+		}
+	},
+
+	/**
+	 * 数据请求
+	 */
+	req: function(option, onsuccess, onerror, oncomplete) {
+		if (option == 'undefined') return false;
+		var that = this,
+			config = {
+				sign: false, //是否签名数据
+				load: false, //是否显示loading提示
+				login: false, //是否需要登录
+				url: false,
+				data: option.data,
+				header: {
+					'content-type': 'application/x-www-form-urlencoded',
+					'Authorization': uni.getStorageSync('token').token
+				},
+				method: 'post',
+				dataType: 'json',
+				success: function(res) { //通讯成功
+
+					that.jslog('请求:' + option.url);
+					that.jslog(res.data);
+
+					//获取返回数据
+					res = res.data;
+
+					//如果存在回调,优先执行回调函数
+					if (onsuccess) {
+						if (onsuccess(res) === false) {
+							return;
+						}
+					}
+
+					if (typeof(res) == 'object') {
+						(res.info && res.info != 'success') && that.info(res.info);
+						if (res.status == 98) { //未登录或账号不存在
+							cache.remove('user_info');
+							that.login();
+						} else if (res.status == 99) { //token验证失败
+							cache.remove('token');
+						}
+					} else {
+						// that.modal('接口异常');
+					}
+				},
+				fail: function(res) { //通讯失败
+					that.jslog('请求:' + option.url);
+					that.jslog(res);
+					onerror && onerror();
+				},
+				complete: function(res) { //通讯完成
+					option.load && that.closeLoading();
+					oncomplete && oncomplete();
+				}
+			};
+
+		option.data && (option.data = option.data);
+		if (option.url) {
+			option.url = that.config.baseUrl + option.url;
+		} else {
+			return false;
+		}
+
+		option = that.extend({}, config, option);
+		if (option.login && !that.login()) {
+			return false;
+		}
+		// if (!option.data.submit) {
+		// 	option.data.submit = 'yes';
+		// }
+		if (option.sign) {
+			that.getsign(option.data, function(res) {
+				option.data = res;
+				option.load && that.loading(option.load);
+				uni.request(option);
+			})
+		} else {
+			option.load && that.loading(option.load);
+			uni.request(option);
+		}
+	},
+
+	
+	/**
+	 * 获取一个Token,登录成功请清空
+	 * @param {function}  callback :回调函数
+	 */
+	gettoken: function(callback) {
+		var that = this,
+			token = cache.get('token'),
+			timestamp = Date.parse(new Date()) / 1000;
+		// 10分钟缓冲
+		if (token && token.date_expire > (timestamp + 600)) return callback({
+			status: 1,
+			data: token
+		});
+		var uuid = that.uuid(),
+			//clientid=that.getClientId(),
+			uid = that.getUserInfo('id', 0);
+		uni.request({
+			url: that.config.baseUrl + 'token',
+			data: {
+				uuid: uuid,
+				uid: uid,
+				timestamp: timestamp
+			}, //clientid:clientid
+			timeout: 10000, //超时时间设置为10秒
+			success: function(res) {
+				var res = res.data;
+				if (res.status == 1) {
+					cache.set('token', res.data);
+				}
+				return callback(res);
+			},
+			complete: function(res) {
+				that.jslog('获取token:' + res);
+			}
+		});
+	},
+
+	/**
+	 * 数据签名
+	 * @param {string}     data:要签名的数据
+	 * @param {function}   onsuccess:成功回调函数
+	 * @param {function}   onerror:失败回调函数
+	 */
+	getsign: function(param, onsuccess, onerror) {
+		var that = this,
+			arr = [];
+		param._sign_uuid = that.uuid();
+		param._sign_uid = that.getUserInfo('id', 0);
+		param._timestamp = Date.parse(new Date()) / 1000;
+		param._version = that.config.version;
+		that.gettoken(function(res) {
+			if (res.status == 1) {
+				param._sign_token = res.data.token;
+				for (var i in param) {
+					if (!that.isEmpty(param[i], true)) {
+						arr.push(i + '=' + param[i]);
+					}
+				}
+				arr.sort();
+				param._sign = encrypt.sha1(arr.join('&') + res.data.token).toUpperCase();
+				return onsuccess(param);
+			} else {
+				return onerror && onerror(res.info) || that.info(res.info);
+			}
+		});
+	},
+
+	/**
+	 * 格式化参数(password加密)
+	 * @param {string}     query:参数
+	 */
+	formatparam: function(query) {
+		var json = {};
+		if (typeof(query) == 'object') {
+			for (var i in query) {
+				if (i.indexOf('password') > -1) {
+					query[i] = encrypt.md5(encrypt.sha1(query[i]));
+				}
+			}
+			return query;
+		} else {
+			var vars = query.split('&');
+			for (var i = 0; i < vars.length; i++) {
+				var pair = vars[i].split('=');
+				if (pair[0].indexOf('password') != -1) {
+					pair[1] = encrypt.md5(encrypt.sha1(pair[1]));
+				} else {
+					pair[1] = pair[1];
+				}
+				if (typeof json[pair[0]] === 'undefined') {
+					json[pair[0]] = pair[1];
+				} else if (typeof json[pair[0]] === 'string') {
+					var arr = [json[pair[0]], pair[1]];
+					json[pair[0]] = arr;
+				} else {
+					json[pair[0]].push(pair[1]);
+				}
+			}
+			return json;
+		}
+	},
+
+	/**
+	 * 判断是否数组
+	 * 
+	 * 1. 通过object类型的副属性class判断,
+	 * 	其中函数的class是Function,结果是[object Function]
+	 * 	普通的对象是Object,结果是[object Object]
+	 * 	Object.prototype.toString.call(arr) === '[object Array]'	
+	 * 2. 通过原型去判断
+	 * 	arr.constructor === Array	
+	 * 	Array.prototype.isPrototypeOf(arr)
+	 * 	arr.__proto__ === Array.prototype	
+	 * 	Object.getPrototypeOf(arr) === Array.prototype
+	 * 	arr instanceof Array
+	 * 3. es6新增方法
+	 * 	Array.isArray(arr)	
+	 */
+	isArray: function(arr) {
+		return arr && typeof(arr) == 'object' && Object.prototype.toString.call(arr) === '[object Array]';
+	},
+
+	/**
+	 * 否判断指定参数是否是一个纯粹的对象
+	 * 所谓"纯粹的对象",就是通过"{}"或"new Object"创建的,不包括数组等对象
+	 * 
+	 * 1. 通过object类型的副属性class判断
+	 * 	Object.prototype.toString.call(obj) === '[object Object]'
+	 * 2. 通过原型去判断
+	 * 	obj.constructor === Object
+	 * 	obj instanceof Object(数组也是对象,所以 arr instanceof Object 也为true)
+	 * 3. typeof
+	 * 	typeof obj(除了{},null和[]也是'object')
+	 */
+	isPlainObject: function(obj) {
+		if (Object.getPrototypeOf) {
+			return obj && typeof(obj) == 'object' && Object.getPrototypeOf(obj) == Object.prototype;
+		} else {
+			return obj && typeof(obj) == 'object' && Object.prototype.toString.call(obj) == "[object Object]" &&
+				!obj.length;
+		}
+	},
+
+	/**
+	 * 获取对象大小
+	 * @param object
+	 */
+	getLength: function(object) {
+		return Object.keys(object).length
+	},
+
+	/**
+	 * 判断两个Json(纯粹)对象是否一样
+	 * @param objA
+	 * @param objB
+	 */
+	compareJsonObj: function(objA, objB) {
+		if (!this.isPlainObject(objA) || !this.isPlainObject(objB)) return false; //判断类型是否正确
+		return this.compareObj(objA, objB); //默认为true
+	},
+
+	/**
+	 * 判断两个对象是否一样
+	 * @param objA
+	 * @param objB
+	 * @param flag
+	 */
+	compareObj: function(objA, objB, flag) {
+		if (this.getLength(objA) != this.getLength(objB)) return false;
+		flag = flag || true;
+		for (var key in objA) {
+			if (!flag) //flag为false,则跳出整个循环
+				break;
+			if (!objB.hasOwnProperty(key)) { //是否有自身属性,而不是继承的属性
+				flag = false;
+				break;
+			}
+			if (!this.isArray(objA[key])) { //子级不是数组时,比较属性值        	
+				if (this.isPlainObject(objA[key])) {
+					if (this.isPlainObject(objB[key])) {
+						if (!flag) //这里跳出循环是为了不让递归继续
+							break;
+						flag = this.compareObj(objA[key], objB[key], flag);
+					} else {
+						flag = false;
+						break;
+					}
+				} else {
+					if (String(objB[key]) != String(objA[key])) { //排除数字比较的类型差异
+						flag = false;
+						break;
+					}
+				}
+			} else {
+				if (!this.isArray(objB[key])) {
+					flag = false;
+					break;
+				}
+				var oA = objA[key],
+					oB = objB[key];
+				if (oA.length != oB.length) {
+					flag = false;
+					break;
+				}
+				for (var k in oA) {
+					if (!flag) //这里跳出循环是为了不让递归继续
+						break;
+					flag = this.compareObj(oA[k], oB[k], flag);
+				}
+			}
+		}
+		return flag;
+	},
+
+	/**
+	 * 将一个或多个对象的内容合并到目标对象
+	 * @param  Object target 目标对象,其他对象的成员属性将被附加到该对象上
+	 * @param  Object target 目标对象,第一个被合并的对象
+	 * @param  Object target 目标对象,第二个被合并的对象
+	 */
+	extend: Object.assign || function(target, source, deep) {
+		for (key in source) {
+			if (deep && (this.isPlainObject(source[key]) || this.isArray(source[key]))) {
+				if (this.isPlainObject(source[key]) && !this.isPlainObject(target[key])) {
+					target[key] = {};
+				}
+				if (this.isArray(source[key]) && !this.isArray(target[key])) {
+					target[key] = [];
+				}
+				this.extend(target[key], source[key], deep);
+			} else if (source[key] !== undefined) {
+				target[key] = source[key];
+			}
+		}
+		return target;
+	},
+
+	/**
+	 * 判断一个对象是否为空
+	 * @param {string}     string:要判断的参数
+	 * @param {string}     is_zero:是否要判断'0'
+	 */
+	isEmpty: function(string, is_zero = false) {
+		if (is_zero && string === '0') {
+			return true;
+		}
+		// 0 == '',false == '',[] == ''
+		if (string == '' || string == null || typeof(string) == 'undefined' || string == 'undefined') {
+			return true;
+		}
+		// 对象 和 数组
+		if (typeof(string) == 'object') {
+			return this.getLength(string) ? false : true;
+		}
+		return false;
+	},
+
+	/**
+	 * 为客户端生成一个唯一的uuid
+	 */
+	uuid: function() {
+		var uuid,
+			random = function() {
+				return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
+			};
+		uuid = cache.get('uuid');
+		if (!uuid) {
+			uuid = encrypt.sha1(random() + random() + '-' + random() + '-' + random() + '-' + random() + '-' +
+				random() + random() + random());
+			cache.set('uuid', uuid);
+		}
+		return uuid;
+	},
+
+	/**
+	 * 获取设备唯一标识
+	 */
+	getClientId: function() {
+		//获取客户端ID
+		var clientid = cache.get('client_id');
+		if (clientid) return clientid;
+		//TODO::
+	},
+
+	/**
+	 * 获取用户登录信息
+	 * @param k 键值
+	 * @param d 入没有返回的默认值
+	 */
+	getUserInfo: function(k, d) {
+		if (d == 'undefined') {
+			d = 0;
+		}
+		var userInfo = cache.get('user_info');
+		if (this.isEmpty(userInfo)) {
+			return d;
+		} else {
+			if (typeof k == 'undefined') {
+				return userInfo;
+			} else {
+				if (typeof userInfo[k] == 'undefined') {
+					return d;
+				} else {
+					return userInfo[k];
+				}
+			}
+		}
+	},
+
+	/**
+	 * 查找指定值的元素在数组中第一次出现的位置
+	 * 查找指定键的值的元素在二维数组中第一次出现的位置
+	 * @param arr  数组
+	 * @param val  要查找的值
+	 * @param key  二维数组元素的值对应的键
+	 */
+	indexOf: function(arr, val, key) {
+		if (this.isEmpty(arr) || this.isEmpty(val)) return -1;
+		if (typeof key == 'undefined') {
+			for (let i = 0; i < arr.length; i++) {
+				if (arr[i] == val) {
+					return i;
+				}
+			}
+		} else {
+			for (let i = 0; i < arr.length; i++) {
+				if (arr[i][key] == val) {
+					return i;
+				}
+			}
+		}
+		return -1;
+	},
+
+	/**
+	 * (批量)删除数组中指定值的元素
+	 * (批量)删除二维数组中指定键的值的元素
+	 * @param {Object} arr  (二维)数组
+	 * @param {Object} vals 值(数组)
+	 * @param {Object} key	值(数组)组对应的键
+	 */
+	removeItemByVals: function(arr, vals, key) {
+		var that = this;
+		if (this.isEmpty(arr) || this.isEmpty(vals)) return arr;
+		if (this.isArray(vals)) {
+			//!倒序删除
+			if (typeof key == 'undefined') {
+				for (let i = arr.length - 1; i >= 0; i--) {
+					let index = that.indexOf(vals, arr[i]);
+					if (index > -1) {
+						arr.splice(i, 1);
+					}
+				}
+			} else {
+				for (let i = arr.length - 1; i >= 0; i--) {
+					let index = that.indexOf(vals, arr[i][key]);
+					if (index > -1) {
+						arr.splice(i, 1);
+					}
+				}
+			}
+		} else {
+			let index = this.indexOf(arr, vals, key);
+			if (index > -1) {
+				arr.splice(index, 1);
+			}
+		}
+		return arr;
+	},
+
+	/**
+	 * 批量删除数组中指定键的元素
+	 * @param {Object} arr   数组
+	 * @param {Object} indexs 序号(数组)
+	 */
+	removeItemByIndex: function(arr, indexs) {
+		var that = this;
+		if (this.isEmpty(arr) || this.isEmpty(indexs)) return arr;
+		if (this.isArray(indexs)) {
+			//!倒序删除
+			for (let i = arr.length - 1; i >= 0; i--) {
+				let index = that.indexOf(indexs, i);
+				if (index > -1) {
+					arr.splice(i, 1);
+				}
+			}
+		} else {
+			arr.splice(indexs, 1);
+		}
+		return arr;
+	},
+
+	/**
+	 * 返回数组中某个单一列的值
+	 */
+	array_column: function(arr, key) {
+		if (this.isEmpty(arr)) return arr;
+		if (this.isEmpty(key)) return [];
+		var vals = [];
+		arr.forEach(item => {
+			vals.push(item[key]);
+		});
+		return vals;
+	},
+
+	/**
+	 * 对象按照key排序
+	 * @param {Object} arr
+	 */
+	array_ksort: function(arr) {
+		let sorted = {},
+			keys = Object.keys(arr);
+		keys.sort();
+		keys.forEach((key) => {
+			sorted[key] = arr[key];
+		})
+		return sorted;
+	},
+
+	/**
+	 * 数组按元素(指定键值)排序
+	 * @param {Object} arr
+	 * @param {Object} key
+	 * @param {Object} sort asc desc
+	 */
+	array_vsort: function(arr, key, sort) {
+		if (this.isEmpty(arr)) return arr;
+		key = key || '';
+		sort = sort || 'asc';
+		if (key == '') {
+			return arr.sort();
+		} else {
+			if (sort == 'asc') {
+				return arr.sort(function(a, b) {
+					return a[key] - b[key];
+				});
+			} else {
+				return arr.sort(function(a, b) {
+					return b[key] - a[key];
+				});
+			}
+		}
+	},
+
+	/**
+	 * 日期时间格式化
+	 * @param {Object} date 日期对象
+	 * @param {Object} type 增加加的时间间隔:y年 q季度(3个月) m月 d天
+	 * @param {Object} number 增加的时间间隔的个数
+	 * @param {Object} format 格式化样式
+	 */
+	formatDate: function({
+		date = '',
+		type = 'y',
+		number = 0,
+		format = 'Y-m-d H:i:s'
+	}) {
+		var that = this;
+		if (that.isEmpty(date, true)) {
+			date = new Date();
+		} else {
+			if (typeof date == 'number') {
+				date = new Date(parseInt(date) * 1000);
+			} else if (typeof date == 'string') {
+				date = new Date(date);
+			}
+		}
+		date = that.addDate(type, number, date);
+		var zero = function(value) {
+				if (value < 10) {
+					return '0' + value;
+				}
+				return value;
+			},
+			year = date.getFullYear(),
+			month = zero(date.getMonth() + 1),
+			day = zero(date.getDate()),
+			hour = zero(date.getHours()),
+			minite = zero(date.getMinutes()),
+			second = zero(date.getSeconds());
+		return format.replace(/Y|m|d|H|i|s/ig, function(matches) {
+			return ({
+				Y: year,
+				m: month,
+				d: day,
+				H: hour,
+				i: minite,
+				s: second,
+			})[matches];
+		});
+	},
+
+	/**
+	 * 日期时间计算
+	 * addDate(type,number,date)
+	 * @param {Object} type 增加的时间间隔:y年 q季度(3个月) m月 d天
+	 * @param {Object} number 增加的时间间隔的个数
+	 * @param {Object} date 开始日期对象
+	 * @return {type} 新的日期对象
+	 * var now = new Date();
+	 * var newDate = addDate( "d", 5, now);
+	 */
+	addDate: function(type, number, date) {
+		switch (type) {
+			case "y": {
+				date.setFullYear(date.getFullYear() + number);
+				return date;
+				break;
+			}
+			case "q": {
+				date.setMonth(date.getMonth() + number * 3);
+				return date;
+				break;
+			}
+			case "m": {
+				date.setMonth(date.getMonth() + number);
+				return date;
+				break;
+			}
+			case "w": {
+				date.setDate(date.getDate() + number * 7);
+				return date;
+				break;
+			}
+			case "d": {
+				date.setDate(date.getDate() + number);
+				return date;
+				break;
+			}
+			case "h": {
+				date.setHours(date.getHours() + number);
+				return date;
+				break;
+			}
+			case "m": {
+				date.setMinutes(date.getMinutes() + number);
+				return date;
+				break;
+			}
+			case "s": {
+				date.setSeconds(date.getSeconds() + number);
+				return date;
+				break;
+			}
+			default: {
+				date.setDate(date.getDate() + number);
+				return date;
+				break;
+			}
+		}
+	},
+
+	/**
+	 * 二维码操作
+	 * @param {Object} canvas		图片路径
+	 * @param {Object} action 	操作类型 
+	 * 	qrcode:绘制二维码(根据内容data)
+	 * 	scan:扫描二维码
+	 * @param {Object} canvas 	绘制二维码canvasID
+	 * @param {Object} data 	绘制二维码内容
+	 * @param {Object} camera 扫描二维码是否只使用相机
+	 * @param {Object} success 	成功回调
+	 * @param {Object} error 	失败回调
+	 */
+	qrCodeOperat({
+		action = 'qrcode',
+		canvas,
+		data,
+		camera = false,
+		success,
+		error
+	}) {
+		var that = this;
+		switch (action) {
+			case 'qrcode':
+				qrCode({
+					width: 180,
+					height: 180,
+					x: 20,
+					y: 20,
+					canvasId: canvas,
+					text: data,
+				});
+				break;
+			case 'scan':
+				uni.scanCode({
+					onlyFromCamera: camera,
+					success(res) {
+						if (res.errMsg == 'scanCode:ok') {
+							// 二维码内容 res.result
+							success && success(res.result);
+						} else {
+							error && error(res);
+						}
+					},
+					fail(res) {
+						if (res.errMsg != 'scanCode:fail cancel') {
+							error && error(res);
+						}
+					}
+				});
+				break;
+			default:
+				that.modal('请明确二维码操作类型');
+		}
+	},
+
+	/**
+	 * 图片操作
+	 * @param {Object} path		图片路径
+	 * @param {Object} action 	操作类型 
+	 *  choose:选择图片
+	 *  upload:图片上传
+	 * 	info:图片信息 
+	 * 	read:读取图片(base64)
+	 *  write:保存图片(base64)
+	 * 	down:下载图片
+	 *  save:保存图片(临时路径)
+	 *  preview:图片预览
+	 * @param {Object} data 	保存图片:图片base64内容(不带 data:image/png;base64,),
+	 * 							图片预览:图片数组
+	 * @param {Object} fileName 保存图片的名称
+	 * @param {Object} menu 	图片预览:是否显示长按菜单
+	 * @param {Object} count 	图片选择:默认图片选择数量
+	 * @param {Object} success 	成功回调
+	 * @param {Object} error 	失败回调
+	 */
+	imageOperat({
+		action = 'choose',
+		path,
+		fileName = 'write',
+		data,
+		count = 1,
+		menu = true,
+		success,
+		error
+	}) {
+		var that = this;
+		if (action == 'choose') {
+			uni.chooseImage({
+				count: count,
+				sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+				sourceType: ['camera', 'album'], //相册选择、使用相机
+				success: (e) => {
+					e.tempFilePaths.forEach((item) => {
+						success && success(item);
+					});
+				},
+				fail(e) {
+					error && error(e);
+				}
+			});
+		} else if (action == 'upload') {
+			uni.uploadFile({
+				url: that.config.baseUrl + '/api/Publics/uploadLocality',
+				filePath: path,
+				name: 'upfile',
+				/* header: {
+					'content-type': 'multipart/form-data'
+				}, */
+				formData: {
+					// uid: that.getUserInfo('id', 0)
+					file: path
+				},
+				success(e) {
+					console.log(e)
+					let res = JSON.parse(e.data);
+					if (res.status == 1) {
+						success && success(res);
+					} else {
+						error && error({
+							errMsg: res.info
+						});
+					}
+				},
+				fail(e) {
+					error && error(e);
+				}
+			});
+		} else if (action == 'info') {
+			uni.getImageInfo({
+				src: path,
+				success(e) {
+					if (e.errMsg == 'getImageInfo:ok') {
+						//e.height e.width e.type
+						success && success(e);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					error && error(e);
+				}
+			});
+		} else if (action == 'read') {
+			uni.getFileSystemManager().readFile({
+				filePath: path,
+				encoding: 'base64',
+				position: 0,
+				success(e) {
+					if (e.errMsg == 'readFile:ok') {
+						//let img = 'data:image/png;base64,' + e.data.replace(/[\r\n]/g, "");
+						success && success(e);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e_t) {
+					error && error(e);
+				}
+			});
+		} else if (action == 'write') {
+			let filePath = `${uni.env.USER_DATA_PATH}/${fileName}.png`;
+			uni.getFileSystemManager().writeFile({
+				filePath: filePath,
+				data: data,
+				encoding: 'base64',
+				success(e) {
+					if (e.errMsg == 'writeFile:ok') {
+						success && success(filePath);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					console.log(e);
+					error && error(e);
+				}
+			});
+		} else if (action == 'down') {
+			uni.downloadFile({
+				url: path,
+				success(e) {
+					if (e.errMsg === 'downloadFile:ok') {
+						//e.tempFilePath
+						success && success(e);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					error && error(e);
+				}
+			})
+		} else if (action == 'save') {
+			let filePath = `${uni.env.USER_DATA_PATH}/${fileName}.png`;
+			uni.getFileSystemManager().saveFile({
+				tempFilePath: path,
+				filePath: filePath,
+				success(e) {
+					if (e.errMsg == 'saveFile:ok') {
+						success && success(filePath);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					console.log(e);
+					error && error(e);
+				}
+			});
+		} else if (action == 'preview') {
+			uni.previewImage({
+				currnet: path,
+				urls: data,
+				showmenu: menu
+			});
+		}
+	},
+	/**
+	 * 视频操作
+	 */
+	viedoOperat({
+		action = 'choose',
+		count = 1, //上传视频的个数
+		mediaType = ['video'], //限制上传的类型为video
+		sourceType = ['album', 'camera'], //视频选择来源
+		maxDuration = 58, //拍摄限制时间
+		camera = 'back', //采用后置摄像头
+		filePath,
+		path,
+		size = 20,
+		success,
+		error
+	}) {
+		var that = this
+		if (action == 'choose') {
+			uni.chooseMedia({
+				count: count,
+				mediaType: mediaType,
+				sourceType: sourceType,
+				maxDuration: maxDuration,
+				camera: camera,
+				success(e) {
+					console.log(e)
+					if (e.errMsg == 'chooseMedia:ok') {
+						e.tempFiles.forEach((item) => {
+							let sel_size = parseFloat(item.size / 1024 / 1024).toFixed(1)
+							if (sel_size > size) {
+								let beyongSize = sel_size - size //获取视频超出限制大小的数量
+								that.info("上传的视频大小超限,超出" + beyongSize + "MB,请重新上传!")
+								error && error();
+							} else {
+								success && success(item);
+							}
+						});
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					console.log(e);
+					error && error(e);
+				}
+			})
+		}
+		//压缩视频
+		if (action == 'compress') {
+			uni.compressVideo({
+				quality: 'high',
+				src: filePath,
+				success(e) {
+					console.log(e)
+					if (e.errMsg == 'compressVideo:ok') {
+						// e.tempFiles.forEach((item) => {
+						success && success(e);
+						// });
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					console.log(e);
+					error && error(e);
+				}
+			})
+		}
+	},
+	/**
+	 * 位置服务
+	 * @param {Object} action 	操作类型 
+	 * 	getLocation: 获取当前的地理位置、速度
+	 *  openLocation: 使用微信内置地图查看位置
+	 *  chooseLocation: 打开地图选择位置
+	 *  choosePoi: 打开 POI 列表选择位置
+	 * 	getLatLng: 获取指定地址经纬度
+	 *  getAreaCode: 根据经纬度获取区划信息
+	 *  getDistance: 计算2个经纬度之间的距离
+	 * @param {Object} type 	返回坐标类型: wgs84返回gps坐标,gcj02 返回可用于 uni.openLocation 的坐标
+	 * @param {Object} address 	查询地址: '北京市海淀区彩和坊路海淀西大街74号'
+	 * @param {Object} from 	计算距离起点坐标,默认当前位置
+	 * {latitude: 0, longitude: 0}
+	 * @param {Object} to 		计算距离终点坐标
+	 * [{latitude: 0, longitude: 0}]
+	 * @param {Object} success 	成功回调
+	 * @param {Object} error 	失败回调
+	 */
+	locationOperat({
+		action = 'getLocation',
+		type = 'gcj02',
+		address,
+		from = '',
+		to,
+		success,
+		error
+	}) {
+		var that = this;
+		if (action == 'getLocation') {
+			uni.getLocation({
+				type: type,
+				success(e) {
+					if (e.errMsg == 'getLocation:ok') {
+						success && success(e);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					error && error(e);
+				}
+			});
+		} else if (action == 'openLocation') {
+			var {
+				latitude,
+				longitude
+			} = from;
+			uni.openLocation({
+				latitude: latitude,
+				longitude: longitude,
+				success(e) {
+					if (e.errMsg == 'openLocation:ok') {
+						success && success(e);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					error && error(e);
+				}
+			});
+		} else if (action == 'chooseLocation') {
+			var {
+				latitude = '',
+					longitude = ''
+			} = from;
+			uni.chooseLocation({
+				latitude: latitude,
+				longitude: longitude,
+				success(e) {
+					if (e.errMsg == 'chooseLocation:ok') {
+						success && success(e);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					error && error(e);
+				}
+			});
+		} else if (action == 'choosePoi') {
+			var {
+				latitude = '',
+					longitude = ''
+			} = from;
+			uni.choosePoi({
+				success(e) {
+					if (e.errMsg == 'choosePoi:ok') {
+						success && success(e);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					error && error(e);
+				}
+			});
+		} else if (action == 'getLatLng') {
+			new qqMap({
+				key: that.config.qqMapKey
+			}).geocoder({
+				address: address,
+				success(e) {
+					if (e.status == 0 && e.message == 'query ok') {
+						success && success(e.result);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					error && error(e);
+				}
+			});
+		} else if (action == 'getAreaCode') {
+			new qqMap({
+				key: that.config.qqMapKey
+			}).reverseGeocoder({
+				success(e) {
+					if (e.status == 0 && e.message == 'query ok') {
+						success && success(e.result);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					error && error(e);
+				}
+			});
+		} else if (action == 'getDistanceApi') {
+			new qqMap({
+				key: that.config.qqMapKey
+			}).calculateDistance({
+				from: from, //若起点有数据则采用起点坐标,若为空默认当前地址
+				to: to,
+				success(e) {
+					if (e.status == 0 && e.message == 'query ok') {
+						success && success(e.result.elements);
+					} else {
+						error && error(e);
+					}
+				},
+				fail(e) {
+					error && error(e);
+				}
+			});
+		} else if (action == 'getDistanceMath') { // 返回KM
+			var {
+				latitude: lat1 = '',
+				longitude: lng1 = ''
+			} = from;
+			if (lat1 == '' && lng1 == '') {
+				return 0;
+			}
+			var {
+				latitude: lat2 = '',
+				longitude: lng2 = ''
+			} = to;
+			var toRad = function(d) {
+				return d * Math.PI / 180;
+			};
+			var dis = 0;
+			var deltaLng = toRad(lng1) - toRad(lng2);
+			var radLat1 = toRad(lat1);
+			var radLat2 = toRad(lat2);
+			var deltaLat = radLat1 - radLat2;
+			var dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat / 2), 2) + Math.cos(radLat1) * Math.cos(
+				radLat2) * Math.pow(Math.sin(deltaLng / 2), 2)));
+			return that.math.toFixed(dis * 6378.137, 2); // km
+		}
+	},
+
+	/**
+	 * 过滤emoji
+	 * @param {Object} str
+	 */
+	filterEmoji: function(str) {
+		return str.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, '');
+	},
+
+	/**
+	 * 打印对象
+	 * @param obj
+	 */
+	jslog: function(obj) {
+		this.config.debug && console.log(JSON.stringify(obj));
+	},
+
+	/**
+	 * form表单数据校验
+	 * @param value
+	 * @param rule
+	 */
+	formCheck: function(value, rule, error) {
+		var that = this;
+		var regs = {
+			required: [
+				/[\s\S]+/,
+				'必填项不能为空',
+			],
+			english: [
+				/^[a-zA-Z]+$/,
+				'必填项只能由大小写字母组成',
+			],
+			mobile: [
+				/^1[3|4|5|7|8|9][0-9]\d{4,8}$/,
+				'请输入正确的手机号',
+			],
+			phone: [
+				/^(\d{3,4}-?)?\d{7,9}$/g,
+				'请输入正确的电话号码',
+			],
+			email: [
+				/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
+				'请输入正确的电子邮箱'
+			],
+			url: [
+				/(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/,
+				'请输入正确的链接'
+			],
+			number: [
+				/^\d+$/,
+				'必填项只能填数字'
+			],
+			code4: [
+				/^\d{4}$/,
+				'请输入正确的手机验证码'
+			],
+			code6: [
+				/^\d{6}$/,
+				'请输入正确的手机验证码'
+			],
+			captcha4: [
+				/^[0-9a-zA-Z]{4}$/,
+				'请输入正确的图片验证码'
+			],
+			date: [
+				/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,
+				'请输入正确的日期格式'
+			],
+			identity: [
+				/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,
+				'请输入正确的身份证号'
+			],
+			username: [
+				/^[a-zA-Z0-9\u4e00-\u9fa5-_\.]{2,12}$/,
+				'请输入正确的帐号(只能包含中文、英文、数字、下划线等字符)'
+			],
+			password: [
+				/^[a-zA-Z]+\w{5,12}$/,
+				'请输入正确的密码(以字母开头,长度在6-12之间)'
+			],
+			passwords: [
+				/^[a-zA-Z]+\w{5,12}$/,
+				'请输入正确的密码(以字母开头,长度在6-12之间)'
+			],
+			pwd: [
+				/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9a-zA-Z]{6,12}$/,
+				'请输入正确的密码(6-12位数字+字母组合)'
+			],
+			invite: [
+				/^[0-9a-zA-Z]{10}$/,
+				'邀请码为8位数字或字母组合'
+			],
+			truename: [
+				/^[\u4e00-\u9fa5]{2,4}$/,
+				'请输入正确的真实姓名(2-4个汉字)'
+			],
+			money: [
+				/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/,
+				'请输入正确的金额'
+			]
+		};
+		var reg = regs[rule];
+		if (that.isEmpty(reg)) {
+			return true;
+		} else {
+			if (value == '' || !RegExp(reg[0]).test(value)) {
+				that.info(error || reg[1]);
+				return false;
+			}
+			return true;
+		}
+	},
+
+	/****************************************************/
+
+	/**
+	 *获取系统信息
+	 * @param label 获取系统的某一项信息
+	 * screenWidth		屏幕宽度,
+	 * screenHeight 	屏幕高度,单位px
+	 * windowWidth		单位px可使用窗口宽度,单位px
+	 * windowHeight		可使用窗口高度,单位px
+	 * statusBarHeight	状态栏的高度,单位px
+	 * menuButton:右上角胶囊按钮的布局位置信息,坐标信息以屏幕左上角为原点
+	 * width			宽度,单位:px
+	 * height			高度,单位:px
+	 * top				上边界坐标,单位:px
+	 * right			右边界坐标,单位:px
+	 * bottom			下边界坐标,单位:px
+	 * left				左边界坐标,单位:px
+	 */
+	getSystemInfo(success) {
+		// 获取系统状态栏信息
+		uni.getSystemInfo({
+			success: (res) => {
+				if (res.errMsg == 'getSystemInfo:ok') {
+					res.menuButton = uni.getMenuButtonBoundingClientRect();
+					success && success(res);
+				} else {
+					that.modal('获取系统信息失败:' + res.errMsg);
+				}
+			},
+			fail: (res) => {
+				that.modal('获取系统信息失败:' + res.errMsg);
+			}
+		});
+	},
+
+	/**
+	 * 检查登录
+	 */
+	getSessionKey: function(success) {
+		let that = this;
+		let data = {};
+		data.openid = cache.get('open_id');
+		data.session_key = cache.get('session_key');
+		// 都存在
+		if (!that.isEmpty(data.session_key) && !that.isEmpty(data.openid)) {
+			uni.checkSession({
+				success() {
+					success && success(data);
+				},
+				fail() {
+					cache.remove('open_id');
+					cache.remove('session_key');
+					that.getOpenId(success);
+				}
+			});
+		} else {
+			cache.remove('open_id');
+			cache.remove('session_key');
+			that.getOpenId(success);
+		}
+	},
+
+	/**
+	 * 获取openid
+	 * @param success
+	 */
+	getOpenId: function(success, error) {
+		var that = this;
+		that.loading();
+		uni.login({
+			success: (e) => {
+				that.req({
+					url: 'public/getOpenid',
+					data: {
+						code: e.code
+					},
+					login: false,
+					load: false
+				}, function(res) {
+					if (res.status == 1) {
+						cache.set('open_id', res.data.openid);
+						cache.set('session_key', res.data.session_key);
+						success && success(res.data);
+					} else {
+						that.modal('微信登录失败:' + res.info, function() {
+							error && error();
+						});
+						return false;
+					}
+				}, function() {}, function() {
+					that.closeLoading();
+				});
+			},
+			fail: (e) => {
+				that.closeLoading();
+				that.modal('微信登录失败:' + e.errMsg, function() {
+					error && error();
+				});
+			}
+		});
+	},
+
+	/**
+	 * 登录
+	 * @param {Object} data
+	 * @param {Object} success
+	 * @param {Object} error
+	 */
+	doLogin: function(data, success, error) {
+		var that = this;
+		data.loginsubmit = 'yes';
+		this.req({
+			url: 'account/login',
+			data: data,
+			login: false
+		}, function(res) {
+			if (res.status == 1) {
+				cache.set('user_info', res.data);
+				success && success(res.data);
+			} else {
+				error && error(res);
+			}
+		});
+	},
+
+	/**
+	 * 注册
+	 * @param {Object} data
+	 * @param {Object} success
+	 * @param {Object} error
+	 */
+	doRegist: function(data, success, error) {
+		var that = this;
+		data.registsubmit = 'yes';
+		this.req({
+			url: 'account/register',
+			data: data,
+			login: false
+		}, function(res) {
+			if (res.status == 1) {
+				cache.set('user_info', res.data);
+				success && success(res.data);
+			} else {
+				error && error(res);
+			}
+		});
+	},
+
+	/**
+	 * 查询是否注册
+	 * @param {Object} success
+	 * @param {Object} error
+	 */
+	checkRegist: function(success, error) {
+		var that = this;
+		that.getSessionKey(function(data) {
+			that.req({
+				url: 'account/checkRegist',
+				data: {
+					open_id: data.openid,
+					registsubmit: 'yes'
+				},
+				login: false,
+				load: false
+			}, function(res) {
+				if (res.status == 1) {
+					success && success();
+				} else {
+					error && error();
+				}
+			});
+		});
+	},
+
+	/**
+	 * 获取会员信息
+	 * @param {Object} success
+	 * @param {Object} error
+	 */
+	getMemberInfo: function(success, error) {
+		var that = this;
+		this.req({
+			url: 'center/getMemberInfo',
+			load: false
+		}, function(res) {
+			if (res.status == 1) {
+				cache.set('user_info', res.data);
+				success && success(res.data);
+			} else {
+				error && error(res);
+			}
+		});
+	},
+
+	/**
+	 * 获取用户微信资料
+	 * @param success
+	 */
+	getUserProfile: function(success, error) {
+		var that = this;
+		that.loading('获取微信信息中...');
+		uni.getUserProfile({
+			lang: 'zh_CN',
+			desc: '用于完善会员资料',
+			success: (res) => {
+				if (res.errMsg == 'getUserProfile:ok') {
+					// 过滤掉emoji
+					res.userInfo.nickName = that.filterEmoji(res.userInfo.nickName);
+					success(res.userInfo);
+				} else {
+					that.modal('获取微信信息失败:' + res.errMsg, function() {
+						error && error(res);
+					});
+				}
+			},
+			fail: (res) => {
+				that.modal('获取微信信息失败:' + res.errMsg, function() {
+					console.log(res)
+					error && error(res);
+				});
+			},
+			complete: () => {
+				that.closeLoading();
+			}
+		});
+	},
+
+	/**
+	 * 获取配置信息
+	 * @param success
+	 */
+	getConfigInfo: function({
+		source = 'system',
+		label = '',
+		success
+	}) {
+		this.req({
+			url: 'public/configInfo',
+			data: {
+				source: source,
+				label: label
+			},
+			login: false,
+			load: false
+		}, function(res) {
+			success(res.data);
+		});
+	},
+
+	/**
+	 * 获取微信手机号
+	 * @param e
+	 * @param success
+	 */
+	getMobile: function(e, success) {
+		var that = this;
+		that.getSessionKey(function(data) {
+			if (e.detail.errMsg == 'getPhoneNumber:ok') {
+				that.req({
+					url: 'public/getMobile',
+					data: {
+						encryptedData: e.detail.encryptedData,
+						iv: e.detail.iv,
+						sessionKey: data.session_key
+					},
+					login: false
+				}, function(res) {
+					if (res.status == 1) {
+						success(res.data);
+					} else {
+						that.modal('获取手机号失败' + res.info);
+						return false;
+					}
+				});
+			} else {
+				that.modal('获取手机号失败' + e.detail.errMsg);
+			}
+		});
+	},
+
+	/**
+	 * 拨打电话
+	 * @param mobile
+	 */
+	makeCall: function(mobile) {
+		this.modal('确定拨打' + mobile, function() {
+			uni.makePhoneCall({
+				phoneNumber: mobile
+			});
+		}, true);
+	},
+
+	/**
+	 * 修改页面标题
+	 * @param title
+	 */
+	changeNavBarTitle: function(title) {
+		uni.setNavigationBarTitle({
+			title: title
+		});
+	},
+
+	/**
+	 * 检查版本更新
+	 */
+	checkUpdate: function() {
+		if (uni.canIUse('getUpdateManager')) {
+			const updateManager = uni.getUpdateManager()
+			updateManager.onCheckForUpdate(function(res) {
+				if (res.hasUpdate) {
+					updateManager.onUpdateReady(function() {
+						uni.showModal({
+							title: '更新提示',
+							content: '新版本已经准备好,是否重启应用?',
+							success: function(res) {
+								if (res.confirm) {
+									updateManager.applyUpdate()
+								}
+							}
+						})
+					})
+					updateManager.onUpdateFailed(function() {
+						uni.showModal({
+							title: '已经有新版本了~',
+							content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开~'
+						})
+					})
+				}
+			})
+		} else {
+			uni.showModal({
+				title: '提示',
+				content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
+			})
+		}
+	},
+	/**
+	 * html转义
+	 * @param {object} str    //需要转义内容
+	 * @param {object} success  
+	 */
+	escape2Html(str, success) {
+		var arrEntities = {
+			'lt': '<',
+			'gt': '>',
+			'nbsp': ' ',
+			'amp': '&',
+			'quot': '"'
+		};
+		return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, t) {
+			return arrEntities[t];
+		}).replace(/<section/g, '<div').replace(/<u>/g, '').replace(/<u style="">/g, '').replace(/<\/u>/g, '');
+	},
+	/**
+	 * 分享信息
+	 */
+	shareInfo: function() {
+		var that = this;
+		var userInfo = cache.get('user_info');
+		if (!that.isEmpty(userInfo) && !that.isEmpty(userInfo.serial)) {
+			var path = `/pages/index/index?invite_code=${userInfo.serial}`;
+		} else {
+			var path = '/pages/index/index';
+		}
+		return {
+			title: that.config.name,
+			path: path,
+			// imageUrl: '/image/iconimg/login.png'
+		};
+	},
+	/**
+	 * 检测是否收藏
+	 * @param {object} id    //检测是否收藏的商品id
+	 * @param {object} success  
+	 */
+	checkStore(id, key, success) {
+		var that = this
+		var shopStore = cache.get(key);
+		if (that.isEmpty(shopStore)) {
+			success && success(false)
+		} else {
+			var have = 0
+			for (let i in shopStore) {
+				var d = shopStore[i];
+				if (d.id == id) {
+					// 有收藏
+					have = 1
+					success && success(true)
+					break;
+				}
+				if (have == 0) {
+					// 无收藏
+					success && success(false)
+				}
+			}
+		}
+	},
+	/**
+	 * 收藏缓存
+	 * @param {object} id    //需要收藏或取消的商品id
+	 * @param {object} success  
+	 */
+	changeStore(data, key, success) {
+		var shopStore = cache.get(key);
+		var that = this
+		var p = {}
+		p = data
+		if (that.isEmpty(shopStore)) {
+			var shopStore = []
+			shopStore.push(p);
+			cache.set(key, shopStore);
+			success && success('收藏成功')
+		} else {
+			var have = 0
+			for (let i in shopStore) {
+				var d = shopStore[i];
+				console.log(d, data)
+				if (d.id == data.id && d.table == data.table) {
+					// 有的话取消收藏
+					have = 1
+					shopStore.splice(i, 1);
+					cache.set(key, shopStore);
+					success && success('取消成功')
+					break;
+				}
+			}
+			if (have == 0) {
+				// 没有的话收藏
+				shopStore.push(p);
+				cache.set(key, shopStore);
+				success && success('收藏成功')
+			}
+		}
+	},
+
+	/****************************************************/
+
+	/**
+	 * 获取购物车信息,设置导航红点信息
+	 * @param index 设置信息 tabBar 序号
+	 */
+	getshopcar: function(success) {
+		var shopCar_list = cache.get('shop_car');
+		if (this.isEmpty(shopCar_list)) {
+			uni.hideTabBarRedDot({ //隐藏 tabBar 某一项的右上角文本
+				index: 2, //第几个 tabBar,从左边 0 算起
+				success: function() {
+					success && success(0);
+				}
+			});
+		} else {
+			var len = this.getLength(shopCar_list);
+			uni.setTabBarBadge({ //为 tabBar 某一项的右上角添加文本
+				index: 2, //第几个 tabBar,从左边 0 算起
+				text: String(len), //右上角添加的文本
+				success: function() {
+					success && success(len);
+				}
+			});
+		}
+	},
+	/**
+	 * 上拉刷新加载数据
+	 * @param {object} type
+	 * @param {object} page
+	 * @param {object} succes
+	 */
+	onReachFoot: function(url, data, succes) {
+		//type=1时请求找工作
+		if (url) {
+			this.req({
+				url: url,
+				data: data
+			}, function(res) {
+				if (res.status == 1) {
+					succes && succes(res.data);
+				}
+			})
+		} else {
+			succes && success(false)
+		}
+	},
+	/**
+	 * 电话聊天控制
+	 * @param price 价格
+	 * @param mobile 手机号
+	 * @param work_id 工作或求职id
+	 * @param {String} type 类型,work招工,worker求职
+	 * @param {String} buy_type 购买类型 pirce电话,chat_price聊天
+	 * @param send_id 被购买的用户id
+	 * @param send_name 被购买的名字
+	 */
+	makeCall(price, mobile, work_id, type, buy_type, send_id, send_name = '') {
+		var that = this
+		that.modal('将自动使用会员次数或东豆进行抵扣', function(params) {
+			that.req({
+				url: 'center/MobileOrMessage',
+				data: {
+					price: price,
+					mobile: mobile,
+					work_id: work_id,
+					type: type,
+					buy_type: buy_type,
+					send_id: send_id,
+					send_name: send_name
+				}
+			}, function(params) {
+				if (params.status == 1) {
+					if (buy_type == 'price') {
+						uni.makePhoneCall({
+							phoneNumber: mobile,
+						})
+					} else {
+						that.jump('/pages/chat/chat?id=' + send_id + '&nickname=' + send_name)
+					}
+				}
+				if (params.status == 2) {
+
+				}
+			})
+		}, true)
+	},
+	/**
+	 * 微信小程序防抖
+	 * @param func 防抖事件
+	 * @param wait 阻止时间
+	 */
+	debounce: function(func, wait) {
+		let timeout;
+		return function() {
+			console.log('防抖事件:' + func, '防抖时间:' + wait)
+			let context = this
+			let args = arguments
+			let later = () => {
+				timeout = null
+				func.apply(context, args)
+			}
+			clearTimeout(timeout)
+			timeout = setTimeout(later, wait)
+		}
+	}
+}

+ 102 - 0
jxtxkj/static/js/cache.js

@@ -0,0 +1,102 @@
+/**
+ * 缓存数据优化
+ * var cache = require('utils/cache.js');
+ * import cache from '../cache'
+ * 使用方法 【
+ *     一、设置缓存
+ *         string    cache.put('k', 'string你好啊');
+ *         json      cache.put('k', { "b": "3" }, 2);
+ *         array     cache.put('k', [1, 2, 3]);
+ *         boolean   cache.put('k', true);
+ *     二、读取缓存
+ *         默认值    cache.get('k')
+ *         string    cache.get('k', '你好')
+ *         json      cache.get('k', { "a": "1" })
+ *     三、移除/清理  
+ *         移除: cache.remove('k');
+ *         清理:cache.clear(); 
+ * 】
+ * @type {String}
+ */
+module.exports = {
+	/*
+	 * 缓存前缀 
+	 */
+	postfix:'twinkly_',
+	/**
+	 * 设置缓存 
+	 * @param  {[type]} k [键名]
+	 * @param  {[type]} v [键值]
+	 * @param  {[type]} e [过期时间:单位秒]
+	 * @param  {[type]} s 异步回调
+	 */
+    set:function(k, v, e, s){
+		var that=this;
+		var e=e || 0;
+		if(e>0) e=Date.parse(new Date()) + e*1000;
+		if(v){
+			
+			if(typeof s == 'function'){
+				wx.setStorage({
+					key: k,
+					data: v,
+					success() {
+						wx.setStorageSync(that.postfix + k, e)
+						s();
+					}
+				});
+			}else{
+				wx.setStorageSync(that.postfix + k, e)
+				wx.setStorageSync(k, v)
+			}
+		}else{
+			that.remove(k);
+		}
+	},
+	/**
+	 * 获取缓存 
+	 * @param  {[type]} k   [键名]
+	 */
+    get:function(k){
+		var that=this,
+		deadtime=wx.getStorageSync(that.postfix + k),
+		data=wx.getStorageSync(k);
+		if(deadtime>0){
+			var now=Date.parse(new Date());
+			if(deadtime<now){
+				return data;
+			}else{
+				return false;
+			}
+		}else{
+			return data;
+		}
+	},
+	/**
+	 * 清理指定缓存
+	 * @return {[type]} [description]
+	 */
+    remove:function(k){
+		var that=this;
+		wx.removeStorageSync(that.postfix + k);
+		wx.removeStorageSync(k);
+	},
+	/**
+	 * 获取缓存并销毁
+	 * @param  {[type]} k   [键名]
+	 * @param  {[type]} def [获取为空时默认]
+	 */
+	getonce:function(k){
+		var that=this;
+		var data=that.get(k);
+		that.remove(k);
+		return data;
+	},
+	/**
+	 * 清理所有缓存
+	 * @return {[type]} [description]
+	 */
+    clear:function(){
+		wx.clearStorageSync();
+	}
+}

+ 618 - 0
jxtxkj/static/js/calendar.js

@@ -0,0 +1,618 @@
+/**
+ * @1900-2100区间内的公历、农历互转
+ * 遇见更好的自己
+ * 
+ * @charset UTF-8
+ * @Author  Jea杨(JJonline@JJonline.Cn)
+ * @Time    2014-7-21
+ * @Time    2016-8-13 Fixed 2033hex、Attribution Annals
+ * @Time    2016-9-25 Fixed lunar LeapMonth Param Bug
+ * @Time    2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
+ * @Version 1.0.3
+ * @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
+ * @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
+ */
+module.exports = {
+
+	/**
+	 * 农历1900-2100的润大小信息表
+	 * @Array Of Property
+	 * @return Hex
+	 */
+	lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0,
+		0x055d2, //1900-1909
+		0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, //1910-1919
+		0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, //1920-1929
+		0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, //1930-1939
+		0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, //1940-1949
+		0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, //1950-1959
+		0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, //1960-1969
+		0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, //1970-1979
+		0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, //1980-1989
+		0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, //1990-1999
+		0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, //2000-2009
+		0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, //2010-2019
+		0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, //2020-2029
+		0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, //2030-2039
+		0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, //2040-2049
+		/**Add By JJonline@JJonline.Cn**/
+		0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, //2050-2059
+		0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, //2060-2069
+		0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, //2070-2079
+		0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, //2080-2089
+		0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, //2090-2099
+		0x0d520
+	], //2100
+
+	/**
+	 * 公历每个月份的天数普通表
+	 * @Array Of Property
+	 * @return Number
+	 */
+	solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+
+	/**
+	 * 天干地支之天干速查表
+	 * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
+	 * @return Cn string
+	 */
+	Gan: ["\u7532", "\u4e59", "\u4e19", "\u4e01", "\u620a", "\u5df1", "\u5e9a", "\u8f9b", "\u58ec", "\u7678"],
+
+	/**
+	 * 天干地支之地支速查表
+	 * @Array Of Property
+	 * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
+	 * @return Cn string
+	 */
+	Zhi: ["\u5b50", "\u4e11", "\u5bc5", "\u536f", "\u8fb0", "\u5df3", "\u5348", "\u672a", "\u7533", "\u9149",
+		"\u620c", "\u4ea5"
+	],
+
+	/**
+	 * 天干地支之地支速查表<=>生肖
+	 * @Array Of Property
+	 * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
+	 * @return Cn string
+	 */
+	Animals: ["\u9f20", "\u725b", "\u864e", "\u5154", "\u9f99", "\u86c7", "\u9a6c", "\u7f8a", "\u7334", "\u9e21",
+		"\u72d7", "\u732a"
+	],
+
+	/**
+	 * 24节气速查表
+	 * @Array Of Property
+	 * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
+	 * @return Cn string
+	 */
+	solarTerm: ["\u5c0f\u5bd2", "\u5927\u5bd2", "\u7acb\u6625", "\u96e8\u6c34", "\u60ca\u86f0", "\u6625\u5206",
+		"\u6e05\u660e", "\u8c37\u96e8", "\u7acb\u590f", "\u5c0f\u6ee1", "\u8292\u79cd", "\u590f\u81f3",
+		"\u5c0f\u6691", "\u5927\u6691", "\u7acb\u79cb", "\u5904\u6691", "\u767d\u9732", "\u79cb\u5206",
+		"\u5bd2\u9732", "\u971c\u964d", "\u7acb\u51ac", "\u5c0f\u96ea", "\u5927\u96ea", "\u51ac\u81f3"
+	],
+
+	/**
+	 * 1900-2100各年的24节气日期速查表
+	 * @Array Of Property
+	 * @return 0x string For splice
+	 */
+	sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+		'97bcf97c3598082c95f8c965cc920f',
+		'97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+		'97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
+		'97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
+		'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
+		'97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
+		'97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
+		'9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
+		'97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+		'97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
+		'9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
+		'97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+		'97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
+		'9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
+		'97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+		'97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+		'9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
+		'7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+		'97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+		'9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
+		'7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+		'97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+		'9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
+		'7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+		'97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+		'9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+		'7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+		'7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+		'9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+		'7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+		'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+		'9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+		'7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
+		'7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
+		'977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+		'7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+		'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
+		'7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+		'977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+		'7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+		'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
+		'7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+		'977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+		'7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
+		'7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
+		'7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
+		'7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+		'7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+		'7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
+		'7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+		'7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
+		'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
+		'7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
+		'7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+		'7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
+		'7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
+		'7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
+		'665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+		'7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+		'7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
+		'7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'
+	],
+
+	/**
+	 * 数字转中文速查表
+	 * @Array Of Property
+	 * @trans ['日','一','二','三','四','五','六','七','八','九','十']
+	 * @return Cn string
+	 */
+	nStr1: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d",
+		"\u5341"
+	],
+
+	/**
+	 * 日期转农历称呼速查表
+	 * @Array Of Property
+	 * @trans ['初','十','廿','卅']
+	 * @return Cn string
+	 */
+	nStr2: ["\u521d", "\u5341", "\u5eff", "\u5345"],
+
+	/**
+	 * 月份转农历称呼速查表
+	 * @Array Of Property
+	 * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
+	 * @return Cn string
+	 */
+	nStr3: ["\u6b63", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341",
+		"\u51ac", "\u814a"
+	],
+
+	/**
+	 * 返回农历y年一整年的总天数
+	 * @param lunar Year
+	 * @return Number
+	 * @eg:var count = calendar.lYearDays(1987) ;//count=387
+	 */
+	lYearDays: function(y) {
+		var i, sum = 348;
+		for (i = 0x8000; i > 0x8; i >>= 1) {
+			sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0;
+		}
+		return (sum + this.leapDays(y));
+	},
+
+	/**
+	 * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
+	 * @param lunar Year
+	 * @return Number (0-12)
+	 * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
+	 */
+	leapMonth: function(y) { //闰字编码 \u95f0
+		return (this.lunarInfo[y - 1900] & 0xf);
+	},
+
+	/**
+	 * 返回农历y年闰月的天数 若该年没有闰月则返回0
+	 * @param lunar Year
+	 * @return Number (0、29、30)
+	 * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
+	 */
+	leapDays: function(y) {
+		if (this.leapMonth(y)) {
+			return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29);
+		}
+		return (0);
+	},
+
+	/**
+	 * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
+	 * @param lunar Year
+	 * @return Number (-1、29、30)
+	 * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
+	 */
+	monthDays: function(y, m) {
+		if (m > 12 || m < 1) {
+			return -1
+		} //月份参数从1至12,参数错误返回-1
+		return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29);
+	},
+
+	/**
+	 * 返回公历(!)y年m月的天数
+	 * @param solar Year
+	 * @return Number (-1、28、29、30、31)
+	 * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
+	 */
+	solarDays: function(y, m) {
+		if (m > 12 || m < 1) {
+			return -1
+		} //若参数错误 返回-1
+		var ms = m - 1;
+		if (ms == 1) { //2月份的闰平规律测算后确认返回28或29
+			return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28);
+		} else {
+			return (this.solarMonth[ms]);
+		}
+	},
+
+	/**
+	 * 农历年份转换为干支纪年
+	 * @param  lYear 农历年的年份数
+	 * @return Cn string
+	 */
+	toGanZhiYear: function(lYear) {
+		var ganKey = (lYear - 3) % 10;
+		var zhiKey = (lYear - 3) % 12;
+		if (ganKey == 0) ganKey = 10; //如果余数为0则为最后一个天干
+		if (zhiKey == 0) zhiKey = 12; //如果余数为0则为最后一个地支
+		return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1];
+
+	},
+
+	/**
+	 * 公历月、日判断所属星座
+	 * @param  cMonth [description]
+	 * @param  cDay [description]
+	 * @return Cn string
+	 */
+	toAstro: function(cMonth, cDay) {
+		var s =
+			"\u6469\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u6469\u7faf";
+		var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22];
+		return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + "\u5ea7"; //座
+	},
+
+	/**
+	 * 传入offset偏移量返回干支
+	 * @param offset 相对甲子的偏移量
+	 * @return Cn string
+	 */
+	toGanZhi: function(offset) {
+		return this.Gan[offset % 10] + this.Zhi[offset % 12];
+	},
+
+	/**
+	 * 传入公历(!)y年获得该年第n个节气的公历日期
+	 * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
+	 * @return day Number
+	 * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
+	 */
+	getTerm: function(y, n) {
+		if (y < 1900 || y > 2100) {
+			return -1;
+		}
+		if (n < 1 || n > 24) {
+			return -1;
+		}
+		var _table = this.sTermInfo[y - 1900];
+		var _info = [
+			parseInt('0x' + _table.substr(0, 5)).toString(),
+			parseInt('0x' + _table.substr(5, 5)).toString(),
+			parseInt('0x' + _table.substr(10, 5)).toString(),
+			parseInt('0x' + _table.substr(15, 5)).toString(),
+			parseInt('0x' + _table.substr(20, 5)).toString(),
+			parseInt('0x' + _table.substr(25, 5)).toString()
+		];
+		var _calday = [
+			_info[0].substr(0, 1),
+			_info[0].substr(1, 2),
+			_info[0].substr(3, 1),
+			_info[0].substr(4, 2),
+
+			_info[1].substr(0, 1),
+			_info[1].substr(1, 2),
+			_info[1].substr(3, 1),
+			_info[1].substr(4, 2),
+
+			_info[2].substr(0, 1),
+			_info[2].substr(1, 2),
+			_info[2].substr(3, 1),
+			_info[2].substr(4, 2),
+
+			_info[3].substr(0, 1),
+			_info[3].substr(1, 2),
+			_info[3].substr(3, 1),
+			_info[3].substr(4, 2),
+
+			_info[4].substr(0, 1),
+			_info[4].substr(1, 2),
+			_info[4].substr(3, 1),
+			_info[4].substr(4, 2),
+
+			_info[5].substr(0, 1),
+			_info[5].substr(1, 2),
+			_info[5].substr(3, 1),
+			_info[5].substr(4, 2),
+		];
+		return parseInt(_calday[n - 1]);
+	},
+
+	/**
+	 * 传入农历数字月份返回汉语通俗表示法
+	 * @param lunar month
+	 * @return Cn string
+	 * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
+	 */
+	toChinaMonth: function(m) { // 月 => \u6708
+		if (m > 12 || m < 1) {
+			return -1
+		} //若参数错误 返回-1
+		var s = this.nStr3[m - 1];
+		s += "\u6708"; //加上月字
+		return s;
+	},
+
+	/**
+	 * 传入农历日期数字返回汉字表示法
+	 * @param lunar day
+	 * @return Cn string
+	 * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
+	 */
+	toChinaDay: function(d) { //日 => \u65e5
+		var s;
+		switch (d) {
+			case 10:
+				s = '\u521d\u5341';
+				break;
+			case 20:
+				s = '\u4e8c\u5341';
+				break;
+				break;
+			case 30:
+				s = '\u4e09\u5341';
+				break;
+				break;
+			default:
+				s = this.nStr2[Math.floor(d / 10)];
+				s += this.nStr1[d % 10];
+		}
+		return (s);
+	},
+
+	/**
+	 * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
+	 * @param y year
+	 * @return Cn string
+	 * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
+	 */
+	getAnimal: function(y) {
+		return this.Animals[(y - 4) % 12]
+	},
+
+	/**
+	 * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
+	 * @param y  solar year
+	 * @param m  solar month
+	 * @param d  solar day
+	 * @return JSON object
+	 * @eg:console.log(calendar.solar2lunar(1987,11,01));
+	 */
+	solar2lunar: function(y, m, d) { //参数区间1900.1.31~2100.12.31
+		//年份限定、上限
+		if (y < 1900 || y > 2100) {
+			return -1; // undefined转换为数字变为NaN
+		}
+		//公历传参最下限
+		if (y == 1900 && m == 1 && d < 31) {
+			return -1;
+		}
+		//未传参  获得当天
+		if (!y) {
+			var objDate = new Date();
+		} else {
+			var objDate = new Date(y, parseInt(m) - 1, d)
+		}
+		var i, leap = 0,
+			temp = 0;
+		//修正ymd参数
+		var y = objDate.getFullYear(),
+			m = objDate.getMonth() + 1,
+			d = objDate.getDate();
+		var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0,
+			31)) / 86400000;
+		for (i = 1900; i < 2101 && offset > 0; i++) {
+			temp = this.lYearDays(i);
+			offset -= temp;
+		}
+		if (offset < 0) {
+			offset += temp;
+			i--;
+		}
+
+		//是否今天
+		var isTodayObj = new Date(),
+			isToday = false;
+		if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
+			isToday = true;
+		}
+		//星期几
+		var nWeek = objDate.getDay(),
+			cWeek = this.nStr1[nWeek];
+		//数字表示周几顺应天朝周一开始的惯例
+		if (nWeek == 0) {
+			nWeek = 7;
+		}
+		//农历年
+		var year = i;
+		var leap = this.leapMonth(i); //闰哪个月
+		var isLeap = false;
+
+		//效验闰月
+		for (i = 1; i < 13 && offset > 0; i++) {
+			//闰月
+			if (leap > 0 && i == (leap + 1) && isLeap == false) {
+				--i;
+				isLeap = true;
+				temp = this.leapDays(year); //计算农历闰月天数
+			} else {
+				temp = this.monthDays(year, i); //计算农历普通月天数
+			}
+			//解除闰月
+			if (isLeap == true && i == (leap + 1)) {
+				isLeap = false;
+			}
+			offset -= temp;
+		}
+		// 闰月导致数组下标重叠取反
+		if (offset == 0 && leap > 0 && i == leap + 1) {
+			if (isLeap) {
+				isLeap = false;
+			} else {
+				isLeap = true;
+				--i;
+			}
+		}
+		if (offset < 0) {
+			offset += temp;
+			--i;
+		}
+		//农历月
+		var month = i;
+		//农历日
+		var day = offset + 1;
+		//天干地支处理
+		var sm = m - 1;
+		var gzY = this.toGanZhiYear(year);
+
+		// 当月的两个节气
+		// bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
+		var firstNode = this.getTerm(y, (m * 2 - 1)); //返回当月「节」为几日开始
+		var secondNode = this.getTerm(y, (m * 2)); //返回当月「节」为几日开始
+
+		// 依据12节气修正干支月
+		var gzM = this.toGanZhi((y - 1900) * 12 + m + 11);
+		if (d >= firstNode) {
+			gzM = this.toGanZhi((y - 1900) * 12 + m + 12);
+		}
+
+		//传入的日期的节气与否
+		var isTerm = false;
+		var Term = null;
+		if (firstNode == d) {
+			isTerm = true;
+			Term = this.solarTerm[m * 2 - 2];
+		}
+		if (secondNode == d) {
+			isTerm = true;
+			Term = this.solarTerm[m * 2 - 1];
+		}
+		//日柱 当月一日与 1900/1/1 相差天数
+		var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10;
+		var gzD = this.toGanZhi(dayCyclical + d - 1);
+		//该日期所属的星座
+		var astro = this.toAstro(m, d);
+
+		return {
+			'lYear': year,
+			'lMonth': month,
+			'lDay': day,
+			'Animal': this.getAnimal(year),
+			'IMonthCn': (isLeap ? "\u95f0" : '') + this.toChinaMonth(month),
+			'IDayCn': this.toChinaDay(day),
+			'cYear': y,
+			'cMonth': m,
+			'cDay': d,
+			'gzYear': gzY,
+			'gzMonth': gzM,
+			'gzDay': gzD,
+			'isToday': isToday,
+			'isLeap': isLeap,
+			'nWeek': nWeek,
+			'ncWeek': "\u661f\u671f" + cWeek,
+			'isTerm': isTerm,
+			'Term': Term,
+			'astro': astro
+		};
+	},
+
+	/**
+	 * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
+	 * @param y  lunar year
+	 * @param m  lunar month
+	 * @param d  lunar day
+	 * @param isLeapMonth  lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
+	 * @return JSON object
+	 * @eg:console.log(calendar.lunar2solar(1987,9,10));
+	 */
+	lunar2solar: function(y, m, d, isLeapMonth) { //参数区间1900.1.31~2100.12.1
+		var isLeapMonth = !!isLeapMonth;
+		y = parseInt(y)
+		m = parseInt(m)
+		d = parseInt(d)
+		var leapOffset = 0;
+		var leapMonth = this.leapMonth(y);
+		var leapDay = this.leapDays(y);
+		if (isLeapMonth && (leapMonth != m)) {
+			return -1;
+		} //传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
+		if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) {
+			return -1;
+		} //超出了最大极限值
+		var day = this.monthDays(y, m);
+		var _day = day;
+		//bugFix 2016-9-25
+		//if month is leap, _day use leapDays method
+		if (isLeapMonth) {
+			_day = this.leapDays(y, m);
+		}
+		if (y < 1900 || y > 2100 || d > _day) {
+			return -1;
+		} //参数合法性效验
+
+		//计算农历的时间差
+		var offset = 0;
+		for (var i = 1900; i < y; i++) {
+			offset += this.lYearDays(i);
+		}
+		var leap = 0,
+			isAdd = false;
+		for (var i = 1; i < m; i++) {
+			leap = this.leapMonth(y);
+			if (!isAdd) { //处理闰月
+				if (leap <= i && leap > 0) {
+					offset += this.leapDays(y);
+					isAdd = true;
+				}
+			}
+			offset += this.monthDays(y, i);
+		}
+		//转换闰月农历 需补充该年闰月的前一个月的时差
+		if (isLeapMonth) {
+			offset += day;
+		}
+		//1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
+		var stmap = Date.UTC(1900, 1, 30, 0, 0, 0);
+		var calObj = new Date((offset + d - 31) * 86400000 + stmap);
+		var cY = calObj.getUTCFullYear();
+		var cM = calObj.getUTCMonth() + 1;
+		var cD = calObj.getUTCDate();
+
+		return this.solar2lunar(cY, cM, cD);
+	}
+};

+ 259 - 0
jxtxkj/static/js/encrypt.js

@@ -0,0 +1,259 @@
+module.exports = {
+	chrsz:8,
+	hexcase:0,
+	b64pad:'',
+	/**
+	 * 哈希算法加密
+	 * @param {string}     str:要加密的数据
+	 * @param {string}     raw:方式
+	 */
+	sha1:function(str, raw){
+		str = this.utf16to8(str);
+		if (raw == true) {
+			return this.str_sha1(str);
+		} else {
+			return this.hex_sha1(str);
+		}
+	},
+	md5:function md5(s){ 
+	   return this.binl2hex(this.core_md5(this.str2binl(s), s.length * this.chrsz));
+	},
+	utf16to8:function(str){
+		var out, i, len, c;
+		out = '';
+		len = str.length;
+		for (i = 0; i < len; i++) {
+			c = str.charCodeAt(i);
+			if ((c >= 0x0001) && (c <= 0x007F)) {
+				out += str.charAt(i);
+			} else if (c > 0x07FF) {
+				out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
+				out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
+				out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
+			} else {
+				out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
+				out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
+			}
+		}
+		return out;
+	},
+	hex_sha1:function (s) {
+		return this.binb2hex(this.core_sha1(this.str2binb(s), s.length * this.chrsz));
+	},
+	str_sha1:function (s) {
+		return this.binb2str(this.core_sha1(this.str2binb(s), s.length * this.chrsz));
+	},
+	binb2hex:function(binarray) {
+		var hex_tab = this.hexcase ? '0123456789ABCDEF': '0123456789abcdef';
+		var str = "";
+		for (var i = 0; i < binarray.length * 4; i++) {
+			str += hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xF) + hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xF);
+		}
+		return str;
+	},
+	binl2hex:function (binarray){
+		var hex_tab = this.hexcase ? '0123456789ABCDEF' : '0123456789abcdef';
+		var str = "";
+		for(var i = 0; i < binarray.length * 4; i++){
+			str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
+		}
+		return str;
+	},
+	binb2str:function (bin) {
+		var str = "";
+		var mask = (1 << this.chrsz) - 1;
+		for (var i = 0; i < bin.length * 32; i += this.chrsz) str += String.fromCharCode((bin[i >> 5] >>> (32 - this.chrsz - i % 32)) & mask);
+		return str;
+	},
+	binl2str:function (bin){
+		var str = "";
+		var mask = (1 << this.chrsz) - 1;
+		for(var i = 0; i < bin.length * 32; i += this.chrsz) str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
+		return str;
+	},
+	binl2b64:function (binarray){
+		var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+		var str = '';
+		for(var i = 0; i < binarray.length * 4; i += 3){
+		var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
+					| (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
+					|  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
+			for(var j = 0; j < 4; j++){
+				if(i * 8 + j * 6 > binarray.length * 32) str += this.b64pad;
+				else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
+			}
+		}
+		return str;
+	},
+	str2binb:function (str) {
+		var bin = Array();
+		var mask = (1 << this.chrsz) - 1;
+		for (var i = 0; i < str.length * this.chrsz; i += this.chrsz) bin[i >> 5] |= (str.charCodeAt(i / this.chrsz) & mask) << (32 - this.chrsz - i % 32);
+		return bin;
+		
+	},
+	str2binl:function (str){
+		var bin = Array();
+		var mask = (1 << this.chrsz) - 1;
+		for(var i = 0; i < str.length * this.chrsz; i += this.chrsz) bin[i>>5] |= (str.charCodeAt(i / this.chrsz) & mask) << (i%32);
+		return bin;
+	},
+	safe_add:function (x, y) {
+		var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+		var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+		return (msw << 16) | (lsw & 0xFFFF);
+		
+	},
+	rol:function (num, cnt) {
+		return (num << cnt) | (num >>> (32 - cnt));
+	},
+	sha1_ft:function (t, b, c, d) {
+		if (t < 20) return (b & c) | ((~b) & d);
+		if (t < 40) return b ^ c ^ d;
+		if (t < 60) return (b & c) | (b & d) | (c & d);
+		return b ^ c ^ d;
+	},
+	sha1_kt:function (t) {
+		return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514;
+	},
+	core_sha1:function (x, len) {
+		x[len >> 5] |= 0x80 << (24 - len % 32);
+		x[((len + 64 >> 9) << 4) + 15] = len;
+		var w = Array(80);
+		var a = 1732584193;
+		var b = -271733879;
+		var c = -1732584194;
+		var d = 271733878;
+		var e = -1009589776;
+		for (var i = 0; i < x.length; i += 16) {
+			var olda = a;
+			var oldb = b;
+			var oldc = c;
+			var oldd = d;
+			var olde = e;
+
+			for (var j = 0; j < 80; j++) {
+				if (j < 16) w[j] = x[i + j];
+				else w[j] = this.rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
+				var t = this.safe_add(this.safe_add(this.rol(a, 5), this.sha1_ft(j, b, c, d)), this.safe_add(this.safe_add(e, w[j]), this.sha1_kt(j)));
+				e = d;
+				d = c;
+				c = this.rol(b, 30);
+				b = a;
+				a = t;
+			}
+
+			a = this.safe_add(a, olda);
+			b = this.safe_add(b, oldb);
+			c = this.safe_add(c, oldc);
+			d = this.safe_add(d, oldd);
+			e = this.safe_add(e, olde);
+		}
+		return Array(a, b, c, d, e);
+	},
+	core_md5:function (x, len){
+		x[len >> 5] |= 0x80 << ((len) % 32);
+		x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+		var a =  1732584193;
+		var b = -271733879;
+		var c = -1732584194;
+		var d =  271733878;
+
+		for(var i = 0; i < x.length; i += 16){
+			var olda = a;
+			var oldb = b;
+			var oldc = c;
+			var oldd = d;
+
+			a = this.md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
+			d = this.md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
+			c = this.md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
+			b = this.md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
+			a = this.md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
+			d = this.md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
+			c = this.md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
+			b = this.md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
+			a = this.md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
+			d = this.md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
+			c = this.md5_ff(c, d, a, b, x[i+10], 17, -42063);
+			b = this.md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
+			a = this.md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
+			d = this.md5_ff(d, a, b, c, x[i+13], 12, -40341101);
+			c = this.md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
+			b = this.md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
+
+			a = this.md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
+			d = this.md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
+			c = this.md5_gg(c, d, a, b, x[i+11], 14,  643717713);
+			b = this.md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
+			a = this.md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
+			d = this.md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
+			c = this.md5_gg(c, d, a, b, x[i+15], 14, -660478335);
+			b = this.md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
+			a = this.md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
+			d = this.md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
+			c = this.md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
+			b = this.md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
+			a = this.md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
+			d = this.md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
+			c = this.md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
+			b = this.md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
+
+			a = this.md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
+			d = this.md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
+			c = this.md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
+			b = this.md5_hh(b, c, d, a, x[i+14], 23, -35309556);
+			a = this.md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
+			d = this.md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
+			c = this.md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
+			b = this.md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
+			a = this.md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
+			d = this.md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
+			c = this.md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
+			b = this.md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
+			a = this.md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
+			d = this.md5_hh(d, a, b, c, x[i+12], 11, -421815835);
+			c = this.md5_hh(c, d, a, b, x[i+15], 16,  530742520);
+			b = this.md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
+
+			a = this.md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
+			d = this.md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
+			c = this.md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
+			b = this.md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
+			a = this.md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
+			d = this.md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
+			c = this.md5_ii(c, d, a, b, x[i+10], 15, -1051523);
+			b = this.md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
+			a = this.md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
+			d = this.md5_ii(d, a, b, c, x[i+15], 10, -30611744);
+			c = this.md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
+			b = this.md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
+			a = this.md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
+			d = this.md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
+			c = this.md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
+			b = this.md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
+
+			a = this.safe_add(a, olda);
+			b = this.safe_add(b, oldb);
+			c = this.safe_add(c, oldc);
+			d = this.safe_add(d, oldd);
+		}
+		return Array(a, b, c, d);
+	},
+	md5_cmn:function (q, a, b, x, s, t){
+		return this.safe_add(this.rol(this.safe_add(this.safe_add(a, q), this.safe_add(x, t)), s),b);
+	},
+	md5_ff:function (a, b, c, d, x, s, t){
+		return this.md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
+	},
+	md5_gg:function (a, b, c, d, x, s, t){
+		return this.md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
+	},
+	md5_hh:function (a, b, c, d, x, s, t){
+		return this.md5_cmn(b ^ c ^ d, a, b, x, s, t);
+	},
+	md5_ii:function (a, b, c, d, x, s, t){
+		return this.md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
+	}
+}

+ 110 - 0
jxtxkj/static/js/math.js

@@ -0,0 +1,110 @@
+module.exports = {
+	/**
+	 * +
+	 * @param arg1
+	 * @param arg2
+	 * @returns {number}
+	 */
+	add: function(arg1, arg2) {
+		var r1, r2, m;
+		try {
+			r1 = arg1.toString().split(".")[1].length
+		} catch (e) {
+			r1 = 0
+		}
+		try {
+			r2 = arg2.toString().split(".")[1].length
+		} catch (e) {
+			r2 = 0
+		}
+		m = Math.pow(10, Math.max(r1, r2))
+		return (arg1 * m + arg2 * m) / m
+	},
+	/**
+	 * -
+	 * @param arg1
+	 * @param arg2
+	 * @returns {number}
+	 */
+	sub: function(arg1, arg2) {
+		var r1, r2, m, n;
+		try {
+			r1 = arg1.toString().split(".")[1].length
+		} catch (e) {
+			r1 = 0
+		}
+		try {
+			r2 = arg2.toString().split(".")[1].length
+		} catch (e) {
+			r2 = 0
+		}
+		m = Math.pow(10, Math.max(r1, r2));
+		n = (r1 >= r2) ? r1 : r2;
+		return ((arg1 * m - arg2 * m) / m).toFixed(n);
+	},
+	/**
+	 *  *
+	 * @param arg1
+	 * @param arg2
+	 * @returns {number}
+	 */
+	mul: function(arg1, arg2) {
+		var m = 0,
+			s1 = arg1.toString(),
+			s2 = arg2.toString();
+		try {
+			m += s1.split(".")[1].length
+		} catch (e) {}
+		try {
+			m += s2.split(".")[1].length
+		} catch (e) {}
+		return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
+	},
+	/**
+	 * /
+	 * @param arg1
+	 * @param arg2
+	 * @returns {number}
+	 */
+	div: function(arg1, arg2) {
+		var t1 = 0,
+			t2 = 0,
+			r1, r2;
+		try {
+			t1 = arg1.toString().split(".")[1].length
+		} catch (e) {}
+		try {
+			t2 = arg2.toString().split(".")[1].length
+		} catch (e) {}
+		r1 = Number(arg1.toString().replace(".", ""))
+		r2 = Number(arg2.toString().replace(".", ""))
+		return this.mul((r1 / r2), Math.pow(10, t2 - t1));
+	},
+	/**
+	 * 保留有效小数位 四舍五入,解决toFixed方法bug
+	 * @param num 需要操作的数字
+	 * @param decimal 保留小数的位数
+	 * @returns {string}
+	 */
+	toFixed: function(num, decimal) {
+		if(typeof decimal == 'undefined'){
+			decimal = 2;
+		}
+		var times = Math.pow(10, decimal)
+		var des = num * times + 0.5
+		des = (parseInt(des, 10) / times).toString()
+		if(decimal > 0){
+			var arr = des.split('.')
+			var len = decimal;
+			if(arr.length == 1){
+				des += '.';
+			}else{
+				len = decimal - arr[1].length;
+			}
+			for (let i = 1; i <= len; i++) {
+				des += '0';
+			}
+		}
+		return des;
+	},
+};

+ 742 - 0
jxtxkj/static/js/qqmap-wx-jssdk.js

@@ -0,0 +1,742 @@
+/**
+ * 微信小程序JavaScriptSDK
+ * 地图
+ * 苍源怡家
+ * @version 1.1
+ * @date 2019-01-20
+ */
+
+var ERROR_CONF = {
+    KEY_ERR: 311,
+    KEY_ERR_MSG: 'key格式错误',
+    PARAM_ERR: 310,
+    PARAM_ERR_MSG: '请求参数信息有误',
+    SYSTEM_ERR: 600,
+    SYSTEM_ERR_MSG: '系统错误',
+    WX_ERR_CODE: 1000,
+    WX_OK_CODE: 200
+};
+var BASE_URL = 'https://apis.map.qq.com/ws/';
+var URL_SEARCH = BASE_URL + 'place/v1/search';
+var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion';
+var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/';
+var URL_CITY_LIST = BASE_URL + 'district/v1/list';
+var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren';
+var URL_DISTANCE = BASE_URL + 'distance/v1/';
+var EARTH_RADIUS = 6378136.49;
+var Utils = {
+    /**
+     * 得到终点query字符串
+     * @param {Array|String} 检索数据
+     */
+    location2query(data) {
+        if (typeof data == 'string') {
+            return data;
+        }
+        var query = '';
+        for (var i = 0; i < data.length; i++) {
+            var d = data[i];
+            if (!!query) {
+                query += ';';
+            }
+            if (d.location) {
+                query = query + d.location.lat + ',' + d.location.lng;
+            }
+            if (d.latitude && d.longitude) {
+                query = query + d.latitude + ',' + d.longitude;
+            }
+        }
+        return query;
+    },
+
+    /**
+     * 计算角度
+     */
+    rad(d) {
+      return d * Math.PI / 180.0;
+    },  
+    /**
+     * 处理终点location数组
+     * @return 返回终点数组
+     */
+    getEndLocation(location){
+      var to = location.split(';');
+      var endLocation = [];
+      for (var i = 0; i < to.length; i++) {
+        endLocation.push({
+          lat: parseFloat(to[i].split(',')[0]),
+          lng: parseFloat(to[i].split(',')[1])
+        })
+      }
+      return endLocation;
+    },
+
+    /**
+     * 计算两点间直线距离
+     * @param a 表示纬度差
+     * @param b 表示经度差
+     * @return 返回的是距离,单位m
+     */
+    getDistance(latFrom, lngFrom, latTo, lngTo) {
+      var radLatFrom = this.rad(latFrom);
+      var radLatTo = this.rad(latTo);
+      var a = radLatFrom - radLatTo;
+      var b = this.rad(lngFrom) - this.rad(lngTo);
+      var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2)));
+      distance = distance * EARTH_RADIUS;
+      distance = Math.round(distance * 10000) / 10000;
+      return parseFloat(distance.toFixed(0));
+    },
+    /**
+     * 使用微信接口进行定位
+     */
+    getWXLocation(success, fail, complete) {
+        wx.getLocation({
+            type: 'gcj02',
+            success: success,
+            fail: fail,
+            complete: complete
+        });
+    },
+
+    /**
+     * 获取location参数
+     */
+    getLocationParam(location) {
+        if (typeof location == 'string') {
+            var locationArr = location.split(',');
+            if (locationArr.length === 2) {
+                location = {
+                    latitude: location.split(',')[0],
+                    longitude: location.split(',')[1]
+                };
+            } else {
+                location = {};
+            }
+        }
+        return location;
+    },
+
+    /**
+     * 回调函数默认处理
+     */
+    polyfillParam(param) {
+        param.success = param.success || function () { };
+        param.fail = param.fail || function () { };
+        param.complete = param.complete || function () { };
+    },
+
+    /**
+     * 验证param对应的key值是否为空
+     * 
+     * @param {Object} param 接口参数
+     * @param {String} key 对应参数的key
+     */
+    checkParamKeyEmpty(param, key) {
+        if (!param[key]) {
+            var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'参数格式有误');
+            param.fail(errconf);
+            param.complete(errconf);
+            return true;
+        }
+        return false;
+    },
+
+    /**
+     * 验证参数中是否存在检索词keyword
+     * 
+     * @param {Object} param 接口参数
+     */
+    checkKeyword(param){
+        return !this.checkParamKeyEmpty(param, 'keyword');
+    },
+
+    /**
+     * 验证location值
+     * 
+     * @param {Object} param 接口参数
+     */
+    checkLocation(param) {
+        var location = this.getLocationParam(param.location);
+        if (!location || !location.latitude || !location.longitude) {
+            var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误');
+            param.fail(errconf);
+            param.complete(errconf);
+            return false;
+        }
+        return true;
+    },
+
+    /**
+     * 构造错误数据结构
+     * @param {Number} errCode 错误码
+     * @param {Number} errMsg 错误描述
+     */
+    buildErrorConfig(errCode, errMsg) {
+        return {
+            status: errCode,
+            message: errMsg
+        };
+    },
+
+    /**
+     * 
+     * 数据处理函数
+     * 根据传入参数不同处理不同数据
+     * @param {String} feature 功能名称
+     * search 地点搜索
+     * suggest关键词提示
+     * reverseGeocoder逆地址解析
+     * geocoder地址解析
+     * getCityList获取城市列表:父集
+     * getDistrictByCityId获取区县列表:子集
+     * calculateDistance距离计算
+     * @param {Object} param 接口参数
+     * @param {Object} data 数据
+     */
+    handleData(param,data,feature){
+      if (feature === 'search') {
+        var searchResult = data.data;
+        var searchSimplify = [];
+        for (var i = 0; i < searchResult.length; i++) {
+          searchSimplify.push({
+            id: searchResult[i].id || null,
+            title: searchResult[i].title || null,
+            latitude: searchResult[i].location && searchResult[i].location.lat || null,
+            longitude: searchResult[i].location && searchResult[i].location.lng || null,
+            address: searchResult[i].address || null,
+            category: searchResult[i].category || null,
+            tel: searchResult[i].tel || null,
+            adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null,
+            city: searchResult[i].ad_info && searchResult[i].ad_info.city || null,
+            district: searchResult[i].ad_info && searchResult[i].ad_info.district || null,
+            province: searchResult[i].ad_info && searchResult[i].ad_info.province || null
+          })
+        }
+        param.success(data, {
+          searchResult: searchResult,
+          searchSimplify: searchSimplify
+        })
+      } else if (feature === 'suggest') {
+        var suggestResult = data.data;
+        var suggestSimplify = [];
+        for (var i = 0; i < suggestResult.length; i++) {
+          suggestSimplify.push({
+            adcode: suggestResult[i].adcode || null,
+            address: suggestResult[i].address || null,
+            category: suggestResult[i].category || null,
+            city: suggestResult[i].city || null,
+            district: suggestResult[i].district || null,
+            id: suggestResult[i].id || null,
+            latitude: suggestResult[i].location && suggestResult[i].location.lat || null,
+            longitude: suggestResult[i].location && suggestResult[i].location.lng || null,
+            province: suggestResult[i].province || null,
+            title: suggestResult[i].title || null,
+            type: suggestResult[i].type || null
+          })
+        }
+        param.success(data, {
+          suggestResult: suggestResult,
+          suggestSimplify: suggestSimplify
+          })
+      } else if (feature === 'reverseGeocoder') {
+        var reverseGeocoderResult = data.result;
+        var reverseGeocoderSimplify = {
+          address: reverseGeocoderResult.address || null,
+          latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null,
+          longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null,
+          adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null,
+          city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null,
+          district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null,
+          nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null,
+          province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null,
+          street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null,
+          street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null,
+          recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null,
+          rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null
+        };
+        if (reverseGeocoderResult.pois) {//判断是否返回周边poi
+          var pois = reverseGeocoderResult.pois;
+          var poisSimplify = [];
+          for (var i = 0;i < pois.length;i++) {
+            poisSimplify.push({
+              id: pois[i].id || null,
+              title: pois[i].title || null,
+              latitude: pois[i].location && pois[i].location.lat || null,
+              longitude: pois[i].location && pois[i].location.lng || null,
+              address: pois[i].address || null,
+              category: pois[i].category || null,
+              adcode: pois[i].ad_info && pois[i].ad_info.adcode || null,
+              city: pois[i].ad_info && pois[i].ad_info.city || null,
+              district: pois[i].ad_info && pois[i].ad_info.district || null,
+              province: pois[i].ad_info && pois[i].ad_info.province || null
+            })
+          }
+          param.success(data,{
+            reverseGeocoderResult: reverseGeocoderResult,
+            reverseGeocoderSimplify: reverseGeocoderSimplify,
+            pois: pois,
+            poisSimplify: poisSimplify
+          })
+        } else {
+          param.success(data, {
+            reverseGeocoderResult: reverseGeocoderResult,
+            reverseGeocoderSimplify: reverseGeocoderSimplify
+          })
+        }
+      } else if (feature === 'geocoder') {
+        var geocoderResult = data.result;
+        var geocoderSimplify = {
+          title: geocoderResult.title || null,
+          latitude: geocoderResult.location && geocoderResult.location.lat || null,
+          longitude: geocoderResult.location && geocoderResult.location.lng || null,
+          adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null,
+          province: geocoderResult.address_components && geocoderResult.address_components.province || null,
+          city: geocoderResult.address_components && geocoderResult.address_components.city || null,
+          district: geocoderResult.address_components && geocoderResult.address_components.district || null,
+          street: geocoderResult.address_components && geocoderResult.address_components.street || null,
+          street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null,
+          level: geocoderResult.level || null
+        };
+        param.success(data,{
+          geocoderResult: geocoderResult,
+          geocoderSimplify: geocoderSimplify
+        });
+      } else if (feature === 'getCityList') {
+        var provinceResult = data.result[0];
+        var cityResult = data.result[1];
+        var districtResult = data.result[2];
+        param.success(data,{
+          provinceResult: provinceResult,
+          cityResult: cityResult,
+          districtResult: districtResult
+        });
+      } else if (feature === 'getDistrictByCityId') {
+        var districtByCity = data.result[0];
+        param.success(data, districtByCity);
+      } else if (feature === 'calculateDistance') {
+        var calculateDistanceResult = data.result.elements;  
+        var distance = [];
+        for (var i = 0; i < calculateDistanceResult.length; i++){
+          distance.push(calculateDistanceResult[i].distance);
+        }   
+        param.success(data, {
+          calculateDistanceResult: calculateDistanceResult,
+          distance: distance
+          });
+      } else {
+        param.success(data);
+      }
+    },
+
+    /**
+     * 构造微信请求参数,公共属性处理
+     * 
+     * @param {Object} param 接口参数
+     * @param {Object} param 配置项
+     * @param {String} feature 方法名
+     */
+    buildWxRequestConfig(param, options, feature) {
+        var that = this;
+        options.header = { "content-type": "application/json" };
+        options.method = 'GET';
+        options.success = function (res) {
+            var data = res.data;
+            if (data.status === 0) {
+              that.handleData(param, data, feature);
+            } else {
+                param.fail(data);
+            }
+        };
+        options.fail = function (res) {
+            res.statusCode = ERROR_CONF.WX_ERR_CODE;
+            param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+        };
+        options.complete = function (res) {
+            var statusCode = +res.statusCode;
+            switch(statusCode) {
+                case ERROR_CONF.WX_ERR_CODE: {
+                    param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+                    break;
+                }
+                case ERROR_CONF.WX_OK_CODE: {
+                    var data = res.data;
+                    if (data.status === 0) {
+                        param.complete(data);
+                    } else {
+                        param.complete(that.buildErrorConfig(data.status, data.message));
+                    }
+                    break;
+                }
+                default:{
+                    param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG));
+                }
+
+            }
+        };
+        return options;
+    },
+
+    /**
+     * 处理用户参数是否传入坐标进行不同的处理
+     */
+    locationProcess(param, locationsuccess, locationfail, locationcomplete) {
+        var that = this;
+        locationfail = locationfail || function (res) {
+            res.statusCode = ERROR_CONF.WX_ERR_CODE;
+            param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+        };
+        locationcomplete = locationcomplete || function (res) {
+            if (res.statusCode == ERROR_CONF.WX_ERR_CODE) {
+                param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+            }
+        };
+        if (!param.location) {
+            that.getWXLocation(locationsuccess, locationfail, locationcomplete);
+        } else if (that.checkLocation(param)) {
+            var location = Utils.getLocationParam(param.location);
+            locationsuccess(location);
+        }
+    }
+};
+
+
+class QQMapWX {
+
+    /**
+     * 构造函数
+     * 
+     * @param {Object} options 接口参数,key 为必选参数
+     */
+    constructor(options) {
+        if (!options.key) {
+            throw Error('key值不能为空');
+        }
+        this.key = options.key;
+    };
+
+    /**
+     * POI周边检索
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 参数对象结构可以参考
+     * @see http://lbs.qq.com/webservice_v1/guide-search.html
+     */
+    search(options) {
+        var that = this;
+        options = options || {};
+
+        Utils.polyfillParam(options);
+
+        if (!Utils.checkKeyword(options)) {
+            return;
+        }
+
+        var requestParam = {
+            keyword: options.keyword,
+            orderby: options.orderby || '_distance',
+            page_size: options.page_size || 10,
+            page_index: options.page_index || 1,
+            output: 'json',
+            key: that.key
+        };
+
+        if (options.address_format) {
+            requestParam.address_format = options.address_format;
+        }
+
+        if (options.filter) {
+            requestParam.filter = options.filter;
+        }
+
+        var distance = options.distance || "1000";
+        var auto_extend = options.auto_extend || 1;
+        var region = null;
+        var rectangle = null;
+
+        //判断城市限定参数
+        if (options.region) {
+          region = options.region;
+        }
+
+        //矩形限定坐标(暂时只支持字符串格式)
+        if (options.rectangle) {
+          rectangle = options.rectangle;
+        }
+
+        var locationsuccess = function (result) {        
+          if (region && !rectangle) {
+            //城市限定参数拼接
+            requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")";
+          } else if (rectangle && !region) {
+            //矩形搜索
+            requestParam.boundary = "rectangle(" + rectangle + ")";
+            } else {
+              requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")";
+            }            
+            wx.request(Utils.buildWxRequestConfig(options, {
+                url: URL_SEARCH,
+                data: requestParam
+            }, 'search'));
+        };
+        Utils.locationProcess(options, locationsuccess);
+    };
+
+    /**
+     * sug模糊检索
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 参数对象结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-suggestion.html
+     */
+    getSuggestion(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+
+        if (!Utils.checkKeyword(options)) {
+            return;
+        }
+
+        var requestParam = {
+            keyword: options.keyword,
+            region: options.region || '全国',
+            region_fix: options.region_fix || 0,
+            policy: options.policy || 0,
+            page_size: options.page_size || 10,//控制显示条数
+            page_index: options.page_index || 1,//控制页数
+            get_subpois : options.get_subpois || 0,//返回子地点
+            output: 'json',
+            key: that.key
+        };
+        //长地址
+        if (options.address_format) {
+          requestParam.address_format = options.address_format;
+        }
+        //过滤
+        if (options.filter) {
+          requestParam.filter = options.filter;
+        }
+        //排序
+        if (options.location) {
+          var locationsuccess = function (result) {
+            requestParam.location = result.latitude + ',' + result.longitude;
+            wx.request(Utils.buildWxRequestConfig(options, {
+              url: URL_SUGGESTION,
+              data: requestParam
+            }, "suggest"));      
+          };
+          Utils.locationProcess(options, locationsuccess);
+        } else {
+          wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_SUGGESTION,
+            data: requestParam
+          }, "suggest"));      
+        } 
+    };
+
+    /**
+     * 逆地址解析
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 请求参数结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-gcoder.html
+     */
+    reverseGeocoder(options) {
+      console.log(options)
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+        var requestParam = {
+            coord_type: options.coord_type || 5,
+            get_poi: options.get_poi || 0,
+            output: 'json',
+            key: that.key
+        };
+        if (options.poi_options) {
+            requestParam.poi_options = options.poi_options
+        }
+
+        var locationsuccess = function (result) {
+            requestParam.location = result.latitude + ',' + result.longitude;
+            wx.request(Utils.buildWxRequestConfig(options, {
+                url: URL_GET_GEOCODER,
+                data: requestParam
+            }, 'reverseGeocoder'));
+        };
+        Utils.locationProcess(options, locationsuccess);
+    };
+
+    /**
+     * 地址解析
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 请求参数结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-geocoder.html
+     */
+    geocoder(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+        if (Utils.checkParamKeyEmpty(options, 'address')) {
+            return;
+        }
+
+        var requestParam = {
+            address: options.address,
+            output: 'json',
+            key: that.key
+        };
+
+        //城市限定
+        if (options.region) {
+          requestParam.region = options.region;
+        }
+
+        wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_GET_GEOCODER,
+            data: requestParam
+        },'geocoder'));
+    };
+
+
+    /**
+     * 获取城市列表
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 请求参数结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-region.html
+     */
+    getCityList(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+        var requestParam = {
+            output: 'json',
+            key: that.key
+        };
+
+        wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_CITY_LIST,
+            data: requestParam
+        },'getCityList'));
+    };
+
+    /**
+     * 获取对应城市ID的区县列表
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 请求参数结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-region.html
+     */
+    getDistrictByCityId(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+
+        if (Utils.checkParamKeyEmpty(options, 'id')) {
+            return;
+        }
+
+        var requestParam = {
+            id: options.id || '',
+            output: 'json',
+            key: that.key
+        };
+
+        wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_AREA_LIST,
+            data: requestParam
+        },'getDistrictByCityId'));
+    };
+
+    /**
+     * 用于单起点到多终点的路线距离(非直线距离)计算:
+     * 支持两种距离计算方式:步行和驾车。
+     * 起点到终点最大限制直线距离10公里。
+     *
+     * 新增直线距离计算。
+     * 
+     * @param {Object} options 接口参数对象
+     * 
+     * 请求参数结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-distance.html
+     */
+    calculateDistance(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+
+        if (Utils.checkParamKeyEmpty(options, 'to')) {
+            return;
+        }
+
+        var requestParam = {
+            mode: options.mode || 'walking',
+            to: Utils.location2query(options.to),
+            output: 'json',
+            key: that.key
+        };
+
+        if (options.from) {
+          options.location = options.from;
+        }
+
+        //计算直线距离
+        if(requestParam.mode == 'straight'){        
+          var locationsuccess = function (result) {
+            var locationTo = Utils.getEndLocation(requestParam.to);//处理终点坐标
+            var data = {
+              message:"query ok",
+              result:{
+                elements:[]
+              },
+              status:0
+            };
+            for (var i = 0; i < locationTo.length; i++) {
+              data.result.elements.push({//将坐标存入
+                distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng),
+                duration:0,
+                from:{
+                  lat: result.latitude,
+                  lng:result.longitude
+                },
+                to:{
+                  lat: locationTo[i].lat,
+                  lng: locationTo[i].lng
+                }
+              });            
+            }
+            var calculateResult = data.result.elements;
+            var distanceResult = [];
+            for (var i = 0; i < calculateResult.length; i++) {
+              distanceResult.push(calculateResult[i].distance);
+            }  
+            return options.success(data,{
+              calculateResult: calculateResult,
+              distanceResult: distanceResult
+            });
+          };
+          
+          Utils.locationProcess(options, locationsuccess);
+        } else {
+          var locationsuccess = function (result) {
+            requestParam.from = result.latitude + ',' + result.longitude;
+            wx.request(Utils.buildWxRequestConfig(options, {
+              url: URL_DISTANCE,
+              data: requestParam
+            },'calculateDistance'));
+          };
+
+          Utils.locationProcess(options, locationsuccess);
+        }      
+    }
+};
+
+module.exports = QQMapWX;

File diff ditekan karena terlalu besar
+ 6 - 0
jxtxkj/static/js/weapp.qrcode.min.js


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/components/tki-qrcode/tki-qrcode.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-avatar/u-avatar.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-button/u-button.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-checkbox-group/u-checkbox-group.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-checkbox/u-checkbox.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-code/u-code.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-count-down/u-count-down.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-form-item/u-form-item.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-image/u-image.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-input/u-input.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-line-progress/u-line-progress.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-link/u-link.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-navbar/u-navbar.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-parse/node/node.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-parse/u-parse.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-radio-group/u-radio-group.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-radio/u-radio.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-swiper-indicator/u-swiper-indicator.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-swiper/u-swiper.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-text/u-text.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/course/buy.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/course/detail.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/declare/declare.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/declare/declare_success.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/exam/exam.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/exam/parse.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/exam/submit.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/search/search.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/integral/integral.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/choose.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/forget.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
jxtxkj/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/register.js.map


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini