lhl il y a 1 an
commit
a3c46e2d4a
100 fichiers modifiés avec 43507 ajouts et 0 suppressions
  1. 20 0
      .hbuilderx/launch.json
  2. 282 0
      App.vue
  3. 0 0
      README.md
  4. 276 0
      api/activity.js
  5. 92 0
      api/functionalUnit.js
  6. 72 0
      api/index.js
  7. 64 0
      api/login.js
  8. 99 0
      api/merchant.js
  9. 173 0
      api/order.js
  10. 195 0
      api/product.js
  11. 46 0
      api/set.js
  12. 80 0
      api/shop.js
  13. 285 0
      api/user.js
  14. 166 0
      api/wallet.js
  15. 45 0
      api/wx.js
  16. 57 0
      components/Loading/index.vue
  17. 120 0
      components/countDown/index.vue
  18. 18 0
      components/empty.vue
  19. 36 0
      components/emptyPage.vue
  20. 118 0
      components/home/index.vue
  21. 630 0
      components/jyf-parser/jyf-parser.vue
  22. 97 0
      components/jyf-parser/libs/CssHandler.js
  23. 535 0
      components/jyf-parser/libs/MpHtmlParser.js
  24. 80 0
      components/jyf-parser/libs/config.js
  25. 22 0
      components/jyf-parser/libs/handler.wxs
  26. 501 0
      components/jyf-parser/libs/trees.vue
  27. 14402 0
      components/lee-select-city/city.json
  28. 14 0
      components/lee-select-city/hot-cities.json
  29. 83 0
      components/lee-select-city/lee-latter-list.vue
  30. 434 0
      components/lee-select-city/lee-select-city.vue
  31. 344 0
      components/mosowe-swiper/mosowe-swiper.vue
  32. 421 0
      components/newlist/nowList.vue
  33. 71 0
      components/returnButton.vue
  34. 337 0
      components/seckill/seckill.vue
  35. 196 0
      components/share.vue
  36. 218 0
      components/ss-calendar/ss-calendar.vue
  37. 300 0
      components/store/store.vue
  38. 224 0
      components/sx/index.vue
  39. 1201 0
      components/tki-qrcode/qrcode.js
  40. 210 0
      components/tki-qrcode/tki-qrcode.vue
  41. 122 0
      components/uni-badge/uni-badge.vue
  42. 183 0
      components/uni-countdown/uni-countdown.vue
  43. 188 0
      components/uni-countdown/uni-countdowns.vue
  44. 124 0
      components/uni-fav/uni-fav.vue
  45. 96 0
      components/uni-icons/icons.js
  46. 10 0
      components/uni-icons/uni-icons.vue
  47. 230 0
      components/uni-list-item/uni-list-item.vue
  48. 76 0
      components/uni-list/uni-list.vue
  49. 65 0
      components/uni-list/uni-refresh.vue
  50. 87 0
      components/uni-list/uni-refresh.wxs
  51. 194 0
      components/uni-load-more/uni-load-more.vue
  52. 396 0
      components/uni-notice-bar/uni-notice-bar.vue
  53. 198 0
      components/uni-number-box.vue
  54. 243 0
      components/uni-popup/uni-popup-dialog.vue
  55. 116 0
      components/uni-popup/uni-popup-message.vue
  56. 263 0
      components/uni-popup/uni-popup-ori.vue
  57. 282 0
      components/uni-popup/uni-popup-share.vue
  58. 263 0
      components/uni-popup/uni-popup.vue
  59. 141 0
      components/uni-rate/uni-rate.vue
  60. 244 0
      components/uni-steps/uni-steps.vue
  61. 279 0
      components/uni-transition/uni-transition.vue
  62. 226 0
      components/upload-images.vue
  63. 7076 0
      components/wangding-pickerAddress/data.js
  64. 103 0
      components/wangding-pickerAddress/wangding-pickerAddress.vue
  65. 18 0
      config/app.js
  66. 32 0
      config/cache.js
  67. 33 0
      js_sdk/xb-copy/uni-copy.js
  68. 39 0
      libs/log.js
  69. 84 0
      libs/login.js
  70. 253 0
      libs/wechat.js
  71. 46 0
      main.js
  72. 99 0
      manifest.json
  73. 5 0
      package.json
  74. 684 0
      pages.json
  75. 607 0
      pages/cart/cart.vue
  76. 319 0
      pages/category/business.vue
  77. 192 0
      pages/category/category.vue
  78. 29 0
      pages/game/game.vue
  79. 1205 0
      pages/index/index.vue
  80. 317 0
      pages/index/living.vue
  81. 187 0
      pages/index/sign.vue
  82. 185 0
      pages/index/sx.vue
  83. 236 0
      pages/money/account.vue
  84. 488 0
      pages/money/pay.vue
  85. 88 0
      pages/money/paySuccess.vue
  86. 486 0
      pages/money/recharge.vue
  87. 86 0
      pages/money/success.vue
  88. 571 0
      pages/money/vipRecharge.vue
  89. 194 0
      pages/money/vipShop.vue
  90. 443 0
      pages/money/wallet.vue
  91. 335 0
      pages/money/withdmoenys.vue
  92. 260 0
      pages/money/withdrawal.vue
  93. 174 0
      pages/order/createOrder.vue
  94. 405 0
      pages/order/evaluate.vue
  95. 185 0
      pages/order/expressInfo.vue
  96. 681 0
      pages/order/order.vue
  97. 183 0
      pages/order/orderDetail.vue
  98. 237 0
      pages/order/orderRefund.vue
  99. 204 0
      pages/product/classify.vue
  100. 148 0
      pages/product/common/KlonContent.vue

+ 20 - 0
.hbuilderx/launch.json

@@ -0,0 +1,20 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+     	"app-plus" : 
+     	{
+     		"launchtype" : "remote"
+     	},
+     	"default" : 
+     	{
+     		"launchtype" : "remote"
+     	},
+     	"mp-weixin" : 
+     	{
+     		"launchtype" : "remote"
+     	},
+     	"type" : "uniCloud"
+     }
+    ]
+}

+ 282 - 0
App.vue

@@ -0,0 +1,282 @@
+<script>
+/**
+ * vuex管理登陆状态,具体可以参考官方登陆模板示例
+ */
+import { mapMutations } from 'vuex';
+// #ifdef H5
+import { weixindata, setRouter } from './utils/wxAuthorized';
+// #endif
+// #ifdef APP-PLUS
+import { getUpApp } from './utils/upApp.js';
+
+
+// #endif
+	import {
+		interceptor
+	} from '@/utils/loginUtils';
+export default {
+	data() {
+		return {
+			/* 保存微信信息 */
+			appData: {}
+		};
+	},
+	methods: {
+		...mapMutations('user', ['setUserInfo', 'login', 'hasLogin'])
+	},
+	onLaunch: function(urlObj) {
+		let obj = this;
+		// 加载缓存中的用户信息
+		let userInfo = uni.getStorageSync('userInfo') || '';
+		// 判断是否拥有用户信息
+		
+		if (userInfo.uid) {
+			//更新登陆状态
+			uni.getStorage({
+				key: 'userInfo',
+				success: res => {
+					obj.setUserInfo(res.data);
+					obj.login(res.data);
+				}
+			});
+			
+			
+		}else{
+			interceptor();
+			
+		}
+		// #ifdef H5
+		// 保存路由对象
+		setRouter(this.$router);
+		//判断是否已经缓存浏览器
+		let bool = uni.getStorageSync('weichatBrowser') || '';
+		if (bool === '') {
+			//判断是否为微信浏览
+			bool = navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger';
+			// 保存当前是否为微信内核浏览器
+			uni.setStorageSync('weichatBrowser', bool);
+		}
+		if (bool) {
+			// 加载微信信息
+			weixindata();
+		}
+		// #endif
+		// #ifdef APP-PLUS
+		// 判断是否升级
+		getUpApp();
+		// 获取当前运行系统
+		let system = uni.getStorageSync('platform') || '';
+		if (!system) {
+			uni.setStorage({
+				key: 'platform',
+				data: uni.getSystemInfoSync().platform
+			});
+		}
+		// #endif
+	},
+	onLoad(e) {
+		if(option.spread){
+			console.log(e.spread,"邀请人")
+			uni.setStorageSync('puid',e.spread)
+		}
+	},
+	onShow: function() {	
+	
+	},
+	onHide: function() {
+		// console.log('App Hide');
+	}
+};
+</script>
+
+<style lang="scss">
+/*全局公共样式和字体图标*/
+@import '/static/css/cmy.css';
+@import "uview-ui/index.scss";
+view,
+scroll-view,
+swiper,
+swiper-item,
+cover-view,
+cover-image,
+icon,
+text,
+rich-text,
+progress,
+button,
+checkbox,
+form,
+input,
+label,
+radio,
+slider,
+switch,
+textarea,
+navigator,
+audio,
+camera,
+image,
+video {
+	box-sizing: border-box;
+}
+/* 骨架屏替代方案 */
+.Skeleton {
+	background: #f3f3f3;
+	padding: 20rpx 0;
+	border-radius: 8rpx;
+}
+
+/* 图片载入替代方案 */
+.image-wrapper {
+	font-size: 0;
+	background: #f3f3f3;
+	border-radius: 4px;
+	image {
+		width: 100%;
+		height: 100%;
+		transition: 0.6s;
+		opacity: 0;
+		&.loaded {
+			opacity: 1;
+		}
+	}
+}
+p>img {
+		margin-top: -0.5em;
+	}
+// 设置富文本中图片最大宽度
+uni-rich-text img {
+	max-width: 100% !important;
+}
+/*边框*/
+.b-b:after,
+.b-t:after {
+	position: absolute;
+	z-index: 3;
+	left: 0;
+	right: 0;
+	height: 0;
+	content: '';
+	transform: scaleY(0.5);
+	border-bottom: 1px solid $border-color-base;
+}
+
+.b-b:after {
+	bottom: 0;
+}
+
+.b-t:after {
+	top: 0;
+}
+
+/* button样式改写 */
+uni-button,
+button {
+	height: 80rpx;
+	line-height: 80rpx;
+	font-size: $font-lg + 2rpx;
+	font-weight: normal;
+
+	&.no-border:before,
+	&.no-border:after {
+		border: 0;
+	}
+}
+
+uni-button[type='default'],
+button[type='default'] {
+	color: $font-color-dark;
+}
+
+/* input 样式 */
+.input-placeholder {
+	color: #999999;
+}
+
+.placeholder {
+	color: #999999;
+}
+// 边距样式
+@for $i from 1 to 4 {
+	.margin-l-#{$i * 10} {
+		margin-left: $i * 10rpx !important;
+	}
+	.margin-r-#{$i * 10} {
+		margin-right: $i * 10rpx !important;
+	}
+	.margin-t-#{$i * 10} {
+		margin-top: $i * 10rpx !important;
+	}
+	.margin-b-#{$i * 10} {
+		margin-bottom: $i * 10rpx !important;
+	}
+	.margin-#{$i * 10} {
+		margin: $i * 10rpx !important;
+	}
+	.margin-v-#{$i * 10} {
+		margin-top: $i * 10rpx !important;
+		margin-bottom: $i * 10rpx !important;
+	}
+	.margin-c-#{$i * 10} {
+		margin-left: $i * 10rpx !important;
+		margin-right: $i * 10rpx !important;
+	}
+	.padding-l-#{$i * 10} {
+		padding-left: $i * 10rpx !important;
+	}
+	.padding-r-#{$i * 10} {
+		padding-right: $i * 10rpx !important;
+	}
+	.padding-t-#{$i * 10} {
+		padding-top: $i * 10rpx !important;
+	}
+	.padding-b-#{$i * 10} {
+		padding-bottom: $i * 10rpx !important;
+	}
+	.padding-#{$i * 10} {
+		padding: $i * 10rpx !important;
+	}
+	.padding-v-#{$i * 10} {
+		padding-top: $i * 10rpx !important;
+		padding-bottom: $i * 10rpx !important;
+	}
+	.padding-c-#{$i * 10} {
+		padding-left: $i * 10rpx !important;
+		padding-right: $i * 10rpx !important;
+	}
+}
+// 字体大小
+.font-size-sm {
+	font-size: $font-sm;
+}
+.font-size-base {
+	font-size: $font-base;
+}
+.font-size-lg {
+	font-size: $font-lg;
+}
+// 字体颜色
+.font-color-yellow {
+	color: $color-yellow;
+}
+.font-color-gray {
+	color: $color-gray;
+}
+.font-color-red {
+	color: $color-red;
+}
+// 边框颜色
+.border-color-yellow {
+	border: 1rpx solid $color-yellow;
+}
+
+// 修改默认背景颜色
+uni-page-wrapper {
+	background-color: $page-color-base;
+}
+page {
+	background-color: $page-color-base;
+	// 设置默认字体
+	font-family: PingFang SC, STHeitiSC-Light, Helvetica-Light, arial, sans-serif, Droid Sans Fallback;
+}
+</style>

+ 0 - 0
README.md


+ 276 - 0
api/activity.js

@@ -0,0 +1,276 @@
+import request from "@/utils/request.js";
+/**
+ * 
+ * 所有活动接口 包括:拼团,砍价,秒杀
+ * 
+*/
+// 砍价产品详情
+export function getBargainDetail(data,id) {
+	return request({
+		url: '/api/bargain/detail/' + id,
+		method: 'get',
+		data
+	});
+}
+
+/**
+ * 砍价产品详情
+ */
+// export function getBargainDetail(id) {
+//   return request.get("bargain/detail/" + id);
+// }
+
+//砍价 砍价帮总人数、剩余金额、进度条、已经砍掉的价格
+export function postBargainHelpCount(data) {
+	return request({
+		url: '/api/bargain/help/count',
+		method: 'post',
+		data
+	});
+}
+
+/**
+ * 砍价 砍价帮总人数、剩余金额、进度条、已经砍掉的价格
+ */
+// export function postBargainHelpCount(data) {
+//   return request.post("bargain/help/count", data);
+// }
+
+//砍价 开启砍价用户信息
+export function postBargainStartUser(data) {
+	return request({
+		url: '/api/bargain/start/user',
+		method: 'post',
+		data
+	});
+}
+
+/**
+ * 砍价 开启砍价用户信息
+ */
+// export function postBargainStartUser(data) {
+//   return request.post("bargain/start/user", data);
+// }
+
+//砍价开启
+export function postBargainStart(data) {
+	return request({
+		url: '/api/bargain/start',
+		method: 'post',
+		data
+	});
+}
+
+/**
+ * 砍价开启
+ */
+// export function postBargainStart(bargainId) {
+//   return request.post("bargain/start", { bargainId: bargainId});
+// }
+
+// 砍价 砍掉金额
+export function postBargainHelpPrice(data) {
+	return request({
+		url: '/api/bargain/help/price',
+		method: 'post',
+		data
+	});
+}
+
+/**
+ * 砍价 砍掉金额
+ */
+// export function postBargainHelpPrice(data) {
+//   return request.post("bargain/help/price", data);
+// }
+
+// 砍价 帮助好友砍价
+export function postBargainHelp(data) {
+	return request({
+		url: '/api/bargain/help',
+		method: 'post',
+		data
+	});
+}
+
+/**
+ * 砍价 帮助好友砍价
+ */
+// export function postBargainHelp(data) {
+//   return request.post("bargain/help", data);
+// }
+
+// 砍价 砍价帮
+export function postBargainHelpList(data) {
+	return request({
+		url: '/api/bargain/help/list',
+		method: 'post',
+		data
+	});
+}
+
+
+/**
+ * 砍价 砍价帮
+ */
+// export function postBargainHelpList(data) {
+//   return request.post("bargain/help/list", data);
+// }
+
+// 砍价 观看/分享/参与次数
+export function postBargainShare(data) {
+	return request({
+		url: '/api/bargain/share',
+		method: 'post',
+		data
+	});
+}
+
+/**
+ * 砍价 观看/分享/参与次数
+ */
+// export function postBargainShare(bargainId) {
+//   return request.post("bargain/share", { bargainId: bargainId});
+// }
+
+// 砍价列表(已参与)
+export function getBargainUserList(data) {
+	return request({
+		url: '/api/bargain/user/list',
+		method: 'get',
+		data
+	});
+}
+
+/**
+ * 
+ * 砍价列表(已参与)
+ * @param object data
+*/
+// export function getBargainUserList(data){
+//   return request.get('bargain/user/list',data);
+// }
+
+// 砍价取消
+export function getBargainUserCancel(data) {
+	return request({
+		url: '/api/bargain/user/cancel',
+		method: 'post',
+		data
+	});
+}
+
+/**
+ * 砍价取消
+ */
+// export function getBargainUserCancel(data) {
+//   return request.post("/bargain/user/cancel", data);
+// }
+
+
+
+
+
+/**
+ * 拼团列表
+ * 
+*/
+export function getCombinationList(data) {
+  return request.get('combination/list', data,{noAuth:true});
+}
+
+/**
+ * 拼团详情
+ * 
+*/
+export function getCombinationDetail(id) {
+  return request.get('combination/detail/'+id);
+}
+
+/**
+ * 拼团 开团
+ */
+export function getCombinationPink(id) {
+  return request.get("combination/pink/" + id);
+}
+
+/**
+ * 拼团 取消开团
+ */
+export function postCombinationRemove(data) {
+  return request.post("combination/remove",data);
+}
+
+/**
+ * 砍价列表
+ */
+export function getBargainList(data) {
+  return request.get("bargain/list", data,{noAuth:true});
+}
+
+
+/**
+ * 
+ * 取消砍价
+ * @param int bargainId
+*/
+export function bargainUserCancel(bargainId){
+  return request.post('bargain/user/cancel', { bargainId: bargainId})
+}
+
+/**
+ * 秒杀产品时间区间
+ * 
+*/
+export function getSeckillIndexTime(){
+  return request.get('seckill/index',{},{noAuth:true});
+}
+
+/**
+ * 秒杀产品列表
+ * @param int time
+ * @param object data
+*/
+export function getSeckillList(time,data){
+  return request.get('seckill/list/'+time,data,{noAuth:true});
+}
+
+/**
+ * 秒杀产品详情
+ * @param int id
+*/
+export function getSeckillDetail(id){
+  return request.get('seckill/detail/'+id);
+}
+
+/**
+ * 砍价海报
+ * @param object data
+ * 
+*/
+export function getBargainPoster(data){
+  return request.post('bargain/poster',data)
+}
+
+/**
+ * 拼团海报
+ * @param object data
+ * 
+*/
+export function getCombinationPoster(data){
+  return request.post('combination/poster',data)
+}
+
+/**
+ * 获取秒杀小程序二维码
+ */
+export function seckillCode(id,data) {
+  return request.get("seckill/code/"+id,data);
+}
+
+/**
+ * 获取拼团小程序二维码
+ */
+export function scombinationCode(id) {
+  return request.get("combination/code/"+id);
+}

+ 92 - 0
api/functionalUnit.js

@@ -0,0 +1,92 @@
+import request from '@/utils/request'
+
+//获取优惠券列表
+export function getCouponsList(data,types) {
+	//优惠券状态 0全部 1未使用 2已使用
+	return request({
+		url: '/api/coupons/user/'+types,
+		method: 'get',
+		data
+	});
+}
+
+//领取优惠券
+export function setCoupons(data) {
+	return request({
+		url: '/api/coupon/receive',
+		method: 'post',
+		data
+	});
+}
+
+//获取可使用优惠券
+export function couponsOrder(data,price) {
+	return request({
+		url: '/api/coupons/order/'+price,
+		method: 'get',
+		data
+	});
+}
+
+
+//	积分列表
+export function integrallist(data) {
+	return request({
+		url: '/api/integral/list',
+		method: 'get',
+		data
+	});
+}
+
+
+// 获取签到列表
+export function signList(data) {
+	return request({
+		url: '/api/sign/list',
+		method: 'get',
+		data
+	});
+}
+// 点击签到
+export function integral(data) {
+	return request({
+		url: '/api/sign/integral',
+		method: 'post',
+		data
+	});
+}
+
+// 签到信息
+export function signUser(data) {
+	return request({
+		url: '/api/sign/user',
+		method: 'post',
+		data
+	});
+}
+
+//天天领红包-当天可领
+export function my_award(data) {
+	return request({
+		url: '/api/game/my_award',
+		method: 'get',
+		data
+	});
+}
+
+//天天领红包-领取红包
+export function get_award(data,id) {
+	return request({
+		url: '/api/game/get_award/' + id,
+		method: 'post',
+		data
+	});
+}
+//获取可领取优惠券列表
+export function getCouponList(data) {
+	return request({
+		url: '/api/coupons',
+		method: 'get',
+		data
+	});
+}

+ 72 - 0
api/index.js

@@ -0,0 +1,72 @@
+import request from '@/utils/request'
+
+// 促销商品
+export function groom4(data) {
+	return request({
+		url: '/api/groom/list/4',
+		method: 'get',
+		data
+	});
+}
+// 精品推荐
+export function groom1(data) {
+	return request({
+		url: '/api/groom/list/1',
+		method: 'get',
+		data
+	});
+}
+// 绑定商家
+export function mer(data) {
+	return request({
+		url: '/api/user/mer',
+		method: 'get',
+		data
+	});
+}
+// vip专区
+export function getVip(data) {
+	return request({
+		url: '/api/products',
+		method: 'get',
+		data
+	});
+}
+// 新品首发
+export function groom3(data) {
+	return request({
+		url: '/api/groom/list/3',
+		method: 'get',
+		data
+	});
+}
+
+// 获取首页信息
+export function loadIndexs(data) {
+	return request({
+		url: '/api/index',
+		method: 'get',
+		data
+	});
+}
+
+//获取门店列表
+export function store_list(data) {
+	return request({
+		url: '/api/store_list',
+		method: 'get',
+		data
+	});
+}
+
+export function getZbList(data) {
+	return request({
+	  url: '/api/wechat/live',
+	  method: 'get',
+	  data
+	 });
+}
+
+
+
+

+ 64 - 0
api/login.js

@@ -0,0 +1,64 @@
+import request from '@/utils/request'
+
+// 登录
+export function login(data) {
+	return request({
+		url: '/api/login',
+		method: 'post',
+		data
+	});
+}
+// 注册
+export function register(data) {
+	return request({
+		url: '/api/register',
+		method: 'post',
+		data
+	});
+}
+// 验证码
+export function verify(data) {
+	// type=register为注册
+	// type=login为登录
+	return request({
+		url: '/api/register/verify',
+		method: 'post',
+		data
+	});
+}
+
+// 获取用户信息
+export function getUserInfo(data) {
+	return request({
+		url: '/api/userinfo',
+		method: 'get',
+		data
+	});
+}
+
+// 短信登录
+export function loginMobile(data) {
+	return request({
+		url: '/api/login/mobile',
+		method: 'post',
+		data
+	});
+}
+// #ifdef APP-PLUS
+// 微信授权登录
+export function loginWx(data) {
+	return request({
+		url: '/api/wechat/appauth',
+		method: 'get',
+		data
+	});
+}
+// #endif
+//绑定手机号
+export function bangding(data) {
+	return request({
+		url: '/api/binding',
+		method: 'POST',
+		data
+	});
+}

+ 99 - 0
api/merchant.js

@@ -0,0 +1,99 @@
+import request from '@/utils/request'
+
+//店铺订单列表
+export function merchantList(data) {
+	return request({
+		url: '/api/admin/order/list',
+		method: 'get',
+		data
+	});
+}
+
+//店铺订单详情
+export function detail(data,id) {
+	return request({
+		url: '/api/admin/order/detail/'+id,
+		method: 'get',
+		data
+	});
+}
+
+// 店铺订单每月统计数据
+export function shop_data(data) {
+	return request({
+		url: '/api/admin/order/month',
+		method: 'get',
+		data
+	});
+}
+
+// 店铺信息
+export function my(data) {
+	return request({
+		url: '/api/store/mystore',
+		method: 'post',
+		data
+	});
+}
+
+// 店铺会员列表
+export function member(data) {
+	return request({
+		url: '/api/store/member',
+		method: 'post',
+		data
+	});
+}
+
+// 店铺商品列表
+export function goods(data) {
+	return request({
+		url: '/api/store/goods',
+		method: 'post',
+		data
+	});
+}
+
+//订单核销
+export function verific(data) {
+	return request({
+		url: '/api/order/order_verific',
+		method: 'post',
+		data
+	});
+}
+
+//卡片兑换
+export function verification(data) {
+	return request({
+		url: '/api/user/verification',
+		method: 'post',
+		data
+	});
+}
+
+// 提现
+export function extractCash(data) {
+	return request({
+		url: '/api/store/cash',
+		method: 'post',
+		data
+	});
+}
+
+// 提现
+export function exchangeCash(data) {
+	return request({
+		url: '/api/store/brokerage',
+		method: 'post',
+		data
+	});
+}
+// 提现信息
+export function extractBank(data) {
+	return request({
+		url: '/api/store/bank',
+		method: 'get',
+		data
+	});
+}

+ 173 - 0
api/order.js

@@ -0,0 +1,173 @@
+import request from '@/utils/request'
+import {upFilse} from '@/utils/request'
+// 订单确认
+export function confirm(data) {
+	return request({
+		url: '/api/order/confirm',
+		method: 'post',
+		data
+	});
+}
+//获取可使用优惠券
+export function couponsOrder(data,price,id) {
+	return request({
+		url: '/api/coupons/order/'+price+'/'+id,
+		method: 'get',
+		data
+	});
+}
+//获取优惠券列表
+export function getCouponsList(data,types) {
+	//优惠券状态 0全部 1未使用 2已使用
+	return request({
+		url: '/api/coupons/user/'+types,
+		method: 'get',
+		data
+	});
+}
+// 优惠券详情
+export function CouponsDetails(data) {
+ return request({
+  url: '/api/coupons/details',
+  method: 'get',
+  data
+ })
+}
+//提交评论
+export function order_comment(data) {
+	return request({
+		url: '/api/order/comment',
+		method: 'post',
+		data
+	});
+}
+//订单产品信息
+export function product(data) {
+	return request({
+		url: '/api/order/product',
+		method: 'post',
+		data
+	});
+}
+// 快递查询
+export function express(data) {
+	return request({
+		url: '/api/order/express',
+		method: 'get',
+		data
+	});
+}
+//上传图片
+export function upload(data) {
+	return upFilse({
+		url: '/api/upload/image',
+		method: 'post',
+		data
+	});
+}
+// 订单列表
+export function orderList(data) {
+	return request({
+		url: '/api/order/list',
+		method: 'get',
+		data
+	});
+}
+// 订单详细
+export function orderDetail(data,orderid) {
+	return request({
+		url: '/api/order/detail/'+orderid,
+		method: 'get',
+		data
+	});
+}
+
+// 取消订单
+export function orderCancel(data) {
+	return request({
+		url: '/api/order/cancel',
+		method: 'post',
+		data
+	});
+}
+
+// 删除订单
+export function orderDel(data) {
+	return request({
+		url: '/api/order/del',
+		method: 'get',
+		data
+	});
+}
+// 申请退款
+export function refund(data) {
+	return request({
+		url: '/api/order/refund/verify',
+		method: 'post',
+		data
+	});
+}
+// 退款理由列表
+export function refundReason(data) {
+	return request({
+		url: '/api/order/refund/reason',
+		method: 'get',
+		data
+	});
+}
+
+
+// 确认收货
+export function orderTake(data) {
+	return request({
+		url: '/api/order/take',
+		method: 'post',
+		data
+	});
+}
+
+// 订单支付
+export function orderPay(data) {
+	return request({
+		url: '/api/order/pay',
+		method: 'post',
+		data
+	});
+}
+
+// 创建订单
+export function createOrderkey(data,key) {
+	return request({
+		url: '/api/order/create/'+key,
+		method: 'post',
+		data
+	});
+}
+
+// 统计订单金额
+export function computedOrderkey(data) {
+	return request({
+		url: '/api/order/computed/'+data.orderkey,
+		method: 'post',
+		data
+	});
+}
+
+
+// 优惠券首页门店列表
+export function sycoustore(data) {
+	return request({
+		url: '/api/sycoustore',
+		method: 'get',
+		data
+	});
+}
+
+// 优惠券门店列表
+export function coustore(data) {
+	return request({
+		url: '/api/coustore',
+		method: 'get',
+		data
+	});
+}

+ 195 - 0
api/product.js

@@ -0,0 +1,195 @@
+import request from '@/utils/request'
+
+// 获取商品列表
+export function getProducts(data) {
+	// 	{
+	// 参数名称	是否必须	示例	备注
+	// sid			否			二级分类编号
+	// cid			否			一级分类编号(!)
+	// keyword		否			搜索
+	// priceOrder	否			价格排序
+	// salesOrder	否			销量排序
+	// news			否			是否新品
+	// page			否			分页参数起始值
+	// limit		否			分页数步长值
+	// }
+	return request({
+		url: '/api/products',
+		method: 'get',
+		data
+	});
+}
+// 获取商品详情
+export function goodsDetail(data, id) {
+	return request({
+		url: '/api/product/detail/' + id,
+		method: 'get',
+		data
+	});
+}
+
+// 发送浏览记录
+export function browse(data) {
+	return request({
+		url: '/api/browse',
+		method: 'get',
+		data
+	});
+}
+
+// 砍价列表
+export function getBargainList(data) {
+	return request({
+		url: '/api/bargain/list',
+		method: 'get',
+		data
+	});
+}
+// 加入购物车
+export function cartAdd(data) {
+	return request({
+		url: '/api/cart/add',
+		method: 'post',
+		data
+	});
+}
+
+// 收藏商品
+export function collectAdd(data) {
+	return request({
+		url: '/api/collect/add',
+		method: 'post',
+		data
+	});
+}
+
+// 取消收藏商品
+export function collectDel(data) {
+	return request({
+		url: '/api/collect/del',
+		method: 'post',
+		data
+	});
+}
+
+// 获取搜搜关键字
+export function searchKeyword(data) {
+	return request({
+		url: '/api/search/keyword',
+		method: 'get',
+		data
+	});
+}
+
+// 获取热门分类信息
+export function groomList(data,type) {
+	// 获取产品类型 1 精品推荐 2 热门榜单 3首发新品 4促销单品
+	return request({
+		url: '/api/groom/list/'+type,
+		method: 'get',
+		data
+	});
+}
+
+
+// 获取秒杀商品详细
+export function seckillGoods(data,id) {
+	return request({
+		url: '/api/seckill/detail/'+id,
+		method: 'get',
+		data
+	});
+}
+
+// 获取拼团商品详细
+export function groupGoods(data,id) {
+	return request({
+		url: '/api/combination/detail/'+id,
+		method: 'get',
+		data
+	});
+}
+
+
+// 获取商品分类
+export function getCategoryList(data) {
+	return request({
+		url: '/api/category',
+		method: 'get',
+		data
+	});
+}
+
+
+// 获取拼团列表
+export function getCombinationList(data) {
+	return request({
+		url: '/api/combination/list',
+		method: 'get',
+		data
+	});
+}
+
+//取消拼团
+export function getCombinationLisRemove(data,id) {
+	return request({
+		url: '/api/combination/remove'+id,
+		method: 'get',
+		data
+	});
+}
+
+//拼团开团页面数据
+export function getCombinationLisPink(data,id) {
+	return request({
+		url: '/api/combination/pink/'+id,
+		method: 'get',
+		data
+	});
+}
+
+// 获取拼团海报
+export function getCombinationPoster(data) {
+	return request({
+		url: '/api/combination/poster',
+		method: 'post',
+		data
+	});
+}
+
+
+// 获取秒杀分类
+export function getSeckillClass(data) {
+	return request({
+		url: '/api/seckill/index',
+		method: 'get',
+		data
+	});
+}
+// 获取秒杀列表
+export function getSeckillList(data,id) {
+	return request({
+		url: '/api/seckill/list/'+id,
+		method: 'get',
+		data
+	});
+}
+
+
+// 产品评价数量和好评度
+export function reply_config(data,id) {
+	return request({
+		url: '/api/reply/config/'+id,
+		method: 'get',
+		data
+	});
+}
+// 获取产品评论
+export function reply_list(data,id) {
+	return request({
+		url: '/api/reply/list/'+id,
+		method: 'get',
+		data
+	});
+}
+

+ 46 - 0
api/set.js

@@ -0,0 +1,46 @@
+import request from '@/utils/request'
+
+// 修改用户信息
+export function userEdit(data) {
+	return request({
+		url: '/api/user/edit',
+		method: 'post',
+		data
+	});
+}
+
+//退出登录
+export function logout(data) {
+	return request({
+		url: '/api/logout',
+		method: 'get',
+		data
+	});
+}
+//修改密码
+export function registerReset(data) {
+	return request({
+		url: '/api/register/reset',
+		method: 'post',
+		data
+	});
+}
+
+//绑定手机
+export function binding(data) {
+	return request({
+		url: '/api/binding',
+		method: 'post',
+		data
+	});
+}
+// #ifdef APP-PLUS
+//苹果生成账户
+export function applelogin(data) {
+	return request({
+		url: '/api/applelogin',
+		method: 'post',
+		data
+	});
+}
+// #endif

+ 80 - 0
api/shop.js

@@ -0,0 +1,80 @@
+import request from "@/utils/request.js";
+
+//获取店铺分类
+export function store_cate(data) {
+	return request({
+		url: '/api/store_cate',
+		method: 'get',
+		data
+	});
+}
+//获取店铺列表
+export function getStoreList(data) {
+	return request({
+		url: '/api/coustore',
+		method: 'get',
+		data
+	});
+}
+
+//获取店铺详情
+export function getStoreDetail(data, id) {
+	return request({
+		url: '/api/store_details/' + id,
+		method: 'get',
+		data
+	});
+}
+
+// 获取优惠券详情
+export function getYhqDetail(data) {
+	return request({
+		url: '/api/coupon_datalis',
+		method: 'get',
+		data
+	})
+}
+
+export function getGift(data) {
+	return request({
+		url: '/api/share',
+		method: 'post',
+		data
+	})
+}
+
+// 地址逆解析/api/address
+export function getCity(data) {
+	return request({
+		url: '/api/address',
+		method: 'get',
+		data
+	})
+}
+
+//兑换
+export function goDh(data) {
+	return request({
+		url: '/api/exchange',
+		method: 'post',
+		data
+	})
+}
+
+//转赠
+export function gozz(data) {
+	return request({
+		url: '/api/donation',
+		method: 'post',
+		data
+	})
+}
+
+// 发布优惠券
+export function storeCoupon(data) {
+	return request({
+		url: '/api/store_coupon',
+		method: 'post',
+		data
+	})
+}

+ 285 - 0
api/user.js

@@ -0,0 +1,285 @@
+import request from '@/utils/request'
+
+
+//查看子点位
+export function lookSubpoints(data,id){
+	return request({
+		url:'/api/tree/children/'+id,
+		method:'get',
+		data
+	})
+}
+ // * 推广数据
+export function spreadInfo() {
+	return request({
+		url:'/api/commission',
+		method:'get',
+	})
+}
+//查看自己的点位
+export function lookOneself(data){
+	return request({
+		url:'/api/tree/points',
+		method:'get',
+		data
+		
+	})
+}
+//下级浏览记录
+export function getbrowse(data){
+	return request({
+		url:'/api/getbrowse',
+		method:'get',
+		data
+	})
+}
+/*
+ * 获取推广人排行
+ * */
+export function getRankList(data) {
+	return request({
+		url:'/api/rank',
+		method:'get',
+		data
+		
+	})
+}
+
+/*
+ * 获取佣金排名
+ * */
+export function getBrokerageRank(data) {
+	return request({
+		url:'/api/brokerage_rank',
+		method:'get',
+		data
+		
+	})
+}
+
+/**
+ * 
+ * 推广订单
+ * @param object data
+ */
+export function spreadOrder(data) {
+	return request({
+		url:'/api/spread/order',
+		method:'post',
+		data
+		
+	})
+}
+//绑定上级
+export function spread(data) {
+	return request({
+		url:'/api/user/spread',
+		method: 'post',
+		data
+	})
+}
+
+//我的推广
+export function myspread(data) {
+	return request({
+		url: '/api/spread/people',
+		method: 'POST',
+		data
+	});
+}
+
+//我的信息
+export function myuser(data) {
+	return request({
+		url: '/api/user',
+		method: 'GET',
+		data
+	});
+}
+
+// 订单统计信息
+export function orderData(data) {
+	return request({
+		url: '/api/order/data',
+		method: 'get',
+		data
+	});
+}
+
+// 获取用户信息
+export function getUserInfo(data) {
+	return request({
+		url: '/api/userinfo',
+		method: 'get',
+		data
+	});
+}
+// 获取用户信息
+export function userinfo(data) {
+	return request({
+		url: '/api/userinfo',
+		method: 'get',
+		data
+	});
+}
+
+// 用户分享图
+export function spreadBanner(data) {
+	return request({
+		url: '/api/spread/banner',
+		method: 'get',
+		data
+	});
+}
+
+// 获取地址列表
+export function getAddressList(data) {
+	return request({
+		url: '/api/address/list',
+		method: 'get',
+		data
+	});
+}
+// 修改地址
+export function addressEdit(data) {
+	return request({
+		url: '/api/address/edit',
+		method: 'post',
+		data
+	});
+}
+// 删除地址
+export function addressDel(data) {
+	return request({
+		url: '/api/address/del',
+		method: 'post',
+		data
+	});
+}
+// 设为默认地址
+export function setAddressDefault(data) {
+	return request({
+		url: '/api/address/default/set',
+		method: 'post',
+		data
+	});
+}
+// 购物车列表
+export function getCartList(data) {
+	return request({
+		url: '/api/cart/list',
+		method: 'get',
+		data
+	});
+}
+
+// 修改购物车数量
+export function getCartNum(data) {
+	return request({
+		url: '/api/cart/num',
+		method: 'post',
+		data
+	});
+}
+//删除购物车
+export function cartDel(data) {
+	return request({
+		url: '/api/cart/del',
+		method: 'post',
+		data
+	});
+}
+//获取收藏夹列表
+export function getcollectList(data) {
+	return request({
+		url: '/api/collect/user',
+		method: 'get',
+		data
+	});
+}
+// 取消收藏
+export function delcollect(data) {
+	return request({
+		url: '/api/collect/del',
+		method: 'post',
+		data
+	});
+}
+
+//积分转账
+export function transfer(data) {
+	return request({
+		url:'/api/trade',
+		method: 'post',
+		data
+	})
+}
+// 提现信息
+export function extractBank(data) {
+ return request({
+  url: '/api/extract/bank',
+  method: 'get',
+  data
+ });
+}
+
+//余额转账
+export function yuetransfer(data) {
+	return request({
+		url:'/api/yue/trade',
+		method: 'post',
+		data
+	})
+}
+
+//现金转账
+export function cashtransfer(data) {
+	return request({
+		url:'/api/cash/trade',
+		method: 'post',
+		data
+	})
+}
+
+// 我的分红积分
+export function share(data) {
+	return request({
+		url:'/api/game',
+		method: 'get',
+		data
+	})
+}
+//上传图片
+export function upload(data) {
+	return request({
+		url: '/api/upload/image',
+		method: 'post',
+		data
+	})
+}
+
+//用户修改信息
+export function edit(data) {
+	return request({
+		url: '/api/user/edit',
+		method: 'post',
+		data
+	});
+}
+
+//核销优惠券
+export function orderVerific(data) {
+	return request({
+		url: '/api/coupon/writeoff',
+		method: 'post',
+		data
+	});
+}
+
+export function getUser(data) {
+	return request({
+		url:'/api/user',
+		method:'get',
+		data
+	})
+}

+ 166 - 0
api/wallet.js

@@ -0,0 +1,166 @@
+import request from '@/utils/request'
+
+// 获取用户消费记录
+export function spreadCommission(data,state) {
+	return request({
+		url: '/api/spread/commission/'+state,
+		method: 'get',
+		data
+	});
+}
+export function selectMoney(data){
+	return request({
+		url:'/api/vip_recharge/index',
+		method:'get',
+		data
+	})
+}
+
+// 获取总收入支出
+export function getSpreadsum(data) {
+	return request({
+		url: '/api/spreadsum',
+		method: 'get',
+		data
+	});
+}
+
+
+// 获取账户余额
+export function userBalance(data) {
+	return request({
+		url: '/api/user/balance',
+		method: 'get',
+		data
+	});
+}
+
+export function wallet(data) {
+	return request({
+		url: '/api/wallet',
+		method: 'get',
+		data
+	});
+}
+
+// 提现
+export function extractCash(data) {
+	return request({
+		url: '/api/extract/cash',
+		method: 'post',
+		data
+	});
+}
+
+// 提现
+export function exchangeCash(data) {
+	return request({
+		url: '/api/extract/brokerage',
+		method: 'post',
+		data
+	});
+}
+
+// 提现信息
+export function extractBank(data) {
+	return request({
+		url: '/api/extract/bank',
+		method: 'get',
+		data
+	});
+}
+
+// 金豆兑换
+export function exchange(data) {
+	return request({
+		url: '/api/exchange_golden',
+		method: 'post',
+		data
+	});
+}
+
+export function vipWechat(data){
+	return request({
+		url:'/api/vip_recharge/wechat',
+		method:'post',
+		data
+	})
+}
+// 公众号充值
+export function rechargeWechat(data) {
+	return request({
+		url: '/api/recharge/wechat',
+		method: 'post',
+		data
+	});
+}
+// #ifdef MP
+// 小程序充值
+export function rechargeRoutine(data) {
+	return request({
+		url: '/api/recharge/routine',
+		method: 'post',
+		data
+	});
+}
+// #endif
+// 获取提现支付宝账号
+export function aliInfo(data) {
+	return request({
+		url: '/api/ali/info',
+		method: 'get',
+		data
+	});
+}
+//获取默认银行卡账号
+export function bankInfo(data) {
+	return request({
+		url: '/api/bank/info',
+		method: 'get',
+		data
+	});
+}
+// 保存提现支付宝账号
+export function setAliInfo(data) {
+	return request({
+		url: '/api/ali/edit',
+		method: 'post',
+		data
+	});
+}
+//保存默认银行卡账号
+export function setBankInfo(data) {
+	return request({
+		url: '/api/bank/edit',
+		method: 'post',
+		data
+	});
+}
+
+
+// 账户余额
+export function balance(data) {
+	return request({
+		url: '/api/user/balance',
+		method: 'get',
+		data
+	});
+}
+
+// 账户余额
+export function cashList(data) {
+	return request({
+		url: '/api/cash/list',
+		method: 'get',
+		data
+	});
+}
+
+//充值金额
+export function moneyChong(data){
+	return request({
+		url:'/api/recharge/index',
+		method:'get',
+		data
+	})
+}

+ 45 - 0
api/wx.js

@@ -0,0 +1,45 @@
+import request from '@/utils/request'
+// #ifdef H5
+// 微信分享信息
+export function share(data) {
+	return request({
+		url: '/api/share',
+		method: 'get',
+		data
+	});
+}
+//微信配置
+export function wechatConfig(data) {
+	return request({
+		url: '/api/wechat/config',
+		method: 'get',
+		data
+	});
+}
+// 微信code地址
+export function wechatAuth(data) {
+	return request({
+		url: '/api/wechat/auth',
+		method: 'get',
+		data
+	});
+}
+// #endif
+// #ifdef MP-WEIXIN
+// 微信code地址
+export function wechatMpAuth(data) {
+	return request({
+		url: '/api/wechat/mp_auth',
+		method: 'post',
+		data
+	});
+}
+
+export function get_logo(data) {
+	return request({
+		url: '/api/wechat/get_logo',
+		method: 'get',
+		data
+	});
+}
+// #endif

+ 57 - 0
components/Loading/index.vue

@@ -0,0 +1,57 @@
+<template>
+	<view>
+		<view class="Loads acea-row row-center-wrapper" v-if="loading && !loaded" style="margin-top: .2rem;">
+			<view v-if="loading">
+				<view class="iconfont icon-jiazai loading acea-row row-center-wrapper"></view>
+				正在加载中
+			</view>
+			<view v-else>
+				上拉加载更多
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "Loading",
+		props: {
+			loaded: {
+				type: Boolean,
+				default: false
+			},
+			loading: {
+				type: Boolean,
+				default: false
+			}
+		}
+	};
+</script>
+<style>
+	.Loads {
+	  height: 80upx;
+	  font-size: 25upx;
+	  color: #000;
+	}
+	.Loads .iconfont {
+	  font-size: 30upx;
+	  margin-right: 10upx;
+	  height: 32upx;
+	  line-height: 32upx;
+	}
+	/*加载动画*/
+	@keyframes load {
+	  from {
+	    transform: rotate(0deg);
+	  }
+	  to {
+	    transform: rotate(360deg);
+	  }
+	}
+	.loadingpic {
+	  animation: load 3s linear 1s infinite;
+	}
+	.loading {
+	  animation: load linear 1s infinite;
+	}
+</style>

+ 120 - 0
components/countDown/index.vue

@@ -0,0 +1,120 @@
+<template>
+	<view class="time" :style="justifyLeft">
+		<text class="red" v-if="tipText">{{ tipText }}</text>
+		<text class="styleAll" v-if="isDay === true">{{ day }}</text>
+		<text class="timeTxt red" v-if="dayText">{{ dayText }}</text>
+		<text class="styleAll">{{ hour }}</text>
+		<text class="timeTxt red" v-if="hourText">{{ hourText }}</text>
+		<text class="styleAll">{{ minute }}</text>
+		<text class="timeTxt red" v-if="minuteText">{{ minuteText }}</text>
+		<text class="styleAll">{{ second }}</text>
+		<text class="timeTxt red" v-if="secondText">{{ secondText }}</text>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "countDown",
+		props: {
+			justifyLeft: {
+				type: String,
+				default: ""
+			},
+			//距离开始提示文字
+			tipText: {
+				type: String,
+				default: "倒计时"
+			},
+			dayText: {
+				type: String,
+				default: "天"
+			},
+			hourText: {
+				type: String,
+				default: "时"
+			},
+			minuteText: {
+				type: String,
+				default: "分"
+			},
+			secondText: {
+				type: String,
+				default: "秒"
+			},
+			datatime: {
+				type: Number,
+				default: 0
+			},
+			isDay: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data: function() {
+			return {
+				day: "00",
+				hour: "00",
+				minute: "00",
+				second: "00"
+			};
+		},
+		created: function() {
+			this.show_time();
+		},
+		mounted: function() {},
+		methods: {
+			show_time: function() {
+				let that = this;
+
+				function runTime() {
+					//时间函数
+					let intDiff = that.datatime - Date.parse(new Date()) / 1000; //获取数据中的时间戳的时间差;
+					let day = 0,
+						hour = 0,
+						minute = 0,
+						second = 0;
+					if (intDiff > 0) {
+						//转换时间
+						if (that.isDay === true) {
+							day = Math.floor(intDiff / (60 * 60 * 24));
+						} else {
+							day = 0;
+						}
+						hour = Math.floor(intDiff / (60 * 60)) - day * 24;
+						minute = Math.floor(intDiff / 60) - day * 24 * 60 - hour * 60;
+						second =
+							Math.floor(intDiff) -
+							day * 24 * 60 * 60 -
+							hour * 60 * 60 -
+							minute * 60;
+						if (hour <= 9) hour = "0" + hour;
+						if (minute <= 9) minute = "0" + minute;
+						if (second <= 9) second = "0" + second;
+						that.day = day;
+						that.hour = hour;
+						that.minute = minute;
+						that.second = second;
+					} else {
+						that.day = "00";
+						that.hour = "00";
+						that.minute = "00";
+						that.second = "00";
+					}
+				}
+				runTime();
+				setInterval(runTime, 1000);
+			}
+		}
+	};
+</script>
+
+<style>
+	.time{
+		display: flex;
+		justify-content: center;
+	} 
+	.red{
+		color: #fc4141;
+		margin: 0 4rpx;
+	}
+</style>

Fichier diff supprimé car celui-ci est trop grand
+ 18 - 0
components/empty.vue


+ 36 - 0
components/emptyPage.vue

@@ -0,0 +1,36 @@
+<template>
+	<view class="empty-box">
+		<image src="/static/images/empty-box.png"></image>
+		<view class="txt">{{title}}</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		props: {
+			title: {
+				type: String,
+				default: '暂无记录',
+			},
+		},
+	}
+	
+</script>
+
+<style lang="scss">
+	.empty-box{
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		margin-top: 200rpx;
+		image{
+			width: 414rpx;
+			height: 240rpx;
+		}
+		.txt{
+			font-size: 26rpx;
+			color: #999;
+		}
+	}
+</style>

+ 118 - 0
components/home/index.vue

@@ -0,0 +1,118 @@
+<template>
+	<view style="touch-action: none;">
+		<view class="home" style="position:fixed;" :style="{ top: top + 'px', bottom: bottom }" id="right-nav" @touchmove.stop.prevent="setTouchMove">
+			<view class="homeCon bg-color-red" :class="homeActive === true ? 'on' : ''" v-if="homeActive">
+				<navigator hover-class='none' url='/pages/index/index' open-type='switchTab' class='iconfont icon-shouye-xianxing'></navigator>
+				<navigator hover-class='none' url='/pages/order_addcart/order_addcart' open-type='switchTab' class='iconfont icon-caigou-xianxing'></navigator>
+				<navigator hover-class='none' url='/pages/user/index' open-type='switchTab' class='iconfont icon-yonghu1'></navigator>
+			</view>
+			<view @click="open" class="pictrueBox">
+				<view class="pictrue">
+					<image :src="
+              homeActive === true
+                ? '/static/images/close.gif'
+                : '/static/images/open.gif'
+            "
+					 class="image" />
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+	import {
+		mapGetters
+	} from "vuex";
+	export default {
+		name: "Home",
+		props: {},
+		data: function() {
+			return {
+				top: "",
+				bottom: ""
+			};
+		},
+		computed: mapGetters(["homeActive"]),
+		methods: {
+			setTouchMove(e) {
+				var that = this;
+				if (e.touches[0].clientY < 545 && e.touches[0].clientY > 66) {
+					that.top = e.touches[0].clientY
+					// that.setData({
+					// 	top: e.touches[0].clientY
+					// })
+				}
+			},
+			open: function() {
+				this.homeActive ?
+					this.$store.commit("CLOSE_HOME") :
+					this.$store.commit("OPEN_HOME");
+			}
+		},
+		created() {
+			this.bottom = "50px";
+		}
+	};
+</script>
+
+<style scoped>
+	.pictrueBox {
+		width: 130rpx;
+		height: 120rpx;
+	}
+
+	/*返回主页按钮*/
+	.home {
+		position: fixed;
+		color: white;
+		text-align: center;
+		z-index: 9999;
+		right: 15rpx;
+		display: flex;
+	}
+
+	.home .homeCon {
+		border-radius: 50rpx;
+		opacity: 0;
+		height: 0;
+		color: #e93323;
+		width: 0;
+	}
+
+	.home .homeCon.on {
+		opacity: 1;
+		animation: bounceInRight 0.5s cubic-bezier(0.215, 0.610, 0.355, 1.000);
+		width: 300rpx;
+		height: 86rpx;
+		margin-bottom: 20rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		background: #f44939 !important;
+	}
+
+	.home .homeCon .iconfont {
+		font-size: 48rpx;
+		color: #fff;
+		display: inline-block;
+		margin: 0 auto;
+	}
+
+	.home .pictrue {
+		width: 86rpx;
+		height: 86rpx;
+		border-radius: 50%;
+		margin: 0 auto;
+	}
+
+	.home .pictrue .image {
+		width: 100%;
+		height: 100%;
+		border-radius: 50%;
+		transform: rotate(90deg);
+		ms-transform: rotate(90deg);
+		moz-transform: rotate(90deg);
+		webkit-transform: rotate(90deg);
+		o-transform: rotate(90deg);
+	}
+</style>

+ 630 - 0
components/jyf-parser/jyf-parser.vue

@@ -0,0 +1,630 @@
+<template>
+	<view>
+		<slot v-if="!nodes.length" />
+		<!--#ifdef APP-PLUS-NVUE-->
+		<web-view id="_top" ref="web" :style="'margin-top:-2px;height:'+height+'px'" @onPostMessage="_message" />
+		<!--#endif-->
+		<!--#ifndef APP-PLUS-NVUE-->
+		<view id="_top" :style="showAm+(selectable?';user-select:text;-webkit-user-select:text':'')">
+			<!--#ifdef H5 || MP-360-->
+			<div :id="'rtf'+uid"></div>
+			<!--#endif-->
+			<!--#ifndef H5 || MP-360-->
+			<trees :nodes="nodes" :lazyLoad="lazyLoad" :loading="loadingImg" />
+			<!--#endif-->
+		</view>
+		<!--#endif-->
+	</view>
+</template>
+
+<script>
+	// #ifndef H5 || APP-PLUS-NVUE || MP-360
+	import trees from './libs/trees';
+	var cache = {},
+		// #ifdef MP-WEIXIN || MP-TOUTIAO
+		fs = uni.getFileSystemManager ? uni.getFileSystemManager() : null,
+		// #endif
+		Parser = require('./libs/MpHtmlParser.js');
+	var dom;
+	// 计算 cache 的 key
+	function hash(str) {
+		for (var i = str.length, val = 5381; i--;)
+			val += (val << 5) + str.charCodeAt(i);
+		return val;
+	}
+	// #endif
+	// #ifdef H5 || APP-PLUS-NVUE || MP-360
+	var windowWidth = uni.getSystemInfoSync().windowWidth,
+		cfg = require('./libs/config.js');
+	// #endif
+	// #ifdef APP-PLUS-NVUE
+	var weexDom = weex.requireModule('dom');
+	// #endif
+	/**
+	 * Parser 富文本组件
+	 * @tutorial https://github.com/jin-yufeng/Parser
+	 * @property {String} html 富文本数据
+	 * @property {Boolean} autopause 是否在播放一个视频时自动暂停其他视频
+	 * @property {Boolean} autoscroll 是否自动给所有表格添加一个滚动层
+	 * @property {Boolean} autosetTitle 是否自动将 title 标签中的内容设置到页面标题
+	 * @property {Number} compress 压缩等级
+	 * @property {String} domain 图片、视频等链接的主域名
+	 * @property {Boolean} lazyLoad 是否开启图片懒加载
+	 * @property {String} loadingImg 图片加载完成前的占位图
+	 * @property {Boolean} selectable 是否开启长按复制
+	 * @property {Object} tagStyle 标签的默认样式
+	 * @property {Boolean} showWithAnimation 是否使用渐显动画
+	 * @property {Boolean} useAnchor 是否使用锚点
+	 * @property {Boolean} useCache 是否缓存解析结果
+	 * @event {Function} parse 解析完成事件
+	 * @event {Function} load dom 加载完成事件
+	 * @event {Function} ready 所有图片加载完毕事件
+	 * @event {Function} error 错误事件
+	 * @event {Function} imgtap 图片点击事件
+	 * @event {Function} linkpress 链接点击事件
+	 * @author JinYufeng
+	 * @version 20200728
+	 * @listens MIT
+	 */
+	export default {
+		name: 'parser',
+		data() {
+			return {
+				// #ifdef H5 || MP-360
+				uid: this._uid,
+				// #endif
+				// #ifdef APP-PLUS-NVUE
+				height: 1,
+				// #endif
+				// #ifndef APP-PLUS-NVUE
+				showAm: '',
+				// #endif
+				nodes: []
+			}
+		},
+		// #ifndef H5 || APP-PLUS-NVUE || MP-360
+		components: {
+			trees
+		},
+		// #endif
+		props: {
+			html: String,
+			autopause: {
+				type: Boolean,
+				default: true
+			},
+			autoscroll: Boolean,
+			autosetTitle: {
+				type: Boolean,
+				default: true
+			},
+			// #ifndef H5 || APP-PLUS-NVUE || MP-360
+			compress: Number,
+			loadingImg: String,
+			useCache: Boolean,
+			// #endif
+			domain: String,
+			lazyLoad: Boolean,
+			selectable: Boolean,
+			tagStyle: Object,
+			showWithAnimation: Boolean,
+			useAnchor: Boolean
+		},
+		watch: {
+			html(html) {
+				this.setContent(html);
+			}
+		},
+		created() {
+			// 图片数组
+			this.imgList = [];
+			this.imgList.each = function(f) {
+				for (var i = 0, len = this.length; i < len; i++)
+					this.setItem(i, f(this[i], i, this));
+			}
+			this.imgList.setItem = function(i, src) {
+				if (i == void 0 || !src) return;
+				// #ifndef MP-ALIPAY || APP-PLUS
+				// 去重
+				if (src.indexOf('http') == 0 && this.includes(src)) {
+					var newSrc = src.split('://')[0];
+					for (var j = newSrc.length, c; c = src[j]; j++) {
+						if (c == '/' && src[j - 1] != '/' && src[j + 1] != '/') break;
+						newSrc += Math.random() > 0.5 ? c.toUpperCase() : c;
+					}
+					newSrc += src.substr(j);
+					return this[i] = newSrc;
+				}
+				// #endif
+				this[i] = src;
+				// 暂存 data src
+				if (src.includes('data:image')) {
+					var filePath, info = src.match(/data:image\/(\S+?);(\S+?),(.+)/);
+					if (!info) return;
+					// #ifdef MP-WEIXIN || MP-TOUTIAO
+					filePath = `${wx.env.USER_DATA_PATH}/${Date.now()}.${info[1]}`;
+					fs && fs.writeFile({
+						filePath,
+						data: info[3],
+						encoding: info[2],
+						success: () => this[i] = filePath
+					})
+					// #endif
+					// #ifdef APP-PLUS
+					filePath = `_doc/parser_tmp/${Date.now()}.${info[1]}`;
+					var bitmap = new plus.nativeObj.Bitmap();
+					bitmap.loadBase64Data(src, () => {
+						bitmap.save(filePath, {}, () => {
+							bitmap.clear()
+							this[i] = filePath;
+						})
+					})
+					// #endif
+				}
+			}
+		},
+		mounted() {
+			// #ifdef H5 || MP-360
+			this.document = document.getElementById('rtf' + this._uid);
+			// #endif
+			// #ifndef H5 || APP-PLUS-NVUE || MP-360
+			if (dom) this.document = new dom(this);
+			// #endif
+			// #ifdef APP-PLUS-NVUE
+			this.document = this.$refs.web;
+			setTimeout(() => {
+				// #endif
+				if (this.html) this.setContent(this.html);
+				// #ifdef APP-PLUS-NVUE
+			}, 30)
+			// #endif
+		},
+		beforeDestroy() {
+			// #ifdef H5 || MP-360
+			if (this._observer) this._observer.disconnect();
+			// #endif
+			this.imgList.each(src => {
+				// #ifdef APP-PLUS
+				if (src && src.includes('_doc')) {
+					plus.io.resolveLocalFileSystemURL(src, entry => {
+						entry.remove();
+					});
+				}
+				// #endif
+				// #ifdef MP-WEIXIN || MP-TOUTIAO
+				if (src && src.includes(uni.env.USER_DATA_PATH))
+					fs && fs.unlink({
+						filePath: src
+					})
+				// #endif
+			})
+			clearInterval(this._timer);
+		},
+		methods: {
+			// 设置富文本内容
+			setContent(html, append) {
+				// #ifdef APP-PLUS-NVUE
+				if (!html)
+					return this.height = 1;
+				if (append)
+					this.$refs.web.evalJs("var b=document.createElement('div');b.innerHTML='" + html.replace(/'/g, "\\'") +
+						"';document.getElementById('parser').appendChild(b)");
+				else {
+					html =
+						'<meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><style>html,body{width:100%;height:100%;overflow:hidden}body{margin:0}</style><base href="' +
+						this.domain + '"><div id="parser"' + (this.selectable ? '>' : ' style="user-select:none">') + this._handleHtml(html).replace(/\n/g, '\\n') +
+						'</div><script>"use strict";function e(e){if(window.__dcloud_weex_postMessage||window.__dcloud_weex_){var t={data:[e]};window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessage(t):window.__dcloud_weex_.postMessage(JSON.stringify(t))}}document.body.onclick=function(){e({action:"click"})},' +
+						(this.showWithAnimation ? 'document.body.style.animation="_show .5s",' : '') +
+						'setTimeout(function(){e({action:"load",text:document.body.innerText,height:document.getElementById("parser").scrollHeight})},50);\x3c/script>';
+					this.$refs.web.evalJs("document.write('" + html.replace(/'/g, "\\'") + "');document.close()");
+				}
+				this.$refs.web.evalJs(
+					'var t=document.getElementsByTagName("title");t.length&&e({action:"getTitle",title:t[0].innerText});for(var o,n=document.getElementsByTagName("style"),r=1;o=n[r++];)o.innerHTML=o.innerHTML.replace(/body/g,"#parser");for(var a,c=document.getElementsByTagName("img"),s=[],i=0==c.length,d=0,l=0,g=0;a=c[l];l++)parseInt(a.style.width||a.getAttribute("width"))>' +
+					windowWidth + '&&(a.style.height="auto"),a.onload=function(){++d==c.length&&(i=!0)},a.onerror=function(){++d==c.length&&(i=!0),' + (cfg.errorImg ? 'this.src="' + cfg.errorImg + '",' : '') +
+					'e({action:"error",source:"img",target:this})},a.hasAttribute("ignore")||"A"==a.parentElement.nodeName||(a.i=g++,s.push(a.src),a.onclick=function(){e({action:"preview",img:{i:this.i,src:this.src}})});e({action:"getImgList",imgList:s});for(var u,m=document.getElementsByTagName("a"),f=0;u=m[f];f++)u.onclick=function(){var t,o=this.getAttribute("href");if("#"==o[0]){var n=document.getElementById(o.substr(1));n&&(t=n.offsetTop)}return e({action:"linkpress",href:o,offset:t}),!1};for(var h,y=document.getElementsByTagName("video"),v=0;h=y[v];v++)h.style.maxWidth="100%",h.onerror=function(){e({action:"error",source:"video",target:this})}' +
+					(this.autopause ? ',h.onplay=function(){for(var e,t=0;e=y[t];t++)e!=this&&e.pause()}' : '') +
+					';for(var _,p=document.getElementsByTagName("audio"),w=0;_=p[w];w++)_.onerror=function(){e({action:"error",source:"audio",target:this})};' +
+					(this.autoscroll ? 'for(var T,E=document.getElementsByTagName("table"),B=0;T=E[B];B++){var N=document.createElement("div");N.style.overflow="scroll",T.parentNode.replaceChild(N,T),N.appendChild(T)}' : '') +
+					'var x=document.getElementById("parser");clearInterval(window.timer),window.timer=setInterval(function(){i&&clearInterval(window.timer),e({action:"ready",ready:i,height:x.scrollHeight})},350)'
+				)
+				this.nodes = [1];
+				// #endif
+				// #ifdef H5 || MP-360
+				if (!html) {
+					if (this.rtf && !append) this.rtf.parentNode.removeChild(this.rtf);
+					return;
+				}
+				var div = document.createElement('div');
+				if (!append) {
+					if (this.rtf) this.rtf.parentNode.removeChild(this.rtf);
+					this.rtf = div;
+				} else {
+					if (!this.rtf) this.rtf = div;
+					else this.rtf.appendChild(div);
+				}
+				div.innerHTML = this._handleHtml(html, append);
+				for (var styles = this.rtf.getElementsByTagName('style'), i = 0, style; style = styles[i++];) {
+					style.innerHTML = style.innerHTML.replace(/body/g, '#rtf' + this._uid);
+					style.setAttribute('scoped', 'true');
+				}
+				// 懒加载
+				if (!this._observer && this.lazyLoad && IntersectionObserver) {
+					this._observer = new IntersectionObserver(changes => {
+						for (let item, i = 0; item = changes[i++];) {
+							if (item.isIntersecting) {
+								item.target.src = item.target.getAttribute('data-src');
+								item.target.removeAttribute('data-src');
+								this._observer.unobserve(item.target);
+							}
+						}
+					}, {
+						rootMargin: '500px 0px 500px 0px'
+					})
+				}
+				var _ts = this;
+				// 获取标题
+				var title = this.rtf.getElementsByTagName('title');
+				if (title.length && this.autosetTitle)
+					uni.setNavigationBarTitle({
+						title: title[0].innerText
+					})
+				// 图片处理
+				this.imgList.length = 0;
+				var imgs = this.rtf.getElementsByTagName('img');
+				for (let i = 0, j = 0, img; img = imgs[i]; i++) {
+					if (parseInt(img.style.width || img.getAttribute('width')) > windowWidth)
+						img.style.height = 'auto';
+					var src = img.getAttribute('src');
+					if (this.domain && src) {
+						if (src[0] == '/') {
+							if (src[1] == '/')
+								img.src = (this.domain.includes('://') ? this.domain.split('://')[0] : '') + ':' + src;
+							else img.src = this.domain + src;
+						} else if (!src.includes('://')) img.src = this.domain + '/' + src;
+					}
+					if (!img.hasAttribute('ignore') && img.parentElement.nodeName != 'A') {
+						img.i = j++;
+						_ts.imgList.push(img.src || img.getAttribute('data-src'));
+						img.onclick = function() {
+							var preview = true;
+							this.ignore = () => preview = false;
+							_ts.$emit('imgtap', this);
+							if (preview) {
+								uni.previewImage({
+									current: this.i,
+									urls: _ts.imgList
+								});
+							}
+						}
+					}
+					img.onerror = function() {
+						if (cfg.errorImg)
+							_ts.imgList[this.i] = this.src = cfg.errorImg;
+						_ts.$emit('error', {
+							source: 'img',
+							target: this
+						});
+					}
+					if (_ts.lazyLoad && this._observer && img.src && img.i != 0) {
+						img.setAttribute('data-src', img.src);
+						img.removeAttribute('src');
+						this._observer.observe(img);
+					}
+				}
+				// 链接处理
+				var links = this.rtf.getElementsByTagName('a');
+				for (var link of links) {
+					link.onclick = function() {
+						var jump = true,
+							href = this.getAttribute('href');
+						_ts.$emit('linkpress', {
+							href,
+							ignore: () => jump = false
+						});
+						if (jump && href) {
+							if (href[0] == '#') {
+								if (_ts.useAnchor) {
+									_ts.navigateTo({
+										id: href.substr(1)
+									})
+								}
+							} else if (href.indexOf('http') == 0 || href.indexOf('//') == 0)
+								return true;
+							else
+								uni.navigateTo({
+									url: href
+								})
+						}
+						return false;
+					}
+				}
+				// 视频处理
+				var videos = this.rtf.getElementsByTagName('video');
+				_ts.videoContexts = videos;
+				for (let video, i = 0; video = videos[i++];) {
+					video.style.maxWidth = '100%';
+					video.onerror = function() {
+						_ts.$emit('error', {
+							source: 'video',
+							target: this
+						});
+					}
+					video.onplay = function() {
+						if (_ts.autopause)
+							for (let item, i = 0; item = _ts.videoContexts[i++];)
+								if (item != this) item.pause();
+					}
+				}
+				// 音频处理
+				var audios = this.rtf.getElementsByTagName('audio');
+				for (var audio of audios)
+					audio.onerror = function() {
+						_ts.$emit('error', {
+							source: 'audio',
+							target: this
+						});
+					}
+				// 表格处理
+				if (this.autoscroll) {
+					var tables = this.rtf.getElementsByTagName('table');
+					for (var table of tables) {
+						let div = document.createElement('div');
+						div.style.overflow = 'scroll';
+						table.parentNode.replaceChild(div, table);
+						div.appendChild(table);
+					}
+				}
+				if (!append) this.document.appendChild(this.rtf);
+				this.$nextTick(() => {
+					this.nodes = [1];
+					this.$emit('load');
+				});
+				setTimeout(() => this.showAm = '', 500);
+				// #endif
+				// #ifndef APP-PLUS-NVUE
+				// #ifndef H5 || MP-360
+				var nodes;
+				if (!html) return this.nodes = [];
+				var parser = new Parser(html, this);
+				// 缓存读取
+				if (this.useCache) {
+					var hashVal = hash(html);
+					if (cache[hashVal])
+						nodes = cache[hashVal];
+					else {
+						nodes = parser.parse();
+						cache[hashVal] = nodes;
+					}
+				} else nodes = parser.parse();
+				this.$emit('parse', nodes);
+				if (append) this.nodes = this.nodes.concat(nodes);
+				else this.nodes = nodes;
+				if (nodes.length && nodes.title && this.autosetTitle)
+					uni.setNavigationBarTitle({
+						title: nodes.title
+					})
+				if (this.imgList) this.imgList.length = 0;
+				this.videoContexts = [];
+				this.$nextTick(() => {
+					(function f(cs) {
+						for (var i = cs.length; i--;) {
+							if (cs[i].top) {
+								cs[i].controls = [];
+								cs[i].init();
+								f(cs[i].$children);
+							}
+						}
+					})(this.$children)
+					this.$emit('load');
+				})
+				// #endif
+				var height;
+				clearInterval(this._timer);
+				this._timer = setInterval(() => {
+					// #ifdef H5 || MP-360
+					this.rect = this.rtf.getBoundingClientRect();
+					// #endif
+					// #ifndef H5 || MP-360
+					uni.createSelectorQuery().in(this)
+						.select('#_top').boundingClientRect().exec(res => {
+							if (!res) return;
+							this.rect = res[0];
+							// #endif
+							if (this.rect.height == height) {
+								this.$emit('ready', this.rect)
+								clearInterval(this._timer);
+							}
+							height = this.rect.height;
+							// #ifndef H5 || MP-360
+						});
+					// #endif
+				}, 350);
+				if (this.showWithAnimation && !append) this.showAm = 'animation:_show .5s';
+				// #endif
+			},
+			// 获取文本内容
+			getText(ns = this.nodes) {
+				var txt = '';
+				// #ifdef APP-PLUS-NVUE
+				txt = this._text;
+				// #endif
+				// #ifdef H5 || MP-360
+				txt = this.rtf.innerText;
+				// #endif
+				// #ifndef H5 || APP-PLUS-NVUE || MP-360
+				for (var i = 0, n; n = ns[i++];) {
+					if (n.type == 'text') txt += n.text.replace(/&nbsp;/g, '\u00A0').replace(/&lt;/g, '<').replace(/&gt;/g, '>')
+						.replace(/&amp;/g, '&');
+					else if (n.type == 'br') txt += '\n';
+					else {
+						// 块级标签前后加换行
+						var block = n.name == 'p' || n.name == 'div' || n.name == 'tr' || n.name == 'li' || (n.name[0] == 'h' && n.name[1] >
+							'0' && n.name[1] < '7');
+						if (block && txt && txt[txt.length - 1] != '\n') txt += '\n';
+						if (n.children) txt += this.getText(n.children);
+						if (block && txt[txt.length - 1] != '\n') txt += '\n';
+						else if (n.name == 'td' || n.name == 'th') txt += '\t';
+					}
+				}
+				// #endif
+				return txt;
+			},
+			// 锚点跳转
+			in (obj) {
+				if (obj.page && obj.selector && obj.scrollTop) this._in = obj;
+			},
+			navigateTo(obj) {
+				if (!this.useAnchor) return obj.fail && obj.fail('Anchor is disabled');
+				// #ifdef APP-PLUS-NVUE
+				if (!obj.id)
+					weexDom.scrollToElement(this.$refs.web);
+				else
+					this.$refs.web.evalJs('var pos=document.getElementById("' + obj.id +
+						'");if(pos)post({action:"linkpress",href:"#",offset:pos.offsetTop+' + (obj.offset || 0) + '})');
+				obj.success && obj.success();
+				// #endif
+				// #ifndef APP-PLUS-NVUE
+				var d = ' ';
+				// #ifdef MP-WEIXIN || MP-QQ || MP-TOUTIAO
+				d = '>>>';
+				// #endif
+				var selector = uni.createSelectorQuery().in(this._in ? this._in.page : this).select((this._in ? this._in.selector :
+					'#_top') + (obj.id ? `${d}#${obj.id},${this._in?this._in.selector:'#_top'}${d}.${obj.id}` : '')).boundingClientRect();
+				if (this._in) selector.select(this._in.selector).scrollOffset().select(this._in.selector).boundingClientRect();
+				else selector.selectViewport().scrollOffset();
+				selector.exec(res => {
+					if (!res[0]) return obj.fail && obj.fail('Label not found')
+					var scrollTop = res[1].scrollTop + res[0].top - (res[2] ? res[2].top : 0) + (obj.offset || 0);
+					if (this._in) this._in.page[this._in.scrollTop] = scrollTop;
+					else uni.pageScrollTo({
+						scrollTop,
+						duration: 300
+					})
+					obj.success && obj.success();
+				})
+				// #endif
+			},
+			// 获取视频对象
+			getVideoContext(id) {
+				// #ifndef APP-PLUS-NVUE
+				if (!id) return this.videoContexts;
+				else
+					for (var i = this.videoContexts.length; i--;)
+						if (this.videoContexts[i].id == id) return this.videoContexts[i];
+				// #endif
+			},
+			// #ifdef H5 || APP-PLUS-NVUE || MP-360
+			_handleHtml(html, append) {
+				if (!append) {
+					// 处理 tag-style 和 userAgentStyles
+					var style = '<style>@keyframes _show{0%{opacity:0}100%{opacity:1}}img{max-width:100%}';
+					for (var item in cfg.userAgentStyles)
+						style += `${item}{${cfg.userAgentStyles[item]}}`;
+					for (item in this.tagStyle)
+						style += `${item}{${this.tagStyle[item]}}`;
+					style += '</style>';
+					html = style + html;
+				}
+				// 处理 rpx
+				if (html.includes('rpx'))
+					html = html.replace(/[0-9.]+\s*rpx/g, $ => (parseFloat($) * windowWidth / 750) + 'px');
+				return html;
+			},
+			// #endif
+			// #ifdef APP-PLUS-NVUE
+			_message(e) {
+				// 接收 web-view 消息
+				var d = e.detail.data[0];
+				switch (d.action) {
+					case 'load':
+						this.$emit('load');
+						this.height = d.height;
+						this._text = d.text;
+						break;
+					case 'getTitle':
+						if (this.autosetTitle)
+							uni.setNavigationBarTitle({
+								title: d.title
+							})
+						break;
+					case 'getImgList':
+						this.imgList.length = 0;
+						for (var i = d.imgList.length; i--;)
+							this.imgList.setItem(i, d.imgList[i]);
+						break;
+					case 'preview':
+						var preview = true;
+						d.img.ignore = () => preview = false;
+						this.$emit('imgtap', d.img);
+						if (preview)
+							uni.previewImage({
+								current: d.img.i,
+								urls: this.imgList
+							})
+						break;
+					case 'linkpress':
+						var jump = true,
+							href = d.href;
+						this.$emit('linkpress', {
+							href,
+							ignore: () => jump = false
+						})
+						if (jump && href) {
+							if (href[0] == '#') {
+								if (this.useAnchor)
+									weexDom.scrollToElement(this.$refs.web, {
+										offset: d.offset
+									})
+							} else if (href.includes('://'))
+								plus.runtime.openWeb(href);
+							else
+								uni.navigateTo({
+									url: href
+								})
+						}
+						break;
+					case 'error':
+						if (d.source == 'img' && cfg.errorImg)
+							this.imgList.setItem(d.target.i, cfg.errorImg);
+						this.$emit('error', {
+							source: d.source,
+							target: d.target
+						})
+						break;
+					case 'ready':
+						this.height = d.height;
+						if (d.ready) uni.createSelectorQuery().in(this).select('#_top').boundingClientRect().exec(res => {
+							this.rect = res[0];
+							this.$emit('ready', res[0]);
+						})
+						break;
+					case 'click':
+						this.$emit('click');
+						this.$emit('tap');
+				}
+			},
+			// #endif
+		}
+	}
+</script>
+
+<style>
+	@keyframes _show {
+		0% {
+			opacity: 0;
+		}
+
+		100% {
+			opacity: 1;
+		}
+	}
+
+	/* #ifdef MP-WEIXIN */
+	:host {
+		display: block;
+		overflow: scroll;
+		-webkit-overflow-scrolling: touch;
+	}
+
+	/* #endif */
+</style>

+ 97 - 0
components/jyf-parser/libs/CssHandler.js

@@ -0,0 +1,97 @@
+const cfg = require('./config.js'),
+	isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
+
+function CssHandler(tagStyle) {
+	var styles = Object.assign(Object.create(null), cfg.userAgentStyles);
+	for (var item in tagStyle)
+		styles[item] = (styles[item] ? styles[item] + ';' : '') + tagStyle[item];
+	this.styles = styles;
+}
+CssHandler.prototype.getStyle = function(data) {
+	this.styles = new parser(data, this.styles).parse();
+}
+CssHandler.prototype.match = function(name, attrs) {
+	var tmp, matched = (tmp = this.styles[name]) ? tmp + ';' : '';
+	if (attrs.class) {
+		var items = attrs.class.split(' ');
+		for (var i = 0, item; item = items[i]; i++)
+			if (tmp = this.styles['.' + item])
+				matched += tmp + ';';
+	}
+	if (tmp = this.styles['#' + attrs.id])
+		matched += tmp + ';';
+	return matched;
+}
+module.exports = CssHandler;
+
+function parser(data, init) {
+	this.data = data;
+	this.floor = 0;
+	this.i = 0;
+	this.list = [];
+	this.res = init;
+	this.state = this.Space;
+}
+parser.prototype.parse = function() {
+	for (var c; c = this.data[this.i]; this.i++)
+		this.state(c);
+	return this.res;
+}
+parser.prototype.section = function() {
+	return this.data.substring(this.start, this.i);
+}
+// 状态机
+parser.prototype.Space = function(c) {
+	if (c == '.' || c == '#' || isLetter(c)) {
+		this.start = this.i;
+		this.state = this.Name;
+	} else if (c == '/' && this.data[this.i + 1] == '*')
+		this.Comment();
+	else if (!cfg.blankChar[c] && c != ';')
+		this.state = this.Ignore;
+}
+parser.prototype.Comment = function() {
+	this.i = this.data.indexOf('*/', this.i) + 1;
+	if (!this.i) this.i = this.data.length;
+	this.state = this.Space;
+}
+parser.prototype.Ignore = function(c) {
+	if (c == '{') this.floor++;
+	else if (c == '}' && !--this.floor) this.state = this.Space;
+}
+parser.prototype.Name = function(c) {
+	if (cfg.blankChar[c]) {
+		this.list.push(this.section());
+		this.state = this.NameSpace;
+	} else if (c == '{') {
+		this.list.push(this.section());
+		this.Content();
+	} else if (c == ',') {
+		this.list.push(this.section());
+		this.Comma();
+	} else if (!isLetter(c) && (c < '0' || c > '9') && c != '-' && c != '_')
+		this.state = this.Ignore;
+}
+parser.prototype.NameSpace = function(c) {
+	if (c == '{') this.Content();
+	else if (c == ',') this.Comma();
+	else if (!cfg.blankChar[c]) this.state = this.Ignore;
+}
+parser.prototype.Comma = function() {
+	while (cfg.blankChar[this.data[++this.i]]);
+	if (this.data[this.i] == '{') this.Content();
+	else {
+		this.start = this.i--;
+		this.state = this.Name;
+	}
+}
+parser.prototype.Content = function() {
+	this.start = ++this.i;
+	if ((this.i = this.data.indexOf('}', this.i)) == -1) this.i = this.data.length;
+	var content = this.section();
+	for (var i = 0, item; item = this.list[i++];)
+		if (this.res[item]) this.res[item] += ';' + content;
+		else this.res[item] = content;
+	this.list = [];
+	this.state = this.Space;
+}

+ 535 - 0
components/jyf-parser/libs/MpHtmlParser.js

@@ -0,0 +1,535 @@
+/**
+ * html 解析器
+ * @tutorial https://github.com/jin-yufeng/Parser
+ * @version 20200728
+ * @author JinYufeng
+ * @listens MIT
+ */
+const cfg = require('./config.js'),
+	blankChar = cfg.blankChar,
+	CssHandler = require('./CssHandler.js'),
+	windowWidth = uni.getSystemInfoSync().windowWidth;
+var emoji;
+
+function MpHtmlParser(data, options = {}) {
+	this.attrs = {};
+	this.CssHandler = new CssHandler(options.tagStyle, windowWidth);
+	this.data = data;
+	this.domain = options.domain;
+	this.DOM = [];
+	this.i = this.start = this.audioNum = this.imgNum = this.videoNum = 0;
+	options.prot = (this.domain || '').includes('://') ? this.domain.split('://')[0] : 'http';
+	this.options = options;
+	this.state = this.Text;
+	this.STACK = [];
+	// 工具函数
+	this.bubble = () => {
+		for (var i = this.STACK.length, item; item = this.STACK[--i];) {
+			if (cfg.richOnlyTags[item.name]) {
+				if (item.name == 'table' && !Object.hasOwnProperty.call(item, 'c')) item.c = 1;
+				return false;
+			}
+			item.c = 1;
+		}
+		return true;
+	}
+	this.decode = (val, amp) => {
+		var i = -1,
+			j, en;
+		while (1) {
+			if ((i = val.indexOf('&', i + 1)) == -1) break;
+			if ((j = val.indexOf(';', i + 2)) == -1) break;
+			if (val[i + 1] == '#') {
+				en = parseInt((val[i + 2] == 'x' ? '0' : '') + val.substring(i + 2, j));
+				if (!isNaN(en)) val = val.substr(0, i) + String.fromCharCode(en) + val.substr(j + 1);
+			} else {
+				en = val.substring(i + 1, j);
+				if (cfg.entities[en] || en == amp)
+					val = val.substr(0, i) + (cfg.entities[en] || '&') + val.substr(j + 1);
+			}
+		}
+		return val;
+	}
+	this.getUrl = url => {
+		if (url[0] == '/') {
+			if (url[1] == '/') url = this.options.prot + ':' + url;
+			else if (this.domain) url = this.domain + url;
+		} else if (this.domain && url.indexOf('data:') != 0 && !url.includes('://'))
+			url = this.domain + '/' + url;
+		return url;
+	}
+	this.isClose = () => this.data[this.i] == '>' || (this.data[this.i] == '/' && this.data[this.i + 1] == '>');
+	this.section = () => this.data.substring(this.start, this.i);
+	this.parent = () => this.STACK[this.STACK.length - 1];
+	this.siblings = () => this.STACK.length ? this.parent().children : this.DOM;
+}
+MpHtmlParser.prototype.parse = function() {
+	if (emoji) this.data = emoji.parseEmoji(this.data);
+	for (var c; c = this.data[this.i]; this.i++)
+		this.state(c);
+	if (this.state == this.Text) this.setText();
+	while (this.STACK.length) this.popNode(this.STACK.pop());
+	return this.DOM;
+}
+// 设置属性
+MpHtmlParser.prototype.setAttr = function() {
+	var name = this.attrName.toLowerCase(),
+		val = this.attrVal;
+	if (cfg.boolAttrs[name]) this.attrs[name] = 'T';
+	else if (val) {
+		if (name == 'src' || (name == 'data-src' && !this.attrs.src)) this.attrs.src = this.getUrl(this.decode(val, 'amp'));
+		else if (name == 'href' || name == 'style') this.attrs[name] = this.decode(val, 'amp');
+		else if (name.substr(0, 5) != 'data-') this.attrs[name] = val;
+	}
+	this.attrVal = '';
+	while (blankChar[this.data[this.i]]) this.i++;
+	if (this.isClose()) this.setNode();
+	else {
+		this.start = this.i;
+		this.state = this.AttrName;
+	}
+}
+// 设置文本节点
+MpHtmlParser.prototype.setText = function() {
+	var back, text = this.section();
+	if (!text) return;
+	text = (cfg.onText && cfg.onText(text, () => back = true)) || text;
+	if (back) {
+		this.data = this.data.substr(0, this.start) + text + this.data.substr(this.i);
+		let j = this.start + text.length;
+		for (this.i = this.start; this.i < j; this.i++) this.state(this.data[this.i]);
+		return;
+	}
+	if (!this.pre) {
+		// 合并空白符
+		var flag, tmp = [];
+		for (let i = text.length, c; c = text[--i];)
+			if (!blankChar[c]) {
+				tmp.unshift(c);
+				if (!flag) flag = 1;
+			} else {
+				if (tmp[0] != ' ') tmp.unshift(' ');
+				if (c == '\n' && flag == void 0) flag = 0;
+			}
+		if (flag == 0) return;
+		text = tmp.join('');
+	}
+	this.siblings().push({
+		type: 'text',
+		text: this.decode(text)
+	});
+}
+// 设置元素节点
+MpHtmlParser.prototype.setNode = function() {
+	var node = {
+			name: this.tagName.toLowerCase(),
+			attrs: this.attrs
+		},
+		close = cfg.selfClosingTags[node.name];
+	if (this.options.nodes.length) node.type = 'node';
+	this.attrs = {};
+	if (!cfg.ignoreTags[node.name]) {
+		// 处理属性
+		var attrs = node.attrs,
+			style = this.CssHandler.match(node.name, attrs, node) + (attrs.style || ''),
+			styleObj = {};
+		if (attrs.id) {
+			if (this.options.compress & 1) attrs.id = void 0;
+			else if (this.options.useAnchor) this.bubble();
+		}
+		if ((this.options.compress & 2) && attrs.class) attrs.class = void 0;
+		switch (node.name) {
+			case 'a':
+			case 'ad': // #ifdef APP-PLUS
+			case 'iframe':
+				// #endif
+				this.bubble();
+				break;
+			case 'font':
+				if (attrs.color) {
+					styleObj['color'] = attrs.color;
+					attrs.color = void 0;
+				}
+				if (attrs.face) {
+					styleObj['font-family'] = attrs.face;
+					attrs.face = void 0;
+				}
+				if (attrs.size) {
+					var size = parseInt(attrs.size);
+					if (size < 1) size = 1;
+					else if (size > 7) size = 7;
+					var map = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'];
+					styleObj['font-size'] = map[size - 1];
+					attrs.size = void 0;
+				}
+				break;
+			case 'embed':
+				// #ifndef APP-PLUS
+				var src = node.attrs.src || '',
+					type = node.attrs.type || '';
+				if (type.includes('video') || src.includes('.mp4') || src.includes('.3gp') || src.includes('.m3u8'))
+					node.name = 'video';
+				else if (type.includes('audio') || src.includes('.m4a') || src.includes('.wav') || src.includes('.mp3') || src.includes(
+						'.aac'))
+					node.name = 'audio';
+				else break;
+				if (node.attrs.autostart)
+					node.attrs.autoplay = 'T';
+				node.attrs.controls = 'T';
+				// #endif
+				// #ifdef APP-PLUS
+				this.bubble();
+				break;
+				// #endif
+			case 'video':
+			case 'audio':
+				if (!attrs.id) attrs.id = node.name + (++this[`${node.name}Num`]);
+				else this[`${node.name}Num`]++;
+				if (node.name == 'video') {
+					if (this.videoNum > 3)
+						node.lazyLoad = 1;
+					if (attrs.width) {
+						styleObj.width = parseFloat(attrs.width) + (attrs.width.includes('%') ? '%' : 'px');
+						attrs.width = void 0;
+					}
+					if (attrs.height) {
+						styleObj.height = parseFloat(attrs.height) + (attrs.height.includes('%') ? '%' : 'px');
+						attrs.height = void 0;
+					}
+				}
+				if (!attrs.controls && !attrs.autoplay) attrs.controls = 'T';
+				attrs.source = [];
+				if (attrs.src) {
+					attrs.source.push(attrs.src);
+					attrs.src = void 0;
+				}
+				this.bubble();
+				break;
+			case 'td':
+			case 'th':
+				if (attrs.colspan || attrs.rowspan)
+					for (var k = this.STACK.length, item; item = this.STACK[--k];)
+						if (item.name == 'table') {
+							item.c = void 0;
+							break;
+						}
+		}
+		if (attrs.align) {
+			styleObj['text-align'] = attrs.align;
+			attrs.align = void 0;
+		}
+		// 压缩 style
+		var styles = style.split(';');
+		style = '';
+		for (var i = 0, len = styles.length; i < len; i++) {
+			var info = styles[i].split(':');
+			if (info.length < 2) continue;
+			let key = info[0].trim().toLowerCase(),
+				value = info.slice(1).join(':').trim();
+			if (value[0] == '-' || value.includes('safe'))
+				style += `;${key}:${value}`;
+			else if (!styleObj[key] || value.includes('import') || !styleObj[key].includes('import'))
+				styleObj[key] = value;
+		}
+		if (node.name == 'img') {
+			if (attrs.src && !attrs.ignore) {
+				if (this.bubble())
+					attrs.i = (this.imgNum++).toString();
+				else attrs.ignore = 'T';
+			}
+			if (attrs.ignore) {
+				style += ';-webkit-touch-callout:none';
+				styleObj['max-width'] = '100%';
+			}
+			var width;
+			if (styleObj.width) width = styleObj.width;
+			else if (attrs.width) width = attrs.width.includes('%') ? attrs.width : attrs.width + 'px';
+			if (width) {
+				styleObj.width = width;
+				attrs.width = '100%';
+				if (parseInt(width) > windowWidth) {
+					styleObj.height = '';
+					if (attrs.height) attrs.height = void 0;
+				}
+			}
+			if (styleObj.height) {
+				attrs.height = styleObj.height;
+				styleObj.height = '';
+			} else if (attrs.height && !attrs.height.includes('%'))
+				attrs.height += 'px';
+		}
+		for (var key in styleObj) {
+			var value = styleObj[key];
+			if (!value) continue;
+			if (key.includes('flex') || key == 'order' || key == 'self-align') node.c = 1;
+			// 填充链接
+			if (value.includes('url')) {
+				var j = value.indexOf('(');
+				if (j++ != -1) {
+					while (value[j] == '"' || value[j] == "'" || blankChar[value[j]]) j++;
+					value = value.substr(0, j) + this.getUrl(value.substr(j));
+				}
+			}
+			// 转换 rpx
+			else if (value.includes('rpx'))
+				value = value.replace(/[0-9.]+\s*rpx/g, $ => parseFloat($) * windowWidth / 750 + 'px');
+			else if (key == 'white-space' && value.includes('pre') && !close)
+				this.pre = node.pre = true;
+			style += `;${key}:${value}`;
+		}
+		style = style.substr(1);
+		if (style) attrs.style = style;
+		if (!close) {
+			node.children = [];
+			if (node.name == 'pre' && cfg.highlight) {
+				this.remove(node);
+				this.pre = node.pre = true;
+			}
+			this.siblings().push(node);
+			this.STACK.push(node);
+		} else if (!cfg.filter || cfg.filter(node, this) != false)
+			this.siblings().push(node);
+	} else {
+		if (!close) this.remove(node);
+		else if (node.name == 'source') {
+			var parent = this.parent();
+			if (parent && (parent.name == 'video' || parent.name == 'audio') && node.attrs.src)
+				parent.attrs.source.push(node.attrs.src);
+		} else if (node.name == 'base' && !this.domain) this.domain = node.attrs.href;
+	}
+	if (this.data[this.i] == '/') this.i++;
+	this.start = this.i + 1;
+	this.state = this.Text;
+}
+// 移除标签
+MpHtmlParser.prototype.remove = function(node) {
+	var name = node.name,
+		j = this.i;
+	// 处理 svg
+	var handleSvg = () => {
+		var src = this.data.substring(j, this.i + 1);
+		if (!node.attrs.xmlns) src = ' xmlns="http://www.w3.org/2000/svg"' + src;
+		var i = j;
+		while (this.data[j] != '<') j--;
+		src = this.data.substring(j, i).replace("viewbox", "viewBox") + src;
+		var parent = this.parent();
+		if (node.attrs.width == '100%' && parent && (parent.attrs.style || '').includes('inline'))
+			parent.attrs.style = 'width:300px;max-width:100%;' + parent.attrs.style;
+		this.siblings().push({
+			name: 'img',
+			attrs: {
+				src: 'data:image/svg+xml;utf8,' + src.replace(/#/g, '%23'),
+				style: (/vertical[^;]+/.exec(node.attrs.style) || []).shift(),
+				ignore: 'T'
+			}
+		})
+	}
+	if (node.name == 'svg' && this.data[j] == '/') return handleSvg(this.i++);
+	while (1) {
+		if ((this.i = this.data.indexOf('</', this.i + 1)) == -1) {
+			if (name == 'pre' || name == 'svg') this.i = j;
+			else this.i = this.data.length;
+			return;
+		}
+		this.start = (this.i += 2);
+		while (!blankChar[this.data[this.i]] && !this.isClose()) this.i++;
+		if (this.section().toLowerCase() == name) {
+			// 代码块高亮
+			if (name == 'pre') {
+				this.data = this.data.substr(0, j + 1) + cfg.highlight(this.data.substring(j + 1, this.i - 5), node.attrs) + this.data
+					.substr(this.i - 5);
+				return this.i = j;
+			} else if (name == 'style')
+				this.CssHandler.getStyle(this.data.substring(j + 1, this.i - 7));
+			else if (name == 'title')
+				this.DOM.title = this.data.substring(j + 1, this.i - 7);
+			if ((this.i = this.data.indexOf('>', this.i)) == -1) this.i = this.data.length;
+			if (name == 'svg') handleSvg();
+			return;
+		}
+	}
+}
+// 节点出栈处理
+MpHtmlParser.prototype.popNode = function(node) {
+	// 空白符处理
+	if (node.pre) {
+		node.pre = this.pre = void 0;
+		for (let i = this.STACK.length; i--;)
+			if (this.STACK[i].pre)
+				this.pre = true;
+	}
+	var siblings = this.siblings(),
+		len = siblings.length,
+		childs = node.children;
+	if (node.name == 'head' || (cfg.filter && cfg.filter(node, this) == false))
+		return siblings.pop();
+	var attrs = node.attrs;
+	// 替换一些标签名
+	if (cfg.blockTags[node.name]) node.name = 'div';
+	else if (!cfg.trustTags[node.name]) node.name = 'span';
+	// 处理列表
+	if (node.c && (node.name == 'ul' || node.name == 'ol')) {
+		if ((node.attrs.style || '').includes('list-style:none')) {
+			for (let i = 0, child; child = childs[i++];)
+				if (child.name == 'li')
+					child.name = 'div';
+		} else if (node.name == 'ul') {
+			var floor = 1;
+			for (let i = this.STACK.length; i--;)
+				if (this.STACK[i].name == 'ul') floor++;
+			if (floor != 1)
+				for (let i = childs.length; i--;)
+					childs[i].floor = floor;
+		} else {
+			for (let i = 0, num = 1, child; child = childs[i++];)
+				if (child.name == 'li') {
+					child.type = 'ol';
+					child.num = ((num, type) => {
+						if (type == 'a') return String.fromCharCode(97 + (num - 1) % 26);
+						if (type == 'A') return String.fromCharCode(65 + (num - 1) % 26);
+						if (type == 'i' || type == 'I') {
+							num = (num - 1) % 99 + 1;
+							var one = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
+								ten = ['X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
+								res = (ten[Math.floor(num / 10) - 1] || '') + (one[num % 10 - 1] || '');
+							if (type == 'i') return res.toLowerCase();
+							return res;
+						}
+						return num;
+					})(num++, attrs.type) + '.';
+				}
+		}
+	}
+	// 处理表格的边框
+	if (node.name == 'table') {
+		var padding = attrs.cellpadding,
+			spacing = attrs.cellspacing,
+			border = attrs.border;
+		if (node.c) {
+			this.bubble();
+			attrs.style = (attrs.style || '') + ';display:table';
+			if (!padding) padding = 2;
+			if (!spacing) spacing = 2;
+		}
+		if (border) attrs.style = `border:${border}px solid gray;${attrs.style || ''}`;
+		if (spacing) attrs.style = `border-spacing:${spacing}px;${attrs.style || ''}`;
+		if (border || padding || node.c)
+			(function f(ns) {
+				for (var i = 0, n; n = ns[i]; i++) {
+					if (n.type == 'text') continue;
+					var style = n.attrs.style || '';
+					if (node.c && n.name[0] == 't') {
+						n.c = 1;
+						style += ';display:table-' + (n.name == 'th' || n.name == 'td' ? 'cell' : (n.name == 'tr' ? 'row' : 'row-group'));
+					}
+					if (n.name == 'th' || n.name == 'td') {
+						if (border) style = `border:${border}px solid gray;${style}`;
+						if (padding) style = `padding:${padding}px;${style}`;
+					} else f(n.children || []);
+					if (style) n.attrs.style = style;
+				}
+			})(childs)
+		if (this.options.autoscroll) {
+			var table = Object.assign({}, node);
+			node.name = 'div';
+			node.attrs = {
+				style: 'overflow:scroll'
+			}
+			node.children = [table];
+		}
+	}
+	this.CssHandler.pop && this.CssHandler.pop(node);
+	// 自动压缩
+	if (node.name == 'div' && !Object.keys(attrs).length && childs.length == 1 && childs[0].name == 'div')
+		siblings[len - 1] = childs[0];
+}
+// 状态机
+MpHtmlParser.prototype.Text = function(c) {
+	if (c == '<') {
+		var next = this.data[this.i + 1],
+			isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
+		if (isLetter(next)) {
+			this.setText();
+			this.start = this.i + 1;
+			this.state = this.TagName;
+		} else if (next == '/') {
+			this.setText();
+			if (isLetter(this.data[++this.i + 1])) {
+				this.start = this.i + 1;
+				this.state = this.EndTag;
+			} else this.Comment();
+		} else if (next == '!' || next == '?') {
+			this.setText();
+			this.Comment();
+		}
+	}
+}
+MpHtmlParser.prototype.Comment = function() {
+	var key;
+	if (this.data.substring(this.i + 2, this.i + 4) == '--') key = '-->';
+	else if (this.data.substring(this.i + 2, this.i + 9) == '[CDATA[') key = ']]>';
+	else key = '>';
+	if ((this.i = this.data.indexOf(key, this.i + 2)) == -1) this.i = this.data.length;
+	else this.i += key.length - 1;
+	this.start = this.i + 1;
+	this.state = this.Text;
+}
+MpHtmlParser.prototype.TagName = function(c) {
+	if (blankChar[c]) {
+		this.tagName = this.section();
+		while (blankChar[this.data[this.i]]) this.i++;
+		if (this.isClose()) this.setNode();
+		else {
+			this.start = this.i;
+			this.state = this.AttrName;
+		}
+	} else if (this.isClose()) {
+		this.tagName = this.section();
+		this.setNode();
+	}
+}
+MpHtmlParser.prototype.AttrName = function(c) {
+	if (c == '=' || blankChar[c] || this.isClose()) {
+		this.attrName = this.section();
+		if (blankChar[c])
+			while (blankChar[this.data[++this.i]]);
+		if (this.data[this.i] == '=') {
+			while (blankChar[this.data[++this.i]]);
+			this.start = this.i--;
+			this.state = this.AttrValue;
+		} else this.setAttr();
+	}
+}
+MpHtmlParser.prototype.AttrValue = function(c) {
+	if (c == '"' || c == "'") {
+		this.start++;
+		if ((this.i = this.data.indexOf(c, this.i + 1)) == -1) return this.i = this.data.length;
+		this.attrVal = this.section();
+		this.i++;
+	} else {
+		for (; !blankChar[this.data[this.i]] && !this.isClose(); this.i++);
+		this.attrVal = this.section();
+	}
+	this.setAttr();
+}
+MpHtmlParser.prototype.EndTag = function(c) {
+	if (blankChar[c] || c == '>' || c == '/') {
+		var name = this.section().toLowerCase();
+		for (var i = this.STACK.length; i--;)
+			if (this.STACK[i].name == name) break;
+		if (i != -1) {
+			var node;
+			while ((node = this.STACK.pop()).name != name) this.popNode(node);
+			this.popNode(node);
+		} else if (name == 'p' || name == 'br')
+			this.siblings().push({
+				name,
+				attrs: {}
+			});
+		this.i = this.data.indexOf('>', this.i);
+		this.start = this.i + 1;
+		if (this.i == -1) this.i = this.data.length;
+		else this.state = this.Text;
+	}
+}
+module.exports = MpHtmlParser;

+ 80 - 0
components/jyf-parser/libs/config.js

@@ -0,0 +1,80 @@
+/* 配置文件 */
+var cfg = {
+	// 出错占位图
+	errorImg: null,
+	// 过滤器函数
+	filter: null,
+	// 代码高亮函数
+	highlight: null,
+	// 文本处理函数
+	onText: null,
+	// 实体编码列表
+	entities: {
+		quot: '"',
+		apos: "'",
+		semi: ';',
+		nbsp: '\xA0',
+		ensp: '\u2002',
+		emsp: '\u2003',
+		ndash: '–',
+		mdash: '—',
+		middot: '·',
+		lsquo: '‘',
+		rsquo: '’',
+		ldquo: '“',
+		rdquo: '”',
+		bull: '•',
+		hellip: '…'
+	},
+	blankChar: makeMap(' ,\xA0,\t,\r,\n,\f'),
+	boolAttrs: makeMap('allowfullscreen,autoplay,autostart,controls,ignore,loop,muted'),
+	// 块级标签,将被转为 div
+	blockTags: makeMap('address,article,aside,body,caption,center,cite,footer,header,html,nav,pre,section'),
+	// 将被移除的标签
+	ignoreTags: makeMap('area,base,canvas,frame,iframe,input,link,map,meta,param,script,source,style,svg,textarea,title,track,wbr'),
+	// 只能被 rich-text 显示的标签
+	richOnlyTags: makeMap('a,colgroup,fieldset,legend,table'),
+	// 自闭合的标签
+	selfClosingTags: makeMap('area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr'),
+	// 信任的标签
+	trustTags: makeMap('a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video'),
+	// 默认的标签样式
+	userAgentStyles: {
+		address: 'font-style:italic',
+		big: 'display:inline;font-size:1.2em',
+		blockquote: 'background-color:#f6f6f6;border-left:3px solid #dbdbdb;color:#6c6c6c;padding:5px 0 5px 10px',
+		caption: 'display:table-caption;text-align:center',
+		center: 'text-align:center',
+		cite: 'font-style:italic',
+		dd: 'margin-left:40px',
+		mark: 'background-color:yellow',
+		pre: 'font-family:monospace;white-space:pre;overflow:scroll',
+		s: 'text-decoration:line-through',
+		small: 'display:inline;font-size:0.8em',
+		u: 'text-decoration:underline'
+	}
+}
+
+function makeMap(str) {
+	var map = Object.create(null),
+		list = str.split(',');
+	for (var i = list.length; i--;)
+		map[list[i]] = true;
+	return map;
+}
+
+// #ifdef MP-WEIXIN
+if (wx.canIUse('editor')) {
+	cfg.blockTags.pre = void 0;
+	cfg.ignoreTags.rp = true;
+	Object.assign(cfg.richOnlyTags, makeMap('bdi,bdo,caption,rt,ruby'));
+	Object.assign(cfg.trustTags, makeMap('bdi,bdo,caption,pre,rt,ruby'));
+}
+// #endif
+
+// #ifdef APP-PLUS
+cfg.ignoreTags.iframe = void 0;
+Object.assign(cfg.trustTags, makeMap('embed,iframe'));
+// #endif
+
+module.exports = cfg;

+ 22 - 0
components/jyf-parser/libs/handler.wxs

@@ -0,0 +1,22 @@
+var inline = {
+	abbr: 1,
+	b: 1,
+	big: 1,
+	code: 1,
+	del: 1,
+	em: 1,
+	i: 1,
+	ins: 1,
+	label: 1,
+	q: 1,
+	small: 1,
+	span: 1,
+	strong: 1,
+	sub: 1,
+	sup: 1
+}
+module.exports = {
+	use: function(item) {
+		return !item.c && !inline[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1
+	}
+}

+ 501 - 0
components/jyf-parser/libs/trees.vue

@@ -0,0 +1,501 @@
+<template>
+	<view :class="'interlayer '+(c||'')" :style="s">
+		<block v-for="(n, i) in nodes" v-bind:key="i">
+			<!--图片-->
+			<view v-if="n.name=='img'" :class="'_img '+n.attrs.class" :style="n.attrs.style" :data-attrs="n.attrs" @tap="imgtap">
+				<rich-text v-if="ctrl[i]!=0" :nodes="[{attrs:{src:loading&&(ctrl[i]||0)<2?loading:(lazyLoad&&!ctrl[i]?placeholder:(ctrl[i]==3?errorImg:n.attrs.src||'')),alt:n.attrs.alt||'',width:n.attrs.width||'',style:'-webkit-touch-callout:none;max-width:100%;display:block'+(n.attrs.height?';height:'+n.attrs.height:'')},name:'img'}]" />
+				<image class="_image" :src="lazyLoad&&!ctrl[i]?placeholder:n.attrs.src" :lazy-load="lazyLoad"
+				 :show-menu-by-longpress="!n.attrs.ignore" :data-i="i" :data-index="n.attrs.i" data-source="img" @load="loadImg"
+				 @error="error" />
+			</view>
+			<!--文本-->
+			<text v-else-if="n.type=='text'" decode>{{n.text}}</text>
+			<!--#ifndef MP-BAIDU-->
+			<text v-else-if="n.name=='br'">\n</text>
+			<!--#endif-->
+			<!--视频-->
+			<view v-else-if="((n.lazyLoad&&!n.attrs.autoplay)||(n.name=='video'&&!loadVideo))&&ctrl[i]==undefined" :id="n.attrs.id" :class="'_video '+(n.attrs.class||'')"
+			 :style="n.attrs.style" :data-i="i" @tap="_loadVideo" />
+			<video v-else-if="n.name=='video'" :id="n.attrs.id" :class="n.attrs.class" :style="n.attrs.style" :autoplay="n.attrs.autoplay||ctrl[i]==0"
+			 :controls="n.attrs.controls" :loop="n.attrs.loop" :muted="n.attrs.muted" :poster="n.attrs.poster" :src="n.attrs.source[ctrl[i]||0]"
+			 :unit-id="n.attrs['unit-id']" :data-id="n.attrs.id" :data-i="i" data-source="video" @error="error" @play="play" />
+			<!--音频-->
+			<audio v-else-if="n.name=='audio'" :ref="n.attrs.id" :class="n.attrs.class" :style="n.attrs.style" :author="n.attrs.author"
+			 :autoplay="n.attrs.autoplay" :controls="n.attrs.controls" :loop="n.attrs.loop" :name="n.attrs.name" :poster="n.attrs.poster"
+			 :src="n.attrs.source[ctrl[i]||0]" :data-i="i" :data-id="n.attrs.id" data-source="audio"
+			 @error.native="error" @play.native="play" />
+			<!--链接-->
+			<view v-else-if="n.name=='a'" :id="n.attrs.id" :class="'_a '+(n.attrs.class||'')" hover-class="_hover" :style="n.attrs.style"
+			 :data-attrs="n.attrs" @tap="linkpress">
+				<trees class="_span" c="_span" :nodes="n.children" />
+			</view>
+			<!--广告-->
+			<!--<ad v-else-if="n.name=='ad'" :class="n.attrs.class" :style="n.attrs.style" :unit-id="n.attrs['unit-id']" :appid="n.attrs.appid" :apid="n.attrs.apid" :type="n.attrs.type" :adpid="n.attrs.adpid" data-source="ad" @error="error" />-->
+			<!--列表-->
+			<view v-else-if="n.name=='li'" :id="n.attrs.id" :class="n.attrs.class" :style="(n.attrs.style||'')+';display:flex;flex-direction:row'">
+				<view v-if="n.type=='ol'" class="_ol-bef">{{n.num}}</view>
+				<view v-else class="_ul-bef">
+					<view v-if="n.floor%3==0" class="_ul-p1">█</view>
+					<view v-else-if="n.floor%3==2" class="_ul-p2" />
+					<view v-else class="_ul-p1" style="border-radius:50%">█</view>
+				</view>
+				<trees class="_li" c="_li" :nodes="n.children" :lazyLoad="lazyLoad" :loading="loading" />
+			</view>
+			<!--表格-->
+			<view v-else-if="n.name=='table'&&n.c" :id="n.attrs.id" :class="n.attrs.class" :style="(n.attrs.style||'')+';display:table'">
+				<view v-for="(tbody, o) in n.children" v-bind:key="o" :class="tbody.attrs.class" :style="(tbody.attrs.style||'')+(tbody.name[0]=='t'?';display:table-'+(tbody.name=='tr'?'row':'row-group'):'')">
+					<view v-for="(tr, p) in tbody.children" v-bind:key="p" :class="tr.attrs.class" :style="(tr.attrs.style||'')+(tr.name[0]=='t'?';display:table-'+(tr.name=='tr'?'row':'cell'):'')">
+						<trees v-if="tr.name=='td'" :nodes="tr.children" />
+						<trees v-else v-for="(td, q) in tr.children" v-bind:key="q" :class="td.attrs.class" :c="td.attrs.class" :style="(td.attrs.style||'')+(td.name[0]=='t'?';display:table-'+(td.name=='tr'?'row':'cell'):'')"
+						 :s="(td.attrs.style||'')+(td.name[0]=='t'?';display:table-'+(td.name=='tr'?'row':'cell'):'')" :nodes="td.children" />
+					</view>
+				</view>
+			</view>
+			<!--#ifdef APP-PLUS-->
+			<iframe v-else-if="n.name=='iframe'" :style="n.attrs.style" :allowfullscreen="n.attrs.allowfullscreen" :frameborder="n.attrs.frameborder"
+			 :width="n.attrs.width" :height="n.attrs.height" :src="n.attrs.src" />
+			<embed v-else-if="n.name=='embed'" :style="n.attrs.style" :width="n.attrs.width" :height="n.attrs.height" :src="n.attrs.src" />
+			<!--#endif-->
+			<!--富文本-->
+			<!--#ifdef MP-WEIXIN || MP-QQ || APP-PLUS-->
+			<rich-text v-else-if="handler.use(n)" :id="n.attrs.id" :class="'_p __'+n.name" :nodes="[n]" />
+			<!--#endif-->
+			<!--#ifndef MP-WEIXIN || MP-QQ || APP-PLUS-->
+			<rich-text v-else-if="!n.c" :id="n.attrs.id" :nodes="[n]" style="display:inline" />
+			<!--#endif-->
+			<trees v-else :class="(n.attrs.id||'')+' _'+n.name+' '+(n.attrs.class||'')" :c="(n.attrs.id||'')+' _'+n.name+' '+(n.attrs.class||'')"
+			 :style="n.attrs.style" :s="n.attrs.style" :nodes="n.children" :lazyLoad="lazyLoad" :loading="loading" />
+		</block>
+	</view>
+</template>
+<script module="handler" lang="wxs" src="./handler.wxs"></script>
+<script>
+	global.Parser = {};
+	import trees from './trees'
+	const errorImg = require('../libs/config.js').errorImg;
+	export default {
+		components: {
+			trees
+		},
+		name: 'trees',
+		data() {
+			return {
+				ctrl: [],
+				placeholder: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="300" height="225"/>',
+				errorImg,
+				loadVideo: typeof plus == 'undefined',
+				// #ifndef MP-ALIPAY
+				c: '',
+				s: ''
+				// #endif
+			}
+		},
+		props: {
+			nodes: Array,
+			lazyLoad: Boolean,
+			loading: String,
+			// #ifdef MP-ALIPAY
+			c: String,
+			s: String
+			// #endif
+		},
+		mounted() {
+			for (this.top = this.$parent; this.top.$options.name != 'parser'; this.top = this.top.$parent);
+			this.init();
+		},
+		// #ifdef APP-PLUS
+		beforeDestroy() {
+			this.observer && this.observer.disconnect();
+		},
+		// #endif
+		methods: {
+			init() {
+				for (var i = this.nodes.length, n; n = this.nodes[--i];) {
+					if (n.name == 'img') {
+						this.top.imgList.setItem(n.attrs.i, n.attrs.src);
+						// #ifdef APP-PLUS
+						if (this.lazyLoad && !this.observer) {
+							this.observer = uni.createIntersectionObserver(this).relativeToViewport({
+								top: 500,
+								bottom: 500
+							});
+							setTimeout(() => {
+								this.observer.observe('._img', res => {
+									if (res.intersectionRatio) {
+										for (var j = this.nodes.length; j--;)
+											if (this.nodes[j].name == 'img')
+												this.$set(this.ctrl, j, 1);
+										this.observer.disconnect();
+									}
+								})
+							}, 0)
+						}
+						// #endif
+					} else if (n.name == 'video' || n.name == 'audio') {
+						var ctx;
+						if (n.name == 'video') {
+							ctx = uni.createVideoContext(n.attrs.id
+								// #ifndef MP-BAIDU
+								, this
+								// #endif
+							);
+						} else if (this.$refs[n.attrs.id])
+							ctx = this.$refs[n.attrs.id][0];
+						if (ctx) {
+							ctx.id = n.attrs.id;
+							this.top.videoContexts.push(ctx);
+						}
+					}
+				}
+				// #ifdef APP-PLUS
+				// APP 上避免 video 错位需要延时渲染
+				setTimeout(() => {
+					this.loadVideo = true;
+				}, 1000)
+				// #endif
+			},
+			play(e) {
+				var contexts = this.top.videoContexts;
+				if (contexts.length > 1 && this.top.autopause)
+					for (var i = contexts.length; i--;)
+						if (contexts[i].id != e.currentTarget.dataset.id)
+							contexts[i].pause();
+			},
+			imgtap(e) {
+				var attrs = e.currentTarget.dataset.attrs;
+				if (!attrs.ignore) {
+					var preview = true,
+						data = {
+							id: e.target.id,
+							src: attrs.src,
+							ignore: () => preview = false
+						};
+					global.Parser.onImgtap && global.Parser.onImgtap(data);
+					this.top.$emit('imgtap', data);
+					if (preview) {
+						var urls = this.top.imgList,
+							current = urls[attrs.i] ? parseInt(attrs.i) : (urls = [attrs.src], 0);
+						uni.previewImage({
+							current,
+							urls
+						})
+					}
+				}
+			},
+			loadImg(e) {
+				var i = e.currentTarget.dataset.i;
+				if (this.lazyLoad && !this.ctrl[i]) {
+					// #ifdef QUICKAPP-WEBVIEW
+					this.$set(this.ctrl, i, 0);
+					this.$nextTick(function() {
+						// #endif
+						// #ifndef APP-PLUS
+						this.$set(this.ctrl, i, 1);
+						// #endif
+						// #ifdef QUICKAPP-WEBVIEW
+					})
+					// #endif
+				} else if (this.loading && this.ctrl[i] != 2) {
+					// #ifdef QUICKAPP-WEBVIEW
+					this.$set(this.ctrl, i, 0);
+					this.$nextTick(function() {
+						// #endif
+						this.$set(this.ctrl, i, 2);
+						// #ifdef QUICKAPP-WEBVIEW
+					})
+					// #endif
+				}
+			},
+			linkpress(e) {
+				var jump = true,
+					attrs = e.currentTarget.dataset.attrs;
+				attrs.ignore = () => jump = false;
+				global.Parser.onLinkpress && global.Parser.onLinkpress(attrs);
+				this.top.$emit('linkpress', attrs);
+				if (jump) {
+					// #ifdef MP
+					if (attrs['app-id']) {
+						return uni.navigateToMiniProgram({
+							appId: attrs['app-id'],
+							path: attrs.path
+						})
+					}
+					// #endif
+					if (attrs.href) {
+						if (attrs.href[0] == '#') {
+							if (this.top.useAnchor)
+								this.top.navigateTo({
+									id: attrs.href.substring(1)
+								})
+						} else if (attrs.href.indexOf('http') == 0 || attrs.href.indexOf('//') == 0) {
+							// #ifdef APP-PLUS
+							plus.runtime.openWeb(attrs.href);
+							// #endif
+							// #ifndef APP-PLUS
+							uni.setClipboardData({
+								data: attrs.href,
+								success: () =>
+									uni.showToast({
+										title: '链接已复制'
+									})
+							})
+							// #endif
+						} else
+							uni.navigateTo({
+								url: attrs.href,
+								fail() {
+									uni.switchTab({
+										url: attrs.href,
+									})
+								}
+							})
+					}
+				}
+			},
+			error(e) {
+				var target = e.currentTarget,
+					source = target.dataset.source,
+					i = target.dataset.i;
+				if (source == 'video' || source == 'audio') {
+					// 加载其他 source
+					var index = this.ctrl[i] ? this.ctrl[i].i + 1 : 1;
+					if (index < this.nodes[i].attrs.source.length)
+						this.$set(this.ctrl, i, index);
+					if (e.detail.__args__)
+						e.detail = e.detail.__args__[0];
+				} else if (errorImg && source == 'img') {
+					this.top.imgList.setItem(target.dataset.index, errorImg);
+					this.$set(this.ctrl, i, 3);
+				}
+				this.top && this.top.$emit('error', {
+					source,
+					target,
+					errMsg: e.detail.errMsg
+				});
+			},
+			_loadVideo(e) {
+				this.$set(this.ctrl, e.target.dataset.i, 0);
+			}
+		}
+	}
+</script>
+
+<style>
+	/* 在这里引入自定义样式 */
+
+	/* 链接和图片效果 */
+	._a {
+		display: inline;
+		padding: 1.5px 0 1.5px 0;
+		color: #366092;
+		word-break: break-all;
+	}
+
+	._hover {
+		text-decoration: underline;
+		opacity: 0.7;
+	}
+
+	._img {
+		display: inline-block;
+		max-width: 100%;
+		overflow: hidden;
+	}
+
+	/* #ifdef MP-WEIXIN */
+	:host {
+		display: inline;
+	}
+
+	/* #endif */
+
+	/* #ifndef MP-ALIPAY || APP-PLUS */
+	.interlayer {
+		display: inherit;
+		flex-direction: inherit;
+		flex-wrap: inherit;
+		align-content: inherit;
+		align-items: inherit;
+		justify-content: inherit;
+		width: 100%;
+		white-space: inherit;
+	}
+
+	/* #endif */
+
+	._b,
+	._strong {
+		font-weight: bold;
+	}
+
+	/* #ifndef MP-ALIPAY */
+	._blockquote,
+	._div,
+	._p,
+	._ol,
+	._ul,
+	._li {
+		display: block;
+	}
+	
+	/* #endif */
+
+	._code {
+		font-family: monospace;
+	}
+
+	._del {
+		text-decoration: line-through;
+	}
+
+	._em,
+	._i {
+		font-style: italic;
+	}
+
+	._h1 {
+		font-size: 2em;
+	}
+
+	._h2 {
+		font-size: 1.5em;
+	}
+
+	._h3 {
+		font-size: 1.17em;
+	}
+
+	._h5 {
+		font-size: 0.83em;
+	}
+
+	._h6 {
+		font-size: 0.67em;
+	}
+
+	._h1,
+	._h2,
+	._h3,
+	._h4,
+	._h5,
+	._h6 {
+		display: block;
+		font-weight: bold;
+	}
+
+	._image {
+		display: block;
+		width: 100%;
+		height: 360px;
+		margin-top: -360px;
+		opacity: 0;
+	}
+
+	._ins {
+		text-decoration: underline;
+	}
+
+	._li {
+		flex: 1;
+		width: 0;
+	}
+
+	._ol-bef {
+		width: 36px;
+		margin-right: 5px;
+		text-align: right;
+	}
+
+	._ul-bef {
+		display: block;
+		margin: 0 12px 0 23px;
+		line-height: normal;
+	}
+
+	._ol-bef,
+	._ul-bef {
+		flex: none;
+		user-select: none;
+	}
+
+	._ul-p1 {
+		display: inline-block;
+		width: 0.3em;
+		height: 0.3em;
+		overflow: hidden;
+		line-height: 0.3em;
+	}
+
+	._ul-p2 {
+		display: inline-block;
+		width: 0.23em;
+		height: 0.23em;
+		border: 0.05em solid black;
+		border-radius: 50%;
+	}
+
+	._q::before {
+		content: '"';
+	}
+
+	._q::after {
+		content: '"';
+	}
+
+	._sub {
+		font-size: smaller;
+		vertical-align: sub;
+	}
+
+	._sup {
+		font-size: smaller;
+		vertical-align: super;
+	}
+
+	/* #ifdef MP-ALIPAY || APP-PLUS || QUICKAPP-WEBVIEW */
+	._abbr,
+	._b,
+	._code,
+	._del,
+	._em,
+	._i,
+	._ins,
+	._label,
+	._q,
+	._span,
+	._strong,
+	._sub,
+	._sup {
+		display: inline;
+	}
+
+	/* #endif */
+
+	/* #ifdef MP-WEIXIN || MP-QQ */
+	.__bdo,
+	.__bdi,
+	.__ruby,
+	.__rt {
+		display: inline-block;
+	}
+
+	/* #endif */
+	._video {
+		position: relative;
+		display: inline-block;
+		width: 300px;
+		height: 225px;
+		background-color: black;
+	}
+
+	._video::after {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		margin: -15px 0 0 -15px;
+		content: '';
+		border-color: transparent transparent transparent white;
+		border-style: solid;
+		border-width: 15px 0 15px 30px;
+	}
+</style>

+ 14402 - 0
components/lee-select-city/city.json

@@ -0,0 +1,14402 @@
+[{
+		"name": "北京市",
+		"latter": "B",
+		"children": [{
+			"name": "北京市",
+			"children": [{
+					"name": "东城区",
+					"latter": "D"
+				},
+				{
+					"name": "西城区",
+					"latter": "X"
+				},
+				{
+					"name": "朝阳区",
+					"latter": "Z"
+				},
+				{
+					"name": "丰台区",
+					"latter": "F"
+				},
+				{
+					"name": "石景山区",
+					"latter": "S"
+				},
+				{
+					"name": "海淀区",
+					"latter": "H"
+				},
+				{
+					"name": "门头沟区",
+					"latter": "M"
+				},
+				{
+					"name": "房山区",
+					"latter": "F"
+				},
+				{
+					"name": "通州区",
+					"latter": "T"
+				},
+				{
+					"name": "顺义区",
+					"latter": "S"
+				},
+				{
+					"name": "昌平区",
+					"latter": "C"
+				},
+				{
+					"name": "大兴区",
+					"latter": "D"
+				},
+				{
+					"name": "怀柔区",
+					"latter": "H"
+				},
+				{
+					"name": "平谷区",
+					"latter": "P"
+				},
+				{
+					"name": "密云县",
+					"latter": "M"
+				},
+				{
+					"name": "延庆县",
+					"latter": "Y"
+				}
+			],
+			"latter": "B"
+		}]
+	},
+	{
+		"name": "天津市",
+		"latter": "T",
+		"children":[
+			{
+				"name": "天津市",
+				"children": [{
+						"name": "和平区",
+						"latter": "H"
+					},
+					{
+						"name": "河东区",
+						"latter": "H"
+					},
+					{
+						"name": "河西区",
+						"latter": "H"
+					},
+					{
+						"name": "南开区",
+						"latter": "N"
+					},
+					{
+						"name": "河北区",
+						"latter": "H"
+					},
+					{
+						"name": "红桥区",
+						"latter": "H"
+					},
+					{
+						"name": "东丽区",
+						"latter": "D"
+					},
+					{
+						"name": "西青区",
+						"latter": "X"
+					},
+					{
+						"name": "津南区",
+						"latter": "J"
+					},
+					{
+						"name": "北辰区",
+						"latter": "B"
+					},
+					{
+						"name": "武清区",
+						"latter": "W"
+					},
+					{
+						"name": "宝坻区",
+						"latter": "B"
+					},
+					{
+						"name": "滨海新区",
+						"latter": "B"
+					},
+					{
+						"name": "宁河县",
+						"latter": "N"
+					},
+					{
+						"name": "静海县",
+						"latter": "J"
+					},
+					{
+						"name": "蓟县",
+						"latter": "J"
+					}
+				],
+				"latter": "T"
+			}
+		]
+	},
+	{
+		"name": "河北省",
+		"children": [{
+				"name": "石家庄市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "长安区",
+						"latter": "C"
+					},
+					{
+						"name": "桥东区",
+						"latter": "Q"
+					},
+					{
+						"name": "桥西区",
+						"latter": "Q"
+					},
+					{
+						"name": "新华区",
+						"latter": "X"
+					},
+					{
+						"name": "井陉矿区",
+						"latter": "J"
+					},
+					{
+						"name": "裕华区",
+						"latter": "Y"
+					},
+					{
+						"name": "井陉县",
+						"latter": "J"
+					},
+					{
+						"name": "正定县",
+						"latter": "Z"
+					},
+					{
+						"name": "栾城县",
+						"latter": "L"
+					},
+					{
+						"name": "行唐县",
+						"latter": "H"
+					},
+					{
+						"name": "灵寿县",
+						"latter": "L"
+					},
+					{
+						"name": "高邑县",
+						"latter": "G"
+					},
+					{
+						"name": "深泽县",
+						"latter": "S"
+					},
+					{
+						"name": "赞皇县",
+						"latter": "Z"
+					},
+					{
+						"name": "无极县",
+						"latter": "W"
+					},
+					{
+						"name": "平山县",
+						"latter": "P"
+					},
+					{
+						"name": "元氏县",
+						"latter": "Y"
+					},
+					{
+						"name": "赵县",
+						"latter": "Z"
+					},
+					{
+						"name": "辛集市",
+						"latter": "X"
+					},
+					{
+						"name": "藁城市",
+						"latter": "G"
+					},
+					{
+						"name": "晋州市",
+						"latter": "J"
+					},
+					{
+						"name": "新乐市",
+						"latter": "X"
+					},
+					{
+						"name": "鹿泉市",
+						"latter": "L"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "唐山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "路南区",
+						"latter": "L"
+					},
+					{
+						"name": "路北区",
+						"latter": "L"
+					},
+					{
+						"name": "古冶区",
+						"latter": "G"
+					},
+					{
+						"name": "开平区",
+						"latter": "K"
+					},
+					{
+						"name": "丰南区",
+						"latter": "F"
+					},
+					{
+						"name": "丰润区",
+						"latter": "F"
+					},
+					{
+						"name": "曹妃甸区",
+						"latter": "C"
+					},
+					{
+						"name": "滦县",
+						"latter": "L"
+					},
+					{
+						"name": "滦南县",
+						"latter": "L"
+					},
+					{
+						"name": "乐亭县",
+						"latter": "L"
+					},
+					{
+						"name": "迁西县",
+						"latter": "Q"
+					},
+					{
+						"name": "玉田县",
+						"latter": "Y"
+					},
+					{
+						"name": "遵化市",
+						"latter": "Z"
+					},
+					{
+						"name": "迁安市",
+						"latter": "Q"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "秦皇岛市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "海港区",
+						"latter": "H"
+					},
+					{
+						"name": "山海关区",
+						"latter": "S"
+					},
+					{
+						"name": "北戴河区",
+						"latter": "B"
+					},
+					{
+						"name": "青龙满族自治县",
+						"latter": "Q"
+					},
+					{
+						"name": "昌黎县",
+						"latter": "C"
+					},
+					{
+						"name": "抚宁县",
+						"latter": "F"
+					},
+					{
+						"name": "卢龙县",
+						"latter": "L"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "邯郸市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "邯山区",
+						"latter": "H"
+					},
+					{
+						"name": "丛台区",
+						"latter": "C"
+					},
+					{
+						"name": "复兴区",
+						"latter": "F"
+					},
+					{
+						"name": "峰峰矿区",
+						"latter": "F"
+					},
+					{
+						"name": "邯郸县",
+						"latter": "H"
+					},
+					{
+						"name": "临漳县",
+						"latter": "L"
+					},
+					{
+						"name": "成安县",
+						"latter": "C"
+					},
+					{
+						"name": "大名县",
+						"latter": "D"
+					},
+					{
+						"name": "涉县",
+						"latter": "S"
+					},
+					{
+						"name": "磁县",
+						"latter": "C"
+					},
+					{
+						"name": "肥乡县",
+						"latter": "F"
+					},
+					{
+						"name": "永年县",
+						"latter": "Y"
+					},
+					{
+						"name": "邱县",
+						"latter": "Q"
+					},
+					{
+						"name": "鸡泽县",
+						"latter": "J"
+					},
+					{
+						"name": "广平县",
+						"latter": "G"
+					},
+					{
+						"name": "馆陶县",
+						"latter": "G"
+					},
+					{
+						"name": "魏县",
+						"latter": "W"
+					},
+					{
+						"name": "曲周县",
+						"latter": "Q"
+					},
+					{
+						"name": "武安市",
+						"latter": "W"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "邢台市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "桥东区",
+						"latter": "Q"
+					},
+					{
+						"name": "桥西区",
+						"latter": "Q"
+					},
+					{
+						"name": "邢台县",
+						"latter": "X"
+					},
+					{
+						"name": "临城县",
+						"latter": "L"
+					},
+					{
+						"name": "内丘县",
+						"latter": "N"
+					},
+					{
+						"name": "柏乡县",
+						"latter": "B"
+					},
+					{
+						"name": "隆尧县",
+						"latter": "L"
+					},
+					{
+						"name": "任县",
+						"latter": "R"
+					},
+					{
+						"name": "南和县",
+						"latter": "N"
+					},
+					{
+						"name": "宁晋县",
+						"latter": "N"
+					},
+					{
+						"name": "巨鹿县",
+						"latter": "J"
+					},
+					{
+						"name": "新河县",
+						"latter": "X"
+					},
+					{
+						"name": "广宗县",
+						"latter": "G"
+					},
+					{
+						"name": "平乡县",
+						"latter": "P"
+					},
+					{
+						"name": "威县",
+						"latter": "W"
+					},
+					{
+						"name": "清河县",
+						"latter": "Q"
+					},
+					{
+						"name": "临西县",
+						"latter": "L"
+					},
+					{
+						"name": "南宫市",
+						"latter": "N"
+					},
+					{
+						"name": "沙河市",
+						"latter": "S"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "保定市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "新市区",
+						"latter": "X"
+					},
+					{
+						"name": "北市区",
+						"latter": "B"
+					},
+					{
+						"name": "南市区",
+						"latter": "N"
+					},
+					{
+						"name": "满城县",
+						"latter": "M"
+					},
+					{
+						"name": "清苑县",
+						"latter": "Q"
+					},
+					{
+						"name": "涞水县",
+						"latter": "L"
+					},
+					{
+						"name": "阜平县",
+						"latter": "F"
+					},
+					{
+						"name": "徐水县",
+						"latter": "X"
+					},
+					{
+						"name": "定兴县",
+						"latter": "D"
+					},
+					{
+						"name": "唐县",
+						"latter": "T"
+					},
+					{
+						"name": "高阳县",
+						"latter": "G"
+					},
+					{
+						"name": "容城县",
+						"latter": "R"
+					},
+					{
+						"name": "涞源县",
+						"latter": "L"
+					},
+					{
+						"name": "望都县",
+						"latter": "W"
+					},
+					{
+						"name": "安新县",
+						"latter": "A"
+					},
+					{
+						"name": "易县",
+						"latter": "Y"
+					},
+					{
+						"name": "曲阳县",
+						"latter": "Q"
+					},
+					{
+						"name": "蠡县",
+						"latter": "L"
+					},
+					{
+						"name": "顺平县",
+						"latter": "S"
+					},
+					{
+						"name": "博野县",
+						"latter": "B"
+					},
+					{
+						"name": "雄县",
+						"latter": "X"
+					},
+					{
+						"name": "涿州市",
+						"latter": "Z"
+					},
+					{
+						"name": "定州市",
+						"latter": "D"
+					},
+					{
+						"name": "安国市",
+						"latter": "A"
+					},
+					{
+						"name": "高碑店市",
+						"latter": "G"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "张家口市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "桥东区",
+						"latter": "Q"
+					},
+					{
+						"name": "桥西区",
+						"latter": "Q"
+					},
+					{
+						"name": "宣化区",
+						"latter": "X"
+					},
+					{
+						"name": "下花园区",
+						"latter": "X"
+					},
+					{
+						"name": "宣化县",
+						"latter": "X"
+					},
+					{
+						"name": "张北县",
+						"latter": "Z"
+					},
+					{
+						"name": "康保县",
+						"latter": "K"
+					},
+					{
+						"name": "沽源县",
+						"latter": "G"
+					},
+					{
+						"name": "尚义县",
+						"latter": "S"
+					},
+					{
+						"name": "蔚县",
+						"latter": "W"
+					},
+					{
+						"name": "阳原县",
+						"latter": "Y"
+					},
+					{
+						"name": "怀安县",
+						"latter": "H"
+					},
+					{
+						"name": "万全县",
+						"latter": "W"
+					},
+					{
+						"name": "怀来县",
+						"latter": "H"
+					},
+					{
+						"name": "涿鹿县",
+						"latter": "Z"
+					},
+					{
+						"name": "赤城县",
+						"latter": "C"
+					},
+					{
+						"name": "崇礼县",
+						"latter": "C"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "承德市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "双桥区",
+						"latter": "S"
+					},
+					{
+						"name": "双滦区",
+						"latter": "S"
+					},
+					{
+						"name": "鹰手营子矿区",
+						"latter": "Y"
+					},
+					{
+						"name": "承德县",
+						"latter": "C"
+					},
+					{
+						"name": "兴隆县",
+						"latter": "X"
+					},
+					{
+						"name": "平泉县",
+						"latter": "P"
+					},
+					{
+						"name": "滦平县",
+						"latter": "L"
+					},
+					{
+						"name": "隆化县",
+						"latter": "L"
+					},
+					{
+						"name": "丰宁满族自治县",
+						"latter": "F"
+					},
+					{
+						"name": "宽城满族自治县",
+						"latter": "K"
+					},
+					{
+						"name": "围场满族蒙古族自治县",
+						"latter": "W"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "沧州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "新华区",
+						"latter": "X"
+					},
+					{
+						"name": "运河区",
+						"latter": "Y"
+					},
+					{
+						"name": "沧县",
+						"latter": "C"
+					},
+					{
+						"name": "青县",
+						"latter": "Q"
+					},
+					{
+						"name": "东光县",
+						"latter": "D"
+					},
+					{
+						"name": "海兴县",
+						"latter": "H"
+					},
+					{
+						"name": "盐山县",
+						"latter": "Y"
+					},
+					{
+						"name": "肃宁县",
+						"latter": "S"
+					},
+					{
+						"name": "南皮县",
+						"latter": "N"
+					},
+					{
+						"name": "吴桥县",
+						"latter": "W"
+					},
+					{
+						"name": "献县",
+						"latter": "X"
+					},
+					{
+						"name": "孟村回族自治县",
+						"latter": "M"
+					},
+					{
+						"name": "泊头市",
+						"latter": "B"
+					},
+					{
+						"name": "任丘市",
+						"latter": "R"
+					},
+					{
+						"name": "黄骅市",
+						"latter": "H"
+					},
+					{
+						"name": "河间市",
+						"latter": "H"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "廊坊市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "安次区",
+						"latter": "A"
+					},
+					{
+						"name": "广阳区",
+						"latter": "G"
+					},
+					{
+						"name": "固安县",
+						"latter": "G"
+					},
+					{
+						"name": "永清县",
+						"latter": "Y"
+					},
+					{
+						"name": "香河县",
+						"latter": "X"
+					},
+					{
+						"name": "大城县",
+						"latter": "D"
+					},
+					{
+						"name": "文安县",
+						"latter": "W"
+					},
+					{
+						"name": "大厂回族自治县",
+						"latter": "D"
+					},
+					{
+						"name": "霸州市",
+						"latter": "B"
+					},
+					{
+						"name": "三河市",
+						"latter": "S"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "衡水市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "桃城区",
+						"latter": "T"
+					},
+					{
+						"name": "枣强县",
+						"latter": "Z"
+					},
+					{
+						"name": "武邑县",
+						"latter": "W"
+					},
+					{
+						"name": "武强县",
+						"latter": "W"
+					},
+					{
+						"name": "饶阳县",
+						"latter": "R"
+					},
+					{
+						"name": "安平县",
+						"latter": "A"
+					},
+					{
+						"name": "故城县",
+						"latter": "G"
+					},
+					{
+						"name": "景县",
+						"latter": "J"
+					},
+					{
+						"name": "阜城县",
+						"latter": "F"
+					},
+					{
+						"name": "冀州市",
+						"latter": "J"
+					},
+					{
+						"name": "深州市",
+						"latter": "S"
+					}
+				],
+				"latter": "H"
+			}
+		],
+		"latter": "H"
+	},
+	{
+		"name": "山西省",
+		"children": [{
+				"name": "太原市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "小店区",
+						"latter": "X"
+					},
+					{
+						"name": "迎泽区",
+						"latter": "Y"
+					},
+					{
+						"name": "杏花岭区",
+						"latter": "X"
+					},
+					{
+						"name": "尖草坪区",
+						"latter": "J"
+					},
+					{
+						"name": "万柏林区",
+						"latter": "W"
+					},
+					{
+						"name": "晋源区",
+						"latter": "J"
+					},
+					{
+						"name": "清徐县",
+						"latter": "Q"
+					},
+					{
+						"name": "阳曲县",
+						"latter": "Y"
+					},
+					{
+						"name": "娄烦县",
+						"latter": "L"
+					},
+					{
+						"name": "古交市",
+						"latter": "G"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "大同市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "城区",
+						"latter": "C"
+					},
+					{
+						"name": "矿区",
+						"latter": "K"
+					},
+					{
+						"name": "南郊区",
+						"latter": "N"
+					},
+					{
+						"name": "新荣区",
+						"latter": "X"
+					},
+					{
+						"name": "阳高县",
+						"latter": "Y"
+					},
+					{
+						"name": "天镇县",
+						"latter": "T"
+					},
+					{
+						"name": "广灵县",
+						"latter": "G"
+					},
+					{
+						"name": "灵丘县",
+						"latter": "L"
+					},
+					{
+						"name": "浑源县",
+						"latter": "H"
+					},
+					{
+						"name": "左云县",
+						"latter": "Z"
+					},
+					{
+						"name": "大同县",
+						"latter": "D"
+					}
+				],
+				"latter": "D"
+			},
+			{
+				"name": "阳泉市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "城区",
+						"latter": "C"
+					},
+					{
+						"name": "矿区",
+						"latter": "K"
+					},
+					{
+						"name": "郊区",
+						"latter": "J"
+					},
+					{
+						"name": "平定县",
+						"latter": "P"
+					},
+					{
+						"name": "盂县",
+						"latter": "Y"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "长治市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "城区",
+						"latter": "C"
+					},
+					{
+						"name": "郊区",
+						"latter": "J"
+					},
+					{
+						"name": "长治县",
+						"latter": "C"
+					},
+					{
+						"name": "襄垣县",
+						"latter": "X"
+					},
+					{
+						"name": "屯留县",
+						"latter": "T"
+					},
+					{
+						"name": "平顺县",
+						"latter": "P"
+					},
+					{
+						"name": "黎城县",
+						"latter": "L"
+					},
+					{
+						"name": "壶关县",
+						"latter": "H"
+					},
+					{
+						"name": "长子县",
+						"latter": "C"
+					},
+					{
+						"name": "武乡县",
+						"latter": "W"
+					},
+					{
+						"name": "沁县",
+						"latter": "Q"
+					},
+					{
+						"name": "沁源县",
+						"latter": "Q"
+					},
+					{
+						"name": "潞城市",
+						"latter": "L"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "晋城市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "城区",
+						"latter": "C"
+					},
+					{
+						"name": "沁水县",
+						"latter": "Q"
+					},
+					{
+						"name": "阳城县",
+						"latter": "Y"
+					},
+					{
+						"name": "陵川县",
+						"latter": "L"
+					},
+					{
+						"name": "泽州县",
+						"latter": "Z"
+					},
+					{
+						"name": "高平市",
+						"latter": "G"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "朔州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "朔城区",
+						"latter": "S"
+					},
+					{
+						"name": "平鲁区",
+						"latter": "P"
+					},
+					{
+						"name": "山阴县",
+						"latter": "S"
+					},
+					{
+						"name": "应县",
+						"latter": "Y"
+					},
+					{
+						"name": "右玉县",
+						"latter": "Y"
+					},
+					{
+						"name": "怀仁县",
+						"latter": "H"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "晋中市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "榆次区",
+						"latter": "Y"
+					},
+					{
+						"name": "榆社县",
+						"latter": "Y"
+					},
+					{
+						"name": "左权县",
+						"latter": "Z"
+					},
+					{
+						"name": "和顺县",
+						"latter": "H"
+					},
+					{
+						"name": "昔阳县",
+						"latter": "X"
+					},
+					{
+						"name": "寿阳县",
+						"latter": "S"
+					},
+					{
+						"name": "太谷县",
+						"latter": "T"
+					},
+					{
+						"name": "祁县",
+						"latter": "Q"
+					},
+					{
+						"name": "平遥县",
+						"latter": "P"
+					},
+					{
+						"name": "灵石县",
+						"latter": "L"
+					},
+					{
+						"name": "介休市",
+						"latter": "J"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "运城市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "盐湖区",
+						"latter": "Y"
+					},
+					{
+						"name": "临猗县",
+						"latter": "L"
+					},
+					{
+						"name": "万荣县",
+						"latter": "W"
+					},
+					{
+						"name": "闻喜县",
+						"latter": "W"
+					},
+					{
+						"name": "稷山县",
+						"latter": "J"
+					},
+					{
+						"name": "新绛县",
+						"latter": "X"
+					},
+					{
+						"name": "绛县",
+						"latter": "J"
+					},
+					{
+						"name": "垣曲县",
+						"latter": "Y"
+					},
+					{
+						"name": "夏县",
+						"latter": "X"
+					},
+					{
+						"name": "平陆县",
+						"latter": "P"
+					},
+					{
+						"name": "芮城县",
+						"latter": "R"
+					},
+					{
+						"name": "永济市",
+						"latter": "Y"
+					},
+					{
+						"name": "河津市",
+						"latter": "H"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "忻州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "忻府区",
+						"latter": "X"
+					},
+					{
+						"name": "定襄县",
+						"latter": "D"
+					},
+					{
+						"name": "五台县",
+						"latter": "W"
+					},
+					{
+						"name": "代县",
+						"latter": "D"
+					},
+					{
+						"name": "繁峙县",
+						"latter": "F"
+					},
+					{
+						"name": "宁武县",
+						"latter": "N"
+					},
+					{
+						"name": "静乐县",
+						"latter": "J"
+					},
+					{
+						"name": "神池县",
+						"latter": "S"
+					},
+					{
+						"name": "五寨县",
+						"latter": "W"
+					},
+					{
+						"name": "岢岚县",
+						"latter": "K"
+					},
+					{
+						"name": "河曲县",
+						"latter": "H"
+					},
+					{
+						"name": "保德县",
+						"latter": "B"
+					},
+					{
+						"name": "偏关县",
+						"latter": "P"
+					},
+					{
+						"name": "原平市",
+						"latter": "Y"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "临汾市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "尧都区",
+						"latter": "Y"
+					},
+					{
+						"name": "曲沃县",
+						"latter": "Q"
+					},
+					{
+						"name": "翼城县",
+						"latter": "Y"
+					},
+					{
+						"name": "襄汾县",
+						"latter": "X"
+					},
+					{
+						"name": "洪洞县",
+						"latter": "H"
+					},
+					{
+						"name": "古县",
+						"latter": "G"
+					},
+					{
+						"name": "安泽县",
+						"latter": "A"
+					},
+					{
+						"name": "浮山县",
+						"latter": "F"
+					},
+					{
+						"name": "吉县",
+						"latter": "J"
+					},
+					{
+						"name": "乡宁县",
+						"latter": "X"
+					},
+					{
+						"name": "大宁县",
+						"latter": "D"
+					},
+					{
+						"name": "隰县",
+						"latter": "X"
+					},
+					{
+						"name": "永和县",
+						"latter": "Y"
+					},
+					{
+						"name": "蒲县",
+						"latter": "P"
+					},
+					{
+						"name": "汾西县",
+						"latter": "F"
+					},
+					{
+						"name": "侯马市",
+						"latter": "H"
+					},
+					{
+						"name": "霍州市",
+						"latter": "H"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "吕梁市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "离石区",
+						"latter": "L"
+					},
+					{
+						"name": "文水县",
+						"latter": "W"
+					},
+					{
+						"name": "交城县",
+						"latter": "J"
+					},
+					{
+						"name": "兴县",
+						"latter": "X"
+					},
+					{
+						"name": "临县",
+						"latter": "L"
+					},
+					{
+						"name": "柳林县",
+						"latter": "L"
+					},
+					{
+						"name": "石楼县",
+						"latter": "S"
+					},
+					{
+						"name": "岚县",
+						"latter": "L"
+					},
+					{
+						"name": "方山县",
+						"latter": "F"
+					},
+					{
+						"name": "中阳县",
+						"latter": "Z"
+					},
+					{
+						"name": "交口县",
+						"latter": "J"
+					},
+					{
+						"name": "孝义市",
+						"latter": "X"
+					},
+					{
+						"name": "汾阳市",
+						"latter": "F"
+					}
+				],
+				"latter": "L"
+			}
+		],
+		"latter": "S"
+	},
+	{
+		"name": "内蒙古自治区",
+		"children": [{
+				"name": "呼和浩特市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "新城区",
+						"latter": "X"
+					},
+					{
+						"name": "回民区",
+						"latter": "H"
+					},
+					{
+						"name": "玉泉区",
+						"latter": "Y"
+					},
+					{
+						"name": "赛罕区",
+						"latter": "S"
+					},
+					{
+						"name": "土默特左旗",
+						"latter": "T"
+					},
+					{
+						"name": "托克托县",
+						"latter": "T"
+					},
+					{
+						"name": "和林格尔县",
+						"latter": "H"
+					},
+					{
+						"name": "清水河县",
+						"latter": "Q"
+					},
+					{
+						"name": "武川县",
+						"latter": "W"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "包头市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "东河区",
+						"latter": "D"
+					},
+					{
+						"name": "昆都仑区",
+						"latter": "K"
+					},
+					{
+						"name": "青山区",
+						"latter": "Q"
+					},
+					{
+						"name": "石拐区",
+						"latter": "S"
+					},
+					{
+						"name": "白云鄂博矿区",
+						"latter": "B"
+					},
+					{
+						"name": "九原区",
+						"latter": "J"
+					},
+					{
+						"name": "土默特右旗",
+						"latter": "T"
+					},
+					{
+						"name": "固阳县",
+						"latter": "G"
+					},
+					{
+						"name": "达尔罕茂明安联合旗",
+						"latter": "D"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "乌海市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "海勃湾区",
+						"latter": "H"
+					},
+					{
+						"name": "海南区",
+						"latter": "H"
+					},
+					{
+						"name": "乌达区",
+						"latter": "W"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "赤峰市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "红山区",
+						"latter": "H"
+					},
+					{
+						"name": "元宝山区",
+						"latter": "Y"
+					},
+					{
+						"name": "松山区",
+						"latter": "S"
+					},
+					{
+						"name": "阿鲁科尔沁旗",
+						"latter": "A"
+					},
+					{
+						"name": "巴林左旗",
+						"latter": "B"
+					},
+					{
+						"name": "巴林右旗",
+						"latter": "B"
+					},
+					{
+						"name": "林西县",
+						"latter": "L"
+					},
+					{
+						"name": "克什克腾旗",
+						"latter": "K"
+					},
+					{
+						"name": "翁牛特旗",
+						"latter": "W"
+					},
+					{
+						"name": "喀喇沁旗",
+						"latter": "K"
+					},
+					{
+						"name": "宁城县",
+						"latter": "N"
+					},
+					{
+						"name": "敖汉旗",
+						"latter": "A"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "通辽市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "科尔沁区",
+						"latter": "K"
+					},
+					{
+						"name": "科尔沁左翼中旗",
+						"latter": "K"
+					},
+					{
+						"name": "科尔沁左翼后旗",
+						"latter": "K"
+					},
+					{
+						"name": "开鲁县",
+						"latter": "K"
+					},
+					{
+						"name": "库伦旗",
+						"latter": "K"
+					},
+					{
+						"name": "奈曼旗",
+						"latter": "N"
+					},
+					{
+						"name": "扎鲁特旗",
+						"latter": "Z"
+					},
+					{
+						"name": "霍林郭勒市",
+						"latter": "H"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "鄂尔多斯市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "东胜区",
+						"latter": "D"
+					},
+					{
+						"name": "达拉特旗",
+						"latter": "D"
+					},
+					{
+						"name": "准格尔旗",
+						"latter": "Z"
+					},
+					{
+						"name": "鄂托克前旗",
+						"latter": "E"
+					},
+					{
+						"name": "鄂托克旗",
+						"latter": "E"
+					},
+					{
+						"name": "杭锦旗",
+						"latter": "H"
+					},
+					{
+						"name": "乌审旗",
+						"latter": "W"
+					},
+					{
+						"name": "伊金霍洛旗",
+						"latter": "Y"
+					}
+				],
+				"latter": "E"
+			},
+			{
+				"name": "呼伦贝尔市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "海拉尔区",
+						"latter": "H"
+					},
+					{
+						"name": "扎赉诺尔区",
+						"latter": "Z"
+					},
+					{
+						"name": "阿荣旗",
+						"latter": "A"
+					},
+					{
+						"name": "莫力达瓦达斡尔族自治旗",
+						"latter": "M"
+					},
+					{
+						"name": "鄂伦春自治旗",
+						"latter": "E"
+					},
+					{
+						"name": "鄂温克族自治旗",
+						"latter": "E"
+					},
+					{
+						"name": "陈巴尔虎旗",
+						"latter": "C"
+					},
+					{
+						"name": "新巴尔虎左旗",
+						"latter": "X"
+					},
+					{
+						"name": "新巴尔虎右旗",
+						"latter": "X"
+					},
+					{
+						"name": "满洲里市",
+						"latter": "M"
+					},
+					{
+						"name": "牙克石市",
+						"latter": "Y"
+					},
+					{
+						"name": "扎兰屯市",
+						"latter": "Z"
+					},
+					{
+						"name": "额尔古纳市",
+						"latter": "E"
+					},
+					{
+						"name": "根河市",
+						"latter": "G"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "巴彦淖尔市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "临河区",
+						"latter": "L"
+					},
+					{
+						"name": "五原县",
+						"latter": "W"
+					},
+					{
+						"name": "磴口县",
+						"latter": "D"
+					},
+					{
+						"name": "乌拉特前旗",
+						"latter": "W"
+					},
+					{
+						"name": "乌拉特中旗",
+						"latter": "W"
+					},
+					{
+						"name": "乌拉特后旗",
+						"latter": "W"
+					},
+					{
+						"name": "杭锦后旗",
+						"latter": "H"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "乌兰察布市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "集宁区",
+						"latter": "J"
+					},
+					{
+						"name": "卓资县",
+						"latter": "Z"
+					},
+					{
+						"name": "化德县",
+						"latter": "H"
+					},
+					{
+						"name": "商都县",
+						"latter": "S"
+					},
+					{
+						"name": "兴和县",
+						"latter": "X"
+					},
+					{
+						"name": "凉城县",
+						"latter": "L"
+					},
+					{
+						"name": "察哈尔右翼前旗",
+						"latter": "C"
+					},
+					{
+						"name": "察哈尔右翼中旗",
+						"latter": "C"
+					},
+					{
+						"name": "察哈尔右翼后旗",
+						"latter": "C"
+					},
+					{
+						"name": "四子王旗",
+						"latter": "S"
+					},
+					{
+						"name": "丰镇市",
+						"latter": "F"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "兴安盟",
+				"children": [{
+						"name": "乌兰浩特市",
+						"latter": "W"
+					},
+					{
+						"name": "阿尔山市",
+						"latter": "A"
+					},
+					{
+						"name": "科尔沁右翼前旗",
+						"latter": "K"
+					},
+					{
+						"name": "科尔沁右翼中旗",
+						"latter": "K"
+					},
+					{
+						"name": "扎赉特旗",
+						"latter": "Z"
+					},
+					{
+						"name": "突泉县",
+						"latter": "T"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "锡林郭勒盟",
+				"children": [{
+						"name": "二连浩特市",
+						"latter": "E"
+					},
+					{
+						"name": "锡林浩特市",
+						"latter": "X"
+					},
+					{
+						"name": "阿巴嘎旗",
+						"latter": "A"
+					},
+					{
+						"name": "苏尼特左旗",
+						"latter": "S"
+					},
+					{
+						"name": "苏尼特右旗",
+						"latter": "S"
+					},
+					{
+						"name": "东乌珠穆沁旗",
+						"latter": "D"
+					},
+					{
+						"name": "西乌珠穆沁旗",
+						"latter": "X"
+					},
+					{
+						"name": "太仆寺旗",
+						"latter": "T"
+					},
+					{
+						"name": "镶黄旗",
+						"latter": "X"
+					},
+					{
+						"name": "正镶白旗",
+						"latter": "Z"
+					},
+					{
+						"name": "正蓝旗",
+						"latter": "Z"
+					},
+					{
+						"name": "多伦县",
+						"latter": "D"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "阿拉善盟",
+				"children": [{
+						"name": "阿拉善左旗",
+						"latter": "A"
+					},
+					{
+						"name": "阿拉善右旗",
+						"latter": "A"
+					},
+					{
+						"name": "额济纳旗",
+						"latter": "E"
+					}
+				],
+				"latter": "A"
+			}
+		],
+		"latter": "N"
+	},
+	{
+		"name": "辽宁省",
+		"children": [{
+				"name": "沈阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "和平区",
+						"latter": "H"
+					},
+					{
+						"name": "沈河区",
+						"latter": "S"
+					},
+					{
+						"name": "大东区",
+						"latter": "D"
+					},
+					{
+						"name": "皇姑区",
+						"latter": "H"
+					},
+					{
+						"name": "铁西区",
+						"latter": "T"
+					},
+					{
+						"name": "苏家屯区",
+						"latter": "S"
+					},
+					{
+						"name": "东陵区",
+						"latter": "D"
+					},
+					{
+						"name": "沈北新区",
+						"latter": "S"
+					},
+					{
+						"name": "于洪区",
+						"latter": "Y"
+					},
+					{
+						"name": "辽中县",
+						"latter": "L"
+					},
+					{
+						"name": "康平县",
+						"latter": "K"
+					},
+					{
+						"name": "法库县",
+						"latter": "F"
+					},
+					{
+						"name": "新民市",
+						"latter": "X"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "大连市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "中山区",
+						"latter": "Z"
+					},
+					{
+						"name": "西岗区",
+						"latter": "X"
+					},
+					{
+						"name": "沙河口区",
+						"latter": "S"
+					},
+					{
+						"name": "甘井子区",
+						"latter": "G"
+					},
+					{
+						"name": "旅顺口区",
+						"latter": "L"
+					},
+					{
+						"name": "金州区",
+						"latter": "J"
+					},
+					{
+						"name": "长海县",
+						"latter": "C"
+					},
+					{
+						"name": "瓦房店市",
+						"latter": "W"
+					},
+					{
+						"name": "普兰店市",
+						"latter": "P"
+					},
+					{
+						"name": "庄河市",
+						"latter": "Z"
+					}
+				],
+				"latter": "D"
+			},
+			{
+				"name": "鞍山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "铁东区",
+						"latter": "T"
+					},
+					{
+						"name": "铁西区",
+						"latter": "T"
+					},
+					{
+						"name": "立山区",
+						"latter": "L"
+					},
+					{
+						"name": "千山区",
+						"latter": "Q"
+					},
+					{
+						"name": "台安县",
+						"latter": "T"
+					},
+					{
+						"name": "岫岩满族自治县",
+						"latter": "X"
+					},
+					{
+						"name": "海城市",
+						"latter": "H"
+					}
+				],
+				"latter": "A"
+			},
+			{
+				"name": "抚顺市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "新抚区",
+						"latter": "X"
+					},
+					{
+						"name": "东洲区",
+						"latter": "D"
+					},
+					{
+						"name": "望花区",
+						"latter": "W"
+					},
+					{
+						"name": "顺城区",
+						"latter": "S"
+					},
+					{
+						"name": "抚顺县",
+						"latter": "F"
+					},
+					{
+						"name": "新宾满族自治县",
+						"latter": "X"
+					},
+					{
+						"name": "清原满族自治县",
+						"latter": "Q"
+					}
+				],
+				"latter": "F"
+			},
+			{
+				"name": "本溪市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "平山区",
+						"latter": "P"
+					},
+					{
+						"name": "溪湖区",
+						"latter": "X"
+					},
+					{
+						"name": "明山区",
+						"latter": "M"
+					},
+					{
+						"name": "南芬区",
+						"latter": "N"
+					},
+					{
+						"name": "本溪满族自治县",
+						"latter": "B"
+					},
+					{
+						"name": "桓仁满族自治县",
+						"latter": "H"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "丹东市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "元宝区",
+						"latter": "Y"
+					},
+					{
+						"name": "振兴区",
+						"latter": "Z"
+					},
+					{
+						"name": "振安区",
+						"latter": "Z"
+					},
+					{
+						"name": "宽甸满族自治县",
+						"latter": "K"
+					},
+					{
+						"name": "东港市",
+						"latter": "D"
+					},
+					{
+						"name": "凤城市",
+						"latter": "F"
+					}
+				],
+				"latter": "D"
+			},
+			{
+				"name": "锦州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "古塔区",
+						"latter": "G"
+					},
+					{
+						"name": "凌河区",
+						"latter": "L"
+					},
+					{
+						"name": "太和区",
+						"latter": "T"
+					},
+					{
+						"name": "黑山县",
+						"latter": "H"
+					},
+					{
+						"name": "义县",
+						"latter": "Y"
+					},
+					{
+						"name": "凌海市",
+						"latter": "L"
+					},
+					{
+						"name": "北镇市",
+						"latter": "B"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "营口市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "站前区",
+						"latter": "Z"
+					},
+					{
+						"name": "西市区",
+						"latter": "X"
+					},
+					{
+						"name": "鲅鱼圈区",
+						"latter": "B"
+					},
+					{
+						"name": "老边区",
+						"latter": "L"
+					},
+					{
+						"name": "盖州市",
+						"latter": "G"
+					},
+					{
+						"name": "大石桥市",
+						"latter": "D"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "阜新市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "海州区",
+						"latter": "H"
+					},
+					{
+						"name": "新邱区",
+						"latter": "X"
+					},
+					{
+						"name": "太平区",
+						"latter": "T"
+					},
+					{
+						"name": "清河门区",
+						"latter": "Q"
+					},
+					{
+						"name": "细河区",
+						"latter": "X"
+					},
+					{
+						"name": "阜新蒙古族自治县",
+						"latter": "F"
+					},
+					{
+						"name": "彰武县",
+						"latter": "Z"
+					}
+				],
+				"latter": "F"
+			},
+			{
+				"name": "辽阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "白塔区",
+						"latter": "B"
+					},
+					{
+						"name": "文圣区",
+						"latter": "W"
+					},
+					{
+						"name": "宏伟区",
+						"latter": "H"
+					},
+					{
+						"name": "弓长岭区",
+						"latter": "G"
+					},
+					{
+						"name": "太子河区",
+						"latter": "T"
+					},
+					{
+						"name": "辽阳县",
+						"latter": "L"
+					},
+					{
+						"name": "灯塔市",
+						"latter": "D"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "盘锦市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "双台子区",
+						"latter": "S"
+					},
+					{
+						"name": "兴隆台区",
+						"latter": "X"
+					},
+					{
+						"name": "大洼县",
+						"latter": "D"
+					},
+					{
+						"name": "盘山县",
+						"latter": "P"
+					}
+				],
+				"latter": "P"
+			},
+			{
+				"name": "铁岭市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "银州区",
+						"latter": "Y"
+					},
+					{
+						"name": "清河区",
+						"latter": "Q"
+					},
+					{
+						"name": "铁岭县",
+						"latter": "T"
+					},
+					{
+						"name": "西丰县",
+						"latter": "X"
+					},
+					{
+						"name": "昌图县",
+						"latter": "C"
+					},
+					{
+						"name": "调兵山市",
+						"latter": "T"
+					},
+					{
+						"name": "开原市",
+						"latter": "K"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "朝阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "双塔区",
+						"latter": "S"
+					},
+					{
+						"name": "龙城区",
+						"latter": "L"
+					},
+					{
+						"name": "朝阳县",
+						"latter": "Z"
+					},
+					{
+						"name": "建平县",
+						"latter": "J"
+					},
+					{
+						"name": "喀喇沁左翼蒙古族自治县",
+						"latter": "K"
+					},
+					{
+						"name": "北票市",
+						"latter": "B"
+					},
+					{
+						"name": "凌源市",
+						"latter": "L"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "葫芦岛市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "连山区",
+						"latter": "L"
+					},
+					{
+						"name": "龙港区",
+						"latter": "L"
+					},
+					{
+						"name": "南票区",
+						"latter": "N"
+					},
+					{
+						"name": "绥中县",
+						"latter": "S"
+					},
+					{
+						"name": "建昌县",
+						"latter": "J"
+					},
+					{
+						"name": "兴城市",
+						"latter": "X"
+					}
+				],
+				"latter": "H"
+			}
+		],
+		"latter": "L"
+	},
+	{
+		"name": "吉林省",
+		"children": [{
+				"name": "长春市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "南关区",
+						"latter": "N"
+					},
+					{
+						"name": "宽城区",
+						"latter": "K"
+					},
+					{
+						"name": "朝阳区",
+						"latter": "Z"
+					},
+					{
+						"name": "二道区",
+						"latter": "E"
+					},
+					{
+						"name": "绿园区",
+						"latter": "L"
+					},
+					{
+						"name": "双阳区",
+						"latter": "S"
+					},
+					{
+						"name": "农安县",
+						"latter": "N"
+					},
+					{
+						"name": "九台市",
+						"latter": "J"
+					},
+					{
+						"name": "榆树市",
+						"latter": "Y"
+					},
+					{
+						"name": "德惠市",
+						"latter": "D"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "吉林市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "昌邑区",
+						"latter": "C"
+					},
+					{
+						"name": "龙潭区",
+						"latter": "L"
+					},
+					{
+						"name": "船营区",
+						"latter": "C"
+					},
+					{
+						"name": "丰满区",
+						"latter": "F"
+					},
+					{
+						"name": "永吉县",
+						"latter": "Y"
+					},
+					{
+						"name": "蛟河市",
+						"latter": "J"
+					},
+					{
+						"name": "桦甸市",
+						"latter": "H"
+					},
+					{
+						"name": "舒兰市",
+						"latter": "S"
+					},
+					{
+						"name": "磐石市",
+						"latter": "P"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "四平市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "铁西区",
+						"latter": "T"
+					},
+					{
+						"name": "铁东区",
+						"latter": "T"
+					},
+					{
+						"name": "梨树县",
+						"latter": "L"
+					},
+					{
+						"name": "伊通满族自治县",
+						"latter": "Y"
+					},
+					{
+						"name": "公主岭市",
+						"latter": "G"
+					},
+					{
+						"name": "双辽市",
+						"latter": "S"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "辽源市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "龙山区",
+						"latter": "L"
+					},
+					{
+						"name": "西安区",
+						"latter": "X"
+					},
+					{
+						"name": "东丰县",
+						"latter": "D"
+					},
+					{
+						"name": "东辽县",
+						"latter": "D"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "通化市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "东昌区",
+						"latter": "D"
+					},
+					{
+						"name": "二道江区",
+						"latter": "E"
+					},
+					{
+						"name": "通化县",
+						"latter": "T"
+					},
+					{
+						"name": "辉南县",
+						"latter": "H"
+					},
+					{
+						"name": "柳河县",
+						"latter": "L"
+					},
+					{
+						"name": "梅河口市",
+						"latter": "M"
+					},
+					{
+						"name": "集安市",
+						"latter": "J"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "白山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "浑江区",
+						"latter": "H"
+					},
+					{
+						"name": "江源区",
+						"latter": "J"
+					},
+					{
+						"name": "抚松县",
+						"latter": "F"
+					},
+					{
+						"name": "靖宇县",
+						"latter": "J"
+					},
+					{
+						"name": "长白朝鲜族自治县",
+						"latter": "C"
+					},
+					{
+						"name": "临江市",
+						"latter": "L"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "松原市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "宁江区",
+						"latter": "N"
+					},
+					{
+						"name": "前郭尔罗斯蒙古族自治县",
+						"latter": "Q"
+					},
+					{
+						"name": "长岭县",
+						"latter": "C"
+					},
+					{
+						"name": "乾安县",
+						"latter": "Q"
+					},
+					{
+						"name": "扶余市",
+						"latter": "F"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "白城市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "洮北区",
+						"latter": "T"
+					},
+					{
+						"name": "镇赉县",
+						"latter": "Z"
+					},
+					{
+						"name": "通榆县",
+						"latter": "T"
+					},
+					{
+						"name": "洮南市",
+						"latter": "T"
+					},
+					{
+						"name": "大安市",
+						"latter": "D"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "延边朝鲜族自治州",
+				"children": [{
+						"name": "延吉市",
+						"latter": "Y"
+					},
+					{
+						"name": "图们市",
+						"latter": "T"
+					},
+					{
+						"name": "敦化市",
+						"latter": "D"
+					},
+					{
+						"name": "珲春市",
+						"latter": "H"
+					},
+					{
+						"name": "龙井市",
+						"latter": "L"
+					},
+					{
+						"name": "和龙市",
+						"latter": "H"
+					},
+					{
+						"name": "汪清县",
+						"latter": "W"
+					},
+					{
+						"name": "安图县",
+						"latter": "A"
+					}
+				],
+				"latter": "Y"
+			}
+		],
+		"latter": "J"
+	},
+	{
+		"name": "黑龙江省",
+		"children": [{
+				"name": "哈尔滨市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "道里区",
+						"latter": "D"
+					},
+					{
+						"name": "南岗区",
+						"latter": "N"
+					},
+					{
+						"name": "道外区",
+						"latter": "D"
+					},
+					{
+						"name": "平房区",
+						"latter": "P"
+					},
+					{
+						"name": "松北区",
+						"latter": "S"
+					},
+					{
+						"name": "香坊区",
+						"latter": "X"
+					},
+					{
+						"name": "呼兰区",
+						"latter": "H"
+					},
+					{
+						"name": "阿城区",
+						"latter": "A"
+					},
+					{
+						"name": "依兰县",
+						"latter": "Y"
+					},
+					{
+						"name": "方正县",
+						"latter": "F"
+					},
+					{
+						"name": "宾县",
+						"latter": "B"
+					},
+					{
+						"name": "巴彦县",
+						"latter": "B"
+					},
+					{
+						"name": "木兰县",
+						"latter": "M"
+					},
+					{
+						"name": "通河县",
+						"latter": "T"
+					},
+					{
+						"name": "延寿县",
+						"latter": "Y"
+					},
+					{
+						"name": "双城市",
+						"latter": "S"
+					},
+					{
+						"name": "尚志市",
+						"latter": "S"
+					},
+					{
+						"name": "五常市",
+						"latter": "W"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "齐齐哈尔市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "龙沙区",
+						"latter": "L"
+					},
+					{
+						"name": "建华区",
+						"latter": "J"
+					},
+					{
+						"name": "铁锋区",
+						"latter": "T"
+					},
+					{
+						"name": "昂昂溪区",
+						"latter": "A"
+					},
+					{
+						"name": "富拉尔基区",
+						"latter": "F"
+					},
+					{
+						"name": "碾子山区",
+						"latter": "N"
+					},
+					{
+						"name": "梅里斯达斡尔族区",
+						"latter": "M"
+					},
+					{
+						"name": "龙江县",
+						"latter": "L"
+					},
+					{
+						"name": "依安县",
+						"latter": "Y"
+					},
+					{
+						"name": "泰来县",
+						"latter": "T"
+					},
+					{
+						"name": "甘南县",
+						"latter": "G"
+					},
+					{
+						"name": "富裕县",
+						"latter": "F"
+					},
+					{
+						"name": "克山县",
+						"latter": "K"
+					},
+					{
+						"name": "克东县",
+						"latter": "K"
+					},
+					{
+						"name": "拜泉县",
+						"latter": "B"
+					},
+					{
+						"name": "讷河市",
+						"latter": "N"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "鸡西市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "鸡冠区",
+						"latter": "J"
+					},
+					{
+						"name": "恒山区",
+						"latter": "H"
+					},
+					{
+						"name": "滴道区",
+						"latter": "D"
+					},
+					{
+						"name": "梨树区",
+						"latter": "L"
+					},
+					{
+						"name": "城子河区",
+						"latter": "C"
+					},
+					{
+						"name": "麻山区",
+						"latter": "M"
+					},
+					{
+						"name": "鸡东县",
+						"latter": "J"
+					},
+					{
+						"name": "虎林市",
+						"latter": "H"
+					},
+					{
+						"name": "密山市",
+						"latter": "M"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "鹤岗市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "向阳区",
+						"latter": "X"
+					},
+					{
+						"name": "工农区",
+						"latter": "G"
+					},
+					{
+						"name": "南山区",
+						"latter": "N"
+					},
+					{
+						"name": "兴安区",
+						"latter": "X"
+					},
+					{
+						"name": "东山区",
+						"latter": "D"
+					},
+					{
+						"name": "兴山区",
+						"latter": "X"
+					},
+					{
+						"name": "萝北县",
+						"latter": "L"
+					},
+					{
+						"name": "绥滨县",
+						"latter": "S"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "双鸭山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "尖山区",
+						"latter": "J"
+					},
+					{
+						"name": "岭东区",
+						"latter": "L"
+					},
+					{
+						"name": "四方台区",
+						"latter": "S"
+					},
+					{
+						"name": "宝山区",
+						"latter": "B"
+					},
+					{
+						"name": "集贤县",
+						"latter": "J"
+					},
+					{
+						"name": "友谊县",
+						"latter": "Y"
+					},
+					{
+						"name": "宝清县",
+						"latter": "B"
+					},
+					{
+						"name": "饶河县",
+						"latter": "R"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "大庆市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "萨尔图区",
+						"latter": "S"
+					},
+					{
+						"name": "龙凤区",
+						"latter": "L"
+					},
+					{
+						"name": "让胡路区",
+						"latter": "R"
+					},
+					{
+						"name": "红岗区",
+						"latter": "H"
+					},
+					{
+						"name": "大同区",
+						"latter": "D"
+					},
+					{
+						"name": "肇州县",
+						"latter": "Z"
+					},
+					{
+						"name": "肇源县",
+						"latter": "Z"
+					},
+					{
+						"name": "林甸县",
+						"latter": "L"
+					},
+					{
+						"name": "杜尔伯特蒙古族自治县",
+						"latter": "D"
+					}
+				],
+				"latter": "D"
+			},
+			{
+				"name": "伊春市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "伊春区",
+						"latter": "Y"
+					},
+					{
+						"name": "南岔区",
+						"latter": "N"
+					},
+					{
+						"name": "友好区",
+						"latter": "Y"
+					},
+					{
+						"name": "西林区",
+						"latter": "X"
+					},
+					{
+						"name": "翠峦区",
+						"latter": "C"
+					},
+					{
+						"name": "新青区",
+						"latter": "X"
+					},
+					{
+						"name": "美溪区",
+						"latter": "M"
+					},
+					{
+						"name": "金山屯区",
+						"latter": "J"
+					},
+					{
+						"name": "五营区",
+						"latter": "W"
+					},
+					{
+						"name": "乌马河区",
+						"latter": "W"
+					},
+					{
+						"name": "汤旺河区",
+						"latter": "T"
+					},
+					{
+						"name": "带岭区",
+						"latter": "D"
+					},
+					{
+						"name": "乌伊岭区",
+						"latter": "W"
+					},
+					{
+						"name": "红星区",
+						"latter": "H"
+					},
+					{
+						"name": "上甘岭区",
+						"latter": "S"
+					},
+					{
+						"name": "嘉荫县",
+						"latter": "J"
+					},
+					{
+						"name": "铁力市",
+						"latter": "T"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "佳木斯市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "向阳区",
+						"latter": "X"
+					},
+					{
+						"name": "前进区",
+						"latter": "Q"
+					},
+					{
+						"name": "东风区",
+						"latter": "D"
+					},
+					{
+						"name": "郊区",
+						"latter": "J"
+					},
+					{
+						"name": "桦南县",
+						"latter": "H"
+					},
+					{
+						"name": "桦川县",
+						"latter": "H"
+					},
+					{
+						"name": "汤原县",
+						"latter": "T"
+					},
+					{
+						"name": "抚远县",
+						"latter": "F"
+					},
+					{
+						"name": "同江市",
+						"latter": "T"
+					},
+					{
+						"name": "富锦市",
+						"latter": "F"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "七台河市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "新兴区",
+						"latter": "X"
+					},
+					{
+						"name": "桃山区",
+						"latter": "T"
+					},
+					{
+						"name": "茄子河区",
+						"latter": "Q"
+					},
+					{
+						"name": "勃利县",
+						"latter": "B"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "牡丹江市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "东安区",
+						"latter": "D"
+					},
+					{
+						"name": "阳明区",
+						"latter": "Y"
+					},
+					{
+						"name": "爱民区",
+						"latter": "A"
+					},
+					{
+						"name": "西安区",
+						"latter": "X"
+					},
+					{
+						"name": "东宁县",
+						"latter": "D"
+					},
+					{
+						"name": "林口县",
+						"latter": "L"
+					},
+					{
+						"name": "绥芬河市",
+						"latter": "S"
+					},
+					{
+						"name": "海林市",
+						"latter": "H"
+					},
+					{
+						"name": "宁安市",
+						"latter": "N"
+					},
+					{
+						"name": "穆棱市",
+						"latter": "M"
+					}
+				],
+				"latter": "M"
+			},
+			{
+				"name": "黑河市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "爱辉区",
+						"latter": "A"
+					},
+					{
+						"name": "嫩江县",
+						"latter": "N"
+					},
+					{
+						"name": "逊克县",
+						"latter": "X"
+					},
+					{
+						"name": "孙吴县",
+						"latter": "S"
+					},
+					{
+						"name": "北安市",
+						"latter": "B"
+					},
+					{
+						"name": "五大连池市",
+						"latter": "W"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "绥化市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "北林区",
+						"latter": "B"
+					},
+					{
+						"name": "望奎县",
+						"latter": "W"
+					},
+					{
+						"name": "兰西县",
+						"latter": "L"
+					},
+					{
+						"name": "青冈县",
+						"latter": "Q"
+					},
+					{
+						"name": "庆安县",
+						"latter": "Q"
+					},
+					{
+						"name": "明水县",
+						"latter": "M"
+					},
+					{
+						"name": "绥棱县",
+						"latter": "S"
+					},
+					{
+						"name": "安达市",
+						"latter": "A"
+					},
+					{
+						"name": "肇东市",
+						"latter": "Z"
+					},
+					{
+						"name": "海伦市",
+						"latter": "H"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "大兴安岭地区",
+				"children": [{
+						"name": "呼玛县",
+						"latter": "H"
+					},
+					{
+						"name": "塔河县",
+						"latter": "T"
+					},
+					{
+						"name": "漠河县",
+						"latter": "M"
+					}
+				],
+				"latter": "D"
+			}
+		],
+		"latter": "H"
+	},
+	{
+		"name": "上海",
+		"latter": "S",
+		"children": [
+			{
+				"name": "上海市",
+				"children": [{
+						"name": "黄浦区",
+						"latter": "H"
+					},
+					{
+						"name": "徐汇区",
+						"latter": "X"
+					},
+					{
+						"name": "长宁区",
+						"latter": "C"
+					},
+					{
+						"name": "静安区",
+						"latter": "J"
+					},
+					{
+						"name": "普陀区",
+						"latter": "P"
+					},
+					{
+						"name": "闸北区",
+						"latter": "Z"
+					},
+					{
+						"name": "虹口区",
+						"latter": "H"
+					},
+					{
+						"name": "杨浦区",
+						"latter": "Y"
+					},
+					{
+						"name": "闵行区",
+						"latter": "M"
+					},
+					{
+						"name": "宝山区",
+						"latter": "B"
+					},
+					{
+						"name": "嘉定区",
+						"latter": "J"
+					},
+					{
+						"name": "浦东新区",
+						"latter": "P"
+					},
+					{
+						"name": "金山区",
+						"latter": "J"
+					},
+					{
+						"name": "松江区",
+						"latter": "S"
+					},
+					{
+						"name": "青浦区",
+						"latter": "Q"
+					},
+					{
+						"name": "奉贤区",
+						"latter": "F"
+					},
+					{
+						"name": "崇明县",
+						"latter": "C"
+					}
+				],
+				"latter": "S"
+			}
+		]
+	},
+	{
+		"name": "江苏省",
+		"children": [{
+				"name": "南京市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "玄武区",
+						"latter": "X"
+					},
+					{
+						"name": "秦淮区",
+						"latter": "Q"
+					},
+					{
+						"name": "建邺区",
+						"latter": "J"
+					},
+					{
+						"name": "鼓楼区",
+						"latter": "G"
+					},
+					{
+						"name": "浦口区",
+						"latter": "P"
+					},
+					{
+						"name": "栖霞区",
+						"latter": "Q"
+					},
+					{
+						"name": "雨花台区",
+						"latter": "Y"
+					},
+					{
+						"name": "江宁区",
+						"latter": "J"
+					},
+					{
+						"name": "六合区",
+						"latter": "L"
+					},
+					{
+						"name": "溧水区",
+						"latter": "L"
+					},
+					{
+						"name": "高淳区",
+						"latter": "G"
+					}
+				],
+				"latter": "N"
+			},
+			{
+				"name": "无锡市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "崇安区",
+						"latter": "C"
+					},
+					{
+						"name": "南长区",
+						"latter": "N"
+					},
+					{
+						"name": "北塘区",
+						"latter": "B"
+					},
+					{
+						"name": "锡山区",
+						"latter": "X"
+					},
+					{
+						"name": "惠山区",
+						"latter": "H"
+					},
+					{
+						"name": "滨湖区",
+						"latter": "B"
+					},
+					{
+						"name": "江阴市",
+						"latter": "J"
+					},
+					{
+						"name": "宜兴市",
+						"latter": "Y"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "徐州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "鼓楼区",
+						"latter": "G"
+					},
+					{
+						"name": "云龙区",
+						"latter": "Y"
+					},
+					{
+						"name": "贾汪区",
+						"latter": "J"
+					},
+					{
+						"name": "泉山区",
+						"latter": "Q"
+					},
+					{
+						"name": "铜山区",
+						"latter": "T"
+					},
+					{
+						"name": "丰县",
+						"latter": "F"
+					},
+					{
+						"name": "沛县",
+						"latter": "P"
+					},
+					{
+						"name": "睢宁县",
+						"latter": "H"
+					},
+					{
+						"name": "新沂市",
+						"latter": "X"
+					},
+					{
+						"name": "邳州市",
+						"latter": "P"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "常州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "天宁区",
+						"latter": "T"
+					},
+					{
+						"name": "钟楼区",
+						"latter": "Z"
+					},
+					{
+						"name": "戚墅堰区",
+						"latter": "Q"
+					},
+					{
+						"name": "新北区",
+						"latter": "X"
+					},
+					{
+						"name": "武进区",
+						"latter": "W"
+					},
+					{
+						"name": "溧阳市",
+						"latter": "L"
+					},
+					{
+						"name": "金坛市",
+						"latter": "J"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "苏州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "虎丘区",
+						"latter": "H"
+					},
+					{
+						"name": "吴中区",
+						"latter": "W"
+					},
+					{
+						"name": "相城区",
+						"latter": "X"
+					},
+					{
+						"name": "姑苏区",
+						"latter": "G"
+					},
+					{
+						"name": "吴江区",
+						"latter": "W"
+					},
+					{
+						"name": "常熟市",
+						"latter": "C"
+					},
+					{
+						"name": "张家港市",
+						"latter": "Z"
+					},
+					{
+						"name": "昆山市",
+						"latter": "K"
+					},
+					{
+						"name": "太仓市",
+						"latter": "T"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "南通市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "崇川区",
+						"latter": "C"
+					},
+					{
+						"name": "港闸区",
+						"latter": "G"
+					},
+					{
+						"name": "通州区",
+						"latter": "T"
+					},
+					{
+						"name": "海安县",
+						"latter": "H"
+					},
+					{
+						"name": "如东县",
+						"latter": "R"
+					},
+					{
+						"name": "启东市",
+						"latter": "Q"
+					},
+					{
+						"name": "如皋市",
+						"latter": "R"
+					},
+					{
+						"name": "海门市",
+						"latter": "H"
+					}
+				],
+				"latter": "N"
+			},
+			{
+				"name": "连云港市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "连云区",
+						"latter": "L"
+					},
+					{
+						"name": "新浦区",
+						"latter": "X"
+					},
+					{
+						"name": "海州区",
+						"latter": "H"
+					},
+					{
+						"name": "赣榆县",
+						"latter": "G"
+					},
+					{
+						"name": "东海县",
+						"latter": "D"
+					},
+					{
+						"name": "灌云县",
+						"latter": "G"
+					},
+					{
+						"name": "灌南县",
+						"latter": "G"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "淮安市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "清河区",
+						"latter": "Q"
+					},
+					{
+						"name": "淮安区",
+						"latter": "H"
+					},
+					{
+						"name": "淮阴区",
+						"latter": "H"
+					},
+					{
+						"name": "清浦区",
+						"latter": "Q"
+					},
+					{
+						"name": "涟水县",
+						"latter": "L"
+					},
+					{
+						"name": "洪泽县",
+						"latter": "H"
+					},
+					{
+						"name": "盱眙县",
+						"latter": "X"
+					},
+					{
+						"name": "金湖县",
+						"latter": "J"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "盐城市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "亭湖区",
+						"latter": "T"
+					},
+					{
+						"name": "盐都区",
+						"latter": "Y"
+					},
+					{
+						"name": "响水县",
+						"latter": "X"
+					},
+					{
+						"name": "滨海县",
+						"latter": "B"
+					},
+					{
+						"name": "阜宁县",
+						"latter": "F"
+					},
+					{
+						"name": "射阳县",
+						"latter": "S"
+					},
+					{
+						"name": "建湖县",
+						"latter": "J"
+					},
+					{
+						"name": "东台市",
+						"latter": "D"
+					},
+					{
+						"name": "大丰市",
+						"latter": "D"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "扬州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "广陵区",
+						"latter": "G"
+					},
+					{
+						"name": "邗江区",
+						"latter": "H"
+					},
+					{
+						"name": "江都区",
+						"latter": "J"
+					},
+					{
+						"name": "宝应县",
+						"latter": "B"
+					},
+					{
+						"name": "仪征市",
+						"latter": "Y"
+					},
+					{
+						"name": "高邮市",
+						"latter": "G"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "镇江市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "京口区",
+						"latter": "J"
+					},
+					{
+						"name": "润州区",
+						"latter": "R"
+					},
+					{
+						"name": "丹徒区",
+						"latter": "D"
+					},
+					{
+						"name": "丹阳市",
+						"latter": "D"
+					},
+					{
+						"name": "扬中市",
+						"latter": "Y"
+					},
+					{
+						"name": "句容市",
+						"latter": "J"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "泰州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "海陵区",
+						"latter": "H"
+					},
+					{
+						"name": "高港区",
+						"latter": "G"
+					},
+					{
+						"name": "姜堰区",
+						"latter": "J"
+					},
+					{
+						"name": "兴化市",
+						"latter": "X"
+					},
+					{
+						"name": "靖江市",
+						"latter": "J"
+					},
+					{
+						"name": "泰兴市",
+						"latter": "T"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "宿迁市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "宿城区",
+						"latter": "S"
+					},
+					{
+						"name": "宿豫区",
+						"latter": "S"
+					},
+					{
+						"name": "沭阳县",
+						"latter": "S"
+					},
+					{
+						"name": "泗阳县",
+						"latter": "S"
+					},
+					{
+						"name": "泗洪县",
+						"latter": "S"
+					}
+				],
+				"latter": "S"
+			}
+		],
+		"latter": "J"
+	},
+	{
+		"name": "浙江省",
+		"children": [{
+				"name": "杭州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "上城区",
+						"latter": "S"
+					},
+					{
+						"name": "下城区",
+						"latter": "X"
+					},
+					{
+						"name": "江干区",
+						"latter": "J"
+					},
+					{
+						"name": "拱墅区",
+						"latter": "G"
+					},
+					{
+						"name": "西湖区",
+						"latter": "X"
+					},
+					{
+						"name": "滨江区",
+						"latter": "B"
+					},
+					{
+						"name": "萧山区",
+						"latter": "X"
+					},
+					{
+						"name": "余杭区",
+						"latter": "Y"
+					},
+					{
+						"name": "桐庐县",
+						"latter": "T"
+					},
+					{
+						"name": "淳安县",
+						"latter": "C"
+					},
+					{
+						"name": "建德市",
+						"latter": "J"
+					},
+					{
+						"name": "富阳市",
+						"latter": "F"
+					},
+					{
+						"name": "临安市",
+						"latter": "L"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "宁波市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "海曙区",
+						"latter": "H"
+					},
+					{
+						"name": "江东区",
+						"latter": "J"
+					},
+					{
+						"name": "江北区",
+						"latter": "J"
+					},
+					{
+						"name": "北仑区",
+						"latter": "B"
+					},
+					{
+						"name": "镇海区",
+						"latter": "Z"
+					},
+					{
+						"name": "鄞州区",
+						"latter": "Y"
+					},
+					{
+						"name": "象山县",
+						"latter": "X"
+					},
+					{
+						"name": "宁海县",
+						"latter": "N"
+					},
+					{
+						"name": "余姚市",
+						"latter": "Y"
+					},
+					{
+						"name": "慈溪市",
+						"latter": "C"
+					},
+					{
+						"name": "奉化市",
+						"latter": "F"
+					}
+				],
+				"latter": "N"
+			},
+			{
+				"name": "温州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "鹿城区",
+						"latter": "L"
+					},
+					{
+						"name": "龙湾区",
+						"latter": "L"
+					},
+					{
+						"name": "瓯海区",
+						"latter": "O"
+					},
+					{
+						"name": "洞头县",
+						"latter": "D"
+					},
+					{
+						"name": "永嘉县",
+						"latter": "Y"
+					},
+					{
+						"name": "平阳县",
+						"latter": "P"
+					},
+					{
+						"name": "苍南县",
+						"latter": "C"
+					},
+					{
+						"name": "文成县",
+						"latter": "W"
+					},
+					{
+						"name": "泰顺县",
+						"latter": "T"
+					},
+					{
+						"name": "瑞安市",
+						"latter": "R"
+					},
+					{
+						"name": "乐清市",
+						"latter": "L"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "嘉兴市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "南湖区",
+						"latter": "N"
+					},
+					{
+						"name": "秀洲区",
+						"latter": "X"
+					},
+					{
+						"name": "嘉善县",
+						"latter": "J"
+					},
+					{
+						"name": "海盐县",
+						"latter": "H"
+					},
+					{
+						"name": "海宁市",
+						"latter": "H"
+					},
+					{
+						"name": "平湖市",
+						"latter": "P"
+					},
+					{
+						"name": "桐乡市",
+						"latter": "T"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "湖州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "吴兴区",
+						"latter": "W"
+					},
+					{
+						"name": "南浔区",
+						"latter": "N"
+					},
+					{
+						"name": "德清县",
+						"latter": "D"
+					},
+					{
+						"name": "长兴县",
+						"latter": "C"
+					},
+					{
+						"name": "安吉县",
+						"latter": "A"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "绍兴市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "越城区",
+						"latter": "Y"
+					},
+					{
+						"name": "绍兴县",
+						"latter": "S"
+					},
+					{
+						"name": "新昌县",
+						"latter": "X"
+					},
+					{
+						"name": "诸暨市",
+						"latter": "Z"
+					},
+					{
+						"name": "上虞市",
+						"latter": "S"
+					},
+					{
+						"name": "嵊州市",
+						"latter": "S"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "金华市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "婺城区",
+						"latter": "W"
+					},
+					{
+						"name": "金东区",
+						"latter": "J"
+					},
+					{
+						"name": "武义县",
+						"latter": "W"
+					},
+					{
+						"name": "浦江县",
+						"latter": "P"
+					},
+					{
+						"name": "磐安县",
+						"latter": "P"
+					},
+					{
+						"name": "兰溪市",
+						"latter": "L"
+					},
+					{
+						"name": "义乌市",
+						"latter": "Y"
+					},
+					{
+						"name": "东阳市",
+						"latter": "D"
+					},
+					{
+						"name": "永康市",
+						"latter": "Y"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "衢州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "柯城区",
+						"latter": "K"
+					},
+					{
+						"name": "衢江区",
+						"latter": "Q"
+					},
+					{
+						"name": "常山县",
+						"latter": "C"
+					},
+					{
+						"name": "开化县",
+						"latter": "K"
+					},
+					{
+						"name": "龙游县",
+						"latter": "L"
+					},
+					{
+						"name": "江山市",
+						"latter": "J"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "舟山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "定海区",
+						"latter": "D"
+					},
+					{
+						"name": "普陀区",
+						"latter": "P"
+					},
+					{
+						"name": "岱山县",
+						"latter": "D"
+					},
+					{
+						"name": "嵊泗县",
+						"latter": "S"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "台州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "椒江区",
+						"latter": "J"
+					},
+					{
+						"name": "黄岩区",
+						"latter": "H"
+					},
+					{
+						"name": "路桥区",
+						"latter": "L"
+					},
+					{
+						"name": "玉环县",
+						"latter": "Y"
+					},
+					{
+						"name": "三门县",
+						"latter": "S"
+					},
+					{
+						"name": "天台县",
+						"latter": "T"
+					},
+					{
+						"name": "仙居县",
+						"latter": "X"
+					},
+					{
+						"name": "温岭市",
+						"latter": "W"
+					},
+					{
+						"name": "临海市",
+						"latter": "L"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "丽水市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "莲都区",
+						"latter": "L"
+					},
+					{
+						"name": "青田县",
+						"latter": "Q"
+					},
+					{
+						"name": "缙云县",
+						"latter": "J"
+					},
+					{
+						"name": "遂昌县",
+						"latter": "S"
+					},
+					{
+						"name": "松阳县",
+						"latter": "S"
+					},
+					{
+						"name": "云和县",
+						"latter": "Y"
+					},
+					{
+						"name": "庆元县",
+						"latter": "Q"
+					},
+					{
+						"name": "景宁畲族自治县",
+						"latter": "J"
+					},
+					{
+						"name": "龙泉市",
+						"latter": "L"
+					}
+				],
+				"latter": "L"
+			}
+		],
+		"latter": "Z"
+	},
+	{
+		"name": "安徽省",
+		"children": [{
+				"name": "合肥市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "瑶海区",
+						"latter": "Y"
+					},
+					{
+						"name": "庐阳区",
+						"latter": "L"
+					},
+					{
+						"name": "蜀山区",
+						"latter": "S"
+					},
+					{
+						"name": "包河区",
+						"latter": "B"
+					},
+					{
+						"name": "长丰县",
+						"latter": "C"
+					},
+					{
+						"name": "肥东县",
+						"latter": "F"
+					},
+					{
+						"name": "肥西县",
+						"latter": "F"
+					},
+					{
+						"name": "庐江县",
+						"latter": "L"
+					},
+					{
+						"name": "巢湖市",
+						"latter": "C"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "芜湖市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "镜湖区",
+						"latter": "J"
+					},
+					{
+						"name": "弋江区",
+						"latter": "Y"
+					},
+					{
+						"name": "鸠江区",
+						"latter": "J"
+					},
+					{
+						"name": "三山区",
+						"latter": "S"
+					},
+					{
+						"name": "芜湖县",
+						"latter": "W"
+					},
+					{
+						"name": "繁昌县",
+						"latter": "F"
+					},
+					{
+						"name": "南陵县",
+						"latter": "N"
+					},
+					{
+						"name": "无为县",
+						"latter": "W"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "蚌埠市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "龙子湖区",
+						"latter": "L"
+					},
+					{
+						"name": "蚌山区",
+						"latter": "B"
+					},
+					{
+						"name": "禹会区",
+						"latter": "Y"
+					},
+					{
+						"name": "淮上区",
+						"latter": "H"
+					},
+					{
+						"name": "怀远县",
+						"latter": "H"
+					},
+					{
+						"name": "五河县",
+						"latter": "W"
+					},
+					{
+						"name": "固镇县",
+						"latter": "G"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "淮南市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "大通区",
+						"latter": "D"
+					},
+					{
+						"name": "田家庵区",
+						"latter": "T"
+					},
+					{
+						"name": "谢家集区",
+						"latter": "X"
+					},
+					{
+						"name": "八公山区",
+						"latter": "B"
+					},
+					{
+						"name": "潘集区",
+						"latter": "P"
+					},
+					{
+						"name": "凤台县",
+						"latter": "F"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "马鞍山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "花山区",
+						"latter": "H"
+					},
+					{
+						"name": "雨山区",
+						"latter": "Y"
+					},
+					{
+						"name": "博望区",
+						"latter": "B"
+					},
+					{
+						"name": "当涂县",
+						"latter": "D"
+					},
+					{
+						"name": "含山县",
+						"latter": "H"
+					},
+					{
+						"name": "和县",
+						"latter": "H"
+					}
+				],
+				"latter": "M"
+			},
+			{
+				"name": "淮北市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "杜集区",
+						"latter": "D"
+					},
+					{
+						"name": "相山区",
+						"latter": "X"
+					},
+					{
+						"name": "烈山区",
+						"latter": "L"
+					},
+					{
+						"name": "濉溪县",
+						"latter": "S"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "铜陵市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "铜官山区",
+						"latter": "T"
+					},
+					{
+						"name": "狮子山区",
+						"latter": "S"
+					},
+					{
+						"name": "郊区",
+						"latter": "J"
+					},
+					{
+						"name": "铜陵县",
+						"latter": "T"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "安庆市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "迎江区",
+						"latter": "Y"
+					},
+					{
+						"name": "大观区",
+						"latter": "D"
+					},
+					{
+						"name": "宜秀区",
+						"latter": "Y"
+					},
+					{
+						"name": "怀宁县",
+						"latter": "H"
+					},
+					{
+						"name": "枞阳县",
+						"latter": "C"
+					},
+					{
+						"name": "潜山县",
+						"latter": "Q"
+					},
+					{
+						"name": "太湖县",
+						"latter": "T"
+					},
+					{
+						"name": "宿松县",
+						"latter": "S"
+					},
+					{
+						"name": "望江县",
+						"latter": "W"
+					},
+					{
+						"name": "岳西县",
+						"latter": "Y"
+					},
+					{
+						"name": "桐城市",
+						"latter": "T"
+					}
+				],
+				"latter": "A"
+			},
+			{
+				"name": "黄山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "屯溪区",
+						"latter": "T"
+					},
+					{
+						"name": "黄山区",
+						"latter": "H"
+					},
+					{
+						"name": "徽州区",
+						"latter": "H"
+					},
+					{
+						"name": "歙县",
+						"latter": "X"
+					},
+					{
+						"name": "休宁县",
+						"latter": "X"
+					},
+					{
+						"name": "黟县",
+						"latter": "Y"
+					},
+					{
+						"name": "祁门县",
+						"latter": "Q"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "滁州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "琅琊区",
+						"latter": "L"
+					},
+					{
+						"name": "南谯区",
+						"latter": "N"
+					},
+					{
+						"name": "来安县",
+						"latter": "L"
+					},
+					{
+						"name": "全椒县",
+						"latter": "Q"
+					},
+					{
+						"name": "定远县",
+						"latter": "D"
+					},
+					{
+						"name": "凤阳县",
+						"latter": "F"
+					},
+					{
+						"name": "天长市",
+						"latter": "T"
+					},
+					{
+						"name": "明光市",
+						"latter": "M"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "阜阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "颍州区",
+						"latter": "Y"
+					},
+					{
+						"name": "颍东区",
+						"latter": "Y"
+					},
+					{
+						"name": "颍泉区",
+						"latter": "Y"
+					},
+					{
+						"name": "临泉县",
+						"latter": "L"
+					},
+					{
+						"name": "太和县",
+						"latter": "T"
+					},
+					{
+						"name": "阜南县",
+						"latter": "F"
+					},
+					{
+						"name": "颍上县",
+						"latter": "Y"
+					},
+					{
+						"name": "界首市",
+						"latter": "J"
+					}
+				],
+				"latter": "F"
+			},
+			{
+				"name": "宿州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "埇桥区",
+						"latter": "Y"
+					},
+					{
+						"name": "砀山县",
+						"latter": "D"
+					},
+					{
+						"name": "萧县",
+						"latter": "X"
+					},
+					{
+						"name": "灵璧县",
+						"latter": "L"
+					},
+					{
+						"name": "泗县",
+						"latter": "S"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "六安市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "金安区",
+						"latter": "J"
+					},
+					{
+						"name": "裕安区",
+						"latter": "Y"
+					},
+					{
+						"name": "寿县",
+						"latter": "S"
+					},
+					{
+						"name": "霍邱县",
+						"latter": "H"
+					},
+					{
+						"name": "舒城县",
+						"latter": "S"
+					},
+					{
+						"name": "金寨县",
+						"latter": "J"
+					},
+					{
+						"name": "霍山县",
+						"latter": "H"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "亳州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "谯城区",
+						"latter": "Q"
+					},
+					{
+						"name": "涡阳县",
+						"latter": "W"
+					},
+					{
+						"name": "蒙城县",
+						"latter": "M"
+					},
+					{
+						"name": "利辛县",
+						"latter": "L"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "池州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "贵池区",
+						"latter": "G"
+					},
+					{
+						"name": "东至县",
+						"latter": "D"
+					},
+					{
+						"name": "石台县",
+						"latter": "S"
+					},
+					{
+						"name": "青阳县",
+						"latter": "Q"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "宣城市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "宣州区",
+						"latter": "X"
+					},
+					{
+						"name": "郎溪县",
+						"latter": "L"
+					},
+					{
+						"name": "广德县",
+						"latter": "G"
+					},
+					{
+						"name": "泾县",
+						"latter": "J"
+					},
+					{
+						"name": "绩溪县",
+						"latter": "J"
+					},
+					{
+						"name": "旌德县",
+						"latter": "J"
+					},
+					{
+						"name": "宁国市",
+						"latter": "N"
+					}
+				],
+				"latter": "X"
+			}
+		],
+		"latter": "A"
+	},
+	{
+		"name": "福建省",
+		"children": [{
+				"name": "福州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "鼓楼区",
+						"latter": "G"
+					},
+					{
+						"name": "台江区",
+						"latter": "T"
+					},
+					{
+						"name": "仓山区",
+						"latter": "C"
+					},
+					{
+						"name": "马尾区",
+						"latter": "M"
+					},
+					{
+						"name": "晋安区",
+						"latter": "J"
+					},
+					{
+						"name": "闽侯县",
+						"latter": "M"
+					},
+					{
+						"name": "连江县",
+						"latter": "L"
+					},
+					{
+						"name": "罗源县",
+						"latter": "L"
+					},
+					{
+						"name": "闽清县",
+						"latter": "M"
+					},
+					{
+						"name": "永泰县",
+						"latter": "Y"
+					},
+					{
+						"name": "平潭县",
+						"latter": "P"
+					},
+					{
+						"name": "福清市",
+						"latter": "F"
+					},
+					{
+						"name": "长乐市",
+						"latter": "C"
+					}
+				],
+				"latter": "F"
+			},
+			{
+				"name": "厦门市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "思明区",
+						"latter": "S"
+					},
+					{
+						"name": "海沧区",
+						"latter": "H"
+					},
+					{
+						"name": "湖里区",
+						"latter": "H"
+					},
+					{
+						"name": "集美区",
+						"latter": "J"
+					},
+					{
+						"name": "同安区",
+						"latter": "T"
+					},
+					{
+						"name": "翔安区",
+						"latter": "X"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "莆田市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "城厢区",
+						"latter": "C"
+					},
+					{
+						"name": "涵江区",
+						"latter": "H"
+					},
+					{
+						"name": "荔城区",
+						"latter": "L"
+					},
+					{
+						"name": "秀屿区",
+						"latter": "X"
+					},
+					{
+						"name": "仙游县",
+						"latter": "X"
+					}
+				],
+				"latter": "P"
+			},
+			{
+				"name": "三明市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "梅列区",
+						"latter": "M"
+					},
+					{
+						"name": "三元区",
+						"latter": "S"
+					},
+					{
+						"name": "明溪县",
+						"latter": "M"
+					},
+					{
+						"name": "清流县",
+						"latter": "Q"
+					},
+					{
+						"name": "宁化县",
+						"latter": "N"
+					},
+					{
+						"name": "大田县",
+						"latter": "D"
+					},
+					{
+						"name": "尤溪县",
+						"latter": "Y"
+					},
+					{
+						"name": "沙县",
+						"latter": "S"
+					},
+					{
+						"name": "将乐县",
+						"latter": "J"
+					},
+					{
+						"name": "泰宁县",
+						"latter": "T"
+					},
+					{
+						"name": "建宁县",
+						"latter": "J"
+					},
+					{
+						"name": "永安市",
+						"latter": "Y"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "泉州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "鲤城区",
+						"latter": "L"
+					},
+					{
+						"name": "丰泽区",
+						"latter": "F"
+					},
+					{
+						"name": "洛江区",
+						"latter": "L"
+					},
+					{
+						"name": "泉港区",
+						"latter": "Q"
+					},
+					{
+						"name": "惠安县",
+						"latter": "H"
+					},
+					{
+						"name": "安溪县",
+						"latter": "A"
+					},
+					{
+						"name": "永春县",
+						"latter": "Y"
+					},
+					{
+						"name": "德化县",
+						"latter": "D"
+					},
+					{
+						"name": "金门县",
+						"latter": "J"
+					},
+					{
+						"name": "石狮市",
+						"latter": "S"
+					},
+					{
+						"name": "晋江市",
+						"latter": "J"
+					},
+					{
+						"name": "南安市",
+						"latter": "N"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "漳州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "芗城区",
+						"latter": "X"
+					},
+					{
+						"name": "龙文区",
+						"latter": "L"
+					},
+					{
+						"name": "云霄县",
+						"latter": "Y"
+					},
+					{
+						"name": "漳浦县",
+						"latter": "Z"
+					},
+					{
+						"name": "诏安县",
+						"latter": "Z"
+					},
+					{
+						"name": "长泰县",
+						"latter": "C"
+					},
+					{
+						"name": "东山县",
+						"latter": "D"
+					},
+					{
+						"name": "南靖县",
+						"latter": "N"
+					},
+					{
+						"name": "平和县",
+						"latter": "P"
+					},
+					{
+						"name": "华安县",
+						"latter": "H"
+					},
+					{
+						"name": "龙海市",
+						"latter": "L"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "南平市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "延平区",
+						"latter": "Y"
+					},
+					{
+						"name": "顺昌县",
+						"latter": "S"
+					},
+					{
+						"name": "浦城县",
+						"latter": "P"
+					},
+					{
+						"name": "光泽县",
+						"latter": "G"
+					},
+					{
+						"name": "松溪县",
+						"latter": "S"
+					},
+					{
+						"name": "政和县",
+						"latter": "Z"
+					},
+					{
+						"name": "邵武市",
+						"latter": "S"
+					},
+					{
+						"name": "武夷山市",
+						"latter": "W"
+					},
+					{
+						"name": "建瓯市",
+						"latter": "J"
+					},
+					{
+						"name": "建阳市",
+						"latter": "J"
+					}
+				],
+				"latter": "N"
+			},
+			{
+				"name": "龙岩市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "新罗区",
+						"latter": "X"
+					},
+					{
+						"name": "长汀县",
+						"latter": "C"
+					},
+					{
+						"name": "永定县",
+						"latter": "Y"
+					},
+					{
+						"name": "上杭县",
+						"latter": "S"
+					},
+					{
+						"name": "武平县",
+						"latter": "W"
+					},
+					{
+						"name": "连城县",
+						"latter": "L"
+					},
+					{
+						"name": "漳平市",
+						"latter": "Z"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "宁德市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "蕉城区",
+						"latter": "J"
+					},
+					{
+						"name": "霞浦县",
+						"latter": "X"
+					},
+					{
+						"name": "古田县",
+						"latter": "G"
+					},
+					{
+						"name": "屏南县",
+						"latter": "P"
+					},
+					{
+						"name": "寿宁县",
+						"latter": "S"
+					},
+					{
+						"name": "周宁县",
+						"latter": "Z"
+					},
+					{
+						"name": "柘荣县",
+						"latter": "Z"
+					},
+					{
+						"name": "福安市",
+						"latter": "F"
+					},
+					{
+						"name": "福鼎市",
+						"latter": "F"
+					}
+				],
+				"latter": "N"
+			}
+		],
+		"latter": "F"
+	},
+	{
+		"name": "江西省",
+		"children": [{
+				"name": "南昌市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "东湖区",
+						"latter": "D"
+					},
+					{
+						"name": "西湖区",
+						"latter": "X"
+					},
+					{
+						"name": "青云谱区",
+						"latter": "Q"
+					},
+					{
+						"name": "湾里区",
+						"latter": "W"
+					},
+					{
+						"name": "青山湖区",
+						"latter": "Q"
+					},
+					{
+						"name": "南昌县",
+						"latter": "N"
+					},
+					{
+						"name": "新建县",
+						"latter": "X"
+					},
+					{
+						"name": "安义县",
+						"latter": "A"
+					},
+					{
+						"name": "进贤县",
+						"latter": "J"
+					}
+				],
+				"latter": "N"
+			},
+			{
+				"name": "景德镇市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "昌江区",
+						"latter": "C"
+					},
+					{
+						"name": "珠山区",
+						"latter": "Z"
+					},
+					{
+						"name": "浮梁县",
+						"latter": "F"
+					},
+					{
+						"name": "乐平市",
+						"latter": "L"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "萍乡市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "安源区",
+						"latter": "A"
+					},
+					{
+						"name": "湘东区",
+						"latter": "X"
+					},
+					{
+						"name": "莲花县",
+						"latter": "L"
+					},
+					{
+						"name": "上栗县",
+						"latter": "S"
+					},
+					{
+						"name": "芦溪县",
+						"latter": "L"
+					}
+				],
+				"latter": "P"
+			},
+			{
+				"name": "九江市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "庐山区",
+						"latter": "L"
+					},
+					{
+						"name": "浔阳区",
+						"latter": "X"
+					},
+					{
+						"name": "九江县",
+						"latter": "J"
+					},
+					{
+						"name": "武宁县",
+						"latter": "W"
+					},
+					{
+						"name": "修水县",
+						"latter": "X"
+					},
+					{
+						"name": "永修县",
+						"latter": "Y"
+					},
+					{
+						"name": "德安县",
+						"latter": "D"
+					},
+					{
+						"name": "星子县",
+						"latter": "X"
+					},
+					{
+						"name": "都昌县",
+						"latter": "D"
+					},
+					{
+						"name": "湖口县",
+						"latter": "H"
+					},
+					{
+						"name": "彭泽县",
+						"latter": "P"
+					},
+					{
+						"name": "瑞昌市",
+						"latter": "R"
+					},
+					{
+						"name": "共青城市",
+						"latter": "G"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "新余市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "渝水区",
+						"latter": "Y"
+					},
+					{
+						"name": "分宜县",
+						"latter": "F"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "鹰潭市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "月湖区",
+						"latter": "Y"
+					},
+					{
+						"name": "余江县",
+						"latter": "Y"
+					},
+					{
+						"name": "贵溪市",
+						"latter": "G"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "赣州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "章贡区",
+						"latter": "Z"
+					},
+					{
+						"name": "赣县",
+						"latter": "G"
+					},
+					{
+						"name": "信丰县",
+						"latter": "X"
+					},
+					{
+						"name": "大余县",
+						"latter": "D"
+					},
+					{
+						"name": "上犹县",
+						"latter": "S"
+					},
+					{
+						"name": "崇义县",
+						"latter": "C"
+					},
+					{
+						"name": "安远县",
+						"latter": "A"
+					},
+					{
+						"name": "龙南县",
+						"latter": "L"
+					},
+					{
+						"name": "定南县",
+						"latter": "D"
+					},
+					{
+						"name": "全南县",
+						"latter": "Q"
+					},
+					{
+						"name": "宁都县",
+						"latter": "N"
+					},
+					{
+						"name": "于都县",
+						"latter": "Y"
+					},
+					{
+						"name": "兴国县",
+						"latter": "X"
+					},
+					{
+						"name": "会昌县",
+						"latter": "H"
+					},
+					{
+						"name": "寻乌县",
+						"latter": "X"
+					},
+					{
+						"name": "石城县",
+						"latter": "S"
+					},
+					{
+						"name": "瑞金市",
+						"latter": "R"
+					},
+					{
+						"name": "南康市",
+						"latter": "N"
+					}
+				],
+				"latter": "G"
+			},
+			{
+				"name": "吉安市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "吉州区",
+						"latter": "J"
+					},
+					{
+						"name": "青原区",
+						"latter": "Q"
+					},
+					{
+						"name": "吉安县",
+						"latter": "J"
+					},
+					{
+						"name": "吉水县",
+						"latter": "J"
+					},
+					{
+						"name": "峡江县",
+						"latter": "X"
+					},
+					{
+						"name": "新干县",
+						"latter": "X"
+					},
+					{
+						"name": "永丰县",
+						"latter": "Y"
+					},
+					{
+						"name": "泰和县",
+						"latter": "T"
+					},
+					{
+						"name": "遂川县",
+						"latter": "S"
+					},
+					{
+						"name": "万安县",
+						"latter": "W"
+					},
+					{
+						"name": "安福县",
+						"latter": "A"
+					},
+					{
+						"name": "永新县",
+						"latter": "Y"
+					},
+					{
+						"name": "井冈山市",
+						"latter": "J"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "宜春市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "袁州区",
+						"latter": "Y"
+					},
+					{
+						"name": "奉新县",
+						"latter": "F"
+					},
+					{
+						"name": "万载县",
+						"latter": "W"
+					},
+					{
+						"name": "上高县",
+						"latter": "S"
+					},
+					{
+						"name": "宜丰县",
+						"latter": "Y"
+					},
+					{
+						"name": "靖安县",
+						"latter": "J"
+					},
+					{
+						"name": "铜鼓县",
+						"latter": "T"
+					},
+					{
+						"name": "丰城市",
+						"latter": "F"
+					},
+					{
+						"name": "樟树市",
+						"latter": "Z"
+					},
+					{
+						"name": "高安市",
+						"latter": "G"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "抚州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "临川区",
+						"latter": "L"
+					},
+					{
+						"name": "南城县",
+						"latter": "N"
+					},
+					{
+						"name": "黎川县",
+						"latter": "L"
+					},
+					{
+						"name": "南丰县",
+						"latter": "N"
+					},
+					{
+						"name": "崇仁县",
+						"latter": "C"
+					},
+					{
+						"name": "乐安县",
+						"latter": "L"
+					},
+					{
+						"name": "宜黄县",
+						"latter": "Y"
+					},
+					{
+						"name": "金溪县",
+						"latter": "J"
+					},
+					{
+						"name": "资溪县",
+						"latter": "Z"
+					},
+					{
+						"name": "东乡县",
+						"latter": "D"
+					},
+					{
+						"name": "广昌县",
+						"latter": "G"
+					}
+				],
+				"latter": "F"
+			},
+			{
+				"name": "上饶市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "信州区",
+						"latter": "X"
+					},
+					{
+						"name": "上饶县",
+						"latter": "S"
+					},
+					{
+						"name": "广丰县",
+						"latter": "G"
+					},
+					{
+						"name": "玉山县",
+						"latter": "Y"
+					},
+					{
+						"name": "铅山县",
+						"latter": "Q"
+					},
+					{
+						"name": "横峰县",
+						"latter": "H"
+					},
+					{
+						"name": "弋阳县",
+						"latter": "Y"
+					},
+					{
+						"name": "余干县",
+						"latter": "Y"
+					},
+					{
+						"name": "鄱阳县",
+						"latter": "P"
+					},
+					{
+						"name": "万年县",
+						"latter": "W"
+					},
+					{
+						"name": "婺源县",
+						"latter": "W"
+					},
+					{
+						"name": "德兴市",
+						"latter": "D"
+					}
+				],
+				"latter": "S"
+			}
+		],
+		"latter": "J"
+	},
+	{
+		"name": "山东省",
+		"children": [{
+				"name": "济南市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "历下区",
+						"latter": "L"
+					},
+					{
+						"name": "市中区",
+						"latter": "S"
+					},
+					{
+						"name": "槐荫区",
+						"latter": "H"
+					},
+					{
+						"name": "天桥区",
+						"latter": "T"
+					},
+					{
+						"name": "历城区",
+						"latter": "L"
+					},
+					{
+						"name": "长清区",
+						"latter": "C"
+					},
+					{
+						"name": "平阴县",
+						"latter": "P"
+					},
+					{
+						"name": "济阳县",
+						"latter": "J"
+					},
+					{
+						"name": "商河县",
+						"latter": "S"
+					},
+					{
+						"name": "章丘市",
+						"latter": "Z"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "青岛市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "市南区",
+						"latter": "S"
+					},
+					{
+						"name": "市北区",
+						"latter": "S"
+					},
+					{
+						"name": "黄岛区",
+						"latter": "H"
+					},
+					{
+						"name": "崂山区",
+						"latter": "L"
+					},
+					{
+						"name": "李沧区",
+						"latter": "L"
+					},
+					{
+						"name": "城阳区",
+						"latter": "C"
+					},
+					{
+						"name": "胶州市",
+						"latter": "J"
+					},
+					{
+						"name": "即墨市",
+						"latter": "J"
+					},
+					{
+						"name": "平度市",
+						"latter": "P"
+					},
+					{
+						"name": "莱西市",
+						"latter": "L"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "淄博市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "淄川区",
+						"latter": "Z"
+					},
+					{
+						"name": "张店区",
+						"latter": "Z"
+					},
+					{
+						"name": "博山区",
+						"latter": "B"
+					},
+					{
+						"name": "临淄区",
+						"latter": "L"
+					},
+					{
+						"name": "周村区",
+						"latter": "Z"
+					},
+					{
+						"name": "桓台县",
+						"latter": "H"
+					},
+					{
+						"name": "高青县",
+						"latter": "G"
+					},
+					{
+						"name": "沂源县",
+						"latter": "Y"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "枣庄市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "市中区",
+						"latter": "S"
+					},
+					{
+						"name": "薛城区",
+						"latter": "X"
+					},
+					{
+						"name": "峄城区",
+						"latter": "Y"
+					},
+					{
+						"name": "台儿庄区",
+						"latter": "T"
+					},
+					{
+						"name": "山亭区",
+						"latter": "S"
+					},
+					{
+						"name": "滕州市",
+						"latter": "T"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "东营市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "东营区",
+						"latter": "D"
+					},
+					{
+						"name": "河口区",
+						"latter": "H"
+					},
+					{
+						"name": "垦利县",
+						"latter": "K"
+					},
+					{
+						"name": "利津县",
+						"latter": "L"
+					},
+					{
+						"name": "广饶县",
+						"latter": "G"
+					}
+				],
+				"latter": "D"
+			},
+			{
+				"name": "烟台市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "芝罘区",
+						"latter": "Z"
+					},
+					{
+						"name": "福山区",
+						"latter": "F"
+					},
+					{
+						"name": "牟平区",
+						"latter": "M"
+					},
+					{
+						"name": "莱山区",
+						"latter": "L"
+					},
+					{
+						"name": "长岛县",
+						"latter": "C"
+					},
+					{
+						"name": "龙口市",
+						"latter": "L"
+					},
+					{
+						"name": "莱阳市",
+						"latter": "L"
+					},
+					{
+						"name": "莱州市",
+						"latter": "L"
+					},
+					{
+						"name": "蓬莱市",
+						"latter": "P"
+					},
+					{
+						"name": "招远市",
+						"latter": "Z"
+					},
+					{
+						"name": "栖霞市",
+						"latter": "Q"
+					},
+					{
+						"name": "海阳市",
+						"latter": "H"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "潍坊市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "潍城区",
+						"latter": "W"
+					},
+					{
+						"name": "寒亭区",
+						"latter": "H"
+					},
+					{
+						"name": "坊子区",
+						"latter": "F"
+					},
+					{
+						"name": "奎文区",
+						"latter": "K"
+					},
+					{
+						"name": "临朐县",
+						"latter": "L"
+					},
+					{
+						"name": "昌乐县",
+						"latter": "C"
+					},
+					{
+						"name": "青州市",
+						"latter": "Q"
+					},
+					{
+						"name": "诸城市",
+						"latter": "Z"
+					},
+					{
+						"name": "寿光市",
+						"latter": "S"
+					},
+					{
+						"name": "安丘市",
+						"latter": "A"
+					},
+					{
+						"name": "高密市",
+						"latter": "G"
+					},
+					{
+						"name": "昌邑市",
+						"latter": "C"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "济宁市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "市中区",
+						"latter": "S"
+					},
+					{
+						"name": "任城区",
+						"latter": "R"
+					},
+					{
+						"name": "微山县",
+						"latter": "W"
+					},
+					{
+						"name": "鱼台县",
+						"latter": "Y"
+					},
+					{
+						"name": "金乡县",
+						"latter": "J"
+					},
+					{
+						"name": "嘉祥县",
+						"latter": "J"
+					},
+					{
+						"name": "汶上县",
+						"latter": "W"
+					},
+					{
+						"name": "泗水县",
+						"latter": "S"
+					},
+					{
+						"name": "梁山县",
+						"latter": "L"
+					},
+					{
+						"name": "曲阜市",
+						"latter": "Q"
+					},
+					{
+						"name": "兖州市",
+						"latter": "Y"
+					},
+					{
+						"name": "邹城市",
+						"latter": "Z"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "泰安市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "泰山区",
+						"latter": "T"
+					},
+					{
+						"name": "岱岳区",
+						"latter": "D"
+					},
+					{
+						"name": "宁阳县",
+						"latter": "N"
+					},
+					{
+						"name": "东平县",
+						"latter": "D"
+					},
+					{
+						"name": "新泰市",
+						"latter": "X"
+					},
+					{
+						"name": "肥城市",
+						"latter": "F"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "威海市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "环翠区",
+						"latter": "H"
+					},
+					{
+						"name": "文登市",
+						"latter": "W"
+					},
+					{
+						"name": "荣成市",
+						"latter": "R"
+					},
+					{
+						"name": "乳山市",
+						"latter": "R"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "日照市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "东港区",
+						"latter": "D"
+					},
+					{
+						"name": "岚山区",
+						"latter": "L"
+					},
+					{
+						"name": "五莲县",
+						"latter": "W"
+					},
+					{
+						"name": "莒县",
+						"latter": "J"
+					}
+				],
+				"latter": "R"
+			},
+			{
+				"name": "莱芜市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "莱城区",
+						"latter": "L"
+					},
+					{
+						"name": "钢城区",
+						"latter": "G"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "临沂市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "兰山区",
+						"latter": "L"
+					},
+					{
+						"name": "罗庄区",
+						"latter": "L"
+					},
+					{
+						"name": "河东区",
+						"latter": "H"
+					},
+					{
+						"name": "沂南县",
+						"latter": "Y"
+					},
+					{
+						"name": "郯城县",
+						"latter": "T"
+					},
+					{
+						"name": "沂水县",
+						"latter": "Y"
+					},
+					{
+						"name": "苍山县",
+						"latter": "C"
+					},
+					{
+						"name": "费县",
+						"latter": "F"
+					},
+					{
+						"name": "平邑县",
+						"latter": "P"
+					},
+					{
+						"name": "莒南县",
+						"latter": "J"
+					},
+					{
+						"name": "蒙阴县",
+						"latter": "M"
+					},
+					{
+						"name": "临沭县",
+						"latter": "L"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "德州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "德城区",
+						"latter": "D"
+					},
+					{
+						"name": "陵县",
+						"latter": "L"
+					},
+					{
+						"name": "宁津县",
+						"latter": "N"
+					},
+					{
+						"name": "庆云县",
+						"latter": "Q"
+					},
+					{
+						"name": "临邑县",
+						"latter": "L"
+					},
+					{
+						"name": "齐河县",
+						"latter": "Q"
+					},
+					{
+						"name": "平原县",
+						"latter": "P"
+					},
+					{
+						"name": "夏津县",
+						"latter": "X"
+					},
+					{
+						"name": "武城县",
+						"latter": "W"
+					},
+					{
+						"name": "乐陵市",
+						"latter": "L"
+					},
+					{
+						"name": "禹城市",
+						"latter": "Y"
+					}
+				],
+				"latter": "D"
+			},
+			{
+				"name": "聊城市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "东昌府区",
+						"latter": "D"
+					},
+					{
+						"name": "阳谷县",
+						"latter": "Y"
+					},
+					{
+						"name": "莘县",
+						"latter": "S"
+					},
+					{
+						"name": "茌平县",
+						"latter": "C"
+					},
+					{
+						"name": "东阿县",
+						"latter": "D"
+					},
+					{
+						"name": "冠县",
+						"latter": "G"
+					},
+					{
+						"name": "高唐县",
+						"latter": "G"
+					},
+					{
+						"name": "临清市",
+						"latter": "L"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "滨州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "滨城区",
+						"latter": "B"
+					},
+					{
+						"name": "惠民县",
+						"latter": "H"
+					},
+					{
+						"name": "阳信县",
+						"latter": "Y"
+					},
+					{
+						"name": "无棣县",
+						"latter": "W"
+					},
+					{
+						"name": "沾化县",
+						"latter": "Z"
+					},
+					{
+						"name": "博兴县",
+						"latter": "B"
+					},
+					{
+						"name": "邹平县",
+						"latter": "Z"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "菏泽市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "牡丹区",
+						"latter": "M"
+					},
+					{
+						"name": "曹县",
+						"latter": "C"
+					},
+					{
+						"name": "单县",
+						"latter": "D"
+					},
+					{
+						"name": "成武县",
+						"latter": "C"
+					},
+					{
+						"name": "巨野县",
+						"latter": "J"
+					},
+					{
+						"name": "郓城县",
+						"latter": "Y"
+					},
+					{
+						"name": "鄄城县",
+						"latter": "J"
+					},
+					{
+						"name": "定陶县",
+						"latter": "D"
+					},
+					{
+						"name": "东明县",
+						"latter": "D"
+					}
+				],
+				"latter": "H"
+			}
+		],
+		"latter": "S"
+	},
+	{
+		"name": "河南省",
+		"children": [{
+				"name": "郑州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "中原区",
+						"latter": "Z"
+					},
+					{
+						"name": "二七区",
+						"latter": "E"
+					},
+					{
+						"name": "管城回族区",
+						"latter": "G"
+					},
+					{
+						"name": "金水区",
+						"latter": "J"
+					},
+					{
+						"name": "上街区",
+						"latter": "S"
+					},
+					{
+						"name": "惠济区",
+						"latter": "H"
+					},
+					{
+						"name": "中牟县",
+						"latter": "Z"
+					},
+					{
+						"name": "巩义市",
+						"latter": "G"
+					},
+					{
+						"name": "荥阳市",
+						"latter": "X"
+					},
+					{
+						"name": "新密市",
+						"latter": "X"
+					},
+					{
+						"name": "新郑市",
+						"latter": "X"
+					},
+					{
+						"name": "登封市",
+						"latter": "D"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "开封市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "龙亭区",
+						"latter": "L"
+					},
+					{
+						"name": "顺河回族区",
+						"latter": "S"
+					},
+					{
+						"name": "鼓楼区",
+						"latter": "G"
+					},
+					{
+						"name": "禹王台区",
+						"latter": "Y"
+					},
+					{
+						"name": "金明区",
+						"latter": "J"
+					},
+					{
+						"name": "杞县",
+						"latter": "Q"
+					},
+					{
+						"name": "通许县",
+						"latter": "T"
+					},
+					{
+						"name": "尉氏县",
+						"latter": "W"
+					},
+					{
+						"name": "开封县",
+						"latter": "K"
+					},
+					{
+						"name": "兰考县",
+						"latter": "L"
+					}
+				],
+				"latter": "K"
+			},
+			{
+				"name": "洛阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "老城区",
+						"latter": "L"
+					},
+					{
+						"name": "西工区",
+						"latter": "X"
+					},
+					{
+						"name": "瀍河回族区",
+						"latter": "C"
+					},
+					{
+						"name": "涧西区",
+						"latter": "J"
+					},
+					{
+						"name": "吉利区",
+						"latter": "J"
+					},
+					{
+						"name": "洛龙区",
+						"latter": "L"
+					},
+					{
+						"name": "孟津县",
+						"latter": "M"
+					},
+					{
+						"name": "新安县",
+						"latter": "X"
+					},
+					{
+						"name": "栾川县",
+						"latter": "L"
+					},
+					{
+						"name": "嵩县",
+						"latter": "S"
+					},
+					{
+						"name": "汝阳县",
+						"latter": "R"
+					},
+					{
+						"name": "宜阳县",
+						"latter": "Y"
+					},
+					{
+						"name": "洛宁县",
+						"latter": "L"
+					},
+					{
+						"name": "伊川县",
+						"latter": "Y"
+					},
+					{
+						"name": "偃师市",
+						"latter": "Y"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "平顶山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "新华区",
+						"latter": "X"
+					},
+					{
+						"name": "卫东区",
+						"latter": "W"
+					},
+					{
+						"name": "石龙区",
+						"latter": "S"
+					},
+					{
+						"name": "湛河区",
+						"latter": "Z"
+					},
+					{
+						"name": "宝丰县",
+						"latter": "B"
+					},
+					{
+						"name": "叶县",
+						"latter": "Y"
+					},
+					{
+						"name": "鲁山县",
+						"latter": "L"
+					},
+					{
+						"name": "郏县",
+						"latter": "J"
+					},
+					{
+						"name": "舞钢市",
+						"latter": "W"
+					},
+					{
+						"name": "汝州市",
+						"latter": "R"
+					}
+				],
+				"latter": "P"
+			},
+			{
+				"name": "安阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "文峰区",
+						"latter": "W"
+					},
+					{
+						"name": "北关区",
+						"latter": "B"
+					},
+					{
+						"name": "殷都区",
+						"latter": "Y"
+					},
+					{
+						"name": "龙安区",
+						"latter": "L"
+					},
+					{
+						"name": "安阳县",
+						"latter": "A"
+					},
+					{
+						"name": "汤阴县",
+						"latter": "T"
+					},
+					{
+						"name": "滑县",
+						"latter": "H"
+					},
+					{
+						"name": "内黄县",
+						"latter": "N"
+					},
+					{
+						"name": "林州市",
+						"latter": "L"
+					}
+				],
+				"latter": "A"
+			},
+			{
+				"name": "鹤壁市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "鹤山区",
+						"latter": "H"
+					},
+					{
+						"name": "山城区",
+						"latter": "S"
+					},
+					{
+						"name": "淇滨区",
+						"latter": "Q"
+					},
+					{
+						"name": "浚县",
+						"latter": "J"
+					},
+					{
+						"name": "淇县",
+						"latter": "Q"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "新乡市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "红旗区",
+						"latter": "H"
+					},
+					{
+						"name": "卫滨区",
+						"latter": "W"
+					},
+					{
+						"name": "凤泉区",
+						"latter": "F"
+					},
+					{
+						"name": "牧野区",
+						"latter": "M"
+					},
+					{
+						"name": "新乡县",
+						"latter": "X"
+					},
+					{
+						"name": "获嘉县",
+						"latter": "H"
+					},
+					{
+						"name": "原阳县",
+						"latter": "Y"
+					},
+					{
+						"name": "延津县",
+						"latter": "Y"
+					},
+					{
+						"name": "封丘县",
+						"latter": "F"
+					},
+					{
+						"name": "长垣县",
+						"latter": "C"
+					},
+					{
+						"name": "卫辉市",
+						"latter": "W"
+					},
+					{
+						"name": "辉县市",
+						"latter": "H"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "焦作市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "解放区",
+						"latter": "J"
+					},
+					{
+						"name": "中站区",
+						"latter": "Z"
+					},
+					{
+						"name": "马村区",
+						"latter": "M"
+					},
+					{
+						"name": "山阳区",
+						"latter": "S"
+					},
+					{
+						"name": "修武县",
+						"latter": "X"
+					},
+					{
+						"name": "博爱县",
+						"latter": "B"
+					},
+					{
+						"name": "武陟县",
+						"latter": "W"
+					},
+					{
+						"name": "温县",
+						"latter": "W"
+					},
+					{
+						"name": "沁阳市",
+						"latter": "Q"
+					},
+					{
+						"name": "孟州市",
+						"latter": "M"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "濮阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "华龙区",
+						"latter": "H"
+					},
+					{
+						"name": "清丰县",
+						"latter": "Q"
+					},
+					{
+						"name": "南乐县",
+						"latter": "N"
+					},
+					{
+						"name": "范县",
+						"latter": "F"
+					},
+					{
+						"name": "台前县",
+						"latter": "T"
+					},
+					{
+						"name": "濮阳县",
+						"latter": "P"
+					}
+				],
+				"latter": "P"
+			},
+			{
+				"name": "许昌市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "魏都区",
+						"latter": "W"
+					},
+					{
+						"name": "许昌县",
+						"latter": "X"
+					},
+					{
+						"name": "鄢陵县",
+						"latter": "Y"
+					},
+					{
+						"name": "襄城县",
+						"latter": "X"
+					},
+					{
+						"name": "禹州市",
+						"latter": "Y"
+					},
+					{
+						"name": "长葛市",
+						"latter": "C"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "漯河市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "源汇区",
+						"latter": "Y"
+					},
+					{
+						"name": "郾城区",
+						"latter": "Y"
+					},
+					{
+						"name": "召陵区",
+						"latter": "Z"
+					},
+					{
+						"name": "舞阳县",
+						"latter": "W"
+					},
+					{
+						"name": "临颍县",
+						"latter": "L"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "三门峡市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "湖滨区",
+						"latter": "H"
+					},
+					{
+						"name": "渑池县",
+						"latter": "M"
+					},
+					{
+						"name": "陕县",
+						"latter": "S"
+					},
+					{
+						"name": "卢氏县",
+						"latter": "L"
+					},
+					{
+						"name": "义马市",
+						"latter": "Y"
+					},
+					{
+						"name": "灵宝市",
+						"latter": "L"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "南阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "宛城区",
+						"latter": "W"
+					},
+					{
+						"name": "卧龙区",
+						"latter": "W"
+					},
+					{
+						"name": "南召县",
+						"latter": "N"
+					},
+					{
+						"name": "方城县",
+						"latter": "F"
+					},
+					{
+						"name": "西峡县",
+						"latter": "X"
+					},
+					{
+						"name": "镇平县",
+						"latter": "Z"
+					},
+					{
+						"name": "内乡县",
+						"latter": "N"
+					},
+					{
+						"name": "淅川县",
+						"latter": "X"
+					},
+					{
+						"name": "社旗县",
+						"latter": "S"
+					},
+					{
+						"name": "唐河县",
+						"latter": "T"
+					},
+					{
+						"name": "新野县",
+						"latter": "X"
+					},
+					{
+						"name": "桐柏县",
+						"latter": "T"
+					},
+					{
+						"name": "邓州市",
+						"latter": "D"
+					}
+				],
+				"latter": "N"
+			},
+			{
+				"name": "商丘市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "梁园区",
+						"latter": "L"
+					},
+					{
+						"name": "睢阳区",
+						"latter": "H"
+					},
+					{
+						"name": "民权县",
+						"latter": "M"
+					},
+					{
+						"name": "睢县",
+						"latter": "H"
+					},
+					{
+						"name": "宁陵县",
+						"latter": "N"
+					},
+					{
+						"name": "柘城县",
+						"latter": "Z"
+					},
+					{
+						"name": "虞城县",
+						"latter": "Y"
+					},
+					{
+						"name": "夏邑县",
+						"latter": "X"
+					},
+					{
+						"name": "永城市",
+						"latter": "Y"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "信阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "浉河区",
+						"latter": "S"
+					},
+					{
+						"name": "平桥区",
+						"latter": "P"
+					},
+					{
+						"name": "罗山县",
+						"latter": "L"
+					},
+					{
+						"name": "光山县",
+						"latter": "G"
+					},
+					{
+						"name": "新县",
+						"latter": "X"
+					},
+					{
+						"name": "商城县",
+						"latter": "S"
+					},
+					{
+						"name": "固始县",
+						"latter": "G"
+					},
+					{
+						"name": "潢川县",
+						"latter": "H"
+					},
+					{
+						"name": "淮滨县",
+						"latter": "H"
+					},
+					{
+						"name": "息县",
+						"latter": "X"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "周口市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "川汇区",
+						"latter": "C"
+					},
+					{
+						"name": "扶沟县",
+						"latter": "F"
+					},
+					{
+						"name": "西华县",
+						"latter": "X"
+					},
+					{
+						"name": "商水县",
+						"latter": "S"
+					},
+					{
+						"name": "沈丘县",
+						"latter": "S"
+					},
+					{
+						"name": "郸城县",
+						"latter": "D"
+					},
+					{
+						"name": "淮阳县",
+						"latter": "H"
+					},
+					{
+						"name": "太康县",
+						"latter": "T"
+					},
+					{
+						"name": "鹿邑县",
+						"latter": "L"
+					},
+					{
+						"name": "项城市",
+						"latter": "X"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "驻马店市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "驿城区",
+						"latter": "Y"
+					},
+					{
+						"name": "西平县",
+						"latter": "X"
+					},
+					{
+						"name": "上蔡县",
+						"latter": "S"
+					},
+					{
+						"name": "平舆县",
+						"latter": "P"
+					},
+					{
+						"name": "正阳县",
+						"latter": "Z"
+					},
+					{
+						"name": "确山县",
+						"latter": "Q"
+					},
+					{
+						"name": "泌阳县",
+						"latter": "M"
+					},
+					{
+						"name": "汝南县",
+						"latter": "R"
+					},
+					{
+						"name": "遂平县",
+						"latter": "S"
+					},
+					{
+						"name": "新蔡县",
+						"latter": "X"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "省直辖县级行政区划",
+				"children": [{
+					"name": "济源市",
+					"latter": "J"
+				}],
+				"latter": "S"
+			}
+		],
+		"latter": "H"
+	},
+	{
+		"name": "湖北省",
+		"children": [{
+				"name": "武汉市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "江岸区",
+						"latter": "J"
+					},
+					{
+						"name": "江汉区",
+						"latter": "J"
+					},
+					{
+						"name": "硚口区",
+						"latter": "Q"
+					},
+					{
+						"name": "汉阳区",
+						"latter": "H"
+					},
+					{
+						"name": "武昌区",
+						"latter": "W"
+					},
+					{
+						"name": "青山区",
+						"latter": "Q"
+					},
+					{
+						"name": "洪山区",
+						"latter": "H"
+					},
+					{
+						"name": "东西湖区",
+						"latter": "D"
+					},
+					{
+						"name": "汉南区",
+						"latter": "H"
+					},
+					{
+						"name": "蔡甸区",
+						"latter": "C"
+					},
+					{
+						"name": "江夏区",
+						"latter": "J"
+					},
+					{
+						"name": "黄陂区",
+						"latter": "H"
+					},
+					{
+						"name": "新洲区",
+						"latter": "X"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "黄石市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "黄石港区",
+						"latter": "H"
+					},
+					{
+						"name": "西塞山区",
+						"latter": "X"
+					},
+					{
+						"name": "下陆区",
+						"latter": "X"
+					},
+					{
+						"name": "铁山区",
+						"latter": "T"
+					},
+					{
+						"name": "阳新县",
+						"latter": "Y"
+					},
+					{
+						"name": "大冶市",
+						"latter": "D"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "十堰市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "茅箭区",
+						"latter": "M"
+					},
+					{
+						"name": "张湾区",
+						"latter": "Z"
+					},
+					{
+						"name": "郧县",
+						"latter": "Y"
+					},
+					{
+						"name": "郧西县",
+						"latter": "Y"
+					},
+					{
+						"name": "竹山县",
+						"latter": "Z"
+					},
+					{
+						"name": "竹溪县",
+						"latter": "Z"
+					},
+					{
+						"name": "房县",
+						"latter": "F"
+					},
+					{
+						"name": "丹江口市",
+						"latter": "D"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "宜昌市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "西陵区",
+						"latter": "X"
+					},
+					{
+						"name": "伍家岗区",
+						"latter": "W"
+					},
+					{
+						"name": "点军区",
+						"latter": "D"
+					},
+					{
+						"name": "猇亭区",
+						"latter": "X"
+					},
+					{
+						"name": "夷陵区",
+						"latter": "Y"
+					},
+					{
+						"name": "远安县",
+						"latter": "Y"
+					},
+					{
+						"name": "兴山县",
+						"latter": "X"
+					},
+					{
+						"name": "秭归县",
+						"latter": "Z"
+					},
+					{
+						"name": "长阳土家族自治县",
+						"latter": "C"
+					},
+					{
+						"name": "五峰土家族自治县",
+						"latter": "W"
+					},
+					{
+						"name": "宜都市",
+						"latter": "Y"
+					},
+					{
+						"name": "当阳市",
+						"latter": "D"
+					},
+					{
+						"name": "枝江市",
+						"latter": "Z"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "襄阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "襄城区",
+						"latter": "X"
+					},
+					{
+						"name": "樊城区",
+						"latter": "F"
+					},
+					{
+						"name": "襄州区",
+						"latter": "X"
+					},
+					{
+						"name": "南漳县",
+						"latter": "N"
+					},
+					{
+						"name": "谷城县",
+						"latter": "G"
+					},
+					{
+						"name": "保康县",
+						"latter": "B"
+					},
+					{
+						"name": "老河口市",
+						"latter": "L"
+					},
+					{
+						"name": "枣阳市",
+						"latter": "Z"
+					},
+					{
+						"name": "宜城市",
+						"latter": "Y"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "鄂州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "梁子湖区",
+						"latter": "L"
+					},
+					{
+						"name": "华容区",
+						"latter": "H"
+					},
+					{
+						"name": "鄂城区",
+						"latter": "E"
+					}
+				],
+				"latter": "E"
+			},
+			{
+				"name": "荆门市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "东宝区",
+						"latter": "D"
+					},
+					{
+						"name": "掇刀区",
+						"latter": "D"
+					},
+					{
+						"name": "京山县",
+						"latter": "J"
+					},
+					{
+						"name": "沙洋县",
+						"latter": "S"
+					},
+					{
+						"name": "钟祥市",
+						"latter": "Z"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "孝感市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "孝南区",
+						"latter": "X"
+					},
+					{
+						"name": "孝昌县",
+						"latter": "X"
+					},
+					{
+						"name": "大悟县",
+						"latter": "D"
+					},
+					{
+						"name": "云梦县",
+						"latter": "Y"
+					},
+					{
+						"name": "应城市",
+						"latter": "Y"
+					},
+					{
+						"name": "安陆市",
+						"latter": "A"
+					},
+					{
+						"name": "汉川市",
+						"latter": "H"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "荆州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "沙市区",
+						"latter": "S"
+					},
+					{
+						"name": "荆州区",
+						"latter": "J"
+					},
+					{
+						"name": "公安县",
+						"latter": "G"
+					},
+					{
+						"name": "监利县",
+						"latter": "J"
+					},
+					{
+						"name": "江陵县",
+						"latter": "J"
+					},
+					{
+						"name": "石首市",
+						"latter": "S"
+					},
+					{
+						"name": "洪湖市",
+						"latter": "H"
+					},
+					{
+						"name": "松滋市",
+						"latter": "S"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "黄冈市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "黄州区",
+						"latter": "H"
+					},
+					{
+						"name": "团风县",
+						"latter": "T"
+					},
+					{
+						"name": "红安县",
+						"latter": "H"
+					},
+					{
+						"name": "罗田县",
+						"latter": "L"
+					},
+					{
+						"name": "英山县",
+						"latter": "Y"
+					},
+					{
+						"name": "浠水县",
+						"latter": "X"
+					},
+					{
+						"name": "蕲春县",
+						"latter": "Q"
+					},
+					{
+						"name": "黄梅县",
+						"latter": "H"
+					},
+					{
+						"name": "麻城市",
+						"latter": "M"
+					},
+					{
+						"name": "武穴市",
+						"latter": "W"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "咸宁市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "咸安区",
+						"latter": "X"
+					},
+					{
+						"name": "嘉鱼县",
+						"latter": "J"
+					},
+					{
+						"name": "通城县",
+						"latter": "T"
+					},
+					{
+						"name": "崇阳县",
+						"latter": "C"
+					},
+					{
+						"name": "通山县",
+						"latter": "T"
+					},
+					{
+						"name": "赤壁市",
+						"latter": "C"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "随州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "曾都区",
+						"latter": "Z"
+					},
+					{
+						"name": "随县",
+						"latter": "S"
+					},
+					{
+						"name": "广水市",
+						"latter": "G"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "恩施土家族苗族自治州",
+				"children": [{
+						"name": "恩施市",
+						"latter": "E"
+					},
+					{
+						"name": "利川市",
+						"latter": "L"
+					},
+					{
+						"name": "建始县",
+						"latter": "J"
+					},
+					{
+						"name": "巴东县",
+						"latter": "B"
+					},
+					{
+						"name": "宣恩县",
+						"latter": "X"
+					},
+					{
+						"name": "咸丰县",
+						"latter": "X"
+					},
+					{
+						"name": "来凤县",
+						"latter": "L"
+					},
+					{
+						"name": "鹤峰县",
+						"latter": "H"
+					}
+				],
+				"latter": "E"
+			},
+			{
+				"name": "省直辖县级行政区划",
+				"children": [{
+						"name": "仙桃市",
+						"latter": "X"
+					},
+					{
+						"name": "潜江市",
+						"latter": "Q"
+					},
+					{
+						"name": "天门市",
+						"latter": "T"
+					},
+					{
+						"name": "神农架林区",
+						"latter": "S"
+					}
+				],
+				"latter": "S"
+			}
+		],
+		"latter": "H"
+	},
+	{
+		"name": "湖南省",
+		"children": [{
+				"name": "长沙市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "芙蓉区",
+						"latter": "F"
+					},
+					{
+						"name": "天心区",
+						"latter": "T"
+					},
+					{
+						"name": "岳麓区",
+						"latter": "Y"
+					},
+					{
+						"name": "开福区",
+						"latter": "K"
+					},
+					{
+						"name": "雨花区",
+						"latter": "Y"
+					},
+					{
+						"name": "望城区",
+						"latter": "W"
+					},
+					{
+						"name": "长沙县",
+						"latter": "C"
+					},
+					{
+						"name": "宁乡县",
+						"latter": "N"
+					},
+					{
+						"name": "浏阳市",
+						"latter": "L"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "株洲市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "荷塘区",
+						"latter": "H"
+					},
+					{
+						"name": "芦淞区",
+						"latter": "L"
+					},
+					{
+						"name": "石峰区",
+						"latter": "S"
+					},
+					{
+						"name": "天元区",
+						"latter": "T"
+					},
+					{
+						"name": "株洲县",
+						"latter": "Z"
+					},
+					{
+						"name": "攸县",
+						"latter": "Y"
+					},
+					{
+						"name": "茶陵县",
+						"latter": "C"
+					},
+					{
+						"name": "炎陵县",
+						"latter": "Y"
+					},
+					{
+						"name": "醴陵市",
+						"latter": "L"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "湘潭市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "雨湖区",
+						"latter": "Y"
+					},
+					{
+						"name": "岳塘区",
+						"latter": "Y"
+					},
+					{
+						"name": "湘潭县",
+						"latter": "X"
+					},
+					{
+						"name": "湘乡市",
+						"latter": "X"
+					},
+					{
+						"name": "韶山市",
+						"latter": "S"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "衡阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "珠晖区",
+						"latter": "Z"
+					},
+					{
+						"name": "雁峰区",
+						"latter": "Y"
+					},
+					{
+						"name": "石鼓区",
+						"latter": "S"
+					},
+					{
+						"name": "蒸湘区",
+						"latter": "Z"
+					},
+					{
+						"name": "南岳区",
+						"latter": "N"
+					},
+					{
+						"name": "衡阳县",
+						"latter": "H"
+					},
+					{
+						"name": "衡南县",
+						"latter": "H"
+					},
+					{
+						"name": "衡山县",
+						"latter": "H"
+					},
+					{
+						"name": "衡东县",
+						"latter": "H"
+					},
+					{
+						"name": "祁东县",
+						"latter": "Q"
+					},
+					{
+						"name": "耒阳市",
+						"latter": "L"
+					},
+					{
+						"name": "常宁市",
+						"latter": "C"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "邵阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "双清区",
+						"latter": "S"
+					},
+					{
+						"name": "大祥区",
+						"latter": "D"
+					},
+					{
+						"name": "北塔区",
+						"latter": "B"
+					},
+					{
+						"name": "邵东县",
+						"latter": "S"
+					},
+					{
+						"name": "新邵县",
+						"latter": "X"
+					},
+					{
+						"name": "邵阳县",
+						"latter": "S"
+					},
+					{
+						"name": "隆回县",
+						"latter": "L"
+					},
+					{
+						"name": "洞口县",
+						"latter": "D"
+					},
+					{
+						"name": "绥宁县",
+						"latter": "S"
+					},
+					{
+						"name": "新宁县",
+						"latter": "X"
+					},
+					{
+						"name": "城步苗族自治县",
+						"latter": "C"
+					},
+					{
+						"name": "武冈市",
+						"latter": "W"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "岳阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "岳阳楼区",
+						"latter": "Y"
+					},
+					{
+						"name": "云溪区",
+						"latter": "Y"
+					},
+					{
+						"name": "君山区",
+						"latter": "J"
+					},
+					{
+						"name": "岳阳县",
+						"latter": "Y"
+					},
+					{
+						"name": "华容县",
+						"latter": "H"
+					},
+					{
+						"name": "湘阴县",
+						"latter": "X"
+					},
+					{
+						"name": "平江县",
+						"latter": "P"
+					},
+					{
+						"name": "汨罗市",
+						"latter": "M"
+					},
+					{
+						"name": "临湘市",
+						"latter": "L"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "常德市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "武陵区",
+						"latter": "W"
+					},
+					{
+						"name": "鼎城区",
+						"latter": "D"
+					},
+					{
+						"name": "安乡县",
+						"latter": "A"
+					},
+					{
+						"name": "汉寿县",
+						"latter": "H"
+					},
+					{
+						"name": "澧县",
+						"latter": "L"
+					},
+					{
+						"name": "临澧县",
+						"latter": "L"
+					},
+					{
+						"name": "桃源县",
+						"latter": "T"
+					},
+					{
+						"name": "石门县",
+						"latter": "S"
+					},
+					{
+						"name": "津市市",
+						"latter": "J"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "张家界市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "永定区",
+						"latter": "Y"
+					},
+					{
+						"name": "武陵源区",
+						"latter": "W"
+					},
+					{
+						"name": "慈利县",
+						"latter": "C"
+					},
+					{
+						"name": "桑植县",
+						"latter": "S"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "益阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "资阳区",
+						"latter": "Z"
+					},
+					{
+						"name": "赫山区",
+						"latter": "H"
+					},
+					{
+						"name": "南县",
+						"latter": "N"
+					},
+					{
+						"name": "桃江县",
+						"latter": "T"
+					},
+					{
+						"name": "安化县",
+						"latter": "A"
+					},
+					{
+						"name": "沅江市",
+						"latter": "Y"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "郴州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "北湖区",
+						"latter": "B"
+					},
+					{
+						"name": "苏仙区",
+						"latter": "S"
+					},
+					{
+						"name": "桂阳县",
+						"latter": "G"
+					},
+					{
+						"name": "宜章县",
+						"latter": "Y"
+					},
+					{
+						"name": "永兴县",
+						"latter": "Y"
+					},
+					{
+						"name": "嘉禾县",
+						"latter": "J"
+					},
+					{
+						"name": "临武县",
+						"latter": "L"
+					},
+					{
+						"name": "汝城县",
+						"latter": "R"
+					},
+					{
+						"name": "桂东县",
+						"latter": "G"
+					},
+					{
+						"name": "安仁县",
+						"latter": "A"
+					},
+					{
+						"name": "资兴市",
+						"latter": "Z"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "永州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "零陵区",
+						"latter": "L"
+					},
+					{
+						"name": "冷水滩区",
+						"latter": "L"
+					},
+					{
+						"name": "祁阳县",
+						"latter": "Q"
+					},
+					{
+						"name": "东安县",
+						"latter": "D"
+					},
+					{
+						"name": "双牌县",
+						"latter": "S"
+					},
+					{
+						"name": "道县",
+						"latter": "D"
+					},
+					{
+						"name": "江永县",
+						"latter": "J"
+					},
+					{
+						"name": "宁远县",
+						"latter": "N"
+					},
+					{
+						"name": "蓝山县",
+						"latter": "L"
+					},
+					{
+						"name": "新田县",
+						"latter": "X"
+					},
+					{
+						"name": "江华瑶族自治县",
+						"latter": "J"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "怀化市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "鹤城区",
+						"latter": "H"
+					},
+					{
+						"name": "中方县",
+						"latter": "Z"
+					},
+					{
+						"name": "沅陵县",
+						"latter": "Y"
+					},
+					{
+						"name": "辰溪县",
+						"latter": "C"
+					},
+					{
+						"name": "溆浦县",
+						"latter": "X"
+					},
+					{
+						"name": "会同县",
+						"latter": "H"
+					},
+					{
+						"name": "麻阳苗族自治县",
+						"latter": "M"
+					},
+					{
+						"name": "新晃侗族自治县",
+						"latter": "X"
+					},
+					{
+						"name": "芷江侗族自治县",
+						"latter": "Z"
+					},
+					{
+						"name": "靖州苗族侗族自治县",
+						"latter": "J"
+					},
+					{
+						"name": "通道侗族自治县",
+						"latter": "T"
+					},
+					{
+						"name": "洪江市",
+						"latter": "H"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "娄底市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "娄星区",
+						"latter": "L"
+					},
+					{
+						"name": "双峰县",
+						"latter": "S"
+					},
+					{
+						"name": "新化县",
+						"latter": "X"
+					},
+					{
+						"name": "冷水江市",
+						"latter": "L"
+					},
+					{
+						"name": "涟源市",
+						"latter": "L"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "湘西土家族苗族自治州",
+				"children": [{
+						"name": "吉首市",
+						"latter": "J"
+					},
+					{
+						"name": "泸溪县",
+						"latter": "L"
+					},
+					{
+						"name": "凤凰县",
+						"latter": "F"
+					},
+					{
+						"name": "花垣县",
+						"latter": "H"
+					},
+					{
+						"name": "保靖县",
+						"latter": "B"
+					},
+					{
+						"name": "古丈县",
+						"latter": "G"
+					},
+					{
+						"name": "永顺县",
+						"latter": "Y"
+					},
+					{
+						"name": "龙山县",
+						"latter": "L"
+					}
+				],
+				"latter": "X"
+			}
+		],
+		"latter": "H"
+	},
+	{
+		"name": "广东省",
+		"children": [{
+				"name": "广州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "荔湾区",
+						"latter": "L"
+					},
+					{
+						"name": "越秀区",
+						"latter": "Y"
+					},
+					{
+						"name": "海珠区",
+						"latter": "H"
+					},
+					{
+						"name": "天河区",
+						"latter": "T"
+					},
+					{
+						"name": "白云区",
+						"latter": "B"
+					},
+					{
+						"name": "黄埔区",
+						"latter": "H"
+					},
+					{
+						"name": "番禺区",
+						"latter": "F"
+					},
+					{
+						"name": "花都区",
+						"latter": "H"
+					},
+					{
+						"name": "南沙区",
+						"latter": "N"
+					},
+					{
+						"name": "萝岗区",
+						"latter": "L"
+					},
+					{
+						"name": "增城市",
+						"latter": "Z"
+					},
+					{
+						"name": "从化市",
+						"latter": "C"
+					}
+				],
+				"latter": "G"
+			},
+			{
+				"name": "韶关市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "武江区",
+						"latter": "W"
+					},
+					{
+						"name": "浈江区",
+						"latter": "Z"
+					},
+					{
+						"name": "曲江区",
+						"latter": "Q"
+					},
+					{
+						"name": "始兴县",
+						"latter": "S"
+					},
+					{
+						"name": "仁化县",
+						"latter": "R"
+					},
+					{
+						"name": "翁源县",
+						"latter": "W"
+					},
+					{
+						"name": "乳源瑶族自治县",
+						"latter": "R"
+					},
+					{
+						"name": "新丰县",
+						"latter": "X"
+					},
+					{
+						"name": "乐昌市",
+						"latter": "L"
+					},
+					{
+						"name": "南雄市",
+						"latter": "N"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "深圳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "罗湖区",
+						"latter": "L"
+					},
+					{
+						"name": "福田区",
+						"latter": "F"
+					},
+					{
+						"name": "南山区",
+						"latter": "N"
+					},
+					{
+						"name": "宝安区",
+						"latter": "B"
+					},
+					{
+						"name": "龙岗区",
+						"latter": "L"
+					},
+					{
+						"name": "盐田区",
+						"latter": "Y"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "珠海市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "香洲区",
+						"latter": "X"
+					},
+					{
+						"name": "斗门区",
+						"latter": "D"
+					},
+					{
+						"name": "金湾区",
+						"latter": "J"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "汕头市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "龙湖区",
+						"latter": "L"
+					},
+					{
+						"name": "金平区",
+						"latter": "J"
+					},
+					{
+						"name": "濠江区",
+						"latter": "H"
+					},
+					{
+						"name": "潮阳区",
+						"latter": "C"
+					},
+					{
+						"name": "潮南区",
+						"latter": "C"
+					},
+					{
+						"name": "澄海区",
+						"latter": "C"
+					},
+					{
+						"name": "南澳县",
+						"latter": "N"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "佛山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "禅城区",
+						"latter": "C"
+					},
+					{
+						"name": "南海区",
+						"latter": "N"
+					},
+					{
+						"name": "顺德区",
+						"latter": "S"
+					},
+					{
+						"name": "三水区",
+						"latter": "S"
+					},
+					{
+						"name": "高明区",
+						"latter": "G"
+					}
+				],
+				"latter": "F"
+			},
+			{
+				"name": "江门市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "蓬江区",
+						"latter": "P"
+					},
+					{
+						"name": "江海区",
+						"latter": "J"
+					},
+					{
+						"name": "新会区",
+						"latter": "X"
+					},
+					{
+						"name": "台山市",
+						"latter": "T"
+					},
+					{
+						"name": "开平市",
+						"latter": "K"
+					},
+					{
+						"name": "鹤山市",
+						"latter": "H"
+					},
+					{
+						"name": "恩平市",
+						"latter": "E"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "湛江市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "赤坎区",
+						"latter": "C"
+					},
+					{
+						"name": "霞山区",
+						"latter": "X"
+					},
+					{
+						"name": "坡头区",
+						"latter": "P"
+					},
+					{
+						"name": "麻章区",
+						"latter": "M"
+					},
+					{
+						"name": "遂溪县",
+						"latter": "S"
+					},
+					{
+						"name": "徐闻县",
+						"latter": "X"
+					},
+					{
+						"name": "廉江市",
+						"latter": "L"
+					},
+					{
+						"name": "雷州市",
+						"latter": "L"
+					},
+					{
+						"name": "吴川市",
+						"latter": "W"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "茂名市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "茂南区",
+						"latter": "M"
+					},
+					{
+						"name": "茂港区",
+						"latter": "M"
+					},
+					{
+						"name": "电白县",
+						"latter": "D"
+					},
+					{
+						"name": "高州市",
+						"latter": "G"
+					},
+					{
+						"name": "化州市",
+						"latter": "H"
+					},
+					{
+						"name": "信宜市",
+						"latter": "X"
+					}
+				],
+				"latter": "M"
+			},
+			{
+				"name": "肇庆市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "端州区",
+						"latter": "D"
+					},
+					{
+						"name": "鼎湖区",
+						"latter": "D"
+					},
+					{
+						"name": "广宁县",
+						"latter": "G"
+					},
+					{
+						"name": "怀集县",
+						"latter": "H"
+					},
+					{
+						"name": "封开县",
+						"latter": "F"
+					},
+					{
+						"name": "德庆县",
+						"latter": "D"
+					},
+					{
+						"name": "高要市",
+						"latter": "G"
+					},
+					{
+						"name": "四会市",
+						"latter": "S"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "惠州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "惠城区",
+						"latter": "H"
+					},
+					{
+						"name": "惠阳区",
+						"latter": "H"
+					},
+					{
+						"name": "博罗县",
+						"latter": "B"
+					},
+					{
+						"name": "惠东县",
+						"latter": "H"
+					},
+					{
+						"name": "龙门县",
+						"latter": "L"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "梅州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "梅江区",
+						"latter": "M"
+					},
+					{
+						"name": "梅县",
+						"latter": "M"
+					},
+					{
+						"name": "大埔县",
+						"latter": "D"
+					},
+					{
+						"name": "丰顺县",
+						"latter": "F"
+					},
+					{
+						"name": "五华县",
+						"latter": "W"
+					},
+					{
+						"name": "平远县",
+						"latter": "P"
+					},
+					{
+						"name": "蕉岭县",
+						"latter": "J"
+					},
+					{
+						"name": "兴宁市",
+						"latter": "X"
+					}
+				],
+				"latter": "M"
+			},
+			{
+				"name": "汕尾市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "城区",
+						"latter": "C"
+					},
+					{
+						"name": "海丰县",
+						"latter": "H"
+					},
+					{
+						"name": "陆河县",
+						"latter": "L"
+					},
+					{
+						"name": "陆丰市",
+						"latter": "L"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "河源市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "源城区",
+						"latter": "Y"
+					},
+					{
+						"name": "紫金县",
+						"latter": "Z"
+					},
+					{
+						"name": "龙川县",
+						"latter": "L"
+					},
+					{
+						"name": "连平县",
+						"latter": "L"
+					},
+					{
+						"name": "和平县",
+						"latter": "H"
+					},
+					{
+						"name": "东源县",
+						"latter": "D"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "阳江市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "江城区",
+						"latter": "J"
+					},
+					{
+						"name": "阳西县",
+						"latter": "Y"
+					},
+					{
+						"name": "阳东县",
+						"latter": "Y"
+					},
+					{
+						"name": "阳春市",
+						"latter": "Y"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "清远市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "清城区",
+						"latter": "Q"
+					},
+					{
+						"name": "清新区",
+						"latter": "Q"
+					},
+					{
+						"name": "佛冈县",
+						"latter": "F"
+					},
+					{
+						"name": "阳山县",
+						"latter": "Y"
+					},
+					{
+						"name": "连山壮族瑶族自治县",
+						"latter": "L"
+					},
+					{
+						"name": "连南瑶族自治县",
+						"latter": "L"
+					},
+					{
+						"name": "英德市",
+						"latter": "Y"
+					},
+					{
+						"name": "连州市",
+						"latter": "L"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "东莞市",
+				"latter": "D"
+			},
+			{
+				"name": "中山市",
+				"latter": "Z"
+			},
+			{
+				"name": "潮州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "湘桥区",
+						"latter": "X"
+					},
+					{
+						"name": "潮安区",
+						"latter": "C"
+					},
+					{
+						"name": "饶平县",
+						"latter": "R"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "揭阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "榕城区",
+						"latter": "R"
+					},
+					{
+						"name": "揭东区",
+						"latter": "J"
+					},
+					{
+						"name": "揭西县",
+						"latter": "J"
+					},
+					{
+						"name": "惠来县",
+						"latter": "H"
+					},
+					{
+						"name": "普宁市",
+						"latter": "P"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "云浮市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "云城区",
+						"latter": "Y"
+					},
+					{
+						"name": "新兴县",
+						"latter": "X"
+					},
+					{
+						"name": "郁南县",
+						"latter": "Y"
+					},
+					{
+						"name": "云安县",
+						"latter": "Y"
+					},
+					{
+						"name": "罗定市",
+						"latter": "L"
+					}
+				],
+				"latter": "Y"
+			}
+		],
+		"latter": "G"
+	},
+	{
+		"name": "广西壮族自治区",
+		"children": [{
+				"name": "南宁市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "兴宁区",
+						"latter": "X"
+					},
+					{
+						"name": "青秀区",
+						"latter": "Q"
+					},
+					{
+						"name": "江南区",
+						"latter": "J"
+					},
+					{
+						"name": "西乡塘区",
+						"latter": "X"
+					},
+					{
+						"name": "良庆区",
+						"latter": "L"
+					},
+					{
+						"name": "邕宁区",
+						"latter": "Y"
+					},
+					{
+						"name": "武鸣县",
+						"latter": "W"
+					},
+					{
+						"name": "隆安县",
+						"latter": "L"
+					},
+					{
+						"name": "马山县",
+						"latter": "M"
+					},
+					{
+						"name": "上林县",
+						"latter": "S"
+					},
+					{
+						"name": "宾阳县",
+						"latter": "B"
+					},
+					{
+						"name": "横县",
+						"latter": "H"
+					}
+				],
+				"latter": "N"
+			},
+			{
+				"name": "柳州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "城中区",
+						"latter": "C"
+					},
+					{
+						"name": "鱼峰区",
+						"latter": "Y"
+					},
+					{
+						"name": "柳南区",
+						"latter": "L"
+					},
+					{
+						"name": "柳北区",
+						"latter": "L"
+					},
+					{
+						"name": "柳江县",
+						"latter": "L"
+					},
+					{
+						"name": "柳城县",
+						"latter": "L"
+					},
+					{
+						"name": "鹿寨县",
+						"latter": "L"
+					},
+					{
+						"name": "融安县",
+						"latter": "R"
+					},
+					{
+						"name": "融水苗族自治县",
+						"latter": "R"
+					},
+					{
+						"name": "三江侗族自治县",
+						"latter": "S"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "桂林市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "秀峰区",
+						"latter": "X"
+					},
+					{
+						"name": "叠彩区",
+						"latter": "D"
+					},
+					{
+						"name": "象山区",
+						"latter": "X"
+					},
+					{
+						"name": "七星区",
+						"latter": "Q"
+					},
+					{
+						"name": "雁山区",
+						"latter": "Y"
+					},
+					{
+						"name": "临桂区",
+						"latter": "L"
+					},
+					{
+						"name": "阳朔县",
+						"latter": "Y"
+					},
+					{
+						"name": "灵川县",
+						"latter": "L"
+					},
+					{
+						"name": "全州县",
+						"latter": "Q"
+					},
+					{
+						"name": "兴安县",
+						"latter": "X"
+					},
+					{
+						"name": "永福县",
+						"latter": "Y"
+					},
+					{
+						"name": "灌阳县",
+						"latter": "G"
+					},
+					{
+						"name": "龙胜各族自治县",
+						"latter": "L"
+					},
+					{
+						"name": "资源县",
+						"latter": "Z"
+					},
+					{
+						"name": "平乐县",
+						"latter": "P"
+					},
+					{
+						"name": "荔浦县",
+						"latter": "L"
+					},
+					{
+						"name": "恭城瑶族自治县",
+						"latter": "G"
+					}
+				],
+				"latter": "G"
+			},
+			{
+				"name": "梧州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "万秀区",
+						"latter": "W"
+					},
+					{
+						"name": "长洲区",
+						"latter": "C"
+					},
+					{
+						"name": "龙圩区",
+						"latter": "L"
+					},
+					{
+						"name": "苍梧县",
+						"latter": "C"
+					},
+					{
+						"name": "藤县",
+						"latter": "T"
+					},
+					{
+						"name": "蒙山县",
+						"latter": "M"
+					},
+					{
+						"name": "岑溪市",
+						"latter": "C"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "北海市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "海城区",
+						"latter": "H"
+					},
+					{
+						"name": "银海区",
+						"latter": "Y"
+					},
+					{
+						"name": "铁山港区",
+						"latter": "T"
+					},
+					{
+						"name": "合浦县",
+						"latter": "H"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "防城港市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "港口区",
+						"latter": "G"
+					},
+					{
+						"name": "防城区",
+						"latter": "F"
+					},
+					{
+						"name": "上思县",
+						"latter": "S"
+					},
+					{
+						"name": "东兴市",
+						"latter": "D"
+					}
+				],
+				"latter": "F"
+			},
+			{
+				"name": "钦州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "钦南区",
+						"latter": "Q"
+					},
+					{
+						"name": "钦北区",
+						"latter": "Q"
+					},
+					{
+						"name": "灵山县",
+						"latter": "L"
+					},
+					{
+						"name": "浦北县",
+						"latter": "P"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "贵港市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "港北区",
+						"latter": "G"
+					},
+					{
+						"name": "港南区",
+						"latter": "G"
+					},
+					{
+						"name": "覃塘区",
+						"latter": "T"
+					},
+					{
+						"name": "平南县",
+						"latter": "P"
+					},
+					{
+						"name": "桂平市",
+						"latter": "G"
+					}
+				],
+				"latter": "G"
+			},
+			{
+				"name": "玉林市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "玉州区",
+						"latter": "Y"
+					},
+					{
+						"name": "福绵区",
+						"latter": "F"
+					},
+					{
+						"name": "容县",
+						"latter": "R"
+					},
+					{
+						"name": "陆川县",
+						"latter": "L"
+					},
+					{
+						"name": "博白县",
+						"latter": "B"
+					},
+					{
+						"name": "兴业县",
+						"latter": "X"
+					},
+					{
+						"name": "北流市",
+						"latter": "B"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "百色市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "右江区",
+						"latter": "Y"
+					},
+					{
+						"name": "田阳县",
+						"latter": "T"
+					},
+					{
+						"name": "田东县",
+						"latter": "T"
+					},
+					{
+						"name": "平果县",
+						"latter": "P"
+					},
+					{
+						"name": "德保县",
+						"latter": "D"
+					},
+					{
+						"name": "靖西县",
+						"latter": "J"
+					},
+					{
+						"name": "那坡县",
+						"latter": "N"
+					},
+					{
+						"name": "凌云县",
+						"latter": "L"
+					},
+					{
+						"name": "乐业县",
+						"latter": "L"
+					},
+					{
+						"name": "田林县",
+						"latter": "T"
+					},
+					{
+						"name": "西林县",
+						"latter": "X"
+					},
+					{
+						"name": "隆林各族自治县",
+						"latter": "L"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "贺州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "八步区",
+						"latter": "B"
+					},
+					{
+						"name": "昭平县",
+						"latter": "Z"
+					},
+					{
+						"name": "钟山县",
+						"latter": "Z"
+					},
+					{
+						"name": "富川瑶族自治县",
+						"latter": "F"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "河池市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "金城江区",
+						"latter": "J"
+					},
+					{
+						"name": "南丹县",
+						"latter": "N"
+					},
+					{
+						"name": "天峨县",
+						"latter": "T"
+					},
+					{
+						"name": "凤山县",
+						"latter": "F"
+					},
+					{
+						"name": "东兰县",
+						"latter": "D"
+					},
+					{
+						"name": "罗城仫佬族自治县",
+						"latter": "L"
+					},
+					{
+						"name": "环江毛南族自治县",
+						"latter": "H"
+					},
+					{
+						"name": "巴马瑶族自治县",
+						"latter": "B"
+					},
+					{
+						"name": "都安瑶族自治县",
+						"latter": "D"
+					},
+					{
+						"name": "大化瑶族自治县",
+						"latter": "D"
+					},
+					{
+						"name": "宜州市",
+						"latter": "Y"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "来宾市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "兴宾区",
+						"latter": "X"
+					},
+					{
+						"name": "忻城县",
+						"latter": "X"
+					},
+					{
+						"name": "象州县",
+						"latter": "X"
+					},
+					{
+						"name": "武宣县",
+						"latter": "W"
+					},
+					{
+						"name": "金秀瑶族自治县",
+						"latter": "J"
+					},
+					{
+						"name": "合山市",
+						"latter": "H"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "崇左市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "江州区",
+						"latter": "J"
+					},
+					{
+						"name": "扶绥县",
+						"latter": "F"
+					},
+					{
+						"name": "宁明县",
+						"latter": "N"
+					},
+					{
+						"name": "龙州县",
+						"latter": "L"
+					},
+					{
+						"name": "大新县",
+						"latter": "D"
+					},
+					{
+						"name": "天等县",
+						"latter": "T"
+					},
+					{
+						"name": "凭祥市",
+						"latter": "P"
+					}
+				],
+				"latter": "C"
+			}
+		],
+		"latter": "G"
+	},
+	{
+		"name": "海南省",
+		"children": [{
+				"name": "海口市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "秀英区",
+						"latter": "X"
+					},
+					{
+						"name": "龙华区",
+						"latter": "L"
+					},
+					{
+						"name": "琼山区",
+						"latter": "Q"
+					},
+					{
+						"name": "美兰区",
+						"latter": "M"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "三亚市",
+				"children": [{
+					"name": "市辖区",
+					"latter": "S"
+				}],
+				"latter": "S"
+			},
+			{
+				"name": "三沙市",
+				"children": [{
+						"name": "西沙群岛",
+						"latter": "X"
+					},
+					{
+						"name": "南沙群岛",
+						"latter": "N"
+					},
+					{
+						"name": "中沙群岛的岛礁及其海域",
+						"latter": "Z"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "省直辖县级行政区划",
+				"children": [{
+						"name": "五指山市",
+						"latter": "W"
+					},
+					{
+						"name": "琼海市",
+						"latter": "Q"
+					},
+					{
+						"name": "儋州市",
+						"latter": "D"
+					},
+					{
+						"name": "文昌市",
+						"latter": "W"
+					},
+					{
+						"name": "万宁市",
+						"latter": "W"
+					},
+					{
+						"name": "东方市",
+						"latter": "D"
+					},
+					{
+						"name": "定安县",
+						"latter": "D"
+					},
+					{
+						"name": "屯昌县",
+						"latter": "T"
+					},
+					{
+						"name": "澄迈县",
+						"latter": "C"
+					},
+					{
+						"name": "临高县",
+						"latter": "L"
+					},
+					{
+						"name": "白沙黎族自治县",
+						"latter": "B"
+					},
+					{
+						"name": "昌江黎族自治县",
+						"latter": "C"
+					},
+					{
+						"name": "乐东黎族自治县",
+						"latter": "L"
+					},
+					{
+						"name": "陵水黎族自治县",
+						"latter": "L"
+					},
+					{
+						"name": "保亭黎族苗族自治县",
+						"latter": "B"
+					},
+					{
+						"name": "琼中黎族苗族自治县",
+						"latter": "Q"
+					}
+				],
+				"latter": "S"
+			}
+		],
+		"latter": "H"
+	},
+	{
+		"name": "重庆市",
+		"latter": "C",
+		"children":[
+			{
+				"name": "重庆市",
+				"children": [{
+						"name": "万州区",
+						"latter": "W"
+					},
+					{
+						"name": "涪陵区",
+						"latter": "F"
+					},
+					{
+						"name": "渝中区",
+						"latter": "Y"
+					},
+					{
+						"name": "大渡口区",
+						"latter": "D"
+					},
+					{
+						"name": "江北区",
+						"latter": "J"
+					},
+					{
+						"name": "沙坪坝区",
+						"latter": "S"
+					},
+					{
+						"name": "九龙坡区",
+						"latter": "J"
+					},
+					{
+						"name": "南岸区",
+						"latter": "N"
+					},
+					{
+						"name": "北碚区",
+						"latter": "B"
+					},
+					{
+						"name": "綦江区",
+						"latter": "Q"
+					},
+					{
+						"name": "大足区",
+						"latter": "D"
+					},
+					{
+						"name": "渝北区",
+						"latter": "Y"
+					},
+					{
+						"name": "巴南区",
+						"latter": "B"
+					},
+					{
+						"name": "黔江区",
+						"latter": "Q"
+					},
+					{
+						"name": "长寿区",
+						"latter": "C"
+					},
+					{
+						"name": "江津区",
+						"latter": "J"
+					},
+					{
+						"name": "合川区",
+						"latter": "H"
+					},
+					{
+						"name": "永川区",
+						"latter": "Y"
+					},
+					{
+						"name": "南川区",
+						"latter": "N"
+					},
+					{
+						"name": "潼南县",
+						"latter": "T"
+					},
+					{
+						"name": "铜梁县",
+						"latter": "T"
+					},
+					{
+						"name": "荣昌县",
+						"latter": "R"
+					},
+					{
+						"name": "璧山县",
+						"latter": "B"
+					},
+					{
+						"name": "梁平县",
+						"latter": "L"
+					},
+					{
+						"name": "城口县",
+						"latter": "C"
+					},
+					{
+						"name": "丰都县",
+						"latter": "F"
+					},
+					{
+						"name": "垫江县",
+						"latter": "D"
+					},
+					{
+						"name": "武隆县",
+						"latter": "W"
+					},
+					{
+						"name": "忠县",
+						"latter": "Z"
+					},
+					{
+						"name": "开县",
+						"latter": "K"
+					},
+					{
+						"name": "云阳县",
+						"latter": "Y"
+					},
+					{
+						"name": "奉节县",
+						"latter": "F"
+					},
+					{
+						"name": "巫山县",
+						"latter": "W"
+					},
+					{
+						"name": "巫溪县",
+						"latter": "W"
+					},
+					{
+						"name": "石柱土家族自治县",
+						"latter": "S"
+					},
+					{
+						"name": "秀山土家族苗族自治县",
+						"latter": "X"
+					},
+					{
+						"name": "酉阳土家族苗族自治县",
+						"latter": "Y"
+					},
+					{
+						"name": "彭水苗族土家族自治县",
+						"latter": "P"
+					}
+				],
+				"latter": "Z"
+			}
+		]
+	},
+	{
+		"name": "四川省",
+		"children": [{
+				"name": "成都市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "锦江区",
+						"latter": "J"
+					},
+					{
+						"name": "青羊区",
+						"latter": "Q"
+					},
+					{
+						"name": "金牛区",
+						"latter": "J"
+					},
+					{
+						"name": "武侯区",
+						"latter": "W"
+					},
+					{
+						"name": "成华区",
+						"latter": "C"
+					},
+					{
+						"name": "龙泉驿区",
+						"latter": "L"
+					},
+					{
+						"name": "青白江区",
+						"latter": "Q"
+					},
+					{
+						"name": "新都区",
+						"latter": "X"
+					},
+					{
+						"name": "温江区",
+						"latter": "W"
+					},
+					{
+						"name": "金堂县",
+						"latter": "J"
+					},
+					{
+						"name": "双流县",
+						"latter": "S"
+					},
+					{
+						"name": "郫县",
+						"latter": "P"
+					},
+					{
+						"name": "大邑县",
+						"latter": "D"
+					},
+					{
+						"name": "蒲江县",
+						"latter": "P"
+					},
+					{
+						"name": "新津县",
+						"latter": "X"
+					},
+					{
+						"name": "都江堰市",
+						"latter": "D"
+					},
+					{
+						"name": "彭州市",
+						"latter": "P"
+					},
+					{
+						"name": "邛崃市",
+						"latter": "Q"
+					},
+					{
+						"name": "崇州市",
+						"latter": "C"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "自贡市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "自流井区",
+						"latter": "Z"
+					},
+					{
+						"name": "贡井区",
+						"latter": "G"
+					},
+					{
+						"name": "大安区",
+						"latter": "D"
+					},
+					{
+						"name": "沿滩区",
+						"latter": "Y"
+					},
+					{
+						"name": "荣县",
+						"latter": "R"
+					},
+					{
+						"name": "富顺县",
+						"latter": "F"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "攀枝花市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "东区",
+						"latter": "D"
+					},
+					{
+						"name": "西区",
+						"latter": "X"
+					},
+					{
+						"name": "仁和区",
+						"latter": "R"
+					},
+					{
+						"name": "米易县",
+						"latter": "M"
+					},
+					{
+						"name": "盐边县",
+						"latter": "Y"
+					}
+				],
+				"latter": "P"
+			},
+			{
+				"name": "泸州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "江阳区",
+						"latter": "J"
+					},
+					{
+						"name": "纳溪区",
+						"latter": "N"
+					},
+					{
+						"name": "龙马潭区",
+						"latter": "L"
+					},
+					{
+						"name": "泸县",
+						"latter": "L"
+					},
+					{
+						"name": "合江县",
+						"latter": "H"
+					},
+					{
+						"name": "叙永县",
+						"latter": "X"
+					},
+					{
+						"name": "古蔺县",
+						"latter": "G"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "德阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "旌阳区",
+						"latter": "J"
+					},
+					{
+						"name": "中江县",
+						"latter": "Z"
+					},
+					{
+						"name": "罗江县",
+						"latter": "L"
+					},
+					{
+						"name": "广汉市",
+						"latter": "G"
+					},
+					{
+						"name": "什邡市",
+						"latter": "S"
+					},
+					{
+						"name": "绵竹市",
+						"latter": "M"
+					}
+				],
+				"latter": "D"
+			},
+			{
+				"name": "绵阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "涪城区",
+						"latter": "F"
+					},
+					{
+						"name": "游仙区",
+						"latter": "Y"
+					},
+					{
+						"name": "三台县",
+						"latter": "S"
+					},
+					{
+						"name": "盐亭县",
+						"latter": "Y"
+					},
+					{
+						"name": "安县",
+						"latter": "A"
+					},
+					{
+						"name": "梓潼县",
+						"latter": "Z"
+					},
+					{
+						"name": "北川羌族自治县",
+						"latter": "B"
+					},
+					{
+						"name": "平武县",
+						"latter": "P"
+					},
+					{
+						"name": "江油市",
+						"latter": "J"
+					}
+				],
+				"latter": "M"
+			},
+			{
+				"name": "广元市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "利州区",
+						"latter": "L"
+					},
+					{
+						"name": "元坝区",
+						"latter": "Y"
+					},
+					{
+						"name": "朝天区",
+						"latter": "Z"
+					},
+					{
+						"name": "旺苍县",
+						"latter": "W"
+					},
+					{
+						"name": "青川县",
+						"latter": "Q"
+					},
+					{
+						"name": "剑阁县",
+						"latter": "J"
+					},
+					{
+						"name": "苍溪县",
+						"latter": "C"
+					}
+				],
+				"latter": "G"
+			},
+			{
+				"name": "遂宁市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "船山区",
+						"latter": "C"
+					},
+					{
+						"name": "安居区",
+						"latter": "A"
+					},
+					{
+						"name": "蓬溪县",
+						"latter": "P"
+					},
+					{
+						"name": "射洪县",
+						"latter": "S"
+					},
+					{
+						"name": "大英县",
+						"latter": "D"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "内江市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "市中区",
+						"latter": "S"
+					},
+					{
+						"name": "东兴区",
+						"latter": "D"
+					},
+					{
+						"name": "威远县",
+						"latter": "W"
+					},
+					{
+						"name": "资中县",
+						"latter": "Z"
+					},
+					{
+						"name": "隆昌县",
+						"latter": "L"
+					}
+				],
+				"latter": "N"
+			},
+			{
+				"name": "乐山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "市中区",
+						"latter": "S"
+					},
+					{
+						"name": "沙湾区",
+						"latter": "S"
+					},
+					{
+						"name": "五通桥区",
+						"latter": "W"
+					},
+					{
+						"name": "金口河区",
+						"latter": "J"
+					},
+					{
+						"name": "犍为县",
+						"latter": "J"
+					},
+					{
+						"name": "井研县",
+						"latter": "J"
+					},
+					{
+						"name": "夹江县",
+						"latter": "J"
+					},
+					{
+						"name": "沐川县",
+						"latter": "M"
+					},
+					{
+						"name": "峨边彝族自治县",
+						"latter": "E"
+					},
+					{
+						"name": "马边彝族自治县",
+						"latter": "M"
+					},
+					{
+						"name": "峨眉山市",
+						"latter": "E"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "南充市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "顺庆区",
+						"latter": "S"
+					},
+					{
+						"name": "高坪区",
+						"latter": "G"
+					},
+					{
+						"name": "嘉陵区",
+						"latter": "J"
+					},
+					{
+						"name": "南部县",
+						"latter": "N"
+					},
+					{
+						"name": "营山县",
+						"latter": "Y"
+					},
+					{
+						"name": "蓬安县",
+						"latter": "P"
+					},
+					{
+						"name": "仪陇县",
+						"latter": "Y"
+					},
+					{
+						"name": "西充县",
+						"latter": "X"
+					},
+					{
+						"name": "阆中市",
+						"latter": "L"
+					}
+				],
+				"latter": "N"
+			},
+			{
+				"name": "眉山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "东坡区",
+						"latter": "D"
+					},
+					{
+						"name": "仁寿县",
+						"latter": "R"
+					},
+					{
+						"name": "彭山县",
+						"latter": "P"
+					},
+					{
+						"name": "洪雅县",
+						"latter": "H"
+					},
+					{
+						"name": "丹棱县",
+						"latter": "D"
+					},
+					{
+						"name": "青神县",
+						"latter": "Q"
+					}
+				],
+				"latter": "M"
+			},
+			{
+				"name": "宜宾市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "翠屏区",
+						"latter": "C"
+					},
+					{
+						"name": "南溪区",
+						"latter": "N"
+					},
+					{
+						"name": "宜宾县",
+						"latter": "Y"
+					},
+					{
+						"name": "江安县",
+						"latter": "J"
+					},
+					{
+						"name": "长宁县",
+						"latter": "C"
+					},
+					{
+						"name": "高县",
+						"latter": "G"
+					},
+					{
+						"name": "珙县",
+						"latter": "G"
+					},
+					{
+						"name": "筠连县",
+						"latter": "Y"
+					},
+					{
+						"name": "兴文县",
+						"latter": "X"
+					},
+					{
+						"name": "屏山县",
+						"latter": "P"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "广安市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "广安区",
+						"latter": "G"
+					},
+					{
+						"name": "前锋区",
+						"latter": "Q"
+					},
+					{
+						"name": "岳池县",
+						"latter": "Y"
+					},
+					{
+						"name": "武胜县",
+						"latter": "W"
+					},
+					{
+						"name": "邻水县",
+						"latter": "L"
+					},
+					{
+						"name": "华蓥市",
+						"latter": "H"
+					}
+				],
+				"latter": "G"
+			},
+			{
+				"name": "达州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "通川区",
+						"latter": "T"
+					},
+					{
+						"name": "达川区",
+						"latter": "D"
+					},
+					{
+						"name": "宣汉县",
+						"latter": "X"
+					},
+					{
+						"name": "开江县",
+						"latter": "K"
+					},
+					{
+						"name": "大竹县",
+						"latter": "D"
+					},
+					{
+						"name": "渠县",
+						"latter": "Q"
+					},
+					{
+						"name": "万源市",
+						"latter": "W"
+					}
+				],
+				"latter": "D"
+			},
+			{
+				"name": "雅安市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "雨城区",
+						"latter": "Y"
+					},
+					{
+						"name": "名山区",
+						"latter": "M"
+					},
+					{
+						"name": "荥经县",
+						"latter": "X"
+					},
+					{
+						"name": "汉源县",
+						"latter": "H"
+					},
+					{
+						"name": "石棉县",
+						"latter": "S"
+					},
+					{
+						"name": "天全县",
+						"latter": "T"
+					},
+					{
+						"name": "芦山县",
+						"latter": "L"
+					},
+					{
+						"name": "宝兴县",
+						"latter": "B"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "巴中市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "巴州区",
+						"latter": "B"
+					},
+					{
+						"name": "恩阳区",
+						"latter": "E"
+					},
+					{
+						"name": "通江县",
+						"latter": "T"
+					},
+					{
+						"name": "南江县",
+						"latter": "N"
+					},
+					{
+						"name": "平昌县",
+						"latter": "P"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "资阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "雁江区",
+						"latter": "Y"
+					},
+					{
+						"name": "安岳县",
+						"latter": "A"
+					},
+					{
+						"name": "乐至县",
+						"latter": "L"
+					},
+					{
+						"name": "简阳市",
+						"latter": "J"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "阿坝藏族羌族自治州",
+				"children": [{
+						"name": "汶川县",
+						"latter": "W"
+					},
+					{
+						"name": "理县",
+						"latter": "L"
+					},
+					{
+						"name": "茂县",
+						"latter": "M"
+					},
+					{
+						"name": "松潘县",
+						"latter": "S"
+					},
+					{
+						"name": "九寨沟县",
+						"latter": "J"
+					},
+					{
+						"name": "金川县",
+						"latter": "J"
+					},
+					{
+						"name": "小金县",
+						"latter": "X"
+					},
+					{
+						"name": "黑水县",
+						"latter": "H"
+					},
+					{
+						"name": "马尔康县",
+						"latter": "M"
+					},
+					{
+						"name": "壤塘县",
+						"latter": "R"
+					},
+					{
+						"name": "阿坝县",
+						"latter": "A"
+					},
+					{
+						"name": "若尔盖县",
+						"latter": "R"
+					},
+					{
+						"name": "红原县",
+						"latter": "H"
+					}
+				],
+				"latter": "A"
+			},
+			{
+				"name": "甘孜藏族自治州",
+				"children": [{
+						"name": "康定县",
+						"latter": "K"
+					},
+					{
+						"name": "泸定县",
+						"latter": "L"
+					},
+					{
+						"name": "丹巴县",
+						"latter": "D"
+					},
+					{
+						"name": "九龙县",
+						"latter": "J"
+					},
+					{
+						"name": "雅江县",
+						"latter": "Y"
+					},
+					{
+						"name": "道孚县",
+						"latter": "D"
+					},
+					{
+						"name": "炉霍县",
+						"latter": "L"
+					},
+					{
+						"name": "甘孜县",
+						"latter": "G"
+					},
+					{
+						"name": "新龙县",
+						"latter": "X"
+					},
+					{
+						"name": "德格县",
+						"latter": "D"
+					},
+					{
+						"name": "白玉县",
+						"latter": "B"
+					},
+					{
+						"name": "石渠县",
+						"latter": "S"
+					},
+					{
+						"name": "色达县",
+						"latter": "S"
+					},
+					{
+						"name": "理塘县",
+						"latter": "L"
+					},
+					{
+						"name": "巴塘县",
+						"latter": "B"
+					},
+					{
+						"name": "乡城县",
+						"latter": "X"
+					},
+					{
+						"name": "稻城县",
+						"latter": "D"
+					},
+					{
+						"name": "得荣县",
+						"latter": "D"
+					}
+				],
+				"latter": "G"
+			},
+			{
+				"name": "凉山彝族自治州",
+				"children": [{
+						"name": "西昌市",
+						"latter": "X"
+					},
+					{
+						"name": "木里藏族自治县",
+						"latter": "M"
+					},
+					{
+						"name": "盐源县",
+						"latter": "Y"
+					},
+					{
+						"name": "德昌县",
+						"latter": "D"
+					},
+					{
+						"name": "会理县",
+						"latter": "H"
+					},
+					{
+						"name": "会东县",
+						"latter": "H"
+					},
+					{
+						"name": "宁南县",
+						"latter": "N"
+					},
+					{
+						"name": "普格县",
+						"latter": "P"
+					},
+					{
+						"name": "布拖县",
+						"latter": "B"
+					},
+					{
+						"name": "金阳县",
+						"latter": "J"
+					},
+					{
+						"name": "昭觉县",
+						"latter": "Z"
+					},
+					{
+						"name": "喜德县",
+						"latter": "X"
+					},
+					{
+						"name": "冕宁县",
+						"latter": "M"
+					},
+					{
+						"name": "越西县",
+						"latter": "Y"
+					},
+					{
+						"name": "甘洛县",
+						"latter": "G"
+					},
+					{
+						"name": "美姑县",
+						"latter": "M"
+					},
+					{
+						"name": "雷波县",
+						"latter": "L"
+					}
+				],
+				"latter": "L"
+			}
+		],
+		"latter": "S"
+	},
+	{
+		"name": "贵州省",
+		"children": [{
+				"name": "贵阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "南明区",
+						"latter": "N"
+					},
+					{
+						"name": "云岩区",
+						"latter": "Y"
+					},
+					{
+						"name": "花溪区",
+						"latter": "H"
+					},
+					{
+						"name": "乌当区",
+						"latter": "W"
+					},
+					{
+						"name": "白云区",
+						"latter": "B"
+					},
+					{
+						"name": "观山湖区",
+						"latter": "G"
+					},
+					{
+						"name": "开阳县",
+						"latter": "K"
+					},
+					{
+						"name": "息烽县",
+						"latter": "X"
+					},
+					{
+						"name": "修文县",
+						"latter": "X"
+					},
+					{
+						"name": "清镇市",
+						"latter": "Q"
+					}
+				],
+				"latter": "G"
+			},
+			{
+				"name": "六盘水市",
+				"children": [{
+						"name": "钟山区",
+						"latter": "Z"
+					},
+					{
+						"name": "六枝特区",
+						"latter": "L"
+					},
+					{
+						"name": "水城县",
+						"latter": "S"
+					},
+					{
+						"name": "盘县",
+						"latter": "P"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "遵义市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "红花岗区",
+						"latter": "H"
+					},
+					{
+						"name": "汇川区",
+						"latter": "H"
+					},
+					{
+						"name": "遵义县",
+						"latter": "Z"
+					},
+					{
+						"name": "桐梓县",
+						"latter": "T"
+					},
+					{
+						"name": "绥阳县",
+						"latter": "S"
+					},
+					{
+						"name": "正安县",
+						"latter": "Z"
+					},
+					{
+						"name": "道真仡佬族苗族自治县",
+						"latter": "D"
+					},
+					{
+						"name": "务川仡佬族苗族自治县",
+						"latter": "W"
+					},
+					{
+						"name": "凤冈县",
+						"latter": "F"
+					},
+					{
+						"name": "湄潭县",
+						"latter": "M"
+					},
+					{
+						"name": "余庆县",
+						"latter": "Y"
+					},
+					{
+						"name": "习水县",
+						"latter": "X"
+					},
+					{
+						"name": "赤水市",
+						"latter": "C"
+					},
+					{
+						"name": "仁怀市",
+						"latter": "R"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "安顺市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "西秀区",
+						"latter": "X"
+					},
+					{
+						"name": "平坝县",
+						"latter": "P"
+					},
+					{
+						"name": "普定县",
+						"latter": "P"
+					},
+					{
+						"name": "镇宁布依族苗族自治县",
+						"latter": "Z"
+					},
+					{
+						"name": "关岭布依族苗族自治县",
+						"latter": "G"
+					},
+					{
+						"name": "紫云苗族布依族自治县",
+						"latter": "Z"
+					}
+				],
+				"latter": "A"
+			},
+			{
+				"name": "毕节市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "七星关区",
+						"latter": "Q"
+					},
+					{
+						"name": "大方县",
+						"latter": "D"
+					},
+					{
+						"name": "黔西县",
+						"latter": "Q"
+					},
+					{
+						"name": "金沙县",
+						"latter": "J"
+					},
+					{
+						"name": "织金县",
+						"latter": "Z"
+					},
+					{
+						"name": "纳雍县",
+						"latter": "N"
+					},
+					{
+						"name": "威宁彝族回族苗族自治县",
+						"latter": "W"
+					},
+					{
+						"name": "赫章县",
+						"latter": "H"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "铜仁市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "碧江区",
+						"latter": "B"
+					},
+					{
+						"name": "万山区",
+						"latter": "W"
+					},
+					{
+						"name": "江口县",
+						"latter": "J"
+					},
+					{
+						"name": "玉屏侗族自治县",
+						"latter": "Y"
+					},
+					{
+						"name": "石阡县",
+						"latter": "S"
+					},
+					{
+						"name": "思南县",
+						"latter": "S"
+					},
+					{
+						"name": "印江土家族苗族自治县",
+						"latter": "Y"
+					},
+					{
+						"name": "德江县",
+						"latter": "D"
+					},
+					{
+						"name": "沿河土家族自治县",
+						"latter": "Y"
+					},
+					{
+						"name": "松桃苗族自治县",
+						"latter": "S"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "黔西南布依族苗族自治州",
+				"children": [{
+						"name": "兴义市",
+						"latter": "X"
+					},
+					{
+						"name": "兴仁县",
+						"latter": "X"
+					},
+					{
+						"name": "普安县",
+						"latter": "P"
+					},
+					{
+						"name": "晴隆县",
+						"latter": "Q"
+					},
+					{
+						"name": "贞丰县",
+						"latter": "Z"
+					},
+					{
+						"name": "望谟县",
+						"latter": "W"
+					},
+					{
+						"name": "册亨县",
+						"latter": "C"
+					},
+					{
+						"name": "安龙县",
+						"latter": "A"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "黔东南苗族侗族自治州",
+				"children": [{
+						"name": "凯里市",
+						"latter": "K"
+					},
+					{
+						"name": "黄平县",
+						"latter": "H"
+					},
+					{
+						"name": "施秉县",
+						"latter": "S"
+					},
+					{
+						"name": "三穗县",
+						"latter": "S"
+					},
+					{
+						"name": "镇远县",
+						"latter": "Z"
+					},
+					{
+						"name": "岑巩县",
+						"latter": "C"
+					},
+					{
+						"name": "天柱县",
+						"latter": "T"
+					},
+					{
+						"name": "锦屏县",
+						"latter": "J"
+					},
+					{
+						"name": "剑河县",
+						"latter": "J"
+					},
+					{
+						"name": "台江县",
+						"latter": "T"
+					},
+					{
+						"name": "黎平县",
+						"latter": "L"
+					},
+					{
+						"name": "榕江县",
+						"latter": "R"
+					},
+					{
+						"name": "从江县",
+						"latter": "C"
+					},
+					{
+						"name": "雷山县",
+						"latter": "L"
+					},
+					{
+						"name": "麻江县",
+						"latter": "M"
+					},
+					{
+						"name": "丹寨县",
+						"latter": "D"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "黔南布依族苗族自治州",
+				"children": [{
+						"name": "都匀市",
+						"latter": "D"
+					},
+					{
+						"name": "福泉市",
+						"latter": "F"
+					},
+					{
+						"name": "荔波县",
+						"latter": "L"
+					},
+					{
+						"name": "贵定县",
+						"latter": "G"
+					},
+					{
+						"name": "瓮安县",
+						"latter": "W"
+					},
+					{
+						"name": "独山县",
+						"latter": "D"
+					},
+					{
+						"name": "平塘县",
+						"latter": "P"
+					},
+					{
+						"name": "罗甸县",
+						"latter": "L"
+					},
+					{
+						"name": "长顺县",
+						"latter": "C"
+					},
+					{
+						"name": "龙里县",
+						"latter": "L"
+					},
+					{
+						"name": "惠水县",
+						"latter": "H"
+					},
+					{
+						"name": "三都水族自治县",
+						"latter": "S"
+					}
+				],
+				"latter": "Q"
+			}
+		],
+		"latter": "G"
+	},
+	{
+		"name": "云南省",
+		"children": [{
+				"name": "昆明市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "五华区",
+						"latter": "W"
+					},
+					{
+						"name": "盘龙区",
+						"latter": "P"
+					},
+					{
+						"name": "官渡区",
+						"latter": "G"
+					},
+					{
+						"name": "西山区",
+						"latter": "X"
+					},
+					{
+						"name": "东川区",
+						"latter": "D"
+					},
+					{
+						"name": "呈贡区",
+						"latter": "C"
+					},
+					{
+						"name": "晋宁县",
+						"latter": "J"
+					},
+					{
+						"name": "富民县",
+						"latter": "F"
+					},
+					{
+						"name": "宜良县",
+						"latter": "Y"
+					},
+					{
+						"name": "石林彝族自治县",
+						"latter": "S"
+					},
+					{
+						"name": "嵩明县",
+						"latter": "S"
+					},
+					{
+						"name": "禄劝彝族苗族自治县",
+						"latter": "L"
+					},
+					{
+						"name": "寻甸回族彝族自治县",
+						"latter": "X"
+					},
+					{
+						"name": "安宁市",
+						"latter": "A"
+					}
+				],
+				"latter": "K"
+			},
+			{
+				"name": "曲靖市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "麒麟区",
+						"latter": "Q"
+					},
+					{
+						"name": "马龙县",
+						"latter": "M"
+					},
+					{
+						"name": "陆良县",
+						"latter": "L"
+					},
+					{
+						"name": "师宗县",
+						"latter": "S"
+					},
+					{
+						"name": "罗平县",
+						"latter": "L"
+					},
+					{
+						"name": "富源县",
+						"latter": "F"
+					},
+					{
+						"name": "会泽县",
+						"latter": "H"
+					},
+					{
+						"name": "沾益县",
+						"latter": "Z"
+					},
+					{
+						"name": "宣威市",
+						"latter": "X"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "玉溪市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "红塔区",
+						"latter": "H"
+					},
+					{
+						"name": "江川县",
+						"latter": "J"
+					},
+					{
+						"name": "澄江县",
+						"latter": "C"
+					},
+					{
+						"name": "通海县",
+						"latter": "T"
+					},
+					{
+						"name": "华宁县",
+						"latter": "H"
+					},
+					{
+						"name": "易门县",
+						"latter": "Y"
+					},
+					{
+						"name": "峨山彝族自治县",
+						"latter": "E"
+					},
+					{
+						"name": "新平彝族傣族自治县",
+						"latter": "X"
+					},
+					{
+						"name": "元江哈尼族彝族傣族自治县",
+						"latter": "Y"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "保山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "隆阳区",
+						"latter": "L"
+					},
+					{
+						"name": "施甸县",
+						"latter": "S"
+					},
+					{
+						"name": "腾冲县",
+						"latter": "T"
+					},
+					{
+						"name": "龙陵县",
+						"latter": "L"
+					},
+					{
+						"name": "昌宁县",
+						"latter": "C"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "昭通市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "昭阳区",
+						"latter": "Z"
+					},
+					{
+						"name": "鲁甸县",
+						"latter": "L"
+					},
+					{
+						"name": "巧家县",
+						"latter": "Q"
+					},
+					{
+						"name": "盐津县",
+						"latter": "Y"
+					},
+					{
+						"name": "大关县",
+						"latter": "D"
+					},
+					{
+						"name": "永善县",
+						"latter": "Y"
+					},
+					{
+						"name": "绥江县",
+						"latter": "S"
+					},
+					{
+						"name": "镇雄县",
+						"latter": "Z"
+					},
+					{
+						"name": "彝良县",
+						"latter": "Y"
+					},
+					{
+						"name": "威信县",
+						"latter": "W"
+					},
+					{
+						"name": "水富县",
+						"latter": "S"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "丽江市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "古城区",
+						"latter": "G"
+					},
+					{
+						"name": "玉龙纳西族自治县",
+						"latter": "Y"
+					},
+					{
+						"name": "永胜县",
+						"latter": "Y"
+					},
+					{
+						"name": "华坪县",
+						"latter": "H"
+					},
+					{
+						"name": "宁蒗彝族自治县",
+						"latter": "N"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "普洱市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "思茅区",
+						"latter": "S"
+					},
+					{
+						"name": "宁洱哈尼族彝族自治县",
+						"latter": "N"
+					},
+					{
+						"name": "墨江哈尼族自治县",
+						"latter": "M"
+					},
+					{
+						"name": "景东彝族自治县",
+						"latter": "J"
+					},
+					{
+						"name": "景谷傣族彝族自治县",
+						"latter": "J"
+					},
+					{
+						"name": "镇沅彝族哈尼族拉祜族自治县",
+						"latter": "Z"
+					},
+					{
+						"name": "江城哈尼族彝族自治县",
+						"latter": "J"
+					},
+					{
+						"name": "孟连傣族拉祜族佤族自治县",
+						"latter": "M"
+					},
+					{
+						"name": "澜沧拉祜族自治县",
+						"latter": "L"
+					},
+					{
+						"name": "西盟佤族自治县",
+						"latter": "X"
+					}
+				],
+				"latter": "P"
+			},
+			{
+				"name": "临沧市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "临翔区",
+						"latter": "L"
+					},
+					{
+						"name": "凤庆县",
+						"latter": "F"
+					},
+					{
+						"name": "云县",
+						"latter": "Y"
+					},
+					{
+						"name": "永德县",
+						"latter": "Y"
+					},
+					{
+						"name": "镇康县",
+						"latter": "Z"
+					},
+					{
+						"name": "双江拉祜族佤族布朗族傣族自治县",
+						"latter": "S"
+					},
+					{
+						"name": "耿马傣族佤族自治县",
+						"latter": "G"
+					},
+					{
+						"name": "沧源佤族自治县",
+						"latter": "C"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "楚雄彝族自治州",
+				"children": [{
+						"name": "楚雄市",
+						"latter": "C"
+					},
+					{
+						"name": "双柏县",
+						"latter": "S"
+					},
+					{
+						"name": "牟定县",
+						"latter": "M"
+					},
+					{
+						"name": "南华县",
+						"latter": "N"
+					},
+					{
+						"name": "姚安县",
+						"latter": "Y"
+					},
+					{
+						"name": "大姚县",
+						"latter": "D"
+					},
+					{
+						"name": "永仁县",
+						"latter": "Y"
+					},
+					{
+						"name": "元谋县",
+						"latter": "Y"
+					},
+					{
+						"name": "武定县",
+						"latter": "W"
+					},
+					{
+						"name": "禄丰县",
+						"latter": "L"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "红河哈尼族彝族自治州",
+				"children": [{
+						"name": "个旧市",
+						"latter": "G"
+					},
+					{
+						"name": "开远市",
+						"latter": "K"
+					},
+					{
+						"name": "蒙自市",
+						"latter": "M"
+					},
+					{
+						"name": "弥勒市",
+						"latter": "M"
+					},
+					{
+						"name": "屏边苗族自治县",
+						"latter": "P"
+					},
+					{
+						"name": "建水县",
+						"latter": "J"
+					},
+					{
+						"name": "石屏县",
+						"latter": "S"
+					},
+					{
+						"name": "泸西县",
+						"latter": "L"
+					},
+					{
+						"name": "元阳县",
+						"latter": "Y"
+					},
+					{
+						"name": "红河县",
+						"latter": "H"
+					},
+					{
+						"name": "金平苗族瑶族傣族自治县",
+						"latter": "J"
+					},
+					{
+						"name": "绿春县",
+						"latter": "L"
+					},
+					{
+						"name": "河口瑶族自治县",
+						"latter": "H"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "文山壮族苗族自治州",
+				"children": [{
+						"name": "文山市",
+						"latter": "W"
+					},
+					{
+						"name": "砚山县",
+						"latter": "Y"
+					},
+					{
+						"name": "西畴县",
+						"latter": "X"
+					},
+					{
+						"name": "麻栗坡县",
+						"latter": "M"
+					},
+					{
+						"name": "马关县",
+						"latter": "M"
+					},
+					{
+						"name": "丘北县",
+						"latter": "Q"
+					},
+					{
+						"name": "广南县",
+						"latter": "G"
+					},
+					{
+						"name": "富宁县",
+						"latter": "F"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "西双版纳傣族自治州",
+				"children": [{
+						"name": "景洪市",
+						"latter": "J"
+					},
+					{
+						"name": "勐海县",
+						"latter": "M"
+					},
+					{
+						"name": "勐腊县",
+						"latter": "M"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "大理白族自治州",
+				"children": [{
+						"name": "大理市",
+						"latter": "D"
+					},
+					{
+						"name": "漾濞彝族自治县",
+						"latter": "Y"
+					},
+					{
+						"name": "祥云县",
+						"latter": "X"
+					},
+					{
+						"name": "宾川县",
+						"latter": "B"
+					},
+					{
+						"name": "弥渡县",
+						"latter": "M"
+					},
+					{
+						"name": "南涧彝族自治县",
+						"latter": "N"
+					},
+					{
+						"name": "巍山彝族回族自治县",
+						"latter": "W"
+					},
+					{
+						"name": "永平县",
+						"latter": "Y"
+					},
+					{
+						"name": "云龙县",
+						"latter": "Y"
+					},
+					{
+						"name": "洱源县",
+						"latter": "E"
+					},
+					{
+						"name": "剑川县",
+						"latter": "J"
+					},
+					{
+						"name": "鹤庆县",
+						"latter": "H"
+					}
+				],
+				"latter": "D"
+			},
+			{
+				"name": "德宏傣族景颇族自治州",
+				"children": [{
+						"name": "瑞丽市",
+						"latter": "R"
+					},
+					{
+						"name": "芒市",
+						"latter": "M"
+					},
+					{
+						"name": "梁河县",
+						"latter": "L"
+					},
+					{
+						"name": "盈江县",
+						"latter": "Y"
+					},
+					{
+						"name": "陇川县",
+						"latter": "L"
+					}
+				],
+				"latter": "D"
+			},
+			{
+				"name": "怒江傈僳族自治州",
+				"children": [{
+						"name": "泸水县",
+						"latter": "L"
+					},
+					{
+						"name": "福贡县",
+						"latter": "F"
+					},
+					{
+						"name": "贡山独龙族怒族自治县",
+						"latter": "G"
+					},
+					{
+						"name": "兰坪白族普米族自治县",
+						"latter": "L"
+					}
+				],
+				"latter": "N"
+			},
+			{
+				"name": "迪庆藏族自治州",
+				"children": [{
+						"name": "香格里拉县",
+						"latter": "X"
+					},
+					{
+						"name": "德钦县",
+						"latter": "D"
+					},
+					{
+						"name": "维西傈僳族自治县",
+						"latter": "W"
+					}
+				],
+				"latter": "D"
+			}
+		],
+		"latter": "Y"
+	},
+	{
+		"name": "西藏自治区",
+		"children": [{
+				"name": "拉萨市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "城关区",
+						"latter": "C"
+					},
+					{
+						"name": "林周县",
+						"latter": "L"
+					},
+					{
+						"name": "当雄县",
+						"latter": "D"
+					},
+					{
+						"name": "尼木县",
+						"latter": "N"
+					},
+					{
+						"name": "曲水县",
+						"latter": "Q"
+					},
+					{
+						"name": "堆龙德庆县",
+						"latter": "D"
+					},
+					{
+						"name": "达孜县",
+						"latter": "D"
+					},
+					{
+						"name": "墨竹工卡县",
+						"latter": "M"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "昌都地区",
+				"children": [{
+						"name": "昌都县",
+						"latter": "C"
+					},
+					{
+						"name": "江达县",
+						"latter": "J"
+					},
+					{
+						"name": "贡觉县",
+						"latter": "G"
+					},
+					{
+						"name": "类乌齐县",
+						"latter": "L"
+					},
+					{
+						"name": "丁青县",
+						"latter": "D"
+					},
+					{
+						"name": "察雅县",
+						"latter": "C"
+					},
+					{
+						"name": "八宿县",
+						"latter": "B"
+					},
+					{
+						"name": "左贡县",
+						"latter": "Z"
+					},
+					{
+						"name": "芒康县",
+						"latter": "M"
+					},
+					{
+						"name": "洛隆县",
+						"latter": "L"
+					},
+					{
+						"name": "边坝县",
+						"latter": "B"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "山南地区",
+				"children": [{
+						"name": "乃东县",
+						"latter": "N"
+					},
+					{
+						"name": "扎囊县",
+						"latter": "Z"
+					},
+					{
+						"name": "贡嘎县",
+						"latter": "G"
+					},
+					{
+						"name": "桑日县",
+						"latter": "S"
+					},
+					{
+						"name": "琼结县",
+						"latter": "Q"
+					},
+					{
+						"name": "曲松县",
+						"latter": "Q"
+					},
+					{
+						"name": "措美县",
+						"latter": "C"
+					},
+					{
+						"name": "洛扎县",
+						"latter": "L"
+					},
+					{
+						"name": "加查县",
+						"latter": "J"
+					},
+					{
+						"name": "隆子县",
+						"latter": "L"
+					},
+					{
+						"name": "错那县",
+						"latter": "C"
+					},
+					{
+						"name": "浪卡子县",
+						"latter": "L"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "日喀则地区",
+				"children": [{
+						"name": "日喀则市",
+						"latter": "R"
+					},
+					{
+						"name": "南木林县",
+						"latter": "N"
+					},
+					{
+						"name": "江孜县",
+						"latter": "J"
+					},
+					{
+						"name": "定日县",
+						"latter": "D"
+					},
+					{
+						"name": "萨迦县",
+						"latter": "S"
+					},
+					{
+						"name": "拉孜县",
+						"latter": "L"
+					},
+					{
+						"name": "昂仁县",
+						"latter": "A"
+					},
+					{
+						"name": "谢通门县",
+						"latter": "X"
+					},
+					{
+						"name": "白朗县",
+						"latter": "B"
+					},
+					{
+						"name": "仁布县",
+						"latter": "R"
+					},
+					{
+						"name": "康马县",
+						"latter": "K"
+					},
+					{
+						"name": "定结县",
+						"latter": "D"
+					},
+					{
+						"name": "仲巴县",
+						"latter": "Z"
+					},
+					{
+						"name": "亚东县",
+						"latter": "Y"
+					},
+					{
+						"name": "吉隆县",
+						"latter": "J"
+					},
+					{
+						"name": "聂拉木县",
+						"latter": "N"
+					},
+					{
+						"name": "萨嘎县",
+						"latter": "S"
+					},
+					{
+						"name": "岗巴县",
+						"latter": "G"
+					}
+				],
+				"latter": "R"
+			},
+			{
+				"name": "那曲地区",
+				"children": [{
+						"name": "那曲县",
+						"latter": "N"
+					},
+					{
+						"name": "嘉黎县",
+						"latter": "J"
+					},
+					{
+						"name": "比如县",
+						"latter": "B"
+					},
+					{
+						"name": "聂荣县",
+						"latter": "N"
+					},
+					{
+						"name": "安多县",
+						"latter": "A"
+					},
+					{
+						"name": "申扎县",
+						"latter": "S"
+					},
+					{
+						"name": "索县",
+						"latter": "S"
+					},
+					{
+						"name": "班戈县",
+						"latter": "B"
+					},
+					{
+						"name": "巴青县",
+						"latter": "B"
+					},
+					{
+						"name": "尼玛县",
+						"latter": "N"
+					},
+					{
+						"name": "双湖县",
+						"latter": "S"
+					}
+				],
+				"latter": "N"
+			},
+			{
+				"name": "阿里地区",
+				"children": [{
+						"name": "普兰县",
+						"latter": "P"
+					},
+					{
+						"name": "札达县",
+						"latter": "Z"
+					},
+					{
+						"name": "噶尔县",
+						"latter": "G"
+					},
+					{
+						"name": "日土县",
+						"latter": "R"
+					},
+					{
+						"name": "革吉县",
+						"latter": "G"
+					},
+					{
+						"name": "改则县",
+						"latter": "G"
+					},
+					{
+						"name": "措勤县",
+						"latter": "C"
+					}
+				],
+				"latter": "A"
+			},
+			{
+				"name": "林芝地区",
+				"children": [{
+						"name": "林芝县",
+						"latter": "L"
+					},
+					{
+						"name": "工布江达县",
+						"latter": "G"
+					},
+					{
+						"name": "米林县",
+						"latter": "M"
+					},
+					{
+						"name": "墨脱县",
+						"latter": "M"
+					},
+					{
+						"name": "波密县",
+						"latter": "B"
+					},
+					{
+						"name": "察隅县",
+						"latter": "C"
+					},
+					{
+						"name": "朗县",
+						"latter": "L"
+					}
+				],
+				"latter": "L"
+			}
+		],
+		"latter": "X"
+	},
+	{
+		"name": "陕西省",
+		"children": [{
+				"name": "西安市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "新城区",
+						"latter": "X"
+					},
+					{
+						"name": "碑林区",
+						"latter": "B"
+					},
+					{
+						"name": "莲湖区",
+						"latter": "L"
+					},
+					{
+						"name": "灞桥区",
+						"latter": "B"
+					},
+					{
+						"name": "未央区",
+						"latter": "W"
+					},
+					{
+						"name": "雁塔区",
+						"latter": "Y"
+					},
+					{
+						"name": "阎良区",
+						"latter": "Y"
+					},
+					{
+						"name": "临潼区",
+						"latter": "L"
+					},
+					{
+						"name": "长安区",
+						"latter": "C"
+					},
+					{
+						"name": "蓝田县",
+						"latter": "L"
+					},
+					{
+						"name": "周至县",
+						"latter": "Z"
+					},
+					{
+						"name": "户县",
+						"latter": "H"
+					},
+					{
+						"name": "高陵县",
+						"latter": "G"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "铜川市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "王益区",
+						"latter": "W"
+					},
+					{
+						"name": "印台区",
+						"latter": "Y"
+					},
+					{
+						"name": "耀州区",
+						"latter": "Y"
+					},
+					{
+						"name": "宜君县",
+						"latter": "Y"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "宝鸡市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "渭滨区",
+						"latter": "W"
+					},
+					{
+						"name": "金台区",
+						"latter": "J"
+					},
+					{
+						"name": "陈仓区",
+						"latter": "C"
+					},
+					{
+						"name": "凤翔县",
+						"latter": "F"
+					},
+					{
+						"name": "岐山县",
+						"latter": "Q"
+					},
+					{
+						"name": "扶风县",
+						"latter": "F"
+					},
+					{
+						"name": "眉县",
+						"latter": "M"
+					},
+					{
+						"name": "陇县",
+						"latter": "L"
+					},
+					{
+						"name": "千阳县",
+						"latter": "Q"
+					},
+					{
+						"name": "麟游县",
+						"latter": "L"
+					},
+					{
+						"name": "凤县",
+						"latter": "F"
+					},
+					{
+						"name": "太白县",
+						"latter": "T"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "咸阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "秦都区",
+						"latter": "Q"
+					},
+					{
+						"name": "杨陵区",
+						"latter": "Y"
+					},
+					{
+						"name": "渭城区",
+						"latter": "W"
+					},
+					{
+						"name": "三原县",
+						"latter": "S"
+					},
+					{
+						"name": "泾阳县",
+						"latter": "J"
+					},
+					{
+						"name": "乾县",
+						"latter": "Q"
+					},
+					{
+						"name": "礼泉县",
+						"latter": "L"
+					},
+					{
+						"name": "永寿县",
+						"latter": "Y"
+					},
+					{
+						"name": "彬县",
+						"latter": "B"
+					},
+					{
+						"name": "长武县",
+						"latter": "C"
+					},
+					{
+						"name": "旬邑县",
+						"latter": "X"
+					},
+					{
+						"name": "淳化县",
+						"latter": "C"
+					},
+					{
+						"name": "武功县",
+						"latter": "W"
+					},
+					{
+						"name": "兴平市",
+						"latter": "X"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "渭南市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "临渭区",
+						"latter": "L"
+					},
+					{
+						"name": "华县",
+						"latter": "H"
+					},
+					{
+						"name": "潼关县",
+						"latter": "T"
+					},
+					{
+						"name": "大荔县",
+						"latter": "D"
+					},
+					{
+						"name": "合阳县",
+						"latter": "H"
+					},
+					{
+						"name": "澄城县",
+						"latter": "C"
+					},
+					{
+						"name": "蒲城县",
+						"latter": "P"
+					},
+					{
+						"name": "白水县",
+						"latter": "B"
+					},
+					{
+						"name": "富平县",
+						"latter": "F"
+					},
+					{
+						"name": "韩城市",
+						"latter": "H"
+					},
+					{
+						"name": "华阴市",
+						"latter": "H"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "延安市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "宝塔区",
+						"latter": "B"
+					},
+					{
+						"name": "延长县",
+						"latter": "Y"
+					},
+					{
+						"name": "延川县",
+						"latter": "Y"
+					},
+					{
+						"name": "子长县",
+						"latter": "Z"
+					},
+					{
+						"name": "安塞县",
+						"latter": "A"
+					},
+					{
+						"name": "志丹县",
+						"latter": "Z"
+					},
+					{
+						"name": "吴起县",
+						"latter": "W"
+					},
+					{
+						"name": "甘泉县",
+						"latter": "G"
+					},
+					{
+						"name": "富县",
+						"latter": "F"
+					},
+					{
+						"name": "洛川县",
+						"latter": "L"
+					},
+					{
+						"name": "宜川县",
+						"latter": "Y"
+					},
+					{
+						"name": "黄龙县",
+						"latter": "H"
+					},
+					{
+						"name": "黄陵县",
+						"latter": "H"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "汉中市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "汉台区",
+						"latter": "H"
+					},
+					{
+						"name": "南郑县",
+						"latter": "N"
+					},
+					{
+						"name": "城固县",
+						"latter": "C"
+					},
+					{
+						"name": "洋县",
+						"latter": "Y"
+					},
+					{
+						"name": "西乡县",
+						"latter": "X"
+					},
+					{
+						"name": "勉县",
+						"latter": "M"
+					},
+					{
+						"name": "宁强县",
+						"latter": "N"
+					},
+					{
+						"name": "略阳县",
+						"latter": "L"
+					},
+					{
+						"name": "镇巴县",
+						"latter": "Z"
+					},
+					{
+						"name": "留坝县",
+						"latter": "L"
+					},
+					{
+						"name": "佛坪县",
+						"latter": "F"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "榆林市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "榆阳区",
+						"latter": "Y"
+					},
+					{
+						"name": "神木县",
+						"latter": "S"
+					},
+					{
+						"name": "府谷县",
+						"latter": "F"
+					},
+					{
+						"name": "横山县",
+						"latter": "H"
+					},
+					{
+						"name": "靖边县",
+						"latter": "J"
+					},
+					{
+						"name": "定边县",
+						"latter": "D"
+					},
+					{
+						"name": "绥德县",
+						"latter": "S"
+					},
+					{
+						"name": "米脂县",
+						"latter": "M"
+					},
+					{
+						"name": "佳县",
+						"latter": "J"
+					},
+					{
+						"name": "吴堡县",
+						"latter": "W"
+					},
+					{
+						"name": "清涧县",
+						"latter": "Q"
+					},
+					{
+						"name": "子洲县",
+						"latter": "Z"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "安康市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "汉滨区",
+						"latter": "H"
+					},
+					{
+						"name": "汉阴县",
+						"latter": "H"
+					},
+					{
+						"name": "石泉县",
+						"latter": "S"
+					},
+					{
+						"name": "宁陕县",
+						"latter": "N"
+					},
+					{
+						"name": "紫阳县",
+						"latter": "Z"
+					},
+					{
+						"name": "岚皋县",
+						"latter": "L"
+					},
+					{
+						"name": "平利县",
+						"latter": "P"
+					},
+					{
+						"name": "镇坪县",
+						"latter": "Z"
+					},
+					{
+						"name": "旬阳县",
+						"latter": "X"
+					},
+					{
+						"name": "白河县",
+						"latter": "B"
+					}
+				],
+				"latter": "A"
+			},
+			{
+				"name": "商洛市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "商州区",
+						"latter": "S"
+					},
+					{
+						"name": "洛南县",
+						"latter": "L"
+					},
+					{
+						"name": "丹凤县",
+						"latter": "D"
+					},
+					{
+						"name": "商南县",
+						"latter": "S"
+					},
+					{
+						"name": "山阳县",
+						"latter": "S"
+					},
+					{
+						"name": "镇安县",
+						"latter": "Z"
+					},
+					{
+						"name": "柞水县",
+						"latter": "Z"
+					}
+				],
+				"latter": "S"
+			}
+		],
+		"latter": "S"
+	},
+	{
+		"name": "甘肃省",
+		"children": [{
+				"name": "兰州市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "城关区",
+						"latter": "C"
+					},
+					{
+						"name": "七里河区",
+						"latter": "Q"
+					},
+					{
+						"name": "西固区",
+						"latter": "X"
+					},
+					{
+						"name": "安宁区",
+						"latter": "A"
+					},
+					{
+						"name": "红古区",
+						"latter": "H"
+					},
+					{
+						"name": "永登县",
+						"latter": "Y"
+					},
+					{
+						"name": "皋兰县",
+						"latter": "G"
+					},
+					{
+						"name": "榆中县",
+						"latter": "Y"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "嘉峪关市",
+				"children": [{
+					"name": "市辖区",
+					"latter": "S"
+				}],
+				"latter": "J"
+			},
+			{
+				"name": "金昌市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "金川区",
+						"latter": "J"
+					},
+					{
+						"name": "永昌县",
+						"latter": "Y"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "白银市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "白银区",
+						"latter": "B"
+					},
+					{
+						"name": "平川区",
+						"latter": "P"
+					},
+					{
+						"name": "靖远县",
+						"latter": "J"
+					},
+					{
+						"name": "会宁县",
+						"latter": "H"
+					},
+					{
+						"name": "景泰县",
+						"latter": "J"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "天水市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "秦州区",
+						"latter": "Q"
+					},
+					{
+						"name": "麦积区",
+						"latter": "M"
+					},
+					{
+						"name": "清水县",
+						"latter": "Q"
+					},
+					{
+						"name": "秦安县",
+						"latter": "Q"
+					},
+					{
+						"name": "甘谷县",
+						"latter": "G"
+					},
+					{
+						"name": "武山县",
+						"latter": "W"
+					},
+					{
+						"name": "张家川回族自治县",
+						"latter": "Z"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "武威市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "凉州区",
+						"latter": "L"
+					},
+					{
+						"name": "民勤县",
+						"latter": "M"
+					},
+					{
+						"name": "古浪县",
+						"latter": "G"
+					},
+					{
+						"name": "天祝藏族自治县",
+						"latter": "T"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "张掖市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "甘州区",
+						"latter": "G"
+					},
+					{
+						"name": "肃南裕固族自治县",
+						"latter": "S"
+					},
+					{
+						"name": "民乐县",
+						"latter": "M"
+					},
+					{
+						"name": "临泽县",
+						"latter": "L"
+					},
+					{
+						"name": "高台县",
+						"latter": "G"
+					},
+					{
+						"name": "山丹县",
+						"latter": "S"
+					}
+				],
+				"latter": "Z"
+			},
+			{
+				"name": "平凉市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "崆峒区",
+						"latter": "K"
+					},
+					{
+						"name": "泾川县",
+						"latter": "J"
+					},
+					{
+						"name": "灵台县",
+						"latter": "L"
+					},
+					{
+						"name": "崇信县",
+						"latter": "C"
+					},
+					{
+						"name": "华亭县",
+						"latter": "H"
+					},
+					{
+						"name": "庄浪县",
+						"latter": "Z"
+					},
+					{
+						"name": "静宁县",
+						"latter": "J"
+					}
+				],
+				"latter": "P"
+			},
+			{
+				"name": "酒泉市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "肃州区",
+						"latter": "S"
+					},
+					{
+						"name": "金塔县",
+						"latter": "J"
+					},
+					{
+						"name": "瓜州县",
+						"latter": "G"
+					},
+					{
+						"name": "肃北蒙古族自治县",
+						"latter": "S"
+					},
+					{
+						"name": "阿克塞哈萨克族自治县",
+						"latter": "A"
+					},
+					{
+						"name": "玉门市",
+						"latter": "Y"
+					},
+					{
+						"name": "敦煌市",
+						"latter": "D"
+					}
+				],
+				"latter": "J"
+			},
+			{
+				"name": "庆阳市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "西峰区",
+						"latter": "X"
+					},
+					{
+						"name": "庆城县",
+						"latter": "Q"
+					},
+					{
+						"name": "环县",
+						"latter": "H"
+					},
+					{
+						"name": "华池县",
+						"latter": "H"
+					},
+					{
+						"name": "合水县",
+						"latter": "H"
+					},
+					{
+						"name": "正宁县",
+						"latter": "Z"
+					},
+					{
+						"name": "宁县",
+						"latter": "N"
+					},
+					{
+						"name": "镇原县",
+						"latter": "Z"
+					}
+				],
+				"latter": "Q"
+			},
+			{
+				"name": "定西市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "安定区",
+						"latter": "A"
+					},
+					{
+						"name": "通渭县",
+						"latter": "T"
+					},
+					{
+						"name": "陇西县",
+						"latter": "L"
+					},
+					{
+						"name": "渭源县",
+						"latter": "W"
+					},
+					{
+						"name": "临洮县",
+						"latter": "L"
+					},
+					{
+						"name": "漳县",
+						"latter": "Z"
+					},
+					{
+						"name": "岷县",
+						"latter": "M"
+					}
+				],
+				"latter": "D"
+			},
+			{
+				"name": "陇南市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "武都区",
+						"latter": "W"
+					},
+					{
+						"name": "成县",
+						"latter": "C"
+					},
+					{
+						"name": "文县",
+						"latter": "W"
+					},
+					{
+						"name": "宕昌县",
+						"latter": "D"
+					},
+					{
+						"name": "康县",
+						"latter": "K"
+					},
+					{
+						"name": "西和县",
+						"latter": "X"
+					},
+					{
+						"name": "礼县",
+						"latter": "L"
+					},
+					{
+						"name": "徽县",
+						"latter": "H"
+					},
+					{
+						"name": "两当县",
+						"latter": "L"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "临夏回族自治州",
+				"children": [{
+						"name": "临夏市",
+						"latter": "L"
+					},
+					{
+						"name": "临夏县",
+						"latter": "L"
+					},
+					{
+						"name": "康乐县",
+						"latter": "K"
+					},
+					{
+						"name": "永靖县",
+						"latter": "Y"
+					},
+					{
+						"name": "广河县",
+						"latter": "G"
+					},
+					{
+						"name": "和政县",
+						"latter": "H"
+					},
+					{
+						"name": "东乡族自治县",
+						"latter": "D"
+					},
+					{
+						"name": "积石山保安族东乡族撒拉族自治县",
+						"latter": "J"
+					}
+				],
+				"latter": "L"
+			},
+			{
+				"name": "甘南藏族自治州",
+				"children": [{
+						"name": "合作市",
+						"latter": "H"
+					},
+					{
+						"name": "临潭县",
+						"latter": "L"
+					},
+					{
+						"name": "卓尼县",
+						"latter": "Z"
+					},
+					{
+						"name": "舟曲县",
+						"latter": "Z"
+					},
+					{
+						"name": "迭部县",
+						"latter": "D"
+					},
+					{
+						"name": "玛曲县",
+						"latter": "M"
+					},
+					{
+						"name": "碌曲县",
+						"latter": "L"
+					},
+					{
+						"name": "夏河县",
+						"latter": "X"
+					}
+				],
+				"latter": "G"
+			}
+		],
+		"latter": "G"
+	},
+	{
+		"name": "青海省",
+		"children": [{
+				"name": "西宁市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "城东区",
+						"latter": "C"
+					},
+					{
+						"name": "城中区",
+						"latter": "C"
+					},
+					{
+						"name": "城西区",
+						"latter": "C"
+					},
+					{
+						"name": "城北区",
+						"latter": "C"
+					},
+					{
+						"name": "大通回族土族自治县",
+						"latter": "D"
+					},
+					{
+						"name": "湟中县",
+						"latter": "H"
+					},
+					{
+						"name": "湟源县",
+						"latter": "H"
+					}
+				],
+				"latter": "X"
+			},
+			{
+				"name": "海东市",
+				"children": [{
+						"name": "乐都区",
+						"latter": "L"
+					},
+					{
+						"name": "平安县",
+						"latter": "P"
+					},
+					{
+						"name": "民和回族土族自治县",
+						"latter": "M"
+					},
+					{
+						"name": "互助土族自治县",
+						"latter": "H"
+					},
+					{
+						"name": "化隆回族自治县",
+						"latter": "H"
+					},
+					{
+						"name": "循化撒拉族自治县",
+						"latter": "X"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "海北藏族自治州",
+				"children": [{
+						"name": "门源回族自治县",
+						"latter": "M"
+					},
+					{
+						"name": "祁连县",
+						"latter": "Q"
+					},
+					{
+						"name": "海晏县",
+						"latter": "H"
+					},
+					{
+						"name": "刚察县",
+						"latter": "G"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "黄南藏族自治州",
+				"children": [{
+						"name": "同仁县",
+						"latter": "T"
+					},
+					{
+						"name": "尖扎县",
+						"latter": "J"
+					},
+					{
+						"name": "泽库县",
+						"latter": "Z"
+					},
+					{
+						"name": "河南蒙古族自治县",
+						"latter": "H"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "海南藏族自治州",
+				"children": [{
+						"name": "共和县",
+						"latter": "G"
+					},
+					{
+						"name": "同德县",
+						"latter": "T"
+					},
+					{
+						"name": "贵德县",
+						"latter": "G"
+					},
+					{
+						"name": "兴海县",
+						"latter": "X"
+					},
+					{
+						"name": "贵南县",
+						"latter": "G"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "果洛藏族自治州",
+				"children": [{
+						"name": "玛沁县",
+						"latter": "M"
+					},
+					{
+						"name": "班玛县",
+						"latter": "B"
+					},
+					{
+						"name": "甘德县",
+						"latter": "G"
+					},
+					{
+						"name": "达日县",
+						"latter": "D"
+					},
+					{
+						"name": "久治县",
+						"latter": "J"
+					},
+					{
+						"name": "玛多县",
+						"latter": "M"
+					}
+				],
+				"latter": "G"
+			},
+			{
+				"name": "玉树藏族自治州",
+				"children": [{
+						"name": "玉树市",
+						"latter": "Y"
+					},
+					{
+						"name": "杂多县",
+						"latter": "Z"
+					},
+					{
+						"name": "称多县",
+						"latter": "C"
+					},
+					{
+						"name": "治多县",
+						"latter": "Z"
+					},
+					{
+						"name": "囊谦县",
+						"latter": "N"
+					},
+					{
+						"name": "曲麻莱县",
+						"latter": "Q"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "海西蒙古族藏族自治州",
+				"children": [{
+						"name": "格尔木市",
+						"latter": "G"
+					},
+					{
+						"name": "德令哈市",
+						"latter": "D"
+					},
+					{
+						"name": "乌兰县",
+						"latter": "W"
+					},
+					{
+						"name": "都兰县",
+						"latter": "D"
+					},
+					{
+						"name": "天峻县",
+						"latter": "T"
+					}
+				],
+				"latter": "H"
+			}
+		],
+		"latter": "Q"
+	},
+	{
+		"name": "宁夏回族自治区",
+		"children": [{
+				"name": "银川市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "兴庆区",
+						"latter": "X"
+					},
+					{
+						"name": "西夏区",
+						"latter": "X"
+					},
+					{
+						"name": "金凤区",
+						"latter": "J"
+					},
+					{
+						"name": "永宁县",
+						"latter": "Y"
+					},
+					{
+						"name": "贺兰县",
+						"latter": "H"
+					},
+					{
+						"name": "灵武市",
+						"latter": "L"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "石嘴山市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "大武口区",
+						"latter": "D"
+					},
+					{
+						"name": "惠农区",
+						"latter": "H"
+					},
+					{
+						"name": "平罗县",
+						"latter": "P"
+					}
+				],
+				"latter": "S"
+			},
+			{
+				"name": "吴忠市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "利通区",
+						"latter": "L"
+					},
+					{
+						"name": "红寺堡区",
+						"latter": "H"
+					},
+					{
+						"name": "盐池县",
+						"latter": "Y"
+					},
+					{
+						"name": "同心县",
+						"latter": "T"
+					},
+					{
+						"name": "青铜峡市",
+						"latter": "Q"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "固原市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "原州区",
+						"latter": "Y"
+					},
+					{
+						"name": "西吉县",
+						"latter": "X"
+					},
+					{
+						"name": "隆德县",
+						"latter": "L"
+					},
+					{
+						"name": "泾源县",
+						"latter": "J"
+					},
+					{
+						"name": "彭阳县",
+						"latter": "P"
+					}
+				],
+				"latter": "G"
+			},
+			{
+				"name": "中卫市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "沙坡头区",
+						"latter": "S"
+					},
+					{
+						"name": "中宁县",
+						"latter": "Z"
+					},
+					{
+						"name": "海原县",
+						"latter": "H"
+					}
+				],
+				"latter": "Z"
+			}
+		],
+		"latter": "N"
+	},
+	{
+		"name": "新疆维吾尔自治区",
+		"children": [{
+				"name": "乌鲁木齐市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "天山区",
+						"latter": "T"
+					},
+					{
+						"name": "沙依巴克区",
+						"latter": "S"
+					},
+					{
+						"name": "新市区",
+						"latter": "X"
+					},
+					{
+						"name": "水磨沟区",
+						"latter": "S"
+					},
+					{
+						"name": "头屯河区",
+						"latter": "T"
+					},
+					{
+						"name": "达坂城区",
+						"latter": "D"
+					},
+					{
+						"name": "米东区",
+						"latter": "M"
+					},
+					{
+						"name": "乌鲁木齐县",
+						"latter": "W"
+					}
+				],
+				"latter": "W"
+			},
+			{
+				"name": "克拉玛依市",
+				"children": [{
+						"name": "市辖区",
+						"latter": "S"
+					},
+					{
+						"name": "独山子区",
+						"latter": "D"
+					},
+					{
+						"name": "克拉玛依区",
+						"latter": "K"
+					},
+					{
+						"name": "白碱滩区",
+						"latter": "B"
+					},
+					{
+						"name": "乌尔禾区",
+						"latter": "W"
+					}
+				],
+				"latter": "K"
+			},
+			{
+				"name": "吐鲁番地区",
+				"children": [{
+						"name": "吐鲁番市",
+						"latter": "T"
+					},
+					{
+						"name": "鄯善县",
+						"latter": "S"
+					},
+					{
+						"name": "托克逊县",
+						"latter": "T"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "哈密地区",
+				"children": [{
+						"name": "哈密市",
+						"latter": "H"
+					},
+					{
+						"name": "巴里坤哈萨克自治县",
+						"latter": "B"
+					},
+					{
+						"name": "伊吾县",
+						"latter": "Y"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "昌吉回族自治州",
+				"children": [{
+						"name": "昌吉市",
+						"latter": "C"
+					},
+					{
+						"name": "阜康市",
+						"latter": "F"
+					},
+					{
+						"name": "呼图壁县",
+						"latter": "H"
+					},
+					{
+						"name": "玛纳斯县",
+						"latter": "M"
+					},
+					{
+						"name": "奇台县",
+						"latter": "Q"
+					},
+					{
+						"name": "吉木萨尔县",
+						"latter": "J"
+					},
+					{
+						"name": "木垒哈萨克自治县",
+						"latter": "M"
+					}
+				],
+				"latter": "C"
+			},
+			{
+				"name": "博尔塔拉蒙古自治州",
+				"children": [{
+						"name": "博乐市",
+						"latter": "B"
+					},
+					{
+						"name": "阿拉山口市",
+						"latter": "A"
+					},
+					{
+						"name": "精河县",
+						"latter": "J"
+					},
+					{
+						"name": "温泉县",
+						"latter": "W"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "巴音郭楞蒙古自治州",
+				"children": [{
+						"name": "库尔勒市",
+						"latter": "K"
+					},
+					{
+						"name": "轮台县",
+						"latter": "L"
+					},
+					{
+						"name": "尉犁县",
+						"latter": "W"
+					},
+					{
+						"name": "若羌县",
+						"latter": "R"
+					},
+					{
+						"name": "且末县",
+						"latter": "Q"
+					},
+					{
+						"name": "焉耆回族自治县",
+						"latter": "Y"
+					},
+					{
+						"name": "和静县",
+						"latter": "H"
+					},
+					{
+						"name": "和硕县",
+						"latter": "H"
+					},
+					{
+						"name": "博湖县",
+						"latter": "B"
+					}
+				],
+				"latter": "B"
+			},
+			{
+				"name": "阿克苏地区",
+				"children": [{
+						"name": "阿克苏市",
+						"latter": "A"
+					},
+					{
+						"name": "温宿县",
+						"latter": "W"
+					},
+					{
+						"name": "库车县",
+						"latter": "K"
+					},
+					{
+						"name": "沙雅县",
+						"latter": "S"
+					},
+					{
+						"name": "新和县",
+						"latter": "X"
+					},
+					{
+						"name": "拜城县",
+						"latter": "B"
+					},
+					{
+						"name": "乌什县",
+						"latter": "W"
+					},
+					{
+						"name": "阿瓦提县",
+						"latter": "A"
+					},
+					{
+						"name": "柯坪县",
+						"latter": "K"
+					}
+				],
+				"latter": "A"
+			},
+			{
+				"name": "克孜勒苏柯尔克孜自治州",
+				"children": [{
+						"name": "阿图什市",
+						"latter": "A"
+					},
+					{
+						"name": "阿克陶县",
+						"latter": "A"
+					},
+					{
+						"name": "阿合奇县",
+						"latter": "A"
+					},
+					{
+						"name": "乌恰县",
+						"latter": "W"
+					}
+				],
+				"latter": "K"
+			},
+			{
+				"name": "喀什地区",
+				"children": [{
+						"name": "喀什市",
+						"latter": "K"
+					},
+					{
+						"name": "疏附县",
+						"latter": "S"
+					},
+					{
+						"name": "疏勒县",
+						"latter": "S"
+					},
+					{
+						"name": "英吉沙县",
+						"latter": "Y"
+					},
+					{
+						"name": "泽普县",
+						"latter": "Z"
+					},
+					{
+						"name": "莎车县",
+						"latter": "S"
+					},
+					{
+						"name": "叶城县",
+						"latter": "Y"
+					},
+					{
+						"name": "麦盖提县",
+						"latter": "M"
+					},
+					{
+						"name": "岳普湖县",
+						"latter": "Y"
+					},
+					{
+						"name": "伽师县",
+						"latter": "Q"
+					},
+					{
+						"name": "巴楚县",
+						"latter": "B"
+					},
+					{
+						"name": "塔什库尔干塔吉克自治县",
+						"latter": "T"
+					}
+				],
+				"latter": "K"
+			},
+			{
+				"name": "和田地区",
+				"children": [{
+						"name": "和田市",
+						"latter": "H"
+					},
+					{
+						"name": "和田县",
+						"latter": "H"
+					},
+					{
+						"name": "墨玉县",
+						"latter": "M"
+					},
+					{
+						"name": "皮山县",
+						"latter": "P"
+					},
+					{
+						"name": "洛浦县",
+						"latter": "L"
+					},
+					{
+						"name": "策勒县",
+						"latter": "C"
+					},
+					{
+						"name": "于田县",
+						"latter": "Y"
+					},
+					{
+						"name": "民丰县",
+						"latter": "M"
+					}
+				],
+				"latter": "H"
+			},
+			{
+				"name": "伊犁哈萨克自治州",
+				"children": [{
+						"name": "伊宁市",
+						"latter": "Y"
+					},
+					{
+						"name": "奎屯市",
+						"latter": "K"
+					},
+					{
+						"name": "伊宁县",
+						"latter": "Y"
+					},
+					{
+						"name": "察布查尔锡伯自治县",
+						"latter": "C"
+					},
+					{
+						"name": "霍城县",
+						"latter": "H"
+					},
+					{
+						"name": "巩留县",
+						"latter": "G"
+					},
+					{
+						"name": "新源县",
+						"latter": "X"
+					},
+					{
+						"name": "昭苏县",
+						"latter": "Z"
+					},
+					{
+						"name": "特克斯县",
+						"latter": "T"
+					},
+					{
+						"name": "尼勒克县",
+						"latter": "N"
+					}
+				],
+				"latter": "Y"
+			},
+			{
+				"name": "塔城地区",
+				"children": [{
+						"name": "塔城市",
+						"latter": "T"
+					},
+					{
+						"name": "乌苏市",
+						"latter": "W"
+					},
+					{
+						"name": "额敏县",
+						"latter": "E"
+					},
+					{
+						"name": "沙湾县",
+						"latter": "S"
+					},
+					{
+						"name": "托里县",
+						"latter": "T"
+					},
+					{
+						"name": "裕民县",
+						"latter": "Y"
+					},
+					{
+						"name": "和布克赛尔蒙古自治县",
+						"latter": "H"
+					}
+				],
+				"latter": "T"
+			},
+			{
+				"name": "阿勒泰地区",
+				"children": [{
+						"name": "阿勒泰市",
+						"latter": "A"
+					},
+					{
+						"name": "布尔津县",
+						"latter": "B"
+					},
+					{
+						"name": "富蕴县",
+						"latter": "F"
+					},
+					{
+						"name": "福海县",
+						"latter": "F"
+					},
+					{
+						"name": "哈巴河县",
+						"latter": "H"
+					},
+					{
+						"name": "青河县",
+						"latter": "Q"
+					},
+					{
+						"name": "吉木乃县",
+						"latter": "J"
+					}
+				],
+				"latter": "A"
+			},
+			{
+				"name": "自治区直辖县级行政区划",
+				"children": [{
+						"name": "石河子市",
+						"latter": "S"
+					},
+					{
+						"name": "阿拉尔市",
+						"latter": "A"
+					},
+					{
+						"name": "图木舒克市",
+						"latter": "T"
+					},
+					{
+						"name": "五家渠市",
+						"latter": "W"
+					}
+				],
+				"latter": "Z"
+			}
+		],
+		"latter": "X"
+	}
+]

+ 14 - 0
components/lee-select-city/hot-cities.json

@@ -0,0 +1,14 @@
+[["台州",["浙江省","台州市"]],
+	["北京", ["北京市"]],
+	["上海", ["上海"]],
+	["广州", ["广东省", "广州市"]],
+	["深圳", ["广东省", "深圳市"]],
+	["杭州", ["浙江省", "杭州市"]],
+	["南京", ["江苏省", "南京市"]],
+	["苏州", ["江苏省", "苏州市"]],
+	["天津", ["天津市"]],
+	["武汉", ["湖北省", "武汉市"]],
+	["长沙", ["湖南省", "长沙市"]],
+	["重庆", ["重庆市"]],
+	["成都", ["四川省", "成都市"]]
+]

+ 83 - 0
components/lee-select-city/lee-latter-list.vue

@@ -0,0 +1,83 @@
+<template>
+	<view class="latter-list">
+		<view class="latter-list-item" v-for="(v, k) in data" :key="k">
+			<view class="latter-list-latter">{{ v[0] }}</view>
+			<view class="plist">
+				<view class="plist-item"
+					v-for="(m, n) of v[1]"
+					:key="n"
+					:class="{ selected: selected === m }"
+					@click="selectHandler(m)"
+				>
+					<text>{{ m.name }}</text>
+					<text class="select-icon">✔</text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			data: {
+				type: Array,
+				required: true
+			},
+			selected: Object
+		},
+		methods: {
+			selectHandler(item) {
+				this.$emit('select', item)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	$lee-spacing-base: 30upx;
+	$lee-spacing-large: 40upx;
+	$lee-font-size-caption: 28upx;
+	$lee-text-height: 60upx;
+	
+	.latter-list {
+		&-item {
+			display: flex;
+			&:not(:last-child) {
+				margin-bottom: $lee-spacing-large;
+			}
+		}
+		
+		&-latter {
+			$width: 60upx;
+			width: $width;
+			font-size: $lee-font-size-caption;
+			color: $uni-text-color-grey;
+			line-height: $lee-text-height;
+		}
+	}
+	
+	.plist {
+		flex: 1;
+		width: 0;
+		
+		&-item {
+			height: $lee-text-height;
+			line-height: $lee-text-height;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			
+			&:not(:last-child) {
+				margin-bottom: $lee-spacing-base;
+			}
+			
+			&.selected {
+				color: $uni-color-primary;
+			}
+			&:not(.selected) > .select-icon {
+				display: none;
+			}
+		}
+	}
+</style>

+ 434 - 0
components/lee-select-city/lee-select-city.vue

@@ -0,0 +1,434 @@
+<template>
+	<view class="lee-select-city" :style="{ height }">
+		<!-- 选择提示 -->
+		<view class="lee-select-display" v-if="currentSelected.length">
+			<view class="lee-select-display-item"
+				v-for="(v, k) of currentSelected"
+				:key="k"
+				:class="{ active: currentLevel === k }"
+				@click="skipLevel(k)"
+			>{{ v.name }}</view>
+			<view class="lee-select-display-item"
+				v-if="placeholder">{{ placeholder }}</view>
+		</view>
+		<!-- 选择提示END -->
+		
+		<view class="swiper">
+			<view class="swiper-wrapper" :style="{
+				transform: `translateX(-${100 * currentLevel/3}%)`
+			}">
+				<!-- 省级 -->
+				<scroll-view class="swiper-item" scroll-y>
+					<view class="swiper-content">
+						<!-- 当前定位 -->
+						<block v-if="currentPosition">
+							<view class="caption">
+								<text>当前定位</text>
+								<text class="action" @click="getNewPosition">重新定位</text>
+							</view>
+							<view class="current-position"
+								@click="selectCurrentPosition">
+								{{ currentPosition }}
+							</view>
+						</block>
+						<!-- 当前定位END -->
+						
+						<!-- 热门城市 -->
+						<block v-if="hotCities.length">
+							<view class="caption">热门城市</view>
+							<view class="gird">
+								<view class="gird-item"
+									v-for="(v, k) of hotCities"
+									:key="k"
+								>
+									<view @click="hotCitySelectHandler(v)">{{ v[0] }}</view>
+								</view>
+							</view>
+						</block>
+						<!-- 热门城市END -->
+						<view class="caption">选择省份/地区</view>
+						<lee-latter-list
+							:data="dataByLetter"
+							:selected="currentSelected[0]"
+							@select="selectPro"
+						/>
+					</view>
+				</scroll-view>
+				<!-- 省级END -->
+				
+				<!-- 市级 -->
+				<scroll-view class="swiper-item" scroll-y>
+					<view class="swiper-content">
+						<view class="caption">选择城市</view>
+						<lee-latter-list
+							:data="level2Data"
+							:selected="currentSelected[1]"
+							@select="selectCity"
+						/>
+					</view>
+				</scroll-view>
+				<!-- 市级END -->
+				
+				<!-- 市级 -->
+				<scroll-view class="swiper-item" scroll-y>
+					<view class="swiper-content">
+						<view class="caption">选择区/县</view>
+						<lee-latter-list
+							:data="level3Data"
+							:selected="currentSelected[2]"
+							@select="selectQu"
+						/>
+					</view>
+				</scroll-view>
+				<!-- 市级END -->
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import LeeLatterList from './lee-latter-list.vue'
+	import cityData from './city.json'
+	import hotCities from './hot-cities.json'
+	
+	export default {
+		components: {
+			LeeLatterList
+		},
+		props: {
+			// 容器高度
+			height: {
+				type: String,
+				default: '100%'
+				// default: '100px'
+			},
+			
+			// 城市级联数据
+			data: {
+				type: Array,
+				default: () => JSON.parse(JSON.stringify(cityData))
+			},
+			
+			// 热门城市
+			hotCities: {
+				type: Array,
+				default: () => JSON.parse(JSON.stringify(hotCities))
+			},
+			
+			// 重新定位
+			getPosition: Function,
+			
+			// 默认选择
+			defaultSelected: {
+				type: Array,
+				default: () => []
+			},
+		},
+		data() {
+			const currentSelected = []
+			if (this.defaultSelected) {
+				let current = this.data
+				for (const name of this.defaultSelected) {
+					const item = current.find(v => v.name === name)
+					if (!item) {
+						currentSelected = []
+						break
+					}
+					currentSelected.push(item)
+					current = item.children || []
+				}
+			}
+			
+			return {
+				currentLevel: Math.min(2, this.defaultSelected.length),
+				currentSelected,
+				showPlaceholder: true,
+				currentPosition: null
+			}
+		},
+		computed: {
+			// 获取按Letter分组后的一级列表
+			dataByLetter() {
+				return this.formatByLatter(this.data)
+			},
+			
+			// 当前二级列表
+			level2Data() {
+				const lastLevel = this.currentSelected[0]
+				if (!lastLevel) return []
+				return this.formatByLatter(lastLevel.children || [])
+			},
+			
+			// 当前三级列表
+			level3Data() {
+				const lastLevel = this.currentSelected[1]
+				if (!lastLevel) return []
+				return this.formatByLatter(lastLevel.children || [])
+			},
+			
+			placeholder() {
+				const ln = this.currentSelected.length
+				if (ln === 0) return '请选择地区'
+				if (ln === 1) return '请选择城市'
+				if (ln === 2) return '请选择县'
+				return ''
+			}
+		},
+		async created() {
+			await this.getNewPosition()
+			console.log(this.data)
+		},
+		methods: {
+			// 选择省份
+			selectPro(item) {
+				this.currentSelected = [item]
+				console.log()
+				if (this.level2Data.length) {
+					this.currentLevel = 1
+				} else {
+					this.submit()
+				}
+			},
+			
+			// 选择城市
+			selectCity(item) {
+				this.currentSelected.splice(1)
+				this.$set(this.currentSelected, 1, item)
+				if (this.level3Data.length) {
+					this.currentLevel = 2
+				} else {
+					this.submit()
+				}
+			},
+			
+			// 选择区/县
+			selectQu(item) {
+				this.currentSelected.splice(2)
+				this.$set(this.currentSelected, 2, item)
+				this.submit()
+				this.$store.commit('setChoose',{
+						chooseProvince: this.currentSelected[0].name,
+						chooseCity: this.currentSelected[1].name,
+						chooseDistrict: this.currentSelected[2].name,
+				})
+				// this.$api.prePage().reGetStoreList();
+				
+				uni.switchTab({
+					url: '/pages/index/index'
+				})
+			},
+			
+			// 跳转到指定级数
+			skipLevel(level) {
+				this.currentLevel = level
+			},
+			
+			// 提交当前选择
+			submit() {
+				const selected = this.currentSelected.slice(0)
+				const simple = selected.map(v => v.name)
+				this.$emit('submit', { simple, selected })
+			},
+			
+			// 点击热门城市
+			hotCitySelectHandler(item) {
+				let current = this.data
+				const selected = []
+				for (const v of item[1]) {
+					const node = current.find(m => m.name === v)
+					if (!node) return
+					current = node.children
+					if (!current || current.length === 0) return
+					selected.push(node)
+				}
+				this.currentSelected = selected
+				const nextLevel = selected.length
+				if (
+					(nextLevel === 1 && this.level2Data.length) ||
+					(nextLevel === 2 && this.level3Data.length)
+				) {
+					this.currentLevel = nextLevel
+				} else {
+					this.submit()
+				}
+			},
+			
+			// 使用当前定位
+			selectCurrentPosition() {
+				this.$emit('select-current', this.currentPosition)
+			},
+			// 重新定位
+			async getNewPosition() {
+				if (typeof this.getPosition === 'function') {
+					this.currentPosition = await this.getPosition()
+				}
+			},
+			
+			// 按latter格式化
+			formatByLatter(list) {
+				return list.reduce((map, item) => {
+					if (!item.latter) return map
+					let tmp = map.find(v => v[0] === item.latter)
+					if (!tmp) {
+						tmp = [item.latter, []]
+						map.push(tmp)
+					}
+					tmp[1].push(item)
+					tmp[1].sort((a, b) => {
+						return a.name - b.name
+					})
+					return map
+				}, []).sort((a, b) => {
+					return a[0].charCodeAt(0) - b[0].charCodeAt(0)
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	$lee-spacing-small: 10upx;
+	$lee-spacing-base: 30upx;
+	$lee-spacing-large: 40upx;
+	$lee-font-size-caption: 28upx;
+	$lee-text-height: 60upx;
+	
+	.lee-select-city {
+		display: flex;
+		flex-direction: column;
+		position: relative;
+		background-color: $uni-bg-color;
+	}
+	
+	.swiper {
+		flex: 1;
+		width: 100%;
+		height: 0;
+		overflow: hidden;
+		position: relative;
+		&-wrapper {
+			width: 300%;
+			height: 100%;
+			display: flex;
+			position: relative;
+		}
+		&-item {
+			width: calc(100% / 3);
+			height: 100%;
+			position: relative;
+			box-sizing: border-box;
+		}
+		
+		&-content {
+			position: relative;
+			box-sizing: border-box;
+			padding: $lee-spacing-base;
+			
+			> .caption {
+				color: $uni-text-color-grey;
+				font-size: $lee-font-size-caption;
+				margin-bottom: $lee-spacing-base;
+				
+				> .action {
+					float: right;
+				}
+			}
+		}
+	}
+	
+	// 已选择显示
+	.lee-select-display {
+		padding: $lee-spacing-base;
+		box-shadow: 0 2upx 2upx rgba(0, 0, 0, .15);
+		
+		&-item {
+			$height: 80upx;
+			height: $height;
+			line-height: $height;
+			box-sizing: border-box;
+			padding: 0 $lee-spacing-base;
+			font-size: $lee-font-size-caption;
+			border-left: 1px solid $uni-color-primary;
+			position: relative;
+			
+			&.active {
+				color: $uni-color-primary;
+			}
+			
+			&::before {
+				content: '';
+				top: 0;
+				left: -4upx;
+				width: 8upx;
+				height: 50%;
+				background-color: $uni-bg-color;
+				position: absolute;
+				display: none;
+			}
+			&:first-child::before,
+			&:last-child::before {
+				display: block;
+			}
+			&:last-child::before {
+				top: 50%;
+			}
+			
+			&::after {
+				$size: 14upx;
+				top: 50%;
+				left: 0;
+				content: '';
+				width: $size;
+				height: $size;
+				border-radius: 50%;
+				position: absolute;
+				background-color: $uni-color-primary;
+				transform: translate(-50%, -50%);
+			}
+			&:last-child::after {
+				background-color: $uni-text-color-grey;
+			}
+		}
+	}
+	
+	// 热门城市
+	.gird {
+		$height: 80upx;
+		
+		display: flex;
+		flex-wrap: wrap;
+		position: relative;
+		margin-bottom: $lee-spacing-base;
+		
+		&-item {
+			width: 20%;
+			height: $height;
+			box-sizing: border-box;
+			padding: $lee-spacing-small;
+			
+			> view {
+				width: 100%;
+				height: 100%;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				font-size: $lee-font-size-caption;
+				background-color: $uni-bg-color-hover;
+				border-radius: 8upx;
+			}
+		}
+	}
+	
+	// 当前定位
+	.current-position {
+		$height: 80upx;
+		height: $height;
+		line-height: $height;
+		text-align: center;
+		font-size: $lee-font-size-caption;
+		margin-bottom: $lee-spacing-base;
+		color: $uni-color-primary;
+		background-color: lighten($uni-color-primary, 40%);
+		border-radius: 8upx;
+	}
+</style>

+ 344 - 0
components/mosowe-swiper/mosowe-swiper.vue

@@ -0,0 +1,344 @@
+<template>
+	<view class="mosowe-swiper" style="'height:240rpx'">
+		<swiper
+			class="uni-swiper"
+			:indicator-dots="indicator === 'dots'"
+			:indicator-color="indicatorColor"
+			:indicator-active-color="indicatorActiveColor"
+			:autoplay="autoplay"
+			:current="active"
+			:interval="interval"
+			:duration="duration"
+			:vertical="vertical"
+			:disable-touch="touchable"
+			:previous-margin="canPyramid ? pyramidMargin : ''"
+			:next-margin="canPyramid ? pyramidMargin : ''"
+			:display-multiple-items="canPyramid ? 1 : itemNums"
+			circular
+			@change="bannerChange"
+			>
+		<!-- 非微信小程序 -->
+		<!-- #ifndef MP-WEIXIN -->
+				<swiper-item
+					class="item" 
+					v-for="(item,index) of lists" 
+					:key="index"
+					:class="canPyramid && active !== index ? 'swiper-pyramid' : canPyramid && active === index ? 'swiper-active' : ''"
+					>
+					<!-- 图文左右轮播 -->
+					<view class="imageTextLine">
+						<view class="user">
+							<image class="avatar" :src="item[imageKey]" />
+							<text class="content">{{item[textKey]}}<span  class="l">{{item[time]}}前</span>预览了</text>	
+						</view>
+						<view class="shop">
+							<image class="avatar" :src="item[imageshop]" />
+							<text class="content">{{item[name]}}</text>
+						</view>
+					</view>
+				</swiper-item>
+		<!-- #endif -->
+		</swiper>
+	</view>
+</template>
+
+<script>
+		/*
+		 待增加:
+		 1. dot自定义功能,加入slot插槽;
+		 2. 考虑下nvue
+		 */
+export default {
+  name: 'mosowe-swiper',
+  components: {},
+  props: {
+		current: { // 当前展示的索引
+			type: Number,
+			default: 0
+		},
+		autoplay: { // 是否自动切换
+			type: Boolean,
+			default: true
+		},
+		interval: { // 自动切换时间间隔
+			type: Number,
+			default: 3000
+		},
+		duration: { // 切换动画时长
+			type: Number,
+			default: 500
+		},
+		vertical: { // 滑动方向是否为纵向
+			type: Boolean,
+			default: false
+		},
+		indicator: { // 指示点样式:dots点,number数字右下角,空则不会显示
+			type: String,
+			default: ''
+		},
+		indicatorColor: { // dot点样式:默认颜色
+			type: String,
+			default: 'rgba(255, 255, 255, 0.5)'
+		},
+		indicatorActiveColor: { // dot点选中样式:高亮颜色
+			type: String,
+			default: '#ffffff'
+		},
+		scene: { // 场景值
+			type: String,
+			default: ''
+		},
+		touchable: { // 是否禁用手动滑动
+			type: Boolean,
+			default: false
+		},
+		lists: { // 轮播列表
+			type: Array,
+			default: () => {
+				return [];
+			} 
+		},
+		swiperType: { // 轮播类型:image图片轮播,imageTextLine图文一行轮播,text文本轮播
+			type: String,
+			default: 'image'
+		},
+		previewImage: { // 开启图片预览
+			type: Boolean,
+			default: false
+		},
+		imageKey: { // 图片的key值,重复使用的组件可能遇到不同的key,此处传图片的key
+			type: String,
+			default: ''
+		},
+		imageshop: { // 商品图片
+			type: String,
+			default: ''
+		},
+		name: { // 商品名字
+			type: String,
+			default: ''
+		},
+		textKey: { // 文本的key值,重复使用的组件可能遇到不同的key,此处传文本的key
+			type: String,
+			default: ''
+		},
+		time: {//时间
+			type: String,
+			default: ''
+		},
+		height: { // 轮播区的高度,单位rpx
+			type: Number,
+			default: 300
+		},
+		pyramid: { // 金字塔式,横向且纯图模式有效,开启金字塔模式时,active初始化最少为1,最大为this.lists.length -2
+			type: Boolean,
+			default: false
+		},
+		pyramidMargin: { // 金字塔式,前后露出的距离,单位rpx,px
+			type: String,
+			default: '30rpx'
+		},
+		itemNums: { // 同时展示个数,开启金字塔模式时, itemNums = 1
+			type: String,
+			default: '1'
+		}
+	},
+  data () { 
+    return {
+			active: 0,
+			activePrev: -1,
+			activeNext: -1,
+			canPyramid: false,
+			touchStartTime: 0, // 微信小程序端:触摸事件判断点击或滑动
+    };
+  },
+	created () {
+		this.active = this.current;
+		if (this.pyramid && this.swiperType === 'image' && !this.vertical) {
+			this.canPyramid = true;
+			if (this.active === 0 || this.active < 0 || this.active > this.lists.length - 1) {
+				this.lists.length ? '' : this.active = 1;
+			} else if (this.active === this.lists.length - 1) {
+				this.active = this.lists.length -2;
+			}
+		}
+	},
+  methods: {
+		// 微信小程序:banner触摸时,禁止手动滑动的时候触发
+		WXAPP_bannerTouch () {
+			if(this.previewImage) {
+				this.touchStartTime = new Date().getTime();
+			}
+		},
+		// 微信小程序:触摸完
+		WXAPP_bannerTouchEnd (item) {
+			let t = new Date().getTime();
+			if (t-this.touchStartTime <= 200) { // 点击
+				this.bannerClick(item);
+			} else {
+				if (this.touchable) {
+					return false;
+				}
+			}
+		},
+		// banner轮播时
+		bannerChange (e) {
+			this.active = e.detail.current;
+			this.$emit('change', e.detail.current);
+		},
+		// banner点击时
+		bannerClick (item) {
+			console.log(item);
+			if (this.swiperType === 'image' && this.previewImage) { // 纯图片模式下,开启预览模式
+				let urls = [];
+				if (this.imageKey) {
+					for (let image of this.lists) {
+						urls.push(image[this.imageKey]);
+					}					
+				} else {
+					urls = this.lists;
+				}
+				console.log(urls);
+				uni.previewImage({
+					current: item.index,
+					urls: urls
+				});
+			}
+			this.$emit('bclick', item);
+		},
+		
+  }
+};
+</script>
+
+<style lang="scss">
+	.shop{
+		display: flex;
+	}
+	.user .content{
+		margin-bottom:10rpx  !important;
+	}
+	.shop .content{
+		margin-top: 18rpx;
+	}
+	.imageTextLine{
+		margin-left: 40rpx;
+	}
+	.imageTextLine image{
+		width: 50rpx;
+	}
+.l{
+	color:#d8ad77;
+}
+.mosowe-swiper{
+	width: 100%;
+	position: relative;
+	.uni-swiper {
+		height: inherit;
+		.uni-swiper-dot{
+			width: 20px !important;
+			height: 8px !important;
+			border-radius: 4px;
+		}
+		.item {
+			box-sizing: border-box;
+			.image{
+				width: 100%;
+				height: 100%;
+			}
+			// 支付宝
+			/* #ifdef MP-ALIPAY */
+			&.swiper-pyramid{
+				padding: 0 30rpx;
+			}
+			/* #endif */
+			
+			// 非支付宝
+			/* #ifndef MP-ALIPAY */
+			&.swiper-pyramid{
+				padding: 30rpx;
+			}
+			&.swiper-prev {
+				animation: prev .5s forwards;
+			}
+			&.swiper-next {
+				animation: next .5s forwards;
+			}
+			&.swiper-active {
+				animation: actives .5s forwards;
+			}
+			/* #endif */
+		}
+	}
+	// 纯图
+	.image{
+		width: 100%;
+		height: 100%;
+	}
+	// 纯文
+	.text{
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		width: 100%;
+		display: block;
+	}
+	// 图文一行
+	.imageTextLine {
+		height: 240rpx !important;
+		overflow: hidden;
+		width: 100%;
+		align-items: center;
+		.avatar{
+			flex: 0 0 50rpx;
+			height: 50rpx;
+			border-radius: 50%;
+			margin-right: 10rpx;
+		}
+		.content{
+			width: 260rpx !important;
+			// flex: 1;
+			white-space: nowrap;
+			text-overflow: ellipsis;
+			overflow: hidden;
+		}
+	}
+	.custom-indicator{
+		position: absolute;
+		right: 30rpx;
+		bottom: 30rpx;
+		background: rgba(0, 0, 0, 0.2);
+		width: 80rpx;
+		height: 40rpx;
+		line-height: 40rpx;
+		font-size: 24rpx;
+		color: #fff;
+		border-radius: 30rpx;
+		text-align: center;
+	}
+}
+@keyframes prev {
+	0%{
+		padding: 0;
+	}
+	100% {
+		padding: 30rpx;
+	}
+}
+@keyframes next {
+	0%{
+		padding: 0;
+	}
+	100% {
+		padding: 30rpx;
+	}
+}
+@keyframes actives {
+	0%{
+		padding: 30rpx;
+	}
+	100% {
+		padding: 0;
+	}
+}
+</style>

+ 421 - 0
components/newlist/nowList.vue

@@ -0,0 +1,421 @@
+<template>
+	<view class="other">
+		<view class="other-1">大家还在拼</view>
+		
+		<view class="preferred_item" v-for="item in recommendedlist" @click.stop="ToKaiTuan(item)">
+			<view class="flex_item" style="overflow: hidden;">
+				<view class="tlist-img">
+					<view class="leftImgIcon">AA团</view>
+					<!-- <view class="leftImgIcon" v-if="sid == 129">达人团</view> -->
+					<view class="img"><image :src="item.image" mode="scaleToFill"></image></view>
+				</view>
+				<view class="tlist-img " v-for="imgItem in item.images">
+					<view class="img"><image :src="imgItem" mode="scaleToFill"></image></view>
+				</view>
+			</view>
+			<view class="goods_name">
+				<view class="goods_title flex_item">
+					<view class="text">{{ item.min_people }}人团</view>
+					<view class="title">{{ item.title }}</view>
+				</view>
+				<view class="goods-height">
+					<!-- <view class="goods_num clamp">{{ item.info }}</view> -->
+					<view class="flex goods-peplo">
+						<view class="goods-tip flex_item">
+							<view class="peplo">库存剩{{ item.percent | parseIntTo }}%</view>
+							<view class="make">{{ item.mark }}</view>
+						</view>
+						<view class="right flex_item">
+							<image src="/static/icon/hot.png" mode="aspectFill"></image>
+							<text>已拼{{ item.sales }}份</text>
+						</view>
+					</view>
+				</view>
+				<view class="price flex">
+					<view class="price_list">
+						<view class="price-red">
+							<text>单人仅付:</text>
+							<text class="moneyIcon">¥</text>
+							<text class="money">{{ item.price }}</text>
+							<text class="moneyType">/{{ item.unit_name }}</text>
+							<!-- <text class="outMoney">¥{{ item.product_price }}</text> -->
+						</view>
+					</view>
+					<view class="img position-relative" @click.stop="ToKaiTuan(item)">去开团</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	props: {
+		recommendedlist: {
+			type: Array,
+			default: function() {
+				return {
+				};
+			}
+		}
+	},
+	data() {
+		return {};
+	},
+	filters: {
+		parseIntTo(percent) {
+			percent = +percent * 100;
+			if (percent % 1 === 0) {
+				return percent;
+			} else {
+				percent = percent.toFixed(1);
+				return percent;
+			}
+		}
+	},
+	methods: {
+		// 去开团
+		ToKaiTuan(item) {
+			console.log(8754847)
+			let id = item.id;
+			uni.navigateTo({
+				url: '/pages/product/productGroup?id=' + id
+			});
+		},
+	}
+};
+</script>
+
+<style lang="scss">
+.other{
+		.other-1{
+			font-size:27rpx;
+			color:#333333;
+			line-height: 55rpx;
+		}
+		
+		.preferred_item {
+			width: 100%;
+			height: 100%;
+			padding: 25rpx 25rpx;
+			position: relative;
+			background-color: #FFFFFF;
+			border-radius: 15rpx;
+			margin-bottom: 15rpx;
+			.tlist-img {
+				width: 225rpx;
+				position: relative;
+				margin-right: 15rpx;
+				.leftImgIcon {
+					position: absolute;
+					top: 0;
+					left: 0;
+					font-size: 22rpx;
+					font-family: PingFangSC;
+					color: rgba(148, 71, 34, 1);
+					background: rgba(254, 242, 111, 1);
+					z-index: 99;
+					border-radius: 5rpx;
+					padding: 5rpx 10rpx;
+				}
+				.img {
+					width: 210rpx;
+					height: 210rpx;
+					image {
+						width: 100%;
+						height: 100%;
+						border-radius: 20rpx;
+					}
+				}
+				.stock {
+					margin-top: 13rpx;
+					font-size: 26rpx;
+					background: #fff1ee;
+					width: 100%;
+					color: #fb4912;
+					padding: 6rpx 0;
+					border-radius: 5rpx;
+					justify-content: center;
+					align-items: center;
+					position: absolute;
+					left: 0;
+					bottom: 0;
+					.img {
+						width: 20rpx;
+						height: 20rpx;
+						flex-shrink: 0;
+					}
+					.stock-num {
+						padding-left: 7rpx;
+						font-size: 22rpx;
+						border-radius: 5rpx;
+						height: 32rpx;
+						line-height: 32rpx;
+					}
+				}
+			}
+			.goods_name {
+				.goods_title {
+					padding-top: 15rpx;
+					color:rgba(0,0,0,1);
+					// white-space: nowrap;
+					// overflow: hidden;
+					// text-overflow: ellipsis;
+					font-size:32rpx;
+					color: $font-color-dark;
+					// height: 70rpx;
+					align-items: baseline;
+					.text{
+						border-radius: 8rpx;
+						border: 2rpx solid #FF1A27;
+						color: #FF1A27;
+						padding:0rpx 10rpx;
+						font-size: 26rpx !important;
+						margin-right: 15rpx;
+						
+					}
+					.title {
+						width: 80%;
+						overflow : hidden;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						-webkit-line-clamp: 2;
+						-webkit-box-orient: vertical;
+					}
+				}
+				.goods-height {
+					min-height: 60rpx;
+				}
+				.goods_num {
+					font-size: 26rpx;
+					color: #8f8f97;
+					padding-bottom: 15rpx;
+				}
+				.goods-peplo {
+					height: 45rpx;
+					margin-top: 15rpx;
+					.right {
+						color:#8e8e8e;
+						font-size: 24rpx;
+						width:195rpx;
+						image {
+							width: 30rpx;
+							height: 33rpx;
+							margin-right: 15rpx;
+						}
+					}
+					.goods-tip {
+						.peplo {
+							background:linear-gradient(14deg,rgba(255,116,37,1),rgba(255,30,41,1));
+							padding: 5rpx 10rpx;
+							color: #ffffff;
+							border-top-left-radius:8rpx;
+							border-bottom-left-radius: 8rpx;
+						}
+						.make {
+							background-color: #fef26f;
+							color: #944722;
+							border-top-right-radius: 8rpx;
+							border-bottom-right-radius: 8rpx;
+						}
+						.make,
+						.peplo {
+							font-size: $font-sm;
+							padding: 5rpx 10rpx;
+						}
+					}
+				}
+				.price {
+					font-size: 28rpx;
+					position: relative;
+					padding-top: 15rpx;
+					.price_list {
+						.price-red {
+							font-size: 30rpx !important;
+							font-family: Source Han Sans CN;
+							color: rgba(253, 27, 42, 1);
+							font-size: $font-base;
+							font-weight: bold;
+							.moneyIcon {
+								font-weight: normal !important; 
+							}
+							.money {
+								font-size: 58rpx;
+							}
+							.moneyType {
+								font-weight: 400;
+							}
+							.outMoney {
+								font-weight: 400;
+								text-decoration: line-through;
+								color: rgba(142, 142, 142, 1);
+							}
+						}
+						.price-green {
+							color: #2dbd59;
+							font-size: 26rpx !important;
+							font-weight: bold;
+							text {
+								background: linear-gradient(45deg, rgba(21, 197, 52, 1), rgba(21, 197, 52, 1));
+								color: #ffffff;
+								padding: 0rpx 10rpx;
+								border-radius: 7rpx;
+								font-size: 24rpx !important;
+								margin-left: 15rpx;
+							}
+						}
+					}
+					.img {
+						width: 265rpx;
+						height: 74rpx;
+						line-height: 74rpx;
+						// background:linear-gradient(14deg,rgba(255,116,37,1),rgba(255,30,41,1));
+						background: linear-gradient(270deg, rgba(181,116,242, 1) 0%, rgba(139,86,254, 1) 100%);
+						border-radius: 99rpx;
+						color: #ffffff;
+						font-size: $font-lg;
+						text-align: center;
+					}
+					.img1{
+						background-color: #D3D3D3;
+						width: 265rpx;
+						height: 74rpx;
+						line-height: 74rpx;
+						border-radius: 99rpx;
+						color: #ffffff;
+						font-size: $font-lg;
+						text-align: center;
+					}
+					.tomorrow {
+						background: #29a66e;
+						color: #ffffff;
+						border-radius: 25rpx;
+						padding: 10rpx 25rpx;
+					}
+				}
+			}
+		}
+		
+		
+		.other-2{
+			width: 100%;
+			background:#ffffff;
+			padding: 10rpx 15rpx ;
+			border-radius: 20rpx;
+			.content-row{
+				padding: 10rpx 0;
+				.row-1{
+					width: 210rpx;
+					position: relative;
+					margin-right: 20rpx;
+					text-align: center;
+					.row-1-1{
+						text-align: center;
+						height:40rpx;
+						background:#fff1ee;
+						border-radius:6rpx;
+						font-size:22rpx;
+						font-weight:500;
+						color:#fb4912;
+						line-height:40rpx;
+						image{
+							width: 23rpx;
+							height: 23rpx;
+							margin-right: 5rpx;
+						}
+					}
+					.img1{
+						width:170rpx;
+						height:170rpx;
+						border-radius:10rpx;
+					}
+					.img2{
+						position: absolute;
+						top: 0;
+						left: 16rpx;
+						width:80rpx;
+						height:32rpx;
+						border-radius:5px;
+					}
+				}
+				.row-2{
+					padding: 20rpx 0 20rpx 0;
+					width:calc(100% - 210rpx);
+					position: relative;
+					
+					border-bottom: 1px solid #EAEAEA;
+					.word-1{
+						font-size:32rpx;
+						font-weight:bold;
+						color:#141821;
+						margin-left: 10rpx;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
+					}
+					.word-2{
+						margin-top: 10rpx;
+						font-size:24rpx;
+						color:#979797;
+					}
+					.word-3{
+						margin-top: 10rpx;
+						position: relative;
+						font-size:20rpx;
+						color:#ffffff;
+						image{
+							width: 235rpx;
+							height: 50rpx;
+						}
+						.word-3-1{
+							position: absolute;
+							top:8px;
+							left:2px;
+							width: 230rpx;
+							text-align: center;
+							.word-3-1-1{
+								display: inline-block;
+								color:#FD1B2A;
+								width: 50%;
+							}
+							
+						}
+					}
+					.word-4{
+						margin-top: 15rpx;
+						font-size:23rpx;
+						color:#fd1b2a;
+						margin-left: 10rpx;
+						text{
+							font-size:23rpx;
+							font-weight:bold;
+						}
+						.word-4-1{
+							font-size:36rpx;
+						}
+					}
+					.word-5{
+						margin-top: 15rpx;
+						font-size:21rpx;
+						color:#868686;
+					}
+					.button{
+						width:145rpx;
+						height:60rpx;
+						background:linear-gradient(14deg,#ff7425,#ff1e29);
+						border-radius:30rpx;
+						font-size:27rpx;
+						font-weight:bold;
+						color:#ffffff;
+						line-height:60rpx;
+						text-align: center;
+						
+						position: absolute;
+						bottom: 20rpx;
+						right: 0;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 71 - 0
components/returnButton.vue

@@ -0,0 +1,71 @@
+<template>
+	<view class="content" :style="{'bottom': btmSize + 'rpx'}">
+		<view class="retun-Box" @click="navTo('/pages/order/order?state=0')">
+			<image class="return-img" src=".././static/tabBar/dingdan.png"></image>
+			<view class="return-text">订单</view>
+		</view>
+		<view class="retun-Box" @click="GoHome">
+			<image class="return-img" src=".././static/tabBar/home.png" ></image>
+			<view class="return-text">首页</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	props: {
+		btmSize: {
+			type: Number,
+			default: 330
+		}
+	},
+	data() {
+		return {
+			
+		}
+	},
+	methods: {
+		navTo(url) {
+			uni.navigateTo({
+				url: url
+			})
+		},
+		GoHome() {
+			// uni.navigateTo({
+			// 	url: '/pages/groupBooking/index'
+			// })
+			uni.switchTab({
+				url: '/pages/index/index'
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.content {
+	position: fixed;
+	right: 0;
+	// bottom: 330rpx;
+	.retun-Box {
+		border-radius: 50%;
+		background: #FFFFFF;
+		width: 100rpx;
+		height: 100rpx;
+		margin-top: 30rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		box-shadow: 0 6rpx 20rpx #888888;
+		.return-img {
+			width: 40rpx;
+			height: 40rpx;
+		}
+		.return-text {
+			font-size: $font-sm;
+			margin-top: 8rpx;
+		}
+	}
+}
+</style>

+ 337 - 0
components/seckill/seckill.vue

@@ -0,0 +1,337 @@
+<template>
+	<view class="seckill-section m-t" v-if="list.length>0">
+		<view class="s-header">
+			<view class="f-left-icon">
+				<image src="https://hy.liuniu946.com/app/index/huo.png" mode=""></image>
+			</view>
+			<view class="tit-box"><text class="tit">9.9秒杀</text></view>
+			<view class="tip-box">
+				<text class="tip" v-if="status == 1">{{ showTime }}点场距结束</text>
+				<text class="tip" v-if="status == 2">距离下场开始</text>
+				<text class="tip" v-if="status == 0">当天活动已结束</text>
+				<uni-countdown v-if="status == 1 || status == 2" :show-day="false" :hour="stopTimeH" :minute="stopTimeM"
+					:second="stopTimeS"></uni-countdown>
+			</view>
+			<view class="textNav iconfont iconenter" @click="navTo('/pages/product/seckill')">更多</view>
+		</view>
+		<scroll-view class="floor-list" scroll-x>
+			<view class="scoll-wrapper position-relative" @click="navTo('/pages/product/seckill')">
+				<view v-for="(item, index) in list" :key="index" class="floor-item">
+					<!-- <view class="yuezhuan">
+						<image src="../../static/icon/yz.png"></image>
+						<text>约赚<br>¥{{ item.recommend }}</text>
+					</view> -->
+					<image class="list-image" :src="item.image" mode="aspectFill"></image>
+					<text class="title clamp">{{ item.title }}</text>
+					<view class="price-box">
+						<text class="price">¥{{ item.price }}</text>
+						<text class="price1">原价{{ item.ot_price }}</text>
+					</view>
+				</view>
+				<view v-if="list.length == 0" class="floor-item item ">
+					<image class="list-image" mode="aspectFill"></image>
+					<text class="title clamp"></text>
+					<text class="price"></text>
+				</view>
+				<view v-if="list.length == 0" class="noGoodsBg">
+					<view>敬请期待</view>
+				</view>
+			</view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	import uniCountdown from '@/components/uni-countdown/uni-countdown.vue';
+	import {
+		getSeckillList,
+		getSeckillClass
+	} from '@/api/product.js';
+	import {
+		timeComputed
+	} from '@/utils/rocessor.js';
+	export default {
+		components: {
+			uniCountdown
+		},
+		data() {
+			return {
+				list: [],
+				page: 1,
+				limit: 10,
+				showTime: '', //显示的时间
+				showTImeId: '', //显示时间id用于查询数据
+				stopTimeH: 0,
+				stopTimeM: 0,
+				stopTimeS: 0,
+				// 判断是否所有活动已经结束
+				stop: false, //活动是否已经结束
+				show: false, //是否显示活动
+				status: 0 //获取状态值1为有活动开始中 2为活动未开始 0为活动已经结束
+			};
+		},
+		created: function(e) {
+			// 载入分类
+			this.getClass();
+		},
+		methods: {
+			navTo(url) {
+				uni.navigateTo({
+					url
+				});
+			},
+			getList() {
+				getSeckillList({
+							page: this.page,
+							limit: this.limit
+						},
+						this.showTImeId
+					)
+					.then(e => {
+						this.list = e.data;
+						console.log(this.list,'ss');
+					})
+					.catch(e => {
+						console.log(e);
+					});
+			},
+			getClass() {
+				let obj = this;
+				getSeckillClass({})
+					.then(({
+						data
+					}) => {
+						let arr = data.seckillTime;
+						// 用于判断是否有数据
+						let showDate = false;
+						for (var i = 0; i < arr.length; i++) {
+							let ar = arr[i];
+							if (ar.status === 1 || ar.status === 2) {
+								obj.status = ar.status;
+								// 保存要显示的场次时间
+								obj.showTime = ar.time;
+								// 保存要显示活动商品的id
+								obj.showTImeId = ar.id;
+								// 保存当前状态值
+								// 计算倒计时时间
+								if (ar.status === 1) {
+									obj.timeComputed(ar.stop * 1000);
+								} else {
+									// 获取需要开始
+									let arTime = ar.time.split(':');
+									let h = arTime[0];
+									let m = arTime[1];
+									let time = new Date();
+									// 设置时间
+									time.setHours(h, m, 0);
+									obj.timeComputed(time.getTime());
+								}
+								// 获取商品列表
+								obj.getList();
+								// 保存当前有活动在举行
+								showDate = true;
+								// 任务查询结束跳出循环
+								break;
+							}
+						}
+						// 判断是否有活动
+						if (arr.length > 0) {
+							obj.show = true;
+						}
+						// 判断今天活动是否已经全部结束
+						if (!showDate) {
+							// 保存活动结束最后一个小时的活动商品
+							obj.showTImeId = arr[arr.length - 1].id;
+							// 活动已经结束
+							obj.status = 0;
+							// 获取结束时的商品
+							obj.getList();
+							console.log(obj.status);
+						}
+						// 如果所有场次均已经结束
+					})
+					.catch(e => {
+						uni.showModal({
+							title: JSON.stringify(e)
+						});
+					});
+			},
+			// 计算倒计时时间
+			timeComputed(da) {
+				let obj = this;
+				let stopTime = timeComputed(da)
+				obj.stopTimeH = stopTime.hours;
+				obj.stopTimeM = stopTime.minutes;
+				obj.stopTimeS = stopTime.seconds;
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	
+	/* 秒杀专区 */
+	.yuezhuan{
+		text-align: center;
+		z-index: 999;
+		position: absolute;
+		text-align: center;
+		width:30%;
+		
+	}
+	.yuezhuan image{
+		margin-top: -12rpx;
+		float: right;
+		width: 80rpx;
+		height: 80rpx;
+	}
+	.yuezhuan text{
+		margin-top: 8rpx;
+		text-align: center;
+		font-size: 22rpx;
+		color: #AD0B04;
+		margin-left: 80rpx;
+		position: absolute;
+	}
+	.seckill-section {
+		padding: 4rpx 30rpx 24rpx;
+
+		.s-header {
+			display: flex;
+			align-items: center;
+			height: 92rpx;
+			line-height: 1;
+
+			.tit-box {
+				flex-shrink: 0;
+			}
+
+			.tit {
+				@extend %font-title;
+			}
+
+			.f-left-icon {
+				// @extend %f-left-icon;
+				margin-right: 5rpx;
+				width: 37rpx;
+				height: 36rpx;
+
+				image {
+					width: 100%;
+					height: 100%;
+				}
+			}
+
+			.textNav {
+				line-height: 1;
+				padding: 15rpx 0;
+				flex-shrink: 0;
+				flex-grow: 1;
+				min-width: 100rpx;
+			}
+
+			.tip-box {
+				flex-grow: 1;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+			}
+
+			.tip {
+				font-size: $font-sm;
+				color: #FF4C4C;
+				font-weight: bold;
+				padding-left: 10rpx;
+				padding-right: 10rpx;
+			}
+
+			.timer {
+				display: inline-block;
+				width: 40rpx;
+				height: 36rpx;
+				text-align: center;
+				line-height: 36rpx;
+				margin-right: 14rpx;
+				font-size: $font-sm + 2rpx;
+				color: #fff;
+				border-radius: 2px;
+				background: rgba(0, 0, 0, 0.8);
+			}
+
+			.iconenter {
+				font-size: $font-sm;
+				color: $font-color-light;
+				flex: 1;
+				text-align: right;
+			}
+		}
+
+		.floor-list {
+			white-space: nowrap;
+			background-color: white;
+			padding: 20rpx;
+			border-radius: 5rpx;
+			box-shadow: $box-shadow;
+		}
+
+		.scoll-wrapper {
+			
+			display: flex;
+			justify-content: left;
+			align-items: center;
+
+			.noGoodsBg {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				height: 100%;
+				position: absolute;
+				top: 0;
+				left: 0;
+				width: 100%;
+				color: $font-color-light;
+			}
+			
+			.floor-item {
+				
+				display: flex;
+				justify-content: center;
+				flex-direction: column;
+				width: 200rpx;
+				height: 300rpx;
+				margin: 0 10rpx;
+				background: #FFFFFF;
+				border: 3rpx solid #F0E6CF;
+				border-radius: 10rpx;
+
+				.list-image {
+					margin: 10rpx auto;
+					width: 180rpx;
+					height: 180rpx;
+					border-radius: 6rpx;
+				}
+				.clamp{
+					margin-left: 10rpx;
+				}
+				.price-box{
+					display: flex;
+				}
+				.price {
+					color: $color-red;
+				}
+				.price1{
+					font-size: 22rpx;
+					font-weight: 500;
+					text-decoration: line-through;
+					color: #969696;
+					line-height: 26px;
+				}
+			}
+			.item{
+				display: flex;
+				justify-content: center;
+				margin: 0 auto;
+			}
+		}
+	}
+</style>

+ 196 - 0
components/share.vue

@@ -0,0 +1,196 @@
+<template>
+	<view v-if="show" class="mask" @click="toggleMask" @touchmove.stop.prevent="stopPrevent" :style="{ backgroundColor: backgroundColor }">
+		<view
+			class="mask-content"
+			@click.stop.prevent="stopPrevent"
+			:style="[
+				{
+					height: config.height,
+					transform: transform
+				}
+			]"
+		>
+			<scroll-view class="view-content" scroll-y>
+				<view class="share-header">分享到</view>
+				<view class="share-list">
+					<view v-for="(item, index) in shareList" :key="index" class="share-item" @click="shareToFriend(item.text)">
+						<image class="itemImage" :src="item.icon" mode=""></image>
+						<text class="itemText">{{ item.text }}</text>
+					</view>
+				</view>
+			</scroll-view>
+			<view class="bottomButtom b-t" @click="toggleMask">取消</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			transform: 'translateY(50vh)',
+			timer: 0,
+			backgroundColor: 'rgba(0,0,0,0)',
+			show: false,
+			config: {}
+		};
+	},
+	props: {
+		contentHeight: {
+			type: Number,
+			default: 0
+		},
+		//是否是tabbar页面
+		hasTabbar: {
+			type: Boolean,
+			default: false
+		},
+		shareList: {
+			type: Array,
+			default: function() {
+				return [];
+			}
+		}
+	},
+	created() {
+		const height = uni.upx2px(this.contentHeight) + 'px';
+		this.config = {
+			height: height,
+			transform: `translateY(${height})`,
+			backgroundColor: 'rgba(0,0,0,.4)'
+		};
+		this.transform = this.config.transform;
+	},
+	methods: {
+		toggleMask() {
+			//防止高频点击
+			if (this.timer == 1) {
+				return;
+			}
+			this.timer = 1;
+			setTimeout(() => {
+				this.timer = 0;
+			}, 500);
+
+			if (this.show) {
+				this.transform = this.config.transform;
+				this.backgroundColor = 'rgba(0,0,0,0)';
+				setTimeout(() => {
+					this.show = false;
+					this.hasTabbar && uni.showTabBar();
+				}, 200);
+				return;
+			}
+
+			this.show = true;
+			//等待mask重绘完成执行
+			if (this.hasTabbar) {
+				uni.hideTabBar({
+					success: () => {
+						setTimeout(() => {
+							this.backgroundColor = this.config.backgroundColor;
+							this.transform = 'translateY(0px)';
+						}, 10);
+					}
+				});
+			} else {
+				setTimeout(() => {
+					this.backgroundColor = this.config.backgroundColor;
+					this.transform = 'translateY(0px)';
+				}, 10);
+			}
+		},
+		//防止冒泡和滚动穿透
+		stopPrevent() {},
+		//分享操作
+		shareToFriend(type) {
+			this.$api.msg(`分享给${type}`);
+			this.toggleMask();
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.mask {
+	position: fixed;
+	left: 0;
+	top: 0;
+	right: 0;
+	bottom: 0;
+	display: flex;
+	justify-content: center;
+	align-items: flex-end;
+	z-index: 998;
+	transition: 0.3s;
+	.bottomButtom {
+		position: absolute;
+		left: 0;
+		bottom: 0;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		width: 100%;
+		height: 90rpx;
+		background: #fff;
+		z-index: 9;
+		font-size: $font-base + 2rpx;
+		color: $font-color-dark;
+	}
+}
+.mask-content {
+	width: 100%;
+	height: 580rpx;
+	transition: 0.3s;
+	background: #fff;
+	&.has-bottom {
+		padding-bottom: 90rpx;
+	}
+	.view-content {
+		height: 100%;
+	}
+}
+.share-header {
+	height: 110rpx;
+	font-size: $font-base + 2rpx;
+	color: font-color-dark;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	padding-top: 10rpx;
+	&:before,
+	&:after {
+		content: '';
+		width: 240rpx;
+		heighg: 0;
+		border-top: 1px solid $border-color-base;
+		transform: scaleY(0.5);
+		margin-right: 30rpx;
+	}
+	&:after {
+		margin-left: 30rpx;
+		margin-right: 0;
+	}
+}
+.share-list {
+	display: flex;
+	flex-wrap: wrap;
+}
+.share-item {
+	min-width: 33.33%;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+	height: 180rpx;
+	.itemImage {
+		width: 80rpx;
+		height: 80rpx;
+		margin-bottom: 16rpx;
+	}
+	.itemText {
+		font-size: $font-base;
+		color: $font-color-base;
+	}
+}
+</style>

+ 218 - 0
components/ss-calendar/ss-calendar.vue

@@ -0,0 +1,218 @@
+<template>
+	<view class="calendar__wrap">
+		<view class="header">
+			<view class="current-date">{{ currentDate }}</view>
+		</view>
+		<view class="body">
+			<view class="weeks">
+				<view class="week__item" v-for="week in weeks" :key="week">{{ week }}</view>
+			</view>
+			<view class="day__list">
+				<view class="day__item" v-for="(item, index) in dateData" :key="index">
+					<view class="checked-box" :class="[checksClass]" v-if="item === 'checked'">
+						<text class="checked iconfont iconfavor" v-if="!checksIcon"></text>
+						<image v-else :src="checksIcon" mode="aspectFit"></image>
+						<view class="check_text" v-if="checkTextShow">{{ dayLoad(index) }}</view>
+					</view>
+					<text class="current-box" :class="[item === day ? (actionClass ? actionClass : 'current') : '']" v-else>{{ item }}</text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	props: {
+		//选中的日期数据
+		checks: {
+			type: Array,
+			default() {
+				// 例子[1,2,3,4],表示本月1,2,3,4号4天被选中
+				return [];
+			}
+		},
+		// 选中物品的样式类
+		checksClass: {
+			type: String,
+			default: ''
+		},
+		// 选中时图标
+		checksIcon: {
+			type: String
+		},
+		// 选中时是否显示文字
+		checkTextShow: {
+			type: Boolean, 
+			default: false
+		},
+		// 表示当前日期的样式
+		actionClass: {
+			type: String,
+			default: ''
+		}
+	},
+	data() {
+		const { year, month, day } = this.getDate();
+		const dateData = this.getDateData(year, month);
+		const noDay = ( new Date(year,month-1,1)).getDay();
+		return {
+			year,
+			month,
+			day,
+			dateData,
+			noDay,//本月1号是星期几
+			weeks: ['日', '一', '二', '三', '四', '五', '六'],
+		};
+	},
+	computed: {
+		// 获取当前日期
+		currentDate() {
+			return `${this.year}-${this.format(this.month)}`;
+		}
+	},
+	watch: {
+		checks(val) {
+			const { year, month } = this.getDate();
+			const dateData = this.getDateData(year, month);
+			// 保存当前月份信息
+			this.dateData = dateData;
+		},
+	},
+	methods: {
+		// 重新计算时间
+		dayLoad: function(value) {
+			return value + 1 - this.noDay;
+		},
+		// 获取当前日期
+		getDate(current) {
+			const date = current ? new Date(current) : new Date();
+			const year = date.getFullYear();
+			// 月份值默认从0开始
+			const month = date.getMonth() + 1;
+			const day = date.getDate();
+			return {
+				year,
+				month,
+				day
+			};
+		},
+		// 日期处理
+		getDateData(year, month) {
+			// 新增月份时需要减少1个月
+			const date = new Date(year,month-1,1);
+			const firstDayWeek = date.getDay();
+			const data = [...this.getEmptys(firstDayWeek), ...this.getDays(firstDayWeek)];
+			return data;
+		},
+		// 查询日期列表有几个空格
+		getEmptys(count) {
+			let arr = [];
+			if (count) {
+				for (let i = 0; i < count; i++) {
+					arr.push('');
+				}
+			}
+			return arr;
+		},
+		getLastDay() {
+			let { year, month } = this.getDate();
+			month += 1;
+			if (month > 11) {
+				year += 1;
+				month = 1;
+			}
+			let firstDayTimeStamp = new Date(`${year}/${month}/1`).getTime();
+			let oneDayTimeStamp = 24 * 60 * 60 * 1000;
+			let lastDay = new Date(firstDayTimeStamp - oneDayTimeStamp).getDate();
+			return lastDay;
+		},
+		getDays() {
+			const lastDay = this.getLastDay();
+			const days = [];
+			for (let i = 1; i <= lastDay; i++) {
+				days.push(this.checks.includes(i) ? 'checked' : i);
+			}
+			return days;
+		},
+		format(num) {
+			return num < 10 ? `0${num}` : num;
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.calendar__wrap {
+	background-color: #fff;
+	color: $uni-text-color;
+	.header {
+		padding: 0 24rpx;
+		.current-date {
+			text-align: center;
+			font-size: $font-lg + 2rpx;
+			// border-bottom: 2rpx solid #eee;
+			padding: 32rpx 0;
+		}
+	}
+	.body {
+		.weeks {
+			display: flex;
+			font-size: $font-lg;
+			padding: 10rpx 0;
+			background-color: #f4f7ff;
+			.week__item {
+				flex: 1;
+				text-align: center;
+			}
+		}
+		.day__list {
+			display: flex;
+			flex-wrap: wrap;
+			.day__item {
+				display: flex;
+				justify-content: center;
+				width: 14.285%;
+				text-align: center;
+				padding: 30rpx 0;
+				font-size: 34rpx;
+				color: $font-color-light;
+				.checked-box,
+				.current-box {
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					border-radius: 100%;
+					box-sizing: border-box;
+					position: relative;
+				}
+				image,
+				.checked-box,
+				.current-box,
+				.check_text {
+					width: 56rpx;
+					height: 56rpx;
+					line-height: 56rpx;
+				}
+				image,
+				.check_text {
+					position: absolute;
+					top: 0;
+					left: 0;
+				}
+				.checked {
+					font-size: 40rpx;
+					background-color: #3f9dff;
+					color: #fff;
+				}
+				.current {
+					padding: 12rpx;
+					background-color: $background-color;
+					color: #fff;
+					font-size: 28rpx;
+				}
+			}
+		}
+	}
+}
+</style>

+ 300 - 0
components/store/store.vue

@@ -0,0 +1,300 @@
+<template>
+	<view class="seckill-section m-t" v-if="list">
+		<view class="s-header">
+			<view class="f-left-icon">
+				<image src="https://hy.liuniu946.com/app/index/d.png" mode=""></image>
+			</view>
+			<view class="tit-box"><text class="tit">好店好券</text></view>
+			<view class="tip-box">
+				<text class="tip" >超值体验</text>
+			</view>
+		</view>
+		<view class="box">
+			<view class="title">
+				 最强商家联盟<br>	
+				<text class="text">买到就是赚到</text>
+			</view>
+			<view class="textNav iconfont iconenter"   @click="navToo('/pages/store/index')" ></view>
+		</view>
+		<scroll-view class="floor-list" scroll-x>
+			<view :style="{width:th}" class="scoll-wrapper" >
+				<view v-for="(item, index) in list" :key="index" class="floor-item" @click="navTo('/pages/store/shopDetail?id=' + item.id)">
+					<image class="list-image" :src="item.image" mode="aspectFill"></image>
+					<text class="title clamp">{{ item.name }}</text>
+					<view class="price-box" v-if="item.cou.lenght">
+						<image src="https://hy.liuniu946.com/app/index/yhj.png" mode=""></image>
+						<view  class="price">
+							{{ item.cou[0].coupon_price }}元代金卷
+						</view>
+						<view class="price_1">
+						   ¥{{ item.cou[0].use_min_price }}
+						</view>
+					</view>
+				</view>
+			</view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	import uniCountdown from '@/components/uni-countdown/uni-countdown.vue';
+	import {
+		sycoustore,
+	} from '@/api/order.js';
+	import {
+		timeComputed
+	} from '@/utils/rocessor.js';
+	export default {
+		components: {
+			uniCountdown
+		},
+		data() {
+			return {
+				list: [],
+				page: 1,
+				limit: 10,
+				showTime: '', //显示的时间
+				showTImeId: '', //显示时间id用于查询数据
+				stopTimeH: 0,
+				stopTimeM: 0,
+				stopTimeS: 0,
+				th:'100%'
+			};
+		},
+		created: function(e) {
+			// 载入数据
+			this.getList();
+		},
+		methods: {
+			navTo(url) {
+				uni.navigateTo({
+					url
+				});
+			},
+			navToo(url) {
+				uni.switchTab({
+					url
+				})
+			},
+			getList() {
+				sycoustore({
+							page: this.page,
+							limit: this.limit
+						},
+						this.showTImeId
+					)
+					.then(e => {
+						this.list = e.data.list;
+						console.log(e.data.list,'999999999');
+						if(this.list.length>3){
+							this.th=this.list.length*230+'rpx'
+						}
+						console.log(this.list.length,'ss');
+					})
+					.catch(e => {
+						console.log(e);
+					});
+			},
+			
+		}
+	};
+</script>
+
+<style lang="scss">
+	
+	/*优惠券专区 */
+	.yuezhuan{
+		
+		text-align: center;
+		z-index: 999;
+		position: absolute;
+		text-align: center;
+		width:30%;
+		
+	}
+	.seckill-section {
+		position: relative;
+		margin-top: 20rpx;
+		background-color: #fff;
+		padding: 4rpx 30rpx 24rpx;
+
+		.s-header {
+			display: flex;
+			align-items: center;
+			height: 92rpx;
+			line-height: 1;
+
+			.tit-box {
+				flex-shrink: 0;
+			}
+			.tit {
+				@extend %font-title;
+			}
+
+			.f-left-icon {
+				// @extend %f-left-icon;
+				margin-right: 5rpx;
+				width: 37rpx;
+				height: 36rpx;
+
+				image {
+					width: 100%;
+					height: 100%;
+				}
+			}
+			.tip-box {
+				flex-grow: 1;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+			}
+
+			.tip {
+				font-size: $font-sm;
+				color:#95A0B1;
+				font-weight: bold;
+				padding-left: 10rpx;
+				padding-right: 10rpx;
+			}
+
+			.timer {
+				display: inline-block;
+				width: 40rpx;
+				height: 36rpx;
+				text-align: center;
+				line-height: 36rpx;
+				margin-right: 14rpx;
+				font-size: $font-sm + 2rpx;
+				color: #fff;
+				border-radius: 2px;
+				background: rgba(0, 0, 0, 0.8);
+			}
+
+			.iconenter {
+				font-size: $font-sm;
+				color: $font-color-light;
+				flex: 1;
+				text-align: right;
+			}
+		}
+		.box{
+			position: absolute;
+			width:92%;
+			display: flex;
+			color: #fff;
+			height: 220rpx;
+			border-top-right-radius: 20rpx;
+			border-top-left-radius: 20rpx;
+			background: linear-gradient(to right, #F75022, #FF8B6C);
+			.title{
+				padding: 20rpx;
+				font-size:38rpx;
+				margin-left: 20rpx;
+				
+				.text{
+					font-size:28rpx ;
+				}
+			}
+			.textNav {
+				text-align: center;
+				margin-left: 40%;
+				margin-top:40rpx;
+				line-height: 1;
+				padding: 15rpx 0;
+				flex-shrink: 0;
+				flex-grow: 1;
+				min-width: 100rpx;
+			}
+			}
+
+		.floor-list {
+		
+			margin-top: 120rpx;
+			white-space: nowrap;
+			background-color:#F4F4F4;
+			padding: 20rpx;
+			border-bottom-right-radius: 20rpx;
+			border-bottom-left-radius: 20rpx;
+		}
+
+		.scoll-wrapper {
+			z-index: 99;
+			top: -80rpx;
+			border-radius: 20rpx;
+			padding: 20rpx;
+			background-color: #fff;
+			display: flex;
+			justify-content: left;
+			align-items: center;
+
+			.noGoodsBg {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				height: 100%;
+				position: absolute;
+				top: 0;
+				left: 0;
+				width: 100%;
+				color: $font-color-light;
+			}
+			
+			.floor-item {
+				
+				display: flex;
+				justify-content: center;
+				flex-direction: column;
+				width: 200rpx;
+				height: 300rpx;
+				/* #ifdef MP-WEIXIN */
+				height: 340rpx;
+				/* #endif */
+				margin: 0 10rpx;
+				background: #FFFFFF;
+				border: 3rpx solid #F0E6CF;
+				border-radius: 10rpx;
+
+				.list-image {
+					margin: 10rpx auto;
+					width: 180rpx;
+					height: 180rpx;
+					border-radius: 6rpx;
+				}
+				.clamp{
+					margin-left: 10rpx;
+				}
+				/* #ifdef MP-WEIXIN */
+				.price-box{
+					overflow: hidden;
+				}
+				/* #endif */
+				.price-box image{
+					margin-top: 4rpx;
+					margin-left:8rpx;
+					width: 180rpx;
+					height: 40rpx;
+				}
+				
+				.price {
+					text-align: center;
+					margin-top: -40rpx;
+					margin-left: 20rpx;
+					font-size:20rpx !important;
+					position: absolute;
+					color:#fff;
+				}
+				.price_1{
+					font-size: 22rpx;
+					font-weight: 500;
+					color:#FF4C4C;
+					line-height: 26px;
+				}
+			}
+			.item{
+				display: flex;
+				justify-content: center;
+				margin: 0 auto;
+			}
+		}
+	}
+</style>

+ 224 - 0
components/sx/index.vue

@@ -0,0 +1,224 @@
+<template>
+	<view class="seckill-section m-t" v-if="list.length>0">
+		<view class="s-header">
+			<view class="f-left-icon">
+				<image src="https://hy.liuniu946.com/app/index/huo.png" mode=""></image>
+			</view>
+			<view class="tit-box"><text class="tit">今日上新</text></view>
+			<view class="textNav iconfont iconenter" @click="navTo('/pages/index/sx')">更多</view>
+		</view>
+		<scroll-view class="floor-list" scroll-x>
+			<view class="scoll-wrapper position-relative" >
+				<view v-for="(item, index) in list" :key="index" class="floor-item" @click="navTo('/pages/product/product?id=' + item.id + '&isVip=' + 0)">
+					<image class="list-image" :src="item.image" mode="aspectFill"></image>
+					<text class="title clamp">{{ item.store_name }}</text>
+					<view class="price-box">
+						<text class="price">¥{{ item.price }}</text>
+						<!-- <text class="price1">原价{{ item.ot_price }}</text> -->
+					</view>
+				</view>
+			</view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	import {
+		getSeckillList,
+		getSeckillClass
+	} from '@/api/product.js';
+	import {
+		timeComputed
+	} from '@/utils/rocessor.js';
+	export default {
+		props: {
+			list: {
+			    type: Array,
+			    default () {
+			      return []
+			    }
+			  },
+		},
+		data() {
+			return {
+			};
+		},
+		created: function(e) {
+		},
+		methods: {
+			navTo(url) {
+				uni.navigateTo({
+					url
+				});
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	
+	/* 秒杀专区 */
+	.yuezhuan{
+		text-align: center;
+		z-index: 999;
+		position: absolute;
+		text-align: center;
+		width:30%;
+		
+	}
+	.yuezhuan image{
+		margin-top: -12rpx;
+		float: right;
+		width: 80rpx;
+		height: 80rpx;
+	}
+	.yuezhuan text{
+		margin-top: 8rpx;
+		text-align: center;
+		font-size: 22rpx;
+		color: #AD0B04;
+		margin-left: 80rpx;
+		position: absolute;
+	}
+	.seckill-section {
+		padding: 4rpx 30rpx 24rpx;
+
+		.s-header {
+			display: flex;
+			align-items: center;
+			height: 92rpx;
+			line-height: 1;
+
+			.tit-box {
+				flex-shrink: 0;
+			}
+
+			.tit {
+				@extend %font-title;
+			}
+
+			.f-left-icon {
+				// @extend %f-left-icon;
+				margin-right: 5rpx;
+				width: 37rpx;
+				height: 36rpx;
+
+				image {
+					width: 100%;
+					height: 100%;
+				}
+			}
+
+			.textNav {
+				line-height: 1;
+				padding: 15rpx 0;
+				flex-shrink: 0;
+				flex-grow: 1;
+				min-width: 100rpx;
+			}
+
+			.tip-box {
+				flex-grow: 1;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+			}
+
+			.tip {
+				font-size: $font-sm;
+				color: #FF4C4C;
+				font-weight: bold;
+				padding-left: 10rpx;
+				padding-right: 10rpx;
+			}
+
+			.timer {
+				display: inline-block;
+				width: 40rpx;
+				height: 36rpx;
+				text-align: center;
+				line-height: 36rpx;
+				margin-right: 14rpx;
+				font-size: $font-sm + 2rpx;
+				color: #fff;
+				border-radius: 2px;
+				background: rgba(0, 0, 0, 0.8);
+			}
+
+			.iconenter {
+				font-size: $font-sm;
+				color: $font-color-light;
+				flex: 1;
+				text-align: right;
+			}
+		}
+
+		.floor-list {
+			white-space: nowrap;
+			background-color: white;
+			padding: 20rpx;
+			border-radius: 5rpx;
+			box-shadow: $box-shadow;
+		}
+
+		.scoll-wrapper {
+			
+			display: flex;
+			justify-content: left;
+			align-items: center;
+
+			.noGoodsBg {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				height: 100%;
+				position: absolute;
+				top: 0;
+				left: 0;
+				width: 100%;
+				color: $font-color-light;
+			}
+			
+			.floor-item {
+				
+				display: flex;
+				justify-content: center;
+				flex-direction: column;
+				width: 200rpx;
+				height: 300rpx;
+				margin: 0 10rpx;
+				background: #FFFFFF;
+				border: 3rpx solid #F0E6CF;
+				border-radius: 10rpx;
+
+				.list-image {
+					margin: 10rpx auto;
+					width: 180rpx;
+					height: 180rpx;
+					border-radius: 6rpx;
+				}
+				.clamp{
+					margin-left: 10rpx;
+				}
+				.price-box{
+					display: flex;
+				}
+				.price {
+					color: $color-red;
+				}
+				.price1{
+					font-size: 22rpx;
+					font-weight: 500;
+					text-decoration: line-through;
+					color: #969696;
+					line-height: 26px;
+				}
+			}
+			.item{
+				display: flex;
+				justify-content: center;
+				margin: 0 auto;
+			}
+		}
+	}
+</style>

+ 1201 - 0
components/tki-qrcode/qrcode.js

@@ -0,0 +1,1201 @@
+let QRCode = {};
+(function () {
+    /**
+     * 获取单个字符的utf8编码
+     * unicode BMP平面约65535个字符
+     * @param {num} code
+     * return {array}
+     */
+    function unicodeFormat8(code) {
+        // 1 byte
+        var c0, c1, c2;
+        if (code < 128) {
+            return [code];
+            // 2 bytes
+        } else if (code < 2048) {
+            c0 = 192 + (code >> 6);
+            c1 = 128 + (code & 63);
+            return [c0, c1];
+            // 3 bytes
+        } else {
+            c0 = 224 + (code >> 12);
+            c1 = 128 + (code >> 6 & 63);
+            c2 = 128 + (code & 63);
+            return [c0, c1, c2];
+        }
+    }
+    /**
+     * 获取字符串的utf8编码字节串
+     * @param {string} string
+     * @return {array}
+     */
+    function getUTF8Bytes(string) {
+        var utf8codes = [];
+        for (var i = 0; i < string.length; i++) {
+            var code = string.charCodeAt(i);
+            var utf8 = unicodeFormat8(code);
+            for (var j = 0; j < utf8.length; j++) {
+                utf8codes.push(utf8[j]);
+            }
+        }
+        return utf8codes;
+    }
+    /**
+     * 二维码算法实现
+     * @param {string} data              要编码的信息字符串
+     * @param {num} errorCorrectLevel 纠错等级
+     */
+    function QRCodeAlg(data, errorCorrectLevel) {
+        this.typeNumber = -1; //版本
+        this.errorCorrectLevel = errorCorrectLevel;
+        this.modules = null; //二维矩阵,存放最终结果
+        this.moduleCount = 0; //矩阵大小
+        this.dataCache = null; //数据缓存
+        this.rsBlocks = null; //版本数据信息
+        this.totalDataCount = -1; //可使用的数据量
+        this.data = data;
+        this.utf8bytes = getUTF8Bytes(data);
+        this.make();
+    }
+    QRCodeAlg.prototype = {
+        constructor: QRCodeAlg,
+        /**
+         * 获取二维码矩阵大小
+         * @return {num} 矩阵大小
+         */
+        getModuleCount: function () {
+            return this.moduleCount;
+        },
+        /**
+         * 编码
+         */
+        make: function () {
+            this.getRightType();
+            this.dataCache = this.createData();
+            this.createQrcode();
+        },
+        /**
+         * 设置二位矩阵功能图形
+         * @param  {bool} test 表示是否在寻找最好掩膜阶段
+         * @param  {num} maskPattern 掩膜的版本
+         */
+        makeImpl: function (maskPattern) {
+            this.moduleCount = this.typeNumber * 4 + 17;
+            this.modules = new Array(this.moduleCount);
+            for (var row = 0; row < this.moduleCount; row++) {
+                this.modules[row] = new Array(this.moduleCount);
+            }
+            this.setupPositionProbePattern(0, 0);
+            this.setupPositionProbePattern(this.moduleCount - 7, 0);
+            this.setupPositionProbePattern(0, this.moduleCount - 7);
+            this.setupPositionAdjustPattern();
+            this.setupTimingPattern();
+            this.setupTypeInfo(true, maskPattern);
+            if (this.typeNumber >= 7) {
+                this.setupTypeNumber(true);
+            }
+            this.mapData(this.dataCache, maskPattern);
+        },
+        /**
+         * 设置二维码的位置探测图形
+         * @param  {num} row 探测图形的中心横坐标
+         * @param  {num} col 探测图形的中心纵坐标
+         */
+        setupPositionProbePattern: function (row, col) {
+            for (var r = -1; r <= 7; r++) {
+                if (row + r <= -1 || this.moduleCount <= row + r) continue;
+                for (var c = -1; c <= 7; c++) {
+                    if (col + c <= -1 || this.moduleCount <= col + c) continue;
+                    if ((0 <= r && r <= 6 && (c == 0 || c == 6)) || (0 <= c && c <= 6 && (r == 0 || r == 6)) || (2 <= r && r <= 4 && 2 <= c && c <= 4)) {
+                        this.modules[row + r][col + c] = true;
+                    } else {
+                        this.modules[row + r][col + c] = false;
+                    }
+                }
+            }
+        },
+        /**
+         * 创建二维码
+         * @return {[type]} [description]
+         */
+        createQrcode: function () {
+            var minLostPoint = 0;
+            var pattern = 0;
+            var bestModules = null;
+            for (var i = 0; i < 8; i++) {
+                this.makeImpl(i);
+                var lostPoint = QRUtil.getLostPoint(this);
+                if (i == 0 || minLostPoint > lostPoint) {
+                    minLostPoint = lostPoint;
+                    pattern = i;
+                    bestModules = this.modules;
+                }
+            }
+            this.modules = bestModules;
+            this.setupTypeInfo(false, pattern);
+            if (this.typeNumber >= 7) {
+                this.setupTypeNumber(false);
+            }
+        },
+        /**
+         * 设置定位图形
+         * @return {[type]} [description]
+         */
+        setupTimingPattern: function () {
+            for (var r = 8; r < this.moduleCount - 8; r++) {
+                if (this.modules[r][6] != null) {
+                    continue;
+                }
+                this.modules[r][6] = (r % 2 == 0);
+                if (this.modules[6][r] != null) {
+                    continue;
+                }
+                this.modules[6][r] = (r % 2 == 0);
+            }
+        },
+        /**
+         * 设置矫正图形
+         * @return {[type]} [description]
+         */
+        setupPositionAdjustPattern: function () {
+            var pos = QRUtil.getPatternPosition(this.typeNumber);
+            for (var i = 0; i < pos.length; i++) {
+                for (var j = 0; j < pos.length; j++) {
+                    var row = pos[i];
+                    var col = pos[j];
+                    if (this.modules[row][col] != null) {
+                        continue;
+                    }
+                    for (var r = -2; r <= 2; r++) {
+                        for (var c = -2; c <= 2; c++) {
+                            if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {
+                                this.modules[row + r][col + c] = true;
+                            } else {
+                                this.modules[row + r][col + c] = false;
+                            }
+                        }
+                    }
+                }
+            }
+        },
+        /**
+         * 设置版本信息(7以上版本才有)
+         * @param  {bool} test 是否处于判断最佳掩膜阶段
+         * @return {[type]}      [description]
+         */
+        setupTypeNumber: function (test) {
+            var bits = QRUtil.getBCHTypeNumber(this.typeNumber);
+            for (var i = 0; i < 18; i++) {
+                var mod = (!test && ((bits >> i) & 1) == 1);
+                this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;
+                this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;
+            }
+        },
+        /**
+         * 设置格式信息(纠错等级和掩膜版本)
+         * @param  {bool} test
+         * @param  {num} maskPattern 掩膜版本
+         * @return {}
+         */
+        setupTypeInfo: function (test, maskPattern) {
+            var data = (QRErrorCorrectLevel[this.errorCorrectLevel] << 3) | maskPattern;
+            var bits = QRUtil.getBCHTypeInfo(data);
+            // vertical
+            for (var i = 0; i < 15; i++) {
+                var mod = (!test && ((bits >> i) & 1) == 1);
+                if (i < 6) {
+                    this.modules[i][8] = mod;
+                } else if (i < 8) {
+                    this.modules[i + 1][8] = mod;
+                } else {
+                    this.modules[this.moduleCount - 15 + i][8] = mod;
+                }
+                // horizontal
+                var mod = (!test && ((bits >> i) & 1) == 1);
+                if (i < 8) {
+                    this.modules[8][this.moduleCount - i - 1] = mod;
+                } else if (i < 9) {
+                    this.modules[8][15 - i - 1 + 1] = mod;
+                } else {
+                    this.modules[8][15 - i - 1] = mod;
+                }
+            }
+            // fixed module
+            this.modules[this.moduleCount - 8][8] = (!test);
+        },
+        /**
+         * 数据编码
+         * @return {[type]} [description]
+         */
+        createData: function () {
+            var buffer = new QRBitBuffer();
+            var lengthBits = this.typeNumber > 9 ? 16 : 8;
+            buffer.put(4, 4); //添加模式
+            buffer.put(this.utf8bytes.length, lengthBits);
+            for (var i = 0, l = this.utf8bytes.length; i < l; i++) {
+                buffer.put(this.utf8bytes[i], 8);
+            }
+            if (buffer.length + 4 <= this.totalDataCount * 8) {
+                buffer.put(0, 4);
+            }
+            // padding
+            while (buffer.length % 8 != 0) {
+                buffer.putBit(false);
+            }
+            // padding
+            while (true) {
+                if (buffer.length >= this.totalDataCount * 8) {
+                    break;
+                }
+                buffer.put(QRCodeAlg.PAD0, 8);
+                if (buffer.length >= this.totalDataCount * 8) {
+                    break;
+                }
+                buffer.put(QRCodeAlg.PAD1, 8);
+            }
+            return this.createBytes(buffer);
+        },
+        /**
+         * 纠错码编码
+         * @param  {buffer} buffer 数据编码
+         * @return {[type]}
+         */
+        createBytes: function (buffer) {
+            var offset = 0;
+            var maxDcCount = 0;
+            var maxEcCount = 0;
+            var length = this.rsBlock.length / 3;
+            var rsBlocks = new Array();
+            for (var i = 0; i < length; i++) {
+                var count = this.rsBlock[i * 3 + 0];
+                var totalCount = this.rsBlock[i * 3 + 1];
+                var dataCount = this.rsBlock[i * 3 + 2];
+                for (var j = 0; j < count; j++) {
+                    rsBlocks.push([dataCount, totalCount]);
+                }
+            }
+            var dcdata = new Array(rsBlocks.length);
+            var ecdata = new Array(rsBlocks.length);
+            for (var r = 0; r < rsBlocks.length; r++) {
+                var dcCount = rsBlocks[r][0];
+                var ecCount = rsBlocks[r][1] - dcCount;
+                maxDcCount = Math.max(maxDcCount, dcCount);
+                maxEcCount = Math.max(maxEcCount, ecCount);
+                dcdata[r] = new Array(dcCount);
+                for (var i = 0; i < dcdata[r].length; i++) {
+                    dcdata[r][i] = 0xff & buffer.buffer[i + offset];
+                }
+                offset += dcCount;
+                var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);
+                var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);
+                var modPoly = rawPoly.mod(rsPoly);
+                ecdata[r] = new Array(rsPoly.getLength() - 1);
+                for (var i = 0; i < ecdata[r].length; i++) {
+                    var modIndex = i + modPoly.getLength() - ecdata[r].length;
+                    ecdata[r][i] = (modIndex >= 0) ? modPoly.get(modIndex) : 0;
+                }
+            }
+            var data = new Array(this.totalDataCount);
+            var index = 0;
+            for (var i = 0; i < maxDcCount; i++) {
+                for (var r = 0; r < rsBlocks.length; r++) {
+                    if (i < dcdata[r].length) {
+                        data[index++] = dcdata[r][i];
+                    }
+                }
+            }
+            for (var i = 0; i < maxEcCount; i++) {
+                for (var r = 0; r < rsBlocks.length; r++) {
+                    if (i < ecdata[r].length) {
+                        data[index++] = ecdata[r][i];
+                    }
+                }
+            }
+            return data;
+
+        },
+        /**
+         * 布置模块,构建最终信息
+         * @param  {} data
+         * @param  {} maskPattern
+         * @return {}
+         */
+        mapData: function (data, maskPattern) {
+            var inc = -1;
+            var row = this.moduleCount - 1;
+            var bitIndex = 7;
+            var byteIndex = 0;
+            for (var col = this.moduleCount - 1; col > 0; col -= 2) {
+                if (col == 6) col--;
+                while (true) {
+                    for (var c = 0; c < 2; c++) {
+                        if (this.modules[row][col - c] == null) {
+                            var dark = false;
+                            if (byteIndex < data.length) {
+                                dark = (((data[byteIndex] >>> bitIndex) & 1) == 1);
+                            }
+                            var mask = QRUtil.getMask(maskPattern, row, col - c);
+                            if (mask) {
+                                dark = !dark;
+                            }
+                            this.modules[row][col - c] = dark;
+                            bitIndex--;
+                            if (bitIndex == -1) {
+                                byteIndex++;
+                                bitIndex = 7;
+                            }
+                        }
+                    }
+                    row += inc;
+                    if (row < 0 || this.moduleCount <= row) {
+                        row -= inc;
+                        inc = -inc;
+                        break;
+                    }
+                }
+            }
+        }
+    };
+    /**
+     * 填充字段
+     */
+    QRCodeAlg.PAD0 = 0xEC;
+    QRCodeAlg.PAD1 = 0x11;
+    //---------------------------------------------------------------------
+    // 纠错等级对应的编码
+    //---------------------------------------------------------------------
+    var QRErrorCorrectLevel = [1, 0, 3, 2];
+    //---------------------------------------------------------------------
+    // 掩膜版本
+    //---------------------------------------------------------------------
+    var QRMaskPattern = {
+        PATTERN000: 0,
+        PATTERN001: 1,
+        PATTERN010: 2,
+        PATTERN011: 3,
+        PATTERN100: 4,
+        PATTERN101: 5,
+        PATTERN110: 6,
+        PATTERN111: 7
+    };
+    //---------------------------------------------------------------------
+    // 工具类
+    //---------------------------------------------------------------------
+    var QRUtil = {
+        /*
+        每个版本矫正图形的位置
+         */
+        PATTERN_POSITION_TABLE: [
+            [],
+            [6, 18],
+            [6, 22],
+            [6, 26],
+            [6, 30],
+            [6, 34],
+            [6, 22, 38],
+            [6, 24, 42],
+            [6, 26, 46],
+            [6, 28, 50],
+            [6, 30, 54],
+            [6, 32, 58],
+            [6, 34, 62],
+            [6, 26, 46, 66],
+            [6, 26, 48, 70],
+            [6, 26, 50, 74],
+            [6, 30, 54, 78],
+            [6, 30, 56, 82],
+            [6, 30, 58, 86],
+            [6, 34, 62, 90],
+            [6, 28, 50, 72, 94],
+            [6, 26, 50, 74, 98],
+            [6, 30, 54, 78, 102],
+            [6, 28, 54, 80, 106],
+            [6, 32, 58, 84, 110],
+            [6, 30, 58, 86, 114],
+            [6, 34, 62, 90, 118],
+            [6, 26, 50, 74, 98, 122],
+            [6, 30, 54, 78, 102, 126],
+            [6, 26, 52, 78, 104, 130],
+            [6, 30, 56, 82, 108, 134],
+            [6, 34, 60, 86, 112, 138],
+            [6, 30, 58, 86, 114, 142],
+            [6, 34, 62, 90, 118, 146],
+            [6, 30, 54, 78, 102, 126, 150],
+            [6, 24, 50, 76, 102, 128, 154],
+            [6, 28, 54, 80, 106, 132, 158],
+            [6, 32, 58, 84, 110, 136, 162],
+            [6, 26, 54, 82, 110, 138, 166],
+            [6, 30, 58, 86, 114, 142, 170]
+        ],
+        G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),
+        G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),
+        G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),
+        /*
+        BCH编码格式信息
+         */
+        getBCHTypeInfo: function (data) {
+            var d = data << 10;
+            while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {
+                d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15)));
+            }
+            return ((data << 10) | d) ^ QRUtil.G15_MASK;
+        },
+        /*
+        BCH编码版本信息
+         */
+        getBCHTypeNumber: function (data) {
+            var d = data << 12;
+            while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {
+                d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18)));
+            }
+            return (data << 12) | d;
+        },
+        /*
+        获取BCH位信息
+         */
+        getBCHDigit: function (data) {
+            var digit = 0;
+            while (data != 0) {
+                digit++;
+                data >>>= 1;
+            }
+            return digit;
+        },
+        /*
+        获取版本对应的矫正图形位置
+         */
+        getPatternPosition: function (typeNumber) {
+            return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];
+        },
+        /*
+        掩膜算法
+         */
+        getMask: function (maskPattern, i, j) {
+            switch (maskPattern) {
+                case QRMaskPattern.PATTERN000:
+                    return (i + j) % 2 == 0;
+                case QRMaskPattern.PATTERN001:
+                    return i % 2 == 0;
+                case QRMaskPattern.PATTERN010:
+                    return j % 3 == 0;
+                case QRMaskPattern.PATTERN011:
+                    return (i + j) % 3 == 0;
+                case QRMaskPattern.PATTERN100:
+                    return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;
+                case QRMaskPattern.PATTERN101:
+                    return (i * j) % 2 + (i * j) % 3 == 0;
+                case QRMaskPattern.PATTERN110:
+                    return ((i * j) % 2 + (i * j) % 3) % 2 == 0;
+                case QRMaskPattern.PATTERN111:
+                    return ((i * j) % 3 + (i + j) % 2) % 2 == 0;
+                default:
+                    throw new Error("bad maskPattern:" + maskPattern);
+            }
+        },
+        /*
+        获取RS的纠错多项式
+         */
+        getErrorCorrectPolynomial: function (errorCorrectLength) {
+            var a = new QRPolynomial([1], 0);
+            for (var i = 0; i < errorCorrectLength; i++) {
+                a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0));
+            }
+            return a;
+        },
+        /*
+        获取评价
+         */
+        getLostPoint: function (qrCode) {
+            var moduleCount = qrCode.getModuleCount(),
+                lostPoint = 0,
+                darkCount = 0;
+            for (var row = 0; row < moduleCount; row++) {
+                var sameCount = 0;
+                var head = qrCode.modules[row][0];
+                for (var col = 0; col < moduleCount; col++) {
+                    var current = qrCode.modules[row][col];
+                    //level 3 评价
+                    if (col < moduleCount - 6) {
+                        if (current && !qrCode.modules[row][col + 1] && qrCode.modules[row][col + 2] && qrCode.modules[row][col + 3] && qrCode.modules[row][col + 4] && !qrCode.modules[row][col + 5] && qrCode.modules[row][col + 6]) {
+                            if (col < moduleCount - 10) {
+                                if (qrCode.modules[row][col + 7] && qrCode.modules[row][col + 8] && qrCode.modules[row][col + 9] && qrCode.modules[row][col + 10]) {
+                                    lostPoint += 40;
+                                }
+                            } else if (col > 3) {
+                                if (qrCode.modules[row][col - 1] && qrCode.modules[row][col - 2] && qrCode.modules[row][col - 3] && qrCode.modules[row][col - 4]) {
+                                    lostPoint += 40;
+                                }
+                            }
+                        }
+                    }
+                    //level 2 评价
+                    if ((row < moduleCount - 1) && (col < moduleCount - 1)) {
+                        var count = 0;
+                        if (current) count++;
+                        if (qrCode.modules[row + 1][col]) count++;
+                        if (qrCode.modules[row][col + 1]) count++;
+                        if (qrCode.modules[row + 1][col + 1]) count++;
+                        if (count == 0 || count == 4) {
+                            lostPoint += 3;
+                        }
+                    }
+                    //level 1 评价
+                    if (head ^ current) {
+                        sameCount++;
+                    } else {
+                        head = current;
+                        if (sameCount >= 5) {
+                            lostPoint += (3 + sameCount - 5);
+                        }
+                        sameCount = 1;
+                    }
+                    //level 4 评价
+                    if (current) {
+                        darkCount++;
+                    }
+                }
+            }
+            for (var col = 0; col < moduleCount; col++) {
+                var sameCount = 0;
+                var head = qrCode.modules[0][col];
+                for (var row = 0; row < moduleCount; row++) {
+                    var current = qrCode.modules[row][col];
+                    //level 3 评价
+                    if (row < moduleCount - 6) {
+                        if (current && !qrCode.modules[row + 1][col] && qrCode.modules[row + 2][col] && qrCode.modules[row + 3][col] && qrCode.modules[row + 4][col] && !qrCode.modules[row + 5][col] && qrCode.modules[row + 6][col]) {
+                            if (row < moduleCount - 10) {
+                                if (qrCode.modules[row + 7][col] && qrCode.modules[row + 8][col] && qrCode.modules[row + 9][col] && qrCode.modules[row + 10][col]) {
+                                    lostPoint += 40;
+                                }
+                            } else if (row > 3) {
+                                if (qrCode.modules[row - 1][col] && qrCode.modules[row - 2][col] && qrCode.modules[row - 3][col] && qrCode.modules[row - 4][col]) {
+                                    lostPoint += 40;
+                                }
+                            }
+                        }
+                    }
+                    //level 1 评价
+                    if (head ^ current) {
+                        sameCount++;
+                    } else {
+                        head = current;
+                        if (sameCount >= 5) {
+                            lostPoint += (3 + sameCount - 5);
+                        }
+                        sameCount = 1;
+                    }
+                }
+            }
+            // LEVEL4
+            var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;
+            lostPoint += ratio * 10;
+            return lostPoint;
+        }
+
+    };
+    //---------------------------------------------------------------------
+    // QRMath使用的数学工具
+    //---------------------------------------------------------------------
+    var QRMath = {
+        /*
+        将n转化为a^m
+         */
+        glog: function (n) {
+            if (n < 1) {
+                throw new Error("glog(" + n + ")");
+            }
+            return QRMath.LOG_TABLE[n];
+        },
+        /*
+        将a^m转化为n
+         */
+        gexp: function (n) {
+            while (n < 0) {
+                n += 255;
+            }
+            while (n >= 256) {
+                n -= 255;
+            }
+            return QRMath.EXP_TABLE[n];
+        },
+        EXP_TABLE: new Array(256),
+        LOG_TABLE: new Array(256)
+
+    };
+    for (var i = 0; i < 8; i++) {
+        QRMath.EXP_TABLE[i] = 1 << i;
+    }
+    for (var i = 8; i < 256; i++) {
+        QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8];
+    }
+    for (var i = 0; i < 255; i++) {
+        QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;
+    }
+    //---------------------------------------------------------------------
+    // QRPolynomial 多项式
+    //---------------------------------------------------------------------
+    /**
+     * 多项式类
+     * @param {Array} num   系数
+     * @param {num} shift a^shift
+     */
+    function QRPolynomial(num, shift) {
+        if (num.length == undefined) {
+            throw new Error(num.length + "/" + shift);
+        }
+        var offset = 0;
+        while (offset < num.length && num[offset] == 0) {
+            offset++;
+        }
+        this.num = new Array(num.length - offset + shift);
+        for (var i = 0; i < num.length - offset; i++) {
+            this.num[i] = num[i + offset];
+        }
+    }
+    QRPolynomial.prototype = {
+        get: function (index) {
+            return this.num[index];
+        },
+        getLength: function () {
+            return this.num.length;
+        },
+        /**
+         * 多项式乘法
+         * @param  {QRPolynomial} e 被乘多项式
+         * @return {[type]}   [description]
+         */
+        multiply: function (e) {
+            var num = new Array(this.getLength() + e.getLength() - 1);
+            for (var i = 0; i < this.getLength(); i++) {
+                for (var j = 0; j < e.getLength(); j++) {
+                    num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j)));
+                }
+            }
+            return new QRPolynomial(num, 0);
+        },
+        /**
+         * 多项式模运算
+         * @param  {QRPolynomial} e 模多项式
+         * @return {}
+         */
+        mod: function (e) {
+            var tl = this.getLength(),
+                el = e.getLength();
+            if (tl - el < 0) {
+                return this;
+            }
+            var num = new Array(tl);
+            for (var i = 0; i < tl; i++) {
+                num[i] = this.get(i);
+            }
+            while (num.length >= el) {
+                var ratio = QRMath.glog(num[0]) - QRMath.glog(e.get(0));
+
+                for (var i = 0; i < e.getLength(); i++) {
+                    num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio);
+                }
+                while (num[0] == 0) {
+                    num.shift();
+                }
+            }
+            return new QRPolynomial(num, 0);
+        }
+    };
+
+    //---------------------------------------------------------------------
+    // RS_BLOCK_TABLE
+    //---------------------------------------------------------------------
+    /*
+    二维码各个版本信息[块数, 每块中的数据块数, 每块中的信息块数]
+     */
+    var RS_BLOCK_TABLE = [
+        // L
+        // M
+        // Q
+        // H
+        // 1
+        [1, 26, 19],
+        [1, 26, 16],
+        [1, 26, 13],
+        [1, 26, 9],
+
+        // 2
+        [1, 44, 34],
+        [1, 44, 28],
+        [1, 44, 22],
+        [1, 44, 16],
+
+        // 3
+        [1, 70, 55],
+        [1, 70, 44],
+        [2, 35, 17],
+        [2, 35, 13],
+
+        // 4
+        [1, 100, 80],
+        [2, 50, 32],
+        [2, 50, 24],
+        [4, 25, 9],
+
+        // 5
+        [1, 134, 108],
+        [2, 67, 43],
+        [2, 33, 15, 2, 34, 16],
+        [2, 33, 11, 2, 34, 12],
+
+        // 6
+        [2, 86, 68],
+        [4, 43, 27],
+        [4, 43, 19],
+        [4, 43, 15],
+
+        // 7
+        [2, 98, 78],
+        [4, 49, 31],
+        [2, 32, 14, 4, 33, 15],
+        [4, 39, 13, 1, 40, 14],
+
+        // 8
+        [2, 121, 97],
+        [2, 60, 38, 2, 61, 39],
+        [4, 40, 18, 2, 41, 19],
+        [4, 40, 14, 2, 41, 15],
+
+        // 9
+        [2, 146, 116],
+        [3, 58, 36, 2, 59, 37],
+        [4, 36, 16, 4, 37, 17],
+        [4, 36, 12, 4, 37, 13],
+
+        // 10
+        [2, 86, 68, 2, 87, 69],
+        [4, 69, 43, 1, 70, 44],
+        [6, 43, 19, 2, 44, 20],
+        [6, 43, 15, 2, 44, 16],
+
+        // 11
+        [4, 101, 81],
+        [1, 80, 50, 4, 81, 51],
+        [4, 50, 22, 4, 51, 23],
+        [3, 36, 12, 8, 37, 13],
+
+        // 12
+        [2, 116, 92, 2, 117, 93],
+        [6, 58, 36, 2, 59, 37],
+        [4, 46, 20, 6, 47, 21],
+        [7, 42, 14, 4, 43, 15],
+
+        // 13
+        [4, 133, 107],
+        [8, 59, 37, 1, 60, 38],
+        [8, 44, 20, 4, 45, 21],
+        [12, 33, 11, 4, 34, 12],
+
+        // 14
+        [3, 145, 115, 1, 146, 116],
+        [4, 64, 40, 5, 65, 41],
+        [11, 36, 16, 5, 37, 17],
+        [11, 36, 12, 5, 37, 13],
+
+        // 15
+        [5, 109, 87, 1, 110, 88],
+        [5, 65, 41, 5, 66, 42],
+        [5, 54, 24, 7, 55, 25],
+        [11, 36, 12],
+
+        // 16
+        [5, 122, 98, 1, 123, 99],
+        [7, 73, 45, 3, 74, 46],
+        [15, 43, 19, 2, 44, 20],
+        [3, 45, 15, 13, 46, 16],
+
+        // 17
+        [1, 135, 107, 5, 136, 108],
+        [10, 74, 46, 1, 75, 47],
+        [1, 50, 22, 15, 51, 23],
+        [2, 42, 14, 17, 43, 15],
+
+        // 18
+        [5, 150, 120, 1, 151, 121],
+        [9, 69, 43, 4, 70, 44],
+        [17, 50, 22, 1, 51, 23],
+        [2, 42, 14, 19, 43, 15],
+
+        // 19
+        [3, 141, 113, 4, 142, 114],
+        [3, 70, 44, 11, 71, 45],
+        [17, 47, 21, 4, 48, 22],
+        [9, 39, 13, 16, 40, 14],
+
+        // 20
+        [3, 135, 107, 5, 136, 108],
+        [3, 67, 41, 13, 68, 42],
+        [15, 54, 24, 5, 55, 25],
+        [15, 43, 15, 10, 44, 16],
+
+        // 21
+        [4, 144, 116, 4, 145, 117],
+        [17, 68, 42],
+        [17, 50, 22, 6, 51, 23],
+        [19, 46, 16, 6, 47, 17],
+
+        // 22
+        [2, 139, 111, 7, 140, 112],
+        [17, 74, 46],
+        [7, 54, 24, 16, 55, 25],
+        [34, 37, 13],
+
+        // 23
+        [4, 151, 121, 5, 152, 122],
+        [4, 75, 47, 14, 76, 48],
+        [11, 54, 24, 14, 55, 25],
+        [16, 45, 15, 14, 46, 16],
+
+        // 24
+        [6, 147, 117, 4, 148, 118],
+        [6, 73, 45, 14, 74, 46],
+        [11, 54, 24, 16, 55, 25],
+        [30, 46, 16, 2, 47, 17],
+
+        // 25
+        [8, 132, 106, 4, 133, 107],
+        [8, 75, 47, 13, 76, 48],
+        [7, 54, 24, 22, 55, 25],
+        [22, 45, 15, 13, 46, 16],
+
+        // 26
+        [10, 142, 114, 2, 143, 115],
+        [19, 74, 46, 4, 75, 47],
+        [28, 50, 22, 6, 51, 23],
+        [33, 46, 16, 4, 47, 17],
+
+        // 27
+        [8, 152, 122, 4, 153, 123],
+        [22, 73, 45, 3, 74, 46],
+        [8, 53, 23, 26, 54, 24],
+        [12, 45, 15, 28, 46, 16],
+
+        // 28
+        [3, 147, 117, 10, 148, 118],
+        [3, 73, 45, 23, 74, 46],
+        [4, 54, 24, 31, 55, 25],
+        [11, 45, 15, 31, 46, 16],
+
+        // 29
+        [7, 146, 116, 7, 147, 117],
+        [21, 73, 45, 7, 74, 46],
+        [1, 53, 23, 37, 54, 24],
+        [19, 45, 15, 26, 46, 16],
+
+        // 30
+        [5, 145, 115, 10, 146, 116],
+        [19, 75, 47, 10, 76, 48],
+        [15, 54, 24, 25, 55, 25],
+        [23, 45, 15, 25, 46, 16],
+
+        // 31
+        [13, 145, 115, 3, 146, 116],
+        [2, 74, 46, 29, 75, 47],
+        [42, 54, 24, 1, 55, 25],
+        [23, 45, 15, 28, 46, 16],
+
+        // 32
+        [17, 145, 115],
+        [10, 74, 46, 23, 75, 47],
+        [10, 54, 24, 35, 55, 25],
+        [19, 45, 15, 35, 46, 16],
+
+        // 33
+        [17, 145, 115, 1, 146, 116],
+        [14, 74, 46, 21, 75, 47],
+        [29, 54, 24, 19, 55, 25],
+        [11, 45, 15, 46, 46, 16],
+
+        // 34
+        [13, 145, 115, 6, 146, 116],
+        [14, 74, 46, 23, 75, 47],
+        [44, 54, 24, 7, 55, 25],
+        [59, 46, 16, 1, 47, 17],
+
+        // 35
+        [12, 151, 121, 7, 152, 122],
+        [12, 75, 47, 26, 76, 48],
+        [39, 54, 24, 14, 55, 25],
+        [22, 45, 15, 41, 46, 16],
+
+        // 36
+        [6, 151, 121, 14, 152, 122],
+        [6, 75, 47, 34, 76, 48],
+        [46, 54, 24, 10, 55, 25],
+        [2, 45, 15, 64, 46, 16],
+
+        // 37
+        [17, 152, 122, 4, 153, 123],
+        [29, 74, 46, 14, 75, 47],
+        [49, 54, 24, 10, 55, 25],
+        [24, 45, 15, 46, 46, 16],
+
+        // 38
+        [4, 152, 122, 18, 153, 123],
+        [13, 74, 46, 32, 75, 47],
+        [48, 54, 24, 14, 55, 25],
+        [42, 45, 15, 32, 46, 16],
+
+        // 39
+        [20, 147, 117, 4, 148, 118],
+        [40, 75, 47, 7, 76, 48],
+        [43, 54, 24, 22, 55, 25],
+        [10, 45, 15, 67, 46, 16],
+
+        // 40
+        [19, 148, 118, 6, 149, 119],
+        [18, 75, 47, 31, 76, 48],
+        [34, 54, 24, 34, 55, 25],
+        [20, 45, 15, 61, 46, 16]
+    ];
+
+    /**
+     * 根据数据获取对应版本
+     * @return {[type]} [description]
+     */
+    QRCodeAlg.prototype.getRightType = function () {
+        for (var typeNumber = 1; typeNumber < 41; typeNumber++) {
+            var rsBlock = RS_BLOCK_TABLE[(typeNumber - 1) * 4 + this.errorCorrectLevel];
+            if (rsBlock == undefined) {
+                throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + this.errorCorrectLevel);
+            }
+            var length = rsBlock.length / 3;
+            var totalDataCount = 0;
+            for (var i = 0; i < length; i++) {
+                var count = rsBlock[i * 3 + 0];
+                var dataCount = rsBlock[i * 3 + 2];
+                totalDataCount += dataCount * count;
+            }
+            var lengthBytes = typeNumber > 9 ? 2 : 1;
+            if (this.utf8bytes.length + lengthBytes < totalDataCount || typeNumber == 40) {
+                this.typeNumber = typeNumber;
+                this.rsBlock = rsBlock;
+                this.totalDataCount = totalDataCount;
+                break;
+            }
+        }
+    };
+
+    //---------------------------------------------------------------------
+    // QRBitBuffer
+    //---------------------------------------------------------------------
+    function QRBitBuffer() {
+        this.buffer = new Array();
+        this.length = 0;
+    }
+    QRBitBuffer.prototype = {
+        get: function (index) {
+            var bufIndex = Math.floor(index / 8);
+            return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1);
+        },
+        put: function (num, length) {
+            for (var i = 0; i < length; i++) {
+                this.putBit(((num >>> (length - i - 1)) & 1));
+            }
+        },
+        putBit: function (bit) {
+            var bufIndex = Math.floor(this.length / 8);
+            if (this.buffer.length <= bufIndex) {
+                this.buffer.push(0);
+            }
+            if (bit) {
+                this.buffer[bufIndex] |= (0x80 >>> (this.length % 8));
+            }
+            this.length++;
+        }
+    };
+
+
+
+    // xzedit
+    let qrcodeAlgObjCache = [];
+    /**
+     * 二维码构造函数,主要用于绘制
+     * @param  {参数列表} opt 传递参数
+     * @return {}
+     */
+    QRCode = function (opt) {
+        //设置默认参数
+        this.options = {
+            text: '',
+            size: 256,
+            correctLevel: 3,
+            background: '#ffffff',
+            foreground: '#000000',
+            pdground: '#000000',
+            image: '',
+            imageSize: 30,
+            canvasId: opt.canvasId,
+            context: opt.context,
+            usingComponents: opt.usingComponents,
+            showLoading: opt.showLoading,
+            loadingText: opt.loadingText,
+        };
+        if (typeof opt === 'string') { // 只编码ASCII字符串
+            opt = {
+                text: opt
+            };
+        }
+        if (opt) {
+            for (var i in opt) {
+                this.options[i] = opt[i];
+            }
+        }
+        //使用QRCodeAlg创建二维码结构
+        var qrCodeAlg = null;
+        for (var i = 0, l = qrcodeAlgObjCache.length; i < l; i++) {
+            if (qrcodeAlgObjCache[i].text == this.options.text && qrcodeAlgObjCache[i].text.correctLevel == this.options.correctLevel) {
+                qrCodeAlg = qrcodeAlgObjCache[i].obj;
+                break;
+            }
+        }
+        if (i == l) {
+            qrCodeAlg = new QRCodeAlg(this.options.text, this.options.correctLevel);
+            qrcodeAlgObjCache.push({
+                text: this.options.text,
+                correctLevel: this.options.correctLevel,
+                obj: qrCodeAlg
+            });
+        }
+        /**
+         * 计算矩阵点的前景色
+         * @param {Obj} config
+         * @param {Number} config.row 点x坐标
+         * @param {Number} config.col 点y坐标
+         * @param {Number} config.count 矩阵大小
+         * @param {Number} config.options 组件的options
+         * @return {String}
+         */
+        let getForeGround = function (config) {
+            var options = config.options;
+            if (options.pdground && (
+                (config.row > 1 && config.row < 5 && config.col > 1 && config.col < 5) ||
+                (config.row > (config.count - 6) && config.row < (config.count - 2) && config.col > 1 && config.col < 5) ||
+                (config.row > 1 && config.row < 5 && config.col > (config.count - 6) && config.col < (config.count - 2))
+            )) {
+                return options.pdground;
+            }
+            return options.foreground;
+        }
+        // 创建canvas
+        let createCanvas = function (options) {
+            if (options.showLoading) {
+                uni.showLoading({
+                    title: options.loadingText,
+                    mask: true
+                });
+            }
+            var ctx = uni.createCanvasContext(options.canvasId, options.context);
+            var count = qrCodeAlg.getModuleCount();
+            var ratioSize = options.size;
+            var ratioImgSize = options.imageSize;
+            //计算每个点的长宽
+            var tileW = (ratioSize / count).toPrecision(4);
+            var tileH = (ratioSize / count).toPrecision(4);
+            //绘制
+            for (var row = 0; row < count; row++) {
+                for (var col = 0; col < count; col++) {
+                    var w = (Math.ceil((col + 1) * tileW) - Math.floor(col * tileW));
+                    var h = (Math.ceil((row + 1) * tileW) - Math.floor(row * tileW));
+                    var foreground = getForeGround({
+                        row: row,
+                        col: col,
+                        count: count,
+                        options: options
+                    });
+                    ctx.setFillStyle(qrCodeAlg.modules[row][col] ? foreground : options.background);
+                    ctx.fillRect(Math.round(col * tileW), Math.round(row * tileH), w, h);
+                }
+            }
+            if (options.image) {
+                var x = Number(((ratioSize - ratioImgSize) / 2).toFixed(2));
+                var y = Number(((ratioSize - ratioImgSize) / 2).toFixed(2));
+                drawRoundedRect(ctx, x, y, ratioImgSize, ratioImgSize, 2, 6, true, true)
+                ctx.drawImage(options.image, x, y, ratioImgSize, ratioImgSize);
+                // 画圆角矩形
+                function drawRoundedRect(ctxi, x, y, width, height, r, lineWidth, fill, stroke) {
+                    ctxi.setLineWidth(lineWidth);
+                    ctxi.setFillStyle(options.background);
+                    ctxi.setStrokeStyle(options.background);
+                    ctxi.beginPath(); // draw top and top right corner 
+                    ctxi.moveTo(x + r, y);
+                    ctxi.arcTo(x + width, y, x + width, y + r, r); // draw right side and bottom right corner 
+                    ctxi.arcTo(x + width, y + height, x + width - r, y + height, r); // draw bottom and bottom left corner 
+                    ctxi.arcTo(x, y + height, x, y + height - r, r); // draw left and top left corner 
+                    ctxi.arcTo(x, y, x + r, y, r);
+                    ctxi.closePath();
+                    if (fill) {
+                        ctxi.fill();
+                    }
+                    if (stroke) {
+                        ctxi.stroke();
+                    }
+                }
+            }
+            setTimeout(() => {
+                ctx.draw(true, () => {
+                    // 保存到临时区域
+                    setTimeout(() => {
+                        uni.canvasToTempFilePath({
+                            width: options.width,
+                            height: options.height,
+                            destWidth: options.width,
+                            destHeight: options.height,
+                            canvasId: options.canvasId,
+                            quality: Number(1),
+                            success: function (res) {
+                                if (options.cbResult) {
+                                    options.cbResult(res.tempFilePath)
+                                }
+                            },
+                            fail: function (res) {
+                                if (options.cbResult) {
+                                    options.cbResult(res)
+                                }
+                            },
+                            complete: function () {
+                                if (options.showLoading){
+                                    uni.hideLoading();
+                                }
+                            },
+                        }, options.context);
+                    }, options.text.length + 100);
+                });
+            }, options.usingComponents ? 0 : 150);
+        }
+        createCanvas(this.options);
+        // 空判定
+        let empty = function (v) {
+            let tp = typeof v,
+                rt = false;
+            if (tp == "number" && String(v) == "") {
+                rt = true
+            } else if (tp == "undefined") {
+                rt = true
+            } else if (tp == "object") {
+                if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
+            } else if (tp == "string") {
+                if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
+            } else if (tp == "function") {
+                rt = false
+            }
+            return rt
+        }
+    };
+    QRCode.prototype.clear = function (fn) {
+        var ctx = uni.createCanvasContext(this.options.canvasId, this.options.context)
+        ctx.clearRect(0, 0, this.options.size, this.options.size)
+        ctx.draw(false, () => {
+            if (fn) {
+                fn()
+            }
+        })
+    };
+})()
+
+export default QRCode

+ 210 - 0
components/tki-qrcode/tki-qrcode.vue

@@ -0,0 +1,210 @@
+<template xlang="wxml" minapp="mpvue">
+	<view class="tki-qrcode">
+		<!-- #ifndef MP-ALIPAY -->
+		<canvas class="tki-qrcode-canvas" :canvas-id="cid" :style="{width:cpSize+'px',height:cpSize+'px'}" />
+		<!-- #endif -->
+		<!-- #ifdef MP-ALIPAY -->
+		<canvas :id="cid" :width="cpSize" :height="cpSize" class="tki-qrcode-canvas" />
+		<!-- #endif -->
+		<image v-show="show" :src="result" :style="{width:cpSize+'px',height:cpSize+'px'}" />
+	</view>
+</template>
+
+<script>
+import QRCode from "./qrcode.js"
+let qrcode
+export default {
+	name: "tki-qrcode",
+	props: {
+		cid: {
+			type: String,
+			default: 'tki-qrcode-canvas'
+		},
+		size: {
+			type: Number,
+			default: 200
+		},
+		unit: {
+			type: String,
+			default: 'upx'
+		},
+		show: {
+			type: Boolean,
+			default: true
+		},
+		val: {
+			type: String,
+			default: ''
+		},
+		background: {
+			type: String,
+			default: '#ffffff'
+		},
+		foreground: {
+			type: String,
+			default: '#000000'
+		},
+		pdground: {
+			type: String,
+			default: '#000000'
+		},
+		icon: {
+			type: String,
+			default: ''
+		},
+		iconSize: {
+			type: Number,
+			default: 40
+		},
+		lv: {
+			type: Number,
+			default: 3
+		},
+		onval: {
+			type: Boolean,
+			default: false
+		},
+		loadMake: {
+			type: Boolean,
+			default: false
+		},
+		usingComponents: {
+			type: Boolean,
+			default: true
+		},
+		showLoading: {
+			type: Boolean,
+			default: true
+		},
+		loadingText: {
+			type: String,
+			default: '二维码生成中'
+		},
+	},
+	data() {
+		return {
+			result: '',
+		}
+	},
+	methods: {
+		_makeCode() {
+			let that = this
+			if (!this._empty(this.val)) {
+				qrcode = new QRCode({
+					context: that, // 上下文环境
+					canvasId:that.cid, // canvas-id
+					usingComponents: that.usingComponents, // 是否是自定义组件
+					showLoading: that.showLoading, // 是否显示loading
+					loadingText: that.loadingText, // loading文字
+					text: that.val, // 生成内容
+					size: that.cpSize, // 二维码大小
+					background: that.background, // 背景色
+					foreground: that.foreground, // 前景色
+					pdground: that.pdground, // 定位角点颜色
+					correctLevel: that.lv, // 容错级别
+					image: that.icon, // 二维码图标
+					imageSize: that.iconSize,// 二维码图标大小
+					cbResult: function (res) { // 生成二维码的回调
+						that._result(res)
+					},
+				});
+			} else {
+				uni.showToast({
+					title: '二维码内容不能为空',
+					icon: 'none',
+					duration: 2000
+				});
+			}
+		},
+		_clearCode() {
+			this._result('')
+			qrcode.clear()
+		},
+		_saveCode() {
+			let that = this;
+			if (this.result != "") {
+				uni.saveImageToPhotosAlbum({
+					filePath: that.result,
+					success: function () {
+						uni.showToast({
+							title: '二维码保存成功',
+							icon: 'success',
+							duration: 2000
+						});
+					}
+				});
+			}
+		},
+		_result(res) {
+			this.result = res;
+			this.$emit('result', res)
+		},
+		_empty(v) {
+			let tp = typeof v,
+				rt = false;
+			if (tp == "number" && String(v) == "") {
+				rt = true
+			} else if (tp == "undefined") {
+				rt = true
+			} else if (tp == "object") {
+				if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
+			} else if (tp == "string") {
+				if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
+			} else if (tp == "function") {
+				rt = false
+			}
+			return rt
+		}
+	},
+	watch: {
+		size: function (n, o) {
+			if (n != o && !this._empty(n)) {
+				this.cSize = n
+				if (!this._empty(this.val)) {
+					setTimeout(() => {
+						this._makeCode()
+					}, 100);
+				}
+			}
+		},
+		val: function (n, o) {
+			if (this.onval) {
+				if (n != o && !this._empty(n)) {
+					setTimeout(() => {
+						this._makeCode()
+					}, 0);
+				}
+			}
+		}
+	},
+	computed: {
+		cpSize() {
+			if(this.unit == "upx"){
+				return uni.upx2px(this.size)
+			}else{
+				return this.size
+			}
+		}
+	},
+	mounted: function () {
+		if (this.loadMake) {
+			if (!this._empty(this.val)) {
+				setTimeout(() => {
+					this._makeCode()
+				}, 0);
+			}
+		}
+	},
+}
+</script>
+<style>
+.tki-qrcode {
+  position: relative;
+}
+.tki-qrcode-canvas {
+  position: fixed;
+  top: -99999upx;
+  left: -99999upx;
+  z-index: -99999;
+}
+</style>

+ 122 - 0
components/uni-badge/uni-badge.vue

@@ -0,0 +1,122 @@
+<template>
+	<text v-if="text" :class="inverted ? 'uni-badge--' + type + ' uni-badge--' + size + ' uni-badge--' + type + '-inverted' : 'uni-badge--' + type + ' uni-badge--' + size"
+	 class="uni-badge" :style="width" @click="onClick()">{{ text }}</text>
+</template>
+
+<script>
+	export default {
+		name: 'UniBadge',
+		props: {
+			type: {
+				type: String,
+				default: 'default'
+			},
+			inverted: {
+				type: Boolean,
+				default: false
+			},
+			text: {
+				type: [String,Number],
+				default: ''
+			},
+			size: {
+				// small.normal
+				type: String,
+				default: 'normal'
+			}
+		},
+		data() {
+			return {
+				width: `display: inline-block;width: ${String(this.text).length * 15 + 25}rpx`
+			};
+		},
+		methods: {
+			onClick() {
+				this.$emit('click');
+			}
+		}
+	};
+</script>
+
+<style lang="scss" scoped>
+	$bage-size: 12px;
+	$bage-small: scale(0.8);
+	$bage-height: 40rpx;
+
+	.uni-badge {
+		/* #ifndef APP-PLUS */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		height: $bage-height;
+		line-height: $bage-height;
+		color: $uni-text-color;
+		border-radius: 100px;
+		background-color: $uni-bg-color-hover;
+		background-color: transparent;
+		text-align: center;
+		font-family: 'Helvetica Neue', Helvetica, sans-serif;
+		font-size: $bage-size;
+		padding: 0;
+	}
+
+	.uni-badge--inverted {
+		padding: 0 5px 0 0;
+		color: $uni-bg-color-hover;
+	}
+
+	.uni-badge--default {
+		color: $uni-text-color;
+		background-color: $uni-bg-color-hover;
+	}
+
+	.uni-badge--default-inverted {
+		color: $uni-text-color-grey;
+		background-color: transparent;
+	}
+
+	.uni-badge--primary {
+		color: $uni-text-color-inverse;
+		background-color: $uni-color-primary;
+	}
+
+	.uni-badge--primary-inverted {
+		color: $uni-color-primary;
+		background-color: transparent;
+	}
+
+	.uni-badge--success {
+		color: $uni-text-color-inverse;
+		background-color: $uni-color-success;
+	}
+
+	.uni-badge--success-inverted {
+		color: $uni-color-success;
+		background-color: transparent;
+	}
+
+	.uni-badge--warning {
+		color: $uni-text-color-inverse;
+		background-color: $uni-color-warning;
+	}
+
+	.uni-badge--warning-inverted {
+		color: $uni-color-warning;
+		background-color: transparent;
+	}
+
+	.uni-badge--error {
+		color: $uni-text-color-inverse;
+		background-color: $uni-color-error;
+	}
+
+	.uni-badge--error-inverted {
+		color: $uni-color-error;
+		background-color: transparent;
+	}
+
+	.uni-badge--small {
+		transform: $bage-small;
+		transform-origin: center center;
+	}
+</style>

+ 183 - 0
components/uni-countdown/uni-countdown.vue

@@ -0,0 +1,183 @@
+<template>
+	<view class="uni-countdown">
+		<text v-if="showDay" :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ d }}</text>
+		<text v-if="showDay" :style="{ color: splitorColor }" class="uni-countdown__splitor">天</text>
+		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ h }}</text>
+		<text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '时' }}</text>
+		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ i }}</text>
+		<text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '分' }}</text>
+		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ s }}</text>
+		<text v-if="!showColon" :style="{ color: splitorColor }" class="uni-countdown__splitor">秒</text>
+	</view>
+</template>
+<script>
+	export default {
+		name: 'UniCountdown',
+		props: {
+			showDay: {
+				type: Boolean,
+				default: true
+			},
+			showColon: {
+				type: Boolean,
+				default: true
+			},
+			backgroundColor: {
+				type: String,
+				default: 'black'
+			},
+			borderColor: {
+				type: String,
+				default: '#000000'
+			},
+			color: {
+				type: String,
+				default: '#fff'
+			},
+			splitorColor: {
+				type: String,
+				default: '#000000'
+			},
+			day:0,
+			hour:0,
+			minute:0,
+			second:0
+		},
+		data() {
+			return {
+				timer: null,
+				syncFlag: false,
+				d: '00',
+				h: '00',
+				i: '00',
+				s: '00',
+				leftTime: 0,
+				seconds: 0
+			}
+		},
+		watch: {
+			day(val) {
+				this.changeFlag()
+			},
+			hour(val) {
+				this.changeFlag()
+			},
+			minute(val) {
+				this.changeFlag()
+			},
+			second(val) {
+				this.changeFlag()
+			}
+		},
+		created: function(e) {
+			this.startData();
+		},
+		beforeDestroy() {
+			clearInterval(this.timer)
+		},
+		methods: {
+			toSeconds(day, hours, minutes, seconds) {
+				return day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds
+			},
+			timeUp() {
+				clearInterval(this.timer)
+				this.$emit('timeup')
+			},
+			countDown() {
+				let seconds = this.seconds
+				let [day, hour, minute, second] = [0, 0, 0, 0]
+				if (seconds > 0) {
+					day = Math.floor(seconds / (60 * 60 * 24))
+					hour = Math.floor(seconds / (60 * 60)) - (day * 24)
+					minute = Math.floor(seconds / 60) - (day * 24 * 60) - (hour * 60)
+					second = Math.floor(seconds) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60)
+				} else {
+					this.timeUp()
+				}
+				hour = hour + (day*24)
+				if (day < 10) {
+					day = '0' + day
+				}
+				if (hour < 10) {
+					hour = '0' + hour
+				}
+				if (minute < 10) {
+					minute = '0' + minute
+				}
+				if (second < 10) {
+					second = '0' + second
+				}
+				this.d = day
+				this.h = hour
+				this.i = minute
+				this.s = second
+			},
+			startData() {
+				this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second)
+				if (this.seconds <= 0) {
+					return
+				}
+				this.countDown()
+				this.timer = setInterval(() => {
+					this.seconds--
+					if (this.seconds < 0) {
+						this.timeUp()
+						return
+					}
+					this.countDown()
+				}, 1000)
+			},
+			changeFlag() {
+				if (!this.syncFlag) {
+					this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second)
+					console.log(this.seconds)
+					this.startData();
+					this.syncFlag = true;
+				}
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	@import '~@/uni.scss';
+	$countdown-height: 40rpx;
+	$countdown-width: 40rpx;
+
+	.uni-countdown {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: flex-start;
+		position: relative;
+		top: 5rpx;
+		left: 15rpx;
+	}
+
+	.uni-countdown__splitor {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		justify-content: center;
+		line-height: $countdown-height;
+		padding: 5rpx;
+		font-size: $uni-font-size-sm;
+	}
+
+	.uni-countdown__number {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		justify-content: center;
+		align-items: center;
+		width: $countdown-width;
+		height: $countdown-height;
+		line-height: $countdown-height;
+		// margin: 5rpx;
+		text-align: center;
+		font-size: $uni-font-size-sm;
+		border-radius: 8rpx;
+		background-color: #333333; 
+		color: #fff;
+	}
+</style>

+ 188 - 0
components/uni-countdown/uni-countdowns.vue

@@ -0,0 +1,188 @@
+<template>
+	<view class="uni-countdown">
+		<text v-if="showDay" :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ d }}</text>
+		<text v-if="showDay" :style="{ color: splitorColor }" class="uni-countdown__splitor">天</text>
+		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ h }}</text>
+		<text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '时' }}</text>
+		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ i }}</text>
+		<text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '分' }}</text>
+		<text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ s }}</text>
+		<text v-if="!showColon" :style="{ color: splitorColor }" class="uni-countdown__splitor">秒</text>
+	</view>
+</template>
+<script>
+	export default {
+		name: 'UniCountdown',
+		props: {
+			showDay: {
+				type: Boolean,
+				default: true
+			},
+			showColon: {
+				type: Boolean,
+				default: true
+			},
+			backgroundColor: {
+				type: String,
+				default: '#FFFFFF'
+			},
+			borderColor: {
+				type: String,
+				default: '#000000'
+			},
+			color: {
+				type: String,
+				default: '#000000'
+			},
+			splitorColor: {
+				type: String,
+				default: '#000000'
+			},
+			day: {
+				type: Number,
+				default: 0
+			},
+			hour: {
+				type: Number,
+				default: 0
+			},
+			minute: {
+				type: Number,
+				default: 0
+			},
+			second: {
+				type: Number,
+				default: 0
+			}
+		},
+		data() {
+			return {
+				timer: null,
+				syncFlag: false,
+				d: '00',
+				h: '00',
+				i: '00',
+				s: '00',
+				leftTime: 0,
+				seconds: 0
+			}
+		},
+		watch: {
+			day(val) {
+				this.changeFlag()
+			},
+			hour(val) {
+				this.changeFlag()
+			},
+			minute(val) {
+				this.changeFlag()
+			},
+			second(val) {
+				this.changeFlag()
+			}
+		},
+		created: function(e) {
+			this.startData();
+		},
+		beforeDestroy() {
+			clearInterval(this.timer)
+		},
+		methods: {
+			toSeconds(day, hours, minutes, seconds) {
+				return day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds
+			},
+			timeUp() {
+				clearInterval(this.timer)
+				this.$emit('timeup')
+			},
+			countDown() {
+				let seconds = this.seconds
+				let [day, hour, minute, second] = [0, 0, 0, 0]
+				if (seconds > 0) {
+					day = Math.floor(seconds / (60 * 60 * 24))
+					hour = Math.floor(seconds / (60 * 60)) - (day * 24)
+					minute = Math.floor(seconds / 60) - (day * 24 * 60) - (hour * 60)
+					second = Math.floor(seconds) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60)
+				} else {
+					this.timeUp()
+				}
+				if (day < 10) {
+					day = '0' + day
+				}
+				if (hour < 10) {
+					hour = '0' + hour
+				}
+				if (minute < 10) {
+					minute = '0' + minute
+				}
+				if (second < 10) {
+					second = '0' + second
+				}
+				this.d = day
+				this.h = hour
+				this.i = minute
+				this.s = second
+			},
+			startData() {
+				this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second)
+				if (this.seconds <= 0) {
+					return
+				}
+				this.countDown()
+				this.timer = setInterval(() => {
+					this.seconds--
+					if (this.seconds < 0) {
+						this.timeUp()
+						return
+					}
+					this.countDown()
+				}, 1000)
+			},
+			changeFlag() {
+				if (!this.syncFlag) {
+					this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second)
+					this.startData();
+					this.syncFlag = true;
+				}
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	@import '~@/uni.scss';
+	$countdown-height: 48rpx;
+	$countdown-width: 52rpx;
+
+	.uni-countdown {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: flex-start;
+		padding: 2rpx 0;
+	}
+
+	.uni-countdown__splitor {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		justify-content: center;
+		line-height: $countdown-height;
+		padding: 5rpx;
+		font-size: $uni-font-size-sm;
+	}
+
+	.uni-countdown__number {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		justify-content: center;
+		align-items: center;
+		width: $countdown-width;
+		height: $countdown-height;
+		line-height: $countdown-height;
+		margin: 5rpx;
+		text-align: center;
+		font-size: $uni-font-size-sm;
+	}
+</style>

+ 124 - 0
components/uni-fav/uni-fav.vue

@@ -0,0 +1,124 @@
+<template>
+	<view :class="[circle === true || circle === 'true' ? 'uni-fav--circle' : '']" :style="[{ backgroundColor: checked ? bgColorChecked : bgColor }]"
+	 @click="onClick" class="uni-fav">
+		<!-- #ifdef MP-ALIPAY -->
+		<view class="uni-fav-star" v-if="!checked && (star === true || star === 'true')">
+			<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" size="14" type="star-filled" />
+		</view>
+		<!-- #endif -->
+		<!-- #ifndef MP-ALIPAY -->
+		<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-star" size="14" type="star-filled"
+		 v-if="!checked && (star === true || star === 'true')" />
+		<!-- #endif -->
+		<text :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-text">{{ checked ? contentText.contentFav : contentText.contentDefault }}</text>
+	</view>
+</template>
+
+<script>
+	import uniIcons from "../uni-icons/uni-icons.vue";
+	export default {
+		name: "UniFav",
+		components: {
+			uniIcons
+		},
+		props: {
+			star: {
+				type: [Boolean, String],
+				default: true
+			},
+			bgColor: {
+				type: String,
+				default: "#eeeeee"
+			},
+			fgColor: {
+				type: String,
+				default: "#666666"
+			},
+			bgColorChecked: {
+				type: String,
+				default: "#007aff"
+			},
+			fgColorChecked: {
+				type: String,
+				default: "#FFFFFF"
+			},
+			circle: {
+				type: [Boolean, String],
+				default: false
+			},
+			checked: {
+				type: Boolean,
+				default: false
+			},
+			contentText: {
+				type: Object,
+				default () {
+					return {
+						contentDefault: "收藏",
+						contentFav: "已收藏"
+					};
+				}
+			}
+		},
+		watch: {
+			checked() {
+				if (uni.report) {
+					if (this.checked) {
+						uni.report("收藏", "收藏");
+					} else {
+						uni.report("取消收藏", "取消收藏");
+					}
+				}
+			}
+		},
+		methods: {
+			onClick() {
+				this.$emit("click");
+			}
+		}
+	};
+</script>
+
+<style lang="scss" scoped>
+	$fav-height: 25px;
+
+	.uni-fav {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: center;
+		width: 60px;
+		height: $fav-height;
+		line-height: $fav-height;
+		text-align: center;
+		border-radius: 3px;
+	}
+
+	.uni-fav--circle {
+		border-radius: 30px;
+	}
+
+	.uni-fav-star {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		height: $fav-height;
+		line-height: 24px;
+		margin-right: 3px;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.uni-fav-text {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		height: $fav-height;
+		line-height: $fav-height;
+		align-items: center;
+		justify-content: center;
+		font-size: $uni-font-size-base;
+	}
+</style>

+ 96 - 0
components/uni-icons/icons.js

@@ -0,0 +1,96 @@
+export default {
+	'contact': '\ue100',
+	'person': '\ue101',
+	'personadd': '\ue102',
+	'contact-filled': '\ue130',
+	'person-filled': '\ue131',
+	'personadd-filled': '\ue132',
+	'phone': '\ue200',
+	'email': '\ue201',
+	'chatbubble': '\ue202',
+	'chatboxes': '\ue203',
+	'phone-filled': '\ue230',
+	'email-filled': '\ue231',
+	'chatbubble-filled': '\ue232',
+	'chatboxes-filled': '\ue233',
+	'weibo': '\ue260',
+	'weixin': '\ue261',
+	'pengyouquan': '\ue262',
+	'chat': '\ue263',
+	'qq': '\ue264',
+	'videocam': '\ue300',
+	'camera': '\ue301',
+	'mic': '\ue302',
+	'location': '\ue303',
+	'mic-filled': '\ue332',
+	'speech': '\ue332',
+	'location-filled': '\ue333',
+	'micoff': '\ue360',
+	'image': '\ue363',
+	'map': '\ue364',
+	'compose': '\ue400',
+	'trash': '\ue401',
+	'upload': '\ue402',
+	'download': '\ue403',
+	'close': '\ue404',
+	'redo': '\ue405',
+	'undo': '\ue406',
+	'refresh': '\ue407',
+	'star': '\ue408',
+	'plus': '\ue409',
+	'minus': '\ue410',
+	'circle': '\ue411',
+	'checkbox': '\ue411',
+	'close-filled': '\ue434',
+	'clear': '\ue434',
+	'refresh-filled': '\ue437',
+	'star-filled': '\ue438',
+	'plus-filled': '\ue439',
+	'minus-filled': '\ue440',
+	'circle-filled': '\ue441',
+	'checkbox-filled': '\ue442',
+	'closeempty': '\ue460',
+	'refreshempty': '\ue461',
+	'reload': '\ue462',
+	'starhalf': '\ue463',
+	'spinner': '\ue464',
+	'spinner-cycle': '\ue465',
+	'search': '\ue466',
+	'plusempty': '\ue468',
+	'forward': '\ue470',
+	'back': '\ue471',
+	'left-nav': '\ue471',
+	'checkmarkempty': '\ue472',
+	'home': '\ue500',
+	'navigate': '\ue501',
+	'gear': '\ue502',
+	'paperplane': '\ue503',
+	'info': '\ue504',
+	'help': '\ue505',
+	'locked': '\ue506',
+	'more': '\ue507',
+	'flag': '\ue508',
+	'home-filled': '\ue530',
+	'gear-filled': '\ue532',
+	'info-filled': '\ue534',
+	'help-filled': '\ue535',
+	'more-filled': '\ue537',
+	'settings': '\ue560',
+	'list': '\ue562',
+	'bars': '\ue563',
+	'loop': '\ue565',
+	'paperclip': '\ue567',
+	'eye': '\ue568',
+	'arrowup': '\ue580',
+	'arrowdown': '\ue581',
+	'arrowleft': '\ue582',
+	'arrowright': '\ue583',
+	'arrowthinup': '\ue584',
+	'arrowthindown': '\ue585',
+	'arrowthinleft': '\ue586',
+	'arrowthinright': '\ue587',
+	'pulldown': '\ue588',
+	'closefill': '\ue589',
+	'sound': '\ue590',
+	'scan': '\ue612'
+}

Fichier diff supprimé car celui-ci est trop grand
+ 10 - 0
components/uni-icons/uni-icons.vue


+ 230 - 0
components/uni-list-item/uni-list-item.vue

@@ -0,0 +1,230 @@
+<template>
+	<!-- #ifdef APP-NVUE -->
+	<cell>
+	<!-- #endif -->
+	<view :class="disabled ? 'uni-list-item--disabled' : ''" :hover-class="disabled || showSwitch ? '' : 'uni-list-item--hover'"
+	 class="uni-list-item" @click="onClick">
+		<view class="uni-list-item__container" :class="{'uni-list-item--first':isFirstChild}">
+			<view v-if="thumb" class="uni-list-item__icon">
+				<image :src="thumb" mode="aspectFit" class="uni-list-item__icon-img" />
+			</view>
+			<view v-else-if="showExtraIcon" class="uni-list-item__icon">
+				<uni-icons :color="extraIcon.color" :size="extraIcon.size" :type="extraIcon.type" class="uni-icon-wrapper" />
+			</view>
+			<view class="uni-list-item__content">
+				<slot></slot>
+				<text class="uni-list-item__content-title">{{ title }}</text>
+				<text v-if="note" class="uni-list-item__content-note">{{ note }}</text>
+			</view>
+			<view class="uni-list-item__slot">
+				<slot name="right" ></slot>
+			</view>
+			<view v-if="showBadge || showArrow || showSwitch" class="uni-list-item__extra">
+				<uni-badge v-if="showBadge" :type="badgeType" :text="badgeText" />
+				<switch class="itemSwitch" v-if="showSwitch" :color="switchColor" :disabled="disabled" :checked="switchChecked" @change="onSwitchChange" />
+				<uni-icons v-if="showArrow" :size="20" class="uni-icon-wrapper" color="#bbb" type="arrowright" />
+			</view>
+		</view>
+	</view>
+	<!-- #ifdef APP-NVUE -->
+	</cell>
+	<!-- #endif -->
+</template>
+
+<script>
+	import uniIcons from '../uni-icons/uni-icons.vue'
+	import uniBadge from '../uni-badge/uni-badge.vue'
+	export default {
+		name: 'UniListItem',
+		components: {
+			uniIcons,
+			uniBadge
+		},
+		props: {
+			title: {
+				type: String,
+				default: ''
+			}, // 列表标题
+			note: {
+				type: String,
+				default: ''
+			}, // 列表描述
+			disabled: {
+				// 是否禁用
+				type: [Boolean, String],
+				default: false
+			},
+			showArrow: {
+				// 是否显示箭头
+				type: [Boolean, String],
+				default: true
+			},
+			showBadge: {
+				// 是否显示数字角标
+				type: [Boolean, String],
+				default: false
+			},
+			showSwitch: {
+				// 是否显示Switch
+				type: [Boolean, String],
+				default: false
+			},
+			switchChecked: {
+				// Switch是否被选中
+				type: [Boolean, String],
+				default: false
+			},
+			switchColor:{
+				type:String,
+				default:''
+			},
+			badgeText: {
+				// badge内容
+				type: String,
+				default: ''
+			},
+			badgeType: {
+				// badge类型
+				type: String,
+				default: 'success'
+			},
+			thumb: {
+				// 缩略图
+				type: String,
+				default: ''
+			},
+			showExtraIcon: {
+				// 是否显示扩展图标
+				type: [Boolean, String],
+				default: false
+			},
+			extraIcon: {
+				type: Object,
+				default () {
+					return {
+						type: 'contact',
+						color: '#000000',
+						size: 20
+					}
+				}
+			}
+		},
+		inject: ['list'],
+		data() {
+			return {
+				isFirstChild: false
+			}
+		},
+		mounted() {
+			if (!this.list.firstChildAppend) {
+				this.list.firstChildAppend = true
+				this.isFirstChild = true
+			}
+		},
+		methods: {
+			onClick() {
+				this.$emit('click')
+			},
+			onSwitchChange(e) {
+				this.$emit('switchChange', e.detail)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import '~@/uni.scss';
+
+	$list-item-pd: $uni-spacing-col-lg $uni-spacing-row-lg;
+
+	.uni-list-item {
+		font-size: $uni-font-size-lg;
+		position: relative;
+		flex-direction: column;
+		justify-content: space-between;
+		padding-left: $uni-spacing-row-lg;
+	}
+
+	.uni-list-item--disabled {
+		opacity: 0.3;
+	}
+
+	.uni-list-item--hover {
+		background-color: $uni-bg-color-hover;
+	}
+
+	.uni-list-item__container {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		padding: $list-item-pd;
+		padding-left: 0;
+		flex: 1;
+		position: relative;
+		justify-content: space-between;
+		align-items: center;
+		border-top-color: $uni-border-color;
+		border-top-style: solid;
+		border-top-width: 1px;
+	}
+
+	.uni-list-item--first {
+		border-top-width: 0px;
+	}
+
+	.uni-list-item__content {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		overflow: hidden;
+		flex-direction: column;
+		color: #3b4144;
+
+	}
+
+	.uni-list-item__content-title {
+		font-size: $uni-font-size-base;
+		color: #3b4144;
+		overflow: hidden;
+	}
+
+	.uni-list-item__content-note {
+		margin-top: 6rpx;
+		color: $uni-text-color-grey;
+		font-size: $uni-font-size-sm;
+		overflow: hidden;
+	}
+
+	.uni-list-item__extra {
+		// width: 25%;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: flex-end;
+		align-items: center;
+	}
+
+	.uni-list-item__icon {
+		margin-right: 18rpx;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		display: flex;
+	}
+
+	.uni-list-item__icon-img {
+		height: $uni-img-size-base;
+		width: $uni-img-size-base;
+	}
+	// 修改switch默认大小
+	.itemSwitch{
+		transform: translateX(16rpx) scale(.84);
+	}
+	.uni-list-item__slot{
+		color: #909399;
+		font-size: 28rpx;
+	}
+</style>

+ 76 - 0
components/uni-list/uni-list.vue

@@ -0,0 +1,76 @@
+<template>
+	<!-- #ifndef APP-NVUE -->
+	<view class="uni-list">
+		<slot />
+	</view>
+	<!-- #endif -->
+	<!-- #ifdef APP-NVUE -->
+	<list class="uni-list" :enableBackToTop="enableBackToTop" loadmoreoffset="15" :scroll-y="scrollY" @loadmore="loadMore">
+		<slot />
+	</list>
+	<!-- #endif -->
+</template>
+
+<script>
+	export default {
+		name: 'UniList',
+		'mp-weixin': {
+			options: {
+				multipleSlots: false
+			}
+		},
+		props: {
+			enableBackToTop: {
+				type: [Boolean, String],
+				default: false
+			},
+			scrollY: {
+				type: [Boolean, String],
+				default: false
+			}
+		},
+		provide() {
+			return {
+				list: this
+			}
+		},
+		created() {
+			this.firstChildAppend = false
+		},
+		methods: {
+			loadMore(e) {
+				this.$emit("scrolltolower");
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.uni-list {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		background-color: $uni-bg-color;
+		position: relative;
+		flex-direction: column;
+		/* #ifdef MP-WEIXIN */
+		width:690rpx;
+		margin: auto;
+		margin-top: 20rpx;
+		background: #ffffff;
+		box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+		border-radius: 20rpx;
+		/* #endif */
+		// border-bottom-color: $uni-border-color;
+		// border-bottom-style: solid;
+		// border-bottom-width: 1px;
+	}
+	/* #ifndef APP-NVUE */
+	.uni-list:before {
+		height: 0;
+	}
+	.uni-list:after {
+		height: 0;
+	}
+	/* #endif */
+
+</style>

+ 65 - 0
components/uni-list/uni-refresh.vue

@@ -0,0 +1,65 @@
+<template>
+    <!-- #ifdef APP-NVUE -->
+    <refresh :display="display" @refresh="onrefresh" @pullingdown="onpullingdown">
+        <slot />
+    </refresh>
+    <!-- #endif -->
+    <!-- #ifndef APP-NVUE -->
+    <view ref="uni-refresh" class="uni-refresh" v-show="isShow">
+        <slot />
+    </view>
+    <!-- #endif -->
+</template>
+
+<script>
+    export default {
+        name: 'UniRefresh',
+        props: {
+            display: {
+                type: [String],
+                default: "hide"
+            }
+        },
+        data() {
+            return {
+                pulling: false
+            }
+        },
+        computed: {
+            isShow() {
+                if (this.display === "show" || this.pulling === true) {
+                    return true;
+                }
+                return false;
+            }
+        },
+        created() {},
+        methods: {
+            onchange(value) {
+                this.pulling = value;
+            },
+            onrefresh(e) {
+                this.$emit("refresh", e);
+            },
+            onpullingdown(e) {
+                // #ifdef APP-NVUE
+                this.$emit("pullingdown", e);
+                // #endif
+                // #ifndef APP-NVUE
+                var detail = {
+                    viewHeight: 90,
+                    pullingDistance: e.height
+                }
+                this.$emit("pullingdown", detail);
+                // #endif
+            }
+        }
+    }
+</script>
+
+<style>
+    .uni-refresh {
+        height: 0;
+        overflow: hidden;
+    }
+</style>

+ 87 - 0
components/uni-list/uni-refresh.wxs

@@ -0,0 +1,87 @@
+var pullDown = {
+    threshold: 95,
+    maxHeight: 200,
+    callRefresh: 'onrefresh',
+    callPullingDown: 'onpullingdown',
+    refreshSelector: '.uni-refresh'
+};
+
+function ready(newValue, oldValue, ownerInstance, instance) {
+    var state = instance.getState()
+    state.canPullDown = newValue;
+    console.log(newValue);
+}
+
+function touchStart(e, instance) {
+    var state = instance.getState();
+    state.refreshInstance = instance.selectComponent(pullDown.refreshSelector);
+    state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined);
+    if (!state.canPullDown) {
+        return
+    }
+
+    console.log("touchStart");
+
+    state.height = 0;
+    state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY;
+    state.refreshInstance.setStyle({
+        'height': 0
+    });
+    state.refreshInstance.callMethod("onchange", true);
+}
+
+function touchMove(e, ownerInstance) {
+    var instance = e.instance;
+    var state = instance.getState();
+    if (!state.canPullDown) {
+        return
+    }
+
+    var oldHeight = state.height;
+    var endY = e.touches[0].pageY || e.changedTouches[0].pageY;
+    var height = endY - state.touchStartY;
+    if (height > pullDown.maxHeight) {
+        return;
+    }
+
+    var refreshInstance = state.refreshInstance;
+    refreshInstance.setStyle({
+        'height': height + 'px'
+    });
+
+    height = height < pullDown.maxHeight ? height : pullDown.maxHeight;
+    state.height = height;
+    refreshInstance.callMethod(pullDown.callPullingDown, {
+        height: height
+    });
+}
+
+function touchEnd(e, ownerInstance) {
+    var state = e.instance.getState();
+    if (!state.canPullDown) {
+        return
+    }
+
+    state.refreshInstance.callMethod("onchange", false);
+
+    var refreshInstance = state.refreshInstance;
+    if (state.height > pullDown.threshold) {
+        refreshInstance.callMethod(pullDown.callRefresh);
+        return;
+    }
+
+    refreshInstance.setStyle({
+        'height': 0
+    });
+}
+
+function propObserver(newValue, oldValue, instance) {
+    pullDown = newValue;
+}
+
+module.exports = {
+    touchmove: touchMove,
+    touchstart: touchStart,
+    touchend: touchEnd,
+    propObserver: propObserver
+}

+ 194 - 0
components/uni-load-more/uni-load-more.vue

@@ -0,0 +1,194 @@
+<template>
+	<view class="uni-load-more">
+		<view class="uni-load-more__img" v-show="status === 'loading' && showIcon">
+			<view class="load1 load">
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+			</view>
+			<view class="load2 load">
+				<view class="item" :style="{background:color}"></view>
+				<view class="item"  :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+			</view>
+			<view class="load3 load">
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+			</view>
+		</view>
+		<text class="uni-load-more__text" :style="{color:color}">{{status === 'more' ? contentText.contentdown : (status === 'loading' ? contentText.contentrefresh : contentText.contentnomore)}}</text>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "uni-load-more",
+		props: {
+			status: {
+				//上拉的状态:more-loading前;loading-loading中;noMore-没有更多了
+				type: String,
+				default: 'more'
+			},
+			showIcon: {
+				type: Boolean,
+				default: true
+			},
+			color: {
+				type: String,
+				default: "#777777"
+			},
+			contentText: {
+				type: Object,
+				default () {
+					return {
+						contentdown: "上拉显示更多",
+						contentrefresh: "正在加载...",
+						contentnomore: "没有更多数据了"
+					};
+				}
+			}
+		},
+		data() {
+			return {}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-load-more {
+		display: flex;
+		flex-direction: row;
+		height: 80upx;
+		align-items: center;
+		justify-content: center
+	}
+
+	.uni-load-more__text {
+		font-size: 28upx;
+		color: #999
+	}
+
+	.uni-load-more__img {
+		height: 24px;
+		width: 24px;
+		margin-right: 10px
+	}
+
+	.uni-load-more__img>.load {
+		position: absolute
+	}
+
+	.uni-load-more__img>.load .item {
+		width: 6px;
+		height: 2px;
+		border-top-left-radius: 1px;
+		border-bottom-left-radius: 1px;
+		background: #999;
+		position: absolute;
+		opacity: .2;
+		transform-origin: 50%;
+		animation: load 1.56s ease infinite
+	}
+
+	.uni-load-more__img>.load .item:nth-child(1) {
+		transform: rotate(90deg);
+		top: 2px;
+		left: 9px
+	}
+
+	.uni-load-more__img>.load .item:nth-child(2) {
+		transform: rotate(180deg);
+		top: 11px;
+		right: 0
+	}
+
+	.uni-load-more__img>.load .item:nth-child(3) {
+		transform: rotate(270deg);
+		bottom: 2px;
+		left: 9px
+	}
+
+	.uni-load-more__img>.load .item:nth-child(4) {
+		top: 11px;
+		left: 0
+	}
+
+	.load1,
+	.load2,
+	.load3 {
+		height: 24px;
+		width: 24px
+	}
+
+	.load2 {
+		transform: rotate(30deg)
+	}
+
+	.load3 {
+		transform: rotate(60deg)
+	}
+
+	.load1 .item:nth-child(1) {
+		animation-delay: 0s
+	}
+
+	.load2 .item:nth-child(1) {
+		animation-delay: .13s
+	}
+
+	.load3 .item:nth-child(1) {
+		animation-delay: .26s
+	}
+
+	.load1 .item:nth-child(2) {
+		animation-delay: .39s
+	}
+
+	.load2 .item:nth-child(2) {
+		animation-delay: .52s
+	}
+
+	.load3 .item:nth-child(2) {
+		animation-delay: .65s
+	}
+
+	.load1 .item:nth-child(3) {
+		animation-delay: .78s
+	}
+
+	.load2 .item:nth-child(3) {
+		animation-delay: .91s
+	}
+
+	.load3 .item:nth-child(3) {
+		animation-delay: 1.04s
+	}
+
+	.load1 .item:nth-child(4) {
+		animation-delay: 1.17s
+	}
+
+	.load2 .item:nth-child(4) {
+		animation-delay: 1.3s
+	}
+
+	.load3 .item:nth-child(4) {
+		animation-delay: 1.43s
+	}
+
+	@-webkit-keyframes load {
+		0% {
+			opacity: 1
+		}
+
+		100% {
+			opacity: .2
+		}
+	}
+</style>

+ 396 - 0
components/uni-notice-bar/uni-notice-bar.vue

@@ -0,0 +1,396 @@
+<template>
+	<view v-if="show" class="uni-noticebar" :style="{ backgroundColor: backgroundColor }" @click="onClick">
+		<!-- #ifdef MP-ALIPAY -->
+		<view v-if="showClose === true || showClose === 'true'" class="uni-noticebar-close" @click="close">
+			<uni-icons type="closefill" :color="color" size="12" />
+		</view>
+		<view v-if="showIcon === true || showIcon === 'true'" class="uni-noticebar-icon">
+			<uni-icons type="sound" :color="color" size="14" />
+		</view>
+		<!-- #endif -->
+		<!-- #ifndef MP-ALIPAY -->
+		<uni-icons v-if="showClose === true || showClose === 'true'" class="uni-noticebar-close" type="closefill" :color="color"
+		 size="12" @click="close" />
+		<uni-icons v-if="showIcon === true || showIcon === 'true'" class="uni-noticebar-icon" type="sound" :color="color"
+		 size="14" />
+		<!-- #endif -->
+		<view ref="textBox" class="uni-noticebar__content-wrapper" :class="{'uni-noticebar__content-wrapper--scrollable':scrollable, 'uni-noticebar__content-wrapper--single':!scrollable && (single || moreText)}">
+			<view :id="elIdBox" class="uni-noticebar__content" :class="{'uni-noticebar__content--scrollable':scrollable, 'uni-noticebar__content--single':!scrollable && (single || moreText)}">
+				<text :id="elId" ref="animationEle" class="uni-noticebar__content-text" :class="{'uni-noticebar__content-text--scrollable':scrollable,'uni-noticebar__content-text--single':!scrollable && (single || moreText)}"
+				 :style="{color:color, width:wrapWidth+'px', 'animationDuration': animationDuration, '-webkit-animationDuration': animationDuration ,animationPlayState: webviewHide?'paused':animationPlayState,'-webkit-animationPlayState':webviewHide?'paused':animationPlayState, animationDelay: animationDelay, '-webkit-animationDelay':animationDelay}">{{text}}</text>
+			</view>
+		</view>
+		<view v-if="showGetMore === true || showGetMore === 'true'" class="uni-noticebar__more" @click="clickMore">
+			<text v-if="moreText" :style="{ color: moreColor }" class="uni-noticebar__more-text">{{ moreText }}</text>
+			<uni-icons type="arrowright" :color="moreColor" size="14" />
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcons from '../uni-icons/uni-icons.vue'
+	// #ifdef APP-NVUE
+	const dom = weex.requireModule('dom');
+	const animation = weex.requireModule('animation');
+	// #endif
+
+	/**
+	 * NoticeBar 自定义导航栏
+	 * @description 通告栏组件
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=30
+	 * @property {Number} speed 文字滚动的速度,默认100px/秒
+	 * @property {String} text 显示文字
+	 * @property {String} backgroundColor 背景颜色
+	 * @property {String} color 文字颜色
+	 * @property {String} moreColor 查看更多文字的颜色
+	 * @property {String} moreText 设置“查看更多”的文本
+	 * @property {Boolean} single = [true|false] 是否单行
+	 * @property {Boolean} scrollable = [true|false] 是否滚动,为true时,NoticeBar为单行
+	 * @property {Boolean} showIcon = [true|false] 是否显示左侧喇叭图标
+	 * @property {Boolean} showClose = [true|false] 是否显示左侧关闭按钮
+	 * @property {Boolean} showGetMore = [true|false] 是否显示右侧查看更多图标,为true时,NoticeBar为单行
+	 * @event {Function} click 点击 NoticeBar 触发事件
+	 * @event {Function} close 关闭 NoticeBar 触发事件
+	 * @event {Function} getmore 点击”查看更多“时触发事件
+	 */
+
+	export default {
+		name: 'UniNoticeBar',
+		components: {
+			uniIcons
+		},
+		props: {
+			text: {
+				type: String,
+				default: ''
+			},
+			moreText: {
+				type: String,
+				default: ''
+			},
+			backgroundColor: {
+				type: String,
+				default: '#fffbe8'
+			},
+			speed: {
+				// 默认1s滚动100px
+				type: Number,
+				default: 100
+			},
+			color: {
+				type: String,
+				default: '#de8c17'
+			},
+			moreColor: {
+				type: String,
+				default: '#999999'
+			},
+			single: {
+				// 是否单行
+				type: [Boolean, String],
+				default: false
+			},
+			scrollable: {
+				// 是否滚动,添加后控制单行效果取消
+				type: [Boolean, String],
+				default: false
+			},
+			showIcon: {
+				// 是否显示左侧icon
+				type: [Boolean, String],
+				default: false
+			},
+			showGetMore: {
+				// 是否显示右侧查看更多
+				type: [Boolean, String],
+				default: false
+			},
+			showClose: {
+				// 是否显示左侧关闭按钮
+				type: [Boolean, String],
+				default: false
+			}
+		},
+		data() {
+			const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
+			const elIdBox = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
+			return {
+				textWidth: 0,
+				boxWidth: 0,
+				wrapWidth: '',
+				webviewHide: false,
+				// #ifdef APP-NVUE
+				stopAnimation: false,
+				// #endif
+				elId: elId,
+				elIdBox: elIdBox,
+				show: true,
+				animationDuration: 'none',
+				animationPlayState: 'paused',
+				animationDelay: '0s'
+			}
+		},
+		mounted() {
+			// #ifdef APP-PLUS
+			var pages = getCurrentPages();
+			var page = pages[pages.length - 1];
+			var currentWebview = page.$getAppWebview();
+			currentWebview.addEventListener('hide',()=>{
+				this.webviewHide = true
+			})
+			currentWebview.addEventListener('show',()=>{
+				this.webviewHide = false
+			})
+			// #endif
+			this.$nextTick(() => {
+				this.initSize()
+			})
+		},
+		// #ifdef APP-NVUE
+		beforeDestroy() {
+			this.stopAnimation = true
+		},
+		// #endif
+		methods: {
+			initSize() {
+				if (this.scrollable) {
+					// #ifndef APP-NVUE
+					let query = [],
+						boxWidth = 0,
+						textWidth = 0;
+					let textQuery = new Promise((resolve, reject) => {
+						uni.createSelectorQuery()
+							// #ifndef MP-ALIPAY
+							.in(this)
+							// #endif
+							.select(`#${this.elId}`)
+							.boundingClientRect()
+							.exec(ret => {
+								this.textWidth = ret[0].width
+								resolve()
+							})
+					})
+					let boxQuery = new Promise((resolve, reject) => {
+						uni.createSelectorQuery()
+							// #ifndef MP-ALIPAY
+							.in(this)
+							// #endif
+							.select(`#${this.elIdBox}`)
+							.boundingClientRect()
+							.exec(ret => {
+								this.boxWidth = ret[0].width
+								resolve()
+							})
+					})
+					query.push(textQuery)
+					query.push(boxQuery)
+					Promise.all(query).then(() => {
+						this.animationDuration = `${this.textWidth / this.speed}s`
+						this.animationDelay = `-${this.boxWidth / this.speed}s`
+						setTimeout(() => {
+							this.animationPlayState = 'running'
+						}, 1000)
+					})
+					// #endif
+					// #ifdef APP-NVUE
+					dom.getComponentRect(this.$refs['animationEle'], (res) => {
+						let winWidth = uni.getSystemInfoSync().windowWidth
+						this.textWidth = res.size.width
+						animation.transition(this.$refs['animationEle'], {
+							styles: {
+								transform: `translateX(-${winWidth}px)`
+							},
+							duration: 0,
+							timingFunction: 'linear',
+							delay: 0
+						}, () => {
+							if (!this.stopAnimation) {
+								animation.transition(this.$refs['animationEle'], {
+									styles: {
+										transform: `translateX(-${this.textWidth}px)`
+									},
+									timingFunction: 'linear',
+									duration: (this.textWidth - winWidth) / this.speed * 1000,
+									delay: 1000
+								}, () => {
+									if (!this.stopAnimation) {
+										this.loopAnimation()
+									}
+								});
+							}
+						});
+					})
+					// #endif
+				}
+				// #ifdef APP-NVUE
+				if (!this.scrollable && (this.single || this.moreText)) {
+					dom.getComponentRect(this.$refs['textBox'], (res) => {
+						this.wrapWidth = res.size.width
+					})
+				}
+				// #endif
+			},
+			loopAnimation() {
+				// #ifdef APP-NVUE
+				animation.transition(this.$refs['animationEle'], {
+					styles: {
+						transform: `translateX(0px)`
+					},
+					duration: 0
+				}, () => {
+					if (!this.stopAnimation) {
+						animation.transition(this.$refs['animationEle'], {
+							styles: {
+								transform: `translateX(-${this.textWidth}px)`
+							},
+							duration: this.textWidth / this.speed * 1000,
+							timingFunction: 'linear',
+							delay: 0
+						}, () => {
+							if (!this.stopAnimation) {
+								this.loopAnimation()
+							}
+						});
+					}
+				});
+				// #endif
+			},
+			clickMore() {
+				this.$emit('getmore')
+			},
+			close() {
+				this.show = false;
+				this.$emit('close')
+			},
+			onClick() {
+				this.$emit('click')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import '@/uni.scss';
+
+	.uni-noticebar {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		width: 100%;
+		box-sizing: border-box;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		padding: 6px 12px;
+		margin-bottom: 10px;
+	}
+
+	.uni-noticebar-close {
+		margin-right: 5px;
+	}
+
+	.uni-noticebar-icon {
+		margin-right: 5px;
+	}
+
+	.uni-noticebar__content-wrapper {
+		flex: 1;
+		flex-direction: column;
+		overflow: hidden;
+	}
+
+	.uni-noticebar__content-wrapper--single {
+		/* #ifndef APP-NVUE */
+		line-height: 18px;
+		/* #endif */
+	}
+
+	.uni-noticebar__content-wrapper--single,
+	.uni-noticebar__content-wrapper--scrollable {
+		flex-direction: row;
+	}
+
+	/* #ifndef APP-NVUE */
+	.uni-noticebar__content-wrapper--scrollable {
+		position: relative;
+		height: 18px;
+	}
+	/* #endif */
+
+	.uni-noticebar__content--scrollable {
+		/* #ifdef APP-NVUE */
+		flex: 0;
+		/* #endif */
+		/* #ifndef APP-NVUE */
+		flex: 1;
+		display: block;
+		overflow: hidden;
+		/* #endif */
+	}
+
+	.uni-noticebar__content--single {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		flex: none;
+		width: 100%;
+		justify-content: center;
+		/* #endif */
+	}
+
+	.uni-noticebar__content-text {
+		font-size: 14px;
+		line-height: 18px;
+		/* #ifndef APP-NVUE */
+		word-break: break-all;
+		/* #endif */
+	}
+
+	.uni-noticebar__content-text--single {
+		/* #ifdef APP-NVUE */
+		lines: 1;
+		/* #endif */
+		/* #ifndef APP-NVUE */
+		display: block;
+		width: 100%;
+		white-space: nowrap;
+		/* #endif */
+		overflow: hidden;
+		text-overflow: ellipsis;
+	}
+
+	.uni-noticebar__content-text--scrollable {
+		/* #ifdef APP-NVUE */
+		lines: 1;
+		padding-left: 750rpx;
+		/* #endif */
+		/* #ifndef APP-NVUE */
+		position: absolute;
+		display: block;
+		height: 18px;
+		line-height: 18px;
+		white-space: nowrap;
+		padding-left: 100%;
+		animation: notice 10s 0s linear infinite both;
+		animation-play-state: paused;
+		/* #endif */
+	}
+
+	.uni-noticebar__more {
+		/* #ifndef APP-NVUE */
+		display: inline-flex;
+		/* #endif */
+		flex-direction: row;
+		flex-wrap: nowrap;
+		align-items: center;
+		padding-left: 5px;
+	}
+
+	.uni-noticebar__more-text {
+		font-size: 14px;
+	}
+
+	@keyframes notice {
+		100% {
+			transform: translate3d(-100%, 0, 0);
+		}
+	}
+</style>

+ 198 - 0
components/uni-number-box.vue

@@ -0,0 +1,198 @@
+<template>
+	<view class="uni-numbox">
+		<view class="uni-numbox-minus" 
+			@click="_calcValue('subtract')"
+		>
+			<text class="iconfont iconmove" :class="minDisabled?'uni-numbox-disabled': ''" ></text>
+		</view>
+		<input 
+			class="uni-numbox-value" 
+			type="number"  
+			:disabled="disabled"
+			:value="inputValue" 
+			@blur="_onBlur"
+		>
+		<view 
+			class="uni-numbox-plus" 
+			@click="_calcValue('add')"
+		>
+			<text class="iconfont iconadd" :class="maxDisabled?'uni-numbox-disabled': ''" ></text>
+		</view>
+	</view>
+</template>
+<script>
+	export default {
+		name: 'uni-number-box',
+		props: {
+			isMax: {
+				type: Boolean,
+				default: false
+			},
+			isMin: {
+				type: Boolean,
+				default: false
+			},
+			index: {
+				type: Number,
+				default: 0
+			},
+			value: {
+				type: Number,
+				default: 0
+			},
+			min: {
+				type: Number,
+				default: -Infinity
+			},
+			max: {
+				type: Number,
+				default: Infinity
+			},
+			step: {
+				type: Number,
+				default: 1
+			},
+			disabled: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				inputValue: this.value,
+				minDisabled: false,
+				maxDisabled: false
+			}
+		},
+		created(){
+			this.maxDisabled = this.isMax;
+			this.minDisabled = this.isMin;
+		},
+		computed: {
+
+		},
+		watch: {
+			inputValue(number) {
+				const data = {
+					number: number,
+					index: this.index
+				}
+				this.$emit('eventChange', data);
+			}
+		},
+		methods: {
+			_calcValue(type) {
+				const scale = this._getDecimalScale();
+				let value = this.inputValue * scale;
+				let newValue = 0;
+				let step = this.step * scale;
+				
+				if(type === 'subtract'){
+					newValue = value - step;
+					if (newValue <= this.min){
+						this.minDisabled = true;
+					}
+					if(newValue < this.min){
+						newValue = this.min
+					}
+					if(newValue < this.max && this.maxDisabled === true){
+						this.maxDisabled = false;
+					}
+				}else if(type === 'add'){
+					newValue = value + step;
+					if (newValue >= this.max){
+						this.maxDisabled = true;
+					}
+					if(newValue > this.max){
+						newValue = this.max
+					}
+					if(newValue > this.min && this.minDisabled === true){
+						this.minDisabled = false;
+					}
+				}
+				if(newValue === value){
+					return;
+				}
+				this.inputValue = newValue / scale;
+			},
+			_getDecimalScale() {
+				let scale = 1;
+				// 浮点型
+				if (~~this.step !== this.step) {
+					scale = Math.pow(10, (this.step + '').split('.')[1].length);
+				}
+				return scale;
+			},
+			_onBlur(event) {
+				let value = event.detail.value;
+				if (!value) {
+					this.inputValue = 0;
+					return
+				}
+				value = +value;
+				if (value > this.max) {
+					value = this.max;
+				} else if (value < this.min) {
+					value = this.min
+				}
+
+				this.inputValue = value
+			}
+		}
+	}
+</script>
+<style>
+	.uni-numbox {
+		/* position:absolute; */
+		/* left: 30rpx; */
+		/* bottom: 0; */
+		display: flex;
+		justify-content: flex-start;
+		align-items: center;
+		width:230rpx;
+		height: 70rpx;
+		background:#f5f5f5;
+	}
+
+	.uni-numbox-minus,
+	.uni-numbox-plus {
+		margin: 0;
+		background-color: #f5f5f5;
+		width: 70rpx;
+		height: 100%;
+		line-height: 70rpx;
+		text-align: center;
+		position: relative;
+	}
+	.uni-numbox-minus .yticon,
+	.uni-numbox-plus .yticon{
+		font-size: 36rpx;
+		color: #555;
+	}
+
+	.uni-numbox-minus {
+		border-right: none;
+		border-top-left-radius: 6rpx;
+		border-bottom-left-radius: 6rpx;
+	}
+
+	.uni-numbox-plus {
+		border-left: none;
+		border-top-right-radius: 6rpx;
+		border-bottom-right-radius: 6rpx;
+	}
+
+	.uni-numbox-value {
+		position: relative;
+		background-color: #f5f5f5;
+		width: 90rpx;
+		height: 50rpx;
+		text-align: center;
+		padding: 0;
+		font-size: 30rpx;
+	}
+
+	.uni-numbox-disabled.iconfont {
+		color: #d6d6d6;
+	}
+</style>

+ 243 - 0
components/uni-popup/uni-popup-dialog.vue

@@ -0,0 +1,243 @@
+<template>
+	<view class="uni-popup-dialog">
+		<view class="uni-dialog-title">
+			<text class="uni-dialog-title-text" :class="['uni-popup__'+dialogType]">{{title}}</text>
+		</view>
+		<view class="uni-dialog-content">
+			<text class="uni-dialog-content-text" v-if="mode === 'base'">{{content}}</text>
+			<input v-else class="uni-dialog-input" v-model="val" type="text" :placeholder="placeholder" :focus="focus" >
+		</view>
+		<view class="uni-dialog-button-group">
+			<view class="uni-dialog-button" @click="close">
+				<text class="uni-dialog-button-text">取消</text>
+			</view>
+			<view class="uni-dialog-button uni-border-left" @click="onOk">
+				<text class="uni-dialog-button-text uni-button-color">确定</text>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	/**
+	 * PopUp 弹出层-对话框样式
+	 * @description 弹出层-对话框样式
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} value input 模式下的默认值
+	 * @property {String} placeholder input 模式下输入提示
+	 * @property {String} type = [success|warning|info|error] 主题样式
+	 *  @value success 成功
+	 * 	@value warning 提示
+	 * 	@value info 消息
+	 * 	@value error 错误
+	 * @property {String} mode = [base|input] 模式、
+	 * 	@value base 基础对话框
+	 * 	@value input 可输入对话框
+	 * @property {String} content 对话框内容
+	 * @property {Boolean} beforeClose 是否拦截取消事件
+	 * @event {Function} confirm 点击确认按钮触发
+	 * @event {Function} close 点击取消按钮触发
+	 */
+
+	export default {
+		name: "uniPopupDialog",
+		props: {
+			value: {
+				type: [String, Number],
+				default: ''
+			},
+			placeholder: {
+				type: [String, Number],
+				default: '请输入内容'
+			},
+			/**
+			 * 对话框主题 success/warning/info/error	  默认 success
+			 */
+			type: {
+				type: String,
+				default: 'error'
+			},
+			/**
+			 * 对话框模式 base/input
+			 */
+			mode: {
+				type: String,
+				default: 'base'
+			},
+			/**
+			 * 对话框标题
+			 */
+			title: {
+				type: String,
+				default: '提示'
+			},
+			/**
+			 * 对话框内容
+			 */
+			content: {
+				type: String,
+				default: ''
+			},
+			/**
+			 * 拦截取消事件 ,如果拦截取消事件,必须监听close事件,执行 done()
+			 */
+			beforeClose: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				dialogType: 'error',
+				focus: false,
+				val: ""
+			}
+		},
+		inject: ['popup'],
+		watch: {
+			type(val) {
+				this.dialogType = val
+			},
+			mode(val) {
+				if (val === 'input') {
+					this.dialogType = 'info'
+				}
+			},
+			value(val) {
+				this.val = val
+			}
+		},
+		created() {
+			// 对话框遮罩不可点击
+			this.popup.mkclick = false
+			if (this.mode === 'input') {
+				this.dialogType = 'info'
+				this.val = this.value
+			} else {
+				this.dialogType = this.type
+			}
+		},
+		mounted() {
+			this.focus = true
+		},
+		methods: {
+			/**
+			 * 点击确认按钮
+			 */
+			onOk() {
+				this.$emit('confirm', () => {
+					this.popup.close()
+					if (this.mode === 'input') this.val = this.value
+				}, this.mode === 'input' ? this.val : '')
+			},
+			/**
+			 * 点击取消按钮
+			 */
+			close() {
+				if (this.beforeClose) {
+					this.$emit('close', () => {
+						this.popup.close()
+					})
+					return
+				}
+				this.popup.close()
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-popup-dialog {
+		width: 300px;
+		border-radius: 15px;
+		background-color: #fff;
+	}
+
+	.uni-dialog-title {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding-top: 15px;
+		padding-bottom: 5px;
+	}
+
+	.uni-dialog-title-text {
+		font-size: 16px;
+		font-weight: 500;
+	}
+
+	.uni-dialog-content {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 5px 15px 15px 15px;
+	}
+
+	.uni-dialog-content-text {
+		font-size: 14px;
+		color: #6e6e6e;
+	}
+
+	.uni-dialog-button-group {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		border-top-color: #f5f5f5;
+		border-top-style: solid;
+		border-top-width: 1px;
+	}
+
+	.uni-dialog-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		height: 45px;
+	}
+
+	.uni-border-left {
+		border-left-color: #f0f0f0;
+		border-left-style: solid;
+		border-left-width: 1px;
+	}
+
+	.uni-dialog-button-text {
+		font-size: 14px;
+	}
+
+	.uni-button-color {
+		color: $uni-color-primary;
+	}
+
+	.uni-dialog-input {
+		flex: 1;
+		font-size: 14px;
+	}
+
+	.uni-popup__success {
+		color: $uni-color-success;
+	}
+
+	.uni-popup__warn {
+		color: $uni-color-warning;
+	}
+
+	.uni-popup__error {
+		color: $uni-color-error;
+	}
+
+	.uni-popup__info {
+		color: #909399;
+	}
+</style>

+ 116 - 0
components/uni-popup/uni-popup-message.vue

@@ -0,0 +1,116 @@
+<template>
+	<view class="uni-popup-message" :class="'uni-popup__'+[type]">
+		<text class="uni-popup-message-text" :class="'uni-popup__'+[type]+'-text'">{{message}}</text>
+	</view>
+</template>
+
+<script>
+	
+	/**
+	 * PopUp 弹出层-消息提示
+	 * @description 弹出层-消息提示
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} type = [success|warning|info|error] 主题样式
+	 *  @value success 成功
+	 * 	@value warning 提示
+	 * 	@value info 消息
+	 * 	@value error 错误
+	 * @property {String} message 消息提示文字
+	 * @property {String} duration 显示时间,设置为 0 则不会自动关闭
+	 */
+	
+	export default {
+		name: 'UniPopupMessage',
+		props: {
+			/**
+			 * 主题 success/warning/info/error	  默认 success
+			 */
+			type: {
+				type: String,
+				default: 'success'
+			},
+			/**
+			 * 消息文字
+			 */
+			message: {
+				type: String,
+				default: ''
+			},
+			/**
+			 * 显示时间,设置为 0 则不会自动关闭
+			 */
+			duration: {
+				type: Number,
+				default: 3000
+			}
+		},
+		inject: ['popup'],
+		data() {
+			return {}
+		},
+		created() {
+			this.popup.childrenMsg = this
+		},
+		methods: {
+			open() {
+				if (this.duration === 0) return
+				clearTimeout(this.popuptimer)
+				this.popuptimer = setTimeout(() => {
+					this.popup.close()
+				}, this.duration)
+			},
+			close() {
+				clearTimeout(this.popuptimer)
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.uni-popup-message {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		background-color: #e1f3d8;
+		padding: 10px 15px;
+		border-color: #eee;
+		border-style: solid;
+		border-width: 1px;
+	}
+	.uni-popup-message-text {
+		font-size: 14px;
+		padding: 0;
+	}
+
+	.uni-popup__success {
+		background-color: #e1f3d8;
+	}
+
+	.uni-popup__success-text {
+		color: #67C23A;
+	}
+
+	.uni-popup__warn {
+		background-color: #faecd8;
+	}
+
+	.uni-popup__warn-text {
+		color: #E6A23C;
+	}
+
+	.uni-popup__error {
+		background-color: #fde2e2;
+	}
+
+	.uni-popup__error-text {
+		color: #F56C6C;
+	}
+
+	.uni-popup__info {
+		background-color: #F2F6FC;
+	}
+
+	.uni-popup__info-text {
+		color: #909399;
+	}
+</style>

+ 263 - 0
components/uni-popup/uni-popup-ori.vue

@@ -0,0 +1,263 @@
+<template>
+	<view v-if="showPopup" class="uni-popup" @touchmove.stop.prevent="clear">
+		<uni-transition :mode-class="['fade']" :styles="maskClass" :duration="duration" :show="showTrans" @click="onTap" />
+		<uni-transition :mode-class="ani" :styles="transClass" :duration="duration" :show="showTrans" @click="onTap">
+			<view class="uni-popup__wrapper-box" @click.stop="clear">
+				<slot />
+			</view>
+		</uni-transition>
+	</view>
+</template>
+
+<script>
+	import uniTransition from '../uni-transition/uni-transition.vue'
+
+	/**
+	 * PopUp 弹出层
+	 * @description 弹出层组件,为了解决遮罩弹层的问题
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} type = [top|center|bottom] 弹出方式
+	 * 	@value top 顶部弹出
+	 * 	@value center 中间弹出
+	 * 	@value bottom 底部弹出
+	 * @property {Boolean} animation = [ture|false] 是否开启动画
+	 * @property {Boolean} maskClick = [ture|false] 蒙版点击是否关闭弹窗
+	 * @event {Function} change 打开关闭弹窗触发,e={show: false}
+	 */
+
+	export default {
+		name: 'UniPopup',
+		components: {
+			uniTransition
+		},
+		props: {
+			// 开启动画
+			animation: {
+				type: Boolean,
+				default: true
+			},
+			// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
+			type: {
+				type: String,
+				default: 'center'
+			},
+			// maskClick
+			maskClick: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			return {
+				duration: 300,
+				ani: [],
+				showPopup: false,
+				showTrans: false,
+				maskClass: {
+					'position': 'fixed',
+					'bottom': 0,
+					'top': 0,
+					'left': 0,
+					'right': 0,
+					'backgroundColor': 'rgba(0, 0, 0, 0.4)'
+				},
+				transClass: {
+					'position': 'fixed',
+					'left': 0,
+					'right': 0,
+				}
+			}
+		},
+		watch: {
+			type: {
+				handler: function(newVal) {
+					switch (this.type) {
+						case 'top':
+							this.ani = ['slide-top']
+							this.transClass = {
+								'position': 'fixed',
+								'left': 0,
+								'right': 0,
+							}
+							break
+						case 'bottom':
+							this.ani = ['slide-bottom']
+							this.transClass = {
+								'position': 'fixed',
+								'left': 0,
+								'right': 0,
+								'bottom': 0
+							}
+							break
+						case 'center':
+							this.ani = ['zoom-out', 'fade']
+							this.transClass = {
+								'position': 'fixed',
+								/* #ifndef APP-NVUE */
+								'display': 'flex',
+								'flexDirection': 'column',
+								/* #endif */
+								'bottom': 0,
+								'left': 0,
+								'right': 0,
+								'top': 0,
+								'justifyContent': 'center',
+								'alignItems': 'center'
+							}
+
+							break
+					}
+				},
+				immediate: true
+			}
+		},
+		created() {
+			if (this.animation) {
+				this.duration = 300
+			} else {
+				this.duration = 0
+			}
+		},
+		methods: {
+			clear(e) {
+				// TODO nvue 取消冒泡
+				e.stopPropagation()
+			},
+			open() {
+				this.showPopup = true
+				this.$nextTick(() => {
+					clearTimeout(this.timer)
+					this.timer = setTimeout(() => {
+						this.showTrans = true
+					}, 50);
+				})
+				this.$emit('change', {
+					show: true
+				})
+			},
+			close(type) {
+				this.showTrans = false
+				this.$nextTick(() => {
+					clearTimeout(this.timer)
+					this.timer = setTimeout(() => {
+						this.$emit('change', {
+							show: false
+						})
+						this.showPopup = false
+					}, 300)
+				})
+			},
+			onTap() {
+				if (!this.maskClick) return
+				this.close()
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.uni-popup {
+		position: fixed;
+		/* #ifdef H5 */
+		top: var(--window-top);
+		/* #endif */
+		/* #ifndef H5 */
+		top: 0;
+		/* #endif */
+		bottom: 0;
+		left: 0;
+		right: 0;
+		/* #ifndef APP-NVUE */
+		z-index: 99;
+		/* #endif */
+	}
+
+	.uni-popup__mask {
+		position: absolute;
+		top: 0;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		background-color: $uni-bg-color-mask;
+		opacity: 0;
+	}
+
+	.mask-ani {
+		transition-property: opacity;
+		transition-duration: 0.2s;
+	}
+
+	.uni-top-mask {
+		opacity: 1;
+	}
+
+	.uni-bottom-mask {
+		opacity: 1;
+	}
+
+	.uni-center-mask {
+		opacity: 1;
+	}
+
+	.uni-popup__wrapper {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		position: absolute;
+	}
+
+	.top {
+		top: 0;
+		left: 0;
+		right: 0;
+		transform: translateY(-500px);
+	}
+
+	.bottom {
+		bottom: 0;
+		left: 0;
+		right: 0;
+		transform: translateY(500px);
+	}
+
+	.center {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		flex-direction: column;
+		/* #endif */
+		bottom: 0;
+		left: 0;
+		right: 0;
+		top: 0;
+		justify-content: center;
+		align-items: center;
+		transform: scale(1.2);
+		opacity: 0;
+	}
+
+	.uni-popup__wrapper-box {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		position: relative;
+	}
+
+	.content-ani {
+		// transition: transform 0.3s;
+		transition-property: transform, opacity;
+		transition-duration: 0.2s;
+	}
+
+
+	.uni-top-content {
+		transform: translateY(0);
+	}
+
+	.uni-bottom-content {
+		transform: translateY(0);
+	}
+
+	.uni-center-content {
+		transform: scale(1);
+		opacity: 1;
+	}
+</style>

+ 282 - 0
components/uni-popup/uni-popup-share.vue

@@ -0,0 +1,282 @@
+<template>
+	<view>
+		<uni-popup-ori ref="showshare" type="bottom">
+			<view class="uni-share">
+				<text class="uni-share-title">分享到</text>
+				<view class="uni-share-content">
+					<view v-for="(item, index) in bottomData" :key="index" class="uni-share-content-box" @click="shareTo(item.name)">
+						<view class="uni-share-content-image"><image :src="item.icon" class="content-image" mode="widthFix" /></view>
+						<text class="uni-share-content-text">{{ item.text }}</text>
+					</view>
+				</view>
+				<text class="uni-share-btn" @click="cancel()">取消分享</text>
+			</view>
+		</uni-popup-ori>
+		<uni-popup-ori ref="showPast" type="center" class="popupPast">
+			<view class="backPop">
+				<view class="popPast">
+					<view class="popTitle">口令已复制</view>
+					<view class="popContent">
+						<view>{{ describe }}</view>
+					</view>
+					<view class="popBtn" @click="goWhere(1)" v-if="popType == 'wx'">
+						<!-- <image src="../../static/spend/wxin.png" mode="widthFix"></image> -->
+						<view>去微信粘贴给好友</view>
+					</view>
+					<view class="popBtn" @click="goWhere(2)" v-if="popType == 'timeline'">
+						<!-- <image src="../../static/spend/wechat.png" mode="widthFix"></image> -->
+						<view>粘贴到朋友圈</view>
+					</view>
+				</view>
+				<icon type="cancel" size="26" color="white" style="margin-top: 40rpx;" @click="cancelPo" />
+			</view>
+		</uni-popup-ori>
+	</view>
+</template>
+
+<script>
+import uniPopupOri from '@/components/uni-popup/uni-popup-ori.vue';
+import { mapState, mapMutations } from 'vuex';
+import { getActionPage } from '@/utils/loginUtils.js';
+export default {
+	name: 'SharePopup',
+	components: {
+		uniPopupOri
+	},
+	props: ['opt', 'type','option'],
+	data() {
+		return {
+			describe: '',
+			shareoption: '',
+			bottomData: [
+				{
+					text: '微信',
+					icon: '../../static/spend/wxin.png',
+					name: 'wx'
+				},
+				{
+					text: '朋友圈',
+					icon: '../../static/spend/wechat.png',
+					name: 'timeline'
+				}
+			],
+			popType: '',
+			uid: ''
+		};
+	},
+	computed: {
+		...mapState(['userInfo', 'baseURL'])
+	},
+	mounted() {},
+	methods: {
+		loadData() {
+			try {
+				let prePage = getActionPage();
+				var path = prePage.route;
+				this.uid = this.userInfo.uid;
+				//获取object转化成
+				var parm = '';
+				var i = 0;
+				var option = this.option; //其他页面传值
+				console.log(option,'option')
+				if(this.type == 4){
+					parm = parm + '?' + 'promo_code=' + option;
+				}else{
+					for (let item in option) {
+						//拼接参数
+						if (i == 0) {
+							parm = '?' + item + '=' + option[item];
+						} else {
+							parm = parm + '&' + item + '=' + option[item];
+						}
+						i++;
+					}
+				}
+				if(this.type == 4){
+					var url = 'pages/index/index' + parm;
+				}else{
+					var url = path + parm;
+				}
+				console.log(path,'path')
+				console.log(parm,'parm')
+				//用后台加密
+				//第一个参数是判断是不是我们的链接
+				//第二个参数是访问地址
+				//第三个参数是,类型,type:0商品,type=1拼团,type=2邀请注册,type=3邀请好友参团,type=4邀请好友助力
+				//第四个参数是share的id
+				console.log(option,'option')
+				if(this.type == 4){
+					this.describe = this.baseURL + '@' + url + '@' + this.type + '@' + this.uid + '@复制这段话进入美美赚,自动打开页面';
+				}else{
+					this.describe = this.baseURL + '@' + url + '@' + this.type + '@' + this.uid + '@复制这段话进入美美赚,自动打开页面';
+				}
+				console.log(this.describe);
+				let obj = this;
+				// #ifndef H5
+				uni.setClipboardData({
+					data: this.describe,
+					  success: function () {
+					        uni.hideToast();
+					    }
+				});
+				// #endif
+			} catch (e) {
+				console.log(e);
+				//TODO handle the exception
+			}
+		},
+		goWhere(type) {
+			this.$api.msg('复制成功');
+		},
+		cancelPo() {
+			this.$nextTick(() => {
+				this.$refs['showPast'].close();
+			});
+		},
+		shareTo(name) {
+			this.popType = name;
+			this.$nextTick(() => {
+				this.$refs.showPast.open();
+				this.$refs['showshare'].close();
+			});
+		},
+		cancel() {
+			this.$nextTick(() => {
+				this.$refs['showshare'].close();
+			});
+		},
+		open() {
+			this.$nextTick(() => {
+				this.$refs['showshare'].open();
+			});
+		}
+	}
+};
+</script>
+<style lang="scss" scoped>
+.backPop {
+	padding: 0rpx 25rpx;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+}
+.popupPast {
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+	text-align: center;
+}
+.popPast {
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	padding: 40rpx 30rpx;
+	width: 90%;
+	background-color: white;
+	border-radius: 18rpx;
+	align-items: center;
+	.popTitle {
+		color: #2f2f2f;
+		font-size: 32rpx;
+		font-weight: bold;
+		margin-bottom: 40rpx;
+	}
+	.popContent {
+		background-color: #f4f4f4;
+		padding: 30rpx 24rpx;
+		border-radius: 16rpx;
+		view {
+			font-size: 24rpx;
+			color: #939393;
+		}
+		margin-bottom: 40rpx;
+	}
+	.popBtn {
+		display: flex;
+		align-items: center;
+		padding: 20rpx 40rpx;
+		background-color: #04be02;
+		border-radius: 60rpx;
+		image {
+			width: 36rpx;
+		}
+		view {
+			color: white;
+			font-size: 36rpx;
+			margin-left: 10rpx;
+		}
+	}
+}
+/* 底部分享 */
+.uni-share {
+	/* #ifndef APP-NVUE */
+	display: flex;
+	flex-direction: column;
+	/* #endif */
+	background-color: #fff;
+}
+
+.uni-share-title {
+	line-height: 60rpx;
+	font-size: 24rpx;
+	padding: 15rpx 0;
+	text-align: center;
+}
+
+.uni-share-content {
+	/* #ifndef APP-NVUE */
+	display: flex;
+	/* #endif */
+	flex-direction: row;
+	flex-wrap: wrap;
+	justify-content: center;
+	padding: 15px;
+}
+
+.uni-share-content-box {
+	/* #ifndef APP-NVUE */
+	display: flex;
+	/* #endif */
+	flex-direction: column;
+	align-items: center;
+	width: 200rpx;
+}
+
+.uni-share-content-image {
+	/* #ifndef APP-NVUE */
+	display: flex;
+	/* #endif */
+	flex-direction: row;
+	justify-content: center;
+	align-items: center;
+	width: 60rpx;
+	height: 60rpx;
+	overflow: hidden;
+	border-radius: 10rpx;
+}
+
+.content-image {
+	width: 60rpx;
+	height: 60rpx;
+}
+
+.uni-share-content-text {
+	font-size: 26rpx;
+	color: #333;
+	padding-top: 5px;
+	padding-bottom: 10px;
+}
+
+.uni-share-btn {
+	height: 90rpx;
+	line-height: 90rpx;
+	font-size: 14px;
+	border-top-color: #f5f5f5;
+	border-top-width: 1px;
+	border-top-style: solid;
+	text-align: center;
+	color: #666;
+}
+</style>

+ 263 - 0
components/uni-popup/uni-popup.vue

@@ -0,0 +1,263 @@
+<template>
+	<view v-if="showPopup" class="uni-popup" @touchmove.stop.prevent="clear">
+		<uni-transition :mode-class="['fade']" :styles="maskClass" :duration="duration" :show="showTrans" @click="onTap" />
+		<uni-transition :mode-class="ani" :styles="transClass" :duration="duration" :show="showTrans" @click="onTap">
+			<view class="uni-popup__wrapper-box" @click.stop="clear">
+				<slot />
+			</view>
+		</uni-transition>
+	</view>
+</template>
+
+<script>
+	import uniTransition from '../uni-transition/uni-transition.vue'
+
+	/**
+	 * PopUp 弹出层
+	 * @description 弹出层组件,为了解决遮罩弹层的问题
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} type = [top|center|bottom] 弹出方式
+	 * 	@value top 顶部弹出
+	 * 	@value center 中间弹出
+	 * 	@value bottom 底部弹出
+	 * @property {Boolean} animation = [ture|false] 是否开启动画
+	 * @property {Boolean} maskClick = [ture|false] 蒙版点击是否关闭弹窗
+	 * @event {Function} change 打开关闭弹窗触发,e={show: false}
+	 */
+
+	export default {
+		name: 'UniPopup',
+		components: {
+			uniTransition
+		},
+		props: {
+			// 开启动画
+			animation: {
+				type: Boolean,
+				default: true
+			},
+			// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
+			type: {
+				type: String,
+				default: 'center'
+			},
+			// maskClick
+			maskClick: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			return {
+				duration: 300,
+				ani: [],
+				showPopup: false,
+				showTrans: false,
+				maskClass: {
+					'position': 'fixed',
+					'bottom': 0,
+					'top': 0,
+					'left': 0,
+					'right': 0,
+					'backgroundColor': 'rgba(0, 0, 0, 0.4)'
+				},
+				transClass: {
+					'position': 'fixed',
+					'left': 0,
+					'right': 0,
+				}
+			}
+		},
+		watch: {
+			type: {
+				handler: function(newVal) {
+					switch (this.type) {
+						case 'top':
+							this.ani = ['slide-top']
+							this.transClass = {
+								'position': 'fixed',
+								'left': 0,
+								'right': 0,
+							}
+							break
+						case 'bottom':
+							this.ani = ['slide-bottom']
+							this.transClass = {
+								'position': 'fixed',
+								'left': 0,
+								'right': 0,
+								'bottom': 0
+							}
+							break
+						case 'center':
+							this.ani = ['zoom-out', 'fade']
+							this.transClass = {
+								'position': 'fixed',
+								/* #ifndef APP-NVUE */
+								'display': 'flex',
+								'flexDirection': 'column',
+								/* #endif */
+								'bottom': 0,
+								'left': 0,
+								'right': 0,
+								'top': 0,
+								'justifyContent': 'center',
+								'alignItems': 'center'
+							}
+
+							break
+					}
+				},
+				immediate: true
+			}
+		},
+		created() {
+			if (this.animation) {
+				this.duration = 300
+			} else {
+				this.duration = 0
+			}
+		},
+		methods: {
+			clear(e) {
+				// TODO nvue 取消冒泡
+				e.stopPropagation()
+			},
+			open() {
+				this.showPopup = true
+				this.$nextTick(() => {
+					clearTimeout(this.timer)
+					this.timer = setTimeout(() => {
+						this.showTrans = true
+					}, 50);
+				})
+				this.$emit('change', {
+					show: true
+				})
+			},
+			close(type) {
+				this.showTrans = false
+				this.$nextTick(() => {
+					clearTimeout(this.timer)
+					this.timer = setTimeout(() => {
+						this.$emit('change', {
+							show: false
+						})
+						this.showPopup = false
+					}, 300)
+				})
+			},
+			onTap() {
+				if (!this.maskClick) return
+				this.close()
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.uni-popup {
+		position: fixed;
+		/* #ifdef H5 */
+		top: var(--window-top);
+		/* #endif */
+		/* #ifndef H5 */
+		top: 0;
+		/* #endif */
+		bottom: 0;
+		left: 0;
+		right: 0;
+		/* #ifndef APP-NVUE */
+		z-index: 99;
+		/* #endif */
+	}
+
+	.uni-popup__mask {
+		position: absolute;
+		top: 0;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		background-color: $uni-bg-color-mask;
+		opacity: 0;
+	}
+
+	.mask-ani {
+		transition-property: opacity;
+		transition-duration: 0.2s;
+	}
+
+	.uni-top-mask {
+		opacity: 1;
+	}
+
+	.uni-bottom-mask {
+		opacity: 1;
+	}
+
+	.uni-center-mask {
+		opacity: 1;
+	}
+
+	.uni-popup__wrapper {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		position: absolute;
+	}
+
+	.top {
+		top: 0;
+		left: 0;
+		right: 0;
+		transform: translateY(-500px);
+	}
+
+	.bottom {
+		bottom: 0;
+		left: 0;
+		right: 0;
+		transform: translateY(500px);
+	}
+
+	.center {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		flex-direction: column;
+		/* #endif */
+		bottom: 0;
+		left: 0;
+		right: 0;
+		top: 0;
+		justify-content: center;
+		align-items: center;
+		transform: scale(1.2);
+		opacity: 0;
+	}
+
+	.uni-popup__wrapper-box {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		position: relative;
+	}
+
+	.content-ani {
+		// transition: transform 0.3s;
+		transition-property: transform, opacity;
+		transition-duration: 0.2s;
+	}
+
+
+	.uni-top-content {
+		transform: translateY(0);
+	}
+
+	.uni-bottom-content {
+		transform: translateY(0);
+	}
+
+	.uni-center-content {
+		transform: scale(1);
+		opacity: 1;
+	}
+</style>

+ 141 - 0
components/uni-rate/uni-rate.vue

@@ -0,0 +1,141 @@
+<template>
+	<view class="uni-rate">
+		<view :key="index" :style="{ marginLeft: margin + 'px' }" @click="_onClick(index)" class="uni-rate__icon" v-for="(star, index) in stars">
+			<uni-icons :color="color" :size="size" :type="isFill ? 'star-filled' : 'star'" />
+			<!-- #ifdef APP-NVUE -->
+			<view :style="{ width: star.activeWitch.replace('%','')*size/100+'px'}" class="uni-rate__icon-on">
+				<uni-icons style="text-align: left;" :color="activeColor" :size="size" type="star-filled" />
+			</view>
+			<!-- #endif -->
+			<!-- #ifndef APP-NVUE -->
+			<view :style="{ width: star.activeWitch,top:-size/2+'px' }" class="uni-rate__icon-on">
+				<uni-icons :color="activeColor" :size="size" type="star-filled" />
+			</view>
+			<!-- #endif -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcons from "../uni-icons/uni-icons.vue";
+	export default {
+		name: "UniRate",
+		components: {
+			uniIcons
+		},
+		props: {
+			isFill: {
+				// 星星的类型,是否镂空
+				type: [Boolean, String],
+				default: true
+			},
+			color: {
+				// 星星的颜色
+				type: String,
+				default: "#ececec"
+			},
+			activeColor: {
+				// 星星选中状态颜色
+				type: String,
+				default: "#ffca3e"
+			},
+			size: {
+				// 星星的大小
+				type: [Number, String],
+				default: 24
+			},
+			value: {
+				// 当前评分
+				type: [Number, String],
+				default: 0
+			},
+			max: {
+				// 最大评分
+				type: [Number, String],
+				default: 5
+			},
+			margin: {
+				// 星星的间距
+				type: [Number, String],
+				default: 0
+			},
+			disabled: {
+				// 是否可点击
+				type: [Boolean, String],
+				default: false
+			}
+		},
+		data() {
+			return {
+				valueSync: ""
+			};
+		},
+		computed: {
+			stars() {
+				const value = this.valueSync ? this.valueSync : 0;
+				const starList = [];
+				const floorValue = Math.floor(value);
+				const ceilValue = Math.ceil(value);
+				// console.log("ceilValue: " + ceilValue);
+				// console.log("floorValue: " + floorValue);
+				for (let i = 0; i < this.max; i++) {
+					if (floorValue > i) {
+						starList.push({
+							activeWitch: "100%"
+						});
+					} else if (ceilValue - 1 === i) {
+						starList.push({
+							activeWitch: (value - floorValue) * 100 + "%"
+						});
+					} else {
+						starList.push({
+							activeWitch: "0"
+						});
+					}
+				}
+				console.log("starList[4]: " + starList[4].activeWitch);
+				return starList;
+			}
+		},
+		created() {
+			this.valueSync = Number(this.value);
+		},
+		methods: {
+			_onClick(index) {
+				if (this.disabled) {
+					return;
+				}
+				this.valueSync = index + 1;
+				this.$emit("change", {
+					value: this.valueSync
+				});
+			}
+		}
+	};
+</script>
+
+<style lang="scss" scoped>
+	.uni-rate {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		line-height: 0;
+		font-size: 0;
+		flex-direction: row;
+	}
+
+	.uni-rate__icon {
+		position: relative;
+		line-height: 0;
+		font-size: 0;
+	}
+
+	.uni-rate__icon-on {
+		overflow: hidden;
+		position: absolute;
+		top: 0;
+		left: 0;
+		line-height: 1;
+		text-align: left;
+	}
+</style>

+ 244 - 0
components/uni-steps/uni-steps.vue

@@ -0,0 +1,244 @@
+<template>
+	<view class="uni-steps">
+		<view :class="[direction==='column'?'uni-steps__column':'uni-steps__row']">
+			<view :class="[direction==='column'?'uni-steps__column-text-container':'uni-steps__row-text-container']">
+				<view v-for="(item,index) in options" :key="index" :class="[direction==='column'?'uni-steps__column-text':'uni-steps__row-text']">
+					<text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-title':'uni-steps__row-title']">{{item.status}}</text>
+					<text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-desc':'uni-steps__row-desc']">{{item.context}}</text>
+					<text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-desc':'uni-steps__row-desc']">{{item.time}}</text>
+				</view>
+			</view>
+			<view :class="[direction==='column'?'uni-steps__column-container':'uni-steps__row-container']">
+				<view :class="[direction==='column'?'uni-steps__column-line-item':'uni-steps__row-line-item']" v-for="(item,index) in options"
+				 :key="index">
+					<view :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--before':'uni-steps__row-line--before']"
+					 :style="{backgroundColor:index<=active&&index!==0?activeColor:index===0?'transparent':deactiveColor}"></view>
+					<view :class="[direction==='column'?'uni-steps__column-check':'uni-steps__row-check']" v-if="index === active">
+						<uni-icons :color="activeColor" type="checkbox-filled" size="14"></uni-icons>
+					</view>
+					<view :class="[direction==='column'?'uni-steps__column-circle':'uni-steps__row-circle']" v-else :style="{backgroundColor:index<active?activeColor:deactiveColor}"></view>
+					<view :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--after':'uni-steps__row-line--after']"
+					 :style="{backgroundColor:index<active&&index!==options.length-1?activeColor:index===options.length-1?'transparent':deactiveColor}"></view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcons from '../uni-icons/uni-icons.vue'
+	export default {
+		name: 'UniSteps',
+		components: {
+			uniIcons
+		},
+		props: {
+			direction: {
+				// 排列方向 row column
+				type: String,
+				default: 'row'
+			},
+			activeColor: {
+				// 激活状态颜色
+				type: String,
+				default: '#1aad19'
+			},
+			deactiveColor: {
+				// 未激活状态颜色
+				type: String,
+				default: '#999999'
+			},
+			active: {
+				// 当前步骤
+				type: Number,
+				default: 0
+			},
+			options: {
+				type: Array,
+				default () {
+					return []
+				}
+			} // 数据
+		},
+		data() {
+			return {}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-steps {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		width: 100%;
+		/* #endif */
+		/* #ifdef APP-NVUE */
+		flex: 1;
+		/* #endif */
+		flex-direction: column;
+	}
+
+	.uni-steps__row {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+	}
+
+	.uni-steps__column {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row-reverse;
+	}
+
+	.uni-steps__row-text-container {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+	}
+
+	.uni-steps__column-text-container {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		flex: 1;
+	}
+
+	.uni-steps__row-text {
+		/* #ifndef APP-NVUE */
+		display: inline-flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: column;
+	}
+
+	.uni-steps__column-text {
+		padding: 6px 0px;
+		border-bottom-style: solid;
+		border-bottom-width: 1px;
+		border-bottom-color: $uni-border-color;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+	}
+
+	.uni-steps__row-title {
+		font-size: $uni-font-size-base;
+		line-height: 16px;
+		text-align: center;
+	}
+
+	.uni-steps__column-title {
+		font-size: $uni-font-size-base;
+		text-align: left;
+		line-height: 18px;
+	}
+
+	.uni-steps__row-desc {
+		font-size: 12px;
+		line-height: 14px;
+		text-align: center;
+	}
+
+	.uni-steps__column-desc {
+		font-size: $uni-font-size-sm;
+		text-align: left;
+		line-height: 18px;
+	}
+
+	.uni-steps__row-container {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+	}
+
+	.uni-steps__column-container {
+		/* #ifndef APP-NVUE */
+		display: inline-flex;
+		/* #endif */
+		width: 30px;
+		flex-direction: column;
+	}
+
+	.uni-steps__row-line-item {
+		/* #ifndef APP-NVUE */
+		display: inline-flex;
+		/* #endif */
+		flex-direction: row;
+		flex: 1;
+		height: 14px;
+		line-height: 14px;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.uni-steps__column-line-item {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		flex: 1;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.uni-steps__row-line {
+		flex: 1;
+		height: 1px;
+		background-color: $uni-text-color-grey;
+	}
+
+	.uni-steps__column-line {
+		width: 1px;
+		background-color: $uni-text-color-grey;
+	}
+
+	.uni-steps__row-line--after {
+		transform: translateX(1px);
+	}
+
+	.uni-steps__column-line--after {
+		flex: 1;
+		transform: translate(0px, 1px);
+	}
+
+	.uni-steps__row-line--before {
+		transform: translateX(-1px);
+	}
+
+	.uni-steps__column-line--before {
+		height: 6px;
+		transform: translate(0px, -1px);
+	}
+
+	.uni-steps__row-circle {
+		width: 5px;
+		height: 5px;
+		border-radius: 100px;
+		background-color: $uni-text-color-grey;
+		margin: 0px 3px;
+	}
+
+	.uni-steps__column-circle {
+		width: 5px;
+		height: 5px;
+		border-radius: 100px;
+		background-color: $uni-text-color-grey;
+		margin: 4px 0px 5px 0px;
+	}
+
+	.uni-steps__row-check {
+		margin: 0px 6px;
+	}
+
+	.uni-steps__column-check {
+		height: 14px;
+		line-height: 14px;
+		margin: 2px 0px;
+	}
+</style>

+ 279 - 0
components/uni-transition/uni-transition.vue

@@ -0,0 +1,279 @@
+<template>
+	<view v-if="isShow" ref="ani" class="uni-transition" :class="[ani.in]" :style="'transform:' +transform+';'+stylesObject"
+	 @click="change">
+		 <slot></slot>
+	</view>
+</template>
+
+<script>
+	// #ifdef APP-NVUE
+	const animation = uni.requireNativePlugin('animation');
+	// #endif
+	/**
+	 * Transition 过渡动画
+	 * @description 简单过渡动画组件
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=985
+	 * @property {Boolean} show = [false|true] 控制组件显示或隐藏
+     * @property {Array} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型
+     *  @value fade 渐隐渐出过渡
+     *  @value slide-top 由上至下过渡
+     *  @value slide-right 由右至左过渡
+     *  @value slide-bottom 由下至上过渡
+     *  @value slide-left 由左至右过渡
+     *  @value zoom-in 由小到大过渡
+     *  @value zoom-out 由大到小过渡
+	 * @property {Number} duration 过渡动画持续时间
+	 * @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`
+	 */
+	export default {
+		name: 'uniTransition',
+		props: {
+			show: {
+				type: Boolean,
+				default: false
+			},
+			modeClass: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			duration: {
+				type: Number,
+				default: 300
+			},
+			styles: {
+				type: Object,
+				default () {
+					return {}
+				}
+			}
+		},
+		data() {
+			return {
+				isShow: false,
+				transform: '',
+				ani: { in: '',
+					active: ''
+				}
+			};
+		},
+		watch: {
+			show: {
+				handler(newVal) {
+					if (newVal) {
+						this.open()
+					} else {
+						this.close()
+					}
+				},
+				immediate: true
+			}
+		},
+		computed: {
+			stylesObject() {
+				let styles = {
+					...this.styles,
+					'transition-duration': this.duration / 1000 + 's'
+				}
+				let transfrom = ''
+				for (let i in styles) {
+					let line = this.toLine(i)
+					transfrom += line + ':' + styles[i] + ';'
+				}
+				return transfrom
+			}
+		},
+		created() {
+			// this.timer = null
+			// this.nextTick = (time = 50) => new Promise(resolve => {
+			// 	clearTimeout(this.timer)
+			// 	this.timer = setTimeout(resolve, time)
+			// 	return this.timer
+			// });
+		},
+		methods: {
+			change() {
+				this.$emit('click', {
+					detail: this.isShow
+				})
+			},
+			open() {
+				clearTimeout(this.timer)
+				this.isShow = true
+				this.transform = ''
+				this.ani.in = ''
+				for (let i in this.getTranfrom(false)) {
+					if (i === 'opacity') {
+						this.ani.in = 'fade-in'
+					} else {
+						this.transform += `${this.getTranfrom(false)[i]} `
+					}
+				}
+				this.$nextTick(() => {
+					setTimeout(() => {
+						this._animation(true)
+					}, 50)
+				})
+
+			},
+			close(type) {
+				clearTimeout(this.timer)
+				this._animation(false)
+			},
+			_animation(type) {
+				let styles = this.getTranfrom(type)
+				// #ifdef APP-NVUE
+				if(!this.$refs['ani']) return
+				animation.transition(this.$refs['ani'].ref, {
+					styles,
+					duration: this.duration, //ms
+					timingFunction: 'ease',
+					needLayout: false,
+					delay: 0 //ms
+				}, () => {
+					if (!type) {
+						this.isShow = false
+					}
+					this.$emit('change', {
+						detail: this.isShow
+					})
+				})
+				// #endif
+				// #ifndef APP-NVUE
+				this.transform = ''
+				for (let i in styles) {
+					if (i === 'opacity') {
+						this.ani.in = `fade-${type?'out':'in'}`
+					} else {
+						this.transform += `${styles[i]} `
+					}
+				}
+				this.timer = setTimeout(() => {
+					if (!type) {
+						this.isShow = false
+					}
+					this.$emit('change', {
+						detail: this.isShow
+					})
+
+				}, this.duration)
+				// #endif
+
+			},
+			getTranfrom(type) {
+				let styles = {
+					transform: ''
+				}
+				this.modeClass.forEach((mode) => {
+					switch (mode) {
+						case 'fade':
+							styles.opacity = type ? 1 : 0
+							break;
+						case 'slide-top':
+							styles.transform += `translateY(${type?'0':'-100%'}) `
+							break;
+						case 'slide-right':
+							styles.transform += `translateX(${type?'0':'100%'}) `
+							break;
+						case 'slide-bottom':
+							styles.transform += `translateY(${type?'0':'100%'}) `
+							break;
+						case 'slide-left':
+							styles.transform += `translateX(${type?'0':'-100%'}) `
+							break;
+						case 'zoom-in':
+							styles.transform += `scale(${type?1:0.8}) `
+							break;
+						case 'zoom-out':
+							styles.transform += `scale(${type?1:1.2}) `
+							break;
+					}
+				})
+				return styles
+			},
+			_modeClassArr(type) {
+				let mode = this.modeClass
+				if (typeof(mode) !== "string") {
+					let modestr = ''
+					mode.forEach((item) => {
+						modestr += (item + '-' + type + ',')
+					})
+					return modestr.substr(0, modestr.length - 1)
+				} else {
+					return mode + '-' + type
+				}
+			},
+			// getEl(el) {
+			// 	console.log(el || el.ref || null);
+			// 	return el || el.ref || null
+			// },
+			toLine(name) {
+				return name.replace(/([A-Z])/g, "-$1").toLowerCase();
+			}
+		}
+	}
+</script>
+
+<style>
+	.uni-transition {
+		transition-timing-function: ease;
+		transition-duration: 0.3s;
+		transition-property: transform, opacity;
+	}
+
+	.fade-in {
+		opacity: 0;
+	}
+
+	.fade-active {
+		opacity: 1;
+	}
+
+	.slide-top-in {
+		/* transition-property: transform, opacity; */
+		transform: translateY(-100%);
+	}
+
+	.slide-top-active {
+		transform: translateY(0);
+		/* opacity: 1; */
+	}
+
+	.slide-right-in {
+		transform: translateX(100%);
+	}
+
+	.slide-right-active {
+		transform: translateX(0);
+	}
+
+	.slide-bottom-in {
+		transform: translateY(100%);
+	}
+
+	.slide-bottom-active {
+		transform: translateY(0);
+	}
+
+	.slide-left-in {
+		transform: translateX(-100%);
+	}
+
+	.slide-left-active {
+		transform: translateX(0);
+		opacity: 1;
+	}
+
+	.zoom-in-in {
+		transform: scale(0.8);
+	}
+
+	.zoom-out-active {
+		transform: scale(1);
+	}
+
+	.zoom-out-in {
+		transform: scale(1.2);
+	}
+</style>

+ 226 - 0
components/upload-images.vue

@@ -0,0 +1,226 @@
+<template>
+	<view class="upload-content">
+		<block v-for="(item, index) in imageList" :key="index">
+			<view class="upload-item">
+				<image class="upload-img" :src="item.filePath" mode="aspectFill" @click="previewImage(index)"></image>
+				<image class="upload-del-btn" 
+					@click="delImage(index)" 
+					src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjNBODgzQjUwNDM5MTFFOUJDMjlGN0UwRTJGMjVCNjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjNBODgzQjYwNDM5MTFFOUJDMjlGN0UwRTJGMjVCNjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGM0E4ODNCMzA0MzkxMUU5QkMyOUY3RTBFMkYyNUI2NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGM0E4ODNCNDA0MzkxMUU5QkMyOUY3RTBFMkYyNUI2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuYQTIAAAAHNSURBVHjazJgxasMwFIbjnsD4BDmCLxDQDZrNQ5bcILlBvXvpDRLIWmiHFkyH2t0LyVbwEkPpbE/eYlUCGYQax096UuIffkIgij7ryU/vyZuYy2e+Z56K70R8lsJcOfPn5AriMCvmZ2YKdMW8EQ/hRA9iEorwXlpZtObMRySQ6kysvrFWloHUEIcmUBuHUDLccmxQskErt7wyVLdy00tQ4Q2g5De2V9kNwWjffiNDA33f/42i6E13Qj5uNptlwJD+SyODuaqqqi/KVBTFOxSKA7VtW/NxSZI8AcbE2nuraZpvKgSBk6G4drsdBOwogz1CwAghH/JEl+BUKJ1VltPHHjoIAoeE4l53YFqb+RKcBSgqyqXhtxEKZwkKB3YOThYCqjPuCDoHZwGK3mGLtdPp5LmqTI1Dqe4p26EkNqA4iE6eg2z+iQ0okyQMATvYgLIIt9Y6knTyFBIudHqIq3BpmkL60VJ9O0sXZY8MBwSLtdNGEAQ/i8XiVXcz83EcEPDbuq/fzMdYWt+6GTmMsX2rh9q3TtsxNrzXhKt1rwg6rR1Dhdjqo7QMlWOvoWTF4imxQMRF7eaL8L5ohmwrLgDB8pCQc8DlcG7y538CDABJNGPqfaJgfgAAAABJRU5ErkJggg==" 
+					mode="scaleToFill">
+				</image>
+				<view class="upload-progress" v-if="item.progress < 100">{{item.progress}}%</view>
+			</view>
+		</block>
+		<view class="upload-add-btn" v-if="rduLength > 0" @click="chooseImage"></view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			imageList: []
+		};
+	},
+	props: {
+		url: {
+			type: String,
+			value: '' //上传接口地址
+		},
+		count: {
+			type: Number,
+			value: 4 //单次可选择的图片数量
+		},
+		length: {
+			type: Number,
+			value: 50 //可上传总数量
+		}
+	},
+	computed: {
+		rduLength(){
+			return this.length - this.imageList.length;
+		}
+	},
+	methods: {
+		//选择图片
+		chooseImage: function(){
+			uni.chooseImage({
+				count: this.rduLength < this.count ? this.rduLength : this.count, //最多可以选择的图片张数,默认9
+				sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有
+				sourceType: ['album'], //album 从相册选图,camera 使用相机,默认二者都有
+				success: (res)=> {
+					const images = res.tempFilePaths;
+					this.uploadFiles(images);
+				}
+			});
+		},
+		//上传图片
+		async uploadFiles(images){
+			this.imageList.push({
+				filePath: images[0],
+				progress: 0
+			});
+			uni.showLoading({
+				title: '请稍后..',
+				mask: true,
+			})
+			try{
+				const uploadUrl = await this.uploadImage(images[0]);
+			}catch(err){
+				console.log(err);
+				return;
+			}
+			
+			if(uploadUrl !== false){
+				images.splice(0, 1);
+				this.imageList[this.imageList.length - 1].src = uploadUrl;
+
+				//判断是否需要继续上传
+				if(images.length > 0 && this.rduLength > 0){
+					this.uploadFiles(images);
+				}else{
+					uni.hideLoading();
+				}
+			}else{
+				//上传失败处理
+				this.imageList.pop();
+				uni.hideLoading();
+				uni.showToast({
+					title: '上传中出现问题,已终止上传',
+					icon: 'none',
+					mask: true,
+					duration: 2000
+				});
+			}
+		},
+		uploadImage: function(file){
+			return new Promise((resolve, reject)=> {
+				//发送给后端的附加参数
+				const formData = {
+					thumb_mode: 1,  
+				};
+				this.uploadTask = uni.uploadFile({
+					url: this.url, 
+					filePath: file,
+					name: 'file',
+					formData: formData,
+					success(uploadFileResult){
+						const uploadFileRes = JSON.parse(uploadFileResult.data) || {};
+						if(uploadFileRes.status === 1 && uploadFileRes.data){
+							resolve(uploadFileRes.data);
+						}else{
+							reject('接口返回错误');
+						}
+					}, 
+					fail(){
+						reject('网络链接错误');
+					}
+				});
+				//上传进度
+				this.uploadTask.onProgressUpdate((progressRes)=> {
+					this.imageList[this.imageList.length - 1].progress = progressRes.progress;
+				});
+			});
+		},
+		//删除图片
+		delImage: function(index){
+			uni.showModal({
+				content: '确定要放弃这张图片么?',
+				success: (confirmRes)=> {
+					if (confirmRes.confirm) {
+						this.imageList.splice(index, 1);
+					} 
+				}
+			});
+		},
+		//预览图片
+		previewImage: function(index){
+			const urls = [];
+			this.imageList.forEach((item)=> {
+				urls.push(item.filePath);
+			})
+			uni.previewImage({
+				current: urls[index],
+				urls: urls,
+				indicator: "number"
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+	.upload-content{
+		padding:24upx 0 0 28upx;
+		background-color: #fff;
+		overflow:hidden;
+	}
+	.upload-item{
+		position: relative;
+		float:left;
+		width:150upx;
+		height:150upx;
+		margin-right:30upx;
+		margin-bottom:30upx;
+		&:nth-child(4n){
+			margin-right:0;
+		}
+		.upload-img{
+			width:100%;
+			height:100%;
+			border-radius:8upx;
+		}
+		.upload-del-btn{
+			position: absolute;
+			right:-16upx;
+			top:-14upx;
+			width:36upx;
+			height:36upx;
+			border: 4upx solid #fff;
+			border-radius: 100px;
+		}
+		.upload-progress{
+			position: absolute;
+			left:0;
+			top:0;
+			display:flex;
+			align-items:center;
+			justify-content: center;
+			width:100%;
+			height:100%;
+			background-color: rgba(0,0,0,.4);
+			color:#fff;
+			font-size:24upx;
+			border-radius:8upx;
+		}
+	}
+	.upload-add-btn {
+		position: relative;
+		float:left;
+		width: 150upx;
+		height: 150upx;
+		z-index: 99;
+		border-radius:8upx;
+		background:#f9f9f9;
+		&:before,
+		&:after {
+			content: " ";
+			position: absolute;
+			top: 50%;
+			left: 50%;
+			-webkit-transform: translate(-50%, -50%);
+			transform: translate(-50%, -50%);
+			width: 4upx;
+			height: 60upx;
+			background-color: #d6d6d6;
+		}
+		&:after {
+			width: 60upx;
+			height: 4upx;
+		}
+		&:active {
+			background-color: #f7f7f7;
+		}
+	}
+
+</style>

+ 7076 - 0
components/wangding-pickerAddress/data.js

@@ -0,0 +1,7076 @@
+export default [{
+    "value": "北京市", "label": "北京市", "children": [{
+        "value": "北京市",
+        "label": "北京市",
+        "children": [{"value": "东城区", "label": "东城区"}, {
+            "value": "西城区",
+            "label": "西城区"
+        }, {"value": "朝阳区", "label": "朝阳区"}, {
+            "value": "丰台区",
+            "label": "丰台区"
+        }, {"value": "石景山区", "label": "石景山区"}, {
+            "value": "海淀区",
+            "label": "海淀区"
+        }, {"value": "门头沟区", "label": "门头沟区"}, {
+            "value": "房山区",
+            "label": "房山区"
+        }, {"value": "通州区", "label": "通州区"}, {
+            "value": "顺义区",
+            "label": "顺义区"
+        }, {"value": "昌平区", "label": "昌平区"}, {
+            "value": "大兴区",
+            "label": "大兴区"
+        }, {"value": "怀柔区", "label": "怀柔区"}, {
+            "value": "平谷区",
+            "label": "平谷区"
+        }, {"value": "密云区", "label": "密云区"}, {
+            "value": "延庆区",
+            "label": "延庆区"
+        }]
+    }]
+}, {
+    "value": "天津市", "label": "天津市", "children": [{
+        "value": "天津市",
+        "label": "天津市",
+        "children": [{"value": "和平区", "label": "和平区"}, {
+            "value": "河东区",
+            "label": "河东区"
+        }, {"value": "河西区", "label": "河西区"}, {
+            "value": "南开区",
+            "label": "南开区"
+        }, {"value": "河北区", "label": "河北区"}, {
+            "value": "红桥区",
+            "label": "红桥区"
+        }, {"value": "东丽区", "label": "东丽区"}, {
+            "value": "西青区",
+            "label": "西青区"
+        }, {"value": "津南区", "label": "津南区"}, {
+            "value": "北辰区",
+            "label": "北辰区"
+        }, {"value": "武清区", "label": "武清区"}, {
+            "value": "宝坻区",
+            "label": "宝坻区"
+        }, {"value": "滨海新区", "label": "滨海新区"}, {
+            "value": "宁河区",
+            "label": "宁河区"
+        }, {"value": "静海区", "label": "静海区"}, {
+            "value": "蓟州区",
+            "label": "蓟州区"
+        }]
+    }]
+}, {
+    "value": "河北省", "label": "河北省", "children": [{
+        "value": "石家庄市",
+        "label": "石家庄市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "长安区",
+            "label": "长安区"
+        }, {"value": "桥西区", "label": "桥西区"}, {
+            "value": "新华区",
+            "label": "新华区"
+        }, {"value": "井陉矿区", "label": "井陉矿区"}, {
+            "value": "裕华区",
+            "label": "裕华区"
+        }, {"value": "藁城区", "label": "藁城区"}, {
+            "value": "鹿泉区",
+            "label": "鹿泉区"
+        }, {"value": "栾城区", "label": "栾城区"}, {
+            "value": "井陉县",
+            "label": "井陉县"
+        }, {"value": "正定县", "label": "正定县"}, {
+            "value": "行唐县",
+            "label": "行唐县"
+        }, {"value": "灵寿县", "label": "灵寿县"}, {
+            "value": "高邑县",
+            "label": "高邑县"
+        }, {"value": "深泽县", "label": "深泽县"}, {
+            "value": "赞皇县",
+            "label": "赞皇县"
+        }, {"value": "无极县", "label": "无极县"}, {
+            "value": "平山县",
+            "label": "平山县"
+        }, {"value": "元氏县", "label": "元氏县"}, {
+            "value": "赵县",
+            "label": "赵县"
+        }, {"value": "晋州市", "label": "晋州市"}, {
+            "value": "新乐市",
+            "label": "新乐市"
+        }]
+    }, {
+        "value": "唐山市",
+        "label": "唐山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "路南区",
+            "label": "路南区"
+        }, {"value": "路北区", "label": "路北区"}, {
+            "value": "古冶区",
+            "label": "古冶区"
+        }, {"value": "开平区", "label": "开平区"}, {
+            "value": "丰南区",
+            "label": "丰南区"
+        }, {"value": "丰润区", "label": "丰润区"}, {
+            "value": "曹妃甸区",
+            "label": "曹妃甸区"
+        }, {"value": "滦县", "label": "滦县"}, {
+            "value": "滦南县",
+            "label": "滦南县"
+        }, {"value": "乐亭县", "label": "乐亭县"}, {
+            "value": "迁西县",
+            "label": "迁西县"
+        }, {"value": "玉田县", "label": "玉田县"}, {
+            "value": "遵化市",
+            "label": "遵化市"
+        }, {"value": "迁安市", "label": "迁安市"}]
+    }, {
+        "value": "秦皇岛市",
+        "label": "秦皇岛市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "海港区",
+            "label": "海港区"
+        }, {
+            "value": "山海关区",
+            "label": "山海关区"
+        }, {"value": "北戴河区", "label": "北戴河区"}, {
+            "value": "抚宁区",
+            "label": "抚宁区"
+        }, {
+            "value": "青龙满族自治县",
+            "label": "青龙满族自治县"
+        }, {"value": "昌黎县", "label": "昌黎县"}, {
+            "value": "卢龙县",
+            "label": "卢龙县"
+        }]
+    }, {
+        "value": "邯郸市",
+        "label": "邯郸市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "邯山区",
+            "label": "邯山区"
+        }, {"value": "丛台区", "label": "丛台区"}, {
+            "value": "复兴区",
+            "label": "复兴区"
+        }, {"value": "峰峰矿区", "label": "峰峰矿区"}, {
+            "value": "邯郸县",
+            "label": "邯郸县"
+        }, {"value": "临漳县", "label": "临漳县"}, {
+            "value": "成安县",
+            "label": "成安县"
+        }, {"value": "大名县", "label": "大名县"}, {
+            "value": "涉县",
+            "label": "涉县"
+        }, {"value": "磁县", "label": "磁县"}, {
+            "value": "肥乡县",
+            "label": "肥乡县"
+        }, {"value": "永年县", "label": "永年县"}, {
+            "value": "邱县",
+            "label": "邱县"
+        }, {"value": "鸡泽县", "label": "鸡泽县"}, {
+            "value": "广平县",
+            "label": "广平县"
+        }, {"value": "馆陶县", "label": "馆陶县"}, {
+            "value": "魏县",
+            "label": "魏县"
+        }, {"value": "曲周县", "label": "曲周县"}, {
+            "value": "武安市",
+            "label": "武安市"
+        }]
+    }, {
+        "value": "邢台市",
+        "label": "邢台市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "桥东区",
+            "label": "桥东区"
+        }, {"value": "桥西区", "label": "桥西区"}, {
+            "value": "邢台县",
+            "label": "邢台县"
+        }, {"value": "临城县", "label": "临城县"}, {
+            "value": "内丘县",
+            "label": "内丘县"
+        }, {"value": "柏乡县", "label": "柏乡县"}, {
+            "value": "隆尧县",
+            "label": "隆尧县"
+        }, {"value": "任县", "label": "任县"}, {
+            "value": "南和县",
+            "label": "南和县"
+        }, {"value": "宁晋县", "label": "宁晋县"}, {
+            "value": "巨鹿县",
+            "label": "巨鹿县"
+        }, {"value": "新河县", "label": "新河县"}, {
+            "value": "广宗县",
+            "label": "广宗县"
+        }, {"value": "平乡县", "label": "平乡县"}, {
+            "value": "威县",
+            "label": "威县"
+        }, {"value": "清河县", "label": "清河县"}, {
+            "value": "临西县",
+            "label": "临西县"
+        }, {"value": "南宫市", "label": "南宫市"}, {
+            "value": "沙河市",
+            "label": "沙河市"
+        }]
+    }, {
+        "value": "保定市",
+        "label": "保定市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "竞秀区",
+            "label": "竞秀区"
+        }, {"value": "莲池区", "label": "莲池区"}, {
+            "value": "满城区",
+            "label": "满城区"
+        }, {"value": "清苑区", "label": "清苑区"}, {
+            "value": "徐水区",
+            "label": "徐水区"
+        }, {"value": "涞水县", "label": "涞水县"}, {
+            "value": "阜平县",
+            "label": "阜平县"
+        }, {"value": "定兴县", "label": "定兴县"}, {
+            "value": "唐县",
+            "label": "唐县"
+        }, {"value": "高阳县", "label": "高阳县"}, {
+            "value": "容城县",
+            "label": "容城县"
+        }, {"value": "涞源县", "label": "涞源县"}, {
+            "value": "望都县",
+            "label": "望都县"
+        }, {"value": "安新县", "label": "安新县"}, {
+            "value": "易县",
+            "label": "易县"
+        }, {"value": "曲阳县", "label": "曲阳县"}, {
+            "value": "蠡县",
+            "label": "蠡县"
+        }, {"value": "顺平县", "label": "顺平县"}, {
+            "value": "博野县",
+            "label": "博野县"
+        }, {"value": "雄县", "label": "雄县"}, {
+            "value": "涿州市",
+            "label": "涿州市"
+        }, {"value": "安国市", "label": "安国市"}, {
+            "value": "高碑店市",
+            "label": "高碑店市"
+        }]
+    }, {
+        "value": "张家口市",
+        "label": "张家口市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "桥东区",
+            "label": "桥东区"
+        }, {"value": "桥西区", "label": "桥西区"}, {
+            "value": "宣化区",
+            "label": "宣化区"
+        }, {"value": "下花园区", "label": "下花园区"}, {
+            "value": "万全区",
+            "label": "万全区"
+        }, {"value": "崇礼区", "label": "崇礼区"}, {
+            "value": "张北县",
+            "label": "张北县"
+        }, {"value": "康保县", "label": "康保县"}, {
+            "value": "沽源县",
+            "label": "沽源县"
+        }, {"value": "尚义县", "label": "尚义县"}, {
+            "value": "蔚县",
+            "label": "蔚县"
+        }, {"value": "阳原县", "label": "阳原县"}, {
+            "value": "怀安县",
+            "label": "怀安县"
+        }, {"value": "怀来县", "label": "怀来县"}, {
+            "value": "涿鹿县",
+            "label": "涿鹿县"
+        }, {"value": "赤城县", "label": "赤城县"}]
+    }, {
+        "value": "承德市",
+        "label": "承德市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "双桥区",
+            "label": "双桥区"
+        }, {
+            "value": "双滦区",
+            "label": "双滦区"
+        }, {
+            "value": "鹰手营子矿区",
+            "label": "鹰手营子矿区"
+        }, {"value": "承德县", "label": "承德县"}, {
+            "value": "兴隆县",
+            "label": "兴隆县"
+        }, {"value": "平泉县", "label": "平泉县"}, {
+            "value": "滦平县",
+            "label": "滦平县"
+        }, {
+            "value": "隆化县",
+            "label": "隆化县"
+        }, {
+            "value": "丰宁满族自治县",
+            "label": "丰宁满族自治县"
+        }, {
+            "value": "宽城满族自治县",
+            "label": "宽城满族自治县"
+        }, {
+            "value": "围场满族蒙古族自治县",
+            "label": "围场满族蒙古族自治县"
+        }]
+    }, {
+        "value": "沧州市",
+        "label": "沧州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "新华区",
+            "label": "新华区"
+        }, {"value": "运河区", "label": "运河区"}, {
+            "value": "沧县",
+            "label": "沧县"
+        }, {"value": "青县", "label": "青县"}, {
+            "value": "东光县",
+            "label": "东光县"
+        }, {"value": "海兴县", "label": "海兴县"}, {
+            "value": "盐山县",
+            "label": "盐山县"
+        }, {"value": "肃宁县", "label": "肃宁县"}, {
+            "value": "南皮县",
+            "label": "南皮县"
+        }, {"value": "吴桥县", "label": "吴桥县"}, {
+            "value": "献县",
+            "label": "献县"
+        }, {
+            "value": "孟村回族自治县",
+            "label": "孟村回族自治县"
+        }, {"value": "泊头市", "label": "泊头市"}, {
+            "value": "任丘市",
+            "label": "任丘市"
+        }, {"value": "黄骅市", "label": "黄骅市"}, {
+            "value": "河间市",
+            "label": "河间市"
+        }]
+    }, {
+        "value": "廊坊市",
+        "label": "廊坊市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "安次区",
+            "label": "安次区"
+        }, {"value": "广阳区", "label": "广阳区"}, {
+            "value": "固安县",
+            "label": "固安县"
+        }, {"value": "永清县", "label": "永清县"}, {
+            "value": "香河县",
+            "label": "香河县"
+        }, {"value": "大城县", "label": "大城县"}, {
+            "value": "文安县",
+            "label": "文安县"
+        }, {
+            "value": "大厂回族自治县",
+            "label": "大厂回族自治县"
+        }, {"value": "霸州市", "label": "霸州市"}, {
+            "value": "三河市",
+            "label": "三河市"
+        }]
+    }, {
+        "value": "衡水市",
+        "label": "衡水市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "桃城区",
+            "label": "桃城区"
+        }, {"value": "冀州区", "label": "冀州区"}, {
+            "value": "枣强县",
+            "label": "枣强县"
+        }, {"value": "武邑县", "label": "武邑县"}, {
+            "value": "武强县",
+            "label": "武强县"
+        }, {"value": "饶阳县", "label": "饶阳县"}, {
+            "value": "安平县",
+            "label": "安平县"
+        }, {"value": "故城县", "label": "故城县"}, {
+            "value": "景县",
+            "label": "景县"
+        }, {"value": "阜城县", "label": "阜城县"}, {
+            "value": "深州市",
+            "label": "深州市"
+        }]
+    }, {
+        "value": "直辖县",
+        "label": "直辖县",
+        "children": [{"value": "定州市", "label": "定州市"}, {
+            "value": "辛集市",
+            "label": "辛集市"
+        }]
+    }]
+}, {
+    "value": "山西省",
+    "label": "山西省",
+    "children": [{
+        "value": "太原市",
+        "label": "太原市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "小店区",
+            "label": "小店区"
+        }, {"value": "迎泽区", "label": "迎泽区"}, {
+            "value": "杏花岭区",
+            "label": "杏花岭区"
+        }, {
+            "value": "尖草坪区",
+            "label": "尖草坪区"
+        }, {"value": "万柏林区", "label": "万柏林区"}, {
+            "value": "晋源区",
+            "label": "晋源区"
+        }, {"value": "清徐县", "label": "清徐县"}, {
+            "value": "阳曲县",
+            "label": "阳曲县"
+        }, {"value": "娄烦县", "label": "娄烦县"}, {
+            "value": "古交市",
+            "label": "古交市"
+        }]
+    }, {
+        "value": "大同市",
+        "label": "大同市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "城区",
+            "label": "城区"
+        }, {"value": "矿区", "label": "矿区"}, {
+            "value": "南郊区",
+            "label": "南郊区"
+        }, {"value": "新荣区", "label": "新荣区"}, {
+            "value": "阳高县",
+            "label": "阳高县"
+        }, {"value": "天镇县", "label": "天镇县"}, {
+            "value": "广灵县",
+            "label": "广灵县"
+        }, {"value": "灵丘县", "label": "灵丘县"}, {
+            "value": "浑源县",
+            "label": "浑源县"
+        }, {"value": "左云县", "label": "左云县"}, {
+            "value": "大同县",
+            "label": "大同县"
+        }]
+    }, {
+        "value": "阳泉市",
+        "label": "阳泉市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "城区",
+            "label": "城区"
+        }, {"value": "矿区", "label": "矿区"}, {
+            "value": "郊区",
+            "label": "郊区"
+        }, {"value": "平定县", "label": "平定县"}, {
+            "value": "盂县",
+            "label": "盂县"
+        }]
+    }, {
+        "value": "长治市",
+        "label": "长治市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "城区",
+            "label": "城区"
+        }, {"value": "郊区", "label": "郊区"}, {
+            "value": "长治县",
+            "label": "长治县"
+        }, {"value": "襄垣县", "label": "襄垣县"}, {
+            "value": "屯留县",
+            "label": "屯留县"
+        }, {"value": "平顺县", "label": "平顺县"}, {
+            "value": "黎城县",
+            "label": "黎城县"
+        }, {"value": "壶关县", "label": "壶关县"}, {
+            "value": "长子县",
+            "label": "长子县"
+        }, {"value": "武乡县", "label": "武乡县"}, {
+            "value": "沁县",
+            "label": "沁县"
+        }, {"value": "沁源县", "label": "沁源县"}, {
+            "value": "潞城市",
+            "label": "潞城市"
+        }]
+    }, {
+        "value": "晋城市",
+        "label": "晋城市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "城区",
+            "label": "城区"
+        }, {"value": "沁水县", "label": "沁水县"}, {
+            "value": "阳城县",
+            "label": "阳城县"
+        }, {"value": "陵川县", "label": "陵川县"}, {
+            "value": "泽州县",
+            "label": "泽州县"
+        }, {"value": "高平市", "label": "高平市"}]
+    }, {
+        "value": "朔州市",
+        "label": "朔州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "朔城区",
+            "label": "朔城区"
+        }, {"value": "平鲁区", "label": "平鲁区"}, {
+            "value": "山阴县",
+            "label": "山阴县"
+        }, {"value": "应县", "label": "应县"}, {
+            "value": "右玉县",
+            "label": "右玉县"
+        }, {"value": "怀仁县", "label": "怀仁县"}]
+    }, {
+        "value": "晋中市",
+        "label": "晋中市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "榆次区",
+            "label": "榆次区"
+        }, {"value": "榆社县", "label": "榆社县"}, {
+            "value": "左权县",
+            "label": "左权县"
+        }, {"value": "和顺县", "label": "和顺县"}, {
+            "value": "昔阳县",
+            "label": "昔阳县"
+        }, {"value": "寿阳县", "label": "寿阳县"}, {
+            "value": "太谷县",
+            "label": "太谷县"
+        }, {"value": "祁县", "label": "祁县"}, {
+            "value": "平遥县",
+            "label": "平遥县"
+        }, {"value": "灵石县", "label": "灵石县"}, {
+            "value": "介休市",
+            "label": "介休市"
+        }]
+    }, {
+        "value": "运城市",
+        "label": "运城市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "盐湖区",
+            "label": "盐湖区"
+        }, {"value": "临猗县", "label": "临猗县"}, {
+            "value": "万荣县",
+            "label": "万荣县"
+        }, {"value": "闻喜县", "label": "闻喜县"}, {
+            "value": "稷山县",
+            "label": "稷山县"
+        }, {"value": "新绛县", "label": "新绛县"}, {
+            "value": "绛县",
+            "label": "绛县"
+        }, {"value": "垣曲县", "label": "垣曲县"}, {
+            "value": "夏县",
+            "label": "夏县"
+        }, {"value": "平陆县", "label": "平陆县"}, {
+            "value": "芮城县",
+            "label": "芮城县"
+        }, {"value": "永济市", "label": "永济市"}, {
+            "value": "河津市",
+            "label": "河津市"
+        }]
+    }, {
+        "value": "忻州市",
+        "label": "忻州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "忻府区",
+            "label": "忻府区"
+        }, {"value": "定襄县", "label": "定襄县"}, {
+            "value": "五台县",
+            "label": "五台县"
+        }, {"value": "代县", "label": "代县"}, {
+            "value": "繁峙县",
+            "label": "繁峙县"
+        }, {"value": "宁武县", "label": "宁武县"}, {
+            "value": "静乐县",
+            "label": "静乐县"
+        }, {"value": "神池县", "label": "神池县"}, {
+            "value": "五寨县",
+            "label": "五寨县"
+        }, {"value": "岢岚县", "label": "岢岚县"}, {
+            "value": "河曲县",
+            "label": "河曲县"
+        }, {"value": "保德县", "label": "保德县"}, {
+            "value": "偏关县",
+            "label": "偏关县"
+        }, {"value": "原平市", "label": "原平市"}]
+    }, {
+        "value": "临汾市",
+        "label": "临汾市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "尧都区",
+            "label": "尧都区"
+        }, {"value": "曲沃县", "label": "曲沃县"}, {
+            "value": "翼城县",
+            "label": "翼城县"
+        }, {"value": "襄汾县", "label": "襄汾县"}, {
+            "value": "洪洞县",
+            "label": "洪洞县"
+        }, {"value": "古县", "label": "古县"}, {
+            "value": "安泽县",
+            "label": "安泽县"
+        }, {"value": "浮山县", "label": "浮山县"}, {
+            "value": "吉县",
+            "label": "吉县"
+        }, {"value": "乡宁县", "label": "乡宁县"}, {
+            "value": "大宁县",
+            "label": "大宁县"
+        }, {"value": "隰县", "label": "隰县"}, {
+            "value": "永和县",
+            "label": "永和县"
+        }, {"value": "蒲县", "label": "蒲县"}, {
+            "value": "汾西县",
+            "label": "汾西县"
+        }, {"value": "侯马市", "label": "侯马市"}, {
+            "value": "霍州市",
+            "label": "霍州市"
+        }]
+    }, {
+        "value": "吕梁市",
+        "label": "吕梁市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "离石区",
+            "label": "离石区"
+        }, {"value": "文水县", "label": "文水县"}, {
+            "value": "交城县",
+            "label": "交城县"
+        }, {"value": "兴县", "label": "兴县"}, {
+            "value": "临县",
+            "label": "临县"
+        }, {"value": "柳林县", "label": "柳林县"}, {
+            "value": "石楼县",
+            "label": "石楼县"
+        }, {"value": "岚县", "label": "岚县"}, {
+            "value": "方山县",
+            "label": "方山县"
+        }, {"value": "中阳县", "label": "中阳县"}, {
+            "value": "交口县",
+            "label": "交口县"
+        }, {"value": "孝义市", "label": "孝义市"}, {
+            "value": "汾阳市",
+            "label": "汾阳市"
+        }]
+    }]
+}, {
+    "value": "内蒙古自治区",
+    "label": "内蒙古自治区",
+    "children": [{
+        "value": "呼和浩特市",
+        "label": "呼和浩特市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "新城区",
+            "label": "新城区"
+        }, {"value": "回民区", "label": "回民区"}, {
+            "value": "玉泉区",
+            "label": "玉泉区"
+        }, {"value": "赛罕区", "label": "赛罕区"}, {
+            "value": "土默特左旗",
+            "label": "土默特左旗"
+        }, {
+            "value": "托克托县",
+            "label": "托克托县"
+        }, {
+            "value": "和林格尔县",
+            "label": "和林格尔县"
+        }, {"value": "清水河县", "label": "清水河县"}, {
+            "value": "武川县",
+            "label": "武川县"
+        }]
+    }, {
+        "value": "包头市",
+        "label": "包头市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "东河区",
+            "label": "东河区"
+        }, {"value": "昆都仑区", "label": "昆都仑区"}, {
+            "value": "青山区",
+            "label": "青山区"
+        }, {
+            "value": "石拐区",
+            "label": "石拐区"
+        }, {
+            "value": "白云鄂博矿区",
+            "label": "白云鄂博矿区"
+        }, {"value": "九原区", "label": "九原区"}, {
+            "value": "土默特右旗",
+            "label": "土默特右旗"
+        }, {
+            "value": "固阳县",
+            "label": "固阳县"
+        }, {
+            "value": "达尔罕茂明安联合旗",
+            "label": "达尔罕茂明安联合旗"
+        }]
+    }, {
+        "value": "乌海市",
+        "label": "乌海市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "海勃湾区", "label": "海勃湾区"}, {
+            "value": "海南区",
+            "label": "海南区"
+        }, {"value": "乌达区", "label": "乌达区"}]
+    }, {
+        "value": "赤峰市",
+        "label": "赤峰市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "红山区",
+            "label": "红山区"
+        }, {"value": "元宝山区", "label": "元宝山区"}, {
+            "value": "松山区",
+            "label": "松山区"
+        }, {
+            "value": "阿鲁科尔沁旗",
+            "label": "阿鲁科尔沁旗"
+        }, {
+            "value": "巴林左旗",
+            "label": "巴林左旗"
+        }, {"value": "巴林右旗", "label": "巴林右旗"}, {
+            "value": "林西县",
+            "label": "林西县"
+        }, {
+            "value": "克什克腾旗",
+            "label": "克什克腾旗"
+        }, {
+            "value": "翁牛特旗",
+            "label": "翁牛特旗"
+        }, {"value": "喀喇沁旗", "label": "喀喇沁旗"}, {
+            "value": "宁城县",
+            "label": "宁城县"
+        }, {"value": "敖汉旗", "label": "敖汉旗"}]
+    }, {
+        "value": "通辽市",
+        "label": "通辽市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {
+            "value": "科尔沁区",
+            "label": "科尔沁区"
+        }, {
+            "value": "科尔沁左翼中旗",
+            "label": "科尔沁左翼中旗"
+        }, {
+            "value": "科尔沁左翼后旗",
+            "label": "科尔沁左翼后旗"
+        }, {"value": "开鲁县", "label": "开鲁县"}, {
+            "value": "库伦旗",
+            "label": "库伦旗"
+        }, {"value": "奈曼旗", "label": "奈曼旗"}, {
+            "value": "扎鲁特旗",
+            "label": "扎鲁特旗"
+        }, {"value": "霍林郭勒市", "label": "霍林郭勒市"}]
+    }, {
+        "value": "鄂尔多斯市",
+        "label": "鄂尔多斯市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "东胜区",
+            "label": "东胜区"
+        }, {
+            "value": "康巴什区",
+            "label": "康巴什区"
+        }, {
+            "value": "达拉特旗",
+            "label": "达拉特旗"
+        }, {
+            "value": "准格尔旗",
+            "label": "准格尔旗"
+        }, {
+            "value": "鄂托克前旗",
+            "label": "鄂托克前旗"
+        }, {"value": "鄂托克旗", "label": "鄂托克旗"}, {
+            "value": "杭锦旗",
+            "label": "杭锦旗"
+        }, {"value": "乌审旗", "label": "乌审旗"}, {
+            "value": "伊金霍洛旗",
+            "label": "伊金霍洛旗"
+        }]
+    }, {
+        "value": "呼伦贝尔市",
+        "label": "呼伦贝尔市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {
+            "value": "海拉尔区",
+            "label": "海拉尔区"
+        }, {
+            "value": "扎赉诺尔区",
+            "label": "扎赉诺尔区"
+        }, {
+            "value": "阿荣旗",
+            "label": "阿荣旗"
+        }, {
+            "value": "莫力达瓦达斡尔族自治旗",
+            "label": "莫力达瓦达斡尔族自治旗"
+        }, {
+            "value": "鄂伦春自治旗",
+            "label": "鄂伦春自治旗"
+        }, {
+            "value": "鄂温克族自治旗",
+            "label": "鄂温克族自治旗"
+        }, {
+            "value": "陈巴尔虎旗",
+            "label": "陈巴尔虎旗"
+        }, {
+            "value": "新巴尔虎左旗",
+            "label": "新巴尔虎左旗"
+        }, {
+            "value": "新巴尔虎右旗",
+            "label": "新巴尔虎右旗"
+        }, {
+            "value": "满洲里市",
+            "label": "满洲里市"
+        }, {
+            "value": "牙克石市",
+            "label": "牙克石市"
+        }, {
+            "value": "扎兰屯市",
+            "label": "扎兰屯市"
+        }, {
+            "value": "额尔古纳市",
+            "label": "额尔古纳市"
+        }, {"value": "根河市", "label": "根河市"}]
+    }, {
+        "value": "巴彦淖尔市",
+        "label": "巴彦淖尔市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "临河区",
+            "label": "临河区"
+        }, {"value": "五原县", "label": "五原县"}, {
+            "value": "磴口县",
+            "label": "磴口县"
+        }, {
+            "value": "乌拉特前旗",
+            "label": "乌拉特前旗"
+        }, {
+            "value": "乌拉特中旗",
+            "label": "乌拉特中旗"
+        }, {
+            "value": "乌拉特后旗",
+            "label": "乌拉特后旗"
+        }, {"value": "杭锦后旗", "label": "杭锦后旗"}]
+    }, {
+        "value": "乌兰察布市",
+        "label": "乌兰察布市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "集宁区",
+            "label": "集宁区"
+        }, {"value": "卓资县", "label": "卓资县"}, {
+            "value": "化德县",
+            "label": "化德县"
+        }, {"value": "商都县", "label": "商都县"}, {
+            "value": "兴和县",
+            "label": "兴和县"
+        }, {
+            "value": "凉城县",
+            "label": "凉城县"
+        }, {
+            "value": "察哈尔右翼前旗",
+            "label": "察哈尔右翼前旗"
+        }, {
+            "value": "察哈尔右翼中旗",
+            "label": "察哈尔右翼中旗"
+        }, {
+            "value": "察哈尔右翼后旗",
+            "label": "察哈尔右翼后旗"
+        }, {"value": "四子王旗", "label": "四子王旗"}, {
+            "value": "丰镇市",
+            "label": "丰镇市"
+        }]
+    }, {
+        "value": "兴安盟",
+        "label": "兴安盟",
+        "children": [{
+            "value": "乌兰浩特市",
+            "label": "乌兰浩特市"
+        }, {
+            "value": "阿尔山市",
+            "label": "阿尔山市"
+        }, {
+            "value": "科尔沁右翼前旗",
+            "label": "科尔沁右翼前旗"
+        }, {
+            "value": "科尔沁右翼中旗",
+            "label": "科尔沁右翼中旗"
+        }, {"value": "扎赉特旗", "label": "扎赉特旗"}, {
+            "value": "突泉县",
+            "label": "突泉县"
+        }]
+    }, {
+        "value": "锡林郭勒盟",
+        "label": "锡林郭勒盟",
+        "children": [{
+            "value": "二连浩特市",
+            "label": "二连浩特市"
+        }, {
+            "value": "锡林浩特市",
+            "label": "锡林浩特市"
+        }, {
+            "value": "阿巴嘎旗",
+            "label": "阿巴嘎旗"
+        }, {
+            "value": "苏尼特左旗",
+            "label": "苏尼特左旗"
+        }, {
+            "value": "苏尼特右旗",
+            "label": "苏尼特右旗"
+        }, {
+            "value": "东乌珠穆沁旗",
+            "label": "东乌珠穆沁旗"
+        }, {
+            "value": "西乌珠穆沁旗",
+            "label": "西乌珠穆沁旗"
+        }, {"value": "太仆寺旗", "label": "太仆寺旗"}, {
+            "value": "镶黄旗",
+            "label": "镶黄旗"
+        }, {"value": "正镶白旗", "label": "正镶白旗"}, {
+            "value": "正蓝旗",
+            "label": "正蓝旗"
+        }, {"value": "多伦县", "label": "多伦县"}]
+    }, {
+        "value": "阿拉善盟",
+        "label": "阿拉善盟",
+        "children": [{
+            "value": "阿拉善左旗",
+            "label": "阿拉善左旗"
+        }, {
+            "value": "阿拉善右旗",
+            "label": "阿拉善右旗"
+        }, {"value": "额济纳旗", "label": "额济纳旗"}]
+    }]
+}, {
+    "value": "辽宁省",
+    "label": "辽宁省",
+    "children": [{
+        "value": "沈阳市",
+        "label": "沈阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "和平区",
+            "label": "和平区"
+        }, {"value": "沈河区", "label": "沈河区"}, {
+            "value": "大东区",
+            "label": "大东区"
+        }, {"value": "皇姑区", "label": "皇姑区"}, {
+            "value": "铁西区",
+            "label": "铁西区"
+        }, {"value": "苏家屯区", "label": "苏家屯区"}, {
+            "value": "浑南区",
+            "label": "浑南区"
+        }, {"value": "沈北新区", "label": "沈北新区"}, {
+            "value": "于洪区",
+            "label": "于洪区"
+        }, {"value": "辽中区", "label": "辽中区"}, {
+            "value": "康平县",
+            "label": "康平县"
+        }, {"value": "法库县", "label": "法库县"}, {
+            "value": "新民市",
+            "label": "新民市"
+        }]
+    }, {
+        "value": "大连市",
+        "label": "大连市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "中山区",
+            "label": "中山区"
+        }, {"value": "西岗区", "label": "西岗区"}, {
+            "value": "沙河口区",
+            "label": "沙河口区"
+        }, {
+            "value": "甘井子区",
+            "label": "甘井子区"
+        }, {"value": "旅顺口区", "label": "旅顺口区"}, {
+            "value": "金州区",
+            "label": "金州区"
+        }, {"value": "普兰店区", "label": "普兰店区"}, {
+            "value": "长海县",
+            "label": "长海县"
+        }, {"value": "瓦房店市", "label": "瓦房店市"}, {
+            "value": "庄河市",
+            "label": "庄河市"
+        }]
+    }, {
+        "value": "鞍山市",
+        "label": "鞍山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "铁东区",
+            "label": "铁东区"
+        }, {"value": "铁西区", "label": "铁西区"}, {
+            "value": "立山区",
+            "label": "立山区"
+        }, {"value": "千山区", "label": "千山区"}, {
+            "value": "台安县",
+            "label": "台安县"
+        }, {
+            "value": "岫岩满族自治县",
+            "label": "岫岩满族自治县"
+        }, {"value": "海城市", "label": "海城市"}]
+    }, {
+        "value": "抚顺市",
+        "label": "抚顺市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "新抚区",
+            "label": "新抚区"
+        }, {"value": "东洲区", "label": "东洲区"}, {
+            "value": "望花区",
+            "label": "望花区"
+        }, {"value": "顺城区", "label": "顺城区"}, {
+            "value": "抚顺县",
+            "label": "抚顺县"
+        }, {
+            "value": "新宾满族自治县",
+            "label": "新宾满族自治县"
+        }, {
+            "value": "清原满族自治县",
+            "label": "清原满族自治县"
+        }]
+    }, {
+        "value": "本溪市",
+        "label": "本溪市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "平山区",
+            "label": "平山区"
+        }, {"value": "溪湖区", "label": "溪湖区"}, {
+            "value": "明山区",
+            "label": "明山区"
+        }, {
+            "value": "南芬区",
+            "label": "南芬区"
+        }, {
+            "value": "本溪满族自治县",
+            "label": "本溪满族自治县"
+        }, {
+            "value": "桓仁满族自治县",
+            "label": "桓仁满族自治县"
+        }]
+    }, {
+        "value": "丹东市",
+        "label": "丹东市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "元宝区",
+            "label": "元宝区"
+        }, {"value": "振兴区", "label": "振兴区"}, {
+            "value": "振安区",
+            "label": "振安区"
+        }, {
+            "value": "宽甸满族自治县",
+            "label": "宽甸满族自治县"
+        }, {"value": "东港市", "label": "东港市"}, {
+            "value": "凤城市",
+            "label": "凤城市"
+        }]
+    }, {
+        "value": "锦州市",
+        "label": "锦州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "古塔区",
+            "label": "古塔区"
+        }, {"value": "凌河区", "label": "凌河区"}, {
+            "value": "太和区",
+            "label": "太和区"
+        }, {"value": "黑山县", "label": "黑山县"}, {
+            "value": "义县",
+            "label": "义县"
+        }, {"value": "凌海市", "label": "凌海市"}, {
+            "value": "北镇市",
+            "label": "北镇市"
+        }]
+    }, {
+        "value": "营口市",
+        "label": "营口市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "站前区",
+            "label": "站前区"
+        }, {"value": "西市区", "label": "西市区"}, {
+            "value": "鲅鱼圈区",
+            "label": "鲅鱼圈区"
+        }, {"value": "老边区", "label": "老边区"}, {
+            "value": "盖州市",
+            "label": "盖州市"
+        }, {"value": "大石桥市", "label": "大石桥市"}]
+    }, {
+        "value": "阜新市",
+        "label": "阜新市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "海州区",
+            "label": "海州区"
+        }, {"value": "新邱区", "label": "新邱区"}, {
+            "value": "太平区",
+            "label": "太平区"
+        }, {"value": "清河门区", "label": "清河门区"}, {
+            "value": "细河区",
+            "label": "细河区"
+        }, {
+            "value": "阜新蒙古族自治县",
+            "label": "阜新蒙古族自治县"
+        }, {"value": "彰武县", "label": "彰武县"}]
+    }, {
+        "value": "辽阳市",
+        "label": "辽阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "白塔区",
+            "label": "白塔区"
+        }, {"value": "文圣区", "label": "文圣区"}, {
+            "value": "宏伟区",
+            "label": "宏伟区"
+        }, {
+            "value": "弓长岭区",
+            "label": "弓长岭区"
+        }, {"value": "太子河区", "label": "太子河区"}, {
+            "value": "辽阳县",
+            "label": "辽阳县"
+        }, {"value": "灯塔市", "label": "灯塔市"}]
+    }, {
+        "value": "盘锦市",
+        "label": "盘锦市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {
+            "value": "双台子区",
+            "label": "双台子区"
+        }, {"value": "兴隆台区", "label": "兴隆台区"}, {
+            "value": "大洼区",
+            "label": "大洼区"
+        }, {"value": "盘山县", "label": "盘山县"}]
+    }, {
+        "value": "铁岭市",
+        "label": "铁岭市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "银州区",
+            "label": "银州区"
+        }, {"value": "清河区", "label": "清河区"}, {
+            "value": "铁岭县",
+            "label": "铁岭县"
+        }, {"value": "西丰县", "label": "西丰县"}, {
+            "value": "昌图县",
+            "label": "昌图县"
+        }, {"value": "调兵山市", "label": "调兵山市"}, {
+            "value": "开原市",
+            "label": "开原市"
+        }]
+    }, {
+        "value": "朝阳市",
+        "label": "朝阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "双塔区",
+            "label": "双塔区"
+        }, {"value": "龙城区", "label": "龙城区"}, {
+            "value": "朝阳县",
+            "label": "朝阳县"
+        }, {
+            "value": "建平县",
+            "label": "建平县"
+        }, {
+            "value": "喀喇沁左翼蒙古族自治县",
+            "label": "喀喇沁左翼蒙古族自治县"
+        }, {"value": "北票市", "label": "北票市"}, {
+            "value": "凌源市",
+            "label": "凌源市"
+        }]
+    }, {
+        "value": "葫芦岛市",
+        "label": "葫芦岛市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "连山区",
+            "label": "连山区"
+        }, {"value": "龙港区", "label": "龙港区"}, {
+            "value": "南票区",
+            "label": "南票区"
+        }, {"value": "绥中县", "label": "绥中县"}, {
+            "value": "建昌县",
+            "label": "建昌县"
+        }, {"value": "兴城市", "label": "兴城市"}]
+    }]
+}, {
+    "value": "吉林省",
+    "label": "吉林省",
+    "children": [{
+        "value": "长春市",
+        "label": "长春市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "南关区",
+            "label": "南关区"
+        }, {"value": "宽城区", "label": "宽城区"}, {
+            "value": "朝阳区",
+            "label": "朝阳区"
+        }, {"value": "二道区", "label": "二道区"}, {
+            "value": "绿园区",
+            "label": "绿园区"
+        }, {"value": "双阳区", "label": "双阳区"}, {
+            "value": "九台区",
+            "label": "九台区"
+        }, {"value": "农安县", "label": "农安县"}, {
+            "value": "榆树市",
+            "label": "榆树市"
+        }, {"value": "德惠市", "label": "德惠市"}]
+    }, {
+        "value": "吉林市",
+        "label": "吉林市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "昌邑区",
+            "label": "昌邑区"
+        }, {"value": "龙潭区", "label": "龙潭区"}, {
+            "value": "船营区",
+            "label": "船营区"
+        }, {"value": "丰满区", "label": "丰满区"}, {
+            "value": "永吉县",
+            "label": "永吉县"
+        }, {"value": "蛟河市", "label": "蛟河市"}, {
+            "value": "桦甸市",
+            "label": "桦甸市"
+        }, {"value": "舒兰市", "label": "舒兰市"}, {
+            "value": "磐石市",
+            "label": "磐石市"
+        }]
+    }, {
+        "value": "四平市",
+        "label": "四平市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "铁西区",
+            "label": "铁西区"
+        }, {"value": "铁东区", "label": "铁东区"}, {
+            "value": "梨树县",
+            "label": "梨树县"
+        }, {
+            "value": "伊通满族自治县",
+            "label": "伊通满族自治县"
+        }, {"value": "公主岭市", "label": "公主岭市"}, {
+            "value": "双辽市",
+            "label": "双辽市"
+        }]
+    }, {
+        "value": "辽源市",
+        "label": "辽源市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "龙山区",
+            "label": "龙山区"
+        }, {"value": "西安区", "label": "西安区"}, {
+            "value": "东丰县",
+            "label": "东丰县"
+        }, {"value": "东辽县", "label": "东辽县"}]
+    }, {
+        "value": "通化市",
+        "label": "通化市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "东昌区",
+            "label": "东昌区"
+        }, {"value": "二道江区", "label": "二道江区"}, {
+            "value": "通化县",
+            "label": "通化县"
+        }, {"value": "辉南县", "label": "辉南县"}, {
+            "value": "柳河县",
+            "label": "柳河县"
+        }, {"value": "梅河口市", "label": "梅河口市"}, {
+            "value": "集安市",
+            "label": "集安市"
+        }]
+    }, {
+        "value": "白山市",
+        "label": "白山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "浑江区",
+            "label": "浑江区"
+        }, {"value": "江源区", "label": "江源区"}, {
+            "value": "抚松县",
+            "label": "抚松县"
+        }, {
+            "value": "靖宇县",
+            "label": "靖宇县"
+        }, {
+            "value": "长白朝鲜族自治县",
+            "label": "长白朝鲜族自治县"
+        }, {"value": "临江市", "label": "临江市"}]
+    }, {
+        "value": "松原市",
+        "label": "松原市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "宁江区",
+            "label": "宁江区"
+        }, {
+            "value": "前郭尔罗斯蒙古族自治县",
+            "label": "前郭尔罗斯蒙古族自治县"
+        }, {"value": "长岭县", "label": "长岭县"}, {
+            "value": "乾安县",
+            "label": "乾安县"
+        }, {"value": "扶余市", "label": "扶余市"}]
+    }, {
+        "value": "白城市",
+        "label": "白城市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "洮北区",
+            "label": "洮北区"
+        }, {"value": "镇赉县", "label": "镇赉县"}, {
+            "value": "通榆县",
+            "label": "通榆县"
+        }, {"value": "洮南市", "label": "洮南市"}, {
+            "value": "大安市",
+            "label": "大安市"
+        }]
+    }, {
+        "value": "延边朝鲜族自治州",
+        "label": "延边朝鲜族自治州",
+        "children": [{"value": "延吉市", "label": "延吉市"}, {
+            "value": "图们市",
+            "label": "图们市"
+        }, {"value": "敦化市", "label": "敦化市"}, {
+            "value": "珲春市",
+            "label": "珲春市"
+        }, {"value": "龙井市", "label": "龙井市"}, {
+            "value": "和龙市",
+            "label": "和龙市"
+        }, {"value": "汪清县", "label": "汪清县"}, {
+            "value": "安图县",
+            "label": "安图县"
+        }]
+    }]
+}, {
+    "value": "黑龙江省", "label": "黑龙江省", "children": [{
+        "value": "哈尔滨市",
+        "label": "哈尔滨市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "道里区",
+            "label": "道里区"
+        }, {"value": "南岗区", "label": "南岗区"}, {
+            "value": "道外区",
+            "label": "道外区"
+        }, {"value": "平房区", "label": "平房区"}, {
+            "value": "松北区",
+            "label": "松北区"
+        }, {"value": "香坊区", "label": "香坊区"}, {
+            "value": "呼兰区",
+            "label": "呼兰区"
+        }, {"value": "阿城区", "label": "阿城区"}, {
+            "value": "双城区",
+            "label": "双城区"
+        }, {"value": "依兰县", "label": "依兰县"}, {
+            "value": "方正县",
+            "label": "方正县"
+        }, {"value": "宾县", "label": "宾县"}, {
+            "value": "巴彦县",
+            "label": "巴彦县"
+        }, {"value": "木兰县", "label": "木兰县"}, {
+            "value": "通河县",
+            "label": "通河县"
+        }, {"value": "延寿县", "label": "延寿县"}, {
+            "value": "尚志市",
+            "label": "尚志市"
+        }, {"value": "五常市", "label": "五常市"}]
+    }, {
+        "value": "齐齐哈尔市",
+        "label": "齐齐哈尔市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "龙沙区",
+            "label": "龙沙区"
+        }, {"value": "建华区", "label": "建华区"}, {
+            "value": "铁锋区",
+            "label": "铁锋区"
+        }, {
+            "value": "昂昂溪区",
+            "label": "昂昂溪区"
+        }, {
+            "value": "富拉尔基区",
+            "label": "富拉尔基区"
+        }, {
+            "value": "碾子山区",
+            "label": "碾子山区"
+        }, {
+            "value": "梅里斯达斡尔族区",
+            "label": "梅里斯达斡尔族区"
+        }, {"value": "龙江县", "label": "龙江县"}, {
+            "value": "依安县",
+            "label": "依安县"
+        }, {"value": "泰来县", "label": "泰来县"}, {
+            "value": "甘南县",
+            "label": "甘南县"
+        }, {"value": "富裕县", "label": "富裕县"}, {
+            "value": "克山县",
+            "label": "克山县"
+        }, {"value": "克东县", "label": "克东县"}, {
+            "value": "拜泉县",
+            "label": "拜泉县"
+        }, {"value": "讷河市", "label": "讷河市"}]
+    }, {
+        "value": "鸡西市",
+        "label": "鸡西市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "鸡冠区",
+            "label": "鸡冠区"
+        }, {"value": "恒山区", "label": "恒山区"}, {
+            "value": "滴道区",
+            "label": "滴道区"
+        }, {"value": "梨树区", "label": "梨树区"}, {
+            "value": "城子河区",
+            "label": "城子河区"
+        }, {"value": "麻山区", "label": "麻山区"}, {
+            "value": "鸡东县",
+            "label": "鸡东县"
+        }, {"value": "虎林市", "label": "虎林市"}, {
+            "value": "密山市",
+            "label": "密山市"
+        }]
+    }, {
+        "value": "鹤岗市",
+        "label": "鹤岗市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "向阳区",
+            "label": "向阳区"
+        }, {"value": "工农区", "label": "工农区"}, {
+            "value": "南山区",
+            "label": "南山区"
+        }, {"value": "兴安区", "label": "兴安区"}, {
+            "value": "东山区",
+            "label": "东山区"
+        }, {"value": "兴山区", "label": "兴山区"}, {
+            "value": "萝北县",
+            "label": "萝北县"
+        }, {"value": "绥滨县", "label": "绥滨县"}]
+    }, {
+        "value": "双鸭山市",
+        "label": "双鸭山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "尖山区",
+            "label": "尖山区"
+        }, {"value": "岭东区", "label": "岭东区"}, {
+            "value": "四方台区",
+            "label": "四方台区"
+        }, {"value": "宝山区", "label": "宝山区"}, {
+            "value": "集贤县",
+            "label": "集贤县"
+        }, {"value": "友谊县", "label": "友谊县"}, {
+            "value": "宝清县",
+            "label": "宝清县"
+        }, {"value": "饶河县", "label": "饶河县"}]
+    }, {
+        "value": "大庆市",
+        "label": "大庆市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "萨尔图区", "label": "萨尔图区"}, {
+            "value": "龙凤区",
+            "label": "龙凤区"
+        }, {"value": "让胡路区", "label": "让胡路区"}, {
+            "value": "红岗区",
+            "label": "红岗区"
+        }, {"value": "大同区", "label": "大同区"}, {
+            "value": "肇州县",
+            "label": "肇州县"
+        }, {"value": "肇源县", "label": "肇源县"}, {
+            "value": "林甸县",
+            "label": "林甸县"
+        }, {
+            "value": "杜尔伯特蒙古族自治县",
+            "label": "杜尔伯特蒙古族自治县"
+        }]
+    }, {
+        "value": "伊春市",
+        "label": "伊春市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "伊春区",
+            "label": "伊春区"
+        }, {"value": "南岔区", "label": "南岔区"}, {
+            "value": "友好区",
+            "label": "友好区"
+        }, {"value": "西林区", "label": "西林区"}, {
+            "value": "翠峦区",
+            "label": "翠峦区"
+        }, {"value": "新青区", "label": "新青区"}, {
+            "value": "美溪区",
+            "label": "美溪区"
+        }, {"value": "金山屯区", "label": "金山屯区"}, {
+            "value": "五营区",
+            "label": "五营区"
+        }, {
+            "value": "乌马河区",
+            "label": "乌马河区"
+        }, {"value": "汤旺河区", "label": "汤旺河区"}, {
+            "value": "带岭区",
+            "label": "带岭区"
+        }, {"value": "乌伊岭区", "label": "乌伊岭区"}, {
+            "value": "红星区",
+            "label": "红星区"
+        }, {"value": "上甘岭区", "label": "上甘岭区"}, {
+            "value": "嘉荫县",
+            "label": "嘉荫县"
+        }, {"value": "铁力市", "label": "铁力市"}]
+    }, {
+        "value": "佳木斯市",
+        "label": "佳木斯市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "向阳区",
+            "label": "向阳区"
+        }, {"value": "前进区", "label": "前进区"}, {
+            "value": "东风区",
+            "label": "东风区"
+        }, {"value": "郊区", "label": "郊区"}, {
+            "value": "桦南县",
+            "label": "桦南县"
+        }, {"value": "桦川县", "label": "桦川县"}, {
+            "value": "汤原县",
+            "label": "汤原县"
+        }, {"value": "同江市", "label": "同江市"}, {
+            "value": "富锦市",
+            "label": "富锦市"
+        }, {"value": "抚远市", "label": "抚远市"}]
+    }, {
+        "value": "七台河市",
+        "label": "七台河市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "新兴区",
+            "label": "新兴区"
+        }, {"value": "桃山区", "label": "桃山区"}, {
+            "value": "茄子河区",
+            "label": "茄子河区"
+        }, {"value": "勃利县", "label": "勃利县"}]
+    }, {
+        "value": "牡丹江市",
+        "label": "牡丹江市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "东安区",
+            "label": "东安区"
+        }, {"value": "阳明区", "label": "阳明区"}, {
+            "value": "爱民区",
+            "label": "爱民区"
+        }, {"value": "西安区", "label": "西安区"}, {
+            "value": "林口县",
+            "label": "林口县"
+        }, {"value": "绥芬河市", "label": "绥芬河市"}, {
+            "value": "海林市",
+            "label": "海林市"
+        }, {"value": "宁安市", "label": "宁安市"}, {
+            "value": "穆棱市",
+            "label": "穆棱市"
+        }, {"value": "东宁市", "label": "东宁市"}]
+    }, {
+        "value": "黑河市",
+        "label": "黑河市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "爱辉区",
+            "label": "爱辉区"
+        }, {"value": "嫩江县", "label": "嫩江县"}, {
+            "value": "逊克县",
+            "label": "逊克县"
+        }, {"value": "孙吴县", "label": "孙吴县"}, {
+            "value": "北安市",
+            "label": "北安市"
+        }, {"value": "五大连池市", "label": "五大连池市"}]
+    }, {
+        "value": "绥化市",
+        "label": "绥化市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "北林区",
+            "label": "北林区"
+        }, {"value": "望奎县", "label": "望奎县"}, {
+            "value": "兰西县",
+            "label": "兰西县"
+        }, {"value": "青冈县", "label": "青冈县"}, {
+            "value": "庆安县",
+            "label": "庆安县"
+        }, {"value": "明水县", "label": "明水县"}, {
+            "value": "绥棱县",
+            "label": "绥棱县"
+        }, {"value": "安达市", "label": "安达市"}, {
+            "value": "肇东市",
+            "label": "肇东市"
+        }, {"value": "海伦市", "label": "海伦市"}]
+    }, {
+        "value": "大兴安岭地区",
+        "label": "大兴安岭地区",
+        "children": [{"value": "呼玛县", "label": "呼玛县"}, {
+            "value": "塔河县",
+            "label": "塔河县"
+        }, {"value": "漠河县", "label": "漠河县"}]
+    }]
+}, {
+    "value": "上海市", "label": "上海市", "children": [{
+        "value": "上海市",
+        "label": "上海市",
+        "children": [{"value": "黄浦区", "label": "黄浦区"}, {
+            "value": "徐汇区",
+            "label": "徐汇区"
+        }, {"value": "长宁区", "label": "长宁区"}, {
+            "value": "静安区",
+            "label": "静安区"
+        }, {"value": "普陀区", "label": "普陀区"}, {
+            "value": "虹口区",
+            "label": "虹口区"
+        }, {"value": "杨浦区", "label": "杨浦区"}, {
+            "value": "闵行区",
+            "label": "闵行区"
+        }, {"value": "宝山区", "label": "宝山区"}, {
+            "value": "嘉定区",
+            "label": "嘉定区"
+        }, {"value": "浦东新区", "label": "浦东新区"}, {
+            "value": "金山区",
+            "label": "金山区"
+        }, {"value": "松江区", "label": "松江区"}, {
+            "value": "青浦区",
+            "label": "青浦区"
+        }, {"value": "奉贤区", "label": "奉贤区"}, {
+            "value": "崇明区",
+            "label": "崇明区"
+        }]
+    }]
+}, {
+    "value": "江苏省",
+    "label": "江苏省",
+    "children": [{
+        "value": "南京市",
+        "label": "南京市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "玄武区",
+            "label": "玄武区"
+        }, {"value": "秦淮区", "label": "秦淮区"}, {
+            "value": "建邺区",
+            "label": "建邺区"
+        }, {"value": "鼓楼区", "label": "鼓楼区"}, {
+            "value": "浦口区",
+            "label": "浦口区"
+        }, {"value": "栖霞区", "label": "栖霞区"}, {
+            "value": "雨花台区",
+            "label": "雨花台区"
+        }, {"value": "江宁区", "label": "江宁区"}, {
+            "value": "六合区",
+            "label": "六合区"
+        }, {"value": "溧水区", "label": "溧水区"}, {
+            "value": "高淳区",
+            "label": "高淳区"
+        }]
+    }, {
+        "value": "无锡市",
+        "label": "无锡市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "锡山区",
+            "label": "锡山区"
+        }, {"value": "惠山区", "label": "惠山区"}, {
+            "value": "滨湖区",
+            "label": "滨湖区"
+        }, {"value": "梁溪区", "label": "梁溪区"}, {
+            "value": "新吴区",
+            "label": "新吴区"
+        }, {"value": "江阴市", "label": "江阴市"}, {
+            "value": "宜兴市",
+            "label": "宜兴市"
+        }]
+    }, {
+        "value": "徐州市",
+        "label": "徐州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "鼓楼区",
+            "label": "鼓楼区"
+        }, {"value": "云龙区", "label": "云龙区"}, {
+            "value": "贾汪区",
+            "label": "贾汪区"
+        }, {"value": "泉山区", "label": "泉山区"}, {
+            "value": "铜山区",
+            "label": "铜山区"
+        }, {"value": "丰县", "label": "丰县"}, {
+            "value": "沛县",
+            "label": "沛县"
+        }, {"value": "睢宁县", "label": "睢宁县"}, {
+            "value": "新沂市",
+            "label": "新沂市"
+        }, {"value": "邳州市", "label": "邳州市"}]
+    }, {
+        "value": "常州市",
+        "label": "常州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "天宁区",
+            "label": "天宁区"
+        }, {"value": "钟楼区", "label": "钟楼区"}, {
+            "value": "新北区",
+            "label": "新北区"
+        }, {"value": "武进区", "label": "武进区"}, {
+            "value": "金坛区",
+            "label": "金坛区"
+        }, {"value": "溧阳市", "label": "溧阳市"}]
+    }, {
+        "value": "苏州市",
+        "label": "苏州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "虎丘区",
+            "label": "虎丘区"
+        }, {"value": "吴中区", "label": "吴中区"}, {
+            "value": "相城区",
+            "label": "相城区"
+        }, {"value": "姑苏区", "label": "姑苏区"}, {
+            "value": "吴江区",
+            "label": "吴江区"
+        }, {"value": "常熟市", "label": "常熟市"}, {
+            "value": "张家港市",
+            "label": "张家港市"
+        }, {"value": "昆山市", "label": "昆山市"}, {
+            "value": "太仓市",
+            "label": "太仓市"
+        }]
+    }, {
+        "value": "南通市",
+        "label": "南通市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "崇川区",
+            "label": "崇川区"
+        }, {"value": "港闸区", "label": "港闸区"}, {
+            "value": "通州区",
+            "label": "通州区"
+        }, {"value": "海安县", "label": "海安县"}, {
+            "value": "如东县",
+            "label": "如东县"
+        }, {"value": "启东市", "label": "启东市"}, {
+            "value": "如皋市",
+            "label": "如皋市"
+        }, {"value": "海门市", "label": "海门市"}]
+    }, {
+        "value": "连云港市",
+        "label": "连云港市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "连云区",
+            "label": "连云区"
+        }, {"value": "海州区", "label": "海州区"}, {
+            "value": "赣榆区",
+            "label": "赣榆区"
+        }, {"value": "东海县", "label": "东海县"}, {
+            "value": "灌云县",
+            "label": "灌云县"
+        }, {"value": "灌南县", "label": "灌南县"}]
+    }, {
+        "value": "淮安市",
+        "label": "淮安市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "淮安区",
+            "label": "淮安区"
+        }, {"value": "淮阴区", "label": "淮阴区"}, {
+            "value": "清江浦区",
+            "label": "清江浦区"
+        }, {"value": "洪泽区", "label": "洪泽区"}, {
+            "value": "涟水县",
+            "label": "涟水县"
+        }, {"value": "盱眙县", "label": "盱眙县"}, {
+            "value": "金湖县",
+            "label": "金湖县"
+        }]
+    }, {
+        "value": "盐城市",
+        "label": "盐城市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "亭湖区",
+            "label": "亭湖区"
+        }, {"value": "盐都区", "label": "盐都区"}, {
+            "value": "大丰区",
+            "label": "大丰区"
+        }, {"value": "响水县", "label": "响水县"}, {
+            "value": "滨海县",
+            "label": "滨海县"
+        }, {"value": "阜宁县", "label": "阜宁县"}, {
+            "value": "射阳县",
+            "label": "射阳县"
+        }, {"value": "建湖县", "label": "建湖县"}, {
+            "value": "东台市",
+            "label": "东台市"
+        }]
+    }, {
+        "value": "扬州市",
+        "label": "扬州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "广陵区",
+            "label": "广陵区"
+        }, {"value": "邗江区", "label": "邗江区"}, {
+            "value": "江都区",
+            "label": "江都区"
+        }, {"value": "宝应县", "label": "宝应县"}, {
+            "value": "仪征市",
+            "label": "仪征市"
+        }, {"value": "高邮市", "label": "高邮市"}]
+    }, {
+        "value": "镇江市",
+        "label": "镇江市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "京口区",
+            "label": "京口区"
+        }, {"value": "润州区", "label": "润州区"}, {
+            "value": "丹徒区",
+            "label": "丹徒区"
+        }, {"value": "丹阳市", "label": "丹阳市"}, {
+            "value": "扬中市",
+            "label": "扬中市"
+        }, {"value": "句容市", "label": "句容市"}]
+    }, {
+        "value": "泰州市",
+        "label": "泰州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "海陵区",
+            "label": "海陵区"
+        }, {"value": "高港区", "label": "高港区"}, {
+            "value": "姜堰区",
+            "label": "姜堰区"
+        }, {"value": "兴化市", "label": "兴化市"}, {
+            "value": "靖江市",
+            "label": "靖江市"
+        }, {"value": "泰兴市", "label": "泰兴市"}]
+    }, {
+        "value": "宿迁市",
+        "label": "宿迁市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "宿城区",
+            "label": "宿城区"
+        }, {"value": "宿豫区", "label": "宿豫区"}, {
+            "value": "沭阳县",
+            "label": "沭阳县"
+        }, {"value": "泗阳县", "label": "泗阳县"}, {
+            "value": "泗洪县",
+            "label": "泗洪县"
+        }]
+    }]
+}, {
+    "value": "浙江省",
+    "label": "浙江省",
+    "children": [{
+        "value": "杭州市",
+        "label": "杭州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "上城区",
+            "label": "上城区"
+        }, {"value": "下城区", "label": "下城区"}, {
+            "value": "江干区",
+            "label": "江干区"
+        }, {"value": "拱墅区", "label": "拱墅区"}, {
+            "value": "西湖区",
+            "label": "西湖区"
+        }, {"value": "滨江区", "label": "滨江区"}, {
+            "value": "萧山区",
+            "label": "萧山区"
+        }, {"value": "余杭区", "label": "余杭区"}, {
+            "value": "富阳区",
+            "label": "富阳区"
+        }, {"value": "桐庐县", "label": "桐庐县"}, {
+            "value": "淳安县",
+            "label": "淳安县"
+        }, {"value": "建德市", "label": "建德市"}, {
+            "value": "临安市",
+            "label": "临安市"
+        }]
+    }, {
+        "value": "宁波市",
+        "label": "宁波市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "海曙区",
+            "label": "海曙区"
+        }, {"value": "江东区", "label": "江东区"}, {
+            "value": "江北区",
+            "label": "江北区"
+        }, {"value": "北仑区", "label": "北仑区"}, {
+            "value": "镇海区",
+            "label": "镇海区"
+        }, {"value": "鄞州区", "label": "鄞州区"}, {
+            "value": "象山县",
+            "label": "象山县"
+        }, {"value": "宁海县", "label": "宁海县"}, {
+            "value": "余姚市",
+            "label": "余姚市"
+        }, {"value": "慈溪市", "label": "慈溪市"}, {
+            "value": "奉化市",
+            "label": "奉化市"
+        }]
+    }, {
+        "value": "温州市",
+        "label": "温州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "鹿城区",
+            "label": "鹿城区"
+        }, {"value": "龙湾区", "label": "龙湾区"}, {
+            "value": "瓯海区",
+            "label": "瓯海区"
+        }, {"value": "洞头区", "label": "洞头区"}, {
+            "value": "永嘉县",
+            "label": "永嘉县"
+        }, {"value": "平阳县", "label": "平阳县"}, {
+            "value": "苍南县",
+            "label": "苍南县"
+        }, {"value": "文成县", "label": "文成县"}, {
+            "value": "泰顺县",
+            "label": "泰顺县"
+        }, {"value": "瑞安市", "label": "瑞安市"}, {
+            "value": "乐清市",
+            "label": "乐清市"
+        }]
+    }, {
+        "value": "嘉兴市",
+        "label": "嘉兴市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "南湖区",
+            "label": "南湖区"
+        }, {"value": "秀洲区", "label": "秀洲区"}, {
+            "value": "嘉善县",
+            "label": "嘉善县"
+        }, {"value": "海盐县", "label": "海盐县"}, {
+            "value": "海宁市",
+            "label": "海宁市"
+        }, {"value": "平湖市", "label": "平湖市"}, {
+            "value": "桐乡市",
+            "label": "桐乡市"
+        }]
+    }, {
+        "value": "湖州市",
+        "label": "湖州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "吴兴区",
+            "label": "吴兴区"
+        }, {"value": "南浔区", "label": "南浔区"}, {
+            "value": "德清县",
+            "label": "德清县"
+        }, {"value": "长兴县", "label": "长兴县"}, {
+            "value": "安吉县",
+            "label": "安吉县"
+        }]
+    }, {
+        "value": "绍兴市",
+        "label": "绍兴市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "越城区",
+            "label": "越城区"
+        }, {"value": "柯桥区", "label": "柯桥区"}, {
+            "value": "上虞区",
+            "label": "上虞区"
+        }, {"value": "新昌县", "label": "新昌县"}, {
+            "value": "诸暨市",
+            "label": "诸暨市"
+        }, {"value": "嵊州市", "label": "嵊州市"}]
+    }, {
+        "value": "金华市",
+        "label": "金华市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "婺城区",
+            "label": "婺城区"
+        }, {"value": "金东区", "label": "金东区"}, {
+            "value": "武义县",
+            "label": "武义县"
+        }, {"value": "浦江县", "label": "浦江县"}, {
+            "value": "磐安县",
+            "label": "磐安县"
+        }, {"value": "兰溪市", "label": "兰溪市"}, {
+            "value": "义乌市",
+            "label": "义乌市"
+        }, {"value": "东阳市", "label": "东阳市"}, {
+            "value": "永康市",
+            "label": "永康市"
+        }]
+    }, {
+        "value": "衢州市",
+        "label": "衢州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "柯城区",
+            "label": "柯城区"
+        }, {"value": "衢江区", "label": "衢江区"}, {
+            "value": "常山县",
+            "label": "常山县"
+        }, {"value": "开化县", "label": "开化县"}, {
+            "value": "龙游县",
+            "label": "龙游县"
+        }, {"value": "江山市", "label": "江山市"}]
+    }, {
+        "value": "舟山市",
+        "label": "舟山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "定海区",
+            "label": "定海区"
+        }, {"value": "普陀区", "label": "普陀区"}, {
+            "value": "岱山县",
+            "label": "岱山县"
+        }, {"value": "嵊泗县", "label": "嵊泗县"}]
+    }, {
+        "value": "台州市",
+        "label": "台州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "椒江区",
+            "label": "椒江区"
+        }, {"value": "黄岩区", "label": "黄岩区"}, {
+            "value": "路桥区",
+            "label": "路桥区"
+        }, {"value": "玉环县", "label": "玉环县"}, {
+            "value": "三门县",
+            "label": "三门县"
+        }, {"value": "天台县", "label": "天台县"}, {
+            "value": "仙居县",
+            "label": "仙居县"
+        }, {"value": "温岭市", "label": "温岭市"}, {
+            "value": "临海市",
+            "label": "临海市"
+        }]
+    }, {
+        "value": "丽水市",
+        "label": "丽水市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "莲都区",
+            "label": "莲都区"
+        }, {"value": "青田县", "label": "青田县"}, {
+            "value": "缙云县",
+            "label": "缙云县"
+        }, {"value": "遂昌县", "label": "遂昌县"}, {
+            "value": "松阳县",
+            "label": "松阳县"
+        }, {"value": "云和县", "label": "云和县"}, {
+            "value": "庆元县",
+            "label": "庆元县"
+        }, {
+            "value": "景宁畲族自治县",
+            "label": "景宁畲族自治县"
+        }, {"value": "龙泉市", "label": "龙泉市"}]
+    }]
+}, {
+    "value": "安徽省",
+    "label": "安徽省",
+    "children": [{
+        "value": "合肥市",
+        "label": "合肥市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "瑶海区",
+            "label": "瑶海区"
+        }, {"value": "庐阳区", "label": "庐阳区"}, {
+            "value": "蜀山区",
+            "label": "蜀山区"
+        }, {"value": "包河区", "label": "包河区"}, {
+            "value": "长丰县",
+            "label": "长丰县"
+        }, {"value": "肥东县", "label": "肥东县"}, {
+            "value": "肥西县",
+            "label": "肥西县"
+        }, {"value": "庐江县", "label": "庐江县"}, {
+            "value": "巢湖市",
+            "label": "巢湖市"
+        }]
+    }, {
+        "value": "芜湖市",
+        "label": "芜湖市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "镜湖区",
+            "label": "镜湖区"
+        }, {"value": "弋江区", "label": "弋江区"}, {
+            "value": "鸠江区",
+            "label": "鸠江区"
+        }, {"value": "三山区", "label": "三山区"}, {
+            "value": "芜湖县",
+            "label": "芜湖县"
+        }, {"value": "繁昌县", "label": "繁昌县"}, {
+            "value": "南陵县",
+            "label": "南陵县"
+        }, {"value": "无为县", "label": "无为县"}]
+    }, {
+        "value": "蚌埠市",
+        "label": "蚌埠市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "龙子湖区", "label": "龙子湖区"}, {
+            "value": "蚌山区",
+            "label": "蚌山区"
+        }, {"value": "禹会区", "label": "禹会区"}, {
+            "value": "淮上区",
+            "label": "淮上区"
+        }, {"value": "怀远县", "label": "怀远县"}, {
+            "value": "五河县",
+            "label": "五河县"
+        }, {"value": "固镇县", "label": "固镇县"}]
+    }, {
+        "value": "淮南市",
+        "label": "淮南市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "大通区",
+            "label": "大通区"
+        }, {
+            "value": "田家庵区",
+            "label": "田家庵区"
+        }, {
+            "value": "谢家集区",
+            "label": "谢家集区"
+        }, {"value": "八公山区", "label": "八公山区"}, {
+            "value": "潘集区",
+            "label": "潘集区"
+        }, {"value": "凤台县", "label": "凤台县"}, {
+            "value": "寿县",
+            "label": "寿县"
+        }]
+    }, {
+        "value": "马鞍山市",
+        "label": "马鞍山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "花山区",
+            "label": "花山区"
+        }, {"value": "雨山区", "label": "雨山区"}, {
+            "value": "博望区",
+            "label": "博望区"
+        }, {"value": "当涂县", "label": "当涂县"}, {
+            "value": "含山县",
+            "label": "含山县"
+        }, {"value": "和县", "label": "和县"}]
+    }, {
+        "value": "淮北市",
+        "label": "淮北市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "杜集区",
+            "label": "杜集区"
+        }, {"value": "相山区", "label": "相山区"}, {
+            "value": "烈山区",
+            "label": "烈山区"
+        }, {"value": "濉溪县", "label": "濉溪县"}]
+    }, {
+        "value": "铜陵市",
+        "label": "铜陵市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "铜官区",
+            "label": "铜官区"
+        }, {"value": "义安区", "label": "义安区"}, {
+            "value": "郊区",
+            "label": "郊区"
+        }, {"value": "枞阳县", "label": "枞阳县"}]
+    }, {
+        "value": "安庆市",
+        "label": "安庆市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "迎江区",
+            "label": "迎江区"
+        }, {"value": "大观区", "label": "大观区"}, {
+            "value": "宜秀区",
+            "label": "宜秀区"
+        }, {"value": "怀宁县", "label": "怀宁县"}, {
+            "value": "潜山县",
+            "label": "潜山县"
+        }, {"value": "太湖县", "label": "太湖县"}, {
+            "value": "宿松县",
+            "label": "宿松县"
+        }, {"value": "望江县", "label": "望江县"}, {
+            "value": "岳西县",
+            "label": "岳西县"
+        }, {"value": "桐城市", "label": "桐城市"}]
+    }, {
+        "value": "黄山市",
+        "label": "黄山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "屯溪区",
+            "label": "屯溪区"
+        }, {"value": "黄山区", "label": "黄山区"}, {
+            "value": "徽州区",
+            "label": "徽州区"
+        }, {"value": "歙县", "label": "歙县"}, {
+            "value": "休宁县",
+            "label": "休宁县"
+        }, {"value": "黟县", "label": "黟县"}, {
+            "value": "祁门县",
+            "label": "祁门县"
+        }]
+    }, {
+        "value": "滁州市",
+        "label": "滁州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "琅琊区",
+            "label": "琅琊区"
+        }, {"value": "南谯区", "label": "南谯区"}, {
+            "value": "来安县",
+            "label": "来安县"
+        }, {"value": "全椒县", "label": "全椒县"}, {
+            "value": "定远县",
+            "label": "定远县"
+        }, {"value": "凤阳县", "label": "凤阳县"}, {
+            "value": "天长市",
+            "label": "天长市"
+        }, {"value": "明光市", "label": "明光市"}]
+    }, {
+        "value": "阜阳市",
+        "label": "阜阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "颍州区",
+            "label": "颍州区"
+        }, {"value": "颍东区", "label": "颍东区"}, {
+            "value": "颍泉区",
+            "label": "颍泉区"
+        }, {"value": "临泉县", "label": "临泉县"}, {
+            "value": "太和县",
+            "label": "太和县"
+        }, {"value": "阜南县", "label": "阜南县"}, {
+            "value": "颍上县",
+            "label": "颍上县"
+        }, {"value": "界首市", "label": "界首市"}]
+    }, {
+        "value": "宿州市",
+        "label": "宿州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "埇桥区",
+            "label": "埇桥区"
+        }, {"value": "砀山县", "label": "砀山县"}, {
+            "value": "萧县",
+            "label": "萧县"
+        }, {"value": "灵璧县", "label": "灵璧县"}, {
+            "value": "泗县",
+            "label": "泗县"
+        }]
+    }, {
+        "value": "六安市",
+        "label": "六安市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "金安区",
+            "label": "金安区"
+        }, {"value": "裕安区", "label": "裕安区"}, {
+            "value": "叶集区",
+            "label": "叶集区"
+        }, {"value": "霍邱县", "label": "霍邱县"}, {
+            "value": "舒城县",
+            "label": "舒城县"
+        }, {"value": "金寨县", "label": "金寨县"}, {
+            "value": "霍山县",
+            "label": "霍山县"
+        }]
+    }, {
+        "value": "亳州市",
+        "label": "亳州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "谯城区",
+            "label": "谯城区"
+        }, {"value": "涡阳县", "label": "涡阳县"}, {
+            "value": "蒙城县",
+            "label": "蒙城县"
+        }, {"value": "利辛县", "label": "利辛县"}]
+    }, {
+        "value": "池州市",
+        "label": "池州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "贵池区",
+            "label": "贵池区"
+        }, {"value": "东至县", "label": "东至县"}, {
+            "value": "石台县",
+            "label": "石台县"
+        }, {"value": "青阳县", "label": "青阳县"}]
+    }, {
+        "value": "宣城市",
+        "label": "宣城市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "宣州区",
+            "label": "宣州区"
+        }, {"value": "郎溪县", "label": "郎溪县"}, {
+            "value": "广德县",
+            "label": "广德县"
+        }, {"value": "泾县", "label": "泾县"}, {
+            "value": "绩溪县",
+            "label": "绩溪县"
+        }, {"value": "旌德县", "label": "旌德县"}, {
+            "value": "宁国市",
+            "label": "宁国市"
+        }]
+    }]
+}, {
+    "value": "福建省",
+    "label": "福建省",
+    "children": [{
+        "value": "福州市",
+        "label": "福州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "鼓楼区",
+            "label": "鼓楼区"
+        }, {"value": "台江区", "label": "台江区"}, {
+            "value": "仓山区",
+            "label": "仓山区"
+        }, {"value": "马尾区", "label": "马尾区"}, {
+            "value": "晋安区",
+            "label": "晋安区"
+        }, {"value": "闽侯县", "label": "闽侯县"}, {
+            "value": "连江县",
+            "label": "连江县"
+        }, {"value": "罗源县", "label": "罗源县"}, {
+            "value": "闽清县",
+            "label": "闽清县"
+        }, {"value": "永泰县", "label": "永泰县"}, {
+            "value": "平潭县",
+            "label": "平潭县"
+        }, {"value": "福清市", "label": "福清市"}, {
+            "value": "长乐市",
+            "label": "长乐市"
+        }]
+    }, {
+        "value": "厦门市",
+        "label": "厦门市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "思明区",
+            "label": "思明区"
+        }, {"value": "海沧区", "label": "海沧区"}, {
+            "value": "湖里区",
+            "label": "湖里区"
+        }, {"value": "集美区", "label": "集美区"}, {
+            "value": "同安区",
+            "label": "同安区"
+        }, {"value": "翔安区", "label": "翔安区"}]
+    }, {
+        "value": "莆田市",
+        "label": "莆田市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "城厢区",
+            "label": "城厢区"
+        }, {"value": "涵江区", "label": "涵江区"}, {
+            "value": "荔城区",
+            "label": "荔城区"
+        }, {"value": "秀屿区", "label": "秀屿区"}, {
+            "value": "仙游县",
+            "label": "仙游县"
+        }]
+    }, {
+        "value": "三明市",
+        "label": "三明市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "梅列区",
+            "label": "梅列区"
+        }, {"value": "三元区", "label": "三元区"}, {
+            "value": "明溪县",
+            "label": "明溪县"
+        }, {"value": "清流县", "label": "清流县"}, {
+            "value": "宁化县",
+            "label": "宁化县"
+        }, {"value": "大田县", "label": "大田县"}, {
+            "value": "尤溪县",
+            "label": "尤溪县"
+        }, {"value": "沙县", "label": "沙县"}, {
+            "value": "将乐县",
+            "label": "将乐县"
+        }, {"value": "泰宁县", "label": "泰宁县"}, {
+            "value": "建宁县",
+            "label": "建宁县"
+        }, {"value": "永安市", "label": "永安市"}]
+    }, {
+        "value": "泉州市",
+        "label": "泉州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "鲤城区",
+            "label": "鲤城区"
+        }, {"value": "丰泽区", "label": "丰泽区"}, {
+            "value": "洛江区",
+            "label": "洛江区"
+        }, {"value": "泉港区", "label": "泉港区"}, {
+            "value": "惠安县",
+            "label": "惠安县"
+        }, {"value": "安溪县", "label": "安溪县"}, {
+            "value": "永春县",
+            "label": "永春县"
+        }, {"value": "德化县", "label": "德化县"}, {
+            "value": "金门县",
+            "label": "金门县"
+        }, {"value": "石狮市", "label": "石狮市"}, {
+            "value": "晋江市",
+            "label": "晋江市"
+        }, {"value": "南安市", "label": "南安市"}]
+    }, {
+        "value": "漳州市",
+        "label": "漳州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "芗城区",
+            "label": "芗城区"
+        }, {"value": "龙文区", "label": "龙文区"}, {
+            "value": "云霄县",
+            "label": "云霄县"
+        }, {"value": "漳浦县", "label": "漳浦县"}, {
+            "value": "诏安县",
+            "label": "诏安县"
+        }, {"value": "长泰县", "label": "长泰县"}, {
+            "value": "东山县",
+            "label": "东山县"
+        }, {"value": "南靖县", "label": "南靖县"}, {
+            "value": "平和县",
+            "label": "平和县"
+        }, {"value": "华安县", "label": "华安县"}, {
+            "value": "龙海市",
+            "label": "龙海市"
+        }]
+    }, {
+        "value": "南平市",
+        "label": "南平市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "延平区",
+            "label": "延平区"
+        }, {"value": "建阳区", "label": "建阳区"}, {
+            "value": "顺昌县",
+            "label": "顺昌县"
+        }, {"value": "浦城县", "label": "浦城县"}, {
+            "value": "光泽县",
+            "label": "光泽县"
+        }, {"value": "松溪县", "label": "松溪县"}, {
+            "value": "政和县",
+            "label": "政和县"
+        }, {"value": "邵武市", "label": "邵武市"}, {
+            "value": "武夷山市",
+            "label": "武夷山市"
+        }, {"value": "建瓯市", "label": "建瓯市"}]
+    }, {
+        "value": "龙岩市",
+        "label": "龙岩市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "新罗区",
+            "label": "新罗区"
+        }, {"value": "永定区", "label": "永定区"}, {
+            "value": "长汀县",
+            "label": "长汀县"
+        }, {"value": "上杭县", "label": "上杭县"}, {
+            "value": "武平县",
+            "label": "武平县"
+        }, {"value": "连城县", "label": "连城县"}, {
+            "value": "漳平市",
+            "label": "漳平市"
+        }]
+    }, {
+        "value": "宁德市",
+        "label": "宁德市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "蕉城区",
+            "label": "蕉城区"
+        }, {"value": "霞浦县", "label": "霞浦县"}, {
+            "value": "古田县",
+            "label": "古田县"
+        }, {"value": "屏南县", "label": "屏南县"}, {
+            "value": "寿宁县",
+            "label": "寿宁县"
+        }, {"value": "周宁县", "label": "周宁县"}, {
+            "value": "柘荣县",
+            "label": "柘荣县"
+        }, {"value": "福安市", "label": "福安市"}, {
+            "value": "福鼎市",
+            "label": "福鼎市"
+        }]
+    }]
+}, {
+    "value": "江西省",
+    "label": "江西省",
+    "children": [{
+        "value": "南昌市",
+        "label": "南昌市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "东湖区",
+            "label": "东湖区"
+        }, {"value": "西湖区", "label": "西湖区"}, {
+            "value": "青云谱区",
+            "label": "青云谱区"
+        }, {"value": "湾里区", "label": "湾里区"}, {
+            "value": "青山湖区",
+            "label": "青山湖区"
+        }, {"value": "新建区", "label": "新建区"}, {
+            "value": "南昌县",
+            "label": "南昌县"
+        }, {"value": "安义县", "label": "安义县"}, {
+            "value": "进贤县",
+            "label": "进贤县"
+        }]
+    }, {
+        "value": "景德镇市",
+        "label": "景德镇市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "昌江区",
+            "label": "昌江区"
+        }, {"value": "珠山区", "label": "珠山区"}, {
+            "value": "浮梁县",
+            "label": "浮梁县"
+        }, {"value": "乐平市", "label": "乐平市"}]
+    }, {
+        "value": "萍乡市",
+        "label": "萍乡市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "安源区",
+            "label": "安源区"
+        }, {"value": "湘东区", "label": "湘东区"}, {
+            "value": "莲花县",
+            "label": "莲花县"
+        }, {"value": "上栗县", "label": "上栗县"}, {
+            "value": "芦溪县",
+            "label": "芦溪县"
+        }]
+    }, {
+        "value": "九江市",
+        "label": "九江市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "濂溪区",
+            "label": "濂溪区"
+        }, {"value": "浔阳区", "label": "浔阳区"}, {
+            "value": "九江县",
+            "label": "九江县"
+        }, {"value": "武宁县", "label": "武宁县"}, {
+            "value": "修水县",
+            "label": "修水县"
+        }, {"value": "永修县", "label": "永修县"}, {
+            "value": "德安县",
+            "label": "德安县"
+        }, {"value": "都昌县", "label": "都昌县"}, {
+            "value": "湖口县",
+            "label": "湖口县"
+        }, {"value": "彭泽县", "label": "彭泽县"}, {
+            "value": "瑞昌市",
+            "label": "瑞昌市"
+        }, {"value": "共青城市", "label": "共青城市"}, {
+            "value": "庐山市",
+            "label": "庐山市"
+        }]
+    }, {
+        "value": "新余市",
+        "label": "新余市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "渝水区",
+            "label": "渝水区"
+        }, {"value": "分宜县", "label": "分宜县"}]
+    }, {
+        "value": "鹰潭市",
+        "label": "鹰潭市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "月湖区",
+            "label": "月湖区"
+        }, {"value": "余江县", "label": "余江县"}, {
+            "value": "贵溪市",
+            "label": "贵溪市"
+        }]
+    }, {
+        "value": "赣州市",
+        "label": "赣州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "章贡区",
+            "label": "章贡区"
+        }, {"value": "南康区", "label": "南康区"}, {
+            "value": "赣县",
+            "label": "赣县"
+        }, {"value": "信丰县", "label": "信丰县"}, {
+            "value": "大余县",
+            "label": "大余县"
+        }, {"value": "上犹县", "label": "上犹县"}, {
+            "value": "崇义县",
+            "label": "崇义县"
+        }, {"value": "安远县", "label": "安远县"}, {
+            "value": "龙南县",
+            "label": "龙南县"
+        }, {"value": "定南县", "label": "定南县"}, {
+            "value": "全南县",
+            "label": "全南县"
+        }, {"value": "宁都县", "label": "宁都县"}, {
+            "value": "于都县",
+            "label": "于都县"
+        }, {"value": "兴国县", "label": "兴国县"}, {
+            "value": "会昌县",
+            "label": "会昌县"
+        }, {"value": "寻乌县", "label": "寻乌县"}, {
+            "value": "石城县",
+            "label": "石城县"
+        }, {"value": "瑞金市", "label": "瑞金市"}]
+    }, {
+        "value": "吉安市",
+        "label": "吉安市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "吉州区",
+            "label": "吉州区"
+        }, {"value": "青原区", "label": "青原区"}, {
+            "value": "吉安县",
+            "label": "吉安县"
+        }, {"value": "吉水县", "label": "吉水县"}, {
+            "value": "峡江县",
+            "label": "峡江县"
+        }, {"value": "新干县", "label": "新干县"}, {
+            "value": "永丰县",
+            "label": "永丰县"
+        }, {"value": "泰和县", "label": "泰和县"}, {
+            "value": "遂川县",
+            "label": "遂川县"
+        }, {"value": "万安县", "label": "万安县"}, {
+            "value": "安福县",
+            "label": "安福县"
+        }, {"value": "永新县", "label": "永新县"}, {
+            "value": "井冈山市",
+            "label": "井冈山市"
+        }]
+    }, {
+        "value": "宜春市",
+        "label": "宜春市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "袁州区",
+            "label": "袁州区"
+        }, {"value": "奉新县", "label": "奉新县"}, {
+            "value": "万载县",
+            "label": "万载县"
+        }, {"value": "上高县", "label": "上高县"}, {
+            "value": "宜丰县",
+            "label": "宜丰县"
+        }, {"value": "靖安县", "label": "靖安县"}, {
+            "value": "铜鼓县",
+            "label": "铜鼓县"
+        }, {"value": "丰城市", "label": "丰城市"}, {
+            "value": "樟树市",
+            "label": "樟树市"
+        }, {"value": "高安市", "label": "高安市"}]
+    }, {
+        "value": "抚州市",
+        "label": "抚州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "临川区",
+            "label": "临川区"
+        }, {"value": "南城县", "label": "南城县"}, {
+            "value": "黎川县",
+            "label": "黎川县"
+        }, {"value": "南丰县", "label": "南丰县"}, {
+            "value": "崇仁县",
+            "label": "崇仁县"
+        }, {"value": "乐安县", "label": "乐安县"}, {
+            "value": "宜黄县",
+            "label": "宜黄县"
+        }, {"value": "金溪县", "label": "金溪县"}, {
+            "value": "资溪县",
+            "label": "资溪县"
+        }, {"value": "东乡县", "label": "东乡县"}, {
+            "value": "广昌县",
+            "label": "广昌县"
+        }]
+    }, {
+        "value": "上饶市",
+        "label": "上饶市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "信州区",
+            "label": "信州区"
+        }, {"value": "广丰区", "label": "广丰区"}, {
+            "value": "上饶县",
+            "label": "上饶县"
+        }, {"value": "玉山县", "label": "玉山县"}, {
+            "value": "铅山县",
+            "label": "铅山县"
+        }, {"value": "横峰县", "label": "横峰县"}, {
+            "value": "弋阳县",
+            "label": "弋阳县"
+        }, {"value": "余干县", "label": "余干县"}, {
+            "value": "鄱阳县",
+            "label": "鄱阳县"
+        }, {"value": "万年县", "label": "万年县"}, {
+            "value": "婺源县",
+            "label": "婺源县"
+        }, {"value": "德兴市", "label": "德兴市"}]
+    }]
+}, {
+    "value": "山东省",
+    "label": "山东省",
+    "children": [{
+        "value": "济南市",
+        "label": "济南市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "历下区",
+            "label": "历下区"
+        }, {"value": "市中区", "label": "市中区"}, {
+            "value": "槐荫区",
+            "label": "槐荫区"
+        }, {"value": "天桥区", "label": "天桥区"}, {
+            "value": "历城区",
+            "label": "历城区"
+        }, {"value": "长清区", "label": "长清区"}, {
+            "value": "平阴县",
+            "label": "平阴县"
+        }, {"value": "济阳县", "label": "济阳县"}, {
+            "value": "商河县",
+            "label": "商河县"
+        }, {"value": "章丘市", "label": "章丘市"}]
+    }, {
+        "value": "青岛市",
+        "label": "青岛市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "市南区",
+            "label": "市南区"
+        }, {"value": "市北区", "label": "市北区"}, {
+            "value": "黄岛区",
+            "label": "黄岛区"
+        }, {"value": "崂山区", "label": "崂山区"}, {
+            "value": "李沧区",
+            "label": "李沧区"
+        }, {"value": "城阳区", "label": "城阳区"}, {
+            "value": "胶州市",
+            "label": "胶州市"
+        }, {"value": "即墨市", "label": "即墨市"}, {
+            "value": "平度市",
+            "label": "平度市"
+        }, {"value": "莱西市", "label": "莱西市"}]
+    }, {
+        "value": "淄博市",
+        "label": "淄博市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "淄川区",
+            "label": "淄川区"
+        }, {"value": "张店区", "label": "张店区"}, {
+            "value": "博山区",
+            "label": "博山区"
+        }, {"value": "临淄区", "label": "临淄区"}, {
+            "value": "周村区",
+            "label": "周村区"
+        }, {"value": "桓台县", "label": "桓台县"}, {
+            "value": "高青县",
+            "label": "高青县"
+        }, {"value": "沂源县", "label": "沂源县"}]
+    }, {
+        "value": "枣庄市",
+        "label": "枣庄市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "市中区",
+            "label": "市中区"
+        }, {"value": "薛城区", "label": "薛城区"}, {
+            "value": "峄城区",
+            "label": "峄城区"
+        }, {"value": "台儿庄区", "label": "台儿庄区"}, {
+            "value": "山亭区",
+            "label": "山亭区"
+        }, {"value": "滕州市", "label": "滕州市"}]
+    }, {
+        "value": "东营市",
+        "label": "东营市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "东营区",
+            "label": "东营区"
+        }, {"value": "河口区", "label": "河口区"}, {
+            "value": "垦利区",
+            "label": "垦利区"
+        }, {"value": "利津县", "label": "利津县"}, {
+            "value": "广饶县",
+            "label": "广饶县"
+        }]
+    }, {
+        "value": "烟台市",
+        "label": "烟台市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "芝罘区",
+            "label": "芝罘区"
+        }, {"value": "福山区", "label": "福山区"}, {
+            "value": "牟平区",
+            "label": "牟平区"
+        }, {"value": "莱山区", "label": "莱山区"}, {
+            "value": "长岛县",
+            "label": "长岛县"
+        }, {"value": "龙口市", "label": "龙口市"}, {
+            "value": "莱阳市",
+            "label": "莱阳市"
+        }, {"value": "莱州市", "label": "莱州市"}, {
+            "value": "蓬莱市",
+            "label": "蓬莱市"
+        }, {"value": "招远市", "label": "招远市"}, {
+            "value": "栖霞市",
+            "label": "栖霞市"
+        }, {"value": "海阳市", "label": "海阳市"}]
+    }, {
+        "value": "潍坊市",
+        "label": "潍坊市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "潍城区",
+            "label": "潍城区"
+        }, {"value": "寒亭区", "label": "寒亭区"}, {
+            "value": "坊子区",
+            "label": "坊子区"
+        }, {"value": "奎文区", "label": "奎文区"}, {
+            "value": "临朐县",
+            "label": "临朐县"
+        }, {"value": "昌乐县", "label": "昌乐县"}, {
+            "value": "青州市",
+            "label": "青州市"
+        }, {"value": "诸城市", "label": "诸城市"}, {
+            "value": "寿光市",
+            "label": "寿光市"
+        }, {"value": "安丘市", "label": "安丘市"}, {
+            "value": "高密市",
+            "label": "高密市"
+        }, {"value": "昌邑市", "label": "昌邑市"}]
+    }, {
+        "value": "济宁市",
+        "label": "济宁市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "任城区",
+            "label": "任城区"
+        }, {"value": "兖州区", "label": "兖州区"}, {
+            "value": "微山县",
+            "label": "微山县"
+        }, {"value": "鱼台县", "label": "鱼台县"}, {
+            "value": "金乡县",
+            "label": "金乡县"
+        }, {"value": "嘉祥县", "label": "嘉祥县"}, {
+            "value": "汶上县",
+            "label": "汶上县"
+        }, {"value": "泗水县", "label": "泗水县"}, {
+            "value": "梁山县",
+            "label": "梁山县"
+        }, {"value": "曲阜市", "label": "曲阜市"}, {
+            "value": "邹城市",
+            "label": "邹城市"
+        }]
+    }, {
+        "value": "泰安市",
+        "label": "泰安市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "泰山区",
+            "label": "泰山区"
+        }, {"value": "岱岳区", "label": "岱岳区"}, {
+            "value": "宁阳县",
+            "label": "宁阳县"
+        }, {"value": "东平县", "label": "东平县"}, {
+            "value": "新泰市",
+            "label": "新泰市"
+        }, {"value": "肥城市", "label": "肥城市"}]
+    }, {
+        "value": "威海市",
+        "label": "威海市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "环翠区",
+            "label": "环翠区"
+        }, {"value": "文登区", "label": "文登区"}, {
+            "value": "荣成市",
+            "label": "荣成市"
+        }, {"value": "乳山市", "label": "乳山市"}]
+    }, {
+        "value": "日照市",
+        "label": "日照市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "东港区",
+            "label": "东港区"
+        }, {"value": "岚山区", "label": "岚山区"}, {
+            "value": "五莲县",
+            "label": "五莲县"
+        }, {"value": "莒县", "label": "莒县"}]
+    }, {
+        "value": "莱芜市",
+        "label": "莱芜市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "莱城区",
+            "label": "莱城区"
+        }, {"value": "钢城区", "label": "钢城区"}]
+    }, {
+        "value": "临沂市",
+        "label": "临沂市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "兰山区",
+            "label": "兰山区"
+        }, {"value": "罗庄区", "label": "罗庄区"}, {
+            "value": "河东区",
+            "label": "河东区"
+        }, {"value": "沂南县", "label": "沂南县"}, {
+            "value": "郯城县",
+            "label": "郯城县"
+        }, {"value": "沂水县", "label": "沂水县"}, {
+            "value": "兰陵县",
+            "label": "兰陵县"
+        }, {"value": "费县", "label": "费县"}, {
+            "value": "平邑县",
+            "label": "平邑县"
+        }, {"value": "莒南县", "label": "莒南县"}, {
+            "value": "蒙阴县",
+            "label": "蒙阴县"
+        }, {"value": "临沭县", "label": "临沭县"}]
+    }, {
+        "value": "德州市",
+        "label": "德州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "德城区",
+            "label": "德城区"
+        }, {"value": "陵城区", "label": "陵城区"}, {
+            "value": "宁津县",
+            "label": "宁津县"
+        }, {"value": "庆云县", "label": "庆云县"}, {
+            "value": "临邑县",
+            "label": "临邑县"
+        }, {"value": "齐河县", "label": "齐河县"}, {
+            "value": "平原县",
+            "label": "平原县"
+        }, {"value": "夏津县", "label": "夏津县"}, {
+            "value": "武城县",
+            "label": "武城县"
+        }, {"value": "乐陵市", "label": "乐陵市"}, {
+            "value": "禹城市",
+            "label": "禹城市"
+        }]
+    }, {
+        "value": "聊城市",
+        "label": "聊城市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "东昌府区", "label": "东昌府区"}, {
+            "value": "阳谷县",
+            "label": "阳谷县"
+        }, {"value": "莘县", "label": "莘县"}, {
+            "value": "茌平县",
+            "label": "茌平县"
+        }, {"value": "东阿县", "label": "东阿县"}, {
+            "value": "冠县",
+            "label": "冠县"
+        }, {"value": "高唐县", "label": "高唐县"}, {
+            "value": "临清市",
+            "label": "临清市"
+        }]
+    }, {
+        "value": "滨州市",
+        "label": "滨州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "滨城区",
+            "label": "滨城区"
+        }, {"value": "沾化区", "label": "沾化区"}, {
+            "value": "惠民县",
+            "label": "惠民县"
+        }, {"value": "阳信县", "label": "阳信县"}, {
+            "value": "无棣县",
+            "label": "无棣县"
+        }, {"value": "博兴县", "label": "博兴县"}, {
+            "value": "邹平县",
+            "label": "邹平县"
+        }]
+    }, {
+        "value": "菏泽市",
+        "label": "菏泽市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "牡丹区",
+            "label": "牡丹区"
+        }, {"value": "定陶区", "label": "定陶区"}, {
+            "value": "曹县",
+            "label": "曹县"
+        }, {"value": "单县", "label": "单县"}, {
+            "value": "成武县",
+            "label": "成武县"
+        }, {"value": "巨野县", "label": "巨野县"}, {
+            "value": "郓城县",
+            "label": "郓城县"
+        }, {"value": "鄄城县", "label": "鄄城县"}, {
+            "value": "东明县",
+            "label": "东明县"
+        }]
+    }]
+}, {
+    "value": "河南省",
+    "label": "河南省",
+    "children": [{
+        "value": "郑州市",
+        "label": "郑州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "中原区",
+            "label": "中原区"
+        }, {"value": "二七区", "label": "二七区"}, {
+            "value": "管城回族区",
+            "label": "管城回族区"
+        }, {"value": "金水区", "label": "金水区"}, {
+            "value": "上街区",
+            "label": "上街区"
+        }, {"value": "惠济区", "label": "惠济区"}, {
+            "value": "中牟县",
+            "label": "中牟县"
+        }, {"value": "巩义市", "label": "巩义市"}, {
+            "value": "荥阳市",
+            "label": "荥阳市"
+        }, {"value": "新密市", "label": "新密市"}, {
+            "value": "新郑市",
+            "label": "新郑市"
+        }, {"value": "登封市", "label": "登封市"}]
+    }, {
+        "value": "开封市",
+        "label": "开封市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "龙亭区",
+            "label": "龙亭区"
+        }, {
+            "value": "顺河回族区",
+            "label": "顺河回族区"
+        }, {"value": "鼓楼区", "label": "鼓楼区"}, {
+            "value": "禹王台区",
+            "label": "禹王台区"
+        }, {"value": "金明区", "label": "金明区"}, {
+            "value": "祥符区",
+            "label": "祥符区"
+        }, {"value": "杞县", "label": "杞县"}, {
+            "value": "通许县",
+            "label": "通许县"
+        }, {"value": "尉氏县", "label": "尉氏县"}, {
+            "value": "兰考县",
+            "label": "兰考县"
+        }]
+    }, {
+        "value": "洛阳市",
+        "label": "洛阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "老城区",
+            "label": "老城区"
+        }, {"value": "西工区", "label": "西工区"}, {
+            "value": "瀍河回族区",
+            "label": "瀍河回族区"
+        }, {"value": "涧西区", "label": "涧西区"}, {
+            "value": "吉利区",
+            "label": "吉利区"
+        }, {"value": "洛龙区", "label": "洛龙区"}, {
+            "value": "孟津县",
+            "label": "孟津县"
+        }, {"value": "新安县", "label": "新安县"}, {
+            "value": "栾川县",
+            "label": "栾川县"
+        }, {"value": "嵩县", "label": "嵩县"}, {
+            "value": "汝阳县",
+            "label": "汝阳县"
+        }, {"value": "宜阳县", "label": "宜阳县"}, {
+            "value": "洛宁县",
+            "label": "洛宁县"
+        }, {"value": "伊川县", "label": "伊川县"}, {
+            "value": "偃师市",
+            "label": "偃师市"
+        }]
+    }, {
+        "value": "平顶山市",
+        "label": "平顶山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "新华区",
+            "label": "新华区"
+        }, {"value": "卫东区", "label": "卫东区"}, {
+            "value": "石龙区",
+            "label": "石龙区"
+        }, {"value": "湛河区", "label": "湛河区"}, {
+            "value": "宝丰县",
+            "label": "宝丰县"
+        }, {"value": "叶县", "label": "叶县"}, {
+            "value": "鲁山县",
+            "label": "鲁山县"
+        }, {"value": "郏县", "label": "郏县"}, {
+            "value": "舞钢市",
+            "label": "舞钢市"
+        }, {"value": "汝州市", "label": "汝州市"}]
+    }, {
+        "value": "安阳市",
+        "label": "安阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "文峰区",
+            "label": "文峰区"
+        }, {"value": "北关区", "label": "北关区"}, {
+            "value": "殷都区",
+            "label": "殷都区"
+        }, {"value": "龙安区", "label": "龙安区"}, {
+            "value": "安阳县",
+            "label": "安阳县"
+        }, {"value": "汤阴县", "label": "汤阴县"}, {
+            "value": "滑县",
+            "label": "滑县"
+        }, {"value": "内黄县", "label": "内黄县"}, {
+            "value": "林州市",
+            "label": "林州市"
+        }]
+    }, {
+        "value": "鹤壁市",
+        "label": "鹤壁市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "鹤山区",
+            "label": "鹤山区"
+        }, {"value": "山城区", "label": "山城区"}, {
+            "value": "淇滨区",
+            "label": "淇滨区"
+        }, {"value": "浚县", "label": "浚县"}, {"value": "淇县", "label": "淇县"}]
+    }, {
+        "value": "新乡市",
+        "label": "新乡市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "红旗区",
+            "label": "红旗区"
+        }, {"value": "卫滨区", "label": "卫滨区"}, {
+            "value": "凤泉区",
+            "label": "凤泉区"
+        }, {"value": "牧野区", "label": "牧野区"}, {
+            "value": "新乡县",
+            "label": "新乡县"
+        }, {"value": "获嘉县", "label": "获嘉县"}, {
+            "value": "原阳县",
+            "label": "原阳县"
+        }, {"value": "延津县", "label": "延津县"}, {
+            "value": "封丘县",
+            "label": "封丘县"
+        }, {"value": "长垣县", "label": "长垣县"}, {
+            "value": "卫辉市",
+            "label": "卫辉市"
+        }, {"value": "辉县市", "label": "辉县市"}]
+    }, {
+        "value": "焦作市",
+        "label": "焦作市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "解放区",
+            "label": "解放区"
+        }, {"value": "中站区", "label": "中站区"}, {
+            "value": "马村区",
+            "label": "马村区"
+        }, {"value": "山阳区", "label": "山阳区"}, {
+            "value": "修武县",
+            "label": "修武县"
+        }, {"value": "博爱县", "label": "博爱县"}, {
+            "value": "武陟县",
+            "label": "武陟县"
+        }, {"value": "温县", "label": "温县"}, {
+            "value": "沁阳市",
+            "label": "沁阳市"
+        }, {"value": "孟州市", "label": "孟州市"}]
+    }, {
+        "value": "濮阳市",
+        "label": "濮阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "华龙区",
+            "label": "华龙区"
+        }, {"value": "清丰县", "label": "清丰县"}, {
+            "value": "南乐县",
+            "label": "南乐县"
+        }, {"value": "范县", "label": "范县"}, {
+            "value": "台前县",
+            "label": "台前县"
+        }, {"value": "濮阳县", "label": "濮阳县"}]
+    }, {
+        "value": "许昌市",
+        "label": "许昌市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "魏都区",
+            "label": "魏都区"
+        }, {"value": "许昌县", "label": "许昌县"}, {
+            "value": "鄢陵县",
+            "label": "鄢陵县"
+        }, {"value": "襄城县", "label": "襄城县"}, {
+            "value": "禹州市",
+            "label": "禹州市"
+        }, {"value": "长葛市", "label": "长葛市"}]
+    }, {
+        "value": "漯河市",
+        "label": "漯河市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "源汇区",
+            "label": "源汇区"
+        }, {"value": "郾城区", "label": "郾城区"}, {
+            "value": "召陵区",
+            "label": "召陵区"
+        }, {"value": "舞阳县", "label": "舞阳县"}, {
+            "value": "临颍县",
+            "label": "临颍县"
+        }]
+    }, {
+        "value": "三门峡市",
+        "label": "三门峡市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "湖滨区",
+            "label": "湖滨区"
+        }, {"value": "陕州区", "label": "陕州区"}, {
+            "value": "渑池县",
+            "label": "渑池县"
+        }, {"value": "卢氏县", "label": "卢氏县"}, {
+            "value": "义马市",
+            "label": "义马市"
+        }, {"value": "灵宝市", "label": "灵宝市"}]
+    }, {
+        "value": "南阳市",
+        "label": "南阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "宛城区",
+            "label": "宛城区"
+        }, {"value": "卧龙区", "label": "卧龙区"}, {
+            "value": "南召县",
+            "label": "南召县"
+        }, {"value": "方城县", "label": "方城县"}, {
+            "value": "西峡县",
+            "label": "西峡县"
+        }, {"value": "镇平县", "label": "镇平县"}, {
+            "value": "内乡县",
+            "label": "内乡县"
+        }, {"value": "淅川县", "label": "淅川县"}, {
+            "value": "社旗县",
+            "label": "社旗县"
+        }, {"value": "唐河县", "label": "唐河县"}, {
+            "value": "新野县",
+            "label": "新野县"
+        }, {"value": "桐柏县", "label": "桐柏县"}, {
+            "value": "邓州市",
+            "label": "邓州市"
+        }]
+    }, {
+        "value": "商丘市",
+        "label": "商丘市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "梁园区",
+            "label": "梁园区"
+        }, {"value": "睢阳区", "label": "睢阳区"}, {
+            "value": "民权县",
+            "label": "民权县"
+        }, {"value": "睢县", "label": "睢县"}, {
+            "value": "宁陵县",
+            "label": "宁陵县"
+        }, {"value": "柘城县", "label": "柘城县"}, {
+            "value": "虞城县",
+            "label": "虞城县"
+        }, {"value": "夏邑县", "label": "夏邑县"}, {
+            "value": "永城市",
+            "label": "永城市"
+        }]
+    }, {
+        "value": "信阳市",
+        "label": "信阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "浉河区",
+            "label": "浉河区"
+        }, {"value": "平桥区", "label": "平桥区"}, {
+            "value": "罗山县",
+            "label": "罗山县"
+        }, {"value": "光山县", "label": "光山县"}, {
+            "value": "新县",
+            "label": "新县"
+        }, {"value": "商城县", "label": "商城县"}, {
+            "value": "固始县",
+            "label": "固始县"
+        }, {"value": "潢川县", "label": "潢川县"}, {
+            "value": "淮滨县",
+            "label": "淮滨县"
+        }, {"value": "息县", "label": "息县"}]
+    }, {
+        "value": "周口市",
+        "label": "周口市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "川汇区",
+            "label": "川汇区"
+        }, {"value": "扶沟县", "label": "扶沟县"}, {
+            "value": "西华县",
+            "label": "西华县"
+        }, {"value": "商水县", "label": "商水县"}, {
+            "value": "沈丘县",
+            "label": "沈丘县"
+        }, {"value": "郸城县", "label": "郸城县"}, {
+            "value": "淮阳县",
+            "label": "淮阳县"
+        }, {"value": "太康县", "label": "太康县"}, {
+            "value": "鹿邑县",
+            "label": "鹿邑县"
+        }, {"value": "项城市", "label": "项城市"}]
+    }, {
+        "value": "驻马店市",
+        "label": "驻马店市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "驿城区",
+            "label": "驿城区"
+        }, {"value": "西平县", "label": "西平县"}, {
+            "value": "上蔡县",
+            "label": "上蔡县"
+        }, {"value": "平舆县", "label": "平舆县"}, {
+            "value": "正阳县",
+            "label": "正阳县"
+        }, {"value": "确山县", "label": "确山县"}, {
+            "value": "泌阳县",
+            "label": "泌阳县"
+        }, {"value": "汝南县", "label": "汝南县"}, {
+            "value": "遂平县",
+            "label": "遂平县"
+        }, {"value": "新蔡县", "label": "新蔡县"}]
+    }, {
+        "value": "直辖县",
+        "label": "直辖县",
+        "children": [{"value": "济源市", "label": "济源市"}]
+    }]
+}, {
+    "value": "湖北省",
+    "label": "湖北省",
+    "children": [{
+        "value": "武汉市",
+        "label": "武汉市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "江岸区",
+            "label": "江岸区"
+        }, {"value": "江汉区", "label": "江汉区"}, {
+            "value": "硚口区",
+            "label": "硚口区"
+        }, {"value": "汉阳区", "label": "汉阳区"}, {
+            "value": "武昌区",
+            "label": "武昌区"
+        }, {"value": "青山区", "label": "青山区"}, {
+            "value": "洪山区",
+            "label": "洪山区"
+        }, {"value": "东西湖区", "label": "东西湖区"}, {
+            "value": "汉南区",
+            "label": "汉南区"
+        }, {"value": "蔡甸区", "label": "蔡甸区"}, {
+            "value": "江夏区",
+            "label": "江夏区"
+        }, {"value": "黄陂区", "label": "黄陂区"}, {
+            "value": "新洲区",
+            "label": "新洲区"
+        }]
+    }, {
+        "value": "黄石市",
+        "label": "黄石市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {
+            "value": "黄石港区",
+            "label": "黄石港区"
+        }, {"value": "西塞山区", "label": "西塞山区"}, {
+            "value": "下陆区",
+            "label": "下陆区"
+        }, {"value": "铁山区", "label": "铁山区"}, {
+            "value": "阳新县",
+            "label": "阳新县"
+        }, {"value": "大冶市", "label": "大冶市"}]
+    }, {
+        "value": "十堰市",
+        "label": "十堰市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "茅箭区",
+            "label": "茅箭区"
+        }, {"value": "张湾区", "label": "张湾区"}, {
+            "value": "郧阳区",
+            "label": "郧阳区"
+        }, {"value": "郧西县", "label": "郧西县"}, {
+            "value": "竹山县",
+            "label": "竹山县"
+        }, {"value": "竹溪县", "label": "竹溪县"}, {
+            "value": "房县",
+            "label": "房县"
+        }, {"value": "丹江口市", "label": "丹江口市"}]
+    }, {
+        "value": "宜昌市",
+        "label": "宜昌市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "西陵区",
+            "label": "西陵区"
+        }, {"value": "伍家岗区", "label": "伍家岗区"}, {
+            "value": "点军区",
+            "label": "点军区"
+        }, {"value": "猇亭区", "label": "猇亭区"}, {
+            "value": "夷陵区",
+            "label": "夷陵区"
+        }, {"value": "远安县", "label": "远安县"}, {
+            "value": "兴山县",
+            "label": "兴山县"
+        }, {
+            "value": "秭归县",
+            "label": "秭归县"
+        }, {
+            "value": "长阳土家族自治县",
+            "label": "长阳土家族自治县"
+        }, {
+            "value": "五峰土家族自治县",
+            "label": "五峰土家族自治县"
+        }, {"value": "宜都市", "label": "宜都市"}, {
+            "value": "当阳市",
+            "label": "当阳市"
+        }, {"value": "枝江市", "label": "枝江市"}]
+    }, {
+        "value": "襄阳市",
+        "label": "襄阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "襄城区",
+            "label": "襄城区"
+        }, {"value": "樊城区", "label": "樊城区"}, {
+            "value": "襄州区",
+            "label": "襄州区"
+        }, {"value": "南漳县", "label": "南漳县"}, {
+            "value": "谷城县",
+            "label": "谷城县"
+        }, {"value": "保康县", "label": "保康县"}, {
+            "value": "老河口市",
+            "label": "老河口市"
+        }, {"value": "枣阳市", "label": "枣阳市"}, {
+            "value": "宜城市",
+            "label": "宜城市"
+        }]
+    }, {
+        "value": "鄂州市",
+        "label": "鄂州市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "梁子湖区", "label": "梁子湖区"}, {
+            "value": "华容区",
+            "label": "华容区"
+        }, {"value": "鄂城区", "label": "鄂城区"}]
+    }, {
+        "value": "荆门市",
+        "label": "荆门市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "东宝区",
+            "label": "东宝区"
+        }, {"value": "掇刀区", "label": "掇刀区"}, {
+            "value": "京山县",
+            "label": "京山县"
+        }, {"value": "沙洋县", "label": "沙洋县"}, {
+            "value": "钟祥市",
+            "label": "钟祥市"
+        }]
+    }, {
+        "value": "孝感市",
+        "label": "孝感市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "孝南区",
+            "label": "孝南区"
+        }, {"value": "孝昌县", "label": "孝昌县"}, {
+            "value": "大悟县",
+            "label": "大悟县"
+        }, {"value": "云梦县", "label": "云梦县"}, {
+            "value": "应城市",
+            "label": "应城市"
+        }, {"value": "安陆市", "label": "安陆市"}, {
+            "value": "汉川市",
+            "label": "汉川市"
+        }]
+    }, {
+        "value": "荆州市",
+        "label": "荆州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "沙市区",
+            "label": "沙市区"
+        }, {"value": "荆州区", "label": "荆州区"}, {
+            "value": "公安县",
+            "label": "公安县"
+        }, {"value": "监利县", "label": "监利县"}, {
+            "value": "江陵县",
+            "label": "江陵县"
+        }, {"value": "石首市", "label": "石首市"}, {
+            "value": "洪湖市",
+            "label": "洪湖市"
+        }, {"value": "松滋市", "label": "松滋市"}]
+    }, {
+        "value": "黄冈市",
+        "label": "黄冈市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "黄州区",
+            "label": "黄州区"
+        }, {"value": "团风县", "label": "团风县"}, {
+            "value": "红安县",
+            "label": "红安县"
+        }, {"value": "罗田县", "label": "罗田县"}, {
+            "value": "英山县",
+            "label": "英山县"
+        }, {"value": "浠水县", "label": "浠水县"}, {
+            "value": "蕲春县",
+            "label": "蕲春县"
+        }, {"value": "黄梅县", "label": "黄梅县"}, {
+            "value": "麻城市",
+            "label": "麻城市"
+        }, {"value": "武穴市", "label": "武穴市"}]
+    }, {
+        "value": "咸宁市",
+        "label": "咸宁市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "咸安区",
+            "label": "咸安区"
+        }, {"value": "嘉鱼县", "label": "嘉鱼县"}, {
+            "value": "通城县",
+            "label": "通城县"
+        }, {"value": "崇阳县", "label": "崇阳县"}, {
+            "value": "通山县",
+            "label": "通山县"
+        }, {"value": "赤壁市", "label": "赤壁市"}]
+    }, {
+        "value": "随州市",
+        "label": "随州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "曾都区",
+            "label": "曾都区"
+        }, {"value": "随县", "label": "随县"}, {
+            "value": "广水市",
+            "label": "广水市"
+        }]
+    }, {
+        "value": "恩施土家族苗族自治州",
+        "label": "恩施土家族苗族自治州",
+        "children": [{"value": "恩施市", "label": "恩施市"}, {
+            "value": "利川市",
+            "label": "利川市"
+        }, {"value": "建始县", "label": "建始县"}, {
+            "value": "巴东县",
+            "label": "巴东县"
+        }, {"value": "宣恩县", "label": "宣恩县"}, {
+            "value": "咸丰县",
+            "label": "咸丰县"
+        }, {"value": "来凤县", "label": "来凤县"}, {
+            "value": "鹤峰县",
+            "label": "鹤峰县"
+        }]
+    }, {
+        "value": "直辖县",
+        "label": "直辖县",
+        "children": [{"value": "仙桃市", "label": "仙桃市"}, {
+            "value": "潜江市",
+            "label": "潜江市"
+        }, {"value": "天门市", "label": "天门市"}, {
+            "value": "神农架林区",
+            "label": "神农架林区"
+        }]
+    }]
+}, {
+    "value": "湖南省",
+    "label": "湖南省",
+    "children": [{
+        "value": "长沙市",
+        "label": "长沙市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "芙蓉区",
+            "label": "芙蓉区"
+        }, {"value": "天心区", "label": "天心区"}, {
+            "value": "岳麓区",
+            "label": "岳麓区"
+        }, {"value": "开福区", "label": "开福区"}, {
+            "value": "雨花区",
+            "label": "雨花区"
+        }, {"value": "望城区", "label": "望城区"}, {
+            "value": "长沙县",
+            "label": "长沙县"
+        }, {"value": "宁乡县", "label": "宁乡县"}, {
+            "value": "浏阳市",
+            "label": "浏阳市"
+        }]
+    }, {
+        "value": "株洲市",
+        "label": "株洲市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "荷塘区",
+            "label": "荷塘区"
+        }, {"value": "芦淞区", "label": "芦淞区"}, {
+            "value": "石峰区",
+            "label": "石峰区"
+        }, {"value": "天元区", "label": "天元区"}, {
+            "value": "株洲县",
+            "label": "株洲县"
+        }, {"value": "攸县", "label": "攸县"}, {
+            "value": "茶陵县",
+            "label": "茶陵县"
+        }, {"value": "炎陵县", "label": "炎陵县"}, {
+            "value": "醴陵市",
+            "label": "醴陵市"
+        }]
+    }, {
+        "value": "湘潭市",
+        "label": "湘潭市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "雨湖区",
+            "label": "雨湖区"
+        }, {"value": "岳塘区", "label": "岳塘区"}, {
+            "value": "湘潭县",
+            "label": "湘潭县"
+        }, {"value": "湘乡市", "label": "湘乡市"}, {
+            "value": "韶山市",
+            "label": "韶山市"
+        }]
+    }, {
+        "value": "衡阳市",
+        "label": "衡阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "珠晖区",
+            "label": "珠晖区"
+        }, {"value": "雁峰区", "label": "雁峰区"}, {
+            "value": "石鼓区",
+            "label": "石鼓区"
+        }, {"value": "蒸湘区", "label": "蒸湘区"}, {
+            "value": "南岳区",
+            "label": "南岳区"
+        }, {"value": "衡阳县", "label": "衡阳县"}, {
+            "value": "衡南县",
+            "label": "衡南县"
+        }, {"value": "衡山县", "label": "衡山县"}, {
+            "value": "衡东县",
+            "label": "衡东县"
+        }, {"value": "祁东县", "label": "祁东县"}, {
+            "value": "耒阳市",
+            "label": "耒阳市"
+        }, {"value": "常宁市", "label": "常宁市"}]
+    }, {
+        "value": "邵阳市",
+        "label": "邵阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "双清区",
+            "label": "双清区"
+        }, {"value": "大祥区", "label": "大祥区"}, {
+            "value": "北塔区",
+            "label": "北塔区"
+        }, {"value": "邵东县", "label": "邵东县"}, {
+            "value": "新邵县",
+            "label": "新邵县"
+        }, {"value": "邵阳县", "label": "邵阳县"}, {
+            "value": "隆回县",
+            "label": "隆回县"
+        }, {"value": "洞口县", "label": "洞口县"}, {
+            "value": "绥宁县",
+            "label": "绥宁县"
+        }, {
+            "value": "新宁县",
+            "label": "新宁县"
+        }, {
+            "value": "城步苗族自治县",
+            "label": "城步苗族自治县"
+        }, {"value": "武冈市", "label": "武冈市"}]
+    }, {
+        "value": "岳阳市",
+        "label": "岳阳市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "岳阳楼区", "label": "岳阳楼区"}, {
+            "value": "云溪区",
+            "label": "云溪区"
+        }, {"value": "君山区", "label": "君山区"}, {
+            "value": "岳阳县",
+            "label": "岳阳县"
+        }, {"value": "华容县", "label": "华容县"}, {
+            "value": "湘阴县",
+            "label": "湘阴县"
+        }, {"value": "平江县", "label": "平江县"}, {
+            "value": "汨罗市",
+            "label": "汨罗市"
+        }, {"value": "临湘市", "label": "临湘市"}]
+    }, {
+        "value": "常德市",
+        "label": "常德市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "武陵区",
+            "label": "武陵区"
+        }, {"value": "鼎城区", "label": "鼎城区"}, {
+            "value": "安乡县",
+            "label": "安乡县"
+        }, {"value": "汉寿县", "label": "汉寿县"}, {
+            "value": "澧县",
+            "label": "澧县"
+        }, {"value": "临澧县", "label": "临澧县"}, {
+            "value": "桃源县",
+            "label": "桃源县"
+        }, {"value": "石门县", "label": "石门县"}, {
+            "value": "津市市",
+            "label": "津市市"
+        }]
+    }, {
+        "value": "张家界市",
+        "label": "张家界市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "永定区",
+            "label": "永定区"
+        }, {"value": "武陵源区", "label": "武陵源区"}, {
+            "value": "慈利县",
+            "label": "慈利县"
+        }, {"value": "桑植县", "label": "桑植县"}]
+    }, {
+        "value": "益阳市",
+        "label": "益阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "资阳区",
+            "label": "资阳区"
+        }, {"value": "赫山区", "label": "赫山区"}, {
+            "value": "南县",
+            "label": "南县"
+        }, {"value": "桃江县", "label": "桃江县"}, {
+            "value": "安化县",
+            "label": "安化县"
+        }, {"value": "沅江市", "label": "沅江市"}]
+    }, {
+        "value": "郴州市",
+        "label": "郴州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "北湖区",
+            "label": "北湖区"
+        }, {"value": "苏仙区", "label": "苏仙区"}, {
+            "value": "桂阳县",
+            "label": "桂阳县"
+        }, {"value": "宜章县", "label": "宜章县"}, {
+            "value": "永兴县",
+            "label": "永兴县"
+        }, {"value": "嘉禾县", "label": "嘉禾县"}, {
+            "value": "临武县",
+            "label": "临武县"
+        }, {"value": "汝城县", "label": "汝城县"}, {
+            "value": "桂东县",
+            "label": "桂东县"
+        }, {"value": "安仁县", "label": "安仁县"}, {
+            "value": "资兴市",
+            "label": "资兴市"
+        }]
+    }, {
+        "value": "永州市",
+        "label": "永州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "零陵区",
+            "label": "零陵区"
+        }, {"value": "冷水滩区", "label": "冷水滩区"}, {
+            "value": "祁阳县",
+            "label": "祁阳县"
+        }, {"value": "东安县", "label": "东安县"}, {
+            "value": "双牌县",
+            "label": "双牌县"
+        }, {"value": "道县", "label": "道县"}, {
+            "value": "江永县",
+            "label": "江永县"
+        }, {"value": "宁远县", "label": "宁远县"}, {
+            "value": "蓝山县",
+            "label": "蓝山县"
+        }, {
+            "value": "新田县",
+            "label": "新田县"
+        }, {
+            "value": "江华瑶族自治县",
+            "label": "江华瑶族自治县"
+        }]
+    }, {
+        "value": "怀化市",
+        "label": "怀化市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "鹤城区",
+            "label": "鹤城区"
+        }, {"value": "中方县", "label": "中方县"}, {
+            "value": "沅陵县",
+            "label": "沅陵县"
+        }, {"value": "辰溪县", "label": "辰溪县"}, {
+            "value": "溆浦县",
+            "label": "溆浦县"
+        }, {
+            "value": "会同县",
+            "label": "会同县"
+        }, {
+            "value": "麻阳苗族自治县",
+            "label": "麻阳苗族自治县"
+        }, {
+            "value": "新晃侗族自治县",
+            "label": "新晃侗族自治县"
+        }, {
+            "value": "芷江侗族自治县",
+            "label": "芷江侗族自治县"
+        }, {
+            "value": "靖州苗族侗族自治县",
+            "label": "靖州苗族侗族自治县"
+        }, {
+            "value": "通道侗族自治县",
+            "label": "通道侗族自治县"
+        }, {"value": "洪江市", "label": "洪江市"}]
+    }, {
+        "value": "娄底市",
+        "label": "娄底市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "娄星区",
+            "label": "娄星区"
+        }, {"value": "双峰县", "label": "双峰县"}, {
+            "value": "新化县",
+            "label": "新化县"
+        }, {"value": "冷水江市", "label": "冷水江市"}, {
+            "value": "涟源市",
+            "label": "涟源市"
+        }]
+    }, {
+        "value": "湘西土家族苗族自治州",
+        "label": "湘西土家族苗族自治州",
+        "children": [{"value": "吉首市", "label": "吉首市"}, {
+            "value": "泸溪县",
+            "label": "泸溪县"
+        }, {"value": "凤凰县", "label": "凤凰县"}, {
+            "value": "花垣县",
+            "label": "花垣县"
+        }, {"value": "保靖县", "label": "保靖县"}, {
+            "value": "古丈县",
+            "label": "古丈县"
+        }, {"value": "永顺县", "label": "永顺县"}, {
+            "value": "龙山县",
+            "label": "龙山县"
+        }]
+    }]
+}, {
+    "value": "广东省",
+    "label": "广东省",
+    "children": [{
+        "value": "广州市",
+        "label": "广州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "荔湾区",
+            "label": "荔湾区"
+        }, {"value": "越秀区", "label": "越秀区"}, {
+            "value": "海珠区",
+            "label": "海珠区"
+        }, {"value": "天河区", "label": "天河区"}, {
+            "value": "白云区",
+            "label": "白云区"
+        }, {"value": "黄埔区", "label": "黄埔区"}, {
+            "value": "番禺区",
+            "label": "番禺区"
+        }, {"value": "花都区", "label": "花都区"}, {
+            "value": "南沙区",
+            "label": "南沙区"
+        }, {"value": "从化区", "label": "从化区"}, {
+            "value": "增城区",
+            "label": "增城区"
+        }]
+    }, {
+        "value": "韶关市",
+        "label": "韶关市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "武江区",
+            "label": "武江区"
+        }, {"value": "浈江区", "label": "浈江区"}, {
+            "value": "曲江区",
+            "label": "曲江区"
+        }, {"value": "始兴县", "label": "始兴县"}, {
+            "value": "仁化县",
+            "label": "仁化县"
+        }, {
+            "value": "翁源县",
+            "label": "翁源县"
+        }, {
+            "value": "乳源瑶族自治县",
+            "label": "乳源瑶族自治县"
+        }, {"value": "新丰县", "label": "新丰县"}, {
+            "value": "乐昌市",
+            "label": "乐昌市"
+        }, {"value": "南雄市", "label": "南雄市"}]
+    }, {
+        "value": "深圳市",
+        "label": "深圳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "罗湖区",
+            "label": "罗湖区"
+        }, {"value": "福田区", "label": "福田区"}, {
+            "value": "南山区",
+            "label": "南山区"
+        }, {"value": "宝安区", "label": "宝安区"}, {
+            "value": "龙岗区",
+            "label": "龙岗区"
+        }, {"value": "盐田区", "label": "盐田区"}]
+    }, {
+        "value": "珠海市",
+        "label": "珠海市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "香洲区",
+            "label": "香洲区"
+        }, {"value": "斗门区", "label": "斗门区"}, {
+            "value": "金湾区",
+            "label": "金湾区"
+        }]
+    }, {
+        "value": "汕头市",
+        "label": "汕头市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "龙湖区",
+            "label": "龙湖区"
+        }, {"value": "金平区", "label": "金平区"}, {
+            "value": "濠江区",
+            "label": "濠江区"
+        }, {"value": "潮阳区", "label": "潮阳区"}, {
+            "value": "潮南区",
+            "label": "潮南区"
+        }, {"value": "澄海区", "label": "澄海区"}, {
+            "value": "南澳县",
+            "label": "南澳县"
+        }]
+    }, {
+        "value": "佛山市",
+        "label": "佛山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "禅城区",
+            "label": "禅城区"
+        }, {"value": "南海区", "label": "南海区"}, {
+            "value": "顺德区",
+            "label": "顺德区"
+        }, {"value": "三水区", "label": "三水区"}, {
+            "value": "高明区",
+            "label": "高明区"
+        }]
+    }, {
+        "value": "江门市",
+        "label": "江门市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "蓬江区",
+            "label": "蓬江区"
+        }, {"value": "江海区", "label": "江海区"}, {
+            "value": "新会区",
+            "label": "新会区"
+        }, {"value": "台山市", "label": "台山市"}, {
+            "value": "开平市",
+            "label": "开平市"
+        }, {"value": "鹤山市", "label": "鹤山市"}, {
+            "value": "恩平市",
+            "label": "恩平市"
+        }]
+    }, {
+        "value": "湛江市",
+        "label": "湛江市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "赤坎区",
+            "label": "赤坎区"
+        }, {"value": "霞山区", "label": "霞山区"}, {
+            "value": "坡头区",
+            "label": "坡头区"
+        }, {"value": "麻章区", "label": "麻章区"}, {
+            "value": "遂溪县",
+            "label": "遂溪县"
+        }, {"value": "徐闻县", "label": "徐闻县"}, {
+            "value": "廉江市",
+            "label": "廉江市"
+        }, {"value": "雷州市", "label": "雷州市"}, {
+            "value": "吴川市",
+            "label": "吴川市"
+        }]
+    }, {
+        "value": "茂名市",
+        "label": "茂名市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "茂南区",
+            "label": "茂南区"
+        }, {"value": "电白区", "label": "电白区"}, {
+            "value": "高州市",
+            "label": "高州市"
+        }, {"value": "化州市", "label": "化州市"}, {
+            "value": "信宜市",
+            "label": "信宜市"
+        }]
+    }, {
+        "value": "肇庆市",
+        "label": "肇庆市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "端州区",
+            "label": "端州区"
+        }, {"value": "鼎湖区", "label": "鼎湖区"}, {
+            "value": "高要区",
+            "label": "高要区"
+        }, {"value": "广宁县", "label": "广宁县"}, {
+            "value": "怀集县",
+            "label": "怀集县"
+        }, {"value": "封开县", "label": "封开县"}, {
+            "value": "德庆县",
+            "label": "德庆县"
+        }, {"value": "四会市", "label": "四会市"}]
+    }, {
+        "value": "惠州市",
+        "label": "惠州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "惠城区",
+            "label": "惠城区"
+        }, {"value": "惠阳区", "label": "惠阳区"}, {
+            "value": "博罗县",
+            "label": "博罗县"
+        }, {"value": "惠东县", "label": "惠东县"}, {
+            "value": "龙门县",
+            "label": "龙门县"
+        }]
+    }, {
+        "value": "梅州市",
+        "label": "梅州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "梅江区",
+            "label": "梅江区"
+        }, {"value": "梅县区", "label": "梅县区"}, {
+            "value": "大埔县",
+            "label": "大埔县"
+        }, {"value": "丰顺县", "label": "丰顺县"}, {
+            "value": "五华县",
+            "label": "五华县"
+        }, {"value": "平远县", "label": "平远县"}, {
+            "value": "蕉岭县",
+            "label": "蕉岭县"
+        }, {"value": "兴宁市", "label": "兴宁市"}]
+    }, {
+        "value": "汕尾市",
+        "label": "汕尾市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "城区",
+            "label": "城区"
+        }, {"value": "海丰县", "label": "海丰县"}, {
+            "value": "陆河县",
+            "label": "陆河县"
+        }, {"value": "陆丰市", "label": "陆丰市"}]
+    }, {
+        "value": "河源市",
+        "label": "河源市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "源城区",
+            "label": "源城区"
+        }, {"value": "紫金县", "label": "紫金县"}, {
+            "value": "龙川县",
+            "label": "龙川县"
+        }, {"value": "连平县", "label": "连平县"}, {
+            "value": "和平县",
+            "label": "和平县"
+        }, {"value": "东源县", "label": "东源县"}]
+    }, {
+        "value": "阳江市",
+        "label": "阳江市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "江城区",
+            "label": "江城区"
+        }, {"value": "阳东区", "label": "阳东区"}, {
+            "value": "阳西县",
+            "label": "阳西县"
+        }, {"value": "阳春市", "label": "阳春市"}]
+    }, {
+        "value": "清远市",
+        "label": "清远市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "清城区",
+            "label": "清城区"
+        }, {"value": "清新区", "label": "清新区"}, {
+            "value": "佛冈县",
+            "label": "佛冈县"
+        }, {
+            "value": "阳山县",
+            "label": "阳山县"
+        }, {
+            "value": "连山壮族瑶族自治县",
+            "label": "连山壮族瑶族自治县"
+        }, {
+            "value": "连南瑶族自治县",
+            "label": "连南瑶族自治县"
+        }, {"value": "英德市", "label": "英德市"}, {
+            "value": "连州市",
+            "label": "连州市"
+        }]
+    }, {
+        "value": "东莞市",
+        "label": "东莞市",
+        "children": [{
+            "value": "东城街道办事处",
+            "label": "东城街道办事处"
+        }, {
+            "value": "南城街道办事处",
+            "label": "南城街道办事处"
+        }, {
+            "value": "万江街道办事处",
+            "label": "万江街道办事处"
+        }, {
+            "value": "莞城街道办事处",
+            "label": "莞城街道办事处"
+        }, {"value": "石碣镇", "label": "石碣镇"}, {
+            "value": "石龙镇",
+            "label": "石龙镇"
+        }, {"value": "茶山镇", "label": "茶山镇"}, {
+            "value": "石排镇",
+            "label": "石排镇"
+        }, {"value": "企石镇", "label": "企石镇"}, {
+            "value": "横沥镇",
+            "label": "横沥镇"
+        }, {"value": "桥头镇", "label": "桥头镇"}, {
+            "value": "谢岗镇",
+            "label": "谢岗镇"
+        }, {"value": "东坑镇", "label": "东坑镇"}, {
+            "value": "常平镇",
+            "label": "常平镇"
+        }, {"value": "寮步镇", "label": "寮步镇"}, {
+            "value": "樟木头镇",
+            "label": "樟木头镇"
+        }, {"value": "大朗镇", "label": "大朗镇"}, {
+            "value": "黄江镇",
+            "label": "黄江镇"
+        }, {"value": "清溪镇", "label": "清溪镇"}, {
+            "value": "塘厦镇",
+            "label": "塘厦镇"
+        }, {"value": "凤岗镇", "label": "凤岗镇"}, {
+            "value": "大岭山镇",
+            "label": "大岭山镇"
+        }, {"value": "长安镇", "label": "长安镇"}, {
+            "value": "虎门镇",
+            "label": "虎门镇"
+        }, {"value": "厚街镇", "label": "厚街镇"}, {
+            "value": "沙田镇",
+            "label": "沙田镇"
+        }, {"value": "道滘镇", "label": "道滘镇"}, {
+            "value": "洪梅镇",
+            "label": "洪梅镇"
+        }, {"value": "麻涌镇", "label": "麻涌镇"}, {
+            "value": "望牛墩镇",
+            "label": "望牛墩镇"
+        }, {"value": "中堂镇", "label": "中堂镇"}, {
+            "value": "高埗镇",
+            "label": "高埗镇"
+        }, {
+            "value": "松山湖管委会",
+            "label": "松山湖管委会"
+        }, {
+            "value": "虎门港管委会",
+            "label": "虎门港管委会"
+        }, {"value": "东莞生态园", "label": "东莞生态园"}]
+    }, {
+        "value": "中山市",
+        "label": "中山市",
+        "children": [{
+            "value": "石岐区街道办事处",
+            "label": "石岐区街道办事处"
+        }, {
+            "value": "东区街道办事处",
+            "label": "东区街道办事处"
+        }, {
+            "value": "火炬开发区街道办事处",
+            "label": "火炬开发区街道办事处"
+        }, {
+            "value": "西区街道办事处",
+            "label": "西区街道办事处"
+        }, {
+            "value": "南区街道办事处",
+            "label": "南区街道办事处"
+        }, {
+            "value": "五桂山街道办事处",
+            "label": "五桂山街道办事处"
+        }, {"value": "小榄镇", "label": "小榄镇"}, {
+            "value": "黄圃镇",
+            "label": "黄圃镇"
+        }, {"value": "民众镇", "label": "民众镇"}, {
+            "value": "东凤镇",
+            "label": "东凤镇"
+        }, {"value": "东升镇", "label": "东升镇"}, {
+            "value": "古镇镇",
+            "label": "古镇镇"
+        }, {"value": "沙溪镇", "label": "沙溪镇"}, {
+            "value": "坦洲镇",
+            "label": "坦洲镇"
+        }, {"value": "港口镇", "label": "港口镇"}, {
+            "value": "三角镇",
+            "label": "三角镇"
+        }, {"value": "横栏镇", "label": "横栏镇"}, {
+            "value": "南头镇",
+            "label": "南头镇"
+        }, {"value": "阜沙镇", "label": "阜沙镇"}, {
+            "value": "南朗镇",
+            "label": "南朗镇"
+        }, {"value": "三乡镇", "label": "三乡镇"}, {
+            "value": "板芙镇",
+            "label": "板芙镇"
+        }, {"value": "大涌镇", "label": "大涌镇"}, {
+            "value": "神湾镇",
+            "label": "神湾镇"
+        }]
+    }, {
+        "value": "潮州市",
+        "label": "潮州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "湘桥区",
+            "label": "湘桥区"
+        }, {"value": "潮安区", "label": "潮安区"}, {
+            "value": "饶平县",
+            "label": "饶平县"
+        }]
+    }, {
+        "value": "揭阳市",
+        "label": "揭阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "榕城区",
+            "label": "榕城区"
+        }, {"value": "揭东区", "label": "揭东区"}, {
+            "value": "揭西县",
+            "label": "揭西县"
+        }, {"value": "惠来县", "label": "惠来县"}, {
+            "value": "普宁市",
+            "label": "普宁市"
+        }]
+    }, {
+        "value": "云浮市",
+        "label": "云浮市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "云城区",
+            "label": "云城区"
+        }, {"value": "云安区", "label": "云安区"}, {
+            "value": "新兴县",
+            "label": "新兴县"
+        }, {"value": "郁南县", "label": "郁南县"}, {
+            "value": "罗定市",
+            "label": "罗定市"
+        }]
+    }]
+}, {
+    "value": "广西壮族自治区",
+    "label": "广西壮族自治区",
+    "children": [{
+        "value": "南宁市",
+        "label": "南宁市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "兴宁区",
+            "label": "兴宁区"
+        }, {"value": "青秀区", "label": "青秀区"}, {
+            "value": "江南区",
+            "label": "江南区"
+        }, {"value": "西乡塘区", "label": "西乡塘区"}, {
+            "value": "良庆区",
+            "label": "良庆区"
+        }, {"value": "邕宁区", "label": "邕宁区"}, {
+            "value": "武鸣区",
+            "label": "武鸣区"
+        }, {"value": "隆安县", "label": "隆安县"}, {
+            "value": "马山县",
+            "label": "马山县"
+        }, {"value": "上林县", "label": "上林县"}, {
+            "value": "宾阳县",
+            "label": "宾阳县"
+        }, {"value": "横县", "label": "横县"}]
+    }, {
+        "value": "柳州市",
+        "label": "柳州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "城中区",
+            "label": "城中区"
+        }, {"value": "鱼峰区", "label": "鱼峰区"}, {
+            "value": "柳南区",
+            "label": "柳南区"
+        }, {"value": "柳北区", "label": "柳北区"}, {
+            "value": "柳江区",
+            "label": "柳江区"
+        }, {"value": "柳城县", "label": "柳城县"}, {
+            "value": "鹿寨县",
+            "label": "鹿寨县"
+        }, {
+            "value": "融安县",
+            "label": "融安县"
+        }, {
+            "value": "融水苗族自治县",
+            "label": "融水苗族自治县"
+        }, {
+            "value": "三江侗族自治县",
+            "label": "三江侗族自治县"
+        }]
+    }, {
+        "value": "桂林市",
+        "label": "桂林市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "秀峰区",
+            "label": "秀峰区"
+        }, {"value": "叠彩区", "label": "叠彩区"}, {
+            "value": "象山区",
+            "label": "象山区"
+        }, {"value": "七星区", "label": "七星区"}, {
+            "value": "雁山区",
+            "label": "雁山区"
+        }, {"value": "临桂区", "label": "临桂区"}, {
+            "value": "阳朔县",
+            "label": "阳朔县"
+        }, {"value": "灵川县", "label": "灵川县"}, {
+            "value": "全州县",
+            "label": "全州县"
+        }, {"value": "兴安县", "label": "兴安县"}, {
+            "value": "永福县",
+            "label": "永福县"
+        }, {
+            "value": "灌阳县",
+            "label": "灌阳县"
+        }, {
+            "value": "龙胜各族自治县",
+            "label": "龙胜各族自治县"
+        }, {"value": "资源县", "label": "资源县"}, {
+            "value": "平乐县",
+            "label": "平乐县"
+        }, {
+            "value": "荔浦县",
+            "label": "荔浦县"
+        }, {
+            "value": "恭城瑶族自治县",
+            "label": "恭城瑶族自治县"
+        }]
+    }, {
+        "value": "梧州市",
+        "label": "梧州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "万秀区",
+            "label": "万秀区"
+        }, {"value": "长洲区", "label": "长洲区"}, {
+            "value": "龙圩区",
+            "label": "龙圩区"
+        }, {"value": "苍梧县", "label": "苍梧县"}, {
+            "value": "藤县",
+            "label": "藤县"
+        }, {"value": "蒙山县", "label": "蒙山县"}, {
+            "value": "岑溪市",
+            "label": "岑溪市"
+        }]
+    }, {
+        "value": "北海市",
+        "label": "北海市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "海城区",
+            "label": "海城区"
+        }, {"value": "银海区", "label": "银海区"}, {
+            "value": "铁山港区",
+            "label": "铁山港区"
+        }, {"value": "合浦县", "label": "合浦县"}]
+    }, {
+        "value": "防城港市",
+        "label": "防城港市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "港口区",
+            "label": "港口区"
+        }, {"value": "防城区", "label": "防城区"}, {
+            "value": "上思县",
+            "label": "上思县"
+        }, {"value": "东兴市", "label": "东兴市"}]
+    }, {
+        "value": "钦州市",
+        "label": "钦州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "钦南区",
+            "label": "钦南区"
+        }, {"value": "钦北区", "label": "钦北区"}, {
+            "value": "灵山县",
+            "label": "灵山县"
+        }, {"value": "浦北县", "label": "浦北县"}]
+    }, {
+        "value": "贵港市",
+        "label": "贵港市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "港北区",
+            "label": "港北区"
+        }, {"value": "港南区", "label": "港南区"}, {
+            "value": "覃塘区",
+            "label": "覃塘区"
+        }, {"value": "平南县", "label": "平南县"}, {
+            "value": "桂平市",
+            "label": "桂平市"
+        }]
+    }, {
+        "value": "玉林市",
+        "label": "玉林市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "玉州区",
+            "label": "玉州区"
+        }, {"value": "福绵区", "label": "福绵区"}, {
+            "value": "容县",
+            "label": "容县"
+        }, {"value": "陆川县", "label": "陆川县"}, {
+            "value": "博白县",
+            "label": "博白县"
+        }, {"value": "兴业县", "label": "兴业县"}, {
+            "value": "北流市",
+            "label": "北流市"
+        }]
+    }, {
+        "value": "百色市",
+        "label": "百色市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "右江区",
+            "label": "右江区"
+        }, {"value": "田阳县", "label": "田阳县"}, {
+            "value": "田东县",
+            "label": "田东县"
+        }, {"value": "平果县", "label": "平果县"}, {
+            "value": "德保县",
+            "label": "德保县"
+        }, {"value": "那坡县", "label": "那坡县"}, {
+            "value": "凌云县",
+            "label": "凌云县"
+        }, {"value": "乐业县", "label": "乐业县"}, {
+            "value": "田林县",
+            "label": "田林县"
+        }, {
+            "value": "西林县",
+            "label": "西林县"
+        }, {
+            "value": "隆林各族自治县",
+            "label": "隆林各族自治县"
+        }, {"value": "靖西市", "label": "靖西市"}]
+    }, {
+        "value": "贺州市",
+        "label": "贺州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "八步区",
+            "label": "八步区"
+        }, {"value": "平桂区", "label": "平桂区"}, {
+            "value": "昭平县",
+            "label": "昭平县"
+        }, {
+            "value": "钟山县",
+            "label": "钟山县"
+        }, {
+            "value": "富川瑶族自治县",
+            "label": "富川瑶族自治县"
+        }]
+    }, {
+        "value": "河池市",
+        "label": "河池市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "金城江区", "label": "金城江区"}, {
+            "value": "南丹县",
+            "label": "南丹县"
+        }, {"value": "天峨县", "label": "天峨县"}, {
+            "value": "凤山县",
+            "label": "凤山县"
+        }, {
+            "value": "东兰县",
+            "label": "东兰县"
+        }, {
+            "value": "罗城仫佬族自治县",
+            "label": "罗城仫佬族自治县"
+        }, {
+            "value": "环江毛南族自治县",
+            "label": "环江毛南族自治县"
+        }, {
+            "value": "巴马瑶族自治县",
+            "label": "巴马瑶族自治县"
+        }, {
+            "value": "都安瑶族自治县",
+            "label": "都安瑶族自治县"
+        }, {
+            "value": "大化瑶族自治县",
+            "label": "大化瑶族自治县"
+        }, {"value": "宜州市", "label": "宜州市"}]
+    }, {
+        "value": "来宾市",
+        "label": "来宾市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "兴宾区",
+            "label": "兴宾区"
+        }, {"value": "忻城县", "label": "忻城县"}, {
+            "value": "象州县",
+            "label": "象州县"
+        }, {
+            "value": "武宣县",
+            "label": "武宣县"
+        }, {
+            "value": "金秀瑶族自治县",
+            "label": "金秀瑶族自治县"
+        }, {"value": "合山市", "label": "合山市"}]
+    }, {
+        "value": "崇左市",
+        "label": "崇左市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "江州区",
+            "label": "江州区"
+        }, {"value": "扶绥县", "label": "扶绥县"}, {
+            "value": "宁明县",
+            "label": "宁明县"
+        }, {"value": "龙州县", "label": "龙州县"}, {
+            "value": "大新县",
+            "label": "大新县"
+        }, {"value": "天等县", "label": "天等县"}, {
+            "value": "凭祥市",
+            "label": "凭祥市"
+        }]
+    }]
+}, {
+    "value": "海南省",
+    "label": "海南省",
+    "children": [{
+        "value": "海口市",
+        "label": "海口市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "秀英区",
+            "label": "秀英区"
+        }, {"value": "龙华区", "label": "龙华区"}, {
+            "value": "琼山区",
+            "label": "琼山区"
+        }, {"value": "美兰区", "label": "美兰区"}]
+    }, {
+        "value": "三亚市",
+        "label": "三亚市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "海棠区",
+            "label": "海棠区"
+        }, {"value": "吉阳区", "label": "吉阳区"}, {
+            "value": "天涯区",
+            "label": "天涯区"
+        }, {"value": "崖州区", "label": "崖州区"}]
+    }, {
+        "value": "三沙市",
+        "label": "三沙市",
+        "children": [{
+            "value": "西沙群岛",
+            "label": "西沙群岛"
+        }, {
+            "value": "南沙群岛",
+            "label": "南沙群岛"
+        }, {
+            "value": "中沙群岛的岛礁及其海域",
+            "label": "中沙群岛的岛礁及其海域"
+        }]
+    }, {
+        "value": "儋州市",
+        "label": "儋州市",
+        "children": [{"value": "那大镇", "label": "那大镇"}, {
+            "value": "和庆镇",
+            "label": "和庆镇"
+        }, {"value": "南丰镇", "label": "南丰镇"}, {
+            "value": "大成镇",
+            "label": "大成镇"
+        }, {"value": "雅星镇", "label": "雅星镇"}, {
+            "value": "兰洋镇",
+            "label": "兰洋镇"
+        }, {"value": "光村镇", "label": "光村镇"}, {
+            "value": "木棠镇",
+            "label": "木棠镇"
+        }, {"value": "海头镇", "label": "海头镇"}, {
+            "value": "峨蔓镇",
+            "label": "峨蔓镇"
+        }, {"value": "三都镇", "label": "三都镇"}, {
+            "value": "王五镇",
+            "label": "王五镇"
+        }, {"value": "白马井镇", "label": "白马井镇"}, {
+            "value": "中和镇",
+            "label": "中和镇"
+        }, {"value": "排浦镇", "label": "排浦镇"}, {
+            "value": "东成镇",
+            "label": "东成镇"
+        }, {
+            "value": "新州镇",
+            "label": "新州镇"
+        }, {
+            "value": "国营西培农场",
+            "label": "国营西培农场"
+        }, {
+            "value": "国营西联农场",
+            "label": "国营西联农场"
+        }, {
+            "value": "国营蓝洋农场",
+            "label": "国营蓝洋农场"
+        }, {
+            "value": "国营八一农场",
+            "label": "国营八一农场"
+        }, {
+            "value": "洋浦经济开发区",
+            "label": "洋浦经济开发区"
+        }, {"value": "华南热作学院", "label": "华南热作学院"}]
+    }, {
+        "value": "省直辖县级行政区域",
+        "label": "省直辖县级行政区域",
+        "children": [{
+            "value": "五指山市",
+            "label": "五指山市"
+        }, {"value": "琼海市", "label": "琼海市"}, {
+            "value": "文昌市",
+            "label": "文昌市"
+        }, {"value": "万宁市", "label": "万宁市"}, {
+            "value": "东方市",
+            "label": "东方市"
+        }, {"value": "定安县", "label": "定安县"}, {
+            "value": "屯昌县",
+            "label": "屯昌县"
+        }, {"value": "澄迈县", "label": "澄迈县"}, {
+            "value": "临高县",
+            "label": "临高县"
+        }, {
+            "value": "白沙黎族自治县",
+            "label": "白沙黎族自治县"
+        }, {
+            "value": "昌江黎族自治县",
+            "label": "昌江黎族自治县"
+        }, {
+            "value": "乐东黎族自治县",
+            "label": "乐东黎族自治县"
+        }, {
+            "value": "陵水黎族自治县",
+            "label": "陵水黎族自治县"
+        }, {
+            "value": "保亭黎族苗族自治县",
+            "label": "保亭黎族苗族自治县"
+        }, {
+            "value": "琼中黎族苗族自治县",
+            "label": "琼中黎族苗族自治县"
+        }]
+    }]
+}, {
+    "value": "重庆市", "label": "重庆市", "children": [{
+        "value": "重庆市",
+        "label": "重庆市",
+        "children": [{"value": "万州区", "label": "万州区"}, {
+            "value": "涪陵区",
+            "label": "涪陵区"
+        }, {"value": "渝中区", "label": "渝中区"}, {
+            "value": "大渡口区",
+            "label": "大渡口区"
+        }, {"value": "江北区", "label": "江北区"}, {
+            "value": "沙坪坝区",
+            "label": "沙坪坝区"
+        }, {"value": "九龙坡区", "label": "九龙坡区"}, {
+            "value": "南岸区",
+            "label": "南岸区"
+        }, {"value": "北碚区", "label": "北碚区"}, {
+            "value": "綦江区",
+            "label": "綦江区"
+        }, {"value": "大足区", "label": "大足区"}, {
+            "value": "渝北区",
+            "label": "渝北区"
+        }, {"value": "巴南区", "label": "巴南区"}, {
+            "value": "黔江区",
+            "label": "黔江区"
+        }, {"value": "长寿区", "label": "长寿区"}, {
+            "value": "江津区",
+            "label": "江津区"
+        }, {"value": "合川区", "label": "合川区"}, {
+            "value": "永川区",
+            "label": "永川区"
+        }, {"value": "南川区", "label": "南川区"}, {
+            "value": "璧山区",
+            "label": "璧山区"
+        }, {"value": "铜梁区", "label": "铜梁区"}, {
+            "value": "潼南区",
+            "label": "潼南区"
+        }, {"value": "荣昌区", "label": "荣昌区"}, {
+            "value": "开州区",
+            "label": "开州区"
+        }]
+    }, {
+        "value": "县",
+        "label": "县",
+        "children": [{"value": "梁平县", "label": "梁平县"}, {
+            "value": "城口县",
+            "label": "城口县"
+        }, {"value": "丰都县", "label": "丰都县"}, {
+            "value": "垫江县",
+            "label": "垫江县"
+        }, {"value": "武隆县", "label": "武隆县"}, {
+            "value": "忠县",
+            "label": "忠县"
+        }, {"value": "云阳县", "label": "云阳县"}, {
+            "value": "奉节县",
+            "label": "奉节县"
+        }, {"value": "巫山县", "label": "巫山县"}, {
+            "value": "巫溪县",
+            "label": "巫溪县"
+        }, {
+            "value": "石柱土家族自治县",
+            "label": "石柱土家族自治县"
+        }, {
+            "value": "秀山土家族苗族自治县",
+            "label": "秀山土家族苗族自治县"
+        }, {
+            "value": "酉阳土家族苗族自治县",
+            "label": "酉阳土家族苗族自治县"
+        }, {
+            "value": "彭水苗族土家族自治县",
+            "label": "彭水苗族土家族自治县"
+        }]
+    }]
+}, {
+    "value": "四川省", "label": "四川省", "children": [{
+        "value": "成都市",
+        "label": "成都市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "锦江区",
+            "label": "锦江区"
+        }, {"value": "青羊区", "label": "青羊区"}, {
+            "value": "金牛区",
+            "label": "金牛区"
+        }, {"value": "武侯区", "label": "武侯区"}, {
+            "value": "成华区",
+            "label": "成华区"
+        }, {
+            "value": "龙泉驿区",
+            "label": "龙泉驿区"
+        }, {"value": "青白江区", "label": "青白江区"}, {
+            "value": "新都区",
+            "label": "新都区"
+        }, {"value": "温江区", "label": "温江区"}, {
+            "value": "双流区",
+            "label": "双流区"
+        }, {"value": "金堂县", "label": "金堂县"}, {
+            "value": "郫县",
+            "label": "郫县"
+        }, {"value": "大邑县", "label": "大邑县"}, {
+            "value": "蒲江县",
+            "label": "蒲江县"
+        }, {"value": "新津县", "label": "新津县"}, {
+            "value": "都江堰市",
+            "label": "都江堰市"
+        }, {"value": "彭州市", "label": "彭州市"}, {
+            "value": "邛崃市",
+            "label": "邛崃市"
+        }, {"value": "崇州市", "label": "崇州市"}, {
+            "value": "简阳市",
+            "label": "简阳市"
+        }]
+    }, {
+        "value": "自贡市",
+        "label": "自贡市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "自流井区", "label": "自流井区"}, {
+            "value": "贡井区",
+            "label": "贡井区"
+        }, {"value": "大安区", "label": "大安区"}, {
+            "value": "沿滩区",
+            "label": "沿滩区"
+        }, {"value": "荣县", "label": "荣县"}, {
+            "value": "富顺县",
+            "label": "富顺县"
+        }]
+    }, {
+        "value": "攀枝花市",
+        "label": "攀枝花市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "东区",
+            "label": "东区"
+        }, {"value": "西区", "label": "西区"}, {
+            "value": "仁和区",
+            "label": "仁和区"
+        }, {"value": "米易县", "label": "米易县"}, {
+            "value": "盐边县",
+            "label": "盐边县"
+        }]
+    }, {
+        "value": "泸州市",
+        "label": "泸州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "江阳区",
+            "label": "江阳区"
+        }, {"value": "纳溪区", "label": "纳溪区"}, {
+            "value": "龙马潭区",
+            "label": "龙马潭区"
+        }, {"value": "泸县", "label": "泸县"}, {
+            "value": "合江县",
+            "label": "合江县"
+        }, {"value": "叙永县", "label": "叙永县"}, {
+            "value": "古蔺县",
+            "label": "古蔺县"
+        }]
+    }, {
+        "value": "德阳市",
+        "label": "德阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "旌阳区",
+            "label": "旌阳区"
+        }, {"value": "中江县", "label": "中江县"}, {
+            "value": "罗江县",
+            "label": "罗江县"
+        }, {"value": "广汉市", "label": "广汉市"}, {
+            "value": "什邡市",
+            "label": "什邡市"
+        }, {"value": "绵竹市", "label": "绵竹市"}]
+    }, {
+        "value": "绵阳市",
+        "label": "绵阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "涪城区",
+            "label": "涪城区"
+        }, {"value": "游仙区", "label": "游仙区"}, {
+            "value": "安州区",
+            "label": "安州区"
+        }, {"value": "三台县", "label": "三台县"}, {
+            "value": "盐亭县",
+            "label": "盐亭县"
+        }, {
+            "value": "梓潼县",
+            "label": "梓潼县"
+        }, {
+            "value": "北川羌族自治县",
+            "label": "北川羌族自治县"
+        }, {"value": "平武县", "label": "平武县"}, {
+            "value": "江油市",
+            "label": "江油市"
+        }]
+    }, {
+        "value": "广元市",
+        "label": "广元市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "利州区",
+            "label": "利州区"
+        }, {"value": "昭化区", "label": "昭化区"}, {
+            "value": "朝天区",
+            "label": "朝天区"
+        }, {"value": "旺苍县", "label": "旺苍县"}, {
+            "value": "青川县",
+            "label": "青川县"
+        }, {"value": "剑阁县", "label": "剑阁县"}, {
+            "value": "苍溪县",
+            "label": "苍溪县"
+        }]
+    }, {
+        "value": "遂宁市",
+        "label": "遂宁市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "船山区",
+            "label": "船山区"
+        }, {"value": "安居区", "label": "安居区"}, {
+            "value": "蓬溪县",
+            "label": "蓬溪县"
+        }, {"value": "射洪县", "label": "射洪县"}, {
+            "value": "大英县",
+            "label": "大英县"
+        }]
+    }, {
+        "value": "内江市",
+        "label": "内江市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "市中区",
+            "label": "市中区"
+        }, {"value": "东兴区", "label": "东兴区"}, {
+            "value": "威远县",
+            "label": "威远县"
+        }, {"value": "资中县", "label": "资中县"}, {
+            "value": "隆昌县",
+            "label": "隆昌县"
+        }]
+    }, {
+        "value": "乐山市",
+        "label": "乐山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "市中区",
+            "label": "市中区"
+        }, {"value": "沙湾区", "label": "沙湾区"}, {
+            "value": "五通桥区",
+            "label": "五通桥区"
+        }, {"value": "金口河区", "label": "金口河区"}, {
+            "value": "犍为县",
+            "label": "犍为县"
+        }, {"value": "井研县", "label": "井研县"}, {
+            "value": "夹江县",
+            "label": "夹江县"
+        }, {
+            "value": "沐川县",
+            "label": "沐川县"
+        }, {
+            "value": "峨边彝族自治县",
+            "label": "峨边彝族自治县"
+        }, {
+            "value": "马边彝族自治县",
+            "label": "马边彝族自治县"
+        }, {"value": "峨眉山市", "label": "峨眉山市"}]
+    }, {
+        "value": "南充市",
+        "label": "南充市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "顺庆区",
+            "label": "顺庆区"
+        }, {"value": "高坪区", "label": "高坪区"}, {
+            "value": "嘉陵区",
+            "label": "嘉陵区"
+        }, {"value": "南部县", "label": "南部县"}, {
+            "value": "营山县",
+            "label": "营山县"
+        }, {"value": "蓬安县", "label": "蓬安县"}, {
+            "value": "仪陇县",
+            "label": "仪陇县"
+        }, {"value": "西充县", "label": "西充县"}, {
+            "value": "阆中市",
+            "label": "阆中市"
+        }]
+    }, {
+        "value": "眉山市",
+        "label": "眉山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "东坡区",
+            "label": "东坡区"
+        }, {"value": "彭山区", "label": "彭山区"}, {
+            "value": "仁寿县",
+            "label": "仁寿县"
+        }, {"value": "洪雅县", "label": "洪雅县"}, {
+            "value": "丹棱县",
+            "label": "丹棱县"
+        }, {"value": "青神县", "label": "青神县"}]
+    }, {
+        "value": "宜宾市",
+        "label": "宜宾市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "翠屏区",
+            "label": "翠屏区"
+        }, {"value": "南溪区", "label": "南溪区"}, {
+            "value": "宜宾县",
+            "label": "宜宾县"
+        }, {"value": "江安县", "label": "江安县"}, {
+            "value": "长宁县",
+            "label": "长宁县"
+        }, {"value": "高县", "label": "高县"}, {
+            "value": "珙县",
+            "label": "珙县"
+        }, {"value": "筠连县", "label": "筠连县"}, {
+            "value": "兴文县",
+            "label": "兴文县"
+        }, {"value": "屏山县", "label": "屏山县"}]
+    }, {
+        "value": "广安市",
+        "label": "广安市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "广安区",
+            "label": "广安区"
+        }, {"value": "前锋区", "label": "前锋区"}, {
+            "value": "岳池县",
+            "label": "岳池县"
+        }, {"value": "武胜县", "label": "武胜县"}, {
+            "value": "邻水县",
+            "label": "邻水县"
+        }, {"value": "华蓥市", "label": "华蓥市"}]
+    }, {
+        "value": "达州市",
+        "label": "达州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "通川区",
+            "label": "通川区"
+        }, {"value": "达川区", "label": "达川区"}, {
+            "value": "宣汉县",
+            "label": "宣汉县"
+        }, {"value": "开江县", "label": "开江县"}, {
+            "value": "大竹县",
+            "label": "大竹县"
+        }, {"value": "渠县", "label": "渠县"}, {
+            "value": "万源市",
+            "label": "万源市"
+        }]
+    }, {
+        "value": "雅安市",
+        "label": "雅安市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "雨城区",
+            "label": "雨城区"
+        }, {"value": "名山区", "label": "名山区"}, {
+            "value": "荥经县",
+            "label": "荥经县"
+        }, {"value": "汉源县", "label": "汉源县"}, {
+            "value": "石棉县",
+            "label": "石棉县"
+        }, {"value": "天全县", "label": "天全县"}, {
+            "value": "芦山县",
+            "label": "芦山县"
+        }, {"value": "宝兴县", "label": "宝兴县"}]
+    }, {
+        "value": "巴中市",
+        "label": "巴中市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "巴州区",
+            "label": "巴州区"
+        }, {"value": "恩阳区", "label": "恩阳区"}, {
+            "value": "通江县",
+            "label": "通江县"
+        }, {"value": "南江县", "label": "南江县"}, {
+            "value": "平昌县",
+            "label": "平昌县"
+        }]
+    }, {
+        "value": "资阳市",
+        "label": "资阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "雁江区",
+            "label": "雁江区"
+        }, {"value": "安岳县", "label": "安岳县"}, {
+            "value": "乐至县",
+            "label": "乐至县"
+        }]
+    }, {
+        "value": "阿坝藏族羌族自治州",
+        "label": "阿坝藏族羌族自治州",
+        "children": [{
+            "value": "马尔康市",
+            "label": "马尔康市"
+        }, {"value": "汶川县", "label": "汶川县"}, {
+            "value": "理县",
+            "label": "理县"
+        }, {"value": "茂县", "label": "茂县"}, {
+            "value": "松潘县",
+            "label": "松潘县"
+        }, {"value": "九寨沟县", "label": "九寨沟县"}, {
+            "value": "金川县",
+            "label": "金川县"
+        }, {"value": "小金县", "label": "小金县"}, {
+            "value": "黑水县",
+            "label": "黑水县"
+        }, {"value": "壤塘县", "label": "壤塘县"}, {
+            "value": "阿坝县",
+            "label": "阿坝县"
+        }, {"value": "若尔盖县", "label": "若尔盖县"}, {
+            "value": "红原县",
+            "label": "红原县"
+        }]
+    }, {
+        "value": "甘孜藏族自治州",
+        "label": "甘孜藏族自治州",
+        "children": [{"value": "康定市", "label": "康定市"}, {
+            "value": "泸定县",
+            "label": "泸定县"
+        }, {"value": "丹巴县", "label": "丹巴县"}, {
+            "value": "九龙县",
+            "label": "九龙县"
+        }, {"value": "雅江县", "label": "雅江县"}, {
+            "value": "道孚县",
+            "label": "道孚县"
+        }, {"value": "炉霍县", "label": "炉霍县"}, {
+            "value": "甘孜县",
+            "label": "甘孜县"
+        }, {"value": "新龙县", "label": "新龙县"}, {
+            "value": "德格县",
+            "label": "德格县"
+        }, {"value": "白玉县", "label": "白玉县"}, {
+            "value": "石渠县",
+            "label": "石渠县"
+        }, {"value": "色达县", "label": "色达县"}, {
+            "value": "理塘县",
+            "label": "理塘县"
+        }, {"value": "巴塘县", "label": "巴塘县"}, {
+            "value": "乡城县",
+            "label": "乡城县"
+        }, {"value": "稻城县", "label": "稻城县"}, {
+            "value": "得荣县",
+            "label": "得荣县"
+        }]
+    }, {
+        "value": "凉山彝族自治州",
+        "label": "凉山彝族自治州",
+        "children": [{
+            "value": "西昌市",
+            "label": "西昌市"
+        }, {
+            "value": "木里藏族自治县",
+            "label": "木里藏族自治县"
+        }, {"value": "盐源县", "label": "盐源县"}, {
+            "value": "德昌县",
+            "label": "德昌县"
+        }, {"value": "会理县", "label": "会理县"}, {
+            "value": "会东县",
+            "label": "会东县"
+        }, {"value": "宁南县", "label": "宁南县"}, {
+            "value": "普格县",
+            "label": "普格县"
+        }, {"value": "布拖县", "label": "布拖县"}, {
+            "value": "金阳县",
+            "label": "金阳县"
+        }, {"value": "昭觉县", "label": "昭觉县"}, {
+            "value": "喜德县",
+            "label": "喜德县"
+        }, {"value": "冕宁县", "label": "冕宁县"}, {
+            "value": "越西县",
+            "label": "越西县"
+        }, {"value": "甘洛县", "label": "甘洛县"}, {
+            "value": "美姑县",
+            "label": "美姑县"
+        }, {"value": "雷波县", "label": "雷波县"}]
+    }]
+}, {
+    "value": "贵州省",
+    "label": "贵州省",
+    "children": [{
+        "value": "贵阳市",
+        "label": "贵阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "南明区",
+            "label": "南明区"
+        }, {"value": "云岩区", "label": "云岩区"}, {
+            "value": "花溪区",
+            "label": "花溪区"
+        }, {"value": "乌当区", "label": "乌当区"}, {
+            "value": "白云区",
+            "label": "白云区"
+        }, {"value": "观山湖区", "label": "观山湖区"}, {
+            "value": "开阳县",
+            "label": "开阳县"
+        }, {"value": "息烽县", "label": "息烽县"}, {
+            "value": "修文县",
+            "label": "修文县"
+        }, {"value": "清镇市", "label": "清镇市"}]
+    }, {
+        "value": "六盘水市",
+        "label": "六盘水市",
+        "children": [{
+            "value": "钟山区",
+            "label": "钟山区"
+        }, {"value": "六枝特区", "label": "六枝特区"}, {
+            "value": "水城县",
+            "label": "水城县"
+        }, {"value": "盘县", "label": "盘县"}]
+    }, {
+        "value": "遵义市",
+        "label": "遵义市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "红花岗区", "label": "红花岗区"}, {
+            "value": "汇川区",
+            "label": "汇川区"
+        }, {"value": "播州区", "label": "播州区"}, {
+            "value": "桐梓县",
+            "label": "桐梓县"
+        }, {"value": "绥阳县", "label": "绥阳县"}, {
+            "value": "正安县",
+            "label": "正安县"
+        }, {
+            "value": "道真仡佬族苗族自治县",
+            "label": "道真仡佬族苗族自治县"
+        }, {
+            "value": "务川仡佬族苗族自治县",
+            "label": "务川仡佬族苗族自治县"
+        }, {"value": "凤冈县", "label": "凤冈县"}, {
+            "value": "湄潭县",
+            "label": "湄潭县"
+        }, {"value": "余庆县", "label": "余庆县"}, {
+            "value": "习水县",
+            "label": "习水县"
+        }, {"value": "赤水市", "label": "赤水市"}, {
+            "value": "仁怀市",
+            "label": "仁怀市"
+        }]
+    }, {
+        "value": "安顺市",
+        "label": "安顺市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "西秀区",
+            "label": "西秀区"
+        }, {"value": "平坝区", "label": "平坝区"}, {
+            "value": "普定县",
+            "label": "普定县"
+        }, {
+            "value": "镇宁布依族苗族自治县",
+            "label": "镇宁布依族苗族自治县"
+        }, {
+            "value": "关岭布依族苗族自治县",
+            "label": "关岭布依族苗族自治县"
+        }, {
+            "value": "紫云苗族布依族自治县",
+            "label": "紫云苗族布依族自治县"
+        }]
+    }, {
+        "value": "毕节市",
+        "label": "毕节市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "七星关区", "label": "七星关区"}, {
+            "value": "大方县",
+            "label": "大方县"
+        }, {"value": "黔西县", "label": "黔西县"}, {
+            "value": "金沙县",
+            "label": "金沙县"
+        }, {"value": "织金县", "label": "织金县"}, {
+            "value": "纳雍县",
+            "label": "纳雍县"
+        }, {
+            "value": "威宁彝族回族苗族自治县",
+            "label": "威宁彝族回族苗族自治县"
+        }, {"value": "赫章县", "label": "赫章县"}]
+    }, {
+        "value": "铜仁市",
+        "label": "铜仁市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "碧江区",
+            "label": "碧江区"
+        }, {"value": "万山区", "label": "万山区"}, {
+            "value": "江口县",
+            "label": "江口县"
+        }, {
+            "value": "玉屏侗族自治县",
+            "label": "玉屏侗族自治县"
+        }, {"value": "石阡县", "label": "石阡县"}, {
+            "value": "思南县",
+            "label": "思南县"
+        }, {
+            "value": "印江土家族苗族自治县",
+            "label": "印江土家族苗族自治县"
+        }, {
+            "value": "德江县",
+            "label": "德江县"
+        }, {
+            "value": "沿河土家族自治县",
+            "label": "沿河土家族自治县"
+        }, {
+            "value": "松桃苗族自治县",
+            "label": "松桃苗族自治县"
+        }]
+    }, {
+        "value": "黔西南布依族苗族自治州",
+        "label": "黔西南布依族苗族自治州",
+        "children": [{"value": "兴义市", "label": "兴义市"}, {
+            "value": "兴仁县",
+            "label": "兴仁县"
+        }, {"value": "普安县", "label": "普安县"}, {
+            "value": "晴隆县",
+            "label": "晴隆县"
+        }, {"value": "贞丰县", "label": "贞丰县"}, {
+            "value": "望谟县",
+            "label": "望谟县"
+        }, {"value": "册亨县", "label": "册亨县"}, {
+            "value": "安龙县",
+            "label": "安龙县"
+        }]
+    }, {
+        "value": "黔东南苗族侗族自治州",
+        "label": "黔东南苗族侗族自治州",
+        "children": [{"value": "凯里市", "label": "凯里市"}, {
+            "value": "黄平县",
+            "label": "黄平县"
+        }, {"value": "施秉县", "label": "施秉县"}, {
+            "value": "三穗县",
+            "label": "三穗县"
+        }, {"value": "镇远县", "label": "镇远县"}, {
+            "value": "岑巩县",
+            "label": "岑巩县"
+        }, {"value": "天柱县", "label": "天柱县"}, {
+            "value": "锦屏县",
+            "label": "锦屏县"
+        }, {"value": "剑河县", "label": "剑河县"}, {
+            "value": "台江县",
+            "label": "台江县"
+        }, {"value": "黎平县", "label": "黎平县"}, {
+            "value": "榕江县",
+            "label": "榕江县"
+        }, {"value": "从江县", "label": "从江县"}, {
+            "value": "雷山县",
+            "label": "雷山县"
+        }, {"value": "麻江县", "label": "麻江县"}, {
+            "value": "丹寨县",
+            "label": "丹寨县"
+        }]
+    }, {
+        "value": "黔南布依族苗族自治州",
+        "label": "黔南布依族苗族自治州",
+        "children": [{"value": "都匀市", "label": "都匀市"}, {
+            "value": "福泉市",
+            "label": "福泉市"
+        }, {"value": "荔波县", "label": "荔波县"}, {
+            "value": "贵定县",
+            "label": "贵定县"
+        }, {"value": "瓮安县", "label": "瓮安县"}, {
+            "value": "独山县",
+            "label": "独山县"
+        }, {"value": "平塘县", "label": "平塘县"}, {
+            "value": "罗甸县",
+            "label": "罗甸县"
+        }, {"value": "长顺县", "label": "长顺县"}, {
+            "value": "龙里县",
+            "label": "龙里县"
+        }, {
+            "value": "惠水县",
+            "label": "惠水县"
+        }, {
+            "value": "三都水族自治县",
+            "label": "三都水族自治县"
+        }]
+    }]
+}, {
+    "value": "云南省", "label": "云南省", "children": [{
+        "value": "昆明市",
+        "label": "昆明市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "五华区",
+            "label": "五华区"
+        }, {"value": "盘龙区", "label": "盘龙区"}, {
+            "value": "官渡区",
+            "label": "官渡区"
+        }, {"value": "西山区", "label": "西山区"}, {
+            "value": "东川区",
+            "label": "东川区"
+        }, {"value": "呈贡区", "label": "呈贡区"}, {
+            "value": "晋宁县",
+            "label": "晋宁县"
+        }, {"value": "富民县", "label": "富民县"}, {
+            "value": "宜良县",
+            "label": "宜良县"
+        }, {
+            "value": "石林彝族自治县",
+            "label": "石林彝族自治县"
+        }, {
+            "value": "嵩明县",
+            "label": "嵩明县"
+        }, {
+            "value": "禄劝彝族苗族自治县",
+            "label": "禄劝彝族苗族自治县"
+        }, {
+            "value": "寻甸回族彝族自治县",
+            "label": "寻甸回族彝族自治县"
+        }, {"value": "安宁市", "label": "安宁市"}]
+    }, {
+        "value": "曲靖市",
+        "label": "曲靖市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "麒麟区",
+            "label": "麒麟区"
+        }, {"value": "沾益区", "label": "沾益区"}, {
+            "value": "马龙县",
+            "label": "马龙县"
+        }, {"value": "陆良县", "label": "陆良县"}, {
+            "value": "师宗县",
+            "label": "师宗县"
+        }, {"value": "罗平县", "label": "罗平县"}, {
+            "value": "富源县",
+            "label": "富源县"
+        }, {"value": "会泽县", "label": "会泽县"}, {
+            "value": "宣威市",
+            "label": "宣威市"
+        }]
+    }, {
+        "value": "玉溪市",
+        "label": "玉溪市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "红塔区",
+            "label": "红塔区"
+        }, {"value": "江川区", "label": "江川区"}, {
+            "value": "澄江县",
+            "label": "澄江县"
+        }, {"value": "通海县", "label": "通海县"}, {
+            "value": "华宁县",
+            "label": "华宁县"
+        }, {
+            "value": "易门县",
+            "label": "易门县"
+        }, {
+            "value": "峨山彝族自治县",
+            "label": "峨山彝族自治县"
+        }, {
+            "value": "新平彝族傣族自治县",
+            "label": "新平彝族傣族自治县"
+        }, {
+            "value": "元江哈尼族彝族傣族自治县",
+            "label": "元江哈尼族彝族傣族自治县"
+        }]
+    }, {
+        "value": "保山市",
+        "label": "保山市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "隆阳区",
+            "label": "隆阳区"
+        }, {"value": "施甸县", "label": "施甸县"}, {
+            "value": "龙陵县",
+            "label": "龙陵县"
+        }, {"value": "昌宁县", "label": "昌宁县"}, {
+            "value": "腾冲市",
+            "label": "腾冲市"
+        }]
+    }, {
+        "value": "昭通市",
+        "label": "昭通市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "昭阳区",
+            "label": "昭阳区"
+        }, {"value": "鲁甸县", "label": "鲁甸县"}, {
+            "value": "巧家县",
+            "label": "巧家县"
+        }, {"value": "盐津县", "label": "盐津县"}, {
+            "value": "大关县",
+            "label": "大关县"
+        }, {"value": "永善县", "label": "永善县"}, {
+            "value": "绥江县",
+            "label": "绥江县"
+        }, {"value": "镇雄县", "label": "镇雄县"}, {
+            "value": "彝良县",
+            "label": "彝良县"
+        }, {"value": "威信县", "label": "威信县"}, {
+            "value": "水富县",
+            "label": "水富县"
+        }]
+    }, {
+        "value": "丽江市",
+        "label": "丽江市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "古城区",
+            "label": "古城区"
+        }, {
+            "value": "玉龙纳西族自治县",
+            "label": "玉龙纳西族自治县"
+        }, {"value": "永胜县", "label": "永胜县"}, {
+            "value": "华坪县",
+            "label": "华坪县"
+        }, {
+            "value": "宁蒗彝族自治县",
+            "label": "宁蒗彝族自治县"
+        }]
+    }, {
+        "value": "普洱市",
+        "label": "普洱市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "思茅区",
+            "label": "思茅区"
+        }, {
+            "value": "宁洱哈尼族彝族自治县",
+            "label": "宁洱哈尼族彝族自治县"
+        }, {
+            "value": "墨江哈尼族自治县",
+            "label": "墨江哈尼族自治县"
+        }, {
+            "value": "景东彝族自治县",
+            "label": "景东彝族自治县"
+        }, {
+            "value": "景谷傣族彝族自治县",
+            "label": "景谷傣族彝族自治县"
+        }, {
+            "value": "镇沅彝族哈尼族拉祜族自治县",
+            "label": "镇沅彝族哈尼族拉祜族自治县"
+        }, {
+            "value": "江城哈尼族彝族自治县",
+            "label": "江城哈尼族彝族自治县"
+        }, {
+            "value": "孟连傣族拉祜族佤族自治县",
+            "label": "孟连傣族拉祜族佤族自治县"
+        }, {
+            "value": "澜沧拉祜族自治县",
+            "label": "澜沧拉祜族自治县"
+        }, {
+            "value": "西盟佤族自治县",
+            "label": "西盟佤族自治县"
+        }]
+    }, {
+        "value": "临沧市",
+        "label": "临沧市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "临翔区",
+            "label": "临翔区"
+        }, {"value": "凤庆县", "label": "凤庆县"}, {
+            "value": "云县",
+            "label": "云县"
+        }, {"value": "永德县", "label": "永德县"}, {
+            "value": "镇康县",
+            "label": "镇康县"
+        }, {
+            "value": "双江拉祜族佤族布朗族傣族自治县",
+            "label": "双江拉祜族佤族布朗族傣族自治县"
+        }, {
+            "value": "耿马傣族佤族自治县",
+            "label": "耿马傣族佤族自治县"
+        }, {
+            "value": "沧源佤族自治县",
+            "label": "沧源佤族自治县"
+        }]
+    }, {
+        "value": "楚雄彝族自治州",
+        "label": "楚雄彝族自治州",
+        "children": [{"value": "楚雄市", "label": "楚雄市"}, {
+            "value": "双柏县",
+            "label": "双柏县"
+        }, {"value": "牟定县", "label": "牟定县"}, {
+            "value": "南华县",
+            "label": "南华县"
+        }, {"value": "姚安县", "label": "姚安县"}, {
+            "value": "大姚县",
+            "label": "大姚县"
+        }, {"value": "永仁县", "label": "永仁县"}, {
+            "value": "元谋县",
+            "label": "元谋县"
+        }, {"value": "武定县", "label": "武定县"}, {
+            "value": "禄丰县",
+            "label": "禄丰县"
+        }]
+    }, {
+        "value": "红河哈尼族彝族自治州",
+        "label": "红河哈尼族彝族自治州",
+        "children": [{"value": "个旧市", "label": "个旧市"}, {
+            "value": "开远市",
+            "label": "开远市"
+        }, {"value": "蒙自市", "label": "蒙自市"}, {
+            "value": "弥勒市",
+            "label": "弥勒市"
+        }, {
+            "value": "屏边苗族自治县",
+            "label": "屏边苗族自治县"
+        }, {"value": "建水县", "label": "建水县"}, {
+            "value": "石屏县",
+            "label": "石屏县"
+        }, {"value": "泸西县", "label": "泸西县"}, {
+            "value": "元阳县",
+            "label": "元阳县"
+        }, {
+            "value": "红河县",
+            "label": "红河县"
+        }, {
+            "value": "金平苗族瑶族傣族自治县",
+            "label": "金平苗族瑶族傣族自治县"
+        }, {
+            "value": "绿春县",
+            "label": "绿春县"
+        }, {
+            "value": "河口瑶族自治县",
+            "label": "河口瑶族自治县"
+        }]
+    }, {
+        "value": "文山壮族苗族自治州",
+        "label": "文山壮族苗族自治州",
+        "children": [{"value": "文山市", "label": "文山市"}, {
+            "value": "砚山县",
+            "label": "砚山县"
+        }, {"value": "西畴县", "label": "西畴县"}, {
+            "value": "麻栗坡县",
+            "label": "麻栗坡县"
+        }, {"value": "马关县", "label": "马关县"}, {
+            "value": "丘北县",
+            "label": "丘北县"
+        }, {"value": "广南县", "label": "广南县"}, {
+            "value": "富宁县",
+            "label": "富宁县"
+        }]
+    }, {
+        "value": "西双版纳傣族自治州",
+        "label": "西双版纳傣族自治州",
+        "children": [{"value": "景洪市", "label": "景洪市"}, {
+            "value": "勐海县",
+            "label": "勐海县"
+        }, {"value": "勐腊县", "label": "勐腊县"}]
+    }, {
+        "value": "大理白族自治州",
+        "label": "大理白族自治州",
+        "children": [{
+            "value": "大理市",
+            "label": "大理市"
+        }, {
+            "value": "漾濞彝族自治县",
+            "label": "漾濞彝族自治县"
+        }, {"value": "祥云县", "label": "祥云县"}, {
+            "value": "宾川县",
+            "label": "宾川县"
+        }, {
+            "value": "弥渡县",
+            "label": "弥渡县"
+        }, {
+            "value": "南涧彝族自治县",
+            "label": "南涧彝族自治县"
+        }, {
+            "value": "巍山彝族回族自治县",
+            "label": "巍山彝族回族自治县"
+        }, {"value": "永平县", "label": "永平县"}, {
+            "value": "云龙县",
+            "label": "云龙县"
+        }, {"value": "洱源县", "label": "洱源县"}, {
+            "value": "剑川县",
+            "label": "剑川县"
+        }, {"value": "鹤庆县", "label": "鹤庆县"}]
+    }, {
+        "value": "德宏傣族景颇族自治州",
+        "label": "德宏傣族景颇族自治州",
+        "children": [{"value": "瑞丽市", "label": "瑞丽市"}, {
+            "value": "芒市",
+            "label": "芒市"
+        }, {"value": "梁河县", "label": "梁河县"}, {
+            "value": "盈江县",
+            "label": "盈江县"
+        }, {"value": "陇川县", "label": "陇川县"}]
+    }, {
+        "value": "怒江傈僳族自治州",
+        "label": "怒江傈僳族自治州",
+        "children": [{"value": "泸水市", "label": "泸水市"}, {
+            "value": "福贡县",
+            "label": "福贡县"
+        }, {
+            "value": "贡山独龙族怒族自治县",
+            "label": "贡山独龙族怒族自治县"
+        }, {
+            "value": "兰坪白族普米族自治县",
+            "label": "兰坪白族普米族自治县"
+        }]
+    }, {
+        "value": "迪庆藏族自治州",
+        "label": "迪庆藏族自治州",
+        "children": [{
+            "value": "香格里拉市",
+            "label": "香格里拉市"
+        }, {
+            "value": "德钦县",
+            "label": "德钦县"
+        }, {
+            "value": "维西傈僳族自治县",
+            "label": "维西傈僳族自治县"
+        }]
+    }]
+}, {
+    "value": "西藏自治区",
+    "label": "西藏自治区",
+    "children": [{
+        "value": "拉萨市",
+        "label": "拉萨市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "城关区",
+            "label": "城关区"
+        }, {
+            "value": "堆龙德庆区",
+            "label": "堆龙德庆区"
+        }, {"value": "林周县", "label": "林周县"}, {
+            "value": "当雄县",
+            "label": "当雄县"
+        }, {"value": "尼木县", "label": "尼木县"}, {
+            "value": "曲水县",
+            "label": "曲水县"
+        }, {"value": "达孜县", "label": "达孜县"}, {
+            "value": "墨竹工卡县",
+            "label": "墨竹工卡县"
+        }]
+    }, {
+        "value": "日喀则市",
+        "label": "日喀则市",
+        "children": [{
+            "value": "桑珠孜区",
+            "label": "桑珠孜区"
+        }, {"value": "南木林县", "label": "南木林县"}, {
+            "value": "江孜县",
+            "label": "江孜县"
+        }, {"value": "定日县", "label": "定日县"}, {
+            "value": "萨迦县",
+            "label": "萨迦县"
+        }, {"value": "拉孜县", "label": "拉孜县"}, {
+            "value": "昂仁县",
+            "label": "昂仁县"
+        }, {"value": "谢通门县", "label": "谢通门县"}, {
+            "value": "白朗县",
+            "label": "白朗县"
+        }, {"value": "仁布县", "label": "仁布县"}, {
+            "value": "康马县",
+            "label": "康马县"
+        }, {"value": "定结县", "label": "定结县"}, {
+            "value": "仲巴县",
+            "label": "仲巴县"
+        }, {"value": "亚东县", "label": "亚东县"}, {
+            "value": "吉隆县",
+            "label": "吉隆县"
+        }, {"value": "聂拉木县", "label": "聂拉木县"}, {
+            "value": "萨嘎县",
+            "label": "萨嘎县"
+        }, {"value": "岗巴县", "label": "岗巴县"}]
+    }, {
+        "value": "昌都市",
+        "label": "昌都市",
+        "children": [{"value": "卡若区", "label": "卡若区"}, {
+            "value": "江达县",
+            "label": "江达县"
+        }, {"value": "贡觉县", "label": "贡觉县"}, {
+            "value": "类乌齐县",
+            "label": "类乌齐县"
+        }, {"value": "丁青县", "label": "丁青县"}, {
+            "value": "察雅县",
+            "label": "察雅县"
+        }, {"value": "八宿县", "label": "八宿县"}, {
+            "value": "左贡县",
+            "label": "左贡县"
+        }, {"value": "芒康县", "label": "芒康县"}, {
+            "value": "洛隆县",
+            "label": "洛隆县"
+        }, {"value": "边坝县", "label": "边坝县"}]
+    }, {
+        "value": "林芝市",
+        "label": "林芝市",
+        "children": [{
+            "value": "巴宜区",
+            "label": "巴宜区"
+        }, {
+            "value": "工布江达县",
+            "label": "工布江达县"
+        }, {"value": "米林县", "label": "米林县"}, {
+            "value": "墨脱县",
+            "label": "墨脱县"
+        }, {"value": "波密县", "label": "波密县"}, {
+            "value": "察隅县",
+            "label": "察隅县"
+        }, {"value": "朗县", "label": "朗县"}]
+    }, {
+        "value": "山南市",
+        "label": "山南市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "乃东区",
+            "label": "乃东区"
+        }, {"value": "扎囊县", "label": "扎囊县"}, {
+            "value": "贡嘎县",
+            "label": "贡嘎县"
+        }, {"value": "桑日县", "label": "桑日县"}, {
+            "value": "琼结县",
+            "label": "琼结县"
+        }, {"value": "曲松县", "label": "曲松县"}, {
+            "value": "措美县",
+            "label": "措美县"
+        }, {"value": "洛扎县", "label": "洛扎县"}, {
+            "value": "加查县",
+            "label": "加查县"
+        }, {"value": "隆子县", "label": "隆子县"}, {
+            "value": "错那县",
+            "label": "错那县"
+        }, {"value": "浪卡子县", "label": "浪卡子县"}]
+    }, {
+        "value": "那曲地区",
+        "label": "那曲地区",
+        "children": [{"value": "那曲县", "label": "那曲县"}, {
+            "value": "嘉黎县",
+            "label": "嘉黎县"
+        }, {"value": "比如县", "label": "比如县"}, {
+            "value": "聂荣县",
+            "label": "聂荣县"
+        }, {"value": "安多县", "label": "安多县"}, {
+            "value": "申扎县",
+            "label": "申扎县"
+        }, {"value": "索县", "label": "索县"}, {
+            "value": "班戈县",
+            "label": "班戈县"
+        }, {"value": "巴青县", "label": "巴青县"}, {
+            "value": "尼玛县",
+            "label": "尼玛县"
+        }, {"value": "双湖县", "label": "双湖县"}]
+    }, {
+        "value": "阿里地区",
+        "label": "阿里地区",
+        "children": [{"value": "普兰县", "label": "普兰县"}, {
+            "value": "札达县",
+            "label": "札达县"
+        }, {"value": "噶尔县", "label": "噶尔县"}, {
+            "value": "日土县",
+            "label": "日土县"
+        }, {"value": "革吉县", "label": "革吉县"}, {
+            "value": "改则县",
+            "label": "改则县"
+        }, {"value": "措勤县", "label": "措勤县"}]
+    }]
+}, {
+    "value": "陕西省",
+    "label": "陕西省",
+    "children": [{
+        "value": "西安市",
+        "label": "西安市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "新城区",
+            "label": "新城区"
+        }, {"value": "碑林区", "label": "碑林区"}, {
+            "value": "莲湖区",
+            "label": "莲湖区"
+        }, {"value": "灞桥区", "label": "灞桥区"}, {
+            "value": "未央区",
+            "label": "未央区"
+        }, {"value": "雁塔区", "label": "雁塔区"}, {
+            "value": "阎良区",
+            "label": "阎良区"
+        }, {"value": "临潼区", "label": "临潼区"}, {
+            "value": "长安区",
+            "label": "长安区"
+        }, {"value": "高陵区", "label": "高陵区"}, {
+            "value": "蓝田县",
+            "label": "蓝田县"
+        }, {"value": "周至县", "label": "周至县"}, {
+            "value": "户县",
+            "label": "户县"
+        }]
+    }, {
+        "value": "铜川市",
+        "label": "铜川市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "王益区",
+            "label": "王益区"
+        }, {"value": "印台区", "label": "印台区"}, {
+            "value": "耀州区",
+            "label": "耀州区"
+        }, {"value": "宜君县", "label": "宜君县"}]
+    }, {
+        "value": "宝鸡市",
+        "label": "宝鸡市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "渭滨区",
+            "label": "渭滨区"
+        }, {"value": "金台区", "label": "金台区"}, {
+            "value": "陈仓区",
+            "label": "陈仓区"
+        }, {"value": "凤翔县", "label": "凤翔县"}, {
+            "value": "岐山县",
+            "label": "岐山县"
+        }, {"value": "扶风县", "label": "扶风县"}, {
+            "value": "眉县",
+            "label": "眉县"
+        }, {"value": "陇县", "label": "陇县"}, {
+            "value": "千阳县",
+            "label": "千阳县"
+        }, {"value": "麟游县", "label": "麟游县"}, {
+            "value": "凤县",
+            "label": "凤县"
+        }, {"value": "太白县", "label": "太白县"}]
+    }, {
+        "value": "咸阳市",
+        "label": "咸阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "秦都区",
+            "label": "秦都区"
+        }, {"value": "杨陵区", "label": "杨陵区"}, {
+            "value": "渭城区",
+            "label": "渭城区"
+        }, {"value": "三原县", "label": "三原县"}, {
+            "value": "泾阳县",
+            "label": "泾阳县"
+        }, {"value": "乾县", "label": "乾县"}, {
+            "value": "礼泉县",
+            "label": "礼泉县"
+        }, {"value": "永寿县", "label": "永寿县"}, {
+            "value": "彬县",
+            "label": "彬县"
+        }, {"value": "长武县", "label": "长武县"}, {
+            "value": "旬邑县",
+            "label": "旬邑县"
+        }, {"value": "淳化县", "label": "淳化县"}, {
+            "value": "武功县",
+            "label": "武功县"
+        }, {"value": "兴平市", "label": "兴平市"}]
+    }, {
+        "value": "渭南市",
+        "label": "渭南市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "临渭区",
+            "label": "临渭区"
+        }, {"value": "华州区", "label": "华州区"}, {
+            "value": "潼关县",
+            "label": "潼关县"
+        }, {"value": "大荔县", "label": "大荔县"}, {
+            "value": "合阳县",
+            "label": "合阳县"
+        }, {"value": "澄城县", "label": "澄城县"}, {
+            "value": "蒲城县",
+            "label": "蒲城县"
+        }, {"value": "白水县", "label": "白水县"}, {
+            "value": "富平县",
+            "label": "富平县"
+        }, {"value": "韩城市", "label": "韩城市"}, {
+            "value": "华阴市",
+            "label": "华阴市"
+        }]
+    }, {
+        "value": "延安市",
+        "label": "延安市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "宝塔区",
+            "label": "宝塔区"
+        }, {"value": "安塞区", "label": "安塞区"}, {
+            "value": "延长县",
+            "label": "延长县"
+        }, {"value": "延川县", "label": "延川县"}, {
+            "value": "子长县",
+            "label": "子长县"
+        }, {"value": "志丹县", "label": "志丹县"}, {
+            "value": "吴起县",
+            "label": "吴起县"
+        }, {"value": "甘泉县", "label": "甘泉县"}, {
+            "value": "富县",
+            "label": "富县"
+        }, {"value": "洛川县", "label": "洛川县"}, {
+            "value": "宜川县",
+            "label": "宜川县"
+        }, {"value": "黄龙县", "label": "黄龙县"}, {
+            "value": "黄陵县",
+            "label": "黄陵县"
+        }]
+    }, {
+        "value": "汉中市",
+        "label": "汉中市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "汉台区",
+            "label": "汉台区"
+        }, {"value": "南郑县", "label": "南郑县"}, {
+            "value": "城固县",
+            "label": "城固县"
+        }, {"value": "洋县", "label": "洋县"}, {
+            "value": "西乡县",
+            "label": "西乡县"
+        }, {"value": "勉县", "label": "勉县"}, {
+            "value": "宁强县",
+            "label": "宁强县"
+        }, {"value": "略阳县", "label": "略阳县"}, {
+            "value": "镇巴县",
+            "label": "镇巴县"
+        }, {"value": "留坝县", "label": "留坝县"}, {
+            "value": "佛坪县",
+            "label": "佛坪县"
+        }]
+    }, {
+        "value": "榆林市",
+        "label": "榆林市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "榆阳区",
+            "label": "榆阳区"
+        }, {"value": "横山区", "label": "横山区"}, {
+            "value": "神木县",
+            "label": "神木县"
+        }, {"value": "府谷县", "label": "府谷县"}, {
+            "value": "靖边县",
+            "label": "靖边县"
+        }, {"value": "定边县", "label": "定边县"}, {
+            "value": "绥德县",
+            "label": "绥德县"
+        }, {"value": "米脂县", "label": "米脂县"}, {
+            "value": "佳县",
+            "label": "佳县"
+        }, {"value": "吴堡县", "label": "吴堡县"}, {
+            "value": "清涧县",
+            "label": "清涧县"
+        }, {"value": "子洲县", "label": "子洲县"}]
+    }, {
+        "value": "安康市",
+        "label": "安康市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "汉滨区",
+            "label": "汉滨区"
+        }, {"value": "汉阴县", "label": "汉阴县"}, {
+            "value": "石泉县",
+            "label": "石泉县"
+        }, {"value": "宁陕县", "label": "宁陕县"}, {
+            "value": "紫阳县",
+            "label": "紫阳县"
+        }, {"value": "岚皋县", "label": "岚皋县"}, {
+            "value": "平利县",
+            "label": "平利县"
+        }, {"value": "镇坪县", "label": "镇坪县"}, {
+            "value": "旬阳县",
+            "label": "旬阳县"
+        }, {"value": "白河县", "label": "白河县"}]
+    }, {
+        "value": "商洛市",
+        "label": "商洛市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "商州区",
+            "label": "商州区"
+        }, {"value": "洛南县", "label": "洛南县"}, {
+            "value": "丹凤县",
+            "label": "丹凤县"
+        }, {"value": "商南县", "label": "商南县"}, {
+            "value": "山阳县",
+            "label": "山阳县"
+        }, {"value": "镇安县", "label": "镇安县"}, {
+            "value": "柞水县",
+            "label": "柞水县"
+        }]
+    }]
+}, {
+    "value": "甘肃省",
+    "label": "甘肃省",
+    "children": [{
+        "value": "兰州市",
+        "label": "兰州市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "城关区",
+            "label": "城关区"
+        }, {"value": "七里河区", "label": "七里河区"}, {
+            "value": "西固区",
+            "label": "西固区"
+        }, {"value": "安宁区", "label": "安宁区"}, {
+            "value": "红古区",
+            "label": "红古区"
+        }, {"value": "永登县", "label": "永登县"}, {
+            "value": "皋兰县",
+            "label": "皋兰县"
+        }, {"value": "榆中县", "label": "榆中县"}]
+    }, {
+        "value": "嘉峪关市",
+        "label": "嘉峪关市",
+        "children": [{"value": "市辖区", "label": "市辖区"}]
+    }, {
+        "value": "金昌市",
+        "label": "金昌市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "金川区",
+            "label": "金川区"
+        }, {"value": "永昌县", "label": "永昌县"}]
+    }, {
+        "value": "白银市",
+        "label": "白银市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "白银区",
+            "label": "白银区"
+        }, {"value": "平川区", "label": "平川区"}, {
+            "value": "靖远县",
+            "label": "靖远县"
+        }, {"value": "会宁县", "label": "会宁县"}, {
+            "value": "景泰县",
+            "label": "景泰县"
+        }]
+    }, {
+        "value": "天水市",
+        "label": "天水市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "秦州区",
+            "label": "秦州区"
+        }, {"value": "麦积区", "label": "麦积区"}, {
+            "value": "清水县",
+            "label": "清水县"
+        }, {"value": "秦安县", "label": "秦安县"}, {
+            "value": "甘谷县",
+            "label": "甘谷县"
+        }, {
+            "value": "武山县",
+            "label": "武山县"
+        }, {
+            "value": "张家川回族自治县",
+            "label": "张家川回族自治县"
+        }]
+    }, {
+        "value": "武威市",
+        "label": "武威市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "凉州区",
+            "label": "凉州区"
+        }, {"value": "民勤县", "label": "民勤县"}, {
+            "value": "古浪县",
+            "label": "古浪县"
+        }, {
+            "value": "天祝藏族自治县",
+            "label": "天祝藏族自治县"
+        }]
+    }, {
+        "value": "张掖市",
+        "label": "张掖市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "甘州区",
+            "label": "甘州区"
+        }, {
+            "value": "肃南裕固族自治县",
+            "label": "肃南裕固族自治县"
+        }, {"value": "民乐县", "label": "民乐县"}, {
+            "value": "临泽县",
+            "label": "临泽县"
+        }, {"value": "高台县", "label": "高台县"}, {
+            "value": "山丹县",
+            "label": "山丹县"
+        }]
+    }, {
+        "value": "平凉市",
+        "label": "平凉市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "崆峒区",
+            "label": "崆峒区"
+        }, {"value": "泾川县", "label": "泾川县"}, {
+            "value": "灵台县",
+            "label": "灵台县"
+        }, {"value": "崇信县", "label": "崇信县"}, {
+            "value": "华亭县",
+            "label": "华亭县"
+        }, {"value": "庄浪县", "label": "庄浪县"}, {
+            "value": "静宁县",
+            "label": "静宁县"
+        }]
+    }, {
+        "value": "酒泉市",
+        "label": "酒泉市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "肃州区",
+            "label": "肃州区"
+        }, {"value": "金塔县", "label": "金塔县"}, {
+            "value": "瓜州县",
+            "label": "瓜州县"
+        }, {
+            "value": "肃北蒙古族自治县",
+            "label": "肃北蒙古族自治县"
+        }, {
+            "value": "阿克塞哈萨克族自治县",
+            "label": "阿克塞哈萨克族自治县"
+        }, {"value": "玉门市", "label": "玉门市"}, {
+            "value": "敦煌市",
+            "label": "敦煌市"
+        }]
+    }, {
+        "value": "庆阳市",
+        "label": "庆阳市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "西峰区",
+            "label": "西峰区"
+        }, {"value": "庆城县", "label": "庆城县"}, {
+            "value": "环县",
+            "label": "环县"
+        }, {"value": "华池县", "label": "华池县"}, {
+            "value": "合水县",
+            "label": "合水县"
+        }, {"value": "正宁县", "label": "正宁县"}, {
+            "value": "宁县",
+            "label": "宁县"
+        }, {"value": "镇原县", "label": "镇原县"}]
+    }, {
+        "value": "定西市",
+        "label": "定西市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "安定区",
+            "label": "安定区"
+        }, {"value": "通渭县", "label": "通渭县"}, {
+            "value": "陇西县",
+            "label": "陇西县"
+        }, {"value": "渭源县", "label": "渭源县"}, {
+            "value": "临洮县",
+            "label": "临洮县"
+        }, {"value": "漳县", "label": "漳县"}, {"value": "岷县", "label": "岷县"}]
+    }, {
+        "value": "陇南市",
+        "label": "陇南市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "武都区",
+            "label": "武都区"
+        }, {"value": "成县", "label": "成县"}, {
+            "value": "文县",
+            "label": "文县"
+        }, {"value": "宕昌县", "label": "宕昌县"}, {
+            "value": "康县",
+            "label": "康县"
+        }, {"value": "西和县", "label": "西和县"}, {
+            "value": "礼县",
+            "label": "礼县"
+        }, {"value": "徽县", "label": "徽县"}, {
+            "value": "两当县",
+            "label": "两当县"
+        }]
+    }, {
+        "value": "临夏回族自治州",
+        "label": "临夏回族自治州",
+        "children": [{"value": "临夏市", "label": "临夏市"}, {
+            "value": "临夏县",
+            "label": "临夏县"
+        }, {"value": "康乐县", "label": "康乐县"}, {
+            "value": "永靖县",
+            "label": "永靖县"
+        }, {"value": "广河县", "label": "广河县"}, {
+            "value": "和政县",
+            "label": "和政县"
+        }, {
+            "value": "东乡族自治县",
+            "label": "东乡族自治县"
+        }, {
+            "value": "积石山保安族东乡族撒拉族自治县",
+            "label": "积石山保安族东乡族撒拉族自治县"
+        }]
+    }, {
+        "value": "甘南藏族自治州",
+        "label": "甘南藏族自治州",
+        "children": [{"value": "合作市", "label": "合作市"}, {
+            "value": "临潭县",
+            "label": "临潭县"
+        }, {"value": "卓尼县", "label": "卓尼县"}, {
+            "value": "舟曲县",
+            "label": "舟曲县"
+        }, {"value": "迭部县", "label": "迭部县"}, {
+            "value": "玛曲县",
+            "label": "玛曲县"
+        }, {"value": "碌曲县", "label": "碌曲县"}, {
+            "value": "夏河县",
+            "label": "夏河县"
+        }]
+    }]
+}, {
+    "value": "青海省",
+    "label": "青海省",
+    "children": [{
+        "value": "西宁市",
+        "label": "西宁市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "城东区",
+            "label": "城东区"
+        }, {"value": "城中区", "label": "城中区"}, {
+            "value": "城西区",
+            "label": "城西区"
+        }, {
+            "value": "城北区",
+            "label": "城北区"
+        }, {
+            "value": "大通回族土族自治县",
+            "label": "大通回族土族自治县"
+        }, {"value": "湟中县", "label": "湟中县"}, {
+            "value": "湟源县",
+            "label": "湟源县"
+        }]
+    }, {
+        "value": "海东市",
+        "label": "海东市",
+        "children": [{"value": "乐都区", "label": "乐都区"}, {
+            "value": "平安区",
+            "label": "平安区"
+        }, {
+            "value": "民和回族土族自治县",
+            "label": "民和回族土族自治县"
+        }, {
+            "value": "互助土族自治县",
+            "label": "互助土族自治县"
+        }, {
+            "value": "化隆回族自治县",
+            "label": "化隆回族自治县"
+        }, {
+            "value": "循化撒拉族自治县",
+            "label": "循化撒拉族自治县"
+        }]
+    }, {
+        "value": "海北藏族自治州",
+        "label": "海北藏族自治州",
+        "children": [{
+            "value": "门源回族自治县",
+            "label": "门源回族自治县"
+        }, {"value": "祁连县", "label": "祁连县"}, {
+            "value": "海晏县",
+            "label": "海晏县"
+        }, {"value": "刚察县", "label": "刚察县"}]
+    }, {
+        "value": "黄南藏族自治州",
+        "label": "黄南藏族自治州",
+        "children": [{"value": "同仁县", "label": "同仁县"}, {
+            "value": "尖扎县",
+            "label": "尖扎县"
+        }, {
+            "value": "泽库县",
+            "label": "泽库县"
+        }, {
+            "value": "河南蒙古族自治县",
+            "label": "河南蒙古族自治县"
+        }]
+    }, {
+        "value": "海南藏族自治州",
+        "label": "海南藏族自治州",
+        "children": [{"value": "共和县", "label": "共和县"}, {
+            "value": "同德县",
+            "label": "同德县"
+        }, {"value": "贵德县", "label": "贵德县"}, {
+            "value": "兴海县",
+            "label": "兴海县"
+        }, {"value": "贵南县", "label": "贵南县"}]
+    }, {
+        "value": "果洛藏族自治州",
+        "label": "果洛藏族自治州",
+        "children": [{"value": "玛沁县", "label": "玛沁县"}, {
+            "value": "班玛县",
+            "label": "班玛县"
+        }, {"value": "甘德县", "label": "甘德县"}, {
+            "value": "达日县",
+            "label": "达日县"
+        }, {"value": "久治县", "label": "久治县"}, {
+            "value": "玛多县",
+            "label": "玛多县"
+        }]
+    }, {
+        "value": "玉树藏族自治州",
+        "label": "玉树藏族自治州",
+        "children": [{"value": "玉树市", "label": "玉树市"}, {
+            "value": "杂多县",
+            "label": "杂多县"
+        }, {"value": "称多县", "label": "称多县"}, {
+            "value": "治多县",
+            "label": "治多县"
+        }, {"value": "囊谦县", "label": "囊谦县"}, {
+            "value": "曲麻莱县",
+            "label": "曲麻莱县"
+        }]
+    }, {
+        "value": "海西蒙古族藏族自治州",
+        "label": "海西蒙古族藏族自治州",
+        "children": [{
+            "value": "格尔木市",
+            "label": "格尔木市"
+        }, {"value": "德令哈市", "label": "德令哈市"}, {
+            "value": "乌兰县",
+            "label": "乌兰县"
+        }, {"value": "都兰县", "label": "都兰县"}, {
+            "value": "天峻县",
+            "label": "天峻县"
+        }]
+    }]
+}, {
+    "value": "宁夏回族自治区",
+    "label": "宁夏回族自治区",
+    "children": [{
+        "value": "银川市",
+        "label": "银川市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "兴庆区",
+            "label": "兴庆区"
+        }, {"value": "西夏区", "label": "西夏区"}, {
+            "value": "金凤区",
+            "label": "金凤区"
+        }, {"value": "永宁县", "label": "永宁县"}, {
+            "value": "贺兰县",
+            "label": "贺兰县"
+        }, {"value": "灵武市", "label": "灵武市"}]
+    }, {
+        "value": "石嘴山市",
+        "label": "石嘴山市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "大武口区", "label": "大武口区"}, {
+            "value": "惠农区",
+            "label": "惠农区"
+        }, {"value": "平罗县", "label": "平罗县"}]
+    }, {
+        "value": "吴忠市",
+        "label": "吴忠市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "利通区",
+            "label": "利通区"
+        }, {"value": "红寺堡区", "label": "红寺堡区"}, {
+            "value": "盐池县",
+            "label": "盐池县"
+        }, {"value": "同心县", "label": "同心县"}, {
+            "value": "青铜峡市",
+            "label": "青铜峡市"
+        }]
+    }, {
+        "value": "固原市",
+        "label": "固原市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "原州区",
+            "label": "原州区"
+        }, {"value": "西吉县", "label": "西吉县"}, {
+            "value": "隆德县",
+            "label": "隆德县"
+        }, {"value": "泾源县", "label": "泾源县"}, {
+            "value": "彭阳县",
+            "label": "彭阳县"
+        }]
+    }, {
+        "value": "中卫市",
+        "label": "中卫市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {"value": "沙坡头区", "label": "沙坡头区"}, {
+            "value": "中宁县",
+            "label": "中宁县"
+        }, {"value": "海原县", "label": "海原县"}]
+    }]
+}, {
+    "value": "新疆维吾尔自治区",
+    "label": "新疆维吾尔自治区",
+    "children": [{
+        "value": "乌鲁木齐市",
+        "label": "乌鲁木齐市",
+        "children": [{"value": "市辖区", "label": "市辖区"}, {
+            "value": "天山区",
+            "label": "天山区"
+        }, {
+            "value": "沙依巴克区",
+            "label": "沙依巴克区"
+        }, {"value": "新市区", "label": "新市区"}, {
+            "value": "水磨沟区",
+            "label": "水磨沟区"
+        }, {
+            "value": "头屯河区",
+            "label": "头屯河区"
+        }, {"value": "达坂城区", "label": "达坂城区"}, {
+            "value": "米东区",
+            "label": "米东区"
+        }, {"value": "乌鲁木齐县", "label": "乌鲁木齐县"}]
+    }, {
+        "value": "克拉玛依市",
+        "label": "克拉玛依市",
+        "children": [{
+            "value": "市辖区",
+            "label": "市辖区"
+        }, {
+            "value": "独山子区",
+            "label": "独山子区"
+        }, {
+            "value": "克拉玛依区",
+            "label": "克拉玛依区"
+        }, {
+            "value": "白碱滩区",
+            "label": "白碱滩区"
+        }, {"value": "乌尔禾区", "label": "乌尔禾区"}]
+    }, {
+        "value": "吐鲁番市",
+        "label": "吐鲁番市",
+        "children": [{"value": "高昌区", "label": "高昌区"}, {
+            "value": "鄯善县",
+            "label": "鄯善县"
+        }, {"value": "托克逊县", "label": "托克逊县"}]
+    }, {
+        "value": "哈密市",
+        "label": "哈密市",
+        "children": [{
+            "value": "伊州区",
+            "label": "伊州区"
+        }, {
+            "value": "巴里坤哈萨克自治县",
+            "label": "巴里坤哈萨克自治县"
+        }, {"value": "伊吾县", "label": "伊吾县"}]
+    }, {
+        "value": "昌吉回族自治州",
+        "label": "昌吉回族自治州",
+        "children": [{"value": "昌吉市", "label": "昌吉市"}, {
+            "value": "阜康市",
+            "label": "阜康市"
+        }, {
+            "value": "呼图壁县",
+            "label": "呼图壁县"
+        }, {"value": "玛纳斯县", "label": "玛纳斯县"}, {
+            "value": "奇台县",
+            "label": "奇台县"
+        }, {
+            "value": "吉木萨尔县",
+            "label": "吉木萨尔县"
+        }, {
+            "value": "木垒哈萨克自治县",
+            "label": "木垒哈萨克自治县"
+        }]
+    }, {
+        "value": "博尔塔拉蒙古自治州",
+        "label": "博尔塔拉蒙古自治州",
+        "children": [{
+            "value": "博乐市",
+            "label": "博乐市"
+        }, {
+            "value": "阿拉山口市",
+            "label": "阿拉山口市"
+        }, {"value": "精河县", "label": "精河县"}, {
+            "value": "温泉县",
+            "label": "温泉县"
+        }]
+    }, {
+        "value": "巴音郭楞蒙古自治州",
+        "label": "巴音郭楞蒙古自治州",
+        "children": [{
+            "value": "库尔勒市",
+            "label": "库尔勒市"
+        }, {"value": "轮台县", "label": "轮台县"}, {
+            "value": "尉犁县",
+            "label": "尉犁县"
+        }, {"value": "若羌县", "label": "若羌县"}, {
+            "value": "且末县",
+            "label": "且末县"
+        }, {
+            "value": "焉耆回族自治县",
+            "label": "焉耆回族自治县"
+        }, {"value": "和静县", "label": "和静县"}, {
+            "value": "和硕县",
+            "label": "和硕县"
+        }, {"value": "博湖县", "label": "博湖县"}]
+    }, {
+        "value": "阿克苏地区",
+        "label": "阿克苏地区",
+        "children": [{
+            "value": "阿克苏市",
+            "label": "阿克苏市"
+        }, {"value": "温宿县", "label": "温宿县"}, {
+            "value": "库车县",
+            "label": "库车县"
+        }, {"value": "沙雅县", "label": "沙雅县"}, {
+            "value": "新和县",
+            "label": "新和县"
+        }, {"value": "拜城县", "label": "拜城县"}, {
+            "value": "乌什县",
+            "label": "乌什县"
+        }, {"value": "阿瓦提县", "label": "阿瓦提县"}, {
+            "value": "柯坪县",
+            "label": "柯坪县"
+        }]
+    }, {
+        "value": "克孜勒苏柯尔克孜自治州",
+        "label": "克孜勒苏柯尔克孜自治州",
+        "children": [{
+            "value": "阿图什市",
+            "label": "阿图什市"
+        }, {
+            "value": "阿克陶县",
+            "label": "阿克陶县"
+        }, {"value": "阿合奇县", "label": "阿合奇县"}, {
+            "value": "乌恰县",
+            "label": "乌恰县"
+        }]
+    }, {
+        "value": "喀什地区",
+        "label": "喀什地区",
+        "children": [{"value": "喀什市", "label": "喀什市"}, {
+            "value": "疏附县",
+            "label": "疏附县"
+        }, {"value": "疏勒县", "label": "疏勒县"}, {
+            "value": "英吉沙县",
+            "label": "英吉沙县"
+        }, {"value": "泽普县", "label": "泽普县"}, {
+            "value": "莎车县",
+            "label": "莎车县"
+        }, {"value": "叶城县", "label": "叶城县"}, {
+            "value": "麦盖提县",
+            "label": "麦盖提县"
+        }, {"value": "岳普湖县", "label": "岳普湖县"}, {
+            "value": "伽师县",
+            "label": "伽师县"
+        }, {
+            "value": "巴楚县",
+            "label": "巴楚县"
+        }, {
+            "value": "塔什库尔干塔吉克自治县",
+            "label": "塔什库尔干塔吉克自治县"
+        }]
+    }, {
+        "value": "和田地区",
+        "label": "和田地区",
+        "children": [{"value": "和田市", "label": "和田市"}, {
+            "value": "和田县",
+            "label": "和田县"
+        }, {"value": "墨玉县", "label": "墨玉县"}, {
+            "value": "皮山县",
+            "label": "皮山县"
+        }, {"value": "洛浦县", "label": "洛浦县"}, {
+            "value": "策勒县",
+            "label": "策勒县"
+        }, {"value": "于田县", "label": "于田县"}, {
+            "value": "民丰县",
+            "label": "民丰县"
+        }]
+    }, {
+        "value": "伊犁哈萨克自治州",
+        "label": "伊犁哈萨克自治州",
+        "children": [{"value": "伊宁市", "label": "伊宁市"}, {
+            "value": "奎屯市",
+            "label": "奎屯市"
+        }, {
+            "value": "霍尔果斯市",
+            "label": "霍尔果斯市"
+        }, {
+            "value": "伊宁县",
+            "label": "伊宁县"
+        }, {
+            "value": "察布查尔锡伯自治县",
+            "label": "察布查尔锡伯自治县"
+        }, {"value": "霍城县", "label": "霍城县"}, {
+            "value": "巩留县",
+            "label": "巩留县"
+        }, {"value": "新源县", "label": "新源县"}, {
+            "value": "昭苏县",
+            "label": "昭苏县"
+        }, {
+            "value": "特克斯县",
+            "label": "特克斯县"
+        }, {"value": "尼勒克县", "label": "尼勒克县"}]
+    }, {
+        "value": "塔城地区",
+        "label": "塔城地区",
+        "children": [{"value": "塔城市", "label": "塔城市"}, {
+            "value": "乌苏市",
+            "label": "乌苏市"
+        }, {"value": "额敏县", "label": "额敏县"}, {
+            "value": "沙湾县",
+            "label": "沙湾县"
+        }, {"value": "托里县", "label": "托里县"}, {
+            "value": "裕民县",
+            "label": "裕民县"
+        }, {
+            "value": "和布克赛尔蒙古自治县",
+            "label": "和布克赛尔蒙古自治县"
+        }]
+    }, {
+        "value": "阿勒泰地区",
+        "label": "阿勒泰地区",
+        "children": [{
+            "value": "阿勒泰市",
+            "label": "阿勒泰市"
+        }, {"value": "布尔津县", "label": "布尔津县"}, {
+            "value": "富蕴县",
+            "label": "富蕴县"
+        }, {"value": "福海县", "label": "福海县"}, {
+            "value": "哈巴河县",
+            "label": "哈巴河县"
+        }, {"value": "青河县", "label": "青河县"}, {
+            "value": "吉木乃县",
+            "label": "吉木乃县"
+        }]
+    }, {
+        "value": "直辖县",
+        "label": "直辖县",
+        "children": [{
+            "value": "石河子市",
+            "label": "石河子市"
+        }, {
+            "value": "阿拉尔市",
+            "label": "阿拉尔市"
+        }, {
+            "value": "图木舒克市",
+            "label": "图木舒克市"
+        }, {
+            "value": "五家渠市",
+            "label": "五家渠市"
+        }, {"value": "铁门关市", "label": "铁门关市"}]
+    }]
+}, {
+    "value": "香港特别行政区",
+    "label": "香港特别行政区",
+    "children": [{
+        "value": "香港特别行政区",
+        "label": "香港特别行政区",
+        "children": [{"value": "中西区", "label": "中西区"}, {
+            "value": "东区",
+            "label": "东区"
+        }, {"value": "九龙城区", "label": "九龙城区"}, {
+            "value": "观塘区",
+            "label": "观塘区"
+        }, {"value": "南区", "label": "南区"}, {
+            "value": "深水埗区",
+            "label": "深水埗区"
+        }, {"value": "湾仔区", "label": "湾仔区"}, {
+            "value": "黄大仙区",
+            "label": "黄大仙区"
+        }, {"value": "油尖旺区", "label": "油尖旺区"}, {
+            "value": "离岛区",
+            "label": "离岛区"
+        }, {"value": "葵青区", "label": "葵青区"}, {
+            "value": "北区",
+            "label": "北区"
+        }, {"value": "西贡区", "label": "西贡区"}, {
+            "value": "沙田区",
+            "label": "沙田区"
+        }, {"value": "屯门区", "label": "屯门区"}, {
+            "value": "大埔区",
+            "label": "大埔区"
+        }, {"value": "荃湾区", "label": "荃湾区"}, {
+            "value": "元朗区",
+            "label": "元朗区"
+        }]
+    }]
+}, {
+    "value": "澳门特别行政区",
+    "label": "澳门特别行政区",
+    "children": [{
+        "value": "澳门特别行政区",
+        "label": "澳门特别行政区",
+        "children": [{
+            "value": "澳门半岛",
+            "label": "澳门半岛"
+        }, {"value": "凼仔", "label": "凼仔"}, {
+            "value": "路凼城",
+            "label": "路凼城"
+        }, {"value": "路环", "label": "路环"}]
+    }]
+}, {
+    "value": "台湾", "label": "台湾", "children": [{
+        "value": "彰化县",
+        "label": "彰化县",
+        "children": [{"value": "芳苑乡", "label": "芳苑乡"}, {
+            "value": "芬园乡",
+            "label": "芬园乡"
+        }, {"value": "福兴乡", "label": "福兴乡"}, {
+            "value": "和美镇",
+            "label": "和美镇"
+        }, {"value": "花坛乡", "label": "花坛乡"}, {
+            "value": "鹿港镇",
+            "label": "鹿港镇"
+        }, {"value": "埤头乡", "label": "埤头乡"}, {
+            "value": "埔心乡",
+            "label": "埔心乡"
+        }, {"value": "埔盐乡", "label": "埔盐乡"}, {
+            "value": "伸港乡",
+            "label": "伸港乡"
+        }, {"value": "社头乡", "label": "社头乡"}, {
+            "value": "田尾乡",
+            "label": "田尾乡"
+        }, {"value": "田中镇", "label": "田中镇"}, {
+            "value": "线西乡",
+            "label": "线西乡"
+        }, {"value": "溪湖镇", "label": "溪湖镇"}, {
+            "value": "秀水乡",
+            "label": "秀水乡"
+        }, {"value": "溪州乡", "label": "溪州乡"}, {
+            "value": "永靖乡",
+            "label": "永靖乡"
+        }, {"value": "员林市", "label": "员林市"}, {
+            "value": "竹塘乡",
+            "label": "竹塘乡"
+        }]
+    }, {
+        "value": "新北市",
+        "label": "新北市",
+        "children": [{"value": "八里区", "label": "八里区"}, {
+            "value": "板桥区",
+            "label": "板桥区"
+        }, {"value": "贡寮区", "label": "贡寮区"}, {
+            "value": "金山区",
+            "label": "金山区"
+        }, {"value": "林口区", "label": "林口区"}, {
+            "value": "芦洲区",
+            "label": "芦洲区"
+        }, {"value": "坪林区", "label": "坪林区"}, {
+            "value": "平溪区",
+            "label": "平溪区"
+        }, {"value": "瑞芳区", "label": "瑞芳区"}, {
+            "value": "三重区",
+            "label": "三重区"
+        }, {"value": "三峡区", "label": "三峡区"}, {
+            "value": "三芝区",
+            "label": "三芝区"
+        }, {"value": "深坑区", "label": "深坑区"}, {
+            "value": "石碇区",
+            "label": "石碇区"
+        }, {"value": "石门区", "label": "石门区"}, {
+            "value": "双溪区",
+            "label": "双溪区"
+        }, {"value": "树林区", "label": "树林区"}, {
+            "value": "泰山区",
+            "label": "泰山区"
+        }, {"value": "淡水区", "label": "淡水区"}, {
+            "value": "土城区",
+            "label": "土城区"
+        }]
+    }, {
+        "value": "澎湖县",
+        "label": "澎湖县",
+        "children": [{"value": "白沙乡", "label": "白沙乡"}, {
+            "value": "湖西乡",
+            "label": "湖西乡"
+        }, {"value": "马公市", "label": "马公市"}, {
+            "value": "七美乡",
+            "label": "七美乡"
+        }, {"value": "望安乡", "label": "望安乡"}, {
+            "value": "西屿乡",
+            "label": "西屿乡"
+        }]
+    }, {
+        "value": "屏东县",
+        "label": "屏东县",
+        "children": [{
+            "value": "三地门乡",
+            "label": "三地门乡"
+        }, {"value": "狮子乡", "label": "狮子乡"}, {
+            "value": "泰武乡",
+            "label": "泰武乡"
+        }, {"value": "万丹乡", "label": "万丹乡"}, {
+            "value": "万峦乡",
+            "label": "万峦乡"
+        }, {"value": "雾臺乡", "label": "雾臺乡"}, {
+            "value": "新埤乡",
+            "label": "新埤乡"
+        }, {"value": "新园乡", "label": "新园乡"}, {
+            "value": "盐埔乡",
+            "label": "盐埔乡"
+        }, {"value": "竹田乡", "label": "竹田乡"}, {
+            "value": "长治乡",
+            "label": "长治乡"
+        }, {"value": "潮州镇", "label": "潮州镇"}, {
+            "value": "车城乡",
+            "label": "车城乡"
+        }, {"value": "春日乡", "label": "春日乡"}, {
+            "value": "东港镇",
+            "label": "东港镇"
+        }, {"value": "枋寮乡", "label": "枋寮乡"}, {
+            "value": "枋山乡",
+            "label": "枋山乡"
+        }, {"value": "高树乡", "label": "高树乡"}, {
+            "value": "恆春镇",
+            "label": "恆春镇"
+        }, {"value": "佳冬乡", "label": "佳冬乡"}]
+    }, {
+        "value": "臺中市",
+        "label": "臺中市",
+        "children": [{"value": "梧栖区", "label": "梧栖区"}, {
+            "value": "乌日区",
+            "label": "乌日区"
+        }, {"value": "新社区", "label": "新社区"}, {
+            "value": "西屯区",
+            "label": "西屯区"
+        }, {"value": "北屯区", "label": "北屯区"}, {
+            "value": "中区",
+            "label": "中区"
+        }, {"value": "大肚区", "label": "大肚区"}, {
+            "value": "大甲区",
+            "label": "大甲区"
+        }, {"value": "大里区", "label": "大里区"}, {
+            "value": "大雅区",
+            "label": "大雅区"
+        }, {"value": "大安区", "label": "大安区"}, {
+            "value": "东势区",
+            "label": "东势区"
+        }, {"value": "东区", "label": "东区"}, {
+            "value": "丰原区",
+            "label": "丰原区"
+        }, {"value": "和平区", "label": "和平区"}, {
+            "value": "后里区",
+            "label": "后里区"
+        }, {"value": "龙井区", "label": "龙井区"}, {
+            "value": "南屯区",
+            "label": "南屯区"
+        }, {"value": "北区", "label": "北区"}, {
+            "value": "清水区",
+            "label": "清水区"
+        }]
+    }, {
+        "value": "臺南市",
+        "label": "臺南市",
+        "children": [{"value": "佳里区", "label": "佳里区"}, {
+            "value": "将军区",
+            "label": "将军区"
+        }, {"value": "六甲区", "label": "六甲区"}, {
+            "value": "柳营区",
+            "label": "柳营区"
+        }, {"value": "龙崎区", "label": "龙崎区"}, {
+            "value": "麻豆区",
+            "label": "麻豆区"
+        }, {"value": "南化区", "label": "南化区"}, {
+            "value": "楠西区",
+            "label": "楠西区"
+        }, {"value": "北区", "label": "北区"}, {
+            "value": "七股区",
+            "label": "七股区"
+        }, {"value": "仁德区", "label": "仁德区"}, {
+            "value": "善化区",
+            "label": "善化区"
+        }, {"value": "山上区", "label": "山上区"}, {
+            "value": "南区",
+            "label": "南区"
+        }, {"value": "中西区", "label": "中西区"}, {
+            "value": "下营区",
+            "label": "下营区"
+        }, {"value": "西港区", "label": "西港区"}, {
+            "value": "新化区",
+            "label": "新化区"
+        }, {"value": "新市区", "label": "新市区"}, {
+            "value": "新营区",
+            "label": "新营区"
+        }]
+    }, {
+        "value": "臺北市",
+        "label": "臺北市",
+        "children": [{"value": "北投区", "label": "北投区"}, {
+            "value": "大同区",
+            "label": "大同区"
+        }, {"value": "大安区", "label": "大安区"}, {
+            "value": "南港区",
+            "label": "南港区"
+        }, {"value": "内湖区", "label": "内湖区"}, {
+            "value": "士林区",
+            "label": "士林区"
+        }, {"value": "松山区", "label": "松山区"}, {
+            "value": "万华区",
+            "label": "万华区"
+        }, {"value": "文山区", "label": "文山区"}, {
+            "value": "信义区",
+            "label": "信义区"
+        }, {"value": "中山区", "label": "中山区"}, {
+            "value": "中正区",
+            "label": "中正区"
+        }]
+    }, {
+        "value": "臺东县",
+        "label": "臺东县",
+        "children": [{"value": "卑南乡", "label": "卑南乡"}, {
+            "value": "长滨乡",
+            "label": "长滨乡"
+        }, {"value": "成功镇", "label": "成功镇"}, {
+            "value": "池上乡",
+            "label": "池上乡"
+        }, {"value": "达仁乡", "label": "达仁乡"}, {
+            "value": "大武乡",
+            "label": "大武乡"
+        }, {"value": "东河乡", "label": "东河乡"}, {
+            "value": "关山镇",
+            "label": "关山镇"
+        }, {"value": "海端乡", "label": "海端乡"}, {
+            "value": "金峰乡",
+            "label": "金峰乡"
+        }, {"value": "兰屿乡", "label": "兰屿乡"}, {
+            "value": "绿岛乡",
+            "label": "绿岛乡"
+        }, {"value": "鹿野乡", "label": "鹿野乡"}, {
+            "value": "太麻里乡",
+            "label": "太麻里乡"
+        }, {"value": "臺东市", "label": "臺东市"}, {
+            "value": "延平乡",
+            "label": "延平乡"
+        }]
+    }, {
+        "value": "桃园市",
+        "label": "桃园市",
+        "children": [{"value": "八德区", "label": "八德区"}, {
+            "value": "大溪区",
+            "label": "大溪区"
+        }, {"value": "大园区", "label": "大园区"}, {
+            "value": "復兴区",
+            "label": "復兴区"
+        }, {"value": "观音区", "label": "观音区"}, {
+            "value": "龟山区",
+            "label": "龟山区"
+        }, {"value": "龙潭区", "label": "龙潭区"}, {
+            "value": "芦竹区",
+            "label": "芦竹区"
+        }, {"value": "平镇区", "label": "平镇区"}, {
+            "value": "桃园区",
+            "label": "桃园区"
+        }, {"value": "新屋区", "label": "新屋区"}, {
+            "value": "杨梅区",
+            "label": "杨梅区"
+        }, {"value": "中坜区", "label": "中坜区"}]
+    }, {
+        "value": "宜兰县",
+        "label": "宜兰县",
+        "children": [{"value": "大同乡", "label": "大同乡"}, {
+            "value": "钓鱼臺",
+            "label": "钓鱼臺"
+        }, {"value": "冬山乡", "label": "冬山乡"}, {
+            "value": "礁溪乡",
+            "label": "礁溪乡"
+        }, {"value": "罗东镇", "label": "罗东镇"}, {
+            "value": "南澳乡",
+            "label": "南澳乡"
+        }, {"value": "三星乡", "label": "三星乡"}, {
+            "value": "苏澳镇",
+            "label": "苏澳镇"
+        }, {"value": "头城镇", "label": "头城镇"}, {
+            "value": "五结乡",
+            "label": "五结乡"
+        }, {"value": "宜兰市", "label": "宜兰市"}, {
+            "value": "员山乡",
+            "label": "员山乡"
+        }, {"value": "壮围乡", "label": "壮围乡"}]
+    }, {
+        "value": "南投县",
+        "label": "南投县",
+        "children": [{"value": "草屯镇", "label": "草屯镇"}, {
+            "value": "国姓乡",
+            "label": "国姓乡"
+        }, {"value": "集集镇", "label": "集集镇"}, {
+            "value": "鹿谷乡",
+            "label": "鹿谷乡"
+        }, {"value": "名间乡", "label": "名间乡"}, {
+            "value": "南投市",
+            "label": "南投市"
+        }, {"value": "埔里镇", "label": "埔里镇"}, {
+            "value": "仁爱乡",
+            "label": "仁爱乡"
+        }, {"value": "水里乡", "label": "水里乡"}, {
+            "value": "信义乡",
+            "label": "信义乡"
+        }, {"value": "鱼池乡", "label": "鱼池乡"}, {
+            "value": "中寮乡",
+            "label": "中寮乡"
+        }, {"value": "竹山镇", "label": "竹山镇"}]
+    }, {
+        "value": "南海岛",
+        "label": "南海岛",
+        "children": [{
+            "value": "东沙群岛",
+            "label": "东沙群岛"
+        }, {"value": "南沙群岛", "label": "南沙群岛"}]
+    }, {
+        "value": "苗栗县",
+        "label": "苗栗县",
+        "children": [{"value": "头屋乡", "label": "头屋乡"}, {
+            "value": "西湖乡",
+            "label": "西湖乡"
+        }, {"value": "苑里镇", "label": "苑里镇"}, {
+            "value": "造桥乡",
+            "label": "造桥乡"
+        }, {"value": "竹南镇", "label": "竹南镇"}, {
+            "value": "卓兰镇",
+            "label": "卓兰镇"
+        }, {"value": "大湖乡", "label": "大湖乡"}, {
+            "value": "公馆乡",
+            "label": "公馆乡"
+        }, {"value": "后龙镇", "label": "后龙镇"}, {
+            "value": "苗栗市",
+            "label": "苗栗市"
+        }, {"value": "南庄乡", "label": "南庄乡"}, {
+            "value": "三湾乡",
+            "label": "三湾乡"
+        }, {"value": "三义乡", "label": "三义乡"}, {
+            "value": "狮潭乡",
+            "label": "狮潭乡"
+        }, {"value": "泰安乡", "label": "泰安乡"}, {
+            "value": "铜锣乡",
+            "label": "铜锣乡"
+        }, {"value": "通霄镇", "label": "通霄镇"}, {
+            "value": "头份市",
+            "label": "头份市"
+        }]
+    }, {
+        "value": "嘉义市",
+        "label": "嘉义市",
+        "children": [{"value": "东区", "label": "东区"}, {
+            "value": "西区",
+            "label": "西区"
+        }]
+    }, {
+        "value": "嘉义县",
+        "label": "嘉义县",
+        "children": [{
+            "value": "阿里山乡",
+            "label": "阿里山乡"
+        }, {"value": "布袋镇", "label": "布袋镇"}, {
+            "value": "大林镇",
+            "label": "大林镇"
+        }, {"value": "大埔乡", "label": "大埔乡"}, {
+            "value": "东石乡",
+            "label": "东石乡"
+        }, {"value": "番路乡", "label": "番路乡"}, {
+            "value": "六脚乡",
+            "label": "六脚乡"
+        }, {"value": "鹿草乡", "label": "鹿草乡"}, {
+            "value": "梅山乡",
+            "label": "梅山乡"
+        }, {"value": "民雄乡", "label": "民雄乡"}, {
+            "value": "朴子市",
+            "label": "朴子市"
+        }, {"value": "水上乡", "label": "水上乡"}, {
+            "value": "太保市",
+            "label": "太保市"
+        }, {"value": "溪口乡", "label": "溪口乡"}, {
+            "value": "新港乡",
+            "label": "新港乡"
+        }, {"value": "义竹乡", "label": "义竹乡"}, {
+            "value": "中埔乡",
+            "label": "中埔乡"
+        }, {"value": "竹崎乡", "label": "竹崎乡"}]
+    }, {
+        "value": "新竹市",
+        "label": "新竹市",
+        "children": [{"value": "东区", "label": "东区"}, {
+            "value": "北区",
+            "label": "北区"
+        }]
+    }, {
+        "value": "新竹县",
+        "label": "新竹县",
+        "children": [{"value": "峨眉乡", "label": "峨眉乡"}, {
+            "value": "关西镇",
+            "label": "关西镇"
+        }, {"value": "横山乡", "label": "横山乡"}, {
+            "value": "湖口乡",
+            "label": "湖口乡"
+        }, {"value": "尖石乡", "label": "尖石乡"}, {
+            "value": "芎林乡",
+            "label": "芎林乡"
+        }, {"value": "五峰乡", "label": "五峰乡"}, {
+            "value": "新丰乡",
+            "label": "新丰乡"
+        }, {"value": "新埔镇", "label": "新埔镇"}, {
+            "value": "竹北市",
+            "label": "竹北市"
+        }, {"value": "竹东镇", "label": "竹东镇"}, {
+            "value": "宝山乡",
+            "label": "宝山乡"
+        }, {"value": "北埔乡", "label": "北埔乡"}]
+    }, {
+        "value": "花莲县",
+        "label": "花莲县",
+        "children": [{"value": "卓溪乡", "label": "卓溪乡"}, {
+            "value": "丰滨乡",
+            "label": "丰滨乡"
+        }, {"value": "凤林镇", "label": "凤林镇"}, {
+            "value": "富里乡",
+            "label": "富里乡"
+        }, {"value": "光復乡", "label": "光復乡"}, {
+            "value": "花莲市",
+            "label": "花莲市"
+        }, {"value": "吉安乡", "label": "吉安乡"}, {
+            "value": "瑞穗乡",
+            "label": "瑞穗乡"
+        }, {"value": "寿丰乡", "label": "寿丰乡"}, {
+            "value": "万荣乡",
+            "label": "万荣乡"
+        }, {"value": "新城乡", "label": "新城乡"}, {
+            "value": "秀林乡",
+            "label": "秀林乡"
+        }, {"value": "玉里镇", "label": "玉里镇"}]
+    }, {
+        "value": "高雄市",
+        "label": "高雄市",
+        "children": [{"value": "阿莲区", "label": "阿莲区"}, {
+            "value": "大寮区",
+            "label": "大寮区"
+        }, {"value": "大社区", "label": "大社区"}, {
+            "value": "大树区",
+            "label": "大树区"
+        }, {"value": "凤山区", "label": "凤山区"}, {
+            "value": "冈山区",
+            "label": "冈山区"
+        }, {"value": "鼓山区", "label": "鼓山区"}, {
+            "value": "湖内区",
+            "label": "湖内区"
+        }, {"value": "甲仙区", "label": "甲仙区"}, {
+            "value": "苓雅区",
+            "label": "苓雅区"
+        }, {"value": "林园区", "label": "林园区"}, {
+            "value": "六龟区",
+            "label": "六龟区"
+        }, {"value": "路竹区", "label": "路竹区"}, {
+            "value": "茂林区",
+            "label": "茂林区"
+        }, {"value": "美浓区", "label": "美浓区"}, {
+            "value": "弥陀区",
+            "label": "弥陀区"
+        }, {"value": "那玛夏区", "label": "那玛夏区"}, {
+            "value": "楠梓区",
+            "label": "楠梓区"
+        }, {"value": "内门区", "label": "内门区"}, {
+            "value": "鸟松区",
+            "label": "鸟松区"
+        }]
+    }, {
+        "value": "基隆市",
+        "label": "基隆市",
+        "children": [{"value": "安乐区", "label": "安乐区"}, {
+            "value": "暖暖区",
+            "label": "暖暖区"
+        }, {"value": "七堵区", "label": "七堵区"}, {
+            "value": "仁爱区",
+            "label": "仁爱区"
+        }, {"value": "信义区", "label": "信义区"}, {
+            "value": "中山区",
+            "label": "中山区"
+        }, {"value": "中正区", "label": "中正区"}]
+    }, {
+        "value": "金门县",
+        "label": "金门县",
+        "children": [{"value": "金城镇", "label": "金城镇"}, {
+            "value": "金湖镇",
+            "label": "金湖镇"
+        }, {"value": "金宁乡", "label": "金宁乡"}, {
+            "value": "金沙镇",
+            "label": "金沙镇"
+        }, {"value": "烈屿乡", "label": "烈屿乡"}, {
+            "value": "乌坵乡",
+            "label": "乌坵乡"
+        }]
+    }, {
+        "value": "连江县",
+        "label": "连江县",
+        "children": [{"value": "北竿乡", "label": "北竿乡"}, {
+            "value": "东引乡",
+            "label": "东引乡"
+        }, {"value": "莒光乡", "label": "莒光乡"}, {
+            "value": "南竿乡",
+            "label": "南竿乡"
+        }]
+    }, {
+        "value": "云林县",
+        "label": "云林县",
+        "children": [{"value": "褒忠乡", "label": "褒忠乡"}, {
+            "value": "北港镇",
+            "label": "北港镇"
+        }, {"value": "莿桐乡", "label": "莿桐乡"}, {
+            "value": "大埤乡",
+            "label": "大埤乡"
+        }, {"value": "东势乡", "label": "东势乡"}, {
+            "value": "斗六市",
+            "label": "斗六市"
+        }, {"value": "斗南镇", "label": "斗南镇"}, {
+            "value": "二崙乡",
+            "label": "二崙乡"
+        }, {"value": "古坑乡", "label": "古坑乡"}, {
+            "value": "虎尾镇",
+            "label": "虎尾镇"
+        }, {"value": "口湖乡", "label": "口湖乡"}, {
+            "value": "林内乡",
+            "label": "林内乡"
+        }, {"value": "崙背乡", "label": "崙背乡"}, {
+            "value": "麦寮乡",
+            "label": "麦寮乡"
+        }, {"value": "水林乡", "label": "水林乡"}, {
+            "value": "四湖乡",
+            "label": "四湖乡"
+        }, {"value": "臺西乡", "label": "臺西乡"}, {
+            "value": "土库镇",
+            "label": "土库镇"
+        }, {"value": "西螺镇", "label": "西螺镇"}, {
+            "value": "元长乡",
+            "label": "元长乡"
+        }]
+    }]
+}]

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

@@ -0,0 +1,103 @@
+<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.value
+					}
+				})
+				this.array[1] = AllAddress[this.value[0]].children.map(obj => {
+					return {
+						name: obj.value
+					}
+				})
+				this.array[2] = AllAddress[this.value[0]].children[this.value[1]].children.map(obj => { 
+					return {
+						name: obj.value
+					}
+				})
+				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>

+ 18 - 0
config/app.js

@@ -0,0 +1,18 @@
+module.exports = {
+	// 请求域名 格式: https://您的域名
+	
+	HTTP_REQUEST_URL:'http://base.liuniu946.com',
+
+	
+	
+	// #ifdef H5
+	// HTTP_REQUEST_URL: window.location.protocol+"//"+window.location.host,
+	// #endif
+	HEADER:{
+		'content-type': 'application/json'
+	},
+	// 回话密钥名称 请勿修改此配置
+	TOKENNAME: 'Authori-zation',
+	// 缓存时间 0 永久
+	EXPIRE:0,
+};

+ 32 - 0
config/cache.js

@@ -0,0 +1,32 @@
+module.exports = {
+	//token
+	LOGIN_STATUS: 'LOGIN_STATUS_TOKEN',
+	// uid
+	UID:'UID',
+	//�û�
+	USER_INFO: 'USER_INFO',
+	//token�����¼�
+	EXPIRES_TIME: 'EXPIRES_TIME',
+	//�Ƿ���Ȩ
+	WX_AUTH: 'WX_AUTH',
+	//���ں���Ȩcode
+	STATE_KEY: 'wx_authorize_state',
+	//�û�����
+	LOGINTYPE: 'loginType',
+	//���ں���ת����
+	BACK_URL: 'login_back_url',
+	// ����code
+	STATE_R_KEY: 'roution_authorize_state',
+	//��ȨlogoС����
+	LOGO_URL: 'LOGO_URL',
+	//模板缓存
+	SUBSCRIBE_MESSAGE: 'SUBSCRIBE_MESSAGE',
+
+	TIPS_KEY: 'TIPS_KEY',
+
+	SPREAD: 'spread',
+	//缓存经度
+	CACHE_LONGITUDE: 'LONGITUDE',
+	//缓存纬度
+	CACHE_LATITUDE: 'LATITUDE',
+}

+ 33 - 0
js_sdk/xb-copy/uni-copy.js

@@ -0,0 +1,33 @@
+export default function uniCopy(content) {
+	/**
+	 * 小程序端 和 app端的复制逻辑
+	 */
+	//#ifndef H5
+	uni.setClipboardData({
+		data: content,
+		success: function() {
+			console.log('success');
+			return true
+		}
+	});
+	//#endif
+	
+	/**
+	 * H5端的复制逻辑
+	 */
+	// #ifdef H5
+	if (!document.queryCommandSupported('copy')) { //为了兼容有些浏览器 queryCommandSupported 的判断
+		// 不支持
+		return false
+	}
+	let textarea = document.createElement("textarea")
+	textarea.value = content
+	textarea.readOnly = "readOnly"
+	document.body.appendChild(textarea)
+	textarea.select() // 选择对象
+	textarea.setSelectionRange(0, content.length) //核心
+	let result = document.execCommand("copy") // 执行浏览器复制命令
+	textarea.remove()
+	return result
+	// #endif
+}

+ 39 - 0
libs/log.js

@@ -0,0 +1,39 @@
+
+const logLength=100;//缓存存储上限
+const name = 'log';//缓存名字
+export function addLog (data,content='') {
+	let log = uni.getStorageSync(name)||[];
+	log.unshift({
+		title:data,
+		content:content
+	});
+	uni.setStorageSync(name,log);
+	initLog(log);
+}
+
+
+export function delLog () {
+	return uni.setStorageSync(name,'');
+}
+
+export function getLog () {
+	return uni.getStorageSync(name);
+}
+
+export function initLog (log) {
+	if(log.length>logLength){
+		const newarr = log.slice(log.length-logLength);
+		uni.setStorageSync(name,newarr);
+	}
+}
+export function showLog (log) {
+	
+	let str = '';
+	uni.getStorageSync(name).forEach((e) => {
+		str+=e.title+':'+JSON.stringify(e.content)
+	})
+	uni.showModal({
+		title:"日志",
+		content:str
+	})
+}

+ 84 - 0
libs/login.js

@@ -0,0 +1,84 @@
+import store from "../store";
+import Cache from '../utils/cache';
+// #ifdef H5 || APP-PLUS
+import {
+	isWeixin
+} from "../utils";
+import auth from './wechat';
+// #endif
+
+import {
+	LOGIN_STATUS,
+	USER_INFO,
+	EXPIRES_TIME,
+	STATE_R_KEY
+} from './../config/cache';
+
+function prePage() {
+	let pages = getCurrentPages();
+	let prePage = pages[pages.length - 2];
+	// #ifdef H5
+	return prePage;
+	// #endif
+	return prePage.$vm;
+}
+
+export function toLogin(push, pathLogin) {
+	// store.commit("LOGOUT");
+	let path = prePage();
+	if (path) {
+		path = path.router;
+		if (path == undefined) {
+			path = location.pathname;
+		}
+	}
+	// #ifdef H5
+	else {
+		path = location.pathname;
+	}
+	// #endif
+
+	if (!pathLogin)
+		pathLogin = '/page/users/login/index'
+	Cache.set('login_back_url', path);
+	// #ifdef H5 || APP-PLUS
+	if (isWeixin()) {
+		auth.oAuth();
+	} else {
+		if (path !== pathLogin) {
+			push ? uni.navigateTo({
+				url: '/pages/users/login/index'
+			}) : uni.reLaunch({
+				url: '/pages/users/login/index'
+			});
+		}
+	}
+	// #endif
+
+	// #ifdef MP 
+
+
+	// #endif
+}
+
+
+export function checkLogin() {
+	let token = Cache.get(LOGIN_STATUS);
+	let expiresTime = Cache.get(EXPIRES_TIME);
+	let newTime = Math.round(new Date() / 1000);
+	if (expiresTime < newTime || !token) {
+		Cache.clear(LOGIN_STATUS);
+		Cache.clear(EXPIRES_TIME);
+		Cache.clear(USER_INFO);
+		Cache.clear(STATE_R_KEY);
+		return false;
+	} else {
+		store.commit('UPDATE_LOGIN', token);
+		let userInfo = Cache.get(USER_INFO, true);
+		if (userInfo) {
+			store.commit('UPDATE_USERINFO', userInfo);
+		}
+		return true;
+	}
+
+}

+ 253 - 0
libs/wechat.js

@@ -0,0 +1,253 @@
+// #ifdef H5
+import WechatJSSDK from "@/plugin/jweixin-module/index.js";
+// #endif
+
+import {
+	wechatConfig,
+	wechatAuth
+} from "@/api/wx.js";
+import {
+	WX_AUTH,
+	STATE_KEY,
+	LOGINTYPE,
+	BACK_URL
+} from '@/config/cache';
+import {
+	parseQuery
+} from '@/utils';
+import store from '@/store';
+import Cache from '@/utils/cache';
+
+class AuthWechat {
+	// #ifdef H5
+	constructor() {
+		//微信实例化对象
+		this.instance = WechatJSSDK;
+		//是否实例化
+		this.status = false;
+
+		this.initConfig = {};
+
+	}
+	// #endif
+	
+	isAndroid(){
+		let u = navigator.userAgent;
+		return u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
+	}
+
+	/**
+	 * 初始化wechat(分享配置)
+	 */
+	wechat() {
+		return new Promise((resolve, reject) => {
+			// if (this.status && !this.isAndroid()) return resolve(this.instance);
+			wechatConfig()
+				.then(res => {
+					this.instance.config(res.data);
+					this.initConfig = res.data;
+					this.status = true;
+					this.instance.ready(() => {
+						resolve(this.instance);
+					})
+				}).catch(err => {
+					console.log(err);
+					this.status = false;
+					reject(err);
+				});
+		});
+	}
+
+	/**
+	 * 验证是否初始化
+	 */
+	verifyInstance() {
+		let that = this;
+		return new Promise((resolve, reject) => {
+			if (that.instance === null && !that.status) {
+				that.wechat().then(res => {
+					resolve(that.instance);
+				}).catch(() => {
+					return reject();
+				})
+			} else {
+				return resolve(that.instance);
+			}
+		})
+	}
+	// 微信公众号的共享地址
+	openAddress() {
+		return new Promise((resolve, reject) => {
+			this.wechat().then(wx => {
+				this.toPromise(wx.openAddress).then(res => {
+					resolve(res);
+				}).catch(err => {
+					reject(err);
+				});
+			}).catch(err => {
+				reject(err);
+			})
+		});
+	}
+
+	/**
+	 * 微信支付
+	 * @param {Object} config
+	 */
+	pay(config) {
+		return new Promise((resolve, reject) => {
+			this.wechat().then((wx) => {
+				this.toPromise(wx.chooseWXPay, config).then(res => {
+					resolve(res);
+				}).catch(res => {
+					reject(res);
+				});
+			}).catch(res => {
+				reject(res);
+			});
+		});
+	}
+
+	toPromise(fn, config = {}) {
+		return new Promise((resolve, reject) => {
+			fn({
+				...config,
+				success(res) {
+					resolve(res);
+				},
+				fail(err) {
+					reject(err);
+				},
+				complete(err) {
+					reject(err);
+				},
+				cancel(err) {
+					reject(err);
+				}
+			});
+		});
+	}
+
+	/**
+	 * 自动去授权
+	 */
+	oAuth() {
+		if (uni.getStorageSync(WX_AUTH) && store.state.app.token) return;
+		const {
+			code
+		} = parseQuery();
+		if (!code) return this.toAuth();
+	}
+
+	clearAuthStatus() {
+
+	}
+
+	/**
+	 * 授权登陆获取token
+	 * @param {Object} code
+	 */
+	auth(code) {
+		return new Promise((resolve, reject) => {
+			let loginType = Cache.get(LOGINTYPE);
+			wechatAuth(code, parseInt(Cache.get("spread")), loginType)
+				.then(({
+					data
+				}) => {
+					let expires_time = data.expires_time.substring(0, 19);
+					expires_time = expires_time.replace(/-/g, '/');
+					expires_time = new Date(expires_time).getTime();
+					let newTime = Math.round(new Date() / 1000);
+					store.commit("LOGIN", {
+						token: data.token,
+						time: expires_time - newTime
+					});
+					Cache.set(WX_AUTH, code);
+					Cache.clear(STATE_KEY);
+					loginType && Cache.clear(LOGINTYPE);
+					resolve();
+				})
+				.catch(reject);
+		});
+	}
+
+	/**
+	 * 获取跳转授权后的地址
+	 * @param {Object} appId
+	 */
+	getAuthUrl(appId) {
+		const redirect_uri = encodeURIComponent(
+			`${location.origin}/pages/auth/index?back_url=` +
+			encodeURIComponent(
+				encodeURIComponent(
+					uni.getStorageSync(BACK_URL) ?
+					uni.getStorageSync(BACK_URL) :
+					location.pathname + location.search
+				)
+			)
+		);
+		uni.removeStorageSync(BACK_URL);
+		const state = encodeURIComponent(
+			("" + Math.random()).split(".")[1] + "authorizestate"
+		);
+		uni.setStorageSync(STATE_KEY, state);
+		return `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=${state}#wechat_redirect`;
+	}
+
+	/**
+	 * 跳转自动登陆
+	 */
+	toAuth() {
+		let that = this;
+		this.wechat().then(wx => {
+			location.href = this.getAuthUrl(that.initConfig.appId);
+		})
+	}
+
+	/**
+	 * 绑定事件
+	 * @param {Object} name 事件名
+	 * @param {Object} config 参数
+	 */
+	wechatEvevt(name, config) {
+		let that = this;
+		return new Promise((resolve, reject) => {
+			let configDefault = {
+				fail(res) {
+					console.log(res,11111);
+					if (that.instance) return reject({
+						is_ready: true,
+						wx: that.instance
+					});
+					that.verifyInstance().then(wx => {
+						return reject({
+							is_ready: true,
+							wx: wx
+						});
+					})
+				},
+				success(res) {
+					return resolve(res,2222);
+				}
+			};
+			Object.assign(configDefault, config);
+			that.wechat().then(wx => {
+				if (typeof name === 'object') {
+					name.forEach(item => {
+						wx[item] && wx[item](configDefault)
+					})
+				} else {
+					wx[name] && wx[name](configDefault)
+				}
+			})
+		});
+	}
+
+	isWeixin() {
+		return navigator.userAgent.toLowerCase().indexOf("micromessenger") !== -1;
+	}
+
+}
+
+export default new AuthWechat();
+

+ 46 - 0
main.js

@@ -0,0 +1,46 @@
+import Vue from 'vue'
+import store from './store'
+import App from './App'
+import uView from 'uview-ui'
+Vue.use(uView)
+/**
+ *  所有测试用数据均存放于根目录json.js
+ *  
+ *  css部分使用了App.vue下的全局样式和iconfont图标,有需要图标库的可以留言。
+ *  示例使用了uni.scss下的变量, 除变量外已尽量移除特有语法,可直接替换为其他预处理器使用
+ */
+const msg = (title, duration=1500, mask=false, icon='none')=>{
+	//统一提示方便全局修改
+	if(Boolean(title) === false){
+		return;
+	}
+	uni.showToast({
+		title,
+		duration,
+		mask,
+		icon
+	});
+}
+
+const prePage = ()=>{
+	// 获取当前页面
+	let pages = getCurrentPages();
+	let prePage = pages[pages.length - 2];
+	// #ifdef H5
+	return prePage;
+	// #endif
+	return prePage.$vm;
+}
+
+
+Vue.config.productionTip = false
+Vue.prototype.$fire = new Vue();
+Vue.prototype.$store = store;
+Vue.prototype.$api = {msg, prePage};
+
+App.mpType = 'app'
+
+const app = new Vue({
+    ...App
+})
+app.$mount()

+ 99 - 0
manifest.json

@@ -0,0 +1,99 @@
+{
+    "name" : "玲卿加",
+    "appid" : "__UNI__4E50492",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    "app-plus" : {
+        /* 5+App特有相关 */
+        "usingComponents" : true,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        "modules" : {},
+        /* 模块配置 */
+        "distribute" : {
+            /* 应用发布信息 */
+            "android" : {
+                /* android打包配置 */
+                "permissions" : [
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>"
+                ],
+                "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
+            },
+            "ios" : {
+                "idfa" : false
+            },
+            /* ios打包配置 */
+            "sdkConfigs" : {
+                "maps" : {},
+                "oauth" : {
+                    "weixin" : {
+                        "appid" : "",
+                        "appsecret" : "",
+                        "UniversalLinks" : ""
+                    }
+                }
+            }
+        }
+    },
+    /* SDK配置 */
+    "quickapp" : {},
+    /* 快应用特有相关 */
+    "mp-weixin" : {
+        /* 小程序特有相关 */
+        "usingComponents" : true,
+        "appid" : "wxc22edd7cbc838b77",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "permission" : {
+            "scope.userLocation" : {
+                "desc" : "需要根据你的定位来给你推送最近的门店"
+            }
+        },
+        "requiredPrivateInfos" : [ "getLocation" ]
+    },
+    "h5" : {
+        "title" : "玲卿+",
+        "domain" : "",
+        "router" : {
+            "base" : "/index/",
+            "mode" : "hash"
+        },
+        "devServer" : {
+            "proxy" : {
+                "/api" : {
+                    // "target" : "http://lnpt.frp.liuniu946.com/api",
+                    "target" : "https://hy.liuniu946.com/api",
+                    // "changeOrigin": true,
+                    "pathRewrite" : {
+                        "/api" : "" // rewrite path
+                    }
+                }
+            }
+        },
+        "sdkConfigs" : {
+            "maps" : {
+                "qqmap" : {
+                    "key" : "VYZBZ-P2TRG-RMIQ3-ITAIN-2DKBK-CKFQQ"
+                }
+            }
+        }
+    }
+}

+ 5 - 0
package.json

@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    
+  }
+}

+ 684 - 0
pages.json

@@ -0,0 +1,684 @@
+{
+	"easycom": {
+		"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
+	},
+	"pages": [{
+			"path": "pages/index/index",
+			"style": {
+				"navigationBarTitleText": "玲卿加"
+
+			}
+		},
+		// #ifdef MP-WEIXIN
+		{
+			"path": "pages/index/living",
+			"style": {
+				"navigationBarTitleText": "直播列表"
+		
+			}
+		},
+		// #endif
+		{
+			"path": "pages/index/sx",
+			"style": {
+				"navigationBarTitleText": "今日上新"
+
+			}
+		},
+		{
+			"path": "pages/index/sign",
+			"style": {
+				"navigationBarTitleText": "天天领现金",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		},
+		{
+			"path": "pages/shoping/list",
+			"style": {
+				"navigationBarTitleText": "店铺列表"
+
+			}
+		},
+		{
+			"path": "pages/public/register",
+			"style": {
+				"navigationBarTitleText": "注册",
+				"app-plus": {
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
+			}
+		},
+		{
+			"path": "pages/public/login",
+			"style": {
+				"navigationBarTitleText": "登录",
+				"app-plus": {
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
+			}
+		},
+		{
+			"path": "pages/public/wxLogin",
+			"style": {
+				"navigationBarTitleText": "微信登录",
+				"app-plus": {
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
+			}
+		},
+
+		{
+			"path": "pages/public/forget",
+			"style": {
+				"navigationBarTitleText": "忘记密码",
+				"app-plus": {
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
+			}
+		},
+		{
+			"path": "pages/money/withdmoenys",
+			"style": {
+				"navigationBarTitleText": "转账"
+			}
+		},
+		{
+			"path": "pages/product/groupBooking/index",
+			"style": {
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText": "超值拼团"
+			}
+		},
+		{
+			"path": "pages/product/groupBooking/detail",
+			"style": {
+				"navigationBarTitleText": "拼团列表",
+				"app-plus": {
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
+			}
+		},
+		{
+			"path": "pages/product/groupBooking/productCollage", //拼团商品
+			"style": {
+				"app-plus": {
+					"titleNView": {
+						"type": "transparent"
+					}
+				},
+				"navigationBarTitleText": "商品详情"
+			}
+		},
+		{
+			"path": "pages/product/groupBooking/inviteImg",
+			"style": {
+				"navigationBarTitleText": "拼团邀请图",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		},
+		{
+			"path": "pages/product/groupBooking/productGroup",
+			"style": {
+				"navigationBarTitleText": "拼团详情展示",
+				"app-plus": {
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
+			}
+		},
+		{
+			"path": "pages/product/reply",
+			"style": {
+				"navigationBarTitleText": "商品评价",
+				"app-plus": {
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
+			}
+		},
+		{
+			"path": "pages/product/product",
+			"style": {
+				"navigationBarTitleText": "详情展示",
+				"app-plus": {
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
+			}
+		},
+		{
+			"path": "pages/product/seckill",
+			"style": {
+				"navigationBarTitleText": "限时秒杀"
+			}
+		},
+		{
+			"path": "pages/product/list",
+			"style": {
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText": "商品列表"
+			}
+		},
+		{
+			"path": "pages/product/search",
+			"style": {
+				"enablePullDownRefresh": true,
+				// #ifdef APP-PLUS
+				"navigationStyle": "custom",
+				// #endif
+				// #ifndef MP || APP-PLUS
+				"app-plus": {
+					"titleNView": {
+						"searchInput": {
+							"backgroundColor": "rgba(231, 231, 231,.7)",
+							"borderRadius": "16px",
+							"placeholder": "请输入关键字",
+							"disabled": false,
+							"placeholderColor": "#606266",
+							"align": "left"
+						},
+						"buttons": [{
+							"text": "搜索",
+							"fontSize": "14",
+							"color": "#303133",
+							"background": "rgba(0,0,0,0)",
+							"width": "40px"
+						}]
+					}
+				},
+				// #endif
+				"navigationBarTitleText": "搜索"
+			}
+		},
+		{
+			"path": "pages/product/classify",
+			"style": {
+				"navigationStyle": "custom",
+				"app-plus": {
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
+			}
+		},
+		{
+			"path": "pages/set/set",
+			"style": {
+				"navigationBarTitleText": "设置"
+			}
+		},
+		{
+			"path": "pages/set/bind",
+			"style": {
+				"navigationBarTitleText": "绑定上级"
+			}
+		},
+		{
+			"path": "pages/set/address",
+			"style": {
+				"navigationBarTitleText": "收货地址"
+			}
+		},
+		{
+			"path": "pages/set/addressManage",
+			"style": {
+				"navigationBarTitleText": ""
+			}
+		},
+		{
+			"path": "pages/set/phone",
+			"style": {
+				"navigationBarTitleText": "绑定手机号"
+			}
+		},
+		{
+			"path": "pages/set/user",
+			"style": {
+				"navigationBarTitleText": "绑定上级"
+			}
+		},
+		{
+			"path": "pages/set/password",
+			"style": {
+				"navigationBarTitleText": "修改密码"
+			}
+		},
+		{
+			"path": "pages/set/userinfo",
+			"style": {
+				"navigationBarTitleText": "修改资料"
+			}
+		}, {
+			"path": "pages/cart/cart",
+			"style": {
+				"navigationBarTitleText": "购物车"
+			}
+		},
+
+		{
+			"path": "pages/user/user",
+			"style": {
+				"navigationBarTitleText": "个人中心"
+			}
+		},
+		{
+			"path": "pages/order/order",
+			"style": {
+				"navigationBarTitleText": "我的订单",
+				"app-plus": {
+					"bounce": "none"
+				}
+			}
+		},
+
+		{
+			"path": "pages/order/expressInfo",
+			"style": {
+				"navigationBarTitleText": "快递详情"
+			}
+		},
+		{
+			"path": "pages/order/orderDetail",
+			"style": {
+				"navigationBarTitleText": "订单详情",
+				"app-plus": {
+					"bounce": "none"
+				}
+			}
+		},
+		{
+			"path": "pages/order/evaluate",
+			"style": {
+				"navigationBarTitleText": "评论"
+			}
+		},
+		{
+			"path": "pages/order/orderRefund",
+			"style": {
+				"navigationBarTitleText": "申请退款"
+			}
+		},
+		{
+			"path": "pages/order/createOrder",
+			"style": {
+				"navigationBarTitleText": "创建订单"
+			}
+		}, {
+			"path": "pages/money/pay",
+			"style": {
+				"navigationBarTitleText": "支付"
+			}
+		},
+		{
+			"path": "pages/money/paySuccess",
+			"style": {
+				"navigationBarTitleText": "支付成功"
+			}
+		},
+		{
+			"path": "pages/money/wallet",
+			"style": {
+				"navigationBarTitleText": "我的钱包",
+				"app-plus": {
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
+			}
+		},
+		{
+			"path": "pages/money/account",
+			"style": {
+				"navigationBarTitleText": "提现账号"
+			}
+		},
+
+		{
+			"path": "pages/money/withdrawal",
+			"style": {
+				"navigationBarTitleText": "奖励提现"
+			}
+		},
+		{
+			"path": "pages/money/recharge",
+			"style": {
+				"navigationBarTitleText": "充值"
+			}
+		},
+		{
+			"path": "pages/category/category",
+			"style": {
+				// #ifdef APP-PLUS
+				"navigationStyle": "custom",
+				// #endif
+				// #ifndef MP
+				"app-plus": {
+					"bounce": "none",
+					"titleNView": {
+						"searchInput": {
+							"backgroundColor": "rgba(231, 231, 231,.7)",
+							"borderRadius": "16px",
+							"placeholder": "商品搜索",
+							"disabled": true,
+							"placeholderColor": "#606266",
+							"align": "left"
+						}
+					}
+				},
+				// #endif
+				"navigationBarTitleText": "分类"
+			}
+		},
+		{
+			"path": "pages/redirect/redirect",
+			"style": {
+				"navigationBarTitleText": "微信登录跳转页面",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		},
+		{
+			"path": "pages/category/business",
+			"style": {
+				"navigationBarTitleText": "商圈"
+			}
+		},
+		{
+			"path": "pages/store/index",
+			"style": {
+				"navigationBarTitleText": "同城好店"
+			}
+		},
+		{
+			"path": "pages/store/shopDetail",
+			"style": {
+				"navigationBarTitleText": "好店详情"
+			}
+		},
+		{
+			"path": "pages/store/shopList",
+			"style": {
+				"navigationBarTitleText": "好店列表"
+			}
+		}, {
+			"path": "pages/product/miaosha",
+			"style": {
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/money/success",
+			"style": {
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/money/vipRecharge",
+			"style": {
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": false
+			}
+
+		}
+	],
+	// #ifdef MP-WEIXIN
+		"plugins": {
+			"live-player-plugin": {
+				"version": "1.3.5",
+				"provider": "wx2b03c6e691cd7370"
+			}
+		},
+	// #endif
+	"subPackages": [
+		
+		{
+			"root": "user",
+			"pages": [{
+					"path": "page/jiedianDetails",
+					"style": {
+						"navigationBarTitleText": "节点团队",
+						"app-plus": {
+							"titleNView": {
+								"type": "transparent"
+							}
+						}
+					}
+				},
+				{
+					"path": "page/user_spread_money",
+					"style": {
+						"navigationBarTitleText": "佣金列表"
+					}
+				},
+				{
+					"path": "page/award",
+					"style": {
+						"navigationBarTitleText": "奖励明细",
+						"app-plus": {
+							"titleNView": {
+								"type": "transparent"
+							}
+						}
+					}
+				},
+				{
+					"path": "page/browse",
+					"style": {
+						"navigationBarTitleText": "下级浏览记录"
+					}
+				},
+				{
+					"path": "page/cash",
+					"style": {
+						"navigationBarTitleText": "我的现金"
+					}
+				},
+				{
+					"path": "page/coupon",
+					"style": {
+						"navigationBarTitleText": "优惠券详情"
+					}
+				},
+				{
+					"path": "page/favorites",
+					"style": {
+						"navigationBarTitleText": "收藏夹"
+					}
+				},
+				{
+					"path": "page/hexiao",
+					"style": {
+						"navigationBarTitleText": "核销"
+					}
+				},
+				{
+					"path": "page/jiedian",
+					"style": {
+						"navigationBarTitleText": "我的节点"
+					}
+				},
+				{
+					"path": "page/myCoupon",
+					"style": {
+						"navigationBarTitleText": "我的优惠券"
+					}
+				},
+				{
+					"path": "page/mygx",
+					"style": {
+						"navigationBarTitleText": "我的贡献"
+					}
+				},
+				{
+					"path": "page/notice",
+					"style": {
+						"navigationBarTitleText": "通知"
+					}
+				},
+				{
+					"path": "page/promoter_order",
+					"style": {
+						"navigationBarTitleText": "推广订单"
+					}
+				},
+				{
+					"path": "page/promoter_rank",
+					"style": {
+						"navigationBarTitleText": "佣金排行榜"
+					}
+				},
+				{
+					"path": "page/rank",
+					"style": {
+						"navigationBarTitleText": "推荐排行榜"
+					}
+				},
+				{
+					"path": "page/scoreAccumulate",
+					"style": {
+						"navigationBarTitleText": "积分明细"
+					}
+				},
+				{
+					"path": "page/shareQrCode",
+					"style": {
+						"navigationBarTitleText": "邀请好友"
+					}
+				},
+				{
+					"path": "page/team",
+					"style": {
+						"navigationBarTitleText": "我的推广"
+					}
+				},
+				{
+					"path": "page/user_promotion",
+					"style": {
+						"navigationBarTitleText": "推广中心"
+					}
+				},
+				{
+					"path": "page/withdrawal",
+					"style": {
+						"navigationBarTitleText": "奖励提现"
+					}
+				},
+				{
+					"path": "page/couponList",
+					"style": {
+						"navigationBarTitleText": "领券大厅"
+					}
+				},
+				{
+					"path": "page/zhuanyue",
+					"style": {
+						"navigationBarTitleText": "",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "page/merchant/merchant",
+					"style": {
+						"navigationBarTitleText": "门店管理"
+					}
+				},
+				{
+					"path": "page/merchant/finance",
+					"style": {
+						"navigationBarTitleText": "店铺财务"
+
+					}
+				},
+				{
+					"path": "page/merchant/orderDetail",
+					"style": {
+						"navigationBarTitleText": "订单详情"
+
+					}
+				},
+				{
+					"path": "page/merchant/order",
+					"style": {
+						"navigationBarTitleText": "订单管理"
+
+					}
+				},
+				{
+					"path": "page/merchant/withdrawal",
+					"style": {
+						"navigationBarTitleText": "营业额提现"
+
+					}
+				}
+
+			]
+		}
+	],
+	"globalStyle": {
+		//#ifdef H5
+		"navigationStyle": "custom",
+		//#endif
+		"navigationBarTextStyle": "white",
+		"navigationBarTitleText": "玲卿+",
+		"navigationBarBackgroundColor": "#F75022",
+		"backgroundColor": "#f8f8f8"
+
+	},
+	"tabBar": {
+		"color": "#666666",
+		"selectedColor": "#f65067",
+		"borderStyle": "black",
+		"backgroundColor": "#ffffff",
+		"list": [{
+				"pagePath": "pages/index/index",
+				"iconPath": "static/tabBar/tab-home.png",
+				"selectedIconPath": "static/tabBar/tab-home-current.png",
+				"text": "首页"
+			},
+			// {
+			// 	"pagePath": "pages/category/category",
+			// 	"iconPath": "static/tabBar/tab-sy.png",
+			// 	"selectedIconPath": "static/tabBar/tab-sy-current.png",
+			// 	"text": "实用商城"
+			// },
+			{
+				"pagePath": "pages/store/index",
+				"iconPath": "static/tabBar/tab-cate.png",
+				"selectedIconPath": "static/tabBar/tab-cate-current.png",
+				"text": "好店"
+			},
+			{
+				"pagePath": "pages/cart/cart",
+				"iconPath": "static/tabBar/tab-cart.png",
+				"selectedIconPath": "static/tabBar/tab-cart-current.png",
+				"text": "购物车"
+			},
+			{
+				"pagePath": "pages/user/user",
+				"iconPath": "static/tabBar/tab-my.png",
+				"selectedIconPath": "static/tabBar/tab-my-current.png",
+				"text": "我的"
+			}
+		]
+	}
+}

+ 607 - 0
pages/cart/cart.vue

@@ -0,0 +1,607 @@
+<template>
+	<view class="container">
+		<!-- 空白页 -->
+		<view v-if="!hasLogin || empty === true" class="empty">
+			<image src="/static/error/emptyCart.png" class="emptyImg" mode="aspectFit"></image>
+			<view v-if="hasLogin" class="empty-tips">
+				空空如也
+				<navigator class="navigator" v-if="hasLogin" url="../index/index" open-type="switchTab">随便逛逛>
+				</navigator>
+			</view>
+			<view v-else class="empty-tips">
+				空空如也
+				<view class="navigator" @click="navToLogin">去登陆></view>
+			</view>
+		</view>
+		<view v-else>
+			<!-- 购物车头部 -->
+			<view class="cart-hand flex">
+				<view class="hand-tit">
+					购物车共
+					<text>{{ ' ' + cartList.length }} 件</text>
+					商品
+				</view>
+				<view class="hand-btn" @click="clearCart()">清空购物车</view>
+			</view>
+			<!-- 列表 -->
+			<view class="cart-list">
+				<block v-for="(item, index) in cartList" :key="item.id">
+					<view class="cart-item" :class="{ 'b-b': index !== cartList.length - 1 }">
+						<view class="image-wrapper">
+							<image :src="item.productInfo.image" :class="[item.loaded]" mode="aspectFill" lazy-load
+								@load="onImageLoad('cartList', index)" @error="onImageError('cartList', index)"></image>
+							<view class="iconfont iconroundcheckfill checkbox" :class="{ checked: item.checked }"
+								@click="check('item', index)"></view>
+						</view>
+						<view class="item-right">
+							<text class="clamp title">{{ item.productInfo.store_name }}</text>
+							<text class="attr">{{ item.productInfo.attrInfo.suk }}</text>
+							<text class="price">¥{{ item.truePrice }}</text>
+							<!-- <uni-number-box
+								class="step"
+								:min="1"
+								:max="item.productInfo.stock"
+								:value="item.cart_num > item.productInfo.stock ? item.productInfo.stock : item.cart_num"
+								:isMax="item.cart_num >= item.productInfo.stock ? true : false"
+								:isMin="item.cart_num === 1"
+								:index="index"
+								@eventChange="numberChange"
+							></uni-number-box> -->
+							<view class="munbox flex">
+								<image src="../../static/icon/reduce.png" mode="" @click="reduce(item, index)"></image>
+								<input type="number" :value="item.cart_num" disabled />
+								<image src="../../static/icon/add.png" mode="" @click="add(item)"></image>
+							</view>
+						</view>
+						<!-- <text class="del-btn iconfont iconclose" @click="deleteCartItem(index)"></text> -->
+					</view>
+				</block>
+			</view>
+			<!-- 底部菜单栏 -->
+			<view class="action-section">
+				<view class="checkbox">
+					<view class="iconfont iconroundcheckfill icon-checked-box" @click="check('all')"
+						:class="{ 'icon-checked': allChecked }"></view>
+					<!-- <view class="clear-btn" @click="allChecked ? clearCart() : ''" :class="{ show: allChecked }"><text>清空</text></view> -->
+				</view>
+				<view class="total-box">
+					<text class="price">¥{{ total }}</text>
+					<!-- <text class="coupon">
+						已优惠
+						<text>74.35</text>
+						元
+					</text> -->
+				</view>
+				<button type="primary" class="no-border confirm-btn" @click="createOrder">结算</button>
+			</view>
+		</view>
+		<!-- <u-tabbar activeColor="#EE0979" v-model="current" :list="tabbar" :mid-button="true"></u-tabbar> -->
+	</view>
+</template>
+
+<script>
+	// #ifdef H5
+	import weixinObj from '@/plugin/jweixin-module/index.js';
+	// #endif
+	import {
+		getCartList,
+		getCartNum,
+		cartDel
+	} from '@/api/user.js';
+	import {
+		mapState
+	} from 'vuex';
+	import uniNumberBox from '@/components/uni-number-box.vue';
+	import {
+		saveUrl,
+		interceptor
+	} from '@/utils/loginUtils.js';
+	import {
+		tabbar
+	} from '@/utils/tabbar.js';
+	export default {
+		components: {
+			uniNumberBox
+		},
+		data() {
+			return {
+				tabbar: tabbar,
+				current: 3,
+				total: 0, //总价格
+				allChecked: false, //全选状态  true|false
+				empty: false, //空白页现实  true|false
+				cartList: []
+			};
+		},
+		onShow() {
+			// 只有登录时才加载数据
+			if (this.hasLogin) {
+				this.loadData();
+			}
+			// #ifdef H5
+			weixinObj.hideAllNonBaseMenuItem();
+			// #endif
+			
+		},
+		watch: {
+			//显示空白页
+			cartList(e) {
+				let empty = e.length === 0 ? true : false;
+				if (this.empty !== empty) {
+					this.empty = empty;
+				}
+			}
+		},
+		computed: {
+			...mapState('user', ['hasLogin'])
+		},
+		methods: {
+			reduce(item, index) {
+				if (item.cart_num == 1) {
+					uni.showModal({
+						content: '删除该商品?',
+						success: e => {
+							if (e.confirm) {
+								this.deleteCartItem(index);
+							}
+						}
+					});
+				} else {
+					item.cart_num--;
+					this.newNumberChange(item);
+				}
+			},
+			add(item) {
+				console.log(item);
+				if (item.productInfo.stock > item.cart_num) {
+					item.cart_num++;
+					this.newNumberChange(item);
+				} else {
+					return;
+				}
+			},
+			//请求数据
+			async loadData() {
+				let obj = this;
+				getCartList({})
+					.then(function(e) {
+						// 获取当前购物车物品增加数量
+						let nub = obj.cartList.length;
+						// 获取之前对象数组
+						let aArray = obj.cartList.reverse();
+						// 获取返回数据对象数组
+						let bArray = e.data.valid.reverse();
+						obj.cartList = bArray
+							.map((item, ind) => {
+								// 设置返回数据默认为勾选状态
+								item.checked = true;
+								// 获取相同数组之前对象的数据
+								let carlist = aArray[ind];
+								// 判断之前是否已经加载完毕
+								if (carlist && carlist.loaded == 'loaded') {
+									item.loaded = 'loaded';
+								}
+								return item;
+							})
+							.reverse();
+						obj.calcTotal(); //计算总价
+					})
+					.catch(function(e) {
+						console.log(e);
+					});
+			},
+			//监听image加载完成
+			onImageLoad(key, index) {
+				// 修改载入完成后图片class样式
+				this.$set(this[key][index], 'loaded', 'loaded');
+			},
+			//监听image加载失败
+			onImageError(key, index) {
+				this[key][index].image = '/static/error/errorImage.jpg';
+			},
+			// 跳转到登录页
+			navToLogin() {
+				// 保存地址
+				saveUrl();
+				// 登录拦截
+				interceptor();
+			},
+			//选中状态处理
+			check(type, index) {
+				if (type === 'item') {
+					this.cartList[index].checked = !this.cartList[index].checked;
+				} else {
+					const checked = !this.allChecked;
+					const list = this.cartList;
+					list.forEach(item => {
+						item.checked = checked;
+					});
+					this.allChecked = checked;
+				}
+				this.calcTotal(type);
+			},
+			//数量
+			numberChange(data) {
+				let arr = this.cartList[data.index];
+				arr.cart_num = data.number;
+				getCartNum({
+						id: arr.id,
+						number: data.number
+					})
+					.then(e => {
+						console.log(e);
+					})
+					.catch(function(e) {
+						console.log(e);
+					});
+				this.calcTotal();
+			},
+			newNumberChange(item) {
+				getCartNum({
+						id: item.id,
+						number: item.cart_num
+					})
+					.then(e => {
+						console.log(e);
+					})
+					.catch(function(e) {
+						console.log(e);
+					});
+				this.calcTotal();
+			},
+			//删除
+			deleteCartItem(index) {
+				let list = this.cartList;
+				let row = list[index];
+				let id = row.id;
+				cartDel({
+					ids: id
+				});
+				this.cartList.splice(index, 1);
+				uni.hideLoading();
+				this.calcTotal();
+			},
+			//清空
+			clearCart() {
+				uni.showModal({
+					content: '清空购物车?',
+					success: e => {
+						if (e.confirm) {
+							let st = this.cartList.map(e => {
+								return e.id;
+							});
+							cartDel({
+								ids: st.join(',')
+							}).then(e => {
+								console.log(e);
+							});
+							this.cartList = [];
+						}
+					}
+				});
+			},
+			//计算总价
+			calcTotal() {
+				let list = this.cartList;
+				if (list.length === 0) {
+					this.empty = true;
+					return;
+				}
+				let total = 0;
+				let checked = true;
+				list.forEach(item => {
+					if (item.checked === true) {
+						total += item.truePrice * item.cart_num;
+					} else if (checked === true) {
+						checked = false;
+					}
+				});
+				this.allChecked = checked;
+				this.total = Number(total.toFixed(2));
+			},
+			//创建订单
+			createOrder() {
+				let list = this.cartList;
+				let goodsData = [];
+				list.forEach(item => {
+					if (item.checked) {
+						goodsData.push(item.id);
+					}
+				});
+
+				uni.navigateTo({
+					url: '/pages/order/createOrder?id=' + goodsData.join(',')
+				});
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		padding-bottom: 134rpx;
+		background-color: $page-color-base;
+
+		/* 空白页 */
+		.empty {
+			position: fixed;
+			left: 0;
+			top: 0;
+			width: 100%;
+			height: 100vh;
+			padding-bottom: 100rpx;
+			display: flex;
+			justify-content: center;
+			flex-direction: column;
+			align-items: center;
+			background: #fff;
+
+			.emptyImg {
+				width: 300rpx;
+				height: 250rpx;
+				margin-bottom: 30rpx;
+			}
+
+			.empty-tips {
+				display: flex;
+				font-size: $font-sm + 2rpx;
+				color: $font-color-disabled;
+
+				.navigator {
+					color: #f65067;
+					margin-left: 16rpx;
+				}
+			}
+		}
+	}
+
+	/* 购物车列表项 */
+	.cart-item {
+		width: 710rpx;
+		height: 210rpx;
+		background: #ffffff;
+		box-shadow: 0px 0px 10rpx 0rpx rgba(0, 0, 0, 0.1);
+		border-radius: 10rpx;
+		margin: 20rpx auto;
+
+		display: flex;
+		position: relative;
+		padding: 30rpx 26rpx 30rpx 80rpx;
+
+		.image-wrapper {
+			width: 150rpx;
+			height: 150rpx;
+			flex-shrink: 0;
+			position: relative;
+
+			image {
+				border-radius: 8rpx;
+			}
+		}
+
+		.checkbox {
+			position: absolute;
+			top: 0;
+			bottom: 0;
+			left: -65rpx;
+			margin: auto 0;
+			height: 50rpx;
+			z-index: 8;
+			font-size: 44rpx;
+			line-height: 1;
+			padding: 4rpx;
+			color: $font-color-disabled;
+			background: #fff;
+			border-radius: 50px;
+		}
+
+		.item-right {
+			display: flex;
+			flex-direction: column;
+			flex: 1;
+			overflow: hidden;
+			position: relative;
+			padding-left: 30rpx;
+
+			.munbox {
+				width: 144rpx;
+				height: 44rpx;
+				position: absolute;
+				bottom: 0;
+				right: 0;
+
+				input {
+					display: inline-block;
+					text-align: center;
+				}
+
+				image {
+					flex-shrink: 0;
+					width: 44rpx;
+					height: 44rpx;
+				}
+			}
+
+			.title,
+			.price {
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				height: 40rpx;
+				line-height: 40rpx;
+			}
+
+			.attr {
+				font-size: $font-sm + 2rpx;
+				color: $font-color-light;
+				height: 50rpx;
+				line-height: 50rpx;
+
+				font-size: 26rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #999999;
+			}
+
+			.price {
+				// height: 50rpx;
+				// line-height: 50rpx;
+				padding-top: 20rpx;
+				font-size: 34rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #ff4c4c;
+			}
+
+			.step {
+				margin-top: 20rpx;
+			}
+
+			.title {
+				font-size: 34rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #333333;
+			}
+		}
+
+		.del-btn {
+			padding: 4rpx 10rpx;
+			font-size: 34rpx;
+			height: 50rpx;
+			color: $font-color-light;
+		}
+	}
+
+	/* 底部栏 */
+	.action-section {
+		/* #ifdef H5 */
+		margin-bottom: 100rpx;
+		/* #endif */
+		position: fixed;
+		left: 30rpx;
+		bottom: 30rpx;
+		z-index: 95;
+		display: flex;
+		align-items: center;
+		width: 690rpx;
+		height: 100rpx;
+		padding: 0 30rpx;
+		background: rgba(255, 255, 255, 0.9);
+		box-shadow: 0 0 20rpx 0 rgba(0, 0, 0, 0.5);
+		border-radius: 16rpx;
+
+		.checkbox {
+			height: 52rpx;
+			position: relative;
+
+			.icon-checked-box {
+				border-radius: 50rpx;
+				background-color: #ffffff;
+				width: 52rpx;
+				height: 100%;
+				position: relative;
+				z-index: 5;
+				font-size: 53rpx;
+				line-height: 1;
+				color: $font-color-light;
+			}
+
+			.icon-checked {
+				color: $base-color;
+			}
+		}
+
+		.clear-btn {
+			position: absolute;
+			left: 26rpx;
+			top: 0;
+			z-index: 4;
+			width: 0;
+			height: 52rpx;
+			line-height: 52rpx;
+			padding-left: 38rpx;
+			font-size: $font-base;
+			color: #fff;
+			background: $font-color-disabled;
+			border-radius: 0 50px 50px 0;
+			opacity: 0;
+			transition: 0.2s;
+
+			&.show {
+				opacity: 1;
+				width: 120rpx;
+			}
+		}
+
+		.total-box {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			text-align: right;
+			padding-right: 40rpx;
+
+			.price {
+				font-size: $font-lg;
+				color: $font-color-dark;
+			}
+
+			.coupon {
+				font-size: $font-sm;
+				color: $font-color-light;
+
+				text {
+					color: $font-color-dark;
+				}
+			}
+		}
+
+		.confirm-btn {
+			padding: 0 38rpx;
+			margin: 0;
+			border-radius: 100px;
+			height: 76rpx;
+			line-height: 76rpx;
+			font-size: $font-base + 2rpx;
+			background: #f75022;
+			color: #fff;
+		}
+	}
+
+	/* 复选框选中状态 */
+	.action-section .checkbox.checked,
+	.cart-item .checkbox.checked {
+		color: $base-color;
+	}
+
+	.cart-hand {
+		width: 750rpx;
+		height: 88rpx;
+		background: #ffffff;
+		font-size: 30rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #333333;
+		line-height: 88rpx;
+		padding-left: 28rpx;
+		padding-right: 26rpx;
+
+		.hand-tit {
+			text {
+				color: #ff4c4c;
+			}
+		}
+
+		.hand-btn {
+			width: 164rpx;
+			height: 62rpx;
+			border: 2rpx solid #ff4c4c;
+			border-radius: 31rpx;
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #ff4c4c;
+			line-height: 62rpx;
+			text-align: center;
+		}
+	}
+</style>

+ 319 - 0
pages/category/business.vue

@@ -0,0 +1,319 @@
+<template>
+	<view class="center">
+		<!-- <view class="search-top">
+			<view class="search flex">
+				<view class="shop-name clamp">椒江区</view>
+				<image class="shop-jt" src="../../static/icon/dsjh.png" mode=""></image>
+				<view class="input-box flex">
+					<view class=" input-content flex">
+						<image src="../../static/icon/search-h.png" mode="" class="" style="width: 32rpx;height: 32rpx;">
+						</image>
+						<view class="input"><input type="text" value="输入关键字搜索" /></view>
+					</view>
+				</view>
+				<view class="search-tit" @click.stop="clickSearch">
+					搜索
+				</view>
+			</view>
+			<view class="shop">
+				<view class="shop-title">
+					<view class="shop-item">
+						<view class="sitem-font">智能排序</view>
+						<image class="jt-down" src="https://hy.liuniu946.com/app/index/index06.png" mode=""></image>
+					</view>
+					<view class="shop-item">
+						<view class="sitem-font">位置距离</view>
+						<image class="jt-down" src="https://hy.liuniu946.com/app/index/index06.png" mode=""></image>
+					</view>
+					<view class="shop-item">
+						<view class="sitem-font">折扣优惠</view>
+						<image class="jt-down" src="https://hy.liuniu946.com/app/index/index06.png" mode=""></image>
+					</view>
+					<view class="shop-item">
+						<view class="sitem-font">筛选</view>
+						<image class="jt-down" src="https://hy.liuniu946.com/app/index/index06.png" mode=""></image>
+					</view>
+				</view>
+			</view>
+		</view> -->
+		<!-- <view class="jg" style="height: 180rpx;">
+			
+		</view>
+		<view class="shop">
+			<view class="shop-main flex" v-for="(item, index) in 100" :key="index">
+				<image class="main-left" src="https://hy.liuniu946.com/app/index/index13.png" mode=""></image>
+				<view class="main-right flex">
+					<view class="shopm-info">
+						<view class="shopm-title">
+							<view class="shopmt-font clamp">李家烤肉11111111111111111111111111111111111111111111</view>
+							<view class="shopmt-good">荐</view>
+						</view>
+						<view class="address">椒江区市府大道200号</view>
+						<view class="shopmt-tip">消费最高可得10%积分</view>
+					</view>
+					<view class="right">
+						<view class="mright-top">
+							<image class="mrt-image" src="https://hy.liuniu946.com/app/index/index10.png" mode=""></image>
+							<view class="mrt-font">距离0.3KM</view>
+						</view>
+						<view class="mright-bottom">
+							<image class="mrb-item" src="https://hy.liuniu946.com/app/index/index14.png" mode=""></image>
+							<image class="mrb-item" src="https://hy.liuniu946.com/app/index/index11.png" mode=""></image>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view> -->
+		<view class="kong">
+			<u-empty mode="data" text="敬请期待"></u-empty>
+		</view>
+		<!-- <u-tabbar activeColor="#EE0979" v-model="current" :list="tabbar" :mid-button="true"></u-tabbar> -->
+	</view>
+</template>
+
+<script>
+	import {
+		tabbar
+	} from '@/utils/tabbar.js';
+	export default {
+		data() {
+			return {
+				tabbar: tabbar,
+				current: 1
+			};
+		},
+	};
+</script>
+
+<style lang="less">
+	.kong {
+		height: 100vh;
+	}
+	.search-top {
+		position: fixed;
+		top: 0;
+		z-index: 99;
+	}
+	.search {
+		justify-content: flex-start;
+		padding: 10rpx 32rpx 20rpx;
+		align-items: center;
+		background-color: #fff;
+
+		.address {
+			width: 32rpx;
+			height: 38rpx;
+		}
+
+		.shop-name {
+			height: 38rpx;
+			position: relative;
+			top: -4rpx;
+			z-index: 100;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #666;
+			padding-left: 10rpx;
+		}
+
+		.shop-jt {
+			margin-left: 8rpx;
+			width: 16rpx;
+			height: 10rpx;
+		}
+
+		.input-box {
+			margin-left: 10rpx;
+			position: relative;
+			z-index: 99;
+			width: 520rpx;
+			height: 60rpx;
+			// background: rgba(255, 255, 255, 0.4);
+			border-radius: 30rpx;
+
+			.input-content {
+				position: relative;
+				z-index: 11;
+				// border-radius: 99rpx;
+				flex-grow: 1;
+				padding: 5rpx 30rpx;
+				background: #F6F6F6;
+
+				.iconsearch {
+					font-size: 50rpx;
+					color: #ffffff;
+				}
+
+				.input {
+					margin-left: 19rpx;
+					flex-grow: 1;
+					color: #666;
+					background: #F6F6F6;
+
+					input {
+						font-size: 28rpx;
+					}
+				}
+			}
+
+			.input-button {
+				padding-left: 20rpx;
+				// font-size: $font-base;
+				height: 100%;
+			}
+		}
+
+		.search-tit {
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #666666;
+			flex-shrink: 0;
+			padding-left: 10rpx;
+		}
+	}
+
+	.shop {
+		// margin-top: 20rpx;
+		background: #ffffff;
+		padding: 0 12rpx;
+
+		.shop-title {
+			padding: 30rpx 0 20rpx;
+			display: flex;
+			align-items: center;
+			border-bottom: 1px solid #e3e6e7;
+
+			.shop-item {
+				width: 25%;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+
+				.sitem-font {
+					font-size: 26rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #333333;
+				}
+
+				.jt-down {
+					width: 10rpx;
+					height: 8rpx;
+					margin-left: 12rpx;
+				}
+			}
+		}
+
+		.shop-main {
+			padding: 32rpx 18rpx 0 12rpx;
+			align-items: flex-start;
+			justify-content: flex-start;
+
+			.main-left {
+				width: 180rpx;
+				height: 180rpx;
+				border-radius: 10rpx;
+			}
+
+			.main-right {
+				width: 500rpx;
+				justify-content: space-between;
+				align-items: flex-start;
+				margin-left: 20rpx;
+				padding: 13rpx 0 35rpx;
+				border-bottom: 1px solid #eaeced;
+
+				.shopm-info {
+					max-width: 60%;
+					line-height: 1;
+
+					.shopm-title {
+						display: flex;
+						justify-content: flex-start;
+
+						.shopmt-font {
+							font-size: 34rpx;
+							font-family: PingFang SC;
+							font-weight: bold;
+							color: #333333;
+						}
+
+						.shopmt-good {
+							margin-left: 6rpx;
+							width: 30rpx;
+							height: 30rpx;
+							border: 1px solid #ff4c4c;
+							border-radius: 5rpx;
+							font-size: 20rpx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #ff4c4c;
+							text-align: center;
+							line-height: 30rpx;
+						}
+					}
+
+					.address {
+						margin-top: 16rpx;
+						font-size: 24rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #666666;
+					}
+
+					.shopmt-tip {
+						position: relative;
+						margin-top: 52rpx;
+						padding: 8rpx;
+						background: #fcf3f0;
+						border-radius: 16rpx 16rpx 16rpx 0px;
+						font-size: 20rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #ff440d;
+					}
+				}
+
+				.right {
+					height: 100%;
+					margin-top: 5rpx;
+					display: flex;
+					flex-direction: column;
+
+					.mright-top {
+						display: flex;
+						justify-content: flex-end;
+						align-items: center;
+
+						.mrt-image {
+							width: 20rpx;
+							height: 28rpx;
+						}
+
+						.mrt-font {
+							margin-left: 8rpx;
+							font-size: 22rpx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #666666;
+						}
+					}
+
+					.mright-bottom {
+						margin-top: 80rpx;
+						display: flex;
+						justify-content: flex-end;
+
+						.mrb-item {
+							width: 46rpx;
+							height: 46rpx;
+							margin-left: 14rpx;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 192 - 0
pages/category/category.vue

@@ -0,0 +1,192 @@
+<template>
+	<view class="content">
+		<view class="" style="height: 20rpx;"></view>
+		<template v-for="item in flist">
+			<view class="cate-item"  v-if="item.pic" @click="navto('/pages/product/list?fid='+item.id)">
+				<image :src="item.pic" mode="widthFix"></image>
+			</view>
+		</template>
+	</view>
+</template>
+<script>
+	import { getCategoryList,getProducts } from '@/api/product.js';
+	export default {
+		data() {
+			return {
+				sizeCalcState: false,
+				tabScrollTop: 0,
+				currentId: 9,
+				flist: [],
+				height: '',
+				currentIndex: 0,
+				list: [],
+				page: 1,
+				limit: 20,
+				loadingType: 'more',
+				loaded: false,
+			};
+		},
+		onLoad() {
+			this.loadData();
+		},
+		// 监听导航栏输入框点击事件
+		onNavigationBarSearchInputClicked(e) {
+			uni.navigateTo({
+				url: '/pages/product/search'
+			});
+		},
+		onReady(res) {
+			
+		},
+		methods: {
+			leftClick(index) {
+				this.currentIndex = index
+				this.getProducts('reload')
+			},
+			getProducts(type) {
+				let index = this.flist[this.currentIndex].id
+				if(type == 'reload') {
+					this.list = []
+					this.page = 1
+					this.loadingType = 'more'
+					this.loaded = false
+				}
+				if(this.loadingType == 'loading' ) {
+					return
+				}
+				if( this.loadingType == 'noMore') {
+					
+					if(this.currentIndex < (this.flist.length - 1)) {
+						console.log(this.currentIndex)
+						this.currentIndex++
+						this.list = []
+						this.page = 1
+						this.loadingType = 'more'
+						this.loaded = false
+						this.getProducts()
+					}else {
+						console.log('ddd')
+					}
+					
+				}
+				this.loadingType = 'loading'
+				getProducts({
+					cid: index
+				}).then(res => {
+					this.list = this.list.concat(res.data)
+					if(this.limit == res.data.length) {
+						this.loadingType = 'more'
+					}else {
+						this.loadingType = 'noMore'
+					}
+					this.loaded = true
+				})
+			},
+			// 载入数据
+			async loadData() {
+				let obj = this;
+				getCategoryList({})
+					.then(({ data }) => {
+						obj.flist = data.map(function(s) {
+							return s;
+						});
+						// obj.getProducts()
+					})
+					.catch(err => {
+						console.log(err);
+					});
+			},
+			//一级分类点击
+			tabtap(item) {
+				console.log(item);
+				// 判断有没有初始化页面高度对象数据
+				if (!this.sizeCalcState) {
+					this.calcSize();
+				}
+				// 获取当前点击的id
+				this.currentId = item.id;
+				console.log(item.top);
+				this.tabScrollTop = item.top;
+				console.log(this.tabScrollTop);
+			},
+			//右侧栏滚动
+			asideScroll(e) {
+				// 判断有没有初始化页面高度对象数据
+				if (!this.sizeCalcState) {
+					this.calcSize();
+				}
+				let scrollTop = e.detail.scrollTop;
+				let box = 0; //列表包裹框高度初始化
+				let bottom = 10; //距离页面底部多少像素左侧列表切换到最后一个一级分类
+				// 查询当前页面对象
+				let view = uni.createSelectorQuery().select('.content');
+				view.fields(
+					{
+						id: true,
+						dataset: true,
+						rect: true,
+						size: true,
+						scrollOffset: true
+					},
+					function(e) {
+						// 保存包裹框高度
+						box = e.height;
+					}
+				).exec();
+				// 获取所有距离顶部大于滚轮距离页面高度的所有分类
+				let tabs = this.flist.filter(item =>( item.top-10) <= scrollTop).reverse();
+				if (tabs.length > 0) {
+					// 判断是否已经到达滚轮底部
+					if (box + scrollTop + bottom >= e.detail.scrollHeight) {
+						this.currentId = this.flist[this.flist.length - 1].id;
+					} else {
+						this.currentId = tabs[0].id;
+					}
+				}
+			},
+			//计算右侧栏每个tab的高度等信息
+			calcSize() {
+				let h = 0;
+				this.flist.forEach(item => {
+					let view = uni.createSelectorQuery().select('#main-' + item.id);
+					view.fields(
+						{
+							size: true
+						},
+						data => {
+							item.top = h;
+							h += data.height;
+							item.bottom = h;
+						}
+					).exec();
+				});
+				this.sizeCalcState = true;
+			},
+			navToList(sid, tid) {
+				// 点击导航跳转到详细页面
+				uni.navigateTo({
+					url: '/pages/product/list?fid='+this.currentId+'&sid='+sid+'&tid='+tid
+				});
+			},
+			navto(url) {
+				uni.navigateTo({
+					url
+				})
+			}
+		}
+	};
+</script>
+<style lang="scss">
+	page {
+		height: auto;
+		min-height: 100%;
+		background-color: #fff;
+	}
+	.cate-item {
+		width: 717rpx;
+		margin:0 auto 30rpx;
+		image {
+			width: 100%;
+		}
+	}
+</style>

+ 29 - 0
pages/game/game.vue

@@ -0,0 +1,29 @@
+<template>
+	<view class="center">
+		<view class="kong">
+			<u-empty mode="data" text="敬请期待"></u-empty>
+		</view>
+		
+		<!-- <u-tabbar activeColor="#EE0979" v-model="current" :list="tabbar" :mid-button="true"></u-tabbar> -->
+	</view>
+</template>
+
+<script>
+import { tabbar } from '@/utils/tabbar.js';
+export default {
+	data() {
+		return {
+			tabbar: tabbar,
+			current: 2
+		};
+	}
+};
+</script>
+
+<style lang="less">
+	.kong {
+		
+		height: 100vh;
+		width: 750rpx;
+	}
+</style>

+ 1205 - 0
pages/index/index.vue

@@ -0,0 +1,1205 @@
+<template>
+	<view class="container">
+		<view class="carousel-section">
+			<!-- 背景色区域 -->
+			<view class="bg"></view>
+			<!-- 标题栏和状态栏占位符 -->
+			<!-- #ifdef H5 -->
+			<view class="titleNview-placing"></view>
+			<!-- #endif -->
+
+			<!-- 搜素栏 -->
+			<view class="search flex">
+				<view class="input-box flex" @click.stop="clickSearch">
+					<view class=" input-content flex">
+						<view class="iconfont iconsearch"></view>
+						<view class="input"><input type="text" disabled value="好物从搜索开始" /></view>
+					</view>
+				</view>
+			</view>
+			<swiper class="carousel" autoplay="true" duration="400" interval="5000" @change="swiperChange"
+				:indicator-dots="true" indicator-active-color="#FFFFFF">
+				<swiper-item v-for="(item, index) in carouselList" :key="index" class="carousel-item">
+					<image :src="item.pic" mode="aspectFill" @click="bannerNavToUrl(item)"></image>
+				</swiper-item>
+			</swiper>
+		</view>
+		<!-- <view class="navbar">
+			<view class="navbar-box flex">
+				<view class="navbar-item" @click="navTo('/pages/product/list')">
+					<image class="nitem-image" src="../../static/sy/sy12.png" mode=""></image>
+					<view class="nitem-font">全部分类</view>
+				</view>
+				<view class="navbar-item" @click="navTo('/pages/product/groupBooking/index')">
+					<image class="nitem-image" src="../../static/sy/sy14.png" mode=""></image>
+					<view class="nitem-font">超值拼团</view>
+				</view>
+				<view class="navbar-item" @click="navTo('/user/page/couponList')">
+					<image class="nitem-image" src="../../static/sy/sy15.png" mode=""></image>
+					<view class="nitem-font">优惠券大厅</view>
+				</view>
+				<view class="navbar-item" @click="navTo('/user/page/shareQrCode')">
+					<image class="nitem-image" src="../../static/sy/sy13.png" mode=""></image>
+					<view class="nitem-font">邀请有礼</view>
+				</view>
+			</view>
+		</view> -->
+		<seckill></seckill>
+		<sx :list="firstList"></sx>
+		<!-- #ifdef MP-WEIXIN -->
+		<image src="https://hy.liuniu946.com/static/image/living.png" mode="widthFix" style="display: block;width: 690rpx;margin: 20rpx auto;" @click="navTo('/pages/index/living')"></image>
+		<!-- #endif -->
+		<store></store>
+		<template v-for="item in flist">
+			<view class="cate-item" v-if="item.pic" @click="navTo('/pages/product/list?fid='+item.id)">
+				<image :src="item.pic" mode="widthFix"></image>
+			</view>
+		</template>
+		<!-- <view class="product-box">
+			<view class="product-title">
+				<view class="bb">
+				</view>
+				<view class="pt-title">猜你喜欢</view>
+				<view class="bb">
+				</view>
+			</view>
+			<view class="hotgoods">
+				<view class="hotgoods-item" v-for="item in firstList" :key="item.id" @click="navToDetailPage(item)">
+					<view class="image-wrapper">
+
+						<image class="image" :src="item.image" mode="scaleToFill"></image>
+					</view>
+					<view class="hotgoods-box">
+						<view class="title clamp2">{{ item.store_name }}</view>
+						<view class="titlee">{{ item.store_name }}</view>
+					</view>
+					<view class="hot-price">
+						<view class="price">
+							<text class="font-size-sm">¥</text>
+							{{ item.price * 1 }}
+						</view>
+						<view class="yuanPrice">原价{{ item.price }}</view>
+					</view>
+				</view>
+			</view>
+		</view> -->
+		<!-- <u-tabbar activeColor="#434A54" v-model="current" :list="tabbar" :mid-button="true"></u-tabbar> -->
+	</view>
+</template>
+
+<script>
+	// #ifdef H5
+	import jWeixin from "@/plugin/jweixin-module/index.js";
+	// #endif
+	import {
+		shareFun
+	} from '@/utils/wxAuthorized.js'
+	import {
+		lookSubpoints,
+		lookOneself
+	} from '../../api/user.js';
+	import seckill from '../../components/seckill/seckill.vue';
+	import sx from '../../components/sx/index.vue';
+	import store from '../../components/store/store.vue';
+	import {
+		loadIndexs,
+		getVip,
+		mer,
+		getZbList
+	} from '@/api/index.js';
+	import {
+		getUserInfo,
+		spread
+	} from '@/api/user.js';
+	import {
+		setCoupons
+	} from '@/api/functionalUnit.js';
+	import {
+		getBargainList,
+		getCategoryList
+	} from '@/api/product.js';
+	import {
+		interceptor
+	} from '@/utils/loginUtils';
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex';
+	import {
+		tabbar
+	} from '@/utils/tabbar.js';
+	// #ifdef H5
+	import {
+		weixindata,
+		shareLoad
+	} from '@/utils/wxAuthorized';
+	// #endif
+	export default {
+		components: {
+			seckill,
+			sx,
+			store
+		},
+		data() {
+			return {
+				flist: [],
+				// isDa:true,
+				tabbar: tabbar,
+				current: 0,
+				shareShow: false, //分享海报
+				pageProportion: 0, //保存页面基于750宽度的比例
+				swiperHeight: 0,
+				checkid: 0,
+				titleNViewBackground: '',
+				longitude: 0, //经度
+				latitude: 0, //纬度
+				swiperCurrent: 0,
+				swiperLength: 0,
+				carouselList: [], //轮播列表
+				bastList: [], //会员礼包
+				shoplist: [], //商店列表
+				page: 1,
+				limit: 5,
+				vipList: [], //vip商品
+				firstList: [],
+			};
+		},
+		computed: {
+			...mapState(['loginInterceptor', 'baseURL']),
+			...mapState('user', ['hasLogin', 'userInfo'])
+		},
+		onLoad: function(option) {
+			this.getZhiboList()
+			// #ifdef  MP-WEIXIN
+			wx.showShareMenu({
+				withShareTicket: true,
+				menus: ["shareAppMessage", "shareTimeline"]
+			})
+			//#endif
+			// #ifdef MP
+			if (option.scene) {
+				// 存储小程序邀请人
+				uni.setStorageSync('puid', option.scene)
+			}
+			// #endif
+			// #ifdef H5
+			if (option.spread) {
+				console.log(option.spread, "邀请人2")
+				uni.setStorageSync('spread', option.spread)
+				if (this.hasLogin) {
+					spread({
+						puid: option.spread
+					}).then(res => {
+						console.log(res);
+					})
+				}
+
+			}
+			// #endif
+			// #ifdef MP-WEIXIN
+			if (option.spread) {
+				console.log(option.spread, "邀请人2")
+				uni.setStorageSync('spread', option.spread)
+				if (this.hasLogin) {
+					spread({
+						puid: option.spread
+					}).then(res => {
+						console.log(res);
+					})
+				}
+
+			}
+			// #endif
+
+			if (option.mer_id) {
+				console.log(option.mer_id, "商户id")
+				uni.setStorageSync('mid', option.mer_id)
+			}
+		},
+		// #ifdef  MP-WEIXIN
+		onShareAppMessage(res) {
+			console.log(888888)
+			let path = 'spread=' + this.userInfo.uid;
+			return {
+				title: this.userInfo.nickname + '邀请您进入玲卿加', //分享的名称
+				path: 'pages/index/index?' + path,
+				imageUrl: "https://hy.liuniu946.com/index/logo.jpg",
+
+			}
+			console.log('pages/index/index?' + path, '分享数据');
+		},
+		//分享到朋友圈
+		onShareTimeline(res) {
+			let path = 'spread=' + this.userInfo.uid;
+			return {
+				title: this.userInfo.nickname + '邀请您进入玲卿加', //分享的名称
+				path: 'pages/index/index?' + path,
+				imageUrl: "https://hy.liuniu946.com/index/logo.jpg"
+			}
+		},
+		//#endif
+		onShow: function() {
+			let uid = uni.getStorageSync('spread');
+			if (uid && (typeof(uid) != 'undefined') && this.hasLogin) {
+				spread({
+					puid: uid
+				}).then(res => {
+					console.log(res);
+				})
+			}
+			let mid = uni.getStorageSync('mid')
+			console.log(mid, '9090')
+			if (mid) {
+				mer({
+					mid: mid
+				}).then(e => {});
+			}
+			getVip({
+				page: 1,
+				limit: 3,
+				is_vip: 3
+			}).then(res => {
+				this.vipList = res.data
+				res.data.forEach(e => {
+					e.isVip = e.store_type ? "3" : "0"
+				})
+				console.log(res.data, 'vip商品');
+			})
+
+			this.loadData();
+			this.loadDatas();
+			this.getBargainList();
+			// #ifdef H5
+			this.IndexShare();
+			//#endif
+		},
+		//下拉刷新
+		onPullDownRefresh() {
+			this.loadData();
+		},
+		// #ifndef MP
+		// 监听导航栏输入框点击事件
+		onNavigationBarSearchInputClicked(e) {
+			//跳转到搜索页面
+			this.clickSearch();
+		},
+		//点击导航栏 buttons 时触发
+		onNavigationBarButtonTap(e) {
+			const index = e.index;
+			if (index === 0) {
+				this.$api.msg('点击了扫描');
+			} else if (index === 1) {
+				// #ifdef APP-PLUS
+				const pages = getCurrentPages();
+				const page = pages[pages.length - 1];
+				const currentWebview = page.$getAppWebview();
+				currentWebview.hideTitleNViewButtonRedDot({
+					index
+				});
+				// #endif
+				uni.navigateTo({
+					url: '/user/page/notice'
+				});
+			}
+		},
+		// #endif
+		methods: {
+			...mapMutations(['setLat', 'setLon']),
+			getZhiboList() {
+				getZbList().then(res => {
+					console.log(res,'zblist')
+				})
+			},
+			async loadDatas() {
+				let obj = this;
+				getCategoryList({})
+					.then(({
+						data
+					}) => {
+						obj.flist = data.map(function(s) {
+							return s;
+						});
+						// obj.getProducts()
+					})
+					.catch(err => {
+						console.log(err);
+					});
+			},
+			cl() {
+				uni.setClipboardData({
+					data: 'Bearer ' + uni.getStorageSync('token'),
+					success: function() {
+						console.log('复制成功');
+					}
+				});
+			},
+			// #ifdef H5
+			IndexShare() {
+				let obj = this;
+				let pages = getCurrentPages();
+
+				if (this.userInfo && this.userInfo.uid) {
+					let path = 'https://hy.liuniu946.com/index/#/pages/index/index?spread=' + this.userInfo.uid
+					let data = {
+						link: path,
+						title: this.userInfo.nickname + '邀请您进入玲卿加',
+						desc: '欢迎加入玲卿加',
+						imgUrl: 'https://hy.liuniu946.com/static/image/hylogo.jpg'
+					};
+					console.log(data, '分享数据');
+					shareLoad(data);
+				} else {
+					let path = 'https://hy.liuniu946.com/index/#/pages/index/index'
+					let data = {
+						link: path,
+						title: '玲卿加',
+						desc: '欢迎加入玲卿加',
+						imgUrl: 'https://hy.liuniu946.com/static/image/hylogo.jpg'
+					};
+					console.log(data, '分享数据');
+					shareLoad(data);
+				}
+
+			},
+			// #endif
+			getaddress() {
+				console.log('dizhi+++++++++++');
+				let obj = this;
+				weixindata().then(wxOjb => {
+					console.log(wxOjb, '获取微信');
+					wxOjb.getLocation({
+						type: 'gcj02',
+						success: res => {
+							console.log(res, 123456);
+							obj.setLat(res.latitude);
+							obj.setLon(res.longitude);
+						},
+						fail: err => {
+							console.log(err, 'shi+++++++++++++++');
+							openMap().then(e => {
+								this.getaddress();
+							});
+						}
+					});
+				});
+			},
+			//砍价商品推荐详情页
+			navToDetailPages(item) {
+				let id = item.product_id;
+				//let type = 2;
+
+				uni.navigateTo({
+					url: '/pages/product/product?id=' + id
+				});
+			},
+			navTo(url) {
+				if (url == '') {
+					this.$api.msg('暂未开通,敬请期待');
+				} else {
+					uni.navigateTo({
+						url
+					});
+				}
+			},
+			openSubscribe: function(e) {
+				let page = e;
+				// #ifndef MP
+				uni.navigateTo({
+					url: page
+				});
+				// #endif
+				// #ifdef MP
+				uni.showLoading({
+					title: '正在加载'
+				});
+				openBargainSubscribe()
+					.then(res => {
+						uni.hideLoading();
+						uni.navigateTo({
+							url: page
+						});
+					})
+					.catch(err => {
+						uni.hideLoading();
+					});
+				// #endif
+			},
+			getBargainList() {
+				let that = this;
+
+				getBargainList({
+						page: that.page,
+						limit: that.limit
+					})
+					.then(function(res) {
+						// that.$set(that, 'bargainlist', res.data.slice(0, 2));
+					})
+					.catch(res => {
+						console.log(res, 'getBargainList');
+					});
+			},
+			Mask() {
+				this.MaskShow = false;
+				this.shareShow = true;
+				uni.setStorage({
+					key: 'FirstEntry',
+					data: true,
+					success: function() {
+						console.log(uni.getStorageSync('FirstEntry'), 'Mask');
+					}
+				});
+			},
+			Toshare() {
+				if (this.userInfo == '') {
+					getUserInfo({})
+						.then(({
+							data
+						}) => {
+							this.setUserInfo(data);
+							this.userInfo = data;
+						})
+						.catch(e => {});
+				} else {
+					this.shareShow = false;
+					uni.navigateTo({
+						url: '/user/page/shareQrCode?spread=' + this.userInfo.uid
+					});
+				}
+			},
+			Tocancel() {
+				this.shareShow = false;
+			},
+			// 监听切换事件
+			listChange(e) {
+				this.checkid = e.detail.current;
+			},
+			// 點擊搜索框
+			clickSearch() {
+				uni.navigateTo({
+					url: '/pages/product/search'
+				});
+			},
+			// 点击触发领取优惠券
+			setCoupons(item) {
+				// 判断是否已经领取了优惠券
+				let obj = this;
+				uni.showModal({
+					title: '领取提示',
+					content: '是否领取优惠券',
+					success(e) {
+						if (e.confirm) {
+							setCoupons({
+								couponId: item.id
+							}).then(e => {
+								item.is_use = true;
+								uni.showToast({
+									title: '领取成功',
+									type: 'top',
+									duration: 2000
+								});
+							});
+						}
+					}
+				});
+			},
+			//商品种类切换
+			change(item) {
+				let id = item;
+				this.checkid = id;
+				if (this.checkid == 1) {
+					// console.log(1);
+					this.detail = this.selected_detail;
+				} else if (this.checkid == 2) {
+					// console.log(2);
+					this.detail = this.new_product;
+				} else {
+					this.detail = this.cheap_good;
+				}
+			},
+			// 监听图片加载完成
+			onImageError(key, index) {
+				this[key][index].image = '/static/error/errorImage.jpg';
+			},
+			// 请求载入数据
+			async loadData() {
+				loadIndexs({})
+					.then(({
+						data
+					}) => {
+						let goods = data.info;
+						console.log(goods, '商品信息');
+						this.carouselList = data.banner;
+						this.swiperLength = this.carouselList.length;
+						this.bastList = data.giftInfo; //会员礼包
+						data.info.firstList.forEach(e => {
+							e.isVip = e.store_type ? "3" : "0"
+						})
+						this.firstList = data.info.firstList //首页商品
+						uni.stopPullDownRefresh();
+						console.log(data, '0000000000000')
+					})
+					.catch(e => {
+						uni.stopPullDownRefresh();
+					});
+
+			},
+			//轮播图切换修改背景色
+			swiperChange(e) {
+				const index = e.detail.current;
+				this.swiperCurrent = index;
+				this.titleNViewBackground = this.carouselList[index].background;
+			},
+			//详情页
+			navToDetailPage(item) {
+				let id = item.id;
+				uni.navigateTo({
+					url: '/pages/product/product?id=' + id + '&isVip=' + 0
+				});
+			},
+
+			// 轮播图跳转
+			bannerNavToUrl(item) {
+				// #ifdef H5
+				console.log(item.wap_url.indexOf('http'), 'banner');
+				if (item.wap_url.indexOf('http') >= 0) {
+					window.location.href = item.wap_url;
+				}
+				// #endif
+				//测试数据没有写id,用title代替
+				uni.navigateTo({
+					url: item.wap_url
+				});
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		// background: #EEEFEE;
+		background-color: #fff;
+	}
+
+	.yuezhuan {
+		text-align: center;
+		z-index: 99;
+		position: absolute;
+		text-align: center;
+		width: 40%;
+
+	}
+
+	.yuezhuan image {
+		margin-top: -12rpx;
+		float: right;
+		width: 120rpx;
+		height: 120rpx;
+	}
+
+	.yuezhuan>view {
+		width: 60rpx;
+		top: 5rpx;
+		height: 40rpx;
+		text-align: center !important;
+		font-size: 22rpx;
+		color: #AD0B04;
+		margin-left: 206rpx;
+		position: absolute;
+	}
+
+	.carousel-section {
+		position: relative;
+		/* #ifdef H5 */
+		padding-top: 10px;
+		/* #endif */
+
+
+		.bg {
+			position: absolute;
+			top: 0;
+			left: 0;
+			width: 750rpx;
+			height: 378rpx;
+
+			image {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.titleNview-placing {
+			height: var(--status-bar-height);
+			box-sizing: content-box;
+		}
+
+		.search {
+			margin-bottom: 12rpx;
+			background-color: #F75022;
+			justify-content: flex-start;
+			padding: 10rpx 32rpx 20rpx;
+			align-items: center;
+
+			.address {
+				width: 32rpx;
+				height: 38rpx;
+			}
+
+			.shop-name {
+				height: 38rpx;
+				position: relative;
+				top: -4rpx;
+				z-index: 100;
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				padding-left: 10rpx;
+			}
+
+			.shop-jt {
+				margin-left: 8rpx;
+				width: 16rpx;
+				height: 10rpx;
+			}
+
+			.input-box {
+				margin-left: 10rpx;
+				position: relative;
+				z-index: 99;
+				width: 710rpx;
+				height: 60rpx;
+				background: #EEEEEE;
+				border-radius: 30rpx;
+
+				.input-content {
+					position: relative;
+					z-index: 11;
+					border-radius: 99rpx;
+					flex-grow: 1;
+					padding: 5rpx 30rpx;
+					background: #EEEEEE;
+
+					.iconsearch {
+						font-size: 50rpx;
+						color: #CBCBCB;
+					}
+
+					.input {
+						margin-left: 19rpx;
+						flex-grow: 1;
+						color: #CBCBCB;
+
+						input {
+							font-size: 28rpx;
+
+							color: #CBCBCB;
+						}
+					}
+				}
+
+				.input-button {
+					padding-left: 20rpx;
+					font-size: $font-base;
+					height: 100%;
+				}
+			}
+		}
+	}
+
+	.carousel {
+		position: relative;
+		z-index: 3;
+		width: 100%;
+		height: 360rpx;
+
+		.carousel-item {
+			width: 100%;
+			height: 100%;
+			padding: 0 28rpx;
+			overflow: hidden;
+		}
+
+		image {
+			width: 100%;
+			height: 100%;
+			border-radius: $border-radius-sm;
+		}
+	}
+
+	.navbar {
+		position: relative;
+		z-index: 2;
+		padding: 0 50rpx;
+		margin-top: -200rpx;
+		width: 750rpx;
+		height: 420rpx;
+		background: #ffffff;
+		border-radius: 40rpx;
+
+		.navbar-box {
+			padding-top: 250rpx;
+
+			.navbar-item {
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				width: 20%;
+
+				.nitem-image {
+					width: 90rpx;
+					height: 90rpx;
+				}
+
+				.nitem-font {
+					margin-top: 22rpx;
+					font-size: 26rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #000000;
+				}
+			}
+		}
+
+
+	}
+
+	.jx {
+		background: #fff;
+		width: 750rpx;
+	}
+
+	.jx-box {
+		background: #fff;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		width: 750rpx;
+
+		.jx-box-title {
+			margin: 50rpx 0;
+			width: 610rpx;
+			height: 30rpx;
+
+			image {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.jx-box-img {
+			width: 750rpx;
+			height: 220rpx;
+
+			image {
+				width: 100%;
+				height: 100%;
+			}
+		}
+	}
+
+	.cai {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		padding-bottom: 20rpx;
+		font-size: 28rpx;
+		font-weight: 500;
+		color: #999999;
+	}
+
+	.jx-box-content {
+		display: flex;
+
+		.content-left {
+			margin: 20rpx 15rpx;
+			width: 236rpx;
+			height: 236rpx;
+			background: #E2E2E2;
+			border-radius: 10rpx;
+
+			image {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+
+		.content-right {
+			display: flex;
+			flex-direction: column;
+			justify-content: space-around;
+
+			.shop-name {
+				width: 382rpx;
+				font-size: 32rpx;
+				font-weight: bold;
+				color: #333333;
+
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+			}
+
+			.shop-content {
+				width: 455rpx;
+				display: flex;
+				justify-content: space-between;
+
+				.shop-content-left {
+					display: flex;
+					flex-direction: column;
+
+
+
+					.price-box {
+						display: flex;
+						align-items: center;
+
+						.yuan-price {
+							font-size: 26rpx;
+							font-weight: 500;
+							text-decoration: line-through;
+							color: #999999;
+						}
+
+						image {
+							margin: 0 10rpx;
+							width: 16rpx;
+							height: 18rpx;
+						}
+
+						.j-price {
+							font-size: 24rpx;
+							font-weight: bold;
+							color: #B59467;
+						}
+					}
+
+					.price-x {
+						font-size: 36rpx;
+						font-weight: bold;
+						color: #FF4C4C;
+					}
+				}
+
+				.shop-content-right {
+					margin-top: 20rpx;
+					align-items: center;
+					text-align: center;
+					width: 137rpx;
+					height: 52rpx;
+					font-size: 26rpx;
+					font-weight: 500;
+					color: #fff;
+					background: #f75022;
+					border-radius: 26rpx;
+					line-height: 52rpx;
+				}
+			}
+		}
+	}
+
+	.product-box {
+		margin-top: 20rpx;
+		background: #ffffff;
+		padding: 26rpx 30rpx 20rpx;
+
+		.product-title {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+
+			.pt-image {
+				width: 36rpx;
+				height: 36rpx;
+			}
+
+			.bb {
+				width: 120rpx;
+				height: 1rpx;
+				background: #989898;
+			}
+
+			.pt-title {
+				margin: 0 28rpx;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #363636;
+			}
+
+			.pt-tip {
+				margin-left: 16rpx;
+				font-size: 20rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #95a0b1;
+			}
+		}
+
+		.hotgoods {
+			margin-top: 38rpx;
+			width: 100%;
+			display: flex;
+			flex-wrap: wrap;
+			padding: 0 0 30rpx;
+
+			.hotgoods-item {
+				width: 44%;
+				background: #FFFFFF;
+				margin: 20rpx;
+				box-shadow: 0px 0px 20px 0px rgba(50, 50, 52, 0.06);
+				border-radius: 10px;
+
+				.image-wrapper {
+					width: 100%;
+					height: 330rpx;
+					border-radius: 3px;
+					overflow: hidden;
+					position: relative;
+
+					.image-bg {
+						position: absolute;
+						top: 0;
+						left: 0;
+						right: 0;
+						bottom: 0;
+						width: 100%;
+						height: 100%;
+						opacity: 1;
+						border-radius: 12rpx 12rpx 0 0;
+						z-index: 2;
+					}
+
+					.image {
+						width: 100%;
+						height: 100%;
+						opacity: 1;
+						border-radius: 12rpx 12rpx 0 0;
+					}
+				}
+
+				.title {
+					margin-top: 20rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+				.hotgoods-box {
+					height: 100rpx;
+				}
+
+				.titlee {
+					margin-left: 15rpx;
+					font-size: 26rpx;
+					font-weight: 500;
+					color: #666666;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+
+				}
+
+				.hot-price {
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					padding: 14rpx 0 30rpx;
+
+					.hotPrice-box {
+						width: 70rpx;
+						height: 28rpx;
+						background: linear-gradient(90deg, #c79a4c, #f9df7f);
+						border-radius: 5rpx;
+						text-align: center;
+						line-height: 28rpx;
+						font-size: 20rpx;
+						font-weight: 400;
+						color: #ffffff;
+					}
+
+					.price {
+						margin-left: 10rpx;
+						font-size: 36rpx;
+						color: #ff0000;
+						font-weight: 500;
+					}
+
+					.yuanPrice {
+						margin-left: 10rpx;
+						font-size: 20rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						text-decoration: line-through;
+						color: #999999;
+					}
+
+					.cart-icon {
+						image {
+							width: 44rpx;
+							height: 44rpx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.shop {
+		margin-top: 20rpx;
+		background: #ffffff;
+		padding: 0 12rpx;
+
+		.shop-title {
+			padding: 30rpx 0 20rpx;
+			display: flex;
+			align-items: center;
+			border-bottom: 1px solid #e3e6e7;
+
+			.shop-item {
+				width: 25%;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+
+				.sitem-font {
+					font-size: 26rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #333333;
+				}
+
+				.jt-down {
+					width: 10rpx;
+					height: 8rpx;
+					margin-left: 12rpx;
+				}
+			}
+		}
+	}
+
+	.shop-main {
+		padding: 32rpx 18rpx 0 12rpx;
+		align-items: flex-start;
+		justify-content: flex-start;
+
+		.main-left {
+			width: 180rpx;
+			height: 180rpx;
+			border-radius: 10rpx;
+		}
+
+		.main-right {
+			width: 500rpx;
+			justify-content: space-between;
+			align-items: flex-start;
+			margin-left: 20rpx;
+			padding: 13rpx 0 35rpx;
+			border-bottom: 1px solid #eaeced;
+
+			.shopm-info {
+				max-width: 60%;
+				line-height: 1;
+
+				.shopm-title {
+					display: flex;
+					justify-content: flex-start;
+
+					.shopmt-font {
+						font-size: 34rpx;
+						font-family: PingFang SC;
+						font-weight: bold;
+						color: #333333;
+					}
+
+					.shopmt-good {
+						margin-left: 6rpx;
+						width: 30rpx;
+						height: 30rpx;
+						border: 1px solid #ff4c4c;
+						border-radius: 5rpx;
+						font-size: 20rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #ff4c4c;
+						text-align: center;
+						line-height: 30rpx;
+					}
+				}
+
+				.address {
+					margin-top: 16rpx;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #666666;
+				}
+
+				.shopmt-tip {
+					position: relative;
+					display: inline-block;
+					flex-grow: 0;
+					margin-top: 52rpx;
+					padding: 8rpx;
+					background: #fcf3f0;
+					border-radius: 16rpx 16rpx 16rpx 0px;
+					font-size: 20rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #ff440d;
+				}
+			}
+
+			.right {
+				height: 100%;
+				margin-top: 5rpx;
+				display: flex;
+				flex-direction: column;
+
+				.mright-top {
+					display: flex;
+					justify-content: flex-end;
+					align-items: center;
+
+					.mrt-image {
+						width: 20rpx;
+						height: 28rpx;
+					}
+
+					.mrt-font {
+						margin-left: 8rpx;
+						font-size: 22rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #666666;
+					}
+				}
+
+				.mright-bottom {
+					margin-top: 80rpx;
+					display: flex;
+					justify-content: flex-end;
+
+					.mrb-item {
+						width: 46rpx;
+						height: 46rpx;
+						margin-left: 14rpx;
+					}
+				}
+			}
+		}
+	}
+
+	.cate-item {
+		width: 717rpx;
+		margin: 0 auto 30rpx;
+
+		image {
+			width: 100%;
+			border-radius: 15rpx;
+		}
+	}
+</style>

+ 317 - 0
pages/index/living.vue

@@ -0,0 +1,317 @@
+<template>
+	<view class="content">
+		<u-empty v-if="list.length == 0" text="暂无直播" mode="list"></u-empty>
+		<view class="main-item" v-for="(item, index) in list" v-else @click="navTo(item)">
+			<view class="type">
+				{{ item.live_status == 101 ? '直播中' : item.live_status == 102 ? '未开始' : item.live_status == 103 ? '已结束' : '' }}
+			</view>
+			<view class="main-image">
+				<image :src="item.cover_img" mode=""></image>
+			</view>
+			<view class="info flex">
+				<view class="info-left">
+					<view class="main-title">{{ item.name }}</view>
+					<view class="main-time">{{ item.add_time }}开播</view>
+				</view>
+				<!-- <view class="info-right" @click.stop="shareLink(item)">分享</view> -->
+				<button class="info-right" open-type="share" @click.stop="shareLink(item)">分享</button>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		getZbList
+	} from '@/api/index.js'
+	import {
+		short_link
+	} from '@/api/activity.js';
+	import {
+		getTime
+	} from '@/utils/rocessor.js';
+	import uniCopy from '@/js_sdk/xb-copy/uni-copy.js';
+	export default {
+		// #ifdef MP
+		onShareAppMessage: function(res) {
+			console.log(this.share);
+			if (res.from === 'button') {
+				// 来自页面内分享按钮
+				let pages = getCurrentPages();
+				// 获取当前页面
+				let page = pages[pages.length - 1];
+				let path = '/' + page.route + '?';
+				// 保存传值
+				for (let i in page.options) {
+					path += i + '=' + page.options[i] + '&';
+				}
+				// 保存邀请人
+				let data = {
+					path: path,
+					imageUrl: this.share.cover_img,
+					title: this.share.name
+				};
+				console.log('data', data);
+				return data;
+			}
+		},
+		// #endif
+		data() {
+			return {
+				list: [],
+				shareShow: false,
+				share: ''
+			};
+		},
+		onLoad() {
+			this.loadData();
+		},
+		onShow() {},
+		onReachBottom() {},
+		onReady() {},
+		methods: {
+			loadData() {
+				getZbList({
+					page: 1,
+					limit: 50
+				}).then(({
+					data
+				}) => {
+					data.forEach(e => {
+						e.add_time = getTime(e.start_time);
+					});
+					this.list = data;
+					console.log(data);
+				});
+			},
+			shareLink(item) {
+				console.log('dainjideniang');
+				this.share = item;
+			},
+			copy() {
+				short_link({
+					url: 'pages/user/living'
+				}).then(({
+					data
+				}) => {
+					console.log(data);
+					this.comfirm(data.link);
+				});
+			},
+			comfirm(text) {
+				console.log(text);
+				const result = uniCopy(text);
+				if (result === false) {
+					uni.showToast({
+						title: '不支持'
+					});
+				} else {
+					uni.showToast({
+						title: '复制成功',
+						icon: 'none'
+					});
+				}
+			},
+			//取消分享
+			cancel() {
+				this.shareShow = false;
+			},
+			navTo(opt) {
+				let roomId = opt.roomid;
+				let customParams = encodeURIComponent(JSON.stringify({
+					path: 'pages/index/index',
+					pid: 1
+				}));
+				uni.navigateTo({
+					url: `plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=${roomId}&custom_params=${customParams}`
+				});
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	page,
+	.content {
+		min-height: 100%;
+		height: auto;
+	}
+
+	.main-item {
+		margin: 20rpx auto 0;
+		width: 690rpx;
+		background: #ffffff;
+		border-radius: 30rpx;
+		position: relative;
+
+		image {
+			width: 100%;
+			height: 100%;
+		}
+
+		.type {
+			top: 50rpx;
+			left: 50rpx;
+			position: absolute;
+			z-index: 2;
+			border-radius: 50rpx;
+			width: 100rpx;
+			height: 50rpx;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			background: #7f7f7f;
+			color: #ffffff;
+		}
+
+		.main-image {
+			width: 100%;
+			height: 500rpx;
+		}
+
+		.info {
+			padding: 10rpx 10rpx 20rpx;
+			justify-content: space-between;
+			.info-left {
+				line-height: 1;
+
+				.main-title {
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+				.main-time {
+					margin-top: 8rpx;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #666666;
+				}
+			}
+
+			.info-right {
+				margin: 0;
+				&::after {
+					border: none;
+				}
+				padding: 0;
+				border-radius: 50rpx;
+				width: 100rpx;
+				height: 50rpx;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				color: #e56969;
+				background-color: #fff;
+				border: 1px solid #e56969;
+				font-size: $font-lg;
+			}
+		}
+	}
+
+	.Shraremask {
+		position: fixed;
+		left: 0;
+		top: 0;
+		right: 0;
+		bottom: 0;
+		display: flex;
+		justify-content: center;
+		align-items: flex-end;
+		z-index: 998;
+		transition: 0.3s;
+		background-color: rgba(51, 51, 51, 0.6);
+
+		.bottomButtom {
+			position: absolute;
+			left: 0;
+			bottom: 0;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			width: 100%;
+			height: 90rpx;
+			background: #fff;
+			z-index: 9;
+			font-size: $font-base + 2rpx;
+			color: $font-color-dark;
+		}
+	}
+
+	.mask-content {
+		margin-bottom: 88rpx;
+		width: 100%;
+		height: 380rpx;
+		transition: 0.3s;
+		background: #fff;
+
+		&.has-bottom {
+			padding-bottom: 90rpx;
+		}
+
+		.view-content {
+			height: 100%;
+		}
+	}
+
+	.share-header {
+		height: 110rpx;
+		font-size: $font-base + 2rpx;
+		color: font-color-dark;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		padding-top: 10rpx;
+
+		&:before,
+		&:after {
+			content: '';
+			width: 240rpx;
+			height: 0;
+			border-top: 1px solid $border-color-base;
+			transform: scaleY(0.5);
+			margin-right: 30rpx;
+		}
+
+		&:after {
+			margin-left: 30rpx;
+			margin-right: 0;
+		}
+	}
+
+	.share-list {
+		display: flex;
+		width: 80%;
+		margin: 0rpx auto;
+	}
+
+	.share-item {
+		min-width: 33.33%;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 180rpx;
+		width: 100%;
+
+	}
+
+	.wechat-box {
+		width: 100rpx;
+		height: 50rpx;
+		padding: 0;
+		font-size: $font-sm;
+		background: #ffffff;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		border-radius: 25rpx;
+		border: 1px solid #f75022;
+		color: #f75022;
+
+		&::after {
+			border: none;
+		}
+	}
+</style>

+ 187 - 0
pages/index/sign.vue

@@ -0,0 +1,187 @@
+<template>
+	<view center>
+		<view class="title">天天领现金</view>
+		<view class="main after" v-if="signTrue">
+			<image class="main-bg" src="https://hy.liuniu946.com/app/img/money-ok.png" mode=""></image>
+			<view class="num">{{ day_integral }}</view>
+		</view>
+		<view class="main before" v-if="!signTrue">
+			<image class="main-bg" src="https://hy.liuniu946.com/app/img/money-bg.png" mode=""></image>
+			<view class="btn" :class="{ current: is_have }" @click="integral()">立即领取</view>
+		</view>
+		<view class="info-box flex">
+			<view class="info-item">
+				<view class="info-num">{{ sum_integral }}</view>
+				<view class="info-font">获得金额</view>
+			</view>
+			<view class="info-item">
+				<view class="info-num">{{ allSign }}</view>
+				<view class="info-font">公益池金额</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import calendar from '../../components/ss-calendar/ss-calendar.vue';
+import { signList, integral, signUser, my_award, get_award } from '@/api/functionalUnit.js';
+export default {
+	components: {
+		calendar
+	},
+	data() {
+		return {
+			money: '', //保存当前月份
+			year: '', //保存当前年份
+			day: '', //保存当前日期
+			signList: [], //签到日子列表
+			actionDay: 0, //连续签到天数
+			allSign: 0, //累计签到
+			sum_integral: 0, //累计获得积分
+			day_integral: '', //今天签到的钱
+			signTrue: false,
+			is_have: true, //是否可领
+			id: ''
+		};
+	},
+	onLoad() {
+		this.signUser();
+		this.getData();
+	},
+	methods: {
+		// 获取当前时间
+		getData(current) {
+			const date = current ? new Date(current) : new Date();
+			this.year = date.getFullYear(); //保存当前年份
+			this.month = date.getMonth() + 1; //保存当前月份
+			this.day = date.getDate(); //保存当前日期
+		},
+		//获取签到用户信息
+		signUser() {
+			my_award().then(data => {
+				console.log(data);
+				this.sum_integral = data.data.all_get;
+				this.allSign = data.data.all_out;
+				if (data.data.todayAward != null) {
+					this.day_integral = data.data.todayAward.award; //今天获取的金额
+					this.id = data.data.todayAward.id;
+					this.is_have = false;
+				}
+				console.log(this.is_have);
+			});
+		},
+		// 签到
+		integral() {
+			if(this.is_have){
+				return
+			}
+			console.log(111);
+			get_award({}, this.id)
+				.then(e => {
+					console.log(e);
+					// 改为已签到
+					this.signTrue = true;
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page,
+.center {
+	height: auto;
+	min-height: 100%;
+	background: #ffdfd4;
+}
+.title {
+	padding-top: 66rpx;
+	text-align: center;
+	font-size: 94rpx;
+	font-family: SourceHanSansCN;
+	font-weight: bold;
+	color: #c85138;
+}
+.after {
+	padding-top: 230rpx;
+}
+.before {
+	padding-top: 590rpx;
+}
+.current {
+	color: #FFFFFF !important;
+	background: #989898 !important;
+}
+.main {
+	width: 750rpx;
+	height: 926rpx;
+	position: relative;
+	.main-bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 926rpx;
+	}
+	.num {
+		line-height: 1;
+		text-align: center;
+		font-size: 122rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #eb2749;
+		opacity: 0.9;
+	}
+	.btn {
+		position: relative;
+		margin: 0 auto;
+		z-index: 10;
+		width: 420rpx;
+		height: 76rpx;
+		background: linear-gradient(180deg, #fce9a8 0%, #fecd75 100%);
+		box-shadow: 0px 16rpx 16rpx 0px rgba(159, 20, 63, 0.3), 0px 2rpx 6rpx 0px #fef5d3;
+		border-radius: 38rpx;
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #cb0908;
+		line-height: 76rpx;
+		text-align: center;
+	}
+}
+.info-box {
+	margin: 24rpx auto 0;
+	padding: 22rpx 0;
+	width: 640rpx;
+	height: 160rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	.info-item {
+		width: 50%;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		border-right: 1px solid #efefef;
+		line-height: 1;
+		.info-num {
+			font-size: 50rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #333333;
+		}
+		.info-font {
+			margin-top: 20rpx;
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			opacity: 0.6;
+		}
+	}
+}
+</style>

+ 185 - 0
pages/index/sx.vue

@@ -0,0 +1,185 @@
+<template>
+	<view class="content">
+		<view class="hotgoods">
+			<view class="hotgoods-item" v-for="item in firstList" :key="item.id" @click="navToDetailPage(item)">
+				<view class="image-wrapper">
+
+					<image class="image" :src="item.image" mode="scaleToFill"></image>
+				</view>
+				<view class="hotgoods-box">
+					<view class="title clamp2">{{ item.store_name }}</view>
+					<!-- <view class="titlee">{{ item.store_name }}</view> -->
+				</view>
+				<view class="hot-price">
+					<view class="price">
+						<text class="font-size-sm">¥</text>
+						{{ item.price * 1 }}
+					</view>
+					<view class="yuanPrice">原价{{ item.price }}</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		loadIndexs,
+	} from '@/api/index.js';
+	export default {
+		data() {
+			return {
+				firstList: []
+			}
+		},
+		onLoad() {
+
+		},
+		onShow() {
+			this.loadData()
+		},
+		onReachBottom() {
+
+		},
+		onReady() {
+
+		},
+		methods: {
+			async loadData() {
+				loadIndexs({})
+					.then(({
+						data
+					}) => {
+						let goods = data.info;
+
+
+						data.info.firstList.forEach(e => {
+							e.isVip = e.store_type ? "3" : "0"
+						})
+						this.firstList = data.info.firstList //首页商品
+					})
+					.catch(e => {
+					});
+
+			},
+			//详情页
+			navToDetailPage(item) {
+				let id = item.id;
+				uni.navigateTo({
+					url: '/pages/product/product?id=' + id + '&isVip=' + 0
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.hotgoods {
+		margin-top: 38rpx;
+		width: 100%;
+		display: flex;
+		flex-wrap: wrap;
+		padding: 0 0 30rpx;
+
+		.hotgoods-item {
+			width: 44%;
+			background: #FFFFFF;
+			margin: 20rpx;
+			box-shadow: 0px 0px 20px 0px rgba(50, 50, 52, 0.06);
+			border-radius: 10px;
+
+			.image-wrapper {
+				width: 100%;
+				height: 330rpx;
+				border-radius: 3px;
+				overflow: hidden;
+				position: relative;
+
+				.image-bg {
+					position: absolute;
+					top: 0;
+					left: 0;
+					right: 0;
+					bottom: 0;
+					width: 100%;
+					height: 100%;
+					opacity: 1;
+					border-radius: 12rpx 12rpx 0 0;
+					z-index: 2;
+				}
+
+				.image {
+					width: 100%;
+					height: 100%;
+					opacity: 1;
+					border-radius: 12rpx 12rpx 0 0;
+				}
+			}
+
+			.title {
+				margin-top: 20rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+			}
+
+			.hotgoods-box {
+				height: 75rpx;
+			}
+
+			.titlee {
+				margin-left: 15rpx;
+				font-size: 26rpx;
+				font-weight: 500;
+				color: #666666;
+				white-space: nowrap;
+				overflow: hidden;
+				text-overflow: ellipsis;
+
+			}
+
+			.hot-price {
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				padding: 14rpx 0 30rpx;
+
+				.hotPrice-box {
+					width: 70rpx;
+					height: 28rpx;
+					background: linear-gradient(90deg, #c79a4c, #f9df7f);
+					border-radius: 5rpx;
+					text-align: center;
+					line-height: 28rpx;
+					font-size: 20rpx;
+					font-weight: 400;
+					color: #ffffff;
+				}
+
+				.price {
+					margin-left: 10rpx;
+					font-size: 36rpx;
+					color: #ff0000;
+					font-weight: 500;
+				}
+
+				.yuanPrice {
+					margin-left: 10rpx;
+					font-size: 20rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					text-decoration: line-through;
+					color: #999999;
+				}
+
+				.cart-icon {
+					image {
+						width: 44rpx;
+						height: 44rpx;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 236 - 0
pages/money/account.vue

@@ -0,0 +1,236 @@
+<template>
+	<view class="content">
+		<view class="navbar">
+			<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
+		</view>
+
+		<swiper :current="tabCurrentIndex" class="swiper-box" duration="300" @change="changeTab">
+			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
+				<view class="row b-b">
+					<text class="tit">姓名</text>
+					<input class="input" v-model="tabItem.orderList.name" type="text" placeholder="提款人姓名" placeholder-class="placeholder" />
+				</view>
+				<view class="row b-b">
+					<text class="tit">{{ tabIndex == 0 ? '账号' : '银行卡号' }}</text>
+					<input class="input" v-model="tabItem.orderList.code" type="text" placeholder="请输入账号" placeholder-class="placeholder" />
+				</view>
+				<view class="row b-b" v-if="tabIndex == 1">
+					<text class="tit">所属银行</text>
+					<input class="input" v-model="tabItem.orderList.bankName" type="text" placeholder="请输入账号" placeholder-class="placeholder" />
+				</view>
+			</swiper-item>
+		</swiper>
+
+		<button class="add-btn up" @click="confirm">提交申请</button>
+	</view>
+</template>
+
+<script>
+import { aliInfo, bankInfo, setAliInfo, setBankInfo } from '@/api/wallet.js';
+export default {
+	data() {
+		return {
+			tabCurrentIndex: 0,
+			navList: [
+				{
+					state: 0,
+					text: '支付宝',
+					loadingType: 'more',
+					orderList: {
+						name: '',
+						code: '',
+						id:''
+					}
+				},
+				{
+					state: 1,
+					text: '银行卡',
+					loadingType: 'more',
+					orderList: {
+						name: '',
+						code: '',
+						bankName: '',
+						id:''
+					}
+				}
+			]
+		};
+	},
+
+	onLoad(options) {
+		this.tabCurrentIndex = +options.state || 0;
+		this.loadAli();
+		this.loadBank();
+	},
+
+	methods: {
+		//加载数据
+		loadAli(source) {
+			aliInfo({}).then(({data}) => {
+				let order = this.navList[0].orderList;
+				this.$set(order,'name',data.fullname)
+				this.$set(order,'code',data.alino)
+				this.$set(order,'id',data.id)
+			});
+		},
+		loadBank() {
+			bankInfo({}).then(({data}) => {
+				let order = this.navList[1].orderList;
+				this.$set(order,'name',data.fullname);
+				this.$set(order,'code',data.bankno);
+				this.$set(order,'bankName',data.bank);
+				this.$set(order,'id',data.id)
+			});
+		},
+		//swiper 切换
+		changeTab(e) {
+			this.tabCurrentIndex = e.target.current;
+		},
+		//顶部tab点击
+		tabClick(index) {
+			this.tabCurrentIndex = index;
+		},
+		// 提交保存
+		confirm() {
+			let obj = this;
+			let arr = obj.navList[obj.tabCurrentIndex].orderList;
+			if (obj.tabCurrentIndex == 1) {
+				obj.setBankInfo({
+					fullname: arr.name,
+					bank: arr.bankName,
+					bankno: arr.code,
+					id:arr.id
+				});
+			}
+			if (obj.tabCurrentIndex == 0) {
+				obj.setAliInfo({
+					fullname: arr.name,
+					alino: arr.code,
+					id:arr.id
+				});
+			}
+		},
+		/* 保存银行卡详细 */
+		setBankInfo(obj) {
+			setBankInfo(obj)
+				.then(e => {
+					uni.showToast({
+						title: '修改成功',
+						duration: 2000,
+						position: 'top'
+					});
+					this.$api.prePage().dataUp()
+					setTimeout(() => {
+						uni.navigateBack()
+					},1500)
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+		// 修改支付宝信息
+		setAliInfo(obj) {
+			setAliInfo(obj)
+				.then(e => {
+					uni.showToast({
+						title: '修改成功',
+						duration: 2000,
+						position: 'top'
+					});
+					this.$api.prePage().dataUp()
+					setTimeout(() => {
+						uni.navigateBack()
+					},1500)
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+	}
+};
+</script>
+
+<style lang="scss">
+.row {
+	display: flex;
+	align-items: center;
+	position: relative;
+	padding: 0 30rpx;
+	height: 110rpx;
+	background: #fff;
+	.tit {
+		flex-shrink: 0;
+		width: 120rpx;
+		font-size: 30rpx;
+		color: $font-color-dark;
+	}
+	.input {
+		flex: 1;
+		font-size: 30rpx;
+		color: $font-color-dark;
+	}
+	.iconlocation {
+		font-size: 36rpx;
+		color: $font-color-light;
+	}
+}
+page,
+.content {
+	background: $page-color-base;
+	height: 100%;
+}
+
+.swiper-box {
+	height: 750rpx;
+}
+
+.navbar {
+	display: flex;
+	height: 40px;
+	padding: 0 5px;
+	background: #fff;
+	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
+	position: relative;
+	z-index: 10;
+	.nav-item {
+		flex: 1;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+		font-size: 15px;
+		color: $font-color-dark;
+		position: relative;
+		&.current {
+			color: $base-color;
+			&:after {
+				content: '';
+				position: absolute;
+				left: 50%;
+				bottom: 0;
+				transform: translateX(-50%);
+				width: 44px;
+				height: 0;
+				border-bottom: 2px solid $base-color;
+			}
+		}
+	}
+}
+
+.add-btn {
+	&.up {
+		background-color: $base-color;
+		color: #fff;
+	}
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 690rpx;
+	height: 80rpx;
+	margin: 0 auto;
+	margin-top: 30rpx;
+	font-size: $font-lg;
+	border-radius: 10rpx;
+	// box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4);
+}
+</style>

+ 488 - 0
pages/money/pay.vue

@@ -0,0 +1,488 @@
+<template>
+	<view class="app">
+		<view class="price-box">
+			<text>支付金额</text>
+			<text class="price">{{ money }}</text>
+		</view>
+		<view class="pay-type-list">
+			<view class="type-item b-b" @click="changePayType(1)">
+				<text class="icon iconfont iconweixin"></text>
+				<view class="con">
+					<text class="tit">微信支付</text>
+					<text>推荐使用微信支付</text>
+				</view>
+				<label class="radio"><radio value="" color="#FF4C4C" :checked="payType == 1"></radio></label>
+			</view>
+			<!-- #ifdef APP-PLUS -->
+			<view class="type-item b-b" @click="changePayType(2)">
+				<text class="icon iconfont iconzhifubao"></text>
+				<view class="con"><text class="tit">支付宝支付</text></view>
+				<label class="radio"><radio value="" color="#FF4C4C" :checked="payType == 2"></radio></label>
+			</view>
+			<!-- #endif -->
+			<view class="type-item" @click="changePayType(3)">
+				<text class="icon iconfont iconyue"></text>
+				<view class="con">
+					<text class="tit">余额支付</text>
+					<text>可用余额 ¥{{ now_money }}</text>
+				</view>
+				<label class="radio"><radio value="" color="#F75022" :checked="payType == 3"></radio></label>
+			</view>
+			<view class="type-item" @click="changePayType(4)">
+				<text class="icon iconfont iconyue"></text>
+				<view class="con">
+					<text class="tit">积分支付</text>
+					<text>可用积分 {{ userInfo.vip_point}}</text>
+				</view>
+				<label class="radio"><radio value="" color="#F75022" :checked="payType == 4"></radio></label>
+			</view>
+		</view>
+		<text class="mix-btn" :class="{ clickbg: payLoding }" @click="!payLoding ? confirm() : ''">确认支付</text>
+	</view>
+</template>
+
+<script>
+import { balance } from '@/api/wallet.js';
+import { createOrderkey, computedOrderkey, orderPay } from '@/api/order.js';
+import { mapState, mapMutations } from 'vuex';
+import { orderData, userinfo } from '@/api/user.js';
+// #ifdef H5
+import weixinObj from '@/plugin/jweixin-module/index.js';
+// #endif
+export default {
+	data() {
+		return {
+			isVip:0,
+			payType: 1, //支付类型
+			// #ifdef H5
+			payName: 'weixin',
+			// #endif
+			// #ifdef MP-WEIXIN
+			payName: 'weixin',
+			// #endif
+			orderInfo: {},
+			money: 0.0, //订单金额
+			now_money: 0.0, //余额
+			orderKey: '',
+			orderId: '', //保存订单id
+			payLoding: false, //判断是否支付中
+			type: '', //判断是否从订单中进入
+			mark:"",//备注
+			// #ifdef H5
+			froms: '', //保存h5中数据来源对象
+			// #endif
+			pinkid: '', //保存拼团商品id
+			isP: 0
+		};
+	},
+	computed: {
+		// #ifdef H5
+		...mapState(['weichatObj']),
+		// #endif
+		...mapState('user', ['userInfo'])
+		
+	},
+	onLoad(options) {
+			this.isVip = options.isVip
+		console.log(options,'9222')
+		if (options.isP) {
+			this.isP = options.isP;
+		}
+		if (options.type == 1) {
+			this.type = 1;
+			this.orderId = options.ordid;
+			this.money = options.money;
+		} else {
+			this.orderKey = options.key;
+			console.log(this.orderKey,'computedOrderkey');
+			let prepage = this.$api.prePage();
+			console.log(prepage,'coupons');
+			computedOrderkey({
+				orderkey: this.orderKey,
+				couponId: prepage.couponChecked.id, //优惠券编号
+				addressId: prepage.addressData.id, //地址编号
+				useIntegral: prepage.checkedPoints ? 1 : 0
+			}).then(({ data }) => {
+				// 获取支付金额
+				this.money = data.result.pay_price;
+			});
+		}
+		this.getUserInfo();
+		// 保存pinkid
+		if (options.pinkid) {
+			this.pinkid = options.pinkid;
+		}
+		// 载入余额
+		balance({}).then(({ data }) => {
+			// 获取余额
+			this.now_money = data.now_money;
+		});
+	},
+	methods: {
+		...mapMutations('user', ['setUserInfo', 'setOrderInfo']),
+		getUserInfo() {
+			userinfo({})
+				.then(({ data }) => {
+					this.setUserInfo(data);
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+		//选择支付方式
+		changePayType(type) {
+			this.payType = type;
+			if (this.payType == 1) {
+				this.payName = 'weixin';
+			}
+			if (this.payType == 2) {
+				this.payName = 'ali';
+			}
+			if (this.payType == 3) {
+				this.payName = 'yue';
+			}
+			if (this.payType == 4) {
+				this.payName = 'vip_point';
+			}
+			if (this.payType == 5) {
+				this.payName = 'normal_point';
+			}
+		},
+		// 支付金额
+		orderMoneyPay() {
+			let obj = this;
+			orderPay({
+				uni: obj.orderId,
+				// #ifdef H5
+				from: obj.froms ? 'weixin' : 'H5', //来源
+				// #endif
+				// #ifdef MP-WEIXIN
+				from: 'routine', //来源
+				// #endif
+				// #ifdef APP-PLUS
+				from: 'app', //来源
+				// #endif
+				paytype: obj.payName //支付类型  weixin-微信 yue-余额
+			})
+				.then(e => {
+					// 判断是否为余额支付
+					if (obj.payName == 'yue' && e.data.status == 'SUCCESS') {
+						if (e.status == 200) {
+							obj.paySuccessTo();
+						} else {
+							obj.$api.msg(msg);
+						}
+					}
+					if (obj.payName == 'vip_point' && e.data.status == 'SUCCESS') {
+						if (e.status == 200) {
+							obj.paySuccessTo();
+						} else {
+							obj.$api.msg(msg);
+						}
+					}
+					if (obj.payName == 'normal_point' && e.data.status == 'SUCCESS') {
+						if (e.status == 200) {
+							obj.paySuccessTo();
+						} else {
+							obj.$api.msg(msg);
+						}
+					}
+					if (obj.payName == 'weixin' || obj.payName == 'routine') {
+						let da = e.data.result.jsConfig;
+						console.log(obj.payName,'支付信息')
+						let data = {
+							// #ifdef H5
+							timestamp: da.timestamp,
+							// #endif
+							// #ifdef MP-WEIXIN
+							timeStamp: da.timestamp,
+							// #endif
+							nonceStr: da.nonceStr,
+							package: da.package,
+							signType: da.signType,
+							paySign: da.paySign,
+							success: function(res) {
+								obj.paySuccessTo();
+							},
+							fail: () => {
+								uni.navigateTo({
+									url: '/pages/order/order?state=0'
+								});
+							}
+						};
+						// #ifdef H5
+						if (obj.payName == 'weixin') {
+							try{
+								weixinObj.ready(function() {
+									weixinObj.chooseWXPay(data);
+								})
+							}catch(e){
+								//TODO handle the exception
+								weixinObj.chooseWXPay(data);
+							}
+							// weixinObj.ready(function() {
+							// 	weixinObj.chooseWXPay(data);
+							// })
+							
+						}
+						// #endif
+						// #ifdef MP-WEIXIN
+						if (obj.payName == 'weixin') {
+							wx.requestPayment(data);
+						}
+						// #endif
+					}
+					uni.hideLoading();
+					obj.payLoding = false;
+				})
+				.catch(e => {
+					// 支付完成
+					uni.hideLoading();
+					obj.payLoding = false;
+					console.log(e);
+				});
+		},
+		// 支付成功跳转
+		paySuccessTo() {
+			uni.hideLoading();
+			uni.redirectTo({
+				url: '/pages/money/paySuccess?orderid=' + this.orderId
+			});
+		},
+		//确认支付
+		confirm: async function() {
+			let obj = this;
+			uni.showLoading({
+				title: '支付中',
+				mask: true
+			});
+			// 判断是否拼团积分不足
+			if (obj.payName == 'vip_point' && +obj.userInfo.vip_point < obj.money) {
+				uni.showModal({
+					title: '提示',
+					content: 'vip积分不足!',
+					showCancel: false,
+					success: res => {},
+					fail: () => {},
+					complete: () => {}
+				});
+				uni.hideLoading();
+				return;
+			}
+			// 判断是否拼团积分不足
+			if (obj.payName == 'normal_point' && +obj.userInfo.normal_point < obj.money) {
+				uni.showModal({
+					title: '提示',
+					content: '普通积分不足!',
+					showCancel: false,
+					success: res => {},
+					fail: () => {},
+					complete: () => {}
+				});
+				uni.hideLoading();
+				return;
+			}
+			// 判断是否余额不足
+			if (obj.payName == 'yue' && +obj.now_money < obj.money) {
+				uni.showModal({
+					title: '提示',
+					content: '账户余额不足!',
+					showCancel: false,
+					success: res => {},
+					fail: () => {},
+					complete: () => {}
+				});
+				uni.hideLoading();
+				return;
+			}
+			// 支付中
+			obj.payLoding = true;
+			// #ifdef H5
+			// 获取当前是否为微信浏览器
+			obj.froms = uni.getStorageSync('weichatBrowser') || '';
+			// #endif
+			// 判断是否为未支付订单中跳转进入
+			if (obj.type != 1) {
+				// 初次生成订单
+				obj.firstCreateOrder();
+			} else {
+				// 已经生成订单未支付
+				obj.orderMoneyPay();
+			}
+		},
+		// 初次订单创建
+		firstCreateOrder() {
+			let obj = this;
+			// 获取下单页面数据
+			let prepage = obj.$api.prePage();
+			let store_id=prepage.store_id
+			if(store_id!=0){
+				var storeid=store_id
+			}else{
+				var storeid= prepage.tabCurrentIndex == 1 ? prepage.shopAddress.id : ''
+			}
+			let mark=prepage.desc
+			console.log(prepage.desc,'备注')
+			let data = {
+				real_name: prepage.addressData.real_name, //联系人名称
+				phone: prepage.addressData.phone, //联系人号码
+				couponId: prepage.couponChecked.id, //优惠券编号
+				addressId: prepage.addressData.id, //支付地址id
+				useIntegral: prepage.checkedPoints ? 1 : 0, //是否积分抵扣1为是0为否
+				payType: obj.payName, //支付类型  weixin-微信 yue-余额
+				mark:prepage.desc, //备注
+				// #ifdef H5
+				from: obj.froms ? 'weixin' : 'H5', //来源
+				// #endif
+				// #ifdef MP-WEIXIN
+				from: 'routine', //来源
+				// #endif
+				// #ifdef APP-PLUS
+				from: 'app', //来源
+				// #endif
+				shipping_type:prepage.tabCurrentIndex + 1, //提货方式 1 快递 2自提	
+				store_id:storeid,
+			};
+			// 判断是否拼团商品
+			if (obj.pinkid) {
+				data.pinkId = obj.pinkid;
+			}
+			// 生成订单
+			createOrderkey(data, obj.orderKey)
+				.then(({ data, status, msg }) => {
+					// 判断是否支付失败
+					if (data.status == 'ORDER_EXIST') {
+						uni.showModal({
+							title: '提示',
+							content: msg,
+							showCancel: false
+						});
+						uni.hideLoading();
+						obj.payLoding = false;
+						return;
+					}
+					// 保存订单号
+					obj.orderId = data.result.orderId;
+					// 判断是否为余额支付
+					if (obj.payName == 'yue') {
+						console.log()
+						if (status == 200 && data.status == 'SUCCESS') {
+							obj.paySuccessTo();
+						} else {
+							obj.$api.msg(msg);
+						}
+					} else if (obj.payName == 'normal_point') {
+						if (status == 200 && data.status == 'SUCCESS') {
+							obj.paySuccessTo();
+						} else {
+							obj.$api.msg(msg);
+						}
+					} else if (obj.payName == 'vip_point') {
+						if (status == 200 && data.status == 'SUCCESS') {
+							obj.paySuccessTo();
+						} else {
+							obj.$api.msg(msg);
+						}
+					}else {
+						// 立即支付
+						obj.orderMoneyPay();
+					}
+				})
+				.catch(e => {
+					uni.hideLoading();
+					obj.payLoding = false;
+					console.log(e);
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.app {
+	width: 100%;
+}
+
+.price-box {
+	background-color: #fff;
+	height: 265upx;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+	font-size: 28upx;
+	color: #909399;
+
+	.price {
+		font-size: 50upx;
+		color: #303133;
+		margin-top: 12upx;
+		&:before {
+			content: '¥';
+			font-size: 40upx;
+		}
+	}
+}
+
+.pay-type-list {
+	margin-top: 20upx;
+	background-color: #fff;
+	padding-left: 60upx;
+	.type-item {
+		height: 120upx;
+		padding: 20upx 0;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding-right: 60upx;
+		font-size: 30upx;
+		position: relative;
+	}
+	.cash-icon {
+		width: 100rpx;
+		height: 52rpx;
+		padding-right: 50rpx;
+	}
+	.icon {
+		width: 100upx;
+		font-size: 52upx;
+	}
+	.iconyue {
+		color: #fe8e2e;
+	}
+	.iconweixin {
+		color: #36cb59;
+	}
+	.iconzhifubao {
+		color: #01aaef;
+	}
+	.tit {
+		font-size: $font-lg;
+		color: $font-color-dark;
+		margin-bottom: 4upx;
+	}
+	.con {
+		flex: 1;
+		display: flex;
+		flex-direction: column;
+		font-size: $font-sm;
+		color: $font-color-light;
+	}
+}
+.mix-btn {
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 630upx;
+	height: 80upx;
+	margin: 80upx auto 30upx;
+	font-size: $font-lg;
+	color: #fff;
+	background-color: #F75022;
+	border-radius: 10upx;
+}
+
+.clickbg {
+	background-color: $color-gray !important;
+}
+</style>

+ 88 - 0
pages/money/paySuccess.vue

@@ -0,0 +1,88 @@
+<template>
+	<view class="content">
+		<image class="success-icon" src="https://hy.liuniu946.com/app/img/paySuccess1.png" mode=""></image>
+		<text class="tit">订单支付成功</text>
+		<view class="btn-group">
+			<navigator url="/pages/order/order?state=1" open-type="redirect" class="mix-btn">查看订单</navigator>
+			<navigator url="/pages/index/index" open-type="switchTab" class="mix-btn hollow">返回首页</navigator>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				type: 2 //1为兑换支付成功2为预购成功
+			};
+		},
+		onLoad(opt) {
+			// 保存订单号
+			// 	if ('type' in opt) {
+			// 		this.type = opt.type;
+			// 	}
+			// 	if (this.type == 1) {
+			// 		uni.setNavigationBarTitle({
+			// 			title: '兑换成功'
+			// 		});
+			// 	}
+			// 	if (this.type == 2) {
+			// 		uni.setNavigationBarTitle({
+			// 			title: '预约成功'
+			// 		});
+			// 	}
+		},
+		methods: {}
+	};
+</script>
+
+<style lang="scss">
+	.content {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.success-icon {
+		margin-top: 100rpx;
+		width: 302rpx;
+		height: 320rpx;
+	}
+
+	.tit {
+		margin-top: 40rpx;
+		font-size: 32rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #333333;
+	}
+
+	.btn-group {
+		padding-top: 130rpx;
+		display: flex;
+		justify-content: flex-start;
+	}
+
+	.mix-btn {
+
+		margin-top: 30upx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 301rpx;
+		height: 78rpx;
+		background: #f75022;
+		border-radius: 10rpx;
+		font-size: 30rpx;
+		font-weight: 500;
+		color: #fff;
+	
+	&.hollow {
+			margin-left: 36rpx;
+			background: #fff;
+			color: #f75022;
+			border: 2px solid #f75022;
+		}
+	}
+</style>

+ 486 - 0
pages/money/recharge.vue

@@ -0,0 +1,486 @@
+<template>
+	<view class="content">
+		<view class="top_box">
+			<text class="yue-tit">当前余额:</text>
+			<text class="yue-num">¥{{ now_money | parseFloatNum }}</text>
+		</view>
+
+		<view class="line_box"></view>
+
+		<view class="cz_box">
+			<view class="cz_wrap">
+				<text class="cz_tit">¥</text>
+				<input class="cz_input" type="number" v-model="money" @focus="changeNum()" placeholder="请输入充值金额" placeholder-class="placeholder" />
+			</view>
+			<view class="zc_list_box">
+				<view class="zc_list_price" :class="{ seletPrice: seletNum == item.price }" @click="seletChange(item, index)" v-for="(item, index) in list" :key="index">
+					{{ item.price | parseFloatNum }}元
+				</view>
+			</view>
+		</view>
+		<!-- <view class="line_box"></view> -->
+
+		<!-- <view class="row-box">
+			<view class="title">充值金额</view>
+			<view class="row">
+				<text class="tit">¥</text>
+				<input class="input" type="number" v-model="money" placeholder="请输入充值金额" placeholder-class="placeholder" />
+			</view>
+		</view> -->
+
+		<!-- <view class="rechar-box">
+			<view class="rechar-title">注意事项</view>
+			<view class="rechar-text" v-for="(item, index) in zhuyi" :key="index">
+				<text>{{ index + 1 }}.{{item}}</text>
+			</view>
+		</view> -->
+		<view class="line_box"></view>
+		<view class="cz-type">
+			<view class="type-left">
+				<view class="icon iconfont iconweixin"></view>
+				<view class="tit">微信充值</view>
+			</view>
+			<view class="right"><radio value="weixin" color="#262A35" :checked="type == 'weixin'" /></view>
+		</view>
+		<button class="add-btn up" :class="{ 'active-bg': payLoding }" @click="!payLoding ? confirm() : ''">立即充值</button>
+	</view>
+</template>
+
+<script>
+import { getMoneyStyle } from '@/utils/rocessor.js';
+// #ifdef H5
+import { rechargeWechat, rechargeIndex } from '@/api/wallet.js';
+// #endif
+// #ifdef MP
+import { rechargeWechat, rechargeRoutine, rechargeIndex } from '@/api/wallet.js';
+// #endif
+import { mapState } from 'vuex';
+import { spreadCommission, userBalance,moneyChong } from '@/api/wallet.js';
+export default {
+	filters: {
+		getMoneyStyle,
+		// 去处小数点后的0
+		parseFloatNum(clock) {
+			return parseFloat(clock);
+		}
+	},
+	data() {
+		return {
+			type: 'weixin',
+			money: '', //充值金额
+			payLoding: false ,//是否加载中
+			list: [
+				'300',
+				'200',
+				'150',
+				'100',
+				'50'
+			],
+			now_money:'',
+			seletNum: '300',	// 选中
+			zhuyi: [],
+			quota: '',	// 送的钱
+			typeText: 0,	// 0-微信 1-佣金
+		};
+	},
+	onLoad(options) {
+		this.loadData();
+	},
+	computed: {
+		// #ifdef H5
+		...mapState(['weichatObj', 'userInfo'])
+		// #endif
+		// #ifdef MP
+		...mapState(['userInfo'])
+		// #endif
+	},
+	methods: {
+		// 跳转
+		navTo(url) {
+			uni.navigateTo({
+				url: url
+			});
+		},
+		changeNum() {
+			this.seletNum = this.money = '';
+			console.log(this.seletNum, this.money);
+		},
+		seletChange(item, index) {
+			this.seletNum = item.price;
+			this.seletMoney = item.price;
+			this.money = item.price
+		},
+		// 切换选中对象
+		tabRadio(e) {
+			this.type = e.detail.value;
+			if ( e.detail.value == 'weixin' ) {
+				this.typeText = 0
+			} else {
+				this.typeText = 1
+			}
+		},
+		// 充值金额
+		rechargeXuan(item) {
+			this.money = item.price;
+			this.quota = item.quota;
+		},
+
+		loadData() {
+			moneyChong({}).then(({data}) =>{
+				console.log(data,"123456789");
+				this.list = data.recharge_quota;
+			});
+			userBalance({}).then(({ data }) => {
+				this.now_money = data.now_money;
+			});
+		},
+
+		// 提交
+		confirm() {
+			let obj = this;
+			obj.payLoding = true;
+			if( !obj.money ) {
+				obj.$api.msg('请输入金额');
+				obj.payLoding = false;
+				return;
+			}
+			// #ifdef H5
+			rechargeWechat({
+				price: this.money,
+				from: this.type ,
+			}).then(e => {
+					let da = e.data.data;
+					obj.weichatObj.chooseWXPay({
+						timestamp: da.timestamp,
+						nonceStr: da.nonceStr,
+						package: da.package,
+						signType: da.signType,
+						paySign: da.paySign,
+						success: function(res) {
+							uni.showToast({
+								title: '充值成功',
+								duration: 2000,
+								position: 'top',
+								success: function(res) {
+									uni.navigateBack()
+								}
+							});
+						}
+					});
+					obj.payLoding = false;
+				})
+				.catch(e => {
+					obj.payLoding = false;
+					console.log(e);
+				});
+			// #endif
+			// #ifdef MP
+			rechargeRoutine({ price: this.money})
+				.then(e => {
+					let da = e.data;
+						wx.requestPayment({
+								timeStamp: da.timestamp,
+								nonceStr: da.nonceStr,
+								package: da.package,
+								signType: da.signType,
+								paySign: da.paySign,
+								success: function(res) {
+									uni.showToast({
+										title: '充值成功',
+										duration: 2000,
+										position: 'top',
+										success: function(res) {
+											uni.navigateBack()
+										}
+									});
+								},
+
+							})
+
+					obj.payLoding = false;
+				})
+				.catch(e => {
+					obj.payLoding = false;
+					console.log(e);
+				});
+			// #endif
+		},
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	height: 100%;
+	background: #ffffff;
+}
+.top_box {
+	padding: 20rpx 26rpx 20rpx 47rpx;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+	.yue-tit {
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #333333;
+	}
+	.yue-num {
+		font-size: 30rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #FF4C4C;
+	}
+}
+
+.line_box {
+	width: 100%;
+	height: 20rpx;
+	background: #f8f8f8;
+}
+.cz_box {
+	padding: 40rpx 20rpx 20rpx;
+	.cz_wrap {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		padding-bottom: 20rpx;
+		border-bottom: 1px solid #e6e6e6;
+		.cz_tit {
+			font-size: 32rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+		}
+		.cz_input {
+			text-align: right;
+			font-size: 32rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			// color: #BFBFBF;
+		}
+	}
+	.zc_list_box {
+		display: flex;
+		flex-wrap: wrap;
+		.zc_list_price {
+			width: 202rpx;
+			height: 60rpx;
+			background: #f0f0f0;
+			border-radius: 8rpx;
+			margin-top: 36rpx;
+			margin-right: 50rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			&:nth-child(3n) {
+				margin-right: 0;
+			}
+		}
+		.seletPrice {
+			background: #f75022;
+			color: #fff;
+		}
+	}
+}
+.recha-box {
+	padding: 50rpx 30rpx 0;
+	display: flex;
+	flex-wrap: wrap;
+	.recha-frame {
+		width: 210rpx;
+		height: 181rpx;
+		border: 1px solid #dbdede;
+		border-radius: 20rpx;
+		display: flex;
+		align-items: center;
+		flex-direction: column;
+		justify-content: center;
+		margin-right: 30rpx;
+		margin-bottom: 30rpx;
+		&:nth-child(3n) {
+			margin-right: 0;
+		}
+		.recha-top {
+			display: flex;
+			align-items: center;
+			.recha-img {
+				width: 64rpx;
+				height: 62rpx;
+			}
+			.recha-tit {
+				margin-left: 10rpx;
+				font-size: 36rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #333333;
+			}
+		}
+		.recha-song {
+			margin-top: 20rpx;
+			font-size: $font-base;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #ff9900;
+		}
+	}
+	.select-frame {
+		border: 1px solid #ef041f;
+	}
+}
+
+.rechar-box {
+	padding: 30rpx 20rpx 0;
+	.rechar-title {
+		font-size: 32rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #333333;
+		margin-bottom: 10rpx;
+	}
+	.rechar-text {
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #333333;
+	}
+}
+.cz-type {
+	margin-top: 22rpx;
+	display: flex;
+	justify-content: space-between;
+	padding: 32rpx;
+	align-items: center;
+	.type-left {
+		display: flex;
+		align-items: center;
+		.icon {
+			height: 38rpx;
+			image {
+				width: 48rpx;
+				height: 38rpx;
+			}
+		}
+		.iconweixin {
+			color: #36cb59;
+		}
+		.tit {
+			margin-left: 12rpx;
+			font-size: 30rpx;
+			color: #333333;
+		}
+	}
+	.type-right {
+		image {
+			width: 36rpx;
+			height: 36rpx;
+		}
+	}
+}
+.add-btn {
+	&.modified {
+		
+	}
+	&.up {
+		color: #fff;
+	}
+	background: #f75022;
+	margin-top: 100rpx;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 604rpx;
+	height: 90rpx;
+	border: 2rpx solid #f75022;
+	border-radius: 10rpx;
+	font-size: 36rpx;
+	font-family: PingFang SC;
+	font-weight: 500;
+	color: #fff;
+	line-height: 90rpx;
+	text-align: center;
+}
+.row-box {
+	margin-top: 30rpx;
+	padding: 20rpx 30rpx;
+	background: #fff;
+	.title {
+		font-size: $font-base + 2rpx;
+		color: $font-color-dark;
+	}
+	.row {
+		display: flex;
+		align-items: center;
+		position: relative;
+		height: 80rpx;
+		.tit {
+			flex-shrink: 0;
+			width: 40rpx;
+			font-size: 30rpx;
+			color: $font-color-dark;
+		}
+		.input {
+			flex: 1;
+			font-size: 30rpx;
+			color: $font-color-dark;
+		}
+		.iconlocation {
+			font-size: 36rpx;
+			color: $font-color-light;
+		}
+
+		.buttom {
+			color: $font-color;
+			font-size: $font-base;
+		}
+	}
+}
+.list {
+	padding-left: 30rpx;
+	margin-top: 30rpx;
+	background-color: #ffffff;
+	.box {
+		display: flex;
+		align-items: center;
+		width: 100%;
+		height: 120rpx;
+		border-bottom: 1px solid $border-color-light;
+		padding-right: 25rpx;
+		.icon {
+			font-size: 48rpx;
+			padding-right: 20rpx;
+			display: flex;
+		}
+		.yongjing {
+			width: 48rpx;
+			height: 48rpx;
+		}
+		.iconweixin1 {
+			color: #18bf16;
+		}
+		.iconzhifubao {
+			color: #08aaec;
+		}
+		.title-box {
+			flex-grow: 1;
+			text-align: left;
+			.title {
+				font-size: $font-base + 2rpx;
+				color: $font-color-base;
+			}
+			.node {
+				font-size: $font-sm;
+				color: $font-color-light;
+			}
+		}
+	}
+}
+/deep/ .uni-radio-input {
+	width: 45rpx;
+	height: 45rpx;
+}
+
+.active-bg {
+	background: #f75022 !important;
+	color: #fff !important;
+}
+</style>

+ 86 - 0
pages/money/success.vue

@@ -0,0 +1,86 @@
+<template>
+	<view class="content">
+		<image class="success-icon" src="https://hy.liuniu946.com/app/img/success.png" mode=""></image>
+		<text class="tit">提交成功</text>
+		<view class="btn-group">
+			<!-- <navigator url="/pages/order/order?state=1" open-type="redirect" class="mix-btn">查看订单</navigator> -->
+			<navigator url="/pages/index/index" open-type="switchTab" class="mix-btn hollow">返回首页</navigator>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				type: 2 //1为兑换支付成功2为预购成功
+			};
+		},
+		onLoad(opt) {
+			// 保存订单号
+			// 	if ('type' in opt) {
+			// 		this.type = opt.type;
+			// 	}
+			// 	if (this.type == 1) {
+			// 		uni.setNavigationBarTitle({
+			// 			title: '兑换成功'
+			// 		});
+			// 	}
+			// 	if (this.type == 2) {
+			// 		uni.setNavigationBarTitle({
+			// 			title: '预约成功'
+			// 		});
+			// 	}
+		},
+		methods: {}
+	};
+</script>
+
+<style lang="scss">
+	.content {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.success-icon {
+		margin-top: 200rpx;
+		margin-left: -55rpx;
+		width: 400rpx;
+		height: 320rpx;
+	}
+
+	.tit {
+	font-size: 40rpx;
+	font-weight: 500;
+	color: #333333;
+	line-height: 40rpx;
+	}
+
+	.btn-group {
+		padding-top: 130rpx;
+		display: flex;
+		justify-content: flex-start;
+	}
+
+	.mix-btn {
+
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 301rpx;
+		height: 78rpx;
+		background: #f75022;
+		border-radius: 10rpx;
+		font-size: 30rpx;
+		font-weight: 500;
+		color: #fff;
+	
+	&.hollow {
+			background: #fff;
+			color: #f75022;
+			border: 2px solid #f75022;
+		}
+	}
+</style>

+ 571 - 0
pages/money/vipRecharge.vue

@@ -0,0 +1,571 @@
+<template>
+	<view class="content">
+		
+
+		<view class="line_box"></view>
+
+		<view class="cz_box">
+			<!-- <view class="cz_wrap">
+				<text class="cz_tit">¥</text>
+				<input class="cz_input" type="number" v-model="money" @focus="changeNum()" placeholder="请输入充值金额" placeholder-class="placeholder" />
+			</view> -->
+			<text class="yue-tit">充值金额</text>
+			<view class="zc_list_box">
+				<view class="zc_list_price" :class="{ seletPrice: seletNum == item }" @click="seletChange(item, index)"
+					v-for="(item, index) in listt" :key="index">
+					{{ item | parseFloatNum }}元
+				</view>
+			</view>
+		</view>
+		<!-- <view class="line_box"></view> -->
+
+		<!-- <view class="row-box">
+			<view class="title">充值金额</view>
+			<view class="row">
+				<text class="tit">¥</text>
+				<input class="input" type="number" v-model="money" placeholder="请输入充值金额" placeholder-class="placeholder" />
+			</view>
+		</view> -->
+
+		<!-- <view class="rechar-box">
+			<view class="rechar-title">注意事项</view>
+			<view class="rechar-text" v-for="(item, index) in zhuyi" :key="index">
+				<text>{{ index + 1 }}.{{item}}</text>
+			</view>
+		</view> -->
+		<view class="line_box"></view>
+		<view class="cz-type">
+			<view class="type-left">
+				<view class="icon iconfont iconweixin"></view>
+				<view class="tit">微信充值</view>
+			</view>
+			<view class="right">
+				<radio value="weixin" color="#262A35" :checked="type == 'weixin'" />
+			</view>
+		</view>
+		<button class="add-btn up" :class="{ 'active-bg': payLoding }"
+			@click="!payLoding ? confirm() : ''">立即充值</button>
+	</view>
+</template>
+
+<script>
+	import {
+		getMoneyStyle
+	} from '@/utils/rocessor.js';
+	// #ifdef H5
+	import {
+		rechargeWechat,
+		rechargeIndex,
+		vipWechat
+	} from '@/api/wallet.js';
+	// #endif
+	// #ifdef MP
+	import {
+		rechargeWechat,
+		rechargeRoutine,
+		rechargeIndex,
+		
+	} from '@/api/wallet.js';
+	// #endif
+	import {
+		mapState
+	} from 'vuex';
+	import {
+		spreadCommission,
+		userBalance,
+		moneyChong,
+		selectMoney
+	} from '@/api/wallet.js';
+	export default {
+		filters: {
+			getMoneyStyle,
+			// 去处小数点后的0
+			parseFloatNum(clock) {
+				return parseFloat(clock);
+			}
+		},
+		data() {
+			return {
+				type: 'weixin',
+				money: '', //充值金额
+				payLoding: false, //是否加载中
+				listt: [
+				],
+				now_money: '',
+				seletNum: '', // 选中
+				zhuyi: [],
+				quota: '', // 送的钱
+				typeText: 0, // 0-微信 1-佣金
+			};
+		},
+		onLoad(options) {
+			this.loadData();
+			this.getMoney()	
+			
+		},
+		onShow() {
+		
+		},
+		computed: {
+			// #ifdef H5
+			...mapState(['weichatObj', 'userInfo'])
+			// #endif
+			// #ifdef MP
+			...mapState(['userInfo'])
+			// #endif
+		},
+		methods: {
+			//获取充值金额数字
+			getMoney(){
+				selectMoney().then(res=>{
+					console.log(res,'res');
+					this.listt= res.data
+				})
+			},
+			// 跳转
+			navTo(url) {
+				uni.navigateTo({
+					url: url
+				});
+			},
+			// changeNum() {
+			// 	this.seletNum = this.money = '';
+			// 	console.log(this.seletNum, this.money);
+			// },
+			seletChange(item, index) {
+				console.log(item, index);
+				this.seletNum = item;
+				// this.seletMoney = item;
+				
+				this.money = item
+				console.log(this.seletNum, 'price');
+			},
+			// 切换选中对象
+			// tabRadio(e) {
+			// 	this.type = e.detail.value;
+			// 	if (e.detail.value == 'weixin') {
+			// 		this.typeText = 0
+			// 	} else {
+			// 		this.typeText = 1
+			// 	}
+			// },
+			// 充值金额
+			// rechargeXuan(item) {
+			// 	this.money = item;
+			// 	console.log(this.money,'money');
+			// 	this.quota = item.quota;
+			// },
+
+			loadData() {
+				moneyChong({}).then(({
+					data
+				}) => {
+					console.log(data, "123456789");
+					this.list = data.recharge_quota;
+				});
+				userBalance({}).then(({
+					data
+				}) => {
+					this.now_money = data.now_money;
+				});
+			},
+
+			// 提交
+			confirm() {
+				let obj = this;
+				obj.payLoding = true;
+				// if( !obj.money ) {
+				// 	obj.$api.msg('请输入金额');
+				// 	obj.payLoding = false;
+				// 	return;
+				// }
+				// #ifdef H5
+				console.log(obj.money,'money');
+				vipWechat({
+						price: obj.money,
+						from: obj.type,
+					}).then(e => {
+						let da = e.data.data;
+						obj.weichatObj.chooseWXPay({
+							timestamp: da.timestamp,
+							nonceStr: da.nonceStr,
+							package: da.package,
+							signType: da.signType,
+							paySign: da.paySign,
+							success: function(res) {
+								uni.showToast({
+									title: '充值成功',
+									duration: 2000,
+									position: 'top',
+									success: function(res) {
+										uni.navigateBack()
+									}
+								});
+							}
+						});
+						obj.payLoding = false;
+					})
+					.catch(e => {
+						obj.payLoding = false;
+						console.log(e);
+					});
+				// #endif
+				// #ifdef MP
+				rechargeRoutine({
+						price: this.money
+					})
+					.then(e => {
+						let da = e.data;
+						wx.requestPayment({
+							timeStamp: da.timestamp,
+							nonceStr: da.nonceStr,
+							package: da.package,
+							signType: da.signType,
+							paySign: da.paySign,
+							success: function(res) {
+								uni.showToast({
+									title: '充值成功',
+									duration: 2000,
+									position: 'top',
+									success: function(res) {
+										uni.navigateBack()
+									}
+								});
+							},
+
+						})
+
+						obj.payLoding = false;
+					})
+					.catch(e => {
+						obj.payLoding = false;
+						console.log(e);
+					});
+				// #endif
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		height: 100%;
+		background: #ffffff;
+	}
+
+	.top_box {
+		padding: 20rpx 26rpx 20rpx 47rpx;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+
+		.yue-tit {
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+		}
+
+		.yue-num {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #FF4C4C;
+		}
+	}
+
+	.line_box {
+		width: 100%;
+		height: 20rpx;
+		background: #f8f8f8;
+	}
+
+	.cz_box {
+		padding: 40rpx 20rpx 20rpx;
+
+		.cz_wrap {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			padding-bottom: 20rpx;
+			border-bottom: 1px solid #e6e6e6;
+
+			.cz_tit {
+				font-size: 32rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+			}
+
+			.cz_input {
+				text-align: right;
+				font-size: 32rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				// color: #BFBFBF;
+			}
+		}
+
+		.zc_list_box {
+			display: flex;
+			flex-wrap: wrap;
+
+			.zc_list_price {
+				display: flex;
+				justify-content: center;
+				width: 202rpx;
+				height: 60rpx;
+				background: #f0f0f0;
+				border-radius: 8rpx;
+				margin-top: 36rpx;
+				margin-right: 50rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+
+				&:nth-child(3n) {
+					margin-right: 0;
+				}
+			}
+
+			.seletPrice {
+				background: #f75022;
+				color: #fff;
+			}
+		}
+	}
+
+	.recha-box {
+		padding: 50rpx 30rpx 0;
+		display: flex;
+		flex-wrap: wrap;
+
+		.recha-frame {
+			width: 210rpx;
+			height: 181rpx;
+			border: 1px solid #dbdede;
+			border-radius: 20rpx;
+			display: flex;
+			align-items: center;
+			flex-direction: column;
+			justify-content: center;
+			margin-right: 30rpx;
+			margin-bottom: 30rpx;
+
+			&:nth-child(3n) {
+				margin-right: 0;
+			}
+
+			.recha-top {
+				display: flex;
+				align-items: center;
+
+				.recha-img {
+					width: 64rpx;
+					height: 62rpx;
+				}
+
+				.recha-tit {
+					margin-left: 10rpx;
+					font-size: 36rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #333333;
+				}
+			}
+
+			.recha-song {
+				margin-top: 20rpx;
+				font-size: $font-base;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #ff9900;
+			}
+		}
+
+		.select-frame {
+			border: 1px solid #ef041f;
+		}
+	}
+
+	.rechar-box {
+		padding: 30rpx 20rpx 0;
+
+		.rechar-title {
+			font-size: 32rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #333333;
+			margin-bottom: 10rpx;
+		}
+
+		.rechar-text {
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #333333;
+		}
+	}
+
+	.cz-type {
+		margin-top: 22rpx;
+		display: flex;
+		justify-content: space-between;
+		padding: 32rpx;
+		align-items: center;
+
+		.type-left {
+			display: flex;
+			align-items: center;
+
+			.icon {
+				height: 38rpx;
+
+				image {
+					width: 48rpx;
+					height: 38rpx;
+				}
+			}
+
+			.iconweixin {
+				color: #36cb59;
+			}
+
+			.tit {
+				margin-left: 12rpx;
+				font-size: 30rpx;
+				color: #333333;
+			}
+		}
+
+		.type-right {
+			image {
+				width: 36rpx;
+				height: 36rpx;
+			}
+		}
+	}
+
+	.add-btn {
+		&.modified {}
+
+		&.up {
+			color: #fff;
+		}
+
+		background: #f75022;
+		margin-top: 100rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 604rpx;
+		height: 90rpx;
+		border: 2rpx solid #f75022;
+		border-radius: 10rpx;
+		font-size: 36rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #fff;
+		line-height: 90rpx;
+		text-align: center;
+	}
+
+	.row-box {
+		margin-top: 30rpx;
+		padding: 20rpx 30rpx;
+		background: #fff;
+
+		.title {
+			font-size: $font-base + 2rpx;
+			color: $font-color-dark;
+		}
+
+		.row {
+			display: flex;
+			align-items: center;
+			position: relative;
+			height: 80rpx;
+
+			.tit {
+				flex-shrink: 0;
+				width: 40rpx;
+				font-size: 30rpx;
+				color: $font-color-dark;
+			}
+
+			.input {
+				flex: 1;
+				font-size: 30rpx;
+				color: $font-color-dark;
+			}
+
+			.iconlocation {
+				font-size: 36rpx;
+				color: $font-color-light;
+			}
+
+			.buttom {
+				color: $font-color;
+				font-size: $font-base;
+			}
+		}
+	}
+
+	.list {
+		padding-left: 30rpx;
+		margin-top: 30rpx;
+		background-color: #ffffff;
+
+		.box {
+			display: flex;
+			align-items: center;
+			width: 100%;
+			height: 120rpx;
+			border-bottom: 1px solid $border-color-light;
+			padding-right: 25rpx;
+
+			.icon {
+				font-size: 48rpx;
+				padding-right: 20rpx;
+				display: flex;
+			}
+
+			.yongjing {
+				width: 48rpx;
+				height: 48rpx;
+			}
+
+			.iconweixin1 {
+				color: #18bf16;
+			}
+
+			.iconzhifubao {
+				color: #08aaec;
+			}
+
+			.title-box {
+				flex-grow: 1;
+				text-align: left;
+
+				.title {
+					font-size: $font-base + 2rpx;
+					color: $font-color-base;
+				}
+
+				.node {
+					font-size: $font-sm;
+					color: $font-color-light;
+				}
+			}
+		}
+	}
+
+	/deep/ .uni-radio-input {
+		width: 45rpx;
+		height: 45rpx;
+	}
+
+	.active-bg {
+		background: #f75022 !important;
+		color: #fff !important;
+	}
+</style>

+ 194 - 0
pages/money/vipShop.vue

@@ -0,0 +1,194 @@
+<template>
+	<view>
+		<view class="jx-box-content" v-for="item in vipList" @click="navToDetailPage(item)">
+			<view class="content-left">
+				<image :src=item.image mode=""></image>
+			</view>
+			<view class="content-right">
+				<view class="shop-name">
+					{{item.store_name}}
+				</view>
+				<view class="shop-content">
+					<view class="shop-content-left">
+						<view class="price-box">
+							<view class="yuan-price">
+								¥{{item.ot_price}}
+							</view>
+							<image src="../../static/sy/sy06.png" mode=""></image>
+							<view class="j-price">
+								直降{{item.ot_price*1-item.price*1}}元
+							</view>
+						</view>
+						<view class="price-x">
+							¥{{item.price}}
+						</view>
+					</view>
+					<view class="shop-content-right" >
+						立即购买
+					</view>
+				</view>
+			</view>
+		</view>
+		<uni-load-more :status="loadingType"></uni-load-more>
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from '@/uview-ui/components/u-loadmore/u-loadmore.vue';
+	import {getVip} from '@/api/index.js';
+	export default {
+		components:{
+			uniLoadMore
+		},
+		data() {
+			return {
+				vipList:[],//商品列表
+				page:1,
+				limit:10,
+				loadingType:'more'
+			};
+		},
+		onLoad() {
+		    this.getVipList()
+		},
+		onReachBottom() {
+		    this.getVipList()
+		},
+		methods:{
+			navToDetailPage(item) {
+				let id = item.id;
+				uni.navigateTo({
+					url: '/pages/product/product?id=' + id +'&isVip='+0
+				});
+			},
+			getVipList(){
+				let obj = this
+				if(obj.loadingType === 'loading' || obj.loadingType === 'noMore'){
+					return //如果正在加载中,防止重复加载
+				}
+				obj.loadingType = 'loading'
+				getVip(
+				{   page:obj.page,
+					limit:obj.limit,
+					is_vip:3
+				}).then(res=>{
+					
+					 res.data.forEach(e=>{
+						e.isVip = e.store_type? "3" : "0"
+					 })
+					console.log(res.data,'vip商品');
+					 if(res.data.length>0){
+						obj.vipList = obj.vipList.concat(res.data)
+						console.log(obj.vipList,'vip');
+						obj.page++
+					 }
+					if(obj.limit == res.data.length){
+						console.log("haiyou");
+						obj.loadingType = 'more'
+					}else{
+						console.log("wule");
+						obj.loadingType = 'noMore'
+					}
+					console.log(obj.loadingType,"12345789");
+					uni.hideLoading()
+					this.$set(obj.vipList,'loaded',true)
+				})
+				
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.jx-box-content {
+		display: flex;
+		.content-left {
+			margin: 20rpx 15rpx;
+			width: 236rpx;
+			height: 236rpx;
+			background: #E2E2E2;
+			border-radius: 10rpx;
+			image {
+				width: 100%;
+				height:100%;
+			}
+		}
+	
+
+		.content-right {
+			display: flex;
+			flex-direction: column;
+			justify-content: space-around;
+			
+			.shop-name {
+				width: 382rpx;
+				font-size: 32rpx;
+				font-weight: bold;
+				color: #333333;
+				
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display:-webkit-box;
+				-webkit-box-orient:vertical;
+				-webkit-line-clamp:2;
+			}
+
+			.shop-content {
+				width: 455rpx;
+				display: flex;
+				justify-content: space-between;
+				
+				.shop-content-left {
+					display: flex;
+					flex-direction: column;
+					
+					
+					
+					.price-box {
+						display: flex;
+						align-items: center;
+						.yuan-price {
+							font-size: 26rpx;
+							font-weight: 500;
+							text-decoration: line-through;
+							color: #999999;
+						}
+
+						image {
+							margin: 0 10rpx;
+							width: 16rpx;
+							height: 18rpx;
+						}
+
+						.j-price {
+							font-size: 24rpx;
+							font-weight: bold;
+							color: #B59467;
+						}
+					}
+
+					.price-x {
+						font-size: 36rpx;
+						font-weight: bold;
+						color: #FF4C4C;
+					}
+				}
+
+				.shop-content-right {
+					margin-top:20rpx ;
+					align-items: center;
+					text-align: center;
+					width: 137rpx;
+					height: 52rpx;
+					font-size: 26rpx;
+					font-weight: 500;
+					color: #fff;
+					background: #f75022;
+					border-radius: 26rpx;
+					line-height: 52rpx;
+				}
+			}
+		}
+	}
+</style>

+ 443 - 0
pages/money/wallet.vue

@@ -0,0 +1,443 @@
+<template>
+	<view class="content">
+		<view class="content-money">
+			<view class="status_bar"><!-- 这里是状态栏 --></view>
+			<!-- #ifndef MP-WEIXIN -->
+			<view class="body-title">
+				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view>
+				<view class="header">我的钱包</view>
+			</view>
+			<!-- #endif -->
+			
+			<view class="content-bg"></view>
+			<view class="money-box">
+				<view class="money">{{money | getMoneyStyle}}</view>
+				<view>余额</view>
+			</view>
+			<view class="moneybtn-box">
+				<view class="money-btn" @click="navto('/pages/money/withdmoenys?type=yue')">
+					<!-- 易货券转账 -->
+				</view>
+				<view class="money-btn" @click="navto('/pages/money/recharge')">
+					钱包充值>
+				</view>
+			</view>
+		</view>
+		<view class="info-box flex">
+			<view class="info-item">
+				<view class="info-font">累计收入</view>
+				<view class="info-num">{{shouzhi.income || '0.00'}}</view>
+			</view>
+			<view class="shu"></view>
+			<view class="info-item">
+				<view class="info-font">累计支出</view>
+				<view class="info-num">{{shouzhi.expen|| '0.00'}}</view>
+			</view>
+		</view>
+		<view class="navbar">
+			<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
+		</view>
+		<swiper :current="tabCurrentIndex" :style="{ height: height }" class="swiper-box" duration="300" @change="changeTab">
+			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
+				<scroll-view scroll-y="true" class="list-scroll-content" @scrolltolower="loadData">
+					<!-- 空白页 -->
+					<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
+	
+					<!-- 订单列表 -->
+					<view>
+						<view class="order-item flex" v-for="(item, index) in tabItem.orderList" :key="index">
+							<view class="title-box">
+								<view class="title">
+									<text>{{ item.title }}</text>
+								</view>
+								<view class="time">
+									<text>{{ item.add_time }}</text>
+								</view>
+							</view>
+							<view class="money">
+								<view>{{ (tabItem.state==1?'-':'+')+item.number }}</view>
+								<view v-if="item.status == 0" class="status">待发放</view>
+							</view>
+						</view>
+					</view>
+					<uni-load-more :status="tabItem.loadingType" v-if="!(tabItem.orderList.length == 0 && tabItem.loaded)"></uni-load-more>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+import { spreadCommission, userBalance,getSpreadsum } from '@/api/wallet.js';
+import { getMoneyStyle } from '@/utils/rocessor.js';
+import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+import empty from '@/components/empty';
+export default {
+	filters: {
+		getMoneyStyle
+	},
+	components: {
+		empty,
+		uniLoadMore
+	},
+	onReady(res) {
+		var _this = this;
+		uni.getSystemInfo({
+			success: resu => {
+				const query = uni.createSelectorQuery();
+				query.select('.swiper-box').boundingClientRect();
+				query.exec(function(res) {
+					_this.height = resu.windowHeight - res[0].top + 'px';
+					console.log('打印页面的剩余高度', _this.height);
+				});
+			},
+			fail: res => {}
+		});
+	},
+	data() {
+		return {
+			height: '',
+			// 头部图高度
+			maxheight:'',
+			tabCurrentIndex: 0,
+			orderStatusSum: 0,
+			recharge: 0,
+			navList: [
+				// {
+				// 	state: 0,
+				// 	text: '全部',
+				// 	loadingType: 'more',
+				// 	orderList: [],
+				// 	page: 1, //当前页数
+				// 	limit: 10 //每次信息条数
+				// },
+				{
+					state: 1,
+					text: '支出',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10 //每次信息条数
+				},
+				{
+					state: 2,
+					text: '收入',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10 //每次信息条数
+				}
+			],
+			money: '',
+			shouzhi:[],
+		};
+	},
+	onLoad(options) {},
+	onShow() {
+		getSpreadsum().then(res=>{
+			this.shouzhi = res.data
+			console.log(res,'在拍卖行');
+		})
+		this.loadData();
+		// 获取用户余额
+		userBalance({}).then(({ data }) => {
+			this.money = data.now_money;
+		});
+	},
+	methods: {
+		// 页面跳转
+		navto(e) {
+			uni.navigateTo({
+				url: e
+			});
+		},
+		//获取收入支出信息
+		async loadData(source) {
+			let obj = this
+			//这里是将订单挂载到tab列表下
+			let index = this.tabCurrentIndex;
+			let navItem = this.navList[index];
+			let state = navItem.state;
+			if (source === 'tabChange' && navItem.loaded === true) {
+				//tab切换只有第一次需要加载数据
+				return;
+			}
+			if (navItem.loadingType === 'loading') {
+				//防止重复加载
+				return;
+			}
+			// 修改当前对象状态为加载中
+			navItem.loadingType = 'loading';
+
+			spreadCommission(
+				{
+					page: navItem.page,
+					limit: navItem.limit
+				},
+				state
+			)
+				.then(({ data }) => {
+					
+					console.log(navItem.state);
+					console.log(data,'1');
+					console.log(JSON.stringify(data),'2')
+					
+					obj.recharge = data.income;//累计收入
+					obj.orderStatusSum = data.expend;//支出
+					if (data.length > 0) {
+						navItem.orderList = navItem.orderList.concat(data[0].list);
+						console.log(navItem.orderList,'徐浩岚');
+						navItem.page++;
+					}else {
+						navItem.loadingType = 'noMore';
+					}
+					if (navItem.limit == data[0].list.length) {
+						//判断是否还有数据, 有改为 more, 没有改为noMore
+						navItem.loadingType = 'more';
+						return;
+					} else {
+						//判断是否还有数据, 有改为 more, 没有改为noMore
+						navItem.loadingType = 'noMore';
+					}
+					uni.hideLoading();
+					this.$set(navItem, 'loaded', true);
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+
+		//swiper 切换
+		changeTab(e) {
+			this.tabCurrentIndex = e.target.current;
+			this.loadData('tabChange');
+		},
+		//顶部tab点击
+		tabClick(index) {
+			this.tabCurrentIndex = index;
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: #f1f1f1;
+	height: 100%;
+}
+.status_bar {
+	height: var(--status-bar-height);
+	width: 100%;
+}
+.content-money {
+	position: relative;
+	height: 480rpx;
+	.content-bg {
+		background: #f75022;
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 480rpx;
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+	.body-title {
+		height: 80rpx;
+		text-align: center;
+		font-size: 35rpx;
+		position: relative;
+		.header {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 100%;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fffeff;
+			height: 80rpx;
+			font-size: 36rpx;
+			font-weight: 700;
+			z-index: 9;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+		.goback-box {
+			position: absolute;
+			left: 18rpx;
+			top: 0;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+		}
+
+		.goback {
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
+		}
+	}
+}
+.info-box {
+	width: 670rpx;
+	height: 186rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	margin: -100rpx auto 0;
+	position: relative;
+	z-index: 2;
+	.info-item {
+		width: 50%;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		line-height: 1;
+		.info-font {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #999999;
+		}
+		.info-num {
+			margin-top: 30rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #181818;
+		}
+	}
+	.shu {
+		width: 2rpx;
+		height: 74rpx;
+		background: #dcdfe6;
+	}
+}
+.money-box {
+	position: relative;
+	z-index: 2;
+	padding-top: 70rpx;
+	color: #ffffff;
+	text-align: center;
+	.money {
+		font-size: 72rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #ffffff;
+	}
+	.text {
+		font-size: 30rpx;
+	}
+}
+.moneybtn-box {
+	display: flex;
+	justify-content: space-between;
+	position: relative;
+	z-index: 2;
+	color: #fff;
+	/* #ifdef H5 */
+	padding:20rpx 50rpx ;
+	/* #endif */
+	/* #ifdef MP-WEIXIN */
+	padding:0rpx 50rpx ;
+	/* #endif */
+	font-size: 30rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #fff;
+}
+
+.navbar {
+	margin-top: 20rpx;
+	display: flex;
+	height: 88rpx;
+	padding: 0 5px;
+	background: #fff;
+	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
+	position: relative;
+	z-index: 10;
+	.nav-item {
+		flex: 1;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+		font-size: 15px;
+		color: #999999;
+		position: relative;
+		&.current {
+			color: #000;
+			&:after {
+				content: '';
+				position: absolute;
+				left: 50%;
+				bottom: 0;
+				transform: translateX(-50%);
+				width: 44px;
+				height: 0;
+				border-bottom: 2px solid #fff;
+			}
+		}
+	}
+}
+//列表
+.swiper-box {
+	.order-item:last-child {
+		margin-bottom: 60rpx;
+	}
+	.order-item {
+		padding: 20rpx 30rpx;
+		line-height: 1.5;
+		.title-box {
+			.title {
+				font-size: $font-lg;
+				color: $font-color-base;
+			}
+			.time {
+				font-size: $font-base;
+				color: $font-color-light;
+			}
+		}
+		.money {
+			color: #fd5b23;
+			font-size: $font-lg;
+			text-align: right;
+			.status {
+				color: $font-color-light;
+			}
+		}
+	}
+}
+.list-scroll-content {
+	background: #ffffff;
+	height: 100%;
+}
+.content {
+	height: 100%;
+	.empty-content {
+		background-color: #ffffff;
+	}
+}
+.btn-box {
+	width: 674rpx;
+	height: 88rpx;
+	background: linear-gradient(0deg, #2e58ff, #32c6ff);
+	border-radius: 44rpx;
+	font-size: 36rpx;
+	font-family: PingFang SC;
+	font-weight: 500;
+	color: #ffffff;
+	text-align: center;
+	line-height: 88rpx;
+	position: fixed;
+	bottom: 48rpx;
+	left: 0;
+	right: 0;
+	margin: 0 auto;
+}
+</style>

+ 335 - 0
pages/money/withdmoenys.vue

@@ -0,0 +1,335 @@
+<template>
+	<view class="content">
+		<view class="content-money">
+			<view class="flex" v-if="type == 'xl'">
+				<view class="buttom">
+					<view class="icon">{{ userInfo.integral | getMoneyStyle }}</view>
+					<text class="text">可用响亮积分</text>
+				</view>
+			</view>
+			<view class="flex" v-if="type == 'yue'">
+				<view class="buttom">
+					<view class="icon">{{ userInfo.now_money | getMoneyStyle }}</view>
+					<text class="text">可用余额</text>
+				</view>
+			</view>
+			<view class="flex" v-if="type == 'cash'">
+				<view class="buttom">
+					<view class="icon">{{ userInfo.brokerage_price | getMoneyStyle }}</view>
+					<text class="text">可用现金</text>
+				</view>
+			</view>
+		</view>
+		<view class="row-box">
+			<view class="title">收款人手机号</view>
+			<view class="row"><input class="input" type="number" v-model="card" placeholder="请输入收款人手机号" placeholder-class="placeholder" /></view>
+		</view>
+		<view class="row-box">
+			<view class="title">转账金额</view>
+			<view class="row">
+				<!-- <text class="tit">¥</text> -->
+				<input class="input" type="number" v-model="withdrawal" placeholder="转入金额" placeholder-class="placeholder" />
+				<view class="buttom" v-if="type == 'xl'" @click="withdrawal = userInfo.integral">全部转账</view>
+				<view class="buttom" v-if="type == 'yue'" @click="withdrawal = userInfo.now_money">全部转账</view>
+				<view class="buttom" v-if="type == 'cash'" @click="withdrawal = userInfo.brokerage_price">全部转账</view>
+			</view>
+		</view>
+		<view class="tip" v-if="withdrawal != 0 && type == 'xl'">实际转入{{ realmoney }}响亮积分,{{ gy }}响亮积分流入公益池</view>
+
+		<button class="add-btn up" :class="{ action: loding }" @click="!loding ? confirm() : ''">提交申请</button>
+	</view>
+</template>
+
+<script>
+import { getMoneyStyle } from '@/utils/rocessor.js';
+import { getUserInfo, transfer, yuetransfer, cashtransfer,} from '@/api/user.js';
+import { extractBank } from '@/api/wallet.js';
+import { mapMutations, mapState } from 'vuex';
+export default {
+	filters: {
+		getMoneyStyle
+	},
+	data() {
+		return {
+			money: '0.00', //可提现金额
+			withdrawal: '', //提现金额
+			password: '', //支付密码
+			card: '', //转账卡号
+			name: '',
+			// #ifdef H5
+			weichatBsrowser: false,
+			// #endif
+			loding: false,
+			type: 'xl'
+		};
+	},
+	onLoad(options) {
+		// #ifdef H5
+		this.weichatBsrowser = uni.getStorageSync('weichatBrowser');
+		// #endif
+		this.dataUp();
+		if (options.type) {
+			this.type = options.type;
+			console.log(this.type);
+		}
+	},
+	computed: {
+		...mapState('user', ['userInfo']),
+		realmoney() {
+			return (this.withdrawal * 0.9).toFixed(2) * 1;
+		},
+		gy() {
+			return (this.withdrawal * 0.08).toFixed(2) * 1;
+		}
+	},
+	methods: {
+		...mapMutations('user', ['setUserInfo', 'login']),
+		// 更新数据
+		dataUp() {
+			let obj = this;
+			getUserInfo({})
+				.then(e => {
+					obj.login();
+					// 保存返回用户数据
+					obj.setUserInfo(e.data);
+				})
+				.catch(e => {
+					console.log(e);
+				});
+			extractBank({}).then(({ data }) => {
+				console.log(data,'22222');
+			   this.money = data.brokerage_price;
+			   // 冻结佣金
+			   // this.freezeMoney = data.freezePrice;
+			  });
+		},
+		// 切换选中对象
+		tabRadio(e) {
+			this.type = e.detail.value;
+		},
+		// 提交
+		confirm() {
+			let obj = this;
+			obj.loding = true;
+			if (obj.withdrawal == 0) {
+				obj.loding = false;
+				uni.showModal({
+					title: '提示',
+					content: '转账金额不要为0'
+				});
+				return;
+			}
+			if (obj.card == obj.userInfo.phone) {
+				obj.loding = false;
+				uni.showModal({
+					title: '提示',
+					content: '不要输入自己的用户账号'
+				});
+			} else {
+				let data = {
+					to_user_account: obj.card, //编号
+					num: obj.withdrawal //金额
+				};
+				if (obj.type == 'xl') {
+					transfer(data)
+						.then(e => {
+							// 允许按钮点击
+							obj.loding = false;
+							// 初始化提现金额
+							obj.withdrawal = '';
+							uni.showToast({
+								title: '提交成功',
+								duration: 2000,
+								position: 'top'
+							});
+							obj.dataUp();
+						})
+						.catch(e => {
+							obj.$api.msg(e.msg);
+							obj.loding = false;
+							console.log();
+						});
+				}
+				if (obj.type == 'yue') {
+					yuetransfer(data)
+						.then(e => {
+							// 允许按钮点击
+							obj.loding = false;
+							// 初始化提现金额
+							obj.withdrawal = '';
+							uni.showToast({
+								title: '提交成功',
+								duration: 2000,
+								position: 'top'
+							});
+							obj.dataUp();
+						})
+						.catch(e => {
+							obj.$api.msg(e.msg);
+							obj.loding = false;
+							console.log();
+						});
+				}
+				if (obj.type == 'cash') {
+					cashtransfer(data)
+						.then(e => {
+							// 允许按钮点击
+							obj.loding = false;
+							// 初始化提现金额
+							obj.withdrawal = '';
+							uni.showToast({
+								title: '提交成功',
+								duration: 2000,
+								position: 'top'
+							});
+							obj.dataUp();
+						})
+						.catch(e => {
+							obj.$api.msg(e.msg);
+							obj.loding = false;
+							console.log();
+						});
+				}
+			}
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	height: 100%;
+}
+.content-money {
+	padding: 30rpx 0;
+	background: #ffffff;
+}
+
+.item {
+	padding: 0 $page-row-spacing;
+	background-color: #ffffff;
+}
+.flex {
+	background-color: #ffffff;
+	text-align: center;
+	margin: 0 30rpx;
+	border-radius: $border-radius-sm;
+	justify-content: center;
+	.buttom {
+		font-size: $font-lg;
+		width: 50%;
+	}
+	.interval {
+		width: 2px;
+		height: 60rpx;
+		background-color: #eeeeee;
+	}
+	.icon {
+		background-size: 100%;
+		font-size: 42rpx;
+		color: $font-color-dark;
+		font-weight: bold;
+		background-repeat: no-repeat;
+		background-position: center;
+	}
+	.text {
+		color: $font-color-light;
+	}
+}
+
+.row-box {
+	margin-top: 30rpx;
+	padding: 20rpx 30rpx;
+	background: #fff;
+	.title {
+		font-size: $font-base + 2rpx;
+		color: $font-color-dark;
+	}
+	.row {
+		display: flex;
+		align-items: center;
+		position: relative;
+		height: 80rpx;
+		.tit {
+			flex-shrink: 0;
+			width: 40rpx;
+			font-size: 30rpx;
+			color: $font-color-dark;
+		}
+		.input {
+			flex: 1;
+			font-size: 30rpx;
+			color: $font-color-dark;
+		}
+		.iconlocation {
+			font-size: 36rpx;
+			color: $font-color-light;
+		}
+
+		.buttom {
+			color: #f21f5d;
+			font-size: $font-base;
+		}
+	}
+}
+.add-btn {
+	width: 520rpx;
+	height: 80rpx;
+	border: 2rpx solid #f21f5d;
+	border-radius: 40rpx;
+	margin: 140rpx auto;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #f21f5d;
+}
+.name {
+	background: #fff;
+	padding: 30rpx;
+}
+.list {
+	padding-left: 30rpx;
+	margin-top: 30rpx;
+	background-color: #ffffff;
+	.box {
+		display: flex;
+		align-items: center;
+		width: 100%;
+		height: 120rpx;
+		border-bottom: 1px solid $border-color-light;
+		.icon {
+			font-size: 48rpx;
+			padding-right: 20rpx;
+			.icon-img {
+				height: 50rpx;
+				width: 50rpx;
+			}
+		}
+		.iconweixin1 {
+			color: #18bf16;
+		}
+		.iconzhifubao {
+			color: #08aaec;
+		}
+		.title-box {
+			flex-grow: 1;
+			text-align: left;
+			.title {
+				font-size: $font-base + 2rpx;
+				color: $font-color-base;
+			}
+			.node {
+				font-size: $font-sm;
+				color: $font-color-light;
+			}
+		}
+	}
+}
+.tip {
+	padding: 20rpx;
+	color: #ff0000;
+}
+/deep/ .uni-radio-input {
+	width: 45rpx;
+	height: 45rpx;
+}
+</style>

+ 260 - 0
pages/money/withdrawal.vue

@@ -0,0 +1,260 @@
+<template>
+	<view class="content">
+		<view class="content-money">
+			<view class="flex ">
+				<view class="buttom">
+					<view class="icon">{{ money | getMoneyStyle }}</view>
+					<text class="text">可转换金额</text>
+				</view>
+			</view>
+		</view>
+		<view class="row-box">
+			<view class="title">转换金额</view>
+			<view class="row">
+				<text class="tit">¥</text>
+				<input class="input" type="number" v-model="withdrawal" placeholder="请输入消费券数量" placeholder-class="placeholder" />
+				<view class="buttom" @click="withdrawal = money">全部转换</view>
+			</view>
+		</view>
+		<button class="add-btn up" @click="confirm">提交申请</button>
+		<view class="tip" v-if="withdrawal != 0">
+			实际到账{{ realmoney }}现金
+		</view>
+	</view>
+</template>
+
+<script>
+import { getMoneyStyle } from '@/utils/rocessor.js';
+import { exchangeCash, extractBank, aliInfo, bankInfo } from '@/api/wallet.js';
+import uniNoticeBar from '@/components/uni-notice-bar/uni-notice-bar.vue';
+export default {
+	filters: {
+		getMoneyStyle
+	},
+	components: {
+		uniNoticeBar
+	},
+	data() {
+		return {
+			type: 'weixin', //提现方式
+			money: '0.00', //可提现金额
+			withdrawal: '', //提现金额
+			aliData: {},
+			bankData: {},
+			// #ifdef H5
+			weichatBsrowser: false
+			// #endif
+		};
+	},
+	onLoad(options) {
+		// #ifdef H5
+		this.weichatBsrowser = uni.getStorageSync('weichatBrowser');
+		// #endif
+		//加载提现信息
+		this.loadData();
+		// 加载提款账号信息
+		this.loadAli();
+		this.loadBank();
+	},
+	computed:{
+		realmoney() {
+			return (this.withdrawal * 0.7).toFixed(2) * 1
+		},
+		gy() {
+			return (this.withdrawal * 0.3).toFixed(2) * 1
+		}
+	},
+	methods: {
+		// 更新数据
+		dataUp(){
+			this.loadAli();
+			this.loadBank();
+		},
+		//加载数据
+		async loadAli(source) {
+			aliInfo({}).then(e => {
+				this.aliData = e.data;
+			});
+		},
+		// 加载银行卡信息
+		async loadBank() {
+			bankInfo({}).then(e => {
+				this.bankData = e.data;
+			});
+		},
+		// 加载余额信息
+		async loadData() {
+			extractBank({}).then(({ data }) => {
+				this.money = data.commissionCount;//可提现余额
+				this.minPrice = data.minPrice;//最小提现
+			});
+		},
+		// 跳转
+		navTo(url) {
+			uni.navigateTo({
+				url: url
+			});
+		},
+		// 切换选中对象
+		tabRadio(e) {
+			this.type = e.detail.value;
+		},
+		// 提交
+		confirm() {
+			let data = {
+				money: this.withdrawal, //金额
+			}
+			exchangeCash(data)
+				.then(e => {
+					uni.showToast({
+						title: '提交成功',
+						duration: 2000,
+						position: 'top'
+					});
+				})
+				.catch(e => {
+					console.log();
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	height: 100%;
+}
+.content-money {
+	padding: 30rpx 0;
+	background: #ffffff;
+}
+.flex {
+	background-color: #ffffff;
+	text-align: center;
+	margin: 0 30rpx;
+	border-radius: $border-radius-sm;
+	.buttom {
+		width: 100%;
+		text-align: center;
+		font-size: $font-lg;
+	}
+	.interval {
+		width: 2px;
+		height: 60rpx;
+		background-color: #eeeeee;
+	}
+	.icon {
+		background-size: 100%;
+		font-size: 42rpx;
+		color: $font-color-dark;
+		font-weight: bold;
+		background-repeat: no-repeat;
+		background-position: center;
+	}
+	.text {
+		color: $font-color-light;
+	}
+}
+
+.row-box {
+	margin-top: 30rpx;
+	padding: 20rpx 30rpx;
+	background: #fff;
+	.title {
+		font-size: $font-base + 2rpx;
+		color: $font-color-dark;
+	}
+	.row {
+		display: flex;
+		align-items: center;
+		position: relative;
+		height: 80rpx;
+		.tit {
+			flex-shrink: 0;
+			width: 40rpx;
+			font-size: 30rpx;
+			color: $font-color-dark;
+		}
+		.input {
+			flex: 1;
+			font-size: 30rpx;
+			color: $font-color-dark;
+		}
+		.iconlocation {
+			font-size: 36rpx;
+			color: $font-color-light;
+		}
+
+		.buttom {
+			color: $font-color-spec;
+			font-size: $font-base;
+		}
+	}
+}
+.add-btn {
+	&.modified {
+		color: $base-color;
+	}
+	&.up {
+		background-color: $base-color;
+		color: #fff;
+	}
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 690rpx;
+	height: 80rpx;
+	margin: 0 auto;
+	margin-top: 30rpx;
+	font-size: $font-lg;
+	border-radius: 10rpx;
+	// box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4);
+}
+
+.list {
+	padding-left: 30rpx;
+	margin-top: 30rpx;
+	background-color: #ffffff;
+	.box {
+		display: flex;
+		align-items: center;
+		width: 100%;
+		height: 120rpx;
+		border-bottom: 1px solid $border-color-light;
+		.icon {
+			font-size: 48rpx;
+			padding-right: 20rpx;
+			.icon-img {
+				height: 50rpx;
+				width: 50rpx;
+			}
+		}
+		.iconweixin1 {
+			color: #18bf16;
+		}
+		.iconzhifubao {
+			color: #08aaec;
+		}
+		.title-box {
+			flex-grow: 1;
+			text-align: left;
+			.title {
+				font-size: $font-base + 2rpx;
+				color: $font-color-base;
+			}
+			.node {
+				font-size: $font-sm;
+				color: $font-color-light;
+			}
+		}
+	}
+}
+.tip {
+	padding: 20rpx 40rpx;
+	color: #FD3B39;
+}
+/deep/ .uni-radio-input {
+	width: 45rpx;
+	height: 45rpx;
+}
+</style>

Fichier diff supprimé car celui-ci est trop grand
+ 174 - 0
pages/order/createOrder.vue


+ 405 - 0
pages/order/evaluate.vue

@@ -0,0 +1,405 @@
+<template>
+	<view class="content">
+		<view class="order-item">
+			<view class="goods-box-single">
+				<image class="goods-img" :src="productInfo.image" mode="aspectFill"></image>
+				<view class="right position-relative">
+					<view class="flex">
+						<text class="title">{{ productInfo.store_name }}</text>
+						<view class="title-right">
+							<view class="price">{{ productInfo.price }}</view>
+							<view class="attr-box">x{{ list.cart_num }}</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view>
+				<view class="flex_item zhil">
+					<view>商品质量</view>
+					<view><uniRate text="1" size="20" margin="10" :value="rateValue1" @change="rateChange1"></uniRate></view>
+				</view>
+				<view class="flex_item zhil">
+					<view>服务态度</view>
+					<view><uniRate text="1" size="20" margin="10" :value="rateValue2" @change="rateChange2"></uniRate></view>
+				</view>
+				<view class="equity_box">
+					<view class="text-box uni-textarea">
+						<textarea placeholder-style="color:#999" :placeholder="placeholder" @blur="bindTextAreaBlur"></textarea>
+					</view>
+					<view class="">
+						<view class="add-img-box flex_item">
+							<view class="add-img-item" v-for="(item, index) in imgList" :key="index">
+								<image class="add-img" @click.stop="imgInfo(index)" :src="item.url" mode="aspectFill"></image>
+								<image class="add-img-del" @click.stop="delImg(index)" src="/https://hy.liuniu946.com/app/img/delete.png"></image>
+							</view>
+							<!-- <view v-if="imgList.length < 9" class="add-img-item" @click.stop="scImg()">
+								<image class="add-img" src="/https://hy.liuniu946.com/app/img/add.png"></image>
+							</view> -->
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view @click.stop="submit" class="address-box submit-box"><text class="submit-btn">提交评论</text></view>
+	</view>
+</template>
+
+<script>
+import { product, upload, order_comment } from '@/api/order.js';
+import uniRate from '@/components/uni-rate/uni-rate.vue';
+export default {
+	components: {
+		uniRate
+	},
+	data() {
+		return {
+			list: '', //订单详情
+			productInfo: '',
+			text: '', //评论内容
+			placeholder: '商品满足你的期待么?说说你的想法,分享给想买的他们吧~',
+			imgList: [],
+			unique: '', //商品唯一标识码
+			cloudimgList: [],
+			rateValue1: '', //商品质量
+			rateValue2: '', //服务态度
+			imgCount: 6 //最多支持9张上传,可以修改
+		};
+	},
+	onLoad(option) {
+		this.unique = option.unique;
+		this.loadOrder();
+	},
+	onShow() {},
+	methods: {
+		//text
+		bindTextAreaBlur: function(e) {
+			this.text = e.detail.value;
+		},
+		//获取收入支出信息
+		async loadOrder() {
+			product({
+				unique: this.unique
+			}).then(e => {
+				this.list = e.data;
+				this.productInfo = e.data.productInfo;
+			});
+		},
+		//商品质量评分
+		rateChange1(val) {
+			this.rateValue1 = val.value;
+		},
+		//服务态度评分
+		rateChange2(val) {
+			this.rateValue2 = val.value;
+		},
+		//单张上传图片
+		scImg() {
+			let obj = this;
+			console.log(obj.imgCount, 11);
+			if (obj.imgCount == 0) {
+				uni.showToast({
+					title: '最多添加6张图片',
+					icon: 'none'
+				});
+				return;
+			}
+			upload({
+				file: ''
+			})
+				.then(e => {
+					console.log(e,'e')
+					obj.imgList = [...obj.imgList, ...e];
+					console.log(obj.imgList,'imgList')
+					obj.imgCount = 10 - obj.imgList.length;
+					console.log(obj.imgCount ,'imgCount ')
+				})
+				.catch(e => {});
+		},
+		//提交评论
+		submit(e) {
+			let obj = this;
+			// if (obj.imgList.length < 1) {
+			// 	uni.showToast({
+			// 		title: '请添加图片',
+			// 		icon: 'none'
+			// 	});
+			// 	return;
+			// }
+			for (let i = 0; i < obj.imgList.length; i++) {
+				obj.cloudimgList.push(obj.imgList[i].url);
+			}
+			let arr = obj.cloudimgList.join(',');
+			order_comment({
+				pics: arr,
+				comment: obj.text,
+				product_score: obj.rateValue1,
+				service_score: obj.rateValue2,
+				unique: obj.unique,
+				
+			})
+				.then(e => {
+					uni.navigateTo({
+						url: '/pages/order/order?state=4'
+					});
+				})
+				.catch(e => {
+					uni.navigateTo({
+						url: '/pages/order/order?state=4'
+					});
+				});
+		},
+		//点击图片显示大图
+		imgInfo(i) {
+			let tempList = [];
+			console.log(111);
+			this.imgList.forEach(e => {
+				tempList.push(e.url);
+			});
+			console.log(tempList);
+			//显示图片
+			uni.previewImage({
+				current: i,
+				loop: false,
+				urls: tempList,
+				indicator: 'default'
+			});
+		},
+		//删除图片
+		delImg(i) {
+			uni.showModal({
+				content: '确定删除这张吗',
+				success: res => {
+					if (res.confirm) {
+						this.imgList.splice(i, 1);
+						this.imgCount++;
+					} else if (res.cancel) {
+					}
+				}
+			});
+		},
+		// 页面跳转
+		navto(e) {
+			uni.navigateTo({
+				url: e
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: #ffffff;
+	height: 100%;
+	.content {
+		background: #ffffff;
+		height: 100%;
+	}
+}
+/* 多条商品 */
+.order-item {
+	display: flex;
+	flex-direction: column;
+	padding: 0rpx 30rpx;
+	background: #fff;
+	margin-top: 20rpx;
+	/* 单条商品 */
+	.goods-box-single {
+		display: flex;
+		padding: 20rpx 0;
+		.goods-img {
+			display: block;
+			width: 120rpx;
+			height: 120rpx;
+		}
+		.right {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			padding: 0 30rpx 0 24rpx;
+			overflow: hidden;
+			height: 100%;
+			.title {
+				align-self: flex-start;
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				height: 80rpx;
+				overflow:hidden; 
+				text-overflow:ellipsis;
+				display:-webkit-box; 
+				-webkit-box-orient:vertical;
+				-webkit-line-clamp:2; 
+			}
+			.title-right {
+				flex-shrink: 0;
+				text-align: right;
+				align-self: flex-start;
+			}
+			.attr-box {
+				font-size: $font-sm + 2rpx;
+				color: $font-color-light;
+			}
+			.price {
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				&:before {
+					content: '¥';
+					font-size: $font-sm;
+					margin: 0 2rpx 0 8rpx;
+				}
+			}
+		}
+	}
+}
+.equity_box {
+	background-color: #fafafa;
+	border-radius: 10rpx;
+	padding: 25rpx 25rpx;
+	margin: 25rpx 0rpx;
+	.text-box {
+		height: 200rpx;
+		textarea {
+			font-size: 25rpx;
+			width: 100%;
+			height: 100%;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			display: -webkit-box;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 5;
+		}
+	}
+}
+.zhil {
+	font-size: 28rpx !important;
+	padding: 15rpx 15rpx;
+}
+.submit-box {
+	bottom: 0;
+	left: 0;
+	width: 750rpx;
+}
+.submit-btn {
+	margin-top: 10px;
+	display: inline-block;
+	width: 670rpx;
+	height: 96rpx;
+	line-height: 96rpx;
+	text-align: center;
+	background-color: #1BCC26 !important;
+	opacity: 1;
+	border-radius: 32rpx;
+	border-width: 8rpx;
+	border-color: rgba(255, 255, 255, 1);
+	box-shadow: 0rpx 8rpx 12rpx rgba(0, 0, 0, 0.16);
+	border-radius: 56rpx;
+	font-size: 39rpx;
+	font-weight: bold;
+	color: rgba(255, 255, 255, 1);
+}
+.submit-btn-txt {
+	font-size: 39rpx;
+	font-weight: bold;
+	line-height: 47rpx;
+	color: rgba(255, 255, 255, 1);
+	opacity: 1;
+}
+.map-box {
+	width: 484rpx;
+	height: 256rpx;
+	border-width: 4rpx;
+	border-color: rgba(255, 255, 255, 1);
+	box-shadow: 0rpx 0rpx 24rpx rgba(0, 0, 0, 0.16);
+	/* border-radius: 12rpx; */
+	position: relative;
+}
+.map {
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	width: 476rpx;
+	height: 250rpx;
+}
+.map-img {
+	position: absolute;
+	top: 90rpx;
+	left: 156rpx;
+	width: 230rpx;
+	height: 68rpx;
+	background-color: rgba(51, 51, 51, 0.64);
+	border-width: 1rpx;
+	border-color: rgba(0, 0, 0, 0);
+	border-radius: 34px;
+
+	font-size: 28rpx;
+	font-weight: bold;
+	line-height: 66rpx;
+	color: rgba(255, 255, 255, 1);
+	text-align: center;
+}
+.address-box {
+	padding: 15rpx 40rpx;
+	margin-bottom: 10px;
+}
+.label {
+	font-size: 36rpx;
+	font-weight: bold;
+	line-height: 50rpx;
+	color: #222222;
+}
+.label-img {
+	padding-left: 40rpx;
+}
+
+.add-img-box {
+	width: 100%;
+	flex-direction: row;
+	flex-wrap: wrap;
+	margin-top: 50rpx;
+}
+.add-img-item {
+	width: 180rpx;
+	height: 180rpx;
+	border-radius: 24rpx;
+	position: relative;
+	margin: 0rpx 20rpx;
+	margin-bottom: 25rpx;
+	.add-img {
+		width: 100%;
+		height: 100%;
+		border-radius: 24rpx;
+	}
+}
+.add-img-camera {
+	flex: 1;
+}
+.add-img-del {
+	position: absolute;
+	width: 40rpx;
+	height: 40rpx;
+	left: 155rpx;
+	bottom: 155rpx;
+	//background-color: rgba(238, 0, 0, 1);
+	border-radius: 20rpx;
+}
+.address-time {
+	width: 484rpx;
+	height: 88rpx;
+	background-color: rgba(245, 245, 245, 1);
+	opacity: 1;
+	border-radius: 24rpx;
+	text-align: center;
+
+	font-size: 35rpx;
+	font-weight: 500;
+	color: rgba(51, 51, 51, 1);
+}
+.line {
+	width: 750rpx;
+	height: 1px;
+	transform: scaleY(0.3);
+	background-color: rgba(0, 0, 0, 0.5);
+}
+</style>

+ 185 - 0
pages/order/expressInfo.vue

@@ -0,0 +1,185 @@
+<template>
+	<view class="container">
+		<view class="express-box">
+			<view class="top-text">
+				<image class='logo' :src="expressList.result.logo" mode="widthFix"></image>
+				<text class="top-com" v-if="expressList.result.deliverystatus=='0'">揽件中</text>
+				<text class="top-com" v-if="expressList.result.deliverystatus=='1'">运输中</text>
+				<text class="top-com" v-if="expressList.result.deliverystatus=='2'">派件中</text>
+				<text class="top-com" v-if="expressList.result.deliverystatus=='3'">已签收</text>
+			</view>
+			<view class="top-text">
+				<text>国内承运物流:</text>
+				<text class="top-com">{{expressList.result.expName}}</text>
+			</view>
+			<view class="top-text">
+				<text>运单号:</text>
+				<text>{{expressList.result.number }}</text>
+				<view class="fz" @click="copy(expressList.result.number)">
+					复制
+				</view>
+			</view>
+			<view class="top-text">
+				<text>联系电话:</text>
+				<text>{{expressList.result.expPhone }}</text>
+				<view class="bh" @click="bh(expressList.result.expPhone)">
+					拨打
+				</view>
+			</view>
+			<view class="express-body">
+				<uni-steps :options="expressList.result.list" active-color="#007AFF" :active="active"
+					direction="column">
+				</uni-steps>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	// #ifdef H5
+	import {
+		weixindata,
+		shareLoad
+	} from '@/utils/wxAuthorized';
+	// #endif
+	import {
+		express
+	} from '@/api/order.js';
+	import uniSteps from '@/components/uni-steps/uni-steps.vue';
+	export default {
+		components: {
+			uniSteps
+		},
+		data() {
+			return {
+				id: '',
+				expressList: [],
+				active: 0
+			}
+		},
+		onLoad(option) {
+			this.id = option.id
+			// #ifdef H5
+			this.IndexShare()
+			// #endif
+
+		},
+		onShow() {
+			this.loadData()
+		},
+		onShareAppMessage(res) {
+			return {
+				title: '物流详情', //分享的名称
+				path: 'pages/order/expressInfo?id=' + this.id,
+			}
+			console.log('pages/index/index?' + path, '分享数据');
+		},
+		methods: {
+			IndexShare() {
+				let obj = this;
+				let path = 'https://hy.liuniu946.com/pages/order/expressInfo?id=' + this.id
+				let data = {
+					link: path,
+					title: '物流详情',
+					desc: '欢迎加入玲卿加',
+					imgUrl: 'https://hy.liuniu946.com/static/image/hylogo.jpg'
+				};
+				console.log(data, '分享数据');
+				shareLoad(data);
+			},
+			loadData() {
+				express({
+					id: this.id,
+				}).then(({
+					data
+				}) => {
+					this.expressList = data.express;
+					console.log(this.expressList, '000000')
+				})
+			},
+			copy(e) {
+				uni.setClipboardData({
+					data: e,
+					success: () => { //复制成功的回调函数
+						uni.showToast({ //提示
+							title: "复制快递单号成功"
+						})
+					}
+				})
+			},
+			bh(e) {
+				uni.makePhoneCall({
+					phoneNumber: e, //电话号码
+					success: function(e) {
+						console.log(e);
+					},
+					fail: function(e) {
+						console.log(e);
+
+					}
+				})
+			}
+		},
+
+	}
+</script>
+
+<style lang="scss">
+	.container {
+		.logo {
+			border-radius: 10rpx;
+			margin: 10rpx;
+			width: 60rpx;
+		}
+
+		.fz {
+			text-align: center;
+			width: 110rpx;
+			border-radius: 30rpx;
+			padding: 8rpx;
+			color: #FFFFFF;
+			background-color: #f75022;
+		}
+
+		.bh {
+			text-align: center;
+			width: 110rpx;
+			border-radius: 30rpx;
+			padding: 8rpx;
+			color: #FFFFFF;
+			background-color: #1090ff;
+		}
+
+		.express-box {
+			letter-spacing: 8rpx;
+			padding: 30rpx;
+			border-bottom-left-radius: 40rpx;
+			border-bottom-right-radius: 40rpx;
+			height: 320rpx;
+			background-color: #FFFFFF;
+
+			.top-text {
+				width: 100%;
+				height: 60rpx;
+				background: #FFFFFF;
+				padding-left: 20rpx;
+				font-size: $font-base;
+				border-radius: $border-radius-sm;
+				display: flex;
+				align-items: center;
+
+				.top-com {
+					margin-right: 10rpx;
+				}
+
+			}
+
+			.express-body {
+				margin-top: 80rpx;
+				background: #FFFFFF;
+				border-radius: $border-radius-sm;
+				padding: 20rpx 10rpx 20rpx 0;
+			}
+		}
+	}
+</style>

+ 681 - 0
pages/order/order.vue

@@ -0,0 +1,681 @@
+<template>
+	<view class="content">
+		<view class="navbar">
+			<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
+		</view>
+
+		<swiper :current="tabCurrentIndex" class="swiper-box" duration="300" @change="changeTab">
+			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
+				<scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData">
+					<!-- 空白页 -->
+					<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
+
+					<!-- 订单列表 -->
+					<view @click="goToOrderDetail(item)" v-for="(item, index) in tabItem.orderList" :key="index" class="order-item">
+						<view class="i-top b-b">
+							<text class="time">{{ item._add_time }}</text>
+							<text class="state" :style="{ color: item.stateTipColor }">{{ item._status._title }}</text>
+							<text v-if="item.status === 4" class="del-btn iconfont icondelete" @click="deleteOrder(index)"></text>
+						</view>
+
+						<scroll-view v-if="item.cartInfo.length > 1" class="goods-box" scroll-x>
+							<view v-for="(goodsItem, goodsIndex) in item.cartInfo" :key="goodsIndex" class="goods-item">
+								<image class="goods-img" :src="goodsItem.productInfo.image" mode="aspectFill"></image>
+							</view>
+						</scroll-view>
+						<view class="goods-box-single" v-for="(goodsItem, goodsIndex) in item.cartInfo" :key="goodsIndex">
+							<image class="goods-img" :src="goodsItem.productInfo.image" mode="scaleToFill"></image>
+							<view class="right">
+								<view class="flex-start">
+									<text class="title clamp">{{ goodsItem.productInfo.store_name }}</text>
+									<text class="price">{{ goodsItem.productInfo.price|moneyNum }}</text>
+								</view>
+								<view class="row flex">
+									<text class="row_title">{{ goodsItem.productInfo.attrInfo ? goodsItem.productInfo.attrInfo.suk : '' }}</text>
+									<text class="attr-box"> x {{ goodsItem.cart_num }}</text>
+								</view>
+							</view>
+						</view>
+
+						<view class="price-box">
+							共
+							<text class="num">{{ item.cartInfo.length }}</text>
+							件商品 邮费
+							<text class="price">{{ moneyNum(item.pay_postage)}}</text>
+							实付款
+							<text class="price">{{ moneyNum(item.pay_price)}}</text>
+						</view>
+						<view class="action-box b-t" v-if="item.status != 5">
+							<button v-if="item._status._title == '未支付'" class="action-btn" @click.stop="cancelOrder(item)">取消订单</button>
+							<button v-if="item._status._title == '未支付'" @click.stop="orderPay(item)" class="action-btn recom">立即支付</button>
+							<button v-if="item._status._title == '待评价'"  class="action-btn">查看订单</button>
+							<button v-if="item._status._title == '待收货'" @click.stop="orderTake(item, index)" class="action-btn">确认收货</button>
+							<button v-if="item._status._title == '未发货' && item.is_gift != 1" class="action-btn" @click.stop="orderRefund(item)">申请退款</button>
+						</view>
+					</view>
+
+					<uni-load-more :status="tabItem.loadingType"></uni-load-more>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+import empty from '@/components/empty';
+import { orderList, orderCancel, orderDel, orderTake } from '@/api/order.js';
+export default {
+	components: {
+		uniLoadMore,
+		empty
+	},
+	filters: {
+		moneyNum(value){
+			return +value;
+		},
+	},
+	data() {
+		return {
+			tabCurrentIndex: 0,
+			navList: [
+				{
+					state: 0,
+					text: '待付款',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10 //每次信息条数
+				},
+				{
+					state: 1,
+					text: '待发货',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10 //每次信息条数
+				},
+				{
+					state: 2,
+					text: '待收货',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10 //每次信息条数
+				},
+				{
+					state: 3,
+					text: '待评价',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10 //每次信息条数
+				},
+				{
+					state: 4,
+					text: '已完成',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10 //每次信息条数
+				}
+			]
+		};
+	},
+
+	onLoad(options) {
+		/**
+		 * 修复app端点击除全部订单外的按钮进入时不加载数据的问题
+		 * 替换onLoad下代码即可
+		 */
+		this.tabCurrentIndex = +options.state;
+		// #ifndef MP
+		this.loadData();
+		// #endif
+		// #ifdef MP
+		if (options.state == 0) {
+			this.loadData();
+		}
+		// #endif
+	},
+	// #ifdef APP-PLUS || H5
+	onBackPress(e){
+		uni.switchTab({
+			url: '/pages/user/user',
+		});
+		return true;
+	},
+	// #endif
+	methods: {
+		// 转换金额为数字
+		moneyNum(value){
+				return +value;
+		},
+		// 确认收货
+		orderTake(item, index) {
+			let obj = this;
+			uni.showModal({
+				title: '是否确认收货?',
+				success: () => {
+					orderTake({
+						uni: item.order_id
+					})
+						.then(e => {
+							obj.navList[obj.tabCurrentIndex].orderList.splice(index, 1);
+							uni.showToast({
+								title: '收货成功'
+							});
+						})
+						.catch(e => {
+							console.log(e);
+						});
+				}
+			});
+		},
+		//跳转到订单详情
+		goToOrderDetail(e) {
+			//判断是否为优惠券订单
+			if(e.cartInfo[0].coupon_id&&e.cartInfo[0].couponstatus==0){
+				uni.navigateTo({
+					url: '/user/page/coupon?id=' + e.cartInfo[0].coupon_id
+				});
+			}else{
+				uni.navigateTo({
+					url: '/pages/order/orderDetail?id=' + e.order_id
+				});
+			}
+			
+		},
+		// 申请退款
+		orderRefund(e) {
+			uni.navigateTo({
+				url: '/pages/order/orderRefund?id=' + e.order_id
+			});
+		},
+		// 订单支付
+		orderPay(e) {
+			console.log(e)
+			uni.navigateTo({
+				url: '/pages/money/pay?type=1&ordid=' + e.order_id + '&money=' + e.pay_price + '&isP=' + (e.combination_id != 0 ? '1': '0')
+			});
+		},
+		//获取订单列表
+		loadData(source) {
+			//这里是将订单挂载到tab列表下
+			let index = this.tabCurrentIndex;
+			let navItem = this.navList[index];
+			let state = navItem.state;
+			if (source === 'tabChange' && navItem.loaded === true) {
+				//tab切换只有第一次需要加载数据
+				return;
+			}
+			if (navItem.loadingType === 'loading') {
+				//防止重复加载
+				return;
+			}
+			if (navItem.loadingType === 'noMore') {
+				//防止重复加载
+				return;
+			}
+			// 修改当前对象状态为加载中
+			navItem.loadingType = 'loading';
+
+			orderList({
+				type: state,
+				page: navItem.page,
+				limit: navItem.limit
+			})
+				.then(({ data }) => {
+					let arr = data.map(e => {
+						let b = this.orderStateExp(e.status);
+						e.stateTip = b.stateTip;
+						e.stateTipColor = b.stateTipColor;
+						return e;
+					});
+					navItem.orderList = navItem.orderList.concat(arr);
+					// console.log(navItem.orderList);
+					navItem.page++;
+					if (navItem.limit == data.length) {
+						//判断是否还有数据, 有改为 more, 没有改为noMore
+						navItem.loadingType = 'more';
+						return;
+					} else {
+						//判断是否还有数据, 有改为 more, 没有改为noMore
+						navItem.loadingType = 'noMore';
+					}
+					uni.hideLoading();
+					this.$set(navItem, 'loaded', true);
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+
+		//swiper 切换
+		changeTab(e) {
+			this.tabCurrentIndex = e.target.current;
+			this.loadData('tabChange');
+		},
+		//顶部tab点击
+		tabClick(index) {
+			this.tabCurrentIndex = index;
+		},
+		//删除订单
+		deleteOrder(index) {
+			uni.showLoading({
+				title: '请稍后'
+			});
+			setTimeout(() => {
+				this.navList[this.tabCurrentIndex].orderList.splice(index, 1);
+				uni.hideLoading();
+			}, 600);
+		},
+		//取消订单
+		cancelOrder(item) {
+			uni.showModal({
+				title: '订单取消',
+				content: '是否取消订单?',
+				success: e => {
+					if (e.confirm) {
+						uni.showLoading({
+							title: '请稍后'
+						});
+						orderCancel({ id: item.order_id })
+							.then(e => {
+								uni.showToast({
+									title: '取消成功',
+									duration: 2000,
+									position: 'top'
+								});
+							})
+							.catch(e => {
+								console.log(e);
+							});
+						//取消订单后删除待付款中该项
+						let list = this.navList[this.tabCurrentIndex].orderList;
+						let index = list.findIndex(val => val.id === item.id);
+						index !== -1 && list.splice(index, 1);
+						uni.hideLoading();
+					}
+				}
+			});
+		},
+
+		//订单状态文字和颜色
+		orderStateExp(state) {
+			let stateTip = '',
+				stateTipColor = '#fa436a';
+			switch (+state) {
+				case 0:
+					stateTip = '待付款';
+					break;
+				case 1:
+					stateTip = '待发货';
+					break;
+				case 2:
+					stateTip = '待收货';
+					break;
+				case 3:
+					stateTip = '待评价';
+					break;
+				case 4:
+					stateTip = '已完成';
+					stateTipColor = '#5dbc7c';
+					break;
+				case 9:
+					stateTip = '订单已关闭';
+					stateTipColor = '#909399';
+					break;
+
+				//更多自定义
+			}
+			return { stateTip, stateTipColor };
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page,
+.content {
+	background: $page-color-base;
+	height: 100%;
+}
+
+.swiper-box {
+	height: calc(100% - 40px);
+}
+.list-scroll-content {
+	height: 100%;
+}
+
+.navbar {
+	display: flex;
+	height: 40px;
+	padding: 0 5px;
+	background: #fff;
+	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
+	position: relative;
+	z-index: 10;
+	.nav-item {
+		flex: 1;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+		font-size: 15px;
+		color: $font-color-dark;
+		position: relative;
+		&.current {
+			color: $base-color;
+			&:after {
+				content: '';
+				position: absolute;
+				left: 50%;
+				bottom: 0;
+				transform: translateX(-50%);
+				width: 44px;
+				height: 0;
+				border-bottom: 2px solid $base-color;
+			}
+		}
+	}
+}
+
+.uni-swiper-item {
+	height: auto;
+}
+.order-item {
+	display: flex;
+	flex-direction: column;
+	padding-left: 30rpx;
+	background: #fff;
+	margin-top: 16rpx;
+	.i-top {
+		display: flex;
+		align-items: center;
+		height: 80rpx;
+		padding-right: 30rpx;
+		font-size: $font-base;
+		color: $font-color-dark;
+		position: relative;
+		.time {
+			flex: 1;
+		}
+		.state {
+			color: $base-color;
+		}
+		.del-btn {
+			padding: 10rpx 0 10rpx 36rpx;
+			font-size: $font-lg;
+			color: $font-color-light;
+			position: relative;
+			&:after {
+				content: '';
+				width: 0;
+				height: 30rpx;
+				border-left: 1px solid $border-color-dark;
+				position: absolute;
+				left: 20rpx;
+				top: 50%;
+				transform: translateY(-50%);
+			}
+		}
+	}
+	/* 多条商品 */
+	.goods-box {
+		height: 160rpx;
+		padding: 20rpx 0;
+		white-space: nowrap;
+		.goods-item {
+			width: 120rpx;
+			height: 120rpx;
+			display: inline-block;
+			margin-right: 24rpx;
+		}
+		.goods-img {
+			display: block;
+			width: 100%;
+			height: 100%;
+		}
+	}
+	/* 单条商品 */
+	.goods-box-single {
+		display: flex;
+		padding: 20rpx 0;
+		.goods-img {
+			display: block;
+			width: 120rpx;
+			height: 120rpx;
+		}
+		.right {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			padding: 0 30rpx 0 24rpx;
+			overflow: hidden;
+			.row{
+				margin-top: 10rpx;
+			}
+			.row_title{
+				padding:5rpx 10rpx;
+				background-color: #dddddd;
+				border-radius: 10rpx;
+				font-size: 22rpx;
+				color: #ffffff;
+			}
+			.title {
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				line-height: 1;
+				width: 80%;
+			}
+			.attr-box {
+				display: flex;
+				justify-content: flex-end;
+				font-size: $font-sm + 2rpx;
+				color: $font-color-light;
+			}
+			.price {
+				display: inline;
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				&:before {
+					content: '¥';
+					font-size: $font-sm;
+					
+				}
+			}
+		}
+	}
+	.price-box {
+		display: flex;
+		justify-content: flex-end;
+		align-items: baseline;
+		padding: 20rpx 30rpx;
+		font-size: $font-sm + 2rpx;
+		color: $font-color-light;
+		.num {
+			margin: 0 8rpx;
+			color: $font-color-dark;
+		}
+		.price {
+			font-size: $font-lg;
+			color: $font-color-dark;
+			&:before {
+				content: '¥';
+				font-size: $font-sm;
+				margin: 0 2rpx 0 8rpx;
+			}
+		}
+	}
+	.action-box {
+		display: flex;
+		justify-content: flex-end;
+		align-items: center;
+		height: 100rpx;
+		position: relative;
+		padding-right: 30rpx;
+	}
+	.action-btn {
+		width: 160rpx;
+		height: 60rpx;
+		margin: 0;
+		margin-left: 24rpx;
+		padding: 0;
+		text-align: center;
+		line-height: 60rpx;
+		font-size: $font-sm + 2rpx;
+		color: $font-color-dark;
+		background: #fff;
+		border-radius: 100px;
+		&:after {
+			border-radius: 100px;
+		}
+		&.recom {
+			color: $base-color;
+			&:after {
+				border-color: $base-color;
+			}
+		}
+		&.evaluate {
+			color: $color-yellow;
+			&:after {
+				border-color: $color-yellow;
+			}
+		}
+	}
+}
+
+/* load-more */
+.uni-load-more {
+	display: flex;
+	flex-direction: row;
+	height: 80rpx;
+	align-items: center;
+	justify-content: center;
+}
+
+.uni-load-more__text {
+	font-size: 28rpx;
+	color: #999;
+}
+
+.uni-load-more__img {
+	height: 24px;
+	width: 24px;
+	margin-right: 10px;
+}
+
+.uni-load-more__img > view {
+	position: absolute;
+}
+
+.uni-load-more__img > view view {
+	width: 6px;
+	height: 2px;
+	border-top-left-radius: 1px;
+	border-bottom-left-radius: 1px;
+	background: #999;
+	position: absolute;
+	opacity: 0.2;
+	transform-origin: 50%;
+	animation: load 1.56s ease infinite;
+}
+
+.uni-load-more__img > view view:nth-child(1) {
+	transform: rotate(90deg);
+	top: 2px;
+	left: 9px;
+}
+
+.uni-load-more__img > view view:nth-child(2) {
+	transform: rotate(180deg);
+	top: 11px;
+	right: 0;
+}
+
+.uni-load-more__img > view view:nth-child(3) {
+	transform: rotate(270deg);
+	bottom: 2px;
+	left: 9px;
+}
+
+.uni-load-more__img > view view:nth-child(4) {
+	top: 11px;
+	left: 0;
+}
+
+.load1,
+.load2,
+.load3 {
+	height: 24px;
+	width: 24px;
+}
+
+.load2 {
+	transform: rotate(30deg);
+}
+
+.load3 {
+	transform: rotate(60deg);
+}
+
+.load1 view:nth-child(1) {
+	animation-delay: 0s;
+}
+
+.load2 view:nth-child(1) {
+	animation-delay: 0.13s;
+}
+
+.load3 view:nth-child(1) {
+	animation-delay: 0.26s;
+}
+
+.load1 view:nth-child(2) {
+	animation-delay: 0.39s;
+}
+
+.load2 view:nth-child(2) {
+	animation-delay: 0.52s;
+}
+
+.load3 view:nth-child(2) {
+	animation-delay: 0.65s;
+}
+
+.load1 view:nth-child(3) {
+	animation-delay: 0.78s;
+}
+
+.load2 view:nth-child(3) {
+	animation-delay: 0.91s;
+}
+
+.load3 view:nth-child(3) {
+	animation-delay: 1.04s;
+}
+
+.load1 view:nth-child(4) {
+	animation-delay: 1.17s;
+}
+
+.load2 view:nth-child(4) {
+	animation-delay: 1.3s;
+}
+
+.load3 view:nth-child(4) {
+	animation-delay: 1.43s;
+}
+
+@-webkit-keyframes load {
+	0% {
+		opacity: 1;
+	}
+
+	100% {
+		opacity: 0.2;
+	}
+}
+</style>

Fichier diff supprimé car celui-ci est trop grand
+ 183 - 0
pages/order/orderDetail.vue


+ 237 - 0
pages/order/orderRefund.vue

@@ -0,0 +1,237 @@
+<template>
+	<view class="content">
+		<view class="order-item">
+			<scroll-view v-if="listStyle == 1" class="goods-box" scroll-x>
+				<view v-for="(goodsItem, goodsIndex) in item.cartInfo" :key="goodsIndex" class="goods-item">
+					<image class="goods-img" :src="goodsItem.productInfo.image" mode="aspectFill"></image>
+				</view>
+			</scroll-view>
+			<view v-if="listStyle == 2" class="goods-box-single" v-for="(goodsItem, goodsIndex) in item.cartInfo" :key="goodsIndex">
+				<image class="goods-img" :src="goodsItem.productInfo.image" mode="aspectFill"></image>
+				<view class="right">
+					<text class="title clamp">{{ goodsItem.productInfo.store_name }}</text>
+					<text class="attr-box">{{ goodsItem.attrInfo ? goodsItem.attrInfo.suk : '' }} x {{ goodsItem.cart_num }}</text>
+					<text class="price">{{ goodsItem.productInfo.price }}</text>
+				</view>
+			</view>
+		</view>
+		<view class="orderDetial">
+			<view class="row b-b flex">
+				<text class="tit">订单总价</text>
+				<view class="input">¥{{ item.total_price }}</view>
+			</view>
+			<view class="row b-b flex">
+				<text class="tit">邮费</text>
+				<view class="input">{{ item.pay_postage > 0 ? '¥' +item.pay_postage : '免邮费' }}</view>
+			</view>
+			<view class="row b-b flex" v-if="item.coupon_id > 0">
+				<text class="tit">优惠券</text>
+				<view class="input">-¥{{ item.coupon_price }}</view>
+			</view>
+			<view class="row b-b flex" v-if="item.use_integral > 0">
+				<text class="tit">积分抵扣</text>
+				<view class="input">-¥{{ item.use_integral }}</view>
+			</view>
+			<view class="row b-b flex">
+				<text class="tit ">实付</text>
+				<view class="input payColor">¥{{ item.pay_price }}</view>
+			</view>
+		</view>
+		<view class="row b-b">
+			<text class="tit">退款理由</text>
+			<picker mode="selector" :range="value" @change="bindChange">
+				<view class="refund" v-if="refund">{{ refund || '请选择退款理由' }}</view>
+				<view class="noRefund" v-else>请选择退款理由</view>
+			</picker>
+		</view>
+		<view class="row b-b">
+			<text class="tit">备注说明</text>
+			<input class="input" type="text" v-model="reason" placeholder="请填写备注" placeholder-class="placeholder" />
+		</view>
+		<button class="add-btn" @click="confirm">提交</button>
+	</view>
+</template>
+
+<script>
+import { refund, refundReason, orderDetail } from '@/api/order.js';
+export default {
+	data() {
+		return {
+			refund: '', //退款理由
+			reason: '', //备注
+			value: ['1', '2', '3', '4', '5', '6', '7', '8', 9, 10, 11, 12, 13],
+			orderId: '',
+			item: {},
+			listStyle: 2
+		};
+	},
+	onLoad(option) {
+		this.orderId = option.id;
+		this.refundReason();
+		this.loadOrder();
+	},
+	methods: {
+		// 切换选中事件
+		bindChange(e) {
+			this.refund = this.value[e.detail.value];
+		},
+		// 加载退款理由
+		refundReason() {
+			refundReason({}).then(e => {
+				this.value = e.data;
+			});
+		},
+		loadOrder() {
+			orderDetail({}, this.orderId).then(e => {
+				this.item = e.data;
+			});
+		},
+		//提交
+		confirm() {
+			let obj = this;
+			if (!obj.refund) {
+				uni.showModal({
+					title: '错误',
+					content: '请填写退货理由',
+					showCancel: false
+				});
+				return false;
+			}
+			refund({
+				text: obj.refund,
+				uni: obj.orderId,
+				refund_reason_wap_explain: obj.reason
+			}).then(function(e) {
+				uni.showToast({
+					title:'提交成功',
+					duration:1500
+				})
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: $page-color-base;
+	padding-top: 16rpx;
+}
+.orderDetial {
+	.row {
+		.input {
+			text-align: right;
+		}
+	}
+}
+.row {
+	display: flex;
+	align-items: center;
+	position: relative;
+	padding: 0 30rpx;
+	height: 110rpx;
+	background: #fff;
+	.refund {
+		font-size: 30rpx;
+		color: $font-color-dark;
+	}
+	.noRefund {
+		font-size: 30rpx;
+		color: $font-color-light;
+		padding-left: 20rpx;
+	}
+	.tit {
+		flex-shrink: 0;
+		width: 120rpx;
+		font-size: 30rpx;
+		color: $font-color-dark;
+	}
+	.input {
+		flex: 1;
+		font-size: 30rpx;
+		color: $font-color-dark;
+		padding-left: 20rpx;
+		&.payColor {
+			color: $color-red;
+		}
+	}
+	.iconlocation {
+		font-size: 36rpx;
+		color: $font-color-light;
+	}
+}
+.add-btn {
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 690rpx;
+	height: 80rpx;
+	margin: 60rpx auto;
+	font-size: $font-lg;
+	color: #fff;
+	background-color: $base-color;
+	border-radius: 10rpx;
+	// box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4);
+}
+
+/* 多条商品 */
+.order-item {
+	display: flex;
+	flex-direction: column;
+	padding-left: 30rpx;
+	background: #fff;
+	margin-top: 16rpx;
+	.goods-box {
+		height: 160rpx;
+		padding: 20rpx 0;
+		white-space: nowrap;
+		.goods-item {
+			width: 120rpx;
+			height: 120rpx;
+			display: inline-block;
+			margin-right: 24rpx;
+		}
+		.goods-img {
+			display: block;
+			width: 100%;
+			height: 100%;
+		}
+	}
+	/* 单条商品 */
+	.goods-box-single {
+		display: flex;
+		padding: 20rpx 0;
+		.goods-img {
+			display: block;
+			width: 120rpx;
+			height: 120rpx;
+		}
+		.right {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			padding: 0 30rpx 0 24rpx;
+			overflow: hidden;
+			.title {
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				line-height: 1;
+			}
+			.attr-box {
+				font-size: $font-sm + 2rpx;
+				color: $font-color-light;
+				padding: 10rpx 12rpx;
+			}
+			.price {
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				&:before {
+					content: '¥';
+					font-size: $font-sm;
+					margin: 0 2rpx 0 8rpx;
+				}
+			}
+		}
+	}
+}
+</style>

+ 204 - 0
pages/product/classify.vue

@@ -0,0 +1,204 @@
+<template>
+	<view class="container">
+		<!-- 头部轮播 -->
+		<view class="carousel-section">
+			<swiper class="carousel" autoplay="true" duration="400" interval="5000">
+				<swiper-item v-for="(item, index) in bannerImg" :key="index" class="carousel-item" @click="bannerNavToUrl(item)">
+					<image :src="item.img" mode=" scaleToFill" />
+				</swiper-item>
+			</swiper>
+		</view>
+		<view class="type-title-box flex">
+			<view class="title-border"></view>
+			<view class="title-content">
+				<text v-if="type == 1">精品推荐</text>
+				<text v-if="type == 2">热门榜单</text>
+				<text v-if="type == 3">首发新品</text>
+				<text v-if="type == 4">促销单品</text>
+			</view>
+			<view class="title-border"></view>
+		</view>
+
+		<view class="goodsList-box">
+			<view class="goodsList-item flex" :key="ind" v-for="(ls, ind) in list">
+				<image :src="ls.image" mode=" scaleToFill"></image>
+				<view class="goodsList-content">
+					<view class="title">
+						<text>{{ ls.store_name }}</text>
+					</view>
+					<view class="goods-money flex">
+						<view class="money-box">
+							<view class="money">
+								<text class="font-size-sm">¥</text>
+								{{ ls.price }}
+							</view>
+							<view class="otMoney-box">
+								<text class="otMoney">¥{{ ls.ot_price }}</text>
+								<text class="sales">已售{{ ls.sales }}件</text>
+							</view>
+						</view>
+						<view @click="navTo(ls)" class="cart iconfont iconcart"></view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { groomList } from '@/api/product.js';
+export default {
+	data() {
+		return {
+			list: [],
+			bannerImg: []
+		};
+	},
+	onLoad(option) {
+		// 获取查询对象
+		this.type = option.type;
+		// 加载基础数据
+		this.loadData();
+	},
+	methods: {
+		navTo: function(ls) {
+			uni.navigateTo({
+				url: '/pages/product/product?id=' + ls.id
+			});
+		},
+		// 请求载入数据
+		async loadData() {
+			groomList({}, this.type)
+				.then(({ data }) => {
+					// 保存轮播图
+					this.bannerImg = data.banner;
+					// 保存商品信息
+					this.list = data.list;
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+		// 轮播图跳转
+		bannerNavToUrl(item) {
+			// #ifdef H5
+			if (item.wap_link.indexOf('http') > 0) {
+				window.location.href = item.wap_link;
+			}
+			// #endif
+			if (item.wap_link) {
+				uni.navigateTo({
+					url: item.wap_link
+				});
+			}
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: $page-color-base;
+}
+.carousel-section {
+	padding: 0;
+	.titleNview-placing {
+		padding-top: 0;
+		height: 0;
+	}
+	.swiper-dots {
+		left: 45rpx;
+		bottom: 40rpx;
+	}
+	.carousel {
+		width: 100%;
+		height: 360rpx;
+		.carousel-item {
+			width: 100%;
+			height: 100%;
+			overflow: hidden;
+		}
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+}
+// 中间标题样式
+.type-title-box {
+	padding: 40rpx;
+	.title-content {
+		height: 100%;
+		width: 200rpx;
+		text-align: center;
+		font-size: $font-lg;
+		font-weight: 500;
+		color: $font-color-dark;
+	}
+	.title-border {
+		width: 250rpx;
+		height: 2rpx;
+		background-color: #e9e9e9;
+	}
+}
+// 商品列表
+.goodsList-box {
+	.goodsList-item {
+		margin-bottom: 40rpx;
+		background-color: #ffffff;
+		padding: 30rpx;
+		image {
+			flex-shrink: 0;
+			border-radius: $border-radius-sm;
+			height: 180rpx;
+			width: 180rpx;
+		}
+		.goodsList-content {
+			margin-left: 20rpx;
+			flex-grow: 1;
+			height: 180rpx;
+			position: relative;
+			.title {
+				font-size: $font-base;
+				color: $font-color-dark;
+				font-weight: 500;
+			}
+			.goods-money {
+				position: absolute;
+				left: 0;
+				bottom: 0;
+				width:100%;
+				.money-box {
+					.money {
+						font-size: $font-lg;
+						color: $color-red;
+						font-weight: bold;
+					}
+					.otMoney-box {
+						font-size: $font-sm;
+						.otMoney {
+							color: $font-color-dark;
+							padding-right: 20rpx;
+						}
+						.sales {
+							color: $font-color-light;
+						}
+					}
+				}
+				.cart {
+					border: 1px solid $color-red;
+					color: $color-red;
+					font-size: $font-base;
+					font-weight: bold;
+					border-radius: 99px;
+					width: 55rpx;
+					height: 55rpx;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+				}
+			}
+		}
+	}
+}
+</style>

+ 148 - 0
pages/product/common/KlonContent.vue

@@ -0,0 +1,148 @@
+<template>
+	<view class="introduce-section">
+		<text class="title clamp">{{ goodsObjact.title }}</text>
+		<!-- <button open-type="share" class="shareDate">
+			<image class="share-img" src="/https://hy.liuniu946.com/app/img/img57.png"></image>
+			好物推荐
+		</button> -->
+		<text class="info" v-if="goodsObjact.store_info">{{ goodsObjact.store_info }}</text>
+		<view class="progress-box">
+			<progress :percent="goodsObjact.percent | parseIntTo" activeColor="#F65527" font-size="10" show-info border-radius="5" stroke-width="9" />
+			<view class="number">剩余{{ goodsObjact.percent | parseIntTo }}%</view>
+		</view>
+		<view class="price-box">
+			<text class="price-tip">¥</text>
+			<view class="price">
+				{{ goodsObjact.price }}
+				<text class="text">/份</text>
+				<text class="m-price" v-if="goodsObjact.ot_price > goodsObjact.price">¥{{ goodsObjact.ot_price }}</text>
+			</view>
+		</view>
+		<!-- <view class="price-green">
+			¥{{ goodsObjact.ot_price }}
+			<text>市场价</text>
+		</view> -->
+	</view>
+</template>
+
+<script>
+export default {
+	props: {
+		goodsObjact: {
+			type: Object,
+			default: function() {
+				return {
+					percent:1
+				};
+			}
+		}
+	},
+	filters: {
+		parseIntTo(percent) {
+			percent = +percent * 100;
+			if (percent % 1 === 0) {
+				return percent;
+			} else {
+				percent = percent.toFixed(1);
+				return percent;
+			}
+		}
+	},
+	data() {
+		return {};
+	}
+};
+</script>
+
+<style lang="scss">
+/* 标题简介 */
+.introduce-section {
+	position: relative;
+	background: #fff;
+	padding: 35rpx 0rpx;
+	padding-left: 35rpx;
+	.title {
+		font-size: 32rpx;
+		color: $font-color-dark;
+		height: 50rpx;
+		width: 70%;
+		.tip-o {
+			color: #ff3334;
+			padding-left: 15rpx;
+		}
+	}
+	.shareDate {
+		position: absolute;
+		top: 25rpx;
+		right: 25rpx;
+		font-size: 26rpx;
+		color: #3d3f46;
+		border-radius: 15rpx;
+		background-color: #ffffff;
+		height: 60rpx;
+		line-height: 60rpx;
+	}
+	.share-img {
+		width: 30rpx;
+		height: 30rpx;
+		position: relative;
+		top: 5rpx;
+		left: 0;
+		margin-right: 10rpx;
+	}
+	.info {
+		color: #999999;
+		font-size: 26rpx;
+		padding-bottom: 15rpx;
+	}
+	.progress-box {
+		width: 260rpx;
+		position: relative;
+		margin-top: 15rpx;
+		line-height: 10px;
+		.number {
+			font-size: 17rpx;
+			position: absolute;
+			z-index: 99;
+			top: 3rpx;
+			left: 15rpx;
+			color: #ffffff;
+		}
+	}
+	.price-box {
+		display: flex;
+		align-items: baseline;
+		height: 64rpx;
+		padding: 10rpx 0;
+		font-size: 26rpx;
+		color: $uni-color-primary;
+	}
+	.price {
+		font-size: $font-lg + 6rpx;
+		.text {
+			padding-left: 5rpx;
+			color: #b0b0b0;
+			font-size: 22rpx !important;
+		}
+	}
+	.price-green {
+		color: #2dbd59;
+		font-size: 28rpx !important;
+		text {
+			background: #2dbd59;
+			color: #ffffff;
+			padding: 0rpx 10rpx;
+			border-radius: 5rpx;
+			font-size: 22rpx !important;
+			margin-left: 15rpx;
+		}
+	}
+	.m-price {
+		margin: 0 12rpx;
+		color: $font-color-light;
+		text-decoration: line-through;
+		margin-left: 25rpx;
+		font-size: 24rpx;
+	}
+}
+</style>

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff