Parcourir la source

项目初始化

linwu il y a 1 an
commit
f0d8b115f8
100 fichiers modifiés avec 35137 ajouts et 0 suppressions
  1. 2 0
      .gitignore
  2. 94 0
      App.vue
  3. 184 0
      colorui/animation.css
  4. 65 0
      colorui/components/cu-custom.vue
  5. 36 0
      colorui/icon.css
  6. 3912 0
      colorui/main.css
  7. 156 0
      common/area.json
  8. 11305 0
      common/area1.json
  9. 1122 0
      common/qqmap-wx-jssdk.js
  10. 0 0
      common/qqmap-wx-jssdk.min.js
  11. 61 0
      common/request/request-downFiles.js
  12. 209 0
      common/request/request-upFiles.js
  13. 258 0
      common/request/request.js
  14. 28 0
      components/gaoyia-parse/components/wxParseAudio.vue
  15. 94 0
      components/gaoyia-parse/components/wxParseImg.vue
  16. 55 0
      components/gaoyia-parse/components/wxParseTable.vue
  17. 98 0
      components/gaoyia-parse/components/wxParseTemplate0.vue
  18. 88 0
      components/gaoyia-parse/components/wxParseTemplate1.vue
  19. 88 0
      components/gaoyia-parse/components/wxParseTemplate10.vue
  20. 86 0
      components/gaoyia-parse/components/wxParseTemplate11.vue
  21. 88 0
      components/gaoyia-parse/components/wxParseTemplate2.vue
  22. 88 0
      components/gaoyia-parse/components/wxParseTemplate3.vue
  23. 88 0
      components/gaoyia-parse/components/wxParseTemplate4.vue
  24. 88 0
      components/gaoyia-parse/components/wxParseTemplate5.vue
  25. 88 0
      components/gaoyia-parse/components/wxParseTemplate6.vue
  26. 88 0
      components/gaoyia-parse/components/wxParseTemplate7.vue
  27. 88 0
      components/gaoyia-parse/components/wxParseTemplate8.vue
  28. 88 0
      components/gaoyia-parse/components/wxParseTemplate9.vue
  29. 15 0
      components/gaoyia-parse/components/wxParseVideo.vue
  30. 261 0
      components/gaoyia-parse/libs/html2json.js
  31. 156 0
      components/gaoyia-parse/libs/htmlparser.js
  32. 209 0
      components/gaoyia-parse/libs/wxDiscode.js
  33. 258 0
      components/gaoyia-parse/parse.css
  34. 228 0
      components/gaoyia-parse/parse.vue
  35. 0 0
      components/pickerAddress/data.js
  36. 104 0
      components/pickerAddress/pickerAddress.vue
  37. 476 0
      components/sl-filter/filter-view.vue
  38. 2 0
      components/sl-filter/iconfont/iconfont.css
  39. 122 0
      components/sl-filter/popup-layer.vue
  40. 302 0
      components/sl-filter/sl-filter.vue
  41. 194 0
      components/uni-load-more/uni-load-more.vue
  42. 58 0
      components/wxcontact/wxcontact.vue
  43. BIN
      components/xinyi-skeleton/.DS_Store
  44. 194 0
      components/xinyi-skeleton/skeleton.vue
  45. 1078 0
      components/yq-avatar/yq-avatar.vue
  46. 0 0
      libs/qqmap-wx-jssdk.min.js
  47. 55 0
      main.js
  48. 116 0
      manifest.json
  49. 686 0
      pages.json
  50. 21 0
      pages/ad/jinlinli.vue
  51. 99 0
      pages/agent/agent.vue
  52. 146 0
      pages/agent/agentform.vue
  53. 142 0
      pages/agent/detail.vue
  54. 167 0
      pages/article/article.vue
  55. 212 0
      pages/article/comment.vue
  56. 292 0
      pages/article/detail.vue
  57. 96 0
      pages/broker/agent.vue
  58. 147 0
      pages/broker/broker.vue
  59. 216 0
      pages/broker/brokerform.vue
  60. 146 0
      pages/broker/brokerform_back.vue
  61. 347 0
      pages/broker/brokerlist.vue
  62. 121 0
      pages/broker/center.vue
  63. 155 0
      pages/broker/getorder.vue
  64. 242 0
      pages/broker/income.vue
  65. 193 0
      pages/broker/myentry.vue
  66. 129 0
      pages/broker/myorder.vue
  67. 150 0
      pages/broker/myuser.vue
  68. 113 0
      pages/broker/myworker.vue
  69. 506 0
      pages/broker/setentry.vue
  70. 207 0
      pages/broker/setfollow.vue
  71. 293 0
      pages/broker/setreport.vue
  72. 389 0
      pages/comjobs/comjobs.vue
  73. 574 0
      pages/comjobs/detail.vue
  74. 141 0
      pages/comjobs/log.vue
  75. 153 0
      pages/comjobs/search.vue
  76. 331 0
      pages/comjobs/setreport.vue
  77. 127 0
      pages/comjobs/star.vue
  78. 387 0
      pages/demand/demand.vue
  79. 479 0
      pages/demand/demandform.vue
  80. 197 0
      pages/demand/demandlog.vue
  81. 541 0
      pages/demand/detail.vue
  82. 203 0
      pages/demand/snatch.vue
  83. 276 0
      pages/demand/wdemandlist.vue
  84. 186 0
      pages/demand/wdemandlog.vue
  85. 441 0
      pages/form/form.vue
  86. 248 0
      pages/index/home.vue
  87. 227 0
      pages/index/homebak.vue
  88. 714 0
      pages/index/index.vue
  89. 58 0
      pages/login/agreement.vue
  90. 501 0
      pages/login/login.vue
  91. 32 0
      pages/login/sharepuser.vue
  92. 318 0
      pages/login/worker.vue
  93. 190 0
      pages/mall/detail.vue
  94. 171 0
      pages/mall/mall.vue
  95. 215 0
      pages/mall/myorder.vue
  96. 272 0
      pages/mall/order.vue
  97. 72 0
      pages/my/about.vue
  98. 122 0
      pages/my/collect.vue
  99. 97 0
      pages/my/feedback.vue
  100. 176 0
      pages/my/getmoney.vue

+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
+/unpackage
+/.hbuilderx

+ 94 - 0
App.vue

@@ -0,0 +1,94 @@
+<script>
+	import Vue from 'vue'
+	export default {
+		onLaunch: function() {
+			
+			//检查更新
+			// #ifdef APP-PLUS
+			var appUpdateData = {};
+			uni.request({
+				url: 'https://xrzp.haowork365.com/mainapp.php/update/index',
+				data: {
+					appid: plus.runtime.appid,
+					version: plus.runtime.version   
+				},
+				method: 'GET',
+				success: (res) => {
+					appUpdateData = res.data.data;
+					if (appUpdateData.statusAndroid===1 && plus.os.name=="Android") {  
+						uni.showModal({  
+							title: "更新提示",
+							content: appUpdateData.updatecon,
+							showCancel: false,
+							success: (res) => {
+								if (res.confirm) {
+									plus.runtime.openURL(appUpdateData.downAndroidUrl);
+								}
+							}
+						});
+					} 
+					
+					if (appUpdateData.statusIos===1 && plus.os.name=="iOS") {
+						uni.showModal({
+							title: "更新提示",
+							content: appUpdateData.updatecon,
+							showCancel: false,
+							success: (res) => {
+								if (res.confirm) {
+									plus.runtime.openURL(appUpdateData.downIosUrl);
+								}
+							}
+						});
+					}
+				}
+			});
+			// #endif  
+			
+			uni.getSystemInfo({
+				success: function(e) {
+					// #ifndef MP
+					Vue.prototype.StatusBar = e.statusBarHeight;
+					if (e.platform == 'android') {
+						Vue.prototype.CustomBar = e.statusBarHeight + 50;
+					} else {
+						Vue.prototype.CustomBar = e.statusBarHeight + 45;
+					};
+					// #endif
+			
+					// #ifdef MP-WEIXIN
+					Vue.prototype.StatusBar = e.statusBarHeight;
+					let custom = wx.getMenuButtonBoundingClientRect();
+					Vue.prototype.Custom = custom;
+					Vue.prototype.CustomBar = custom.bottom + custom.top - e.statusBarHeight;
+					// #endif		
+			
+					// #ifdef MP-ALIPAY
+					Vue.prototype.StatusBar = e.statusBarHeight;
+					Vue.prototype.CustomBar = e.statusBarHeight + e.titleBarHeight;
+					// #endif
+				}
+			});
+			console.log('App Launch')
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		}
+	}
+</script>
+
+
+<style>
+	/*每个页面公共css */
+	@import "components/gaoyia-parse/parse.css";
+	
+	@import "static/uni.css";
+	@import "colorui/main.css";
+    @import "colorui/icon.css";
+	
+	
+
+	@import "static/echoUi.css";
+</style>

+ 184 - 0
colorui/animation.css

@@ -0,0 +1,184 @@
+/* 
+  Animation 微动画  
+  基于ColorUI组建库的动画模块 by 文晓港 2019年3月26日19:52:28
+ */
+
+/* css 滤镜 控制黑白底色gif的 */
+.gif-black{  
+  mix-blend-mode: screen;  
+}
+.gif-white{  
+  mix-blend-mode: multiply; 
+}
+
+
+/* Animation css */
+[class*=animation-] {
+    animation-duration: .5s;
+    animation-timing-function: ease-out;
+    animation-fill-mode: both
+}
+
+.animation-fade {
+    animation-name: fade;
+    animation-duration: .8s;
+    animation-timing-function: linear
+}
+
+.animation-scale-up {
+    animation-name: scale-up
+}
+
+.animation-scale-down {
+    animation-name: scale-down
+}
+
+.animation-slide-top {
+    animation-name: slide-top
+}
+
+.animation-slide-bottom {
+    animation-name: slide-bottom
+}
+
+.animation-slide-left {
+    animation-name: slide-left
+}
+
+.animation-slide-right {
+    animation-name: slide-right
+}
+
+.animation-shake {
+    animation-name: shake
+}
+
+.animation-reverse {
+    animation-direction: reverse
+}
+
+@keyframes fade {
+    0% {
+        opacity: 0
+    }
+
+    100% {
+        opacity: 1
+    }
+}
+
+@keyframes scale-up {
+    0% {
+        opacity: 0;
+        transform: scale(.2)
+    }
+
+    100% {
+        opacity: 1;
+        transform: scale(1)
+    }
+}
+
+@keyframes scale-down {
+    0% {
+        opacity: 0;
+        transform: scale(1.8)
+    }
+
+    100% {
+        opacity: 1;
+        transform: scale(1)
+    }
+}
+
+@keyframes slide-top {
+    0% {
+        opacity: 0;
+        transform: translateY(-100%)
+    }
+
+    100% {
+        opacity: 1;
+        transform: translateY(0)
+    }
+}
+
+@keyframes slide-bottom {
+    0% {
+        opacity: 0;
+        transform: translateY(100%)
+    }
+
+    100% {
+        opacity: 1;
+        transform: translateY(0)
+    }
+}
+
+@keyframes shake {
+
+    0%,
+    100% {
+        transform: translateX(0)
+    }
+
+    10% {
+        transform: translateX(-9px)
+    }
+
+    20% {
+        transform: translateX(8px)
+    }
+
+    30% {
+        transform: translateX(-7px)
+    }
+
+    40% {
+        transform: translateX(6px)
+    }
+
+    50% {
+        transform: translateX(-5px)
+    }
+
+    60% {
+        transform: translateX(4px)
+    }
+
+    70% {
+        transform: translateX(-3px)
+    }
+
+    80% {
+        transform: translateX(2px)
+    }
+
+    90% {
+        transform: translateX(-1px)
+    }
+}
+
+@keyframes slide-left {
+    0% {
+        opacity: 0;
+        transform: translateX(-100%)
+    }
+
+    100% {
+        opacity: 1;
+        transform: translateX(0)
+    }
+}
+
+@keyframes slide-right {
+    0% {
+        opacity: 0;
+        transform: translateX(100%)
+    }
+
+    100% {
+        opacity: 1;
+        transform: translateX(0)
+    }
+}

+ 65 - 0
colorui/components/cu-custom.vue

@@ -0,0 +1,65 @@
+<template>
+	<view>
+		<view class="cu-custom" :style="[{height:CustomBar + 'px'}]">
+			<view class="cu-bar fixed" :style="style" :class="[bgImage!=''?'none-bg text-white bg-img':'',bgColor]">
+				<view class="action" @tap="BackPage" v-if="isBack">
+					<text class="cuIcon-back"></text>
+					<slot name="backText"></slot>
+				</view>
+				<view class="content" :style="[{top:StatusBar + 'px'}]">
+					<slot name="content"></slot>
+				</view>
+				<slot name="right"></slot>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				StatusBar: this.StatusBar,
+				CustomBar: this.CustomBar
+			};
+		},
+		name: 'cu-custom',
+		computed: {
+			style() {
+				var StatusBar= this.StatusBar;
+				var CustomBar= this.CustomBar;
+				var bgImage = this.bgImage;
+				var style = `height:${CustomBar}px;padding-top:${StatusBar}px;`;
+				if (this.bgImage) {
+					style = `${style}background-image:url(${bgImage});`;
+				}
+				return style
+			}
+		},
+		props: {
+			bgColor: {
+				type: String,
+				default: ''
+			},
+			isBack: {
+				type: [Boolean, String],
+				default: false
+			},
+			bgImage: {
+				type: String,
+				default: ''
+			},
+		},
+		methods: {
+			BackPage() {
+				uni.navigateBack({
+					delta: 1
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+
+</style>

Fichier diff supprimé car celui-ci est trop grand
+ 36 - 0
colorui/icon.css


+ 3912 - 0
colorui/main.css

@@ -0,0 +1,3912 @@
+/*
+  ColorUi for uniApp  v2.1.6 | by 文晓港 2019-05-31 10:44:24
+  仅供学习交流,如作它用所承受的法律责任一概与作者无关  
+  
+  *使用ColorUi开发扩展与插件时,请注明基于ColorUi开发 
+  
+  (QQ交流群:240787041)
+*/
+
+/* ==================
+        初始化
+ ==================== */
+body {
+	background-color: #f1f1f1;
+	font-size: 28rpx;
+	color: #333333;
+	font-family: Helvetica Neue, Helvetica, sans-serif;
+}
+
+view,
+scroll-view,
+swiper,
+button,
+input,
+textarea,
+label,
+navigator,
+image {
+	box-sizing: border-box;
+}
+
+.round {
+	border-radius: 5000rpx;
+}
+
+.radius {
+	border-radius: 6rpx;
+}
+
+/* ==================
+          图片
+ ==================== */
+
+image {
+	max-width: 100%;
+	display: inline-block;
+	position: relative;
+	z-index: 0;
+}
+
+image.loading::before {
+	content: "";
+	background-color: #f5f5f5;
+	display: block;
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	z-index: -2;
+}
+
+image.loading::after {
+	content: "\e7f1";
+	font-family: "cuIcon";
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 32rpx;
+	height: 32rpx;
+	line-height: 32rpx;
+	right: 0;
+	bottom: 0;
+	z-index: -1;
+	font-size: 32rpx;
+	margin: auto;
+	color: #ccc;
+	-webkit-animation: cuIcon-spin 2s infinite linear;
+	animation: cuIcon-spin 2s infinite linear;
+	display: block;
+}
+
+.response {
+	width: 100%;
+}
+
+/* ==================
+         开关
+ ==================== */
+
+switch,
+checkbox,
+radio {
+	position: relative;
+}
+
+switch::after,
+switch::before {
+	font-family: "cuIcon";
+	content: "\e645";
+	position: absolute;
+	color: #ffffff !important;
+	top: 0%;
+	left: 0rpx;
+	font-size: 26rpx;
+	line-height: 26px;
+	width: 50%;
+	text-align: center;
+	pointer-events: none;
+	transform: scale(0, 0);
+	transition: all 0.3s ease-in-out 0s;
+	z-index: 9;
+	bottom: 0;
+	height: 26px;
+	margin: auto;
+}
+
+switch::before {
+	content: "\e646";
+	right: 0;
+	transform: scale(1, 1);
+	left: auto;
+}
+
+switch[checked]::after,
+switch.checked::after {
+	transform: scale(1, 1);
+}
+
+switch[checked]::before,
+switch.checked::before {
+	transform: scale(0, 0);
+}
+
+/* #ifndef MP-ALIPAY */
+radio::before,
+checkbox::before {
+	font-family: "cuIcon";
+	content: "\e645";
+	position: absolute;
+	color: #ffffff !important;
+	top: 50%;
+	margin-top: -8px;
+	right: 5px;
+	font-size: 32rpx;
+	line-height: 16px;
+	pointer-events: none;
+	transform: scale(1, 1);
+	transition: all 0.3s ease-in-out 0s;
+	z-index: 9;
+}
+
+radio .wx-radio-input,
+checkbox .wx-checkbox-input,
+radio .uni-radio-input,
+checkbox .uni-checkbox-input {
+	margin: 0;
+	width: 24px;
+	height: 24px;
+}
+
+checkbox.round .wx-checkbox-input,
+checkbox.round .uni-checkbox-input {
+	border-radius: 100rpx;
+}
+
+/* #endif */
+
+switch[checked]::before {
+	transform: scale(0, 0);
+}
+
+switch .wx-switch-input,
+switch .uni-switch-input {
+	border: none;
+	padding: 0 24px;
+	width: 48px;
+	height: 26px;
+	margin: 0;
+	border-radius: 100rpx;
+}
+
+switch .wx-switch-input:not([class*="bg-"]),
+switch .uni-switch-input:not([class*="bg-"]) {
+	background: #8799a3 !important;
+}
+
+switch .wx-switch-input::after,
+switch .uni-switch-input::after {
+	margin: auto;
+	width: 26px;
+	height: 26px;
+	border-radius: 100rpx;
+	left: 0rpx;
+	top: 0rpx;
+	bottom: 0rpx;
+	position: absolute;
+	transform: scale(0.9, 0.9);
+	transition: all 0.1s ease-in-out 0s;
+}
+
+switch .wx-switch-input.wx-switch-input-checked::after,
+switch .uni-switch-input.uni-switch-input-checked::after {
+	margin: auto;
+	left: 22px;
+	box-shadow: none;
+	transform: scale(0.9, 0.9);
+}
+
+radio-group {
+	display: inline-block;
+}
+
+
+
+switch.radius .wx-switch-input::after,
+switch.radius .wx-switch-input,
+switch.radius .wx-switch-input::before,
+switch.radius .uni-switch-input::after,
+switch.radius .uni-switch-input,
+switch.radius .uni-switch-input::before {
+	border-radius: 10rpx;
+}
+
+switch .wx-switch-input::before,
+radio.radio::before,
+checkbox .wx-checkbox-input::before,
+radio .wx-radio-input::before,
+switch .uni-switch-input::before,
+radio.radio::before,
+checkbox .uni-checkbox-input::before,
+radio .uni-radio-input::before {
+	display: none;
+}
+
+radio.radio[checked]::after,
+radio.radio .uni-radio-input-checked::after {
+	content: "";
+	background-color: transparent;
+	display: block;
+	position: absolute;
+	width: 8px;
+	height: 8px;
+	z-index: 999;
+	top: 0rpx;
+	left: 0rpx;
+	right: 0;
+	bottom: 0;
+	margin: auto;
+	border-radius: 200rpx;
+	/* #ifndef MP */
+	border: 7px solid #ffffff !important;
+	/* #endif */
+
+	/* #ifdef MP */
+	border: 8px solid #ffffff !important;
+	/* #endif */
+}
+
+.switch-sex::after {
+	content: "\e71c";
+}
+
+.switch-sex::before {
+	content: "\e71a";
+}
+
+.switch-sex .wx-switch-input,
+.switch-sex .uni-switch-input {
+	background: #e54d42 !important;
+	border-color: #e54d42 !important;
+}
+
+.switch-sex[checked] .wx-switch-input,
+.switch-sex.checked .uni-switch-input {
+	background: #0081ff !important;
+	border-color: #0081ff !important;
+}
+
+switch.red[checked] .wx-switch-input.wx-switch-input-checked,
+checkbox.red[checked] .wx-checkbox-input,
+radio.red[checked] .wx-radio-input,
+switch.red.checked .uni-switch-input.uni-switch-input-checked,
+checkbox.red.checked .uni-checkbox-input,
+radio.red.checked .uni-radio-input {
+	background-color: #e54d42 !important;
+	border-color: #e54d42 !important;
+	color: #ffffff !important;
+}
+
+switch.orange[checked] .wx-switch-input,
+checkbox.orange[checked] .wx-checkbox-input,
+radio.orange[checked] .wx-radio-input,
+switch.orange.checked .uni-switch-input,
+checkbox.orange.checked .uni-checkbox-input,
+radio.orange.checked .uni-radio-input {
+	background-color: #f37b1d !important;
+	border-color: #f37b1d !important;
+	color: #ffffff !important;
+}
+
+switch.yellow[checked] .wx-switch-input,
+checkbox.yellow[checked] .wx-checkbox-input,
+radio.yellow[checked] .wx-radio-input,
+switch.yellow.checked .uni-switch-input,
+checkbox.yellow.checked .uni-checkbox-input,
+radio.yellow.checked .uni-radio-input {
+	background-color: #fbbd08 !important;
+	border-color: #fbbd08 !important;
+	color: #333333 !important;
+}
+
+switch.olive[checked] .wx-switch-input,
+checkbox.olive[checked] .wx-checkbox-input,
+radio.olive[checked] .wx-radio-input,
+switch.olive.checked .uni-switch-input,
+checkbox.olive.checked .uni-checkbox-input,
+radio.olive.checked .uni-radio-input {
+	background-color: #8dc63f !important;
+	border-color: #8dc63f !important;
+	color: #ffffff !important;
+}
+
+switch.green[checked] .wx-switch-input,
+switch[checked] .wx-switch-input,
+checkbox.green[checked] .wx-checkbox-input,
+checkbox[checked] .wx-checkbox-input,
+radio.green[checked] .wx-radio-input,
+radio[checked] .wx-radio-input,
+switch.green.checked .uni-switch-input,
+switch.checked .uni-switch-input,
+checkbox.green.checked .uni-checkbox-input,
+checkbox.checked .uni-checkbox-input,
+radio.green.checked .uni-radio-input,
+radio.checked .uni-radio-input {
+	background-color: #39b54a !important;
+	border-color: #39b54a !important;
+	color: #ffffff !important;
+	border-color: #39B54A !important;
+}
+
+switch.cyan[checked] .wx-switch-input,
+checkbox.cyan[checked] .wx-checkbox-input,
+radio.cyan[checked] .wx-radio-input,
+switch.cyan.checked .uni-switch-input,
+checkbox.cyan.checked .uni-checkbox-input,
+radio.cyan.checked .uni-radio-input {
+	background-color: #1cbbb4 !important;
+	border-color: #1cbbb4 !important;
+	color: #ffffff !important;
+}
+
+switch.blue[checked] .wx-switch-input,
+checkbox.blue[checked] .wx-checkbox-input,
+radio.blue[checked] .wx-radio-input,
+switch.blue.checked .uni-switch-input,
+checkbox.blue.checked .uni-checkbox-input,
+radio.blue.checked .uni-radio-input {
+	background-color: #0081ff !important;
+	border-color: #0081ff !important;
+	color: #ffffff !important;
+}
+
+switch.purple[checked] .wx-switch-input,
+checkbox.purple[checked] .wx-checkbox-input,
+radio.purple[checked] .wx-radio-input,
+switch.purple.checked .uni-switch-input,
+checkbox.purple.checked .uni-checkbox-input,
+radio.purple.checked .uni-radio-input {
+	background-color: #6739b6 !important;
+	border-color: #6739b6 !important;
+	color: #ffffff !important;
+}
+
+switch.mauve[checked] .wx-switch-input,
+checkbox.mauve[checked] .wx-checkbox-input,
+radio.mauve[checked] .wx-radio-input,
+switch.mauve.checked .uni-switch-input,
+checkbox.mauve.checked .uni-checkbox-input,
+radio.mauve.checked .uni-radio-input {
+	background-color: #9c26b0 !important;
+	border-color: #9c26b0 !important;
+	color: #ffffff !important;
+}
+
+switch.pink[checked] .wx-switch-input,
+checkbox.pink[checked] .wx-checkbox-input,
+radio.pink[checked] .wx-radio-input,
+switch.pink.checked .uni-switch-input,
+checkbox.pink.checked .uni-checkbox-input,
+radio.pink.checked .uni-radio-input {
+	background-color: #e03997 !important;
+	border-color: #e03997 !important;
+	color: #ffffff !important;
+}
+
+switch.brown[checked] .wx-switch-input,
+checkbox.brown[checked] .wx-checkbox-input,
+radio.brown[checked] .wx-radio-input,
+switch.brown.checked .uni-switch-input,
+checkbox.brown.checked .uni-checkbox-input,
+radio.brown.checked .uni-radio-input {
+	background-color: #a5673f !important;
+	border-color: #a5673f !important;
+	color: #ffffff !important;
+}
+
+switch.grey[checked] .wx-switch-input,
+checkbox.grey[checked] .wx-checkbox-input,
+radio.grey[checked] .wx-radio-input,
+switch.grey.checked .uni-switch-input,
+checkbox.grey.checked .uni-checkbox-input,
+radio.grey.checked .uni-radio-input {
+	background-color: #8799a3 !important;
+	border-color: #8799a3 !important;
+	color: #ffffff !important;
+}
+
+switch.gray[checked] .wx-switch-input,
+checkbox.gray[checked] .wx-checkbox-input,
+radio.gray[checked] .wx-radio-input,
+switch.gray.checked .uni-switch-input,
+checkbox.gray.checked .uni-checkbox-input,
+radio.gray.checked .uni-radio-input {
+	background-color: #f0f0f0 !important;
+	border-color: #f0f0f0 !important;
+	color: #333333 !important;
+}
+
+switch.black[checked] .wx-switch-input,
+checkbox.black[checked] .wx-checkbox-input,
+radio.black[checked] .wx-radio-input,
+switch.black.checked .uni-switch-input,
+checkbox.black.checked .uni-checkbox-input,
+radio.black.checked .uni-radio-input {
+	background-color: #333333 !important;
+	border-color: #333333 !important;
+	color: #ffffff !important;
+}
+
+switch.white[checked] .wx-switch-input,
+checkbox.white[checked] .wx-checkbox-input,
+radio.white[checked] .wx-radio-input,
+switch.white.checked .uni-switch-input,
+checkbox.white.checked .uni-checkbox-input,
+radio.white.checked .uni-radio-input {
+	background-color: #ffffff !important;
+	border-color: #ffffff !important;
+	color: #333333 !important;
+}
+
+/* ==================
+          边框
+ ==================== */
+
+/* -- 实线 -- */
+
+.solid,
+.solid-top,
+.solid-right,
+.solid-bottom,
+.solid-left,
+.solids,
+.solids-top,
+.solids-right,
+.solids-bottom,
+.solids-left,
+.dashed,
+.dashed-top,
+.dashed-right,
+.dashed-bottom,
+.dashed-left {
+	position: relative;
+}
+
+.solid::after,
+.solid-top::after,
+.solid-right::after,
+.solid-bottom::after,
+.solid-left::after,
+.solids::after,
+.solids-top::after,
+.solids-right::after,
+.solids-bottom::after,
+.solids-left::after,
+.dashed::after,
+.dashed-top::after,
+.dashed-right::after,
+.dashed-bottom::after,
+.dashed-left::after {
+	content: " ";
+	width: 200%;
+	height: 200%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	border-radius: inherit;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	pointer-events: none;
+	box-sizing: border-box;
+}
+
+.solid::after {
+	border: 1rpx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-top::after {
+	border-top: 1rpx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-right::after {
+	border-right: 1rpx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-bottom::after {
+	border-bottom: 1rpx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-left::after {
+	border-left: 1rpx solid rgba(0, 0, 0, 0.1);
+}
+
+.solids::after {
+	border: 8rpx solid #eee;
+}
+
+.solids-top::after {
+	border-top: 8rpx solid #eee;
+}
+
+.solids-right::after {
+	border-right: 8rpx solid #eee;
+}
+
+.solids-bottom::after {
+	border-bottom: 8rpx solid #eee;
+}
+
+.solids-left::after {
+	border-left: 8rpx solid #eee;
+}
+
+/* -- 虚线 -- */
+
+.dashed::after {
+	border: 1rpx dashed #ddd;
+}
+
+.dashed-top::after {
+	border-top: 1rpx dashed #ddd;
+}
+
+.dashed-right::after {
+	border-right: 1rpx dashed #ddd;
+}
+
+.dashed-bottom::after {
+	border-bottom: 1rpx dashed #ddd;
+}
+
+.dashed-left::after {
+	border-left: 1rpx dashed #ddd;
+}
+
+/* -- 阴影 -- */
+
+.shadow[class*='white'] {
+	--ShadowSize: 0 1rpx 6rpx;
+}
+
+.shadow-lg {
+	--ShadowSize: 0rpx 40rpx 100rpx 0rpx;
+}
+
+.shadow-warp {
+	position: relative;
+	box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.1);
+}
+
+.shadow-warp:before,
+.shadow-warp:after {
+	position: absolute;
+	content: "";
+	top: 20rpx;
+	bottom: 30rpx;
+	left: 20rpx;
+	width: 50%;
+	box-shadow: 0 30rpx 20rpx rgba(0, 0, 0, 0.2);
+	transform: rotate(-3deg);
+	z-index: -1;
+}
+
+.shadow-warp:after {
+	right: 20rpx;
+	left: auto;
+	transform: rotate(3deg);
+}
+
+.shadow-blur {
+	position: relative;
+}
+
+.shadow-blur::before {
+	content: "";
+	display: block;
+	background: inherit;
+	filter: blur(10rpx);
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	top: 10rpx;
+	left: 10rpx;
+	z-index: -1;
+	opacity: 0.4;
+	transform-origin: 0 0;
+	border-radius: inherit;
+	transform: scale(1, 1);
+}
+
+/* ==================
+          按钮
+ ==================== */
+
+.cu-btn {
+	position: relative;
+	border: 0rpx;
+	display: inline-flex;
+	align-items: center;
+	justify-content: center;
+	box-sizing: border-box;
+	padding: 0 30rpx;
+	font-size: 28rpx;
+	height: 64rpx;
+	line-height: 1;
+	text-align: center;
+	text-decoration: none;
+	overflow: visible;
+	margin-left: initial;
+	transform: translate(0rpx, 0rpx);
+	margin-right: initial;
+}
+
+.cu-btn::after {
+	display: none;
+}
+
+.cu-btn:not([class*="bg-"]) {
+	background-color: #f0f0f0;
+}
+
+.cu-btn[class*="line"] {
+	background-color: transparent;
+}
+
+.cu-btn[class*="line"]::after {
+	content: " ";
+	display: block;
+	width: 200%;
+	height: 200%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	border: 1rpx solid currentColor;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	box-sizing: border-box;
+	border-radius: 12rpx;
+	z-index: 1;
+	pointer-events: none;
+}
+
+.cu-btn.round[class*="line"]::after {
+	border-radius: 1000rpx;
+}
+
+.cu-btn[class*="lines"]::after {
+	border: 6rpx solid currentColor;
+}
+
+.cu-btn[class*="bg-"]::after {
+	display: none;
+}
+
+.cu-btn.sm {
+	padding: 0 20rpx;
+	font-size: 20rpx;
+	height: 48rpx;
+}
+
+.cu-btn.lg {
+	padding: 0 40rpx;
+	font-size: 32rpx;
+	height: 80rpx;
+}
+
+.cu-btn.cuIcon.sm {
+	width: 48rpx;
+	height: 48rpx;
+}
+
+.cu-btn.cuIcon {
+	width: 64rpx;
+	height: 64rpx;
+	border-radius: 500rpx;
+	padding: 0;
+}
+
+button.cuIcon.lg {
+	width: 80rpx;
+	height: 80rpx;
+}
+
+.cu-btn.shadow-blur::before {
+	top: 4rpx;
+	left: 4rpx;
+	filter: blur(6rpx);
+	opacity: 0.6;
+}
+
+.cu-btn.button-hover {
+	transform: translate(1rpx, 1rpx);
+}
+
+.block {
+	display: block;
+}
+
+.cu-btn.block {
+	display: flex;
+}
+
+.cu-btn[disabled] {
+	opacity: 0.6;
+	color: #ffffff;
+}
+
+/* ==================
+          徽章
+ ==================== */
+
+.cu-tag {
+	font-size: 24rpx;
+	vertical-align: middle;
+	position: relative;
+	display: inline-flex;
+	align-items: center;
+	justify-content: center;
+	box-sizing: border-box;
+	padding: 0rpx 16rpx;
+	height: 48rpx;
+	font-family: Helvetica Neue, Helvetica, sans-serif;
+	white-space: nowrap;
+}
+
+.cu-tag:not([class*="bg"]):not([class*="line"]) {
+	background-color: #f1f1f1;
+}
+
+.cu-tag[class*="line-"]::after {
+	content: " ";
+	width: 200%;
+	height: 200%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	border: 1rpx solid currentColor;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	box-sizing: border-box;
+	border-radius: inherit;
+	z-index: 1;
+	pointer-events: none;
+}
+
+.cu-tag.radius[class*="line"]::after {
+	border-radius: 12rpx;
+}
+
+.cu-tag.round[class*="line"]::after {
+	border-radius: 1000rpx;
+}
+
+.cu-tag[class*="line-"]::after {
+	border-radius: 0;
+}
+
+.cu-tag+.cu-tag {
+	margin-left: 10rpx;
+}
+
+.cu-tag.sm {
+	font-size: 20rpx;
+	padding: 0rpx 12rpx;
+	height: 32rpx;
+}
+
+.cu-capsule {
+	display: inline-flex;
+	vertical-align: middle;
+}
+
+.cu-capsule+.cu-capsule {
+	margin-left: 10rpx;
+}
+
+.cu-capsule .cu-tag {
+	margin: 0;
+}
+
+.cu-capsule .cu-tag[class*="line-"]:last-child::after {
+	border-left: 0rpx solid transparent;
+}
+
+.cu-capsule .cu-tag[class*="line-"]:first-child::after {
+	border-right: 0rpx solid transparent;
+}
+
+.cu-capsule.radius .cu-tag:first-child {
+	border-top-left-radius: 6rpx;
+	border-bottom-left-radius: 6rpx;
+}
+
+.cu-capsule.radius .cu-tag:last-child::after,
+.cu-capsule.radius .cu-tag[class*="line-"] {
+	border-top-right-radius: 12rpx;
+	border-bottom-right-radius: 12rpx;
+}
+
+.cu-capsule.round .cu-tag:first-child {
+	border-top-left-radius: 200rpx;
+	border-bottom-left-radius: 200rpx;
+	text-indent: 4rpx;
+}
+
+.cu-capsule.round .cu-tag:last-child::after,
+.cu-capsule.round .cu-tag:last-child {
+	border-top-right-radius: 200rpx;
+	border-bottom-right-radius: 200rpx;
+	text-indent: -4rpx;
+}
+
+.cu-tag.badge {
+	border-radius: 200rpx;
+	position: absolute;
+	top: -10rpx;
+	right: -10rpx;
+	font-size: 20rpx;
+	padding: 0rpx 10rpx;
+	height: 28rpx;
+	color: #ffffff;
+}
+
+.cu-tag.badge:not([class*="bg-"]) {
+	background-color: #dd514c;
+}
+
+.cu-tag:empty:not([class*="cuIcon-"]) {
+	padding: 0rpx;
+	width: 16rpx;
+	height: 16rpx;
+	top: -4rpx;
+	right: -4rpx;
+}
+
+.cu-tag[class*="cuIcon-"] {
+	width: 32rpx;
+	height: 32rpx;
+	top: -4rpx;
+	right: -4rpx;
+}
+
+/* ==================
+          头像
+ ==================== */
+
+.cu-avatar {
+	font-variant: small-caps;
+	margin: 0;
+	padding: 0;
+	display: inline-flex;
+	text-align: center;
+	justify-content: center;
+	align-items: center;
+	background-color: #ccc;
+	color: #ffffff;
+	white-space: nowrap;
+	position: relative;
+	width: 64rpx;
+	height: 64rpx;
+	background-size: cover;
+	background-position: center;
+	vertical-align: middle;
+	font-size: 1.5em;
+}
+
+.cu-avatar.sm {
+	width: 48rpx;
+	height: 48rpx;
+	font-size: 1em;
+}
+
+.cu-avatar.lg {
+	width: 96rpx;
+	height: 96rpx;
+	font-size: 2em;
+}
+
+.cu-avatar.xl {
+	width: 128rpx;
+	height: 128rpx;
+	font-size: 2.5em;
+}
+
+.cu-avatar .avatar-text {
+	font-size: 0.4em;
+}
+
+.cu-avatar-group {
+	direction: rtl;
+	unicode-bidi: bidi-override;
+	padding: 0 10rpx 0 40rpx;
+	display: inline-block;
+}
+
+.cu-avatar-group .cu-avatar {
+	margin-left: -30rpx;
+	border: 4rpx solid #f1f1f1;
+	vertical-align: middle;
+}
+
+.cu-avatar-group .cu-avatar.sm {
+	margin-left: -20rpx;
+	border: 1rpx solid #f1f1f1;
+}
+
+/* ==================
+         进度条
+ ==================== */
+
+.cu-progress {
+	overflow: hidden;
+	height: 28rpx;
+	background-color: #ebeef5;
+	display: inline-flex;
+	align-items: center;
+	width: 100%;
+}
+
+.cu-progress+view,
+.cu-progress+text {
+	line-height: 1;
+}
+
+.cu-progress.xs {
+	height: 10rpx;
+}
+
+.cu-progress.sm {
+	height: 20rpx;
+}
+
+.cu-progress view {
+	width: 0;
+	height: 100%;
+	align-items: center;
+	display: flex;
+	justify-items: flex-end;
+	justify-content: space-around;
+	font-size: 20rpx;
+	color: #ffffff;
+	transition: width 0.6s ease;
+}
+
+.cu-progress text {
+	align-items: center;
+	display: flex;
+	font-size: 20rpx;
+	color: #333333;
+	text-indent: 10rpx;
+}
+
+.cu-progress.text-progress {
+	padding-right: 60rpx;
+}
+
+.cu-progress.striped view {
+	background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+	background-size: 72rpx 72rpx;
+}
+
+.cu-progress.active view {
+	animation: progress-stripes 2s linear infinite;
+}
+
+@keyframes progress-stripes {
+	from {
+		background-position: 72rpx 0;
+	}
+
+	to {
+		background-position: 0 0;
+	}
+}
+
+/* ==================
+          加载
+ ==================== */
+
+.cu-load {
+	display: block;
+	line-height: 3em;
+	text-align: center;
+}
+
+.cu-load::before {
+	font-family: "cuIcon";
+	display: inline-block;
+	margin-right: 6rpx;
+}
+
+.cu-load.loading::before {
+	content: "\e67a";
+	animation: cuIcon-spin 2s infinite linear;
+}
+
+.cu-load.loading::after {
+	content: "加载中...";
+}
+
+.cu-load.over::before {
+	content: "\e64a";
+}
+
+.cu-load.over::after {
+	content: "没有更多了";
+}
+
+.cu-load.erro::before {
+	content: "\e658";
+}
+
+.cu-load.erro::after {
+	content: "加载失败";
+}
+
+.cu-load.load-cuIcon::before {
+	font-size: 32rpx;
+}
+
+.cu-load.load-cuIcon::after {
+	display: none;
+}
+
+.cu-load.load-cuIcon.over {
+	display: none;
+}
+
+.cu-load.load-modal {
+	position: fixed;
+	top: 0;
+	right: 0;
+	bottom: 140rpx;
+	left: 0;
+	margin: auto;
+	width: 260rpx;
+	height: 260rpx;
+	background-color: #ffffff;
+	border-radius: 10rpx;
+	box-shadow: 0 0 0rpx 2000rpx rgba(0, 0, 0, 0.5);
+	display: flex;
+	align-items: center;
+	flex-direction: column;
+	justify-content: center;
+	font-size: 28rpx;
+	z-index: 9999;
+	line-height: 2.4em;
+}
+
+.cu-load.load-modal [class*="cuIcon-"] {
+	font-size: 60rpx;
+}
+
+.cu-load.load-modal image {
+	width: 70rpx;
+	height: 70rpx;
+}
+
+.cu-load.load-modal::after {
+	content: "";
+	position: absolute;
+	background-color: #ffffff;
+	border-radius: 50%;
+	width: 200rpx;
+	height: 200rpx;
+	font-size: 10px;
+	border-top: 6rpx solid rgba(0, 0, 0, 0.05);
+	border-right: 6rpx solid rgba(0, 0, 0, 0.05);
+	border-bottom: 6rpx solid rgba(0, 0, 0, 0.05);
+	border-left: 6rpx solid #f37b1d;
+	animation: cuIcon-spin 1s infinite linear;
+	z-index: -1;
+}
+
+.load-progress {
+	pointer-events: none;
+	top: 0;
+	position: fixed;
+	width: 100%;
+	left: 0;
+	z-index: 2000;
+}
+
+.load-progress.hide {
+	display: none;
+}
+
+.load-progress .load-progress-bar {
+	position: relative;
+	width: 100%;
+	height: 4rpx;
+	overflow: hidden;
+	transition: all 200ms ease 0s;
+}
+
+.load-progress .load-progress-spinner {
+	position: absolute;
+	top: 10rpx;
+	right: 10rpx;
+	z-index: 2000;
+	display: block;
+}
+
+.load-progress .load-progress-spinner::after {
+	content: "";
+	display: block;
+	width: 24rpx;
+	height: 24rpx;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+	border: solid 4rpx transparent;
+	border-top-color: inherit;
+	border-left-color: inherit;
+	border-radius: 50%;
+	-webkit-animation: load-progress-spinner 0.4s linear infinite;
+	animation: load-progress-spinner 0.4s linear infinite;
+}
+
+@-webkit-keyframes load-progress-spinner {
+	0% {
+		-webkit-transform: rotate(0);
+		transform: rotate(0);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+@keyframes load-progress-spinner {
+	0% {
+		-webkit-transform: rotate(0);
+		transform: rotate(0);
+	}
+
+	100% {
+		-webkit-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+/* ==================
+          列表
+ ==================== */
+.grayscale {
+	filter: grayscale(1);
+}
+
+.cu-list+.cu-list {
+	margin-top: 30rpx
+}
+
+.cu-list>.cu-item {
+	transition: all .6s ease-in-out 0s;
+	transform: translateX(0rpx)
+}
+
+.cu-list>.cu-item.move-cur {
+	transform: translateX(-260rpx)
+}
+
+.cu-list>.cu-item .move {
+	position: absolute;
+	right: 0;
+	display: flex;
+	width: 260rpx;
+	height: 100%;
+	transform: translateX(100%)
+}
+
+.cu-list>.cu-item .move view {
+	display: flex;
+	flex: 1;
+	justify-content: center;
+	align-items: center
+}
+
+.cu-list.menu-avatar {
+	overflow: hidden;
+}
+
+.cu-list.menu-avatar>.cu-item {
+	position: relative;
+	display: flex;
+	padding-right: 10rpx;
+	height: 140rpx;
+	background-color: #ffffff;
+	justify-content: flex-end;
+	align-items: center
+}
+
+.cu-list.menu-avatar>.cu-item>.cu-avatar {
+	position: absolute;
+	left: 30rpx
+}
+
+.cu-list.menu-avatar>.cu-item .flex .text-cut {
+	max-width: 510rpx
+}
+
+.cu-list.menu-avatar>.cu-item .content {
+	position: absolute;
+	left: 146rpx;
+	width: calc(100% - 96rpx - 60rpx - 120rpx - 20rpx);
+	line-height: 1.6em;
+}
+
+.cu-list.menu-avatar>.cu-item .content.flex-sub {
+	width: calc(100% - 96rpx - 60rpx - 20rpx);
+}
+
+.cu-list.menu-avatar>.cu-item .content>view:first-child {
+	font-size: 30rpx;
+	display: flex;
+	align-items: center
+}
+
+.cu-list.menu-avatar>.cu-item .content .cu-tag.sm {
+	display: inline-block;
+	margin-left: 10rpx;
+	height: 28rpx;
+	font-size: 16rpx;
+	line-height: 32rpx
+}
+
+.cu-list.menu-avatar>.cu-item .action {
+	width: 100rpx;
+	text-align: center
+}
+
+.cu-list.menu-avatar>.cu-item .action view+view {
+	margin-top: 10rpx
+}
+
+.cu-list.menu-avatar.comment>.cu-item .content {
+	position: relative;
+	left: 0;
+	width: auto;
+	flex: 1;
+}
+
+.cu-list.menu-avatar.comment>.cu-item {
+	padding: 30rpx 30rpx 30rpx 120rpx;
+	height: auto
+}
+
+.cu-list.menu-avatar.comment .cu-avatar {
+	align-self: flex-start
+}
+
+.cu-list.menu>.cu-item {
+	position: relative;
+	display: flex;
+	padding: 0 30rpx;
+	min-height: 100rpx;
+	background-color: #ffffff;
+	justify-content: space-between;
+	align-items: center
+}
+
+.cu-list.menu>.cu-item:last-child:after {
+	border: none
+}
+
+.cu-list.menu-avatar>.cu-item:after,
+.cu-list.menu>.cu-item:after {
+	position: absolute;
+	top: 0;
+	left: 0;
+	box-sizing: border-box;
+	width: 200%;
+	height: 200%;
+	border-bottom: 1rpx solid #ddd;
+	border-radius: inherit;
+	content: " ";
+	transform: scale(.5);
+	transform-origin: 0 0;
+	pointer-events: none
+}
+
+.cu-list.menu>.cu-item.grayscale {
+	background-color: #f5f5f5
+}
+
+.cu-list.menu>.cu-item.cur {
+	background-color: #fcf7e9
+}
+
+.cu-list.menu>.cu-item.arrow {
+	padding-right: 90rpx
+}
+
+.cu-list.menu>.cu-item.arrow:before {
+	position: absolute;
+	top: 0;
+	right: 30rpx;
+	bottom: 0;
+	display: block;
+	margin: auto;
+	width: 30rpx;
+	height: 30rpx;
+	color: #8799a3;
+	content: "\e6a3";
+	text-align: center;
+	font-size: 34rpx;
+	font-family: cuIcon;
+	line-height: 30rpx
+}
+
+.cu-list.menu>.cu-item button.content {
+	padding: 0;
+	background-color: transparent;
+	justify-content: flex-start
+}
+
+.cu-list.menu>.cu-item button.content:after {
+	display: none
+}
+
+.cu-list.menu>.cu-item .cu-avatar-group .cu-avatar {
+	border-color: #ffffff
+}
+
+.cu-list.menu>.cu-item .content>view:first-child {
+	display: flex;
+	align-items: center
+}
+
+.cu-list.menu>.cu-item .content>text[class*=cuIcon] {
+	display: inline-block;
+	margin-right: 10rpx;
+	width: 1.6em;
+	text-align: center
+}
+
+.cu-list.menu>.cu-item .content>image {
+	display: inline-block;
+	margin-right: 10rpx;
+	width: 1.6em;
+	height: 1.6em;
+	vertical-align: middle
+}
+
+.cu-list.menu>.cu-item .content {
+	font-size: 30rpx;
+	line-height: 1.6em;
+	flex: 1
+}
+
+.cu-list.menu>.cu-item .content .cu-tag.sm {
+	display: inline-block;
+	margin-left: 10rpx;
+	height: 28rpx;
+	font-size: 16rpx;
+	line-height: 32rpx
+}
+
+.cu-list.menu>.cu-item .action .cu-tag:empty {
+	right: 10rpx
+}
+
+.cu-list.menu {
+	display: block;
+	overflow: hidden
+}
+
+.cu-list.menu.sm-border>.cu-item:after {
+	left: 30rpx;
+	width: calc(200% - 120rpx)
+}
+
+.cu-list.grid>.cu-item {
+	position: relative;
+	display: flex;
+	padding: 20rpx 0 30rpx;
+	transition-duration: 0s;
+	flex-direction: column
+}
+
+.cu-list.grid>.cu-item:after {
+	position: absolute;
+	top: 0;
+	left: 0;
+	box-sizing: border-box;
+	width: 200%;
+	height: 200%;
+	border-right: 1px solid rgba(0, 0, 0, .1);
+	border-bottom: 1px solid rgba(0, 0, 0, .1);
+	border-radius: inherit;
+	content: " ";
+	transform: scale(.5);
+	transform-origin: 0 0;
+	pointer-events: none
+}
+
+.cu-list.grid>.cu-item text {
+	display: block;
+	margin-top: 10rpx;
+	color: #888;
+	font-size: 26rpx;
+	line-height: 40rpx
+}
+
+.cu-list.grid>.cu-item [class*=cuIcon] {
+	position: relative;
+	display: block;
+	margin-top: 20rpx;
+	width: 100%;
+	font-size: 48rpx
+}
+
+.cu-list.grid>.cu-item .cu-tag {
+	right: auto;
+	left: 50%;
+	margin-left: 20rpx
+}
+
+.cu-list.grid {
+	background-color: #ffffff;
+	text-align: center
+}
+
+.cu-list.grid.no-border>.cu-item {
+	padding-top: 10rpx;
+	padding-bottom: 20rpx
+}
+
+.cu-list.grid.no-border>.cu-item:after {
+	border: none
+}
+
+.cu-list.grid.no-border {
+	padding: 20rpx 10rpx
+}
+
+.cu-list.grid.col-3>.cu-item:nth-child(3n):after,
+.cu-list.grid.col-4>.cu-item:nth-child(4n):after,
+.cu-list.grid.col-5>.cu-item:nth-child(5n):after {
+	border-right-width: 0
+}
+
+.cu-list.card-menu {
+	overflow: hidden;
+	margin-right: 30rpx;
+	margin-left: 30rpx;
+	border-radius: 20rpx
+}
+
+
+/* ==================
+          操作条
+ ==================== */
+
+.cu-bar {
+	display: flex;
+	position: relative;
+	align-items: center;
+	min-height: 100rpx;
+	justify-content: space-between;
+}
+
+.cu-bar .action {
+	display: flex;
+	align-items: center;
+	height: 100%;
+	justify-content: center;
+	max-width: 100%;
+}
+
+.cu-bar .action.border-title {
+	position: relative;
+	top: -10rpx;
+}
+
+.cu-bar .action.border-title text[class*="bg-"]:last-child {
+	position: absolute;
+	bottom: -0.5rem;
+	min-width: 2rem;
+	height: 6rpx;
+	left: 0;
+}
+
+.cu-bar .action.sub-title {
+	position: relative;
+	top: -0.2rem;
+}
+
+.cu-bar .action.sub-title text {
+	position: relative;
+	z-index: 1;
+}
+
+.cu-bar .action.sub-title text[class*="bg-"]:last-child {
+	position: absolute;
+	display: inline-block;
+	bottom: -0.2rem;
+	border-radius: 6rpx;
+	width: 100%;
+	height: 0.6rem;
+	left: 0.6rem;
+	opacity: 0.3;
+	z-index: 0;
+}
+
+.cu-bar .action.sub-title text[class*="text-"]:last-child {
+	position: absolute;
+	display: inline-block;
+	bottom: -0.7rem;
+	left: 0.5rem;
+	opacity: 0.2;
+	z-index: 0;
+	text-align: right;
+	font-weight: 900;
+	font-size: 36rpx;
+}
+
+.cu-bar.justify-center .action.border-title text:last-child,
+.cu-bar.justify-center .action.sub-title text:last-child {
+	left: 0;
+	right: 0;
+	margin: auto;
+	text-align: center;
+}
+
+.cu-bar .action:first-child {
+	margin-left: 30rpx;
+	font-size: 30rpx;
+}
+
+.cu-bar .action text.text-cut {
+	text-align: left;
+	width: 100%;
+}
+
+.cu-bar .cu-avatar:first-child {
+	margin-left: 20rpx;
+}
+
+.cu-bar .action:first-child>text[class*="cuIcon-"] {
+	margin-left: -0.3em;
+	margin-right: 0.3em;
+}
+
+.cu-bar .action:last-child {
+	margin-right: 30rpx;
+}
+
+.cu-bar .action>text[class*="cuIcon-"],
+.cu-bar .action>view[class*="cuIcon-"] {
+	font-size: 36rpx;
+}
+
+.cu-bar .action>text[class*="cuIcon-"]+text[class*="cuIcon-"] {
+	margin-left: 0.5em;
+}
+
+.cu-bar .content {
+	position: absolute;
+	text-align: center;
+	width: calc(100% - 340rpx);
+	left: 0;
+	right: 0;
+	bottom: 0;
+	top: 0;
+	margin: auto;
+	height: 60rpx;
+	font-size: 32rpx;
+	line-height: 60rpx;
+	cursor: none;
+	pointer-events: none;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	overflow: hidden;
+}
+
+.cu-bar.ios .content {
+	bottom: 7px;
+	height: 30px;
+	font-size: 32rpx;
+	line-height: 30px;
+}
+
+.cu-bar.btn-group {
+	justify-content: space-around;
+}
+
+.cu-bar.btn-group button {
+	padding: 20rpx 32rpx;
+}
+
+.cu-bar.btn-group button {
+	flex: 1;
+	margin: 0 20rpx;
+	max-width: 50%;
+}
+
+.cu-bar .search-form {
+	background-color: #f5f5f5;
+	line-height: 64rpx;
+	height: 64rpx;
+	font-size: 24rpx;
+	color: #333333;
+	flex: 1;
+	display: flex;
+	align-items: center;
+	margin: 0 30rpx;
+}
+
+.cu-bar .search-form+.action {
+	margin-right: 30rpx;
+}
+
+.cu-bar .search-form input {
+	flex: 1;
+	padding-right: 30rpx;
+	height: 64rpx;
+	line-height: 64rpx;
+	font-size: 26rpx;
+	background-color: transparent;
+}
+
+.cu-bar .search-form [class*="cuIcon-"] {
+	margin: 0 0.5em 0 0.8em;
+}
+
+.cu-bar .search-form [class*="cuIcon-"]::before {
+	top: 0rpx;
+}
+
+.cu-bar.fixed,
+.nav.fixed {
+	position: fixed;
+	width: 100%;
+	top: 0;
+	z-index: 1024;
+	box-shadow: 0 1rpx 6rpx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.foot {
+	position: fixed;
+	width: 100%;
+	bottom: 0;
+	z-index: 1024;
+	box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.tabbar {
+	padding: 0;
+	height: calc(100rpx + env(safe-area-inset-bottom) / 2);
+	padding-bottom: calc(env(safe-area-inset-bottom) / 2);
+}
+
+.cu-tabbar-height {
+	min-height: 100rpx;
+	height: calc(100rpx + env(safe-area-inset-bottom) / 2);
+}
+
+.cu-bar.tabbar.shadow {
+	box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.tabbar .action {
+	font-size: 22rpx;
+	position: relative;
+	flex: 1;
+	text-align: center;
+	padding: 0;
+	display: block;
+	height: auto;
+	line-height: 1;
+	margin: 0;
+	background-color: inherit;
+	overflow: initial;
+}
+
+.cu-bar.tabbar.shop .action {
+	width: 140rpx;
+	flex: initial;
+}
+
+.cu-bar.tabbar .action.add-action {
+	position: relative;
+	z-index: 2;
+	padding-top: 50rpx;
+}
+
+.cu-bar.tabbar .action.add-action [class*="cuIcon-"] {
+	position: absolute;
+	width: 70rpx;
+	z-index: 2;
+	height: 70rpx;
+	border-radius: 50%;
+	line-height: 70rpx;
+	font-size: 50rpx;
+	top: -35rpx;
+	left: 0;
+	right: 0;
+	margin: auto;
+	padding: 0;
+}
+
+.cu-bar.tabbar .action.add-action::after {
+	content: "";
+	position: absolute;
+	width: 100rpx;
+	height: 100rpx;
+	top: -50rpx;
+	left: 0;
+	right: 0;
+	margin: auto;
+	box-shadow: 0 -3rpx 8rpx rgba(0, 0, 0, 0.08);
+	border-radius: 50rpx;
+	background-color: inherit;
+	z-index: 0;
+}
+
+.cu-bar.tabbar .action.add-action::before {
+	content: "";
+	position: absolute;
+	width: 100rpx;
+	height: 30rpx;
+	bottom: 30rpx;
+	left: 0;
+	right: 0;
+	margin: auto;
+	background-color: inherit;
+	z-index: 1;
+}
+
+.cu-bar.tabbar .btn-group {
+	flex: 1;
+	display: flex;
+	justify-content: space-around;
+	align-items: center;
+	padding: 0 10rpx;
+}
+
+.cu-bar.tabbar button.action::after {
+	border: 0;
+}
+
+.cu-bar.tabbar .action [class*="cuIcon-"] {
+	width: 100rpx;
+	position: relative;
+	display: block;
+	height: auto;
+	margin: 0 auto 10rpx;
+	text-align: center;
+	font-size: 40rpx;
+}
+
+.cu-bar.tabbar .action .cuIcon-cu-image {
+	margin: 0 auto;
+}
+
+.cu-bar.tabbar .action .cuIcon-cu-image image {
+	width: 50rpx;
+	height: 50rpx;
+	display: inline-block;
+}
+
+.cu-bar.tabbar .submit {
+	align-items: center;
+	display: flex;
+	justify-content: center;
+	text-align: center;
+	position: relative;
+	flex: 2;
+	align-self: stretch;
+}
+
+.cu-bar.tabbar .submit:last-child {
+	flex: 2.6;
+}
+
+.cu-bar.tabbar .submit+.submit {
+	flex: 2;
+}
+
+.cu-bar.tabbar.border .action::before {
+	content: " ";
+	width: 200%;
+	height: 200%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	border-right: 1rpx solid rgba(0, 0, 0, 0.1);
+	z-index: 3;
+}
+
+.cu-bar.tabbar.border .action:last-child:before {
+	display: none;
+}
+
+.cu-bar.input {
+	padding-right: 20rpx;
+	background-color: #ffffff;
+}
+
+.cu-bar.input input {
+	overflow: initial;
+	line-height: 64rpx;
+	height: 64rpx;
+	min-height: 64rpx;
+	flex: 1;
+	font-size: 30rpx;
+	margin: 0 20rpx;
+}
+
+.cu-bar.input .action {
+	margin-left: 20rpx;
+}
+
+.cu-bar.input .action [class*="cuIcon-"] {
+	font-size: 48rpx;
+}
+
+.cu-bar.input input+.action {
+	margin-right: 20rpx;
+	margin-left: 0rpx;
+}
+
+.cu-bar.input .action:first-child [class*="cuIcon-"] {
+	margin-left: 0rpx;
+}
+
+.cu-custom {
+	display: block;
+	position: relative;
+}
+
+.cu-custom .cu-bar .content {
+	width: calc(100% - 440rpx);
+}
+
+/* #ifdef MP-ALIPAY */
+.cu-custom .cu-bar .action .cuIcon-back {
+	opacity: 0;
+}
+
+/* #endif */
+
+.cu-custom .cu-bar .content image {
+	height: 60rpx;
+	width: 240rpx;
+}
+
+.cu-custom .cu-bar {
+	min-height: 0px;
+	/* #ifdef MP-WEIXIN */
+	padding-right: 220rpx;
+	/* #endif */
+	/* #ifdef MP-ALIPAY */
+	padding-right: 150rpx;
+	/* #endif */
+	box-shadow: 0rpx 0rpx 0rpx;
+	z-index: 9999;
+}
+
+.cu-custom .cu-bar .border-custom {
+	position: relative;
+	background: rgba(0, 0, 0, 0.15);
+	border-radius: 1000rpx;
+	height: 30px;
+}
+
+.cu-custom .cu-bar .border-custom::after {
+	content: " ";
+	width: 200%;
+	height: 200%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	border-radius: inherit;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	pointer-events: none;
+	box-sizing: border-box;
+	border: 1rpx solid #ffffff;
+	opacity: 0.5;
+}
+
+.cu-custom .cu-bar .border-custom::before {
+	content: " ";
+	width: 1rpx;
+	height: 110%;
+	position: absolute;
+	top: 22.5%;
+	left: 0;
+	right: 0;
+	margin: auto;
+	transform: scale(0.5);
+	transform-origin: 0 0;
+	pointer-events: none;
+	box-sizing: border-box;
+	opacity: 0.6;
+	background-color: #ffffff;
+}
+
+.cu-custom .cu-bar .border-custom text {
+	display: block;
+	flex: 1;
+	margin: auto !important;
+	text-align: center;
+	font-size: 34rpx;
+}
+
+/* ==================
+         导航栏
+ ==================== */
+
+.nav {
+	white-space: nowrap;
+}
+
+::-webkit-scrollbar {
+	display: none;
+}
+
+.nav .cu-item {
+	height: 90rpx;
+	display: inline-block;
+	line-height: 90rpx;
+	margin: 0 10rpx;
+	padding: 0 20rpx;
+}
+
+.nav .cu-item.cur {
+	border-bottom: 4rpx solid;
+}
+
+/* ==================
+         时间轴
+ ==================== */
+
+.cu-timeline {
+	display: block;
+	background-color: #ffffff;
+}
+
+.cu-timeline .cu-time {
+	width: 120rpx;
+	text-align: center;
+	padding: 20rpx 0;
+	font-size: 26rpx;
+	color: #888;
+	display: block;
+}
+
+.cu-timeline>.cu-item {
+	padding: 30rpx 30rpx 30rpx 120rpx;
+	position: relative;
+	display: block;
+	z-index: 0;
+}
+
+.cu-timeline>.cu-item:not([class*="text-"]) {
+	color: #ccc;
+}
+
+.cu-timeline>.cu-item::after {
+	content: "";
+	display: block;
+	position: absolute;
+	width: 1rpx;
+	background-color: #ddd;
+	left: 60rpx;
+	height: 100%;
+	top: 0;
+	z-index: 8;
+}
+
+.cu-timeline>.cu-item::before {
+	font-family: "cuIcon";
+	display: block;
+	position: absolute;
+	top: 36rpx;
+	z-index: 9;
+	background-color: #ffffff;
+	width: 50rpx;
+	height: 50rpx;
+	text-align: center;
+	border: none;
+	line-height: 50rpx;
+	left: 36rpx;
+}
+
+.cu-timeline>.cu-item:not([class*="cuIcon-"])::before {
+	content: "\e763";
+}
+
+.cu-timeline>.cu-item[class*="cuIcon-"]::before {
+	background-color: #ffffff;
+	width: 50rpx;
+	height: 50rpx;
+	text-align: center;
+	border: none;
+	line-height: 50rpx;
+	left: 36rpx;
+}
+
+.cu-timeline>.cu-item>.content {
+	padding: 30rpx;
+	border-radius: 6rpx;
+	display: block;
+	line-height: 1.6;
+}
+
+.cu-timeline>.cu-item>.content:not([class*="bg-"]) {
+	background-color: #f1f1f1;
+	color: #333333;
+}
+
+.cu-timeline>.cu-item>.content+.content {
+	margin-top: 20rpx;
+}
+
+/* ==================
+         聊天
+ ==================== */
+
+.cu-chat {
+	display: flex;
+	flex-direction: column;
+}
+
+.cu-chat .cu-item {
+	display: flex;
+	padding: 30rpx 30rpx 70rpx;
+	position: relative;
+}
+
+.cu-chat .cu-item>.cu-avatar {
+	width: 80rpx;
+	height: 80rpx;
+}
+
+.cu-chat .cu-item>.main {
+	max-width: calc(100% - 260rpx);
+	margin: 0 40rpx;
+	display: flex;
+	align-items: center;
+}
+
+.cu-chat .cu-item>image {
+	height: 320rpx;
+}
+
+.cu-chat .cu-item>.main .content {
+	padding: 20rpx;
+	border-radius: 6rpx;
+	display: inline-flex;
+	max-width: 100%;
+	align-items: center;
+	font-size: 30rpx;
+	position: relative;
+	min-height: 80rpx;
+	line-height: 40rpx;
+	text-align: left;
+}
+
+.cu-chat .cu-item>.main .content:not([class*="bg-"]) {
+	background-color: #ffffff;
+	color: #333333;
+}
+
+.cu-chat .cu-item .date {
+	position: absolute;
+	font-size: 24rpx;
+	color: #8799a3;
+	width: calc(100% - 320rpx);
+	bottom: 20rpx;
+	left: 160rpx;
+}
+
+.cu-chat .cu-item .action {
+	padding: 0 30rpx;
+	display: flex;
+	align-items: center;
+}
+
+.cu-chat .cu-item>.main .content::after {
+	content: "";
+	top: 27rpx;
+	transform: rotate(45deg);
+	position: absolute;
+	z-index: 100;
+	display: inline-block;
+	overflow: hidden;
+	width: 24rpx;
+	height: 24rpx;
+	left: -12rpx;
+	right: initial;
+	background-color: inherit;
+}
+
+.cu-chat .cu-item.self>.main .content::after {
+	left: auto;
+	right: -12rpx;
+}
+
+.cu-chat .cu-item>.main .content::before {
+	content: "";
+	top: 30rpx;
+	transform: rotate(45deg);
+	position: absolute;
+	z-index: -1;
+	display: inline-block;
+	overflow: hidden;
+	width: 24rpx;
+	height: 24rpx;
+	left: -12rpx;
+	right: initial;
+	background-color: inherit;
+	filter: blur(5rpx);
+	opacity: 0.3;
+}
+
+.cu-chat .cu-item>.main .content:not([class*="bg-"])::before {
+	background-color: #333333;
+	opacity: 0.1;
+}
+
+.cu-chat .cu-item.self>.main .content::before {
+	left: auto;
+	right: -12rpx;
+}
+
+.cu-chat .cu-item.self {
+	justify-content: flex-end;
+	text-align: right;
+}
+
+.cu-chat .cu-info {
+	display: inline-block;
+	margin: 20rpx auto;
+	font-size: 24rpx;
+	padding: 8rpx 12rpx;
+	background-color: rgba(0, 0, 0, 0.2);
+	border-radius: 6rpx;
+	color: #ffffff;
+	max-width: 400rpx;
+	line-height: 1.4;
+}
+
+/* ==================
+         卡片
+ ==================== */
+
+.cu-card {
+	display: block;
+	overflow: hidden;
+}
+
+.cu-card>.cu-item {
+	display: block;
+	background-color: #ffffff;
+	overflow: hidden;
+	border-radius: 10rpx;
+	margin: 30rpx;
+}
+
+.cu-card>.cu-item.shadow-blur {
+	overflow: initial;
+}
+
+.cu-card.no-card>.cu-item {
+	margin: 0rpx;
+	border-radius: 0rpx;
+}
+
+.cu-card .grid.grid-square {
+	margin-bottom: -20rpx;
+}
+
+.cu-card.case .image {
+	position: relative;
+}
+
+.cu-card.case .image image {
+	width: 100%;
+}
+
+.cu-card.case .image .cu-tag {
+	position: absolute;
+	right: 0;
+	top: 0;
+}
+
+.cu-card.case .image .cu-bar {
+	position: absolute;
+	bottom: 0;
+	width: 100%;
+	background-color: transparent;
+	padding: 0rpx 30rpx;
+}
+
+.cu-card.case.no-card .image {
+	margin: 30rpx 30rpx 0;
+	overflow: hidden;
+	border-radius: 10rpx;
+}
+
+.cu-card.dynamic {
+	display: block;
+}
+
+.cu-card.dynamic>.cu-item {
+	display: block;
+	background-color: #ffffff;
+	overflow: hidden;
+}
+
+.cu-card.dynamic>.cu-item>.text-content {
+	padding: 0 30rpx 0;
+	max-height: 6.4em;
+	overflow: hidden;
+	font-size: 30rpx;
+	margin-bottom: 20rpx;
+}
+
+.cu-card.dynamic>.cu-item .square-img {
+	width: 100%;
+	height: 200rpx;
+	border-radius: 6rpx;
+}
+
+.cu-card.dynamic>.cu-item .only-img {
+	width: 100%;
+	height: 320rpx;
+	border-radius: 6rpx;
+}
+
+/* card.dynamic>.cu-item .comment {
+  padding: 20rpx;
+  background-color: #f1f1f1;
+  margin: 0 30rpx 30rpx;
+  border-radius: 6rpx;
+} */
+
+.cu-card.article {
+	display: block;
+}
+
+.cu-card.article>.cu-item {
+	padding-bottom: 30rpx;
+}
+
+.cu-card.article>.cu-item .title {
+	font-size: 30rpx;
+	font-weight: 900;
+	color: #333333;
+	line-height: 100rpx;
+	padding: 0 30rpx;
+}
+
+.cu-card.article>.cu-item .content {
+	display: flex;
+	padding: 0 30rpx;
+}
+
+.cu-card.article>.cu-item .content>image {
+	width: 240rpx;
+	height: 6.4em;
+	margin-right: 20rpx;
+	border-radius: 6rpx;
+}
+
+.cu-card.article>.cu-item .content .desc {
+	flex: 1;
+	display: flex;
+	flex-direction: column;
+	justify-content: space-between;
+}
+
+.cu-card.article>.cu-item .content .text-content {
+	font-size: 28rpx;
+	color: #888;
+	height: 4.8em;
+	overflow: hidden;
+}
+
+/* ==================
+         表单
+ ==================== */
+
+.cu-form-group {
+	background-color: #ffffff;
+	padding: 1rpx 30rpx;
+	display: flex;
+	align-items: center;
+	min-height: 100rpx;
+	justify-content: space-between;
+}
+
+.cu-form-group+.cu-form-group {
+	border-top: 1rpx solid #eee;
+}
+
+.cu-form-group .title {
+	text-align: justify;
+	padding-right: 30rpx;
+	font-size: 30rpx;
+	position: relative;
+	height: 60rpx;
+	line-height: 60rpx;
+}
+
+.cu-form-group input {
+	flex: 1;
+	font-size: 30rpx;
+	color: #555;
+	padding-right: 20rpx;
+}
+
+.cu-form-group>text[class*="cuIcon-"] {
+	font-size: 36rpx;
+	padding: 0;
+	box-sizing: border-box;
+}
+
+.cu-form-group textarea {
+	margin: 32rpx 0 30rpx;
+	height: 4.6em;
+	width: 100%;
+	line-height: 1.2em;
+	flex: 1;
+	font-size: 28rpx;
+	padding: 0;
+}
+
+.cu-form-group.align-start .title {
+	height: 1em;
+	margin-top: 32rpx;
+	line-height: 1em;
+}
+
+.cu-form-group picker {
+	flex: 1;
+	padding-right: 40rpx;
+	overflow: hidden;
+	position: relative;
+}
+
+.cu-form-group picker .picker {
+	line-height: 100rpx;
+	font-size: 28rpx;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	overflow: hidden;
+	width: 100%;
+	text-align: right;
+}
+
+.cu-form-group picker::after {
+	font-family: cuIcon;
+	display: block;
+	content: "\e6a3";
+	position: absolute;
+	font-size: 34rpx;
+	color: #8799a3;
+	line-height: 100rpx;
+	width: 60rpx;
+	text-align: center;
+	top: 0;
+	bottom: 0;
+	right: -20rpx;
+	margin: auto;
+}
+
+.cu-form-group textarea[disabled],
+.cu-form-group textarea[disabled] .placeholder {
+	color: transparent;
+}
+
+/* ==================
+         模态窗口
+ ==================== */
+
+.cu-modal {
+	position: fixed;
+	top: 0;
+	right: 0;
+	bottom: 0;
+	left: 0;
+	z-index: 1110;
+	opacity: 0;
+	outline: 0;
+	text-align: center;
+	-ms-transform: scale(1.185);
+	transform: scale(1.185);
+	backface-visibility: hidden;
+	perspective: 2000rpx;
+	background: rgba(0, 0, 0, 0.6);
+	transition: all 0.3s ease-in-out 0s;
+	pointer-events: none;
+}
+
+.cu-modal::before {
+	content: "\200B";
+	display: inline-block;
+	height: 100%;
+	vertical-align: middle;
+}
+
+.cu-modal.show {
+	opacity: 1;
+	transition-duration: 0.3s;
+	-ms-transform: scale(1);
+	transform: scale(1);
+	overflow-x: hidden;
+	overflow-y: auto;
+	pointer-events: auto;
+}
+
+.cu-dialog {
+	position: relative;
+	display: inline-block;
+	vertical-align: middle;
+	margin-left: auto;
+	margin-right: auto;
+	width: 680rpx;
+	max-width: 100%;
+	background-color: #f8f8f8;
+	border-radius: 10rpx;
+	overflow: hidden;
+}
+
+.cu-modal.bottom-modal::before {
+	vertical-align: bottom;
+}
+
+.cu-modal.bottom-modal .cu-dialog {
+	width: 100%;
+	border-radius: 0;
+}
+
+.cu-modal.bottom-modal {
+	margin-bottom: -1000rpx;
+}
+
+.cu-modal.bottom-modal.show {
+	margin-bottom: 0;
+}
+
+.cu-modal.drawer-modal {
+	transform: scale(1);
+	display: flex;
+}
+
+.cu-modal.drawer-modal .cu-dialog {
+	height: 100%;
+	min-width: 200rpx;
+	border-radius: 0;
+	margin: initial;
+	transition-duration: 0.3s;
+}
+
+.cu-modal.drawer-modal.justify-start .cu-dialog {
+	transform: translateX(-100%);
+}
+
+.cu-modal.drawer-modal.justify-end .cu-dialog {
+	transform: translateX(100%);
+}
+
+.cu-modal.drawer-modal.show .cu-dialog {
+	transform: translateX(0%);
+}
+.cu-modal .cu-dialog>.cu-bar:first-child .action{
+  min-width: 100rpx;
+  margin-right: 0;
+  min-height: 100rpx;
+}
+/* ==================
+         轮播
+ ==================== */
+swiper .a-swiper-dot {
+	display: inline-block;
+	width: 16rpx;
+	height: 16rpx;
+	background: rgba(0, 0, 0, .3);
+	border-radius: 50%;
+	vertical-align: middle;
+}
+
+swiper[class*="-dot"] .wx-swiper-dots,
+swiper[class*="-dot"] .a-swiper-dots,
+swiper[class*="-dot"] .uni-swiper-dots {
+	display: flex;
+	align-items: center;
+	width: 100%;
+	justify-content: center;
+}
+
+swiper.square-dot .wx-swiper-dot,
+swiper.square-dot .a-swiper-dot,
+swiper.square-dot .uni-swiper-dot {
+	background-color: #ffffff;
+	opacity: 0.4;
+	width: 10rpx;
+	height: 10rpx;
+	border-radius: 20rpx;
+	margin: 0 8rpx !important;
+}
+
+swiper.square-dot .wx-swiper-dot.wx-swiper-dot-active,
+swiper.square-dot .a-swiper-dot.a-swiper-dot-active,
+swiper.square-dot .uni-swiper-dot.uni-swiper-dot-active {
+	opacity: 1;
+	width: 30rpx;
+}
+
+swiper.round-dot .wx-swiper-dot,
+swiper.round-dot .a-swiper-dot,
+swiper.round-dot .uni-swiper-dot {
+	width: 10rpx;
+	height: 10rpx;
+	position: relative;
+	margin: 4rpx 8rpx !important;
+}
+
+swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active::after,
+swiper.round-dot .a-swiper-dot.a-swiper-dot-active::after,
+swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active::after {
+	content: "";
+	position: absolute;
+	width: 10rpx;
+	height: 10rpx;
+	top: 0rpx;
+	left: 0rpx;
+	right: 0;
+	bottom: 0;
+	margin: auto;
+	background-color: #ffffff;
+	border-radius: 20rpx;
+}
+
+swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active,
+swiper.round-dot .a-swiper-dot.a-swiper-dot-active,
+swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active {
+	width: 18rpx;
+	height: 18rpx;
+}
+
+.screen-swiper {
+	min-height: 375rpx;
+}
+
+.screen-swiper image,
+.screen-swiper video,
+.swiper-item image,
+.swiper-item video {
+	width: 100%;
+	display: block;
+	height: 100%;
+	margin: 0;
+	pointer-events: none;
+}
+
+.card-swiper {
+	height: 420rpx !important;
+}
+
+.card-swiper swiper-item {
+	width: 610rpx !important;
+	left: 70rpx;
+	box-sizing: border-box;
+	padding: 40rpx 0rpx 70rpx;
+	overflow: initial;
+}
+
+.card-swiper swiper-item .swiper-item {
+	width: 100%;
+	display: block;
+	height: 100%;
+	border-radius: 10rpx;
+	transform: scale(0.9);
+	transition: all 0.2s ease-in 0s;
+	overflow: hidden;
+}
+
+.card-swiper swiper-item.cur .swiper-item {
+	transform: none;
+	transition: all 0.2s ease-in 0s;
+}
+
+
+.tower-swiper {
+	height: 420rpx;
+	position: relative;
+	max-width: 750rpx;
+	overflow: hidden;
+}
+
+.tower-swiper .tower-item {
+	position: absolute;
+	width: 300rpx;
+	height: 380rpx;
+	top: 0;
+	bottom: 0;
+	left: 50%;
+	margin: auto;
+	transition: all 0.2s ease-in 0s;
+	opacity: 1;
+}
+
+.tower-swiper .tower-item.none {
+	opacity: 0;
+}
+
+.tower-swiper .tower-item .swiper-item {
+	width: 100%;
+	height: 100%;
+	border-radius: 6rpx;
+	overflow: hidden;
+}
+
+/* ==================
+          步骤条
+ ==================== */
+
+.cu-steps {
+	display: flex;
+}
+
+scroll-view.cu-steps {
+	display: block;
+	white-space: nowrap;
+}
+
+scroll-view.cu-steps .cu-item {
+	display: inline-block;
+}
+
+.cu-steps .cu-item {
+	flex: 1;
+	text-align: center;
+	position: relative;
+	min-width: 100rpx;
+}
+
+.cu-steps .cu-item:not([class*="text-"]) {
+	color: #8799a3;
+}
+
+.cu-steps .cu-item [class*="cuIcon-"],
+.cu-steps .cu-item .num {
+	display: block;
+	font-size: 40rpx;
+	line-height: 80rpx;
+}
+
+.cu-steps .cu-item::before,
+.cu-steps .cu-item::after,
+.cu-steps.steps-arrow .cu-item::before,
+.cu-steps.steps-arrow .cu-item::after {
+	content: "";
+	display: block;
+	position: absolute;
+	height: 0px;
+	width: calc(100% - 80rpx);
+	border-bottom: 1px solid #ccc;
+	left: calc(0rpx - (100% - 80rpx) / 2);
+	top: 40rpx;
+	z-index: 0;
+}
+
+.cu-steps.steps-arrow .cu-item::before,
+.cu-steps.steps-arrow .cu-item::after {
+	content: "\e6a3";
+	font-family: 'cuIcon';
+	height: 30rpx;
+	border-bottom-width: 0px;
+	line-height: 30rpx;
+	top: 0;
+	bottom: 0;
+	margin: auto;
+	color: #ccc;
+}
+
+.cu-steps.steps-bottom .cu-item::before,
+.cu-steps.steps-bottom .cu-item::after {
+	bottom: 40rpx;
+	top: initial;
+}
+
+.cu-steps .cu-item::after {
+	border-bottom: 1px solid currentColor;
+	width: 0px;
+	transition: all 0.3s ease-in-out 0s;
+}
+
+.cu-steps .cu-item[class*="text-"]::after {
+	width: calc(100% - 80rpx);
+	color: currentColor;
+}
+
+.cu-steps .cu-item:first-child::before,
+.cu-steps .cu-item:first-child::after {
+	display: none;
+}
+
+.cu-steps .cu-item .num {
+	width: 40rpx;
+	height: 40rpx;
+	border-radius: 50%;
+	line-height: 40rpx;
+	margin: 20rpx auto;
+	font-size: 24rpx;
+	border: 1px solid currentColor;
+	position: relative;
+	overflow: hidden;
+}
+
+.cu-steps .cu-item[class*="text-"] .num {
+	background-color: currentColor;
+}
+
+.cu-steps .cu-item .num::before,
+.cu-steps .cu-item .num::after {
+	content: attr(data-index);
+	position: absolute;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+	margin: auto;
+	transition: all 0.3s ease-in-out 0s;
+	transform: translateY(0rpx);
+}
+
+.cu-steps .cu-item[class*="text-"] .num::before {
+	transform: translateY(-40rpx);
+	color: #ffffff;
+}
+
+.cu-steps .cu-item .num::after {
+	transform: translateY(40rpx);
+	color: #ffffff;
+	transition: all 0.3s ease-in-out 0s;
+}
+
+.cu-steps .cu-item[class*="text-"] .num::after {
+	content: "\e645";
+	font-family: 'cuIcon';
+	color: #ffffff;
+	transform: translateY(0rpx);
+}
+
+.cu-steps .cu-item[class*="text-"] .num.err::after {
+	content: "\e646";
+}
+
+/* ==================
+          布局
+ ==================== */
+
+/*  -- flex弹性布局 -- */
+
+.flex {
+	display: flex;
+}
+
+.basis-xs {
+	flex-basis: 20%;
+}
+
+.basis-sm {
+	flex-basis: 40%;
+}
+
+.basis-df {
+	flex-basis: 50%;
+}
+
+.basis-lg {
+	flex-basis: 60%;
+}
+
+.basis-xl {
+	flex-basis: 80%;
+}
+
+.flex-sub {
+	flex: 1;
+}
+
+.flex-twice {
+	flex: 2;
+}
+
+.flex-treble {
+	flex: 3;
+}
+
+.flex-direction {
+	flex-direction: column;
+}
+
+.flex-wrap {
+	flex-wrap: wrap;
+}
+
+.align-start {
+	align-items: flex-start;
+}
+
+.align-end {
+	align-items: flex-end;
+}
+
+.align-center {
+	align-items: center;
+}
+
+.align-stretch {
+	align-items: stretch;
+}
+
+.self-start {
+	align-self: flex-start;
+}
+
+.self-center {
+	align-self: flex-center;
+}
+
+.self-end {
+	align-self: flex-end;
+}
+
+.self-stretch {
+	align-self: stretch;
+}
+
+.align-stretch {
+	align-items: stretch;
+}
+
+.justify-start {
+	justify-content: flex-start;
+}
+
+.justify-end {
+	justify-content: flex-end;
+}
+
+.justify-center {
+	justify-content: center;
+}
+
+.justify-between {
+	justify-content: space-between;
+}
+
+.justify-around {
+	justify-content: space-around;
+}
+
+/* grid布局 */
+
+.grid {
+	display: flex;
+	flex-wrap: wrap;
+}
+
+.grid.grid-square {
+	overflow: hidden;
+}
+
+.grid.grid-square .cu-tag {
+	position: absolute;
+	right: 0;
+	top: 0;
+	border-bottom-left-radius: 6rpx;
+	padding: 6rpx 12rpx;
+	height: auto;
+	background-color: rgba(0, 0, 0, 0.5);
+}
+
+.grid.grid-square>view>text[class*="cuIcon-"] {
+	font-size: 52rpx;
+	position: absolute;
+	color: #8799a3;
+	margin: auto;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	flex-direction: column;
+}
+
+.grid.grid-square>view {
+	margin-right: 20rpx;
+	margin-bottom: 20rpx;
+	border-radius: 6rpx;
+	position: relative;
+	overflow: hidden;
+}
+.grid.grid-square>view.bg-img image {
+	width: 100%;
+	height: 100%;
+	position: absolute;
+}
+.grid.col-1.grid-square>view {
+	padding-bottom: 100%;
+	height: 0;
+	margin-right: 0;
+}
+
+.grid.col-2.grid-square>view {
+	padding-bottom: calc((100% - 20rpx)/2);
+	height: 0;
+	width: calc((100% - 20rpx)/2);
+}
+
+.grid.col-3.grid-square>view {
+	padding-bottom: calc((100% - 40rpx)/3);
+	height: 0;
+	width: calc((100% - 40rpx)/3);
+}
+
+.grid.col-4.grid-square>view {
+	padding-bottom: calc((100% - 60rpx)/4);
+	height: 0;
+	width: calc((100% - 60rpx)/4);
+}
+
+.grid.col-5.grid-square>view {
+	padding-bottom: calc((100% - 80rpx)/5);
+	height: 0;
+	width: calc((100% - 80rpx)/5);
+}
+
+.grid.col-2.grid-square>view:nth-child(2n),
+.grid.col-3.grid-square>view:nth-child(3n),
+.grid.col-4.grid-square>view:nth-child(4n),
+.grid.col-5.grid-square>view:nth-child(5n) {
+	margin-right: 0;
+}
+
+.grid.col-1>view {
+	width: 100%;
+}
+
+.grid.col-2>view {
+	width: 50%;
+}
+
+.grid.col-3>view {
+	width: 33.33%;
+}
+
+.grid.col-4>view {
+	width: 25%;
+}
+
+.grid.col-5>view {
+	width: 20%;
+}
+
+/*  -- 内外边距 -- */
+
+.margin-0 {
+	margin: 0;
+}
+
+.margin-xs {
+	margin: 10rpx;
+}
+
+.margin-sm {
+	margin: 20rpx;
+}
+
+.margin {
+	margin: 30rpx;
+}
+
+.margin-lg {
+	margin: 40rpx;
+}
+
+.margin-xl {
+	margin: 50rpx;
+}
+
+.margin-top-xs {
+	margin-top: 10rpx;
+}
+
+.margin-top-sm {
+	margin-top: 20rpx;
+}
+
+.margin-top {
+	margin-top: 30rpx;
+}
+
+.margin-top-lg {
+	margin-top: 40rpx;
+}
+
+.margin-top-xl {
+	margin-top: 50rpx;
+}
+
+.margin-right-xs {
+	margin-right: 10rpx;
+}
+
+.margin-right-sm {
+	margin-right: 20rpx;
+}
+
+.margin-right {
+	margin-right: 30rpx;
+}
+
+.margin-right-lg {
+	margin-right: 40rpx;
+}
+
+.margin-right-xl {
+	margin-right: 50rpx;
+}
+
+.margin-bottom-xs {
+	margin-bottom: 10rpx;
+}
+
+.margin-bottom-sm {
+	margin-bottom: 20rpx;
+}
+
+.margin-bottom {
+	margin-bottom: 30rpx;
+}
+
+.margin-bottom-lg {
+	margin-bottom: 40rpx;
+}
+
+.margin-bottom-xl {
+	margin-bottom: 50rpx;
+}
+
+.margin-left-xs {
+	margin-left: 10rpx;
+}
+
+.margin-left-sm {
+	margin-left: 20rpx;
+}
+
+.margin-left {
+	margin-left: 30rpx;
+}
+
+.margin-left-lg {
+	margin-left: 40rpx;
+}
+
+.margin-left-xl {
+	margin-left: 50rpx;
+}
+
+.margin-lr-xs {
+	margin-left: 10rpx;
+	margin-right: 10rpx;
+}
+
+.margin-lr-sm {
+	margin-left: 20rpx;
+	margin-right: 20rpx;
+}
+
+.margin-lr {
+	margin-left: 30rpx;
+	margin-right: 30rpx;
+}
+
+.margin-lr-lg {
+	margin-left: 40rpx;
+	margin-right: 40rpx;
+}
+
+.margin-lr-xl {
+	margin-left: 50rpx;
+	margin-right: 50rpx;
+}
+
+.margin-tb-xs {
+	margin-top: 10rpx;
+	margin-bottom: 10rpx;
+}
+
+.margin-tb-sm {
+	margin-top: 20rpx;
+	margin-bottom: 20rpx;
+}
+
+.margin-tb {
+	margin-top: 30rpx;
+	margin-bottom: 30rpx;
+}
+
+.margin-tb-lg {
+	margin-top: 40rpx;
+	margin-bottom: 40rpx;
+}
+
+.margin-tb-xl {
+	margin-top: 50rpx;
+	margin-bottom: 50rpx;
+}
+
+.padding-0 {
+	padding: 0;
+}
+
+.padding-xs {
+	padding: 10rpx;
+}
+
+.padding-sm {
+	padding: 20rpx;
+}
+
+.padding {
+	padding: 30rpx;
+}
+
+.padding-lg {
+	padding: 40rpx;
+}
+
+.padding-xl {
+	padding: 50rpx;
+}
+
+.padding-top-xs {
+	padding-top: 10rpx;
+}
+
+.padding-top-sm {
+	padding-top: 20rpx;
+}
+
+.padding-top {
+	padding-top: 30rpx;
+}
+
+.padding-top-lg {
+	padding-top: 40rpx;
+}
+
+.padding-top-xl {
+	padding-top: 50rpx;
+}
+
+.padding-right-xs {
+	padding-right: 10rpx;
+}
+
+.padding-right-sm {
+	padding-right: 20rpx;
+}
+
+.padding-right {
+	padding-right: 30rpx;
+}
+
+.padding-right-lg {
+	padding-right: 40rpx;
+}
+
+.padding-right-xl {
+	padding-right: 50rpx;
+}
+
+.padding-bottom-xs {
+	padding-bottom: 10rpx;
+}
+
+.padding-bottom-sm {
+	padding-bottom: 20rpx;
+}
+
+.padding-bottom {
+	padding-bottom: 30rpx;
+}
+
+.padding-bottom-lg {
+	padding-bottom: 40rpx;
+}
+
+.padding-bottom-xl {
+	padding-bottom: 50rpx;
+}
+
+.padding-left-xs {
+	padding-left: 10rpx;
+}
+
+.padding-left-sm {
+	padding-left: 20rpx;
+}
+
+.padding-left {
+	padding-left: 30rpx;
+}
+
+.padding-left-lg {
+	padding-left: 40rpx;
+}
+
+.padding-left-xl {
+	padding-left: 50rpx;
+}
+
+.padding-lr-xs {
+	padding-left: 10rpx;
+	padding-right: 10rpx;
+}
+
+.padding-lr-sm {
+	padding-left: 20rpx;
+	padding-right: 20rpx;
+}
+
+.padding-lr {
+	padding-left: 30rpx;
+	padding-right: 30rpx;
+}
+
+.padding-lr-lg {
+	padding-left: 40rpx;
+	padding-right: 40rpx;
+}
+
+.padding-lr-xl {
+	padding-left: 50rpx;
+	padding-right: 50rpx;
+}
+
+.padding-tb-xs {
+	padding-top: 10rpx;
+	padding-bottom: 10rpx;
+}
+
+.padding-tb-sm {
+	padding-top: 20rpx;
+	padding-bottom: 20rpx;
+}
+
+.padding-tb {
+	padding-top: 30rpx;
+	padding-bottom: 30rpx;
+}
+
+.padding-tb-lg {
+	padding-top: 40rpx;
+	padding-bottom: 40rpx;
+}
+
+.padding-tb-xl {
+	padding-top: 50rpx;
+	padding-bottom: 50rpx;
+}
+
+/* -- 浮动 --  */
+
+.cf::after,
+.cf::before {
+	content: " ";
+	display: table;
+}
+
+.cf::after {
+	clear: both;
+}
+
+.fl {
+	float: left;
+}
+
+.fr {
+	float: right;
+}
+
+/* ==================
+          背景
+ ==================== */
+
+.line-red::after,
+.lines-red::after {
+	border-color: #e54d42;
+}
+
+.line-orange::after,
+.lines-orange::after {
+	border-color: #f37b1d;
+}
+
+.line-yellow::after,
+.lines-yellow::after {
+	border-color: #fbbd08;
+}
+
+.line-olive::after,
+.lines-olive::after {
+	border-color: #8dc63f;
+}
+
+.line-green::after,
+.lines-green::after {
+	border-color: #39b54a;
+}
+
+.line-cyan::after,
+.lines-cyan::after {
+	border-color: #1cbbb4;
+}
+
+.line-blue::after,
+.lines-blue::after {
+	border-color: #0081ff;
+}
+
+.line-purple::after,
+.lines-purple::after {
+	border-color: #6739b6;
+}
+
+.line-mauve::after,
+.lines-mauve::after {
+	border-color: #9c26b0;
+}
+
+.line-pink::after,
+.lines-pink::after {
+	border-color: #e03997;
+}
+
+.line-brown::after,
+.lines-brown::after {
+	border-color: #a5673f;
+}
+
+.line-grey::after,
+.lines-grey::after {
+	border-color: #8799a3;
+}
+
+.line-gray::after,
+.lines-gray::after {
+	border-color: #aaaaaa;
+}
+
+.line-black::after,
+.lines-black::after {
+	border-color: #333333;
+}
+
+.line-white::after,
+.lines-white::after {
+	border-color: #ffffff;
+}
+
+.bg-red {
+	background-color: #e54d42;
+	color: #ffffff;
+}
+
+.bg-orange {
+	background-color: #f37b1d;
+	color: #ffffff;
+}
+
+.bg-yellow {
+	background-color: #fbbd08;
+	color: #333333;
+}
+
+.bg-olive {
+	background-color: #8dc63f;
+	color: #ffffff;
+}
+
+.bg-green {
+	background-color: #39b54a;
+	color: #ffffff;
+}
+
+.bg-cyan {
+	background-color: #1cbbb4;
+	color: #ffffff;
+}
+
+.bg-blue {
+	background-color: #0081ff;
+	color: #ffffff;
+}
+
+.bg-purple {
+	background-color: #6739b6;
+	color: #ffffff;
+}
+
+.bg-mauve {
+	background-color: #9c26b0;
+	color: #ffffff;
+}
+
+.bg-pink {
+	background-color: #e03997;
+	color: #ffffff;
+}
+
+.bg-brown {
+	background-color: #a5673f;
+	color: #ffffff;
+}
+
+.bg-grey {
+	background-color: #8799a3;
+	color: #ffffff;
+}
+
+.bg-gray {
+	background-color: #f0f0f0;
+	color: #333333;
+}
+
+.bg-black {
+	background-color: #333333;
+	color: #ffffff;
+}
+
+.bg-white {
+	background-color: #ffffff;
+	color: #666666;
+}
+
+.bg-shadeTop {
+	background-image: linear-gradient(rgba(0, 0, 0, 1), rgba(0, 0, 0, 0.01));
+	color: #ffffff;
+}
+
+.bg-shadeBottom {
+	background-image: linear-gradient(rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 1));
+	color: #ffffff;
+}
+
+.bg-red.light {
+	color: #e54d42;
+	background-color: #fadbd9;
+}
+
+.bg-orange.light {
+	color: #f37b1d;
+	background-color: #fde6d2;
+}
+
+.bg-yellow.light {
+	color: #fbbd08;
+	background-color: #fef2ced2;
+}
+
+.bg-olive.light {
+	color: #8dc63f;
+	background-color: #e8f4d9;
+}
+
+.bg-green.light {
+	color: #39b54a;
+	background-color: #d7f0dbff;
+}
+
+.bg-cyan.light {
+	color: #1cbbb4;
+	background-color: #d2f1f0;
+}
+
+.bg-blue.light {
+	color: #0081ff;
+	background-color: #cce6ff;
+}
+
+.bg-purple.light {
+	color: #6739b6;
+	background-color: #e1d7f0;
+}
+
+.bg-mauve.light {
+	color: #9c26b0;
+	background-color: #ebd4ef;
+}
+
+.bg-pink.light {
+	color: #e03997;
+	background-color: #f9d7ea;
+}
+
+.bg-brown.light {
+	color: #a5673f;
+	background-color: #ede1d9;
+}
+
+.bg-grey.light {
+	color: #8799a3;
+	background-color: #e7ebed;
+}
+
+.bg-gradual-red {
+	background-image: linear-gradient(45deg, #f43f3b, #ec008c);
+	color: #ffffff;
+}
+
+.bg-gradual-orange {
+	background-image: linear-gradient(45deg, #ff9700, #ed1c24);
+	color: #ffffff;
+}
+
+.bg-gradual-green {
+	background-image: linear-gradient(45deg, #39b54a, #8dc63f);
+	color: #ffffff;
+}
+
+.bg-gradual-purple {
+	background-image: linear-gradient(45deg, #9000ff, #5e00ff);
+	color: #ffffff;
+}
+
+.bg-gradual-pink {
+	background-image: linear-gradient(45deg, #ec008c, #6739b6);
+	color: #ffffff;
+}
+
+.bg-gradual-blue {
+	background-image: linear-gradient(45deg, #0081ff, #1cbbb4);
+	color: #ffffff;
+}
+
+.shadow[class*="-red"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(204, 69, 59, 0.2);
+}
+
+.shadow[class*="-orange"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(217, 109, 26, 0.2);
+}
+
+.shadow[class*="-yellow"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(224, 170, 7, 0.2);
+}
+
+.shadow[class*="-olive"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(124, 173, 55, 0.2);
+}
+
+.shadow[class*="-green"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(48, 156, 63, 0.2);
+}
+
+.shadow[class*="-cyan"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(28, 187, 180, 0.2);
+}
+
+.shadow[class*="-blue"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(0, 102, 204, 0.2);
+}
+
+.shadow[class*="-purple"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(88, 48, 156, 0.2);
+}
+
+.shadow[class*="-mauve"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(133, 33, 150, 0.2);
+}
+
+.shadow[class*="-pink"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(199, 50, 134, 0.2);
+}
+
+.shadow[class*="-brown"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(140, 88, 53, 0.2);
+}
+
+.shadow[class*="-grey"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(114, 130, 138, 0.2);
+}
+
+.shadow[class*="-gray"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(114, 130, 138, 0.2);
+}
+
+.shadow[class*="-black"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(26, 26, 26, 0.2);
+}
+
+.shadow[class*="-white"] {
+	box-shadow: 6rpx 6rpx 8rpx rgba(26, 26, 26, 0.2);
+}
+
+.text-shadow[class*="-red"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(204, 69, 59, 0.2);
+}
+
+.text-shadow[class*="-orange"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(217, 109, 26, 0.2);
+}
+
+.text-shadow[class*="-yellow"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(224, 170, 7, 0.2);
+}
+
+.text-shadow[class*="-olive"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(124, 173, 55, 0.2);
+}
+
+.text-shadow[class*="-green"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(48, 156, 63, 0.2);
+}
+
+.text-shadow[class*="-cyan"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(28, 187, 180, 0.2);
+}
+
+.text-shadow[class*="-blue"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(0, 102, 204, 0.2);
+}
+
+.text-shadow[class*="-purple"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(88, 48, 156, 0.2);
+}
+
+.text-shadow[class*="-mauve"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(133, 33, 150, 0.2);
+}
+
+.text-shadow[class*="-pink"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(199, 50, 134, 0.2);
+}
+
+.text-shadow[class*="-brown"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(140, 88, 53, 0.2);
+}
+
+.text-shadow[class*="-grey"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(114, 130, 138, 0.2);
+}
+
+.text-shadow[class*="-gray"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(114, 130, 138, 0.2);
+}
+
+.text-shadow[class*="-black"] {
+	text-shadow: 6rpx 6rpx 8rpx rgba(26, 26, 26, 0.2);
+}
+
+.bg-img {
+	background-size: cover;
+	background-position: center;
+	background-repeat: no-repeat;
+}
+
+.bg-mask {
+	background-color: #333333;
+	position: relative;
+}
+
+.bg-mask::after {
+	content: "";
+	border-radius: inherit;
+	width: 100%;
+	height: 100%;
+	display: block;
+	background-color: rgba(0, 0, 0, 0.4);
+	position: absolute;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	top: 0;
+}
+
+.bg-mask view,
+.bg-mask cover-view {
+	z-index: 5;
+	position: relative;
+}
+
+.bg-video {
+	position: relative;
+}
+
+.bg-video video {
+	display: block;
+	height: 100%;
+	width: 100%;
+	-o-object-fit: cover;
+	object-fit: cover;
+	position: absolute;
+	top: 0;
+	z-index: 0;
+	pointer-events: none;
+}
+
+/* ==================
+          文本
+ ==================== */
+
+.text-xs {
+	font-size: 20rpx;
+}
+
+.text-sm {
+	font-size: 24rpx;
+}
+
+.text-df {
+	font-size: 28rpx;
+}
+
+.text-lg {
+	font-size: 32rpx;
+}
+
+.text-xl {
+	font-size: 36rpx;
+}
+
+.text-xxl {
+	font-size: 44rpx;
+}
+
+.text-sl {
+	font-size: 80rpx;
+}
+
+.text-xsl {
+	font-size: 120rpx;
+}
+
+.text-Abc {
+	text-transform: Capitalize;
+}
+
+.text-ABC {
+	text-transform: Uppercase;
+}
+
+.text-abc {
+	text-transform: Lowercase;
+}
+
+.text-price::before {
+	content: "¥";
+	font-size: 80%;
+	margin-right: 4rpx;
+}
+
+.text-cut {
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	overflow: hidden;
+}
+
+.text-bold {
+	font-weight: bold;
+}
+
+.text-center {
+	text-align: center;
+}
+
+.text-content {
+	line-height: 1.6;
+}
+
+.text-left {
+	text-align: left;
+}
+
+.text-right {
+	text-align: right;
+}
+
+.text-red,
+.line-red,
+.lines-red {
+	color: #e54d42;
+}
+
+.text-orange,
+.line-orange,
+.lines-orange {
+	color: #f37b1d;
+}
+
+.text-yellow,
+.line-yellow,
+.lines-yellow {
+	color: #fbbd08;
+}
+
+.text-olive,
+.line-olive,
+.lines-olive {
+	color: #8dc63f;
+}
+
+.text-green,
+.line-green,
+.lines-green {
+	color: #39b54a;
+}
+
+.text-cyan,
+.line-cyan,
+.lines-cyan {
+	color: #1cbbb4;
+}
+
+.text-blue,
+.line-blue,
+.lines-blue {
+	color: #0081ff;
+}
+
+.text-purple,
+.line-purple,
+.lines-purple {
+	color: #6739b6;
+}
+
+.text-mauve,
+.line-mauve,
+.lines-mauve {
+	color: #9c26b0;
+}
+
+.text-pink,
+.line-pink,
+.lines-pink {
+	color: #e03997;
+}
+
+.text-brown,
+.line-brown,
+.lines-brown {
+	color: #a5673f;
+}
+
+.text-grey,
+.line-grey,
+.lines-grey {
+	color: #8799a3;
+}
+
+.text-gray,
+.line-gray,
+.lines-gray {
+	color: #aaaaaa;
+}
+
+.text-black,
+.line-black,
+.lines-black {
+	color: #333333;
+}
+
+.text-white,
+.line-white,
+.lines-white {
+	color: #ffffff;
+}

+ 156 - 0
common/area.json

@@ -0,0 +1,156 @@
+[{
+ 	"value": "350500",
+ 	"title": "泉州市",
+ 	"children": [{
+ 		"value": "350582",
+ 		"title": "晋江市",
+ 		"children": [{
+ 			"value": "350582",
+ 			"title": "晋江市"
+ 		}, {
+ 			"value": "350582001",
+ 			"title": "青阳街道"
+ 		}, {
+ 			"value": "350582002",
+ 			"title": "梅岭街道"
+ 		}, {
+ 			"value": "350582003",
+ 			"title": "西园街道"
+ 		}, {
+ 			"value": "350582004",
+ 			"title": "罗山街道"
+ 		}, {
+ 			"value": "350582005",
+ 			"title": "新塘街道"
+ 		}, {
+ 			"value": "350582006",
+ 			"title": "灵源街道"
+ 		}, {
+ 			"value": "350582101",
+ 			"title": "安海镇"
+ 		}, {
+ 			"value": "350582102",
+ 			"title": "磁灶镇"
+ 		}, {
+ 			"value": "350582103",
+ 			"title": "陈埭镇"
+ 		}, {
+ 			"value": "350582104",
+ 			"title": "东石镇"
+ 		}, {
+ 			"value": "350582105",
+ 			"title": "深沪镇"
+ 		}, {
+ 			"value": "350582106",
+ 			"title": "金井镇"
+ 		}, {
+ 			"value": "350582107",
+ 			"title": "池店镇"
+ 		}, {
+ 			"value": "350582109",
+ 			"title": "内坑镇"
+ 		}, {
+ 			"value": "350582110",
+ 			"title": "龙湖镇"
+ 		}, {
+ 			"value": "350582111",
+ 			"title": "永和镇"
+ 		}, {
+ 			"value": "350582112",
+ 			"title": "英林镇"
+ 		}, {
+ 			"value": "350582113",
+ 			"title": "紫帽镇"
+ 		}, {
+ 			"value": "350582114",
+ 			"title": "西滨镇"
+ 		}, {
+ 			"value": "350582501",
+ 			"title": "经济开发区"
+ 		}]
+ 	},{
+ 		"value": "350502",
+ 		"title": "鲤城区",
+ 		"children": [{
+ 			"value": "350502",
+ 			"title": "鲤城区"
+ 		}]
+ 	},{
+ 		"value": "350503",
+ 		"title": "丰泽区",
+ 		"children": [{
+ 			"value": "350503",
+ 			"title": "丰泽区"
+ 		}]
+ 	},{
+ 		"value": "350504",
+ 		"title": "洛江区",
+ 		"children": [{
+ 			"value": "350504",
+ 			"title": "洛江区"
+ 		}]
+ 	},{
+ 		"value": "350505",
+ 		"title": "泉港区",
+ 		"children": [{
+ 			"value": "350505",
+ 			"title": "泉港区"
+ 		}]
+ 	},{
+ 		"value": "350521",
+ 		"title": "惠安县",
+ 		"children": [{
+ 			"value": "350521",
+ 			"title": "惠安县"
+ 		}]
+ 	},{
+ 		"value": "350524",
+ 		"title": "安溪县",
+ 		"children": [{
+ 			"value": "350524",
+ 			"title": "安溪县"
+ 		}]
+ 	},{
+ 		"value": "350525",
+ 		"title": "永春县",
+ 		"children": [{
+ 			"value": "350525",
+ 			"title": "永春县"
+ 		}]
+ 	},{
+ 		"value": "350526",
+ 		"title": "德化县",
+ 		"children": [{
+ 			"value": "350526",
+ 			"title": "德化县"
+ 		}]
+ 	},{
+ 		"value": "350581",
+ 		"title": "石狮市",
+ 		"children": [{
+ 			"value": "350581",
+ 			"title": "石狮市"
+ 		}]
+ 	},{
+ 		"value": "350524",
+ 		"title": "南安市",
+ 		"children": [{
+ 			"value": "350524",
+ 			"title": "南安市"
+ 		}]
+ 	},{
+ 		"value": "350584",
+ 		"title": "台商投资区",
+ 		"children": [{
+ 			"value": "350584",
+ 			"title": "台商投资区"
+ 		}]
+ 	},{
+ 		"value": "350598",
+ 		"title": "开发区",
+ 		"children": [{
+ 			"value": "350598",
+ 			"title": "开发区"
+ 		}]
+ 	}]
+ }]

+ 11305 - 0
common/area1.json

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

+ 1122 - 0
common/qqmap-wx-jssdk.js

@@ -0,0 +1,1122 @@
+/**
+ * 微信小程序JavaScriptSDK
+ * 
+ * @version 1.2
+ * @date 2019-03-06
+ */
+
+var ERROR_CONF = {
+    KEY_ERR: 311,
+    KEY_ERR_MSG: 'key格式错误',
+    PARAM_ERR: 310,
+    PARAM_ERR_MSG: '请求参数信息有误',
+    SYSTEM_ERR: 600,
+    SYSTEM_ERR_MSG: '系统错误',
+    WX_ERR_CODE: 1000,
+    WX_OK_CODE: 200
+};
+var BASE_URL = 'https://apis.map.qq.com/ws/';
+var URL_SEARCH = BASE_URL + 'place/v1/search';
+var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion';
+var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/';
+var URL_CITY_LIST = BASE_URL + 'district/v1/list';
+var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren';
+var URL_DISTANCE = BASE_URL + 'distance/v1/';
+var URL_DIRECTION = BASE_URL + 'direction/v1/';
+var MODE = {
+  driving: 'driving',
+  transit: 'transit'
+};
+var EARTH_RADIUS = 6378136.49;
+var Utils = {
+  /**
+  * md5加密方法
+  * 版权所有©2011 Sebastian Tschan,https://blueimp.net
+  */
+  safeAdd(x, y) {
+    var lsw = (x & 0xffff) + (y & 0xffff);
+    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+    return (msw << 16) | (lsw & 0xffff);
+  },
+  bitRotateLeft(num, cnt) {
+    return (num << cnt) | (num >>> (32 - cnt));
+  },
+  md5cmn(q, a, b, x, s, t) {
+    return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s), b);
+  },
+  md5ff(a, b, c, d, x, s, t) {
+    return this.md5cmn((b & c) | (~b & d), a, b, x, s, t);
+  },
+  md5gg(a, b, c, d, x, s, t) {
+    return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t);
+  },
+  md5hh(a, b, c, d, x, s, t) {
+    return this.md5cmn(b ^ c ^ d, a, b, x, s, t);
+  },
+  md5ii(a, b, c, d, x, s, t) {
+    return this.md5cmn(c ^ (b | ~d), a, b, x, s, t);
+  },
+  binlMD5(x, len) {
+    /* append padding */
+    x[len >> 5] |= 0x80 << (len % 32);
+    x[((len + 64) >>> 9 << 4) + 14] = len;
+
+    var i;
+    var olda;
+    var oldb;
+    var oldc;
+    var oldd;
+    var a = 1732584193;
+    var b = -271733879;
+    var c = -1732584194;
+    var d = 271733878;
+
+    for (i = 0; i < x.length; i += 16) {
+      olda = a;
+      oldb = b;
+      oldc = c;
+      oldd = d;
+
+      a = this.md5ff(a, b, c, d, x[i], 7, -680876936);
+      d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586);
+      c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819);
+      b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
+      a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897);
+      d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
+      c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
+      b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983);
+      a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
+      d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
+      c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063);
+      b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
+      a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
+      d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101);
+      c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
+      b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
+
+      a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510);
+      d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
+      c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713);
+      b = this.md5gg(b, c, d, a, x[i], 20, -373897302);
+      a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691);
+      d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083);
+      c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335);
+      b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848);
+      a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438);
+      d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
+      c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961);
+      b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
+      a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
+      d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784);
+      c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
+      b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
+
+      a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558);
+      d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
+      c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
+      b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556);
+      a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
+      d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
+      c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632);
+      b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
+      a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174);
+      d = this.md5hh(d, a, b, c, x[i], 11, -358537222);
+      c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979);
+      b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189);
+      a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487);
+      d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835);
+      c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520);
+      b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651);
+
+      a = this.md5ii(a, b, c, d, x[i], 6, -198630844);
+      d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
+      c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
+      b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055);
+      a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
+      d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
+      c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523);
+      b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
+      a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
+      d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744);
+      c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
+      b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
+      a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070);
+      d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
+      c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259);
+      b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551);
+
+      a = this.safeAdd(a, olda);
+      b = this.safeAdd(b, oldb);
+      c = this.safeAdd(c, oldc);
+      d = this.safeAdd(d, oldd);
+    }
+    return [a, b, c, d];
+  },
+  binl2rstr(input) {
+    var i;
+    var output = '';
+    var length32 = input.length * 32;
+    for (i = 0; i < length32; i += 8) {
+      output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);
+    }
+    return output;
+  },
+  rstr2binl(input) {
+    var i;
+    var output = [];
+    output[(input.length >> 2) - 1] = undefined;
+    for (i = 0; i < output.length; i += 1) {
+      output[i] = 0;
+    }
+    var length8 = input.length * 8;
+    for (i = 0; i < length8; i += 8) {
+      output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);
+    }
+    return output;
+  },
+  rstrMD5(s) {
+    return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8));
+  },
+  rstrHMACMD5(key, data) {
+    var i;
+    var bkey = this.rstr2binl(key);
+    var ipad = [];
+    var opad = [];
+    var hash;
+    ipad[15] = opad[15] = undefined;
+    if (bkey.length > 16) {
+      bkey = this.binlMD5(bkey, key.length * 8);
+    }
+    for (i = 0; i < 16; i += 1) {
+      ipad[i] = bkey[i] ^ 0x36363636;
+      opad[i] = bkey[i] ^ 0x5c5c5c5c;
+    }
+    hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8);
+    return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128));
+  },
+  rstr2hex(input) {
+    var hexTab = '0123456789abcdef';
+    var output = '';
+    var x;
+    var i;
+    for (i = 0; i < input.length; i += 1) {
+      x = input.charCodeAt(i);
+      output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);
+    }
+    return output;
+  },
+  str2rstrUTF8(input) {
+    return unescape(encodeURIComponent(input));
+  },
+  rawMD5(s) {
+    return this.rstrMD5(this.str2rstrUTF8(s));
+  },
+  hexMD5(s) {
+    return this.rstr2hex(this.rawMD5(s));
+  },
+  rawHMACMD5(k, d) {
+    return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d));
+  },
+  hexHMACMD5(k, d) {
+    return this.rstr2hex(this.rawHMACMD5(k, d));
+  },
+
+  md5(string, key, raw) {
+    if (!key) {
+      if (!raw) {
+        return this.hexMD5(string);
+      }
+      return this.rawMD5(string);
+    }
+    if (!raw) {
+      return this.hexHMACMD5(key, string);
+    }
+    return this.rawHMACMD5(key, string);
+  },
+  /**
+   * 得到md5加密后的sig参数
+   * @param {Object} requestParam 接口参数
+   * @param {String} sk签名字符串
+   * @param {String} featrue 方法名
+   * @return 返回加密后的sig参数
+   */
+  getSig(requestParam, sk, feature, mode) {
+    var sig = null;
+    var requestArr = [];
+    Object.keys(requestParam).sort().forEach(function(key){
+      requestArr.push(key + '=' + requestParam[key]);
+    });
+    if (feature == 'search') {
+      sig = '/ws/place/v1/search?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'suggest') {
+      sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'reverseGeocoder') {
+      sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'geocoder') {
+      sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'getCityList') {
+      sig = '/ws/district/v1/list?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'getDistrictByCityId') {
+      sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'calculateDistance') {
+      sig = '/ws/distance/v1/?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'direction') {
+      sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk;
+    }
+    sig = this.md5(sig);
+    return sig;
+  },
+    /**
+     * 得到终点query字符串
+     * @param {Array|String} 检索数据
+     */
+    location2query(data) {
+        if (typeof data == 'string') {
+            return data;
+        }
+        var query = '';
+        for (var i = 0; i < data.length; i++) {
+            var d = data[i];
+            if (!!query) {
+                query += ';';
+            }
+            if (d.location) {
+                query = query + d.location.lat + ',' + d.location.lng;
+            }
+            if (d.latitude && d.longitude) {
+                query = query + d.latitude + ',' + d.longitude;
+            }
+        }
+        return query;
+    },
+
+    /**
+     * 计算角度
+     */
+    rad(d) {
+      return d * Math.PI / 180.0;
+    },  
+    /**
+     * 处理终点location数组
+     * @return 返回终点数组
+     */
+    getEndLocation(location){
+      var to = location.split(';');
+      var endLocation = [];
+      for (var i = 0; i < to.length; i++) {
+        endLocation.push({
+          lat: parseFloat(to[i].split(',')[0]),
+          lng: parseFloat(to[i].split(',')[1])
+        })
+      }
+      return endLocation;
+    },
+
+    /**
+     * 计算两点间直线距离
+     * @param a 表示纬度差
+     * @param b 表示经度差
+     * @return 返回的是距离,单位m
+     */
+    getDistance(latFrom, lngFrom, latTo, lngTo) {
+      var radLatFrom = this.rad(latFrom);
+      var radLatTo = this.rad(latTo);
+      var a = radLatFrom - radLatTo;
+      var b = this.rad(lngFrom) - this.rad(lngTo);
+      var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2)));
+      distance = distance * EARTH_RADIUS;
+      distance = Math.round(distance * 10000) / 10000;
+      return parseFloat(distance.toFixed(0));
+    },
+    /**
+     * 使用微信接口进行定位
+     */
+    getWXLocation(success, fail, complete) {
+        wx.getLocation({
+            type: 'gcj02',
+            success: success,
+            fail: fail,
+            complete: complete
+        });
+    },
+
+    /**
+     * 获取location参数
+     */
+    getLocationParam(location) {
+        if (typeof location == 'string') {
+            var locationArr = location.split(',');
+            if (locationArr.length === 2) {
+                location = {
+                    latitude: location.split(',')[0],
+                    longitude: location.split(',')[1]
+                };
+            } else {
+                location = {};
+            }
+        }
+        return location;
+    },
+
+    /**
+     * 回调函数默认处理
+     */
+    polyfillParam(param) {
+        param.success = param.success || function () { };
+        param.fail = param.fail || function () { };
+        param.complete = param.complete || function () { };
+    },
+
+    /**
+     * 验证param对应的key值是否为空
+     * 
+     * @param {Object} param 接口参数
+     * @param {String} key 对应参数的key
+     */
+    checkParamKeyEmpty(param, key) {
+        if (!param[key]) {
+            var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'参数格式有误');
+            param.fail(errconf);
+            param.complete(errconf);
+            return true;
+        }
+        return false;
+    },
+
+    /**
+     * 验证参数中是否存在检索词keyword
+     * 
+     * @param {Object} param 接口参数
+     */
+    checkKeyword(param){
+        return !this.checkParamKeyEmpty(param, 'keyword');
+    },
+
+    /**
+     * 验证location值
+     * 
+     * @param {Object} param 接口参数
+     */
+    checkLocation(param) {
+        var location = this.getLocationParam(param.location);
+        if (!location || !location.latitude || !location.longitude) {
+            var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误');
+            param.fail(errconf);
+            param.complete(errconf);
+            return false;
+        }
+        return true;
+    },
+
+    /**
+     * 构造错误数据结构
+     * @param {Number} errCode 错误码
+     * @param {Number} errMsg 错误描述
+     */
+    buildErrorConfig(errCode, errMsg) {
+        return {
+            status: errCode,
+            message: errMsg
+        };
+    },
+
+    /**
+     * 
+     * 数据处理函数
+     * 根据传入参数不同处理不同数据
+     * @param {String} feature 功能名称
+     * search 地点搜索
+     * suggest关键词提示
+     * reverseGeocoder逆地址解析
+     * geocoder地址解析
+     * getCityList获取城市列表:父集
+     * getDistrictByCityId获取区县列表:子集
+     * calculateDistance距离计算
+     * @param {Object} param 接口参数
+     * @param {Object} data 数据
+     */
+    handleData(param,data,feature){
+      if (feature == 'search') {
+        var searchResult = data.data;
+        var searchSimplify = [];
+        for (var i = 0; i < searchResult.length; i++) {
+          searchSimplify.push({
+            id: searchResult[i].id || null,
+            title: searchResult[i].title || null,
+            latitude: searchResult[i].location && searchResult[i].location.lat || null,
+            longitude: searchResult[i].location && searchResult[i].location.lng || null,
+            address: searchResult[i].address || null,
+            category: searchResult[i].category || null,
+            tel: searchResult[i].tel || null,
+            adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null,
+            city: searchResult[i].ad_info && searchResult[i].ad_info.city || null,
+            district: searchResult[i].ad_info && searchResult[i].ad_info.district || null,
+            province: searchResult[i].ad_info && searchResult[i].ad_info.province || null
+          })
+        }
+        param.success(data, {
+          searchResult: searchResult,
+          searchSimplify: searchSimplify
+        })
+      } else if (feature == 'suggest') {
+        var suggestResult = data.data;
+        var suggestSimplify = [];
+        for (var i = 0; i < suggestResult.length; i++) {
+          suggestSimplify.push({
+            adcode: suggestResult[i].adcode || null,
+            address: suggestResult[i].address || null,
+            category: suggestResult[i].category || null,
+            city: suggestResult[i].city || null,
+            district: suggestResult[i].district || null,
+            id: suggestResult[i].id || null,
+            latitude: suggestResult[i].location && suggestResult[i].location.lat || null,
+            longitude: suggestResult[i].location && suggestResult[i].location.lng || null,
+            province: suggestResult[i].province || null,
+            title: suggestResult[i].title || null,
+            type: suggestResult[i].type || null
+          })
+        }
+        param.success(data, {
+          suggestResult: suggestResult,
+          suggestSimplify: suggestSimplify
+          })
+      } else if (feature == 'reverseGeocoder') {
+        var reverseGeocoderResult = data.result;
+        var reverseGeocoderSimplify = {
+          address: reverseGeocoderResult.address || null,
+          latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null,
+          longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null,
+          adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null,
+          city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null,
+          district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null,
+          nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null,
+          province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null,
+          street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null,
+          street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null,
+          recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null,
+          rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null
+        };
+        if (reverseGeocoderResult.pois) {//判断是否返回周边poi
+          var pois = reverseGeocoderResult.pois;
+          var poisSimplify = [];
+          for (var i = 0;i < pois.length;i++) {
+            poisSimplify.push({
+              id: pois[i].id || null,
+              title: pois[i].title || null,
+              latitude: pois[i].location && pois[i].location.lat || null,
+              longitude: pois[i].location && pois[i].location.lng || null,
+              address: pois[i].address || null,
+              category: pois[i].category || null,
+              adcode: pois[i].ad_info && pois[i].ad_info.adcode || null,
+              city: pois[i].ad_info && pois[i].ad_info.city || null,
+              district: pois[i].ad_info && pois[i].ad_info.district || null,
+              province: pois[i].ad_info && pois[i].ad_info.province || null
+            })
+          }
+          param.success(data,{
+            reverseGeocoderResult: reverseGeocoderResult,
+            reverseGeocoderSimplify: reverseGeocoderSimplify,
+            pois: pois,
+            poisSimplify: poisSimplify
+          })
+        } else {
+          param.success(data, {
+            reverseGeocoderResult: reverseGeocoderResult,
+            reverseGeocoderSimplify: reverseGeocoderSimplify
+          })
+        }
+      } else if (feature == 'geocoder') {
+        var geocoderResult = data.result;
+        var geocoderSimplify = {
+          title: geocoderResult.title || null,
+          latitude: geocoderResult.location && geocoderResult.location.lat || null,
+          longitude: geocoderResult.location && geocoderResult.location.lng || null,
+          adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null,
+          province: geocoderResult.address_components && geocoderResult.address_components.province || null,
+          city: geocoderResult.address_components && geocoderResult.address_components.city || null,
+          district: geocoderResult.address_components && geocoderResult.address_components.district || null,
+          street: geocoderResult.address_components && geocoderResult.address_components.street || null,
+          street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null,
+          level: geocoderResult.level || null
+        };
+        param.success(data,{
+          geocoderResult: geocoderResult,
+          geocoderSimplify: geocoderSimplify
+        });
+      } else if (feature == 'getCityList') {
+        var provinceResult = data.result[0];
+        var cityResult = data.result[1];
+        var districtResult = data.result[2];
+        param.success(data,{
+          provinceResult: provinceResult,
+          cityResult: cityResult,
+          districtResult: districtResult
+        });
+      } else if (feature == 'getDistrictByCityId') {
+        var districtByCity = data.result[0];
+        param.success(data, districtByCity);
+      } else if (feature == 'calculateDistance') {
+        var calculateDistanceResult = data.result.elements;  
+        var distance = [];
+        for (var i = 0; i < calculateDistanceResult.length; i++){
+          distance.push(calculateDistanceResult[i].distance);
+        }   
+        param.success(data, {
+          calculateDistanceResult: calculateDistanceResult,
+          distance: distance
+          });
+      } else if (feature == 'direction') {
+        var direction = data.result.routes;
+        param.success(data,direction);
+      } else {
+        param.success(data);
+      }
+    },
+
+    /**
+     * 构造微信请求参数,公共属性处理
+     * 
+     * @param {Object} param 接口参数
+     * @param {Object} param 配置项
+     * @param {String} feature 方法名
+     */
+    buildWxRequestConfig(param, options, feature) {
+        var that = this;
+        options.header = { "content-type": "application/json" };
+        options.method = 'GET';
+        options.success = function (res) {
+            var data = res.data;
+            if (data.status === 0) {
+              that.handleData(param, data, feature);
+            } else {
+                param.fail(data);
+            }
+        };
+        options.fail = function (res) {
+            res.statusCode = ERROR_CONF.WX_ERR_CODE;
+            param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+        };
+        options.complete = function (res) {
+            var statusCode = +res.statusCode;
+            switch(statusCode) {
+                case ERROR_CONF.WX_ERR_CODE: {
+                    param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+                    break;
+                }
+                case ERROR_CONF.WX_OK_CODE: {
+                    var data = res.data;
+                    if (data.status === 0) {
+                        param.complete(data);
+                    } else {
+                        param.complete(that.buildErrorConfig(data.status, data.message));
+                    }
+                    break;
+                }
+                default:{
+                    param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG));
+                }
+
+            }
+        };
+        return options;
+    },
+
+    /**
+     * 处理用户参数是否传入坐标进行不同的处理
+     */
+    locationProcess(param, locationsuccess, locationfail, locationcomplete) {
+        var that = this;
+        locationfail = locationfail || function (res) {
+            res.statusCode = ERROR_CONF.WX_ERR_CODE;
+            param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+        };
+        locationcomplete = locationcomplete || function (res) {
+            if (res.statusCode == ERROR_CONF.WX_ERR_CODE) {
+                param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+            }
+        };
+        if (!param.location) {
+            that.getWXLocation(locationsuccess, locationfail, locationcomplete);
+        } else if (that.checkLocation(param)) {
+            var location = Utils.getLocationParam(param.location);
+            locationsuccess(location);
+        }
+    }
+};
+
+
+class QQMapWX {
+
+    /**
+     * 构造函数
+     * 
+     * @param {Object} options 接口参数,key 为必选参数
+     */
+    constructor(options) {
+        if (!options.key) {
+            throw Error('key值不能为空');
+        }
+        this.key = options.key;
+    };
+
+    /**
+     * POI周边检索
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 参数对象结构可以参考
+     * @see http://lbs.qq.com/webservice_v1/guide-search.html
+     */
+    search(options) {
+        var that = this;
+        options = options || {};
+
+        Utils.polyfillParam(options);
+
+        if (!Utils.checkKeyword(options)) {
+            return;
+        }
+
+        var requestParam = {
+            keyword: options.keyword,
+            orderby: options.orderby || '_distance',
+            page_size: options.page_size || 10,
+            page_index: options.page_index || 1,
+            output: 'json',
+            key: that.key
+        };
+
+        if (options.address_format) {
+            requestParam.address_format = options.address_format;
+        }
+
+        if (options.filter) {
+            requestParam.filter = options.filter;
+        }
+
+        var distance = options.distance || "1000";
+        var auto_extend = options.auto_extend || 1;
+        var region = null;
+        var rectangle = null;
+
+        //判断城市限定参数
+        if (options.region) {
+          region = options.region;
+        }
+
+        //矩形限定坐标(暂时只支持字符串格式)
+        if (options.rectangle) {
+          rectangle = options.rectangle;
+        }
+
+        var locationsuccess = function (result) {        
+          if (region && !rectangle) {
+            //城市限定参数拼接
+            requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")";
+            if (options.sig) {
+              requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');
+            }
+          } else if (rectangle && !region) {
+            //矩形搜索
+            requestParam.boundary = "rectangle(" + rectangle + ")";
+            if (options.sig) {
+              requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');
+            }
+            } else {
+              requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")";
+            if (options.sig) {
+              requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');
+            }
+            }            
+            wx.request(Utils.buildWxRequestConfig(options, {
+                url: URL_SEARCH,
+                data: requestParam
+            }, 'search'));
+        };
+        Utils.locationProcess(options, locationsuccess);
+    };
+
+    /**
+     * sug模糊检索
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 参数对象结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-suggestion.html
+     */
+    getSuggestion(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+
+        if (!Utils.checkKeyword(options)) {
+            return;
+        }
+
+        var requestParam = {
+            keyword: options.keyword,
+            region: options.region || '全国',
+            region_fix: options.region_fix || 0,
+            policy: options.policy || 0,
+            page_size: options.page_size || 10,//控制显示条数
+            page_index: options.page_index || 1,//控制页数
+            get_subpois : options.get_subpois || 0,//返回子地点
+            output: 'json',
+            key: that.key
+        };
+        //长地址
+        if (options.address_format) {
+          requestParam.address_format = options.address_format;
+        }
+        //过滤
+        if (options.filter) {
+          requestParam.filter = options.filter;
+        }
+        //排序
+        if (options.location) {
+          var locationsuccess = function (result) {
+            requestParam.location = result.latitude + ',' + result.longitude;
+            if (options.sig) {
+              requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest');
+            }
+            wx.request(Utils.buildWxRequestConfig(options, {
+              url: URL_SUGGESTION,
+              data: requestParam
+            }, "suggest"));      
+          };
+          Utils.locationProcess(options, locationsuccess);
+        } else {
+          if (options.sig) {
+            requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest');
+          }
+          wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_SUGGESTION,
+            data: requestParam
+          }, "suggest"));      
+        }        
+    };
+
+    /**
+     * 逆地址解析
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 请求参数结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-gcoder.html
+     */
+    reverseGeocoder(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+        var requestParam = {
+            coord_type: options.coord_type || 5,
+            get_poi: options.get_poi || 0,
+            output: 'json',
+            key: that.key
+        };
+        if (options.poi_options) {
+            requestParam.poi_options = options.poi_options
+        }
+
+        var locationsuccess = function (result) {
+            requestParam.location = result.latitude + ',' + result.longitude;
+          if (options.sig) {
+            requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder');
+          }
+            wx.request(Utils.buildWxRequestConfig(options, {
+                url: URL_GET_GEOCODER,
+                data: requestParam
+            }, 'reverseGeocoder'));
+        };
+        Utils.locationProcess(options, locationsuccess);
+    };
+
+    /**
+     * 地址解析
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 请求参数结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-geocoder.html
+     */
+    geocoder(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+
+        if (Utils.checkParamKeyEmpty(options, 'address')) {
+            return;
+        }
+
+        var requestParam = {
+            address: options.address,
+            output: 'json',
+            key: that.key
+        };
+
+        //城市限定
+        if (options.region) {
+          requestParam.region = options.region;
+        }
+
+        if (options.sig) {
+          requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder');
+        }
+
+        wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_GET_GEOCODER,
+            data: requestParam
+        },'geocoder'));
+    };
+
+
+    /**
+     * 获取城市列表
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 请求参数结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-region.html
+     */
+    getCityList(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+        var requestParam = {
+            output: 'json',
+            key: that.key
+        };
+
+        if (options.sig) {
+          requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList');
+        }
+
+        wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_CITY_LIST,
+            data: requestParam
+        },'getCityList'));
+    };
+
+    /**
+     * 获取对应城市ID的区县列表
+     *
+     * @param {Object} options 接口参数对象
+     * 
+     * 请求参数结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-region.html
+     */
+    getDistrictByCityId(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+
+        if (Utils.checkParamKeyEmpty(options, 'id')) {
+            return;
+        }
+
+        var requestParam = {
+            id: options.id || '',
+            output: 'json',
+            key: that.key
+        };
+
+        if (options.sig) {
+          requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId');
+        }
+
+        wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_AREA_LIST,
+            data: requestParam
+        },'getDistrictByCityId'));
+    };
+
+    /**
+     * 用于单起点到多终点的路线距离(非直线距离)计算:
+     * 支持两种距离计算方式:步行和驾车。
+     * 起点到终点最大限制直线距离10公里。
+     *
+     * 新增直线距离计算。
+     * 
+     * @param {Object} options 接口参数对象
+     * 
+     * 请求参数结构可以参考
+     * http://lbs.qq.com/webservice_v1/guide-distance.html
+     */
+    calculateDistance(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+
+        if (Utils.checkParamKeyEmpty(options, 'to')) {
+            return;
+        }
+
+        var requestParam = {
+            mode: options.mode || 'walking',
+            to: Utils.location2query(options.to),
+            output: 'json',
+            key: that.key
+        };
+
+        if (options.from) {
+          options.location = options.from;
+        }
+
+        //计算直线距离
+        if(requestParam.mode == 'straight'){        
+          var locationsuccess = function (result) {
+            var locationTo = Utils.getEndLocation(requestParam.to);//处理终点坐标
+            var data = {
+              message:"query ok",
+              result:{
+                elements:[]
+              },
+              status:0
+            };
+            for (var i = 0; i < locationTo.length; i++) {
+              data.result.elements.push({//将坐标存入
+                distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng),
+                duration:0,
+                from:{
+                  lat: result.latitude,
+                  lng:result.longitude
+                },
+                to:{
+                  lat: locationTo[i].lat,
+                  lng: locationTo[i].lng
+                }
+              });            
+            }
+            var calculateResult = data.result.elements;
+            var distanceResult = [];
+            for (var i = 0; i < calculateResult.length; i++) {
+              distanceResult.push(calculateResult[i].distance);
+            }  
+            return options.success(data,{
+              calculateResult: calculateResult,
+              distanceResult: distanceResult
+            });
+          };
+          
+          Utils.locationProcess(options, locationsuccess);
+        } else {
+          var locationsuccess = function (result) {
+            requestParam.from = result.latitude + ',' + result.longitude;
+            if (options.sig) {
+              requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance');
+            }
+            wx.request(Utils.buildWxRequestConfig(options, {
+              url: URL_DISTANCE,
+              data: requestParam
+            },'calculateDistance'));
+          };
+
+          Utils.locationProcess(options, locationsuccess);
+        }      
+    };
+
+  /**
+   * 路线规划:
+   * 
+   * @param {Object} options 接口参数对象
+   * 
+   * 请求参数结构可以参考
+   * https://lbs.qq.com/webservice_v1/guide-road.html
+   */
+  direction(options) {
+    var that = this;
+    options = options || {};
+    Utils.polyfillParam(options);
+
+    if (Utils.checkParamKeyEmpty(options, 'to')) {
+      return;
+    }
+
+    var requestParam = {
+      output: 'json',
+      key: that.key
+    };
+
+    //to格式处理
+    if (typeof options.to == 'string') {
+      requestParam.to = options.to;
+    } else {
+      requestParam.to = options.to.latitude + ',' + options.to.longitude;
+    }
+    //初始化局部请求域名
+    var SET_URL_DIRECTION = null;
+    //设置默认mode属性
+    options.mode = options.mode || MODE.driving;
+
+    //设置请求域名
+    SET_URL_DIRECTION = URL_DIRECTION + options.mode;
+
+    if (options.from) {
+      options.location = options.from;
+    }
+
+    if (options.mode == MODE.driving) {
+      if (options.from_poi) {
+        requestParam.from_poi = options.from_poi;
+      }
+      if (options.heading) {
+        requestParam.heading = options.heading;
+      }
+      if (options.speed) {
+        requestParam.speed = options.speed;
+      }
+      if (options.accuracy) {
+        requestParam.accuracy = options.accuracy;
+      }
+      if (options.road_type) {
+        requestParam.road_type = options.road_type;
+      }
+      if (options.to_poi) {
+        requestParam.to_poi = options.to_poi;
+      }
+      if (options.from_track) {
+        requestParam.from_track = options.from_track;
+      }
+      if (options.waypoints) {
+        requestParam.waypoints = options.waypoints;
+      }
+      if (options.policy) {
+        requestParam.policy = options.policy;
+      }
+      if (options.plate_number) {
+        requestParam.plate_number = options.plate_number;
+      }
+    }
+
+    if (options.mode == MODE.transit) {
+      if (options.departure_time) {
+        requestParam.departure_time = options.departure_time;
+      }
+      if (options.policy) {
+        requestParam.policy = options.policy;
+      }
+    } 
+
+    var locationsuccess = function (result) {
+      requestParam.from = result.latitude + ',' + result.longitude;
+      if (options.sig) {
+        requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction',options.mode);
+      }
+      wx.request(Utils.buildWxRequestConfig(options, {
+        url: SET_URL_DIRECTION,
+        data: requestParam
+      }, 'direction'));
+    };
+
+    Utils.locationProcess(options, locationsuccess);
+  }
+};
+
+module.exports = QQMapWX;

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
common/qqmap-wx-jssdk.min.js


+ 61 - 0
common/request/request-downFiles.js

@@ -0,0 +1,61 @@
+/**
+ * 2019年4月7日15:33:06
+ */
+import {
+	RQ
+} from './request.js';
+class DonwFiles extends RQ {
+	constructor(...arg) {
+		super(arg);
+	}
+	/**
+	 * 下载文件
+	 */
+	startDownFiles({
+		path = '',
+		title = false,
+		abort = (bt, finsh) => {},
+		...extra
+	} = {}) {
+		return new Promise(async (resolve, reject) => {
+			let obj = {
+				tempFileInfo: [],
+				FilePath: []
+			};
+			if (title) {
+				uni.showLoading({
+					title,
+					mask: true,
+				});
+			}
+			if(path.constructor===String){
+				path = path.toString().split(',');
+			}
+			for (let i = 0; i < path.length; i++) {
+				let url = path[i];
+				try {
+					let res = await this.downFiles({
+						path: url,
+						index:i,
+						abort,
+						...extra
+					})
+					obj.FilePath.push(res.tempFilePath)
+					obj.tempFileInfo.push({
+						url,
+						filePath: res.tempFilePath
+					});
+				} catch (e) {
+					//TODO handle the exception
+				}
+			}
+			resolve(obj);
+			if (title) {
+				uni.hideLoading();
+			}
+
+		})
+	}
+}
+export const DF = DonwFiles;
+export const df = new DonwFiles();

+ 209 - 0
common/request/request-upFiles.js

@@ -0,0 +1,209 @@
+/**
+ * 2019年4月7日14:17:12
+ */
+let _defaultFile = {
+	filesFilter: {
+		0: 'image',
+		1: 'video',
+		2: 'none'
+	},
+	upOpenDown: false
+}
+let _down = null; //下载文件对象
+
+import {
+	RQ
+} from './request.js';
+class UpFiles extends RQ {
+	constructor(...arg) {
+		super(arg);
+		this.defaultFile = _defaultFile;
+		this.FunChunk = {
+			0: this.AppSelectFiles,
+			1: this.otherSelectFiles
+		};
+		this.proxy(this.defaultFile, (key, value) => {
+			if (key === 'upOpenDown' && value === true) {
+				if (_down !== null) {
+					return console.error(`'${key}' property is set repeatedly`, this);
+				}
+				_down = require('./request-downFiles.js').df;
+			}
+		});
+	}
+	/**
+	 * 开始上传文件
+	 * 2019年4月7日14:55:15
+	 */
+	startUpFiles({
+		path = '',
+		files = [],
+		isUp = true,
+		title = false,
+		_ADMININDEX=null,	
+		extra = {},
+		...args
+	} = {}, res) {
+		return new Promise(async (resolve, reject) => {
+			let upres = [];
+			if (isUp) { //需要上传到服务器,然后再返回
+				if (title) {
+					uni.showLoading({
+						title,
+						mask: true,
+					});
+				}
+				for (let i = 0; i < res.length; i++) {
+					let fileName = files[i] != undefined ? files[i] : files[files.length - 1];
+					try {
+						upres.push(
+							await this.ajaxFile({
+								index: _ADMININDEX||i,
+								path: path,
+								title: false,
+								filePath: res[i],
+								fileName,
+								extra,
+								...args
+							})
+						)
+					} catch (e) {
+						upres.push(e)
+					}
+				}
+				if (title) {
+					uni.hideLoading();
+				}
+				resolve({
+					uploaded: true,
+					upres
+				});
+			}
+			return resolve(res);
+		})
+	}
+	/**
+	 * 2019年4月7日15:07:54 
+	 * 上传网络资源
+	 */
+	upnNetRes({
+		netPath = '',
+		upPath = '',
+		files = [],
+		abort = (finsh,bt) => {},
+		title = false,
+		extra = {},
+		...args
+	} = {}) {
+		return new Promise(async (resolve, reject) => {
+			const obj = {
+				uploaded: true,
+				upres:[],
+			};
+			if(netPath.constructor===String){
+				netPath = netPath.split(',');
+			}
+			if(upPath.constructor===String){
+				upPath=upPath.split(',');
+			}
+			for (let i = 0; i < netPath.length; i++) {
+				try {
+					const res = await _down.startDownFiles({
+						path: [netPath[i]],
+						...args
+					});
+					const uploadRes = await this.startUpFiles({
+						path: upPath[i]||upPath[upPath.length-1],
+						_ADMININDEX:i,
+						files,
+						isUp: true,
+						abort,
+						title,
+						extra,
+						...args
+					}, res.FilePath);
+					obj.upres.push(uploadRes.upres[0])
+				} catch (e) {
+					obj.upres.push(e)
+				}
+			}
+			resolve(obj);
+		})
+	}
+	/**
+	 * 2019年4月6日16:19:20
+	 * 选择文件
+	 */
+	selectFiles({
+		type = 2,
+		isUp=true,
+		maximum = 1,
+		multiple = true,
+		sizeType = ['original', 'compressed'],
+		sourceType = ['album','camera'],
+		upload = {
+			path: '',
+			files: [],
+			isUp: false,
+			title: false,
+			abort: bt => {},
+			extra: {}
+		},
+		...extra
+	} = {}) {
+		return new Promise(async (resolve, reject) => {
+			let merge = {
+				type,
+				maximum,
+				sizeType,
+				sourceType,
+				multiple,
+				...extra,
+			}
+			const res = await this.FunChunk[this.platform](merge);
+			if(!isUp){
+				return resolve(res);
+			}
+			try {
+				const uploadRes = await this.startUpFiles(upload, res);
+				resolve(uploadRes);
+			} catch (e) {
+				reject(e);
+			}
+		})
+	}
+	/**
+	 * App选择文件
+	 */
+	AppSelectFiles(queryInfo) {
+		return new Promise(async (resolve, reject) => {
+			plus.gallery.pick(path => {
+				resolve(path.files);
+			}, err => {
+				reject(err);
+			}, {
+				filter: _defaultFile.filesFilter[queryInfo.type],
+				system: false,
+				...queryInfo
+			});
+		})
+	}
+	/**
+	 * 其他小程序,h5
+	 */
+	otherSelectFiles(queryInfo) {
+		return new Promise(async (resolve, reject) => {
+			uni.chooseImage({
+				count: queryInfo.maximum,
+				success: res => {
+					resolve(res.tempFilePaths);
+				},
+				fail: err => {
+					reject(err)
+				},
+				...queryInfo
+			});
+		})
+	}
+}
+export default new UpFiles();

+ 258 - 0
common/request/request.js

@@ -0,0 +1,258 @@
+/**
+ * 2019年4月5日12:44:58
+ * 简单封装uni-app请求,下载,上传。
+ */
+let _baseuUrl = '';
+let _isUpOpenDown = false; //是否在上传js中引入下载的js
+let _defaultReq = {
+	isreq: true, //是否已经打开ajax,默认为true
+	url: '', //独立的url ajax
+	baseData: {}, //ajax基本参数
+	header: {
+		'content-type': 'application/x-www-form-urlencoded'
+	},
+	type: 'GET',
+	dataType: 'json',
+	responseType: 'text',
+	beforeSend:r=>r,
+	beforeFinsh: r=> r
+}
+let _defaultUp = {
+	url: '', //独立的url 
+	baseData: {},
+	header: {
+		'content-type': 'multipart/form-data;'
+	},
+}
+
+/**
+ * 代理控制 2019年4月6日16:06:05
+ */
+let ProxyControll = (obj, callback = (key, val, oldval) => {}) => {
+	for (let key in obj) {
+		let itemval = obj[key];
+		Object.defineProperty(obj, key, {
+			enumerable: true,
+			get: function() {
+				return this[`HHYANG_${key}`]
+			},
+			set: function(newvalue) {
+				callback(key, newvalue, this[`HHYANG_${key}`]);
+				this[`HHYANG_${key}`]= newvalue;
+			}
+
+		})
+		obj[key] = itemval;
+	}
+}
+ProxyControll(_defaultReq);
+ProxyControll(_defaultUp);
+
+class Request {
+	constructor(arg) {
+		this.platform = this.platformChunk();
+		this.defaultReq = _defaultReq;
+		this.defaultUp = _defaultUp;
+	}
+	set baseuUrl(value) {
+		_baseuUrl = value;
+		_defaultReq.url = value;
+		_defaultUp.url = value;
+	}
+	get baseuUrl() {
+		return _baseuUrl;
+	}
+	set isUpOpenDown(value) {
+		_isUpOpenDown = value;
+	}
+	get isUpOpenDown() {
+		return _isUpOpenDown;
+	}
+	/**
+	 * 基本ajax请求
+	 */
+	ajax({
+		path = '', //请求路径
+		title = false, //请求头部 默认为false不显示, 传入字符串则显示 推荐7个字内
+		header = this.defaultReq.header, //请求header 默认为"application/x-www-form-urlencoded"
+		data = {}, //请求数据,默认为空对象
+		type = this.defaultReq.type, //请求类型 默认为'GET'
+		dataType = this.defaultReq.dataType, //返回数据类型,默认为json。会对返回数据做一个JSON.parse
+		responseType = this.defaultReq.responseType, //设置响应的数据类型默认为'text'
+		abortFun = _bt => {}
+	} = {}, ...extra) {
+		return new Promise(async (resolve, reject) => {
+			if (!this.defaultReq.isreq) {
+				return reject('要想使用ajax,请开放isreq 设置为true');
+			}
+			Object.assign(data, this.defaultReq.baseData); //合并参数
+			if (typeof header === 'string') { //如果用户只想设置content-type
+				header = {
+					'content-type': header
+				};
+			}
+			let beforeInfo={
+				url: this.defaultReq.url + path,
+				method: type,
+				dataType,
+				responseType,
+				data,
+				header,
+			}
+			let verifyBeforeInfo =await this.defaultReq.beforeSend(beforeInfo);		//用户自定义后的请求参数
+			if(!verifyBeforeInfo){
+				return reject( Object.assign(beforeInfo,{beforeClose:true}));
+			}
+			if (title) { //显示请求提示
+				uni.showLoading({
+					title,
+					mask: true,
+				});
+			}
+			const requestTask = uni.request({
+				...beforeInfo,
+				complete:async ({
+					statusCode,
+					...finsh
+				}={}) => {
+					let callData = Object.assign({
+						extra
+					}, finsh,{statusCode});
+					if (statusCode == 200) {
+						try {
+							let verifyRes = await this.defaultReq.beforeFinsh(callData);
+							resolve(verifyRes);
+						} catch (error) {
+							reject(error)
+						}
+						// let verifyRes =await this.defaultReq.beforeFinsh(callData);
+						// if(verifyRes){
+						// 	resolve(verifyRes);
+						// }
+					}else{
+						reject(callData)
+					}
+					if (title) {
+						uni.hideLoading();
+					}
+				}
+			});
+			abortFun(beforeInfo,requestTask);
+		})
+	}
+	/**
+	 * 2019年4月6日12:05:55 
+	 * 封装上传文件功能
+	 */
+	ajaxFile({
+		path = '',
+		title = false,
+		header = this.defaultUp.header,
+		filePath = '',
+		fileName = '',
+		extra = {},
+		abort = bt => {},
+		_isFirst = true,
+		_autoClose = true,
+		...args
+	} = {}) {
+		Object.assign(extra,this.defaultUp.baseData);
+		return new Promise((resolve, reject) => {
+			if (title && _isFirst) { //显示请求提示
+				uni.showLoading({
+					title,
+					mask: true,
+				});
+			}
+			const url=this.defaultUp.url + path;
+			let beforeInfo=Object.assign({},{path:url,header,filePath,fileName,extra,args})
+			const uploadTask = uni.uploadFile({
+				url,
+				filePath,
+				name: fileName,
+				header,
+				formData: extra,
+				complete: ({
+					statusCode = 0,
+					...finsh
+				} = {}) => {
+					if (title && _autoClose) {
+						uni.hideLoading();
+					}
+					if (statusCode == 200) {
+						return resolve(finsh);
+					}
+					return reject(finsh);
+				}
+			});
+			abort(beforeInfo,uploadTask);
+		})
+	}
+	/**
+	 * 内部下载文件,仅内部调用
+	 */
+	downFiles({
+		abort = () => {},
+		path = '',
+		title = false,
+		index=0,	//所属下载索引
+		...extra
+	} = {}) {
+		return new Promise((resolve, reject) => {
+			if (!path) {
+				reject('请选设置请求路径');
+			}
+			if (title) {
+				uni.showLoading({
+					title,
+					mask: true,
+				});
+			}
+			const downloadTask = uni.downloadFile({
+				url: path,
+				...extra,
+				complete: ({
+					statusCode = 0,
+					...finsh
+				} = {}) => {
+					if (title) {
+						uni.hideLoading();
+					}
+					if (statusCode === 200) {
+						return resolve(Object.assign({}, {
+							statusCode,
+							params: extra,
+							...finsh
+						}));
+					}
+					return reject(finsh)
+				},
+			})
+			abort({
+				abort,
+				path,
+				title,
+				index,
+				...extra
+			},downloadTask);
+		})
+	}
+	/**
+	 * 设置代理
+	 */
+	proxy(obj, callback) {
+		ProxyControll(obj, callback);
+	}
+	/**
+	 * 运行环境判断
+	 */
+	platformChunk() {
+		if (typeof plus == 'undefined') {
+			return 1;
+		}
+		return 0;
+	}
+}
+
+export const req = new Request();
+export const RQ = Request;

+ 28 - 0
components/gaoyia-parse/components/wxParseAudio.vue

@@ -0,0 +1,28 @@
+<template>
+	<!-- '<audio/>' 组件不再维护,建议使用能力更强的 'uni.createInnerAudioContext' 接口 有时间再改-->
+  <!--增加audio标签支持-->
+  <audio
+    :id="node.attr.id"
+    :class="node.classStr"
+    :style="node.styleStr"
+    :src="node.attr.src"
+    :loop="node.attr.loop"
+    :poster="node.attr.poster"
+    :name="node.attr.name"
+    :author="node.attr.author"
+    controls></audio>
+</template>
+
+<script>
+export default {
+  name: 'wxParseAudio',
+  props: {
+    node: {
+      type: Object,
+      default() {
+        return {};
+      },
+    },
+  },
+};
+</script>

+ 94 - 0
components/gaoyia-parse/components/wxParseImg.vue

@@ -0,0 +1,94 @@
+<template>
+	<image
+		:mode="node.attr.mode"
+		:lazy-load="node.attr.lazyLoad"
+		:class="node.classStr"
+		:style="newStyleStr || node.styleStr"
+		:data-src="node.attr.src"
+		:src="node.attr.src"
+		@tap="wxParseImgTap"
+		@load="wxParseImgLoad"
+	/>
+</template>
+
+<script>
+export default {
+	name: 'wxParseImg',
+	data() {
+		return {
+			newStyleStr: '',
+			preview: true
+		};
+	},
+	inject: ['parseWidth'],
+	mounted() {},
+	props: {
+		node: {
+			type: Object,
+			default() {
+				return {};
+			}
+		}
+	},
+	
+	methods: {
+		wxParseImgTap(e) {
+			if (!this.preview) return;
+			const { src } = e.currentTarget.dataset;
+			if (!src) return;
+			let parent = this.$parent;
+			while (!parent.preview || typeof parent.preview !== 'function') {
+				// TODO 遍历获取父节点执行方法
+				parent = parent.$parent;
+			}
+			parent.preview(src, e);
+		},
+		// 图片视觉宽高计算函数区
+		wxParseImgLoad(e) {
+			const { src } = e.currentTarget.dataset;
+			if (!src) return;
+			let { width, height } = e.mp.detail;
+
+			const recal = this.wxAutoImageCal(width, height);
+
+			const { imageheight, imageWidth } = recal;
+			const { padding, mode } = this.node.attr;//删除padding
+			// const { mode } = this.node.attr;
+
+			const { styleStr } = this.node;
+			const imageHeightStyle = mode === 'widthFix' ? '' : `height: ${imageheight}px;`;
+
+			this.newStyleStr = `${styleStr}; ${imageHeightStyle}; width: ${imageWidth}px; padding: 0 ${+padding}px;`;//删除padding
+			// this.newStyleStr = `${styleStr}; ${imageHeightStyle}; width: ${imageWidth}px;`;
+		},
+		// 计算视觉优先的图片宽高
+		wxAutoImageCal(originalWidth, originalHeight) {
+			// 获取图片的原始长宽
+			const windowWidth = this.parseWidth.value;
+			const results = {};
+
+			if (originalWidth < 60 || originalHeight < 60) {
+				const { src } = this.node.attr;
+				let parent = this.$parent;
+				while (!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.removeImageUrl(src);
+				this.preview = false;
+			}
+
+			// 判断按照那种方式进行缩放
+			if (originalWidth > windowWidth) {
+				// 在图片width大于手机屏幕width时候
+				results.imageWidth = windowWidth;
+				results.imageheight = windowWidth * (originalHeight / originalWidth);
+			} else {
+				// 否则展示原来的数据
+				results.imageWidth = originalWidth;
+				results.imageheight = originalHeight;
+			}
+			return results;
+		}
+	}
+};
+</script>

+ 55 - 0
components/gaoyia-parse/components/wxParseTable.vue

@@ -0,0 +1,55 @@
+<template>
+	<div class='tablebox'>
+		<rich-text :nodes="nodes" :class="node.classStr" :style="'user-select:' + parseSelect"></rich-text>
+	</div>
+</template>
+<script>
+export default {
+	name: 'wxParseTable',
+	props: {
+		node: {
+			type: Object,
+			default() {
+				return {};
+			},
+		},
+	},
+	inject: ['parseSelect'],
+	data() {
+		return {
+			nodes:[]
+		};
+	},
+	mounted() {
+		this.nodes=this.loadNode([this.node]);
+	},
+	methods: {
+		loadNode(node) {
+			let obj = [];
+			for (let children of node) {
+				if (children.node=='element') {
+					let t = {
+						name:children.tag,
+						attrs: {
+							class: children.classStr,
+							// style: children.styleStr,
+						},
+						children: children.nodes?this.loadNode(children.nodes):[]
+					}
+					
+					obj.push(t)
+				} else if(children.node=='text'){
+					obj.push({
+						type: 'text',
+						text: children.text
+					})
+				}
+			}
+			return obj
+		}
+	}
+};
+</script>
+<style>
+	@import url("../parse.css");
+</style>

+ 98 - 0
components/gaoyia-parse/components/wxParseTemplate0.vue

@@ -0,0 +1,98 @@
+<template>
+	<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<wx-parse-template :node="node" />
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+		
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node"/>
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text'">{{node.text}}</block>
+</template>
+
+<script>
+	// #ifdef APP-PLUS | H5
+	import wxParseTemplate from './wxParseTemplate0';
+	// #endif
+	// #ifdef MP
+	import wxParseTemplate from './wxParseTemplate1';
+	// #endif
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+
+	export default {
+		// #ifdef APP-PLUS | H5
+		name: 'wxParseTemplate',
+		// #endif
+		// #ifdef MP
+		name: 'wxParseTemplate0',
+		// #endif
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;// TODO currentTarget才有dataset
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {// TODO 遍历获取父节点执行方法
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 88 - 0
components/gaoyia-parse/components/wxParseTemplate1.vue

@@ -0,0 +1,88 @@
+<template>
+	<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<wx-parse-template :node="node" />
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+		
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text'">{{node.text}}</block>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate2';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+	
+	export default {
+		name: 'wxParseTemplate1',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 88 - 0
components/gaoyia-parse/components/wxParseTemplate10.vue

@@ -0,0 +1,88 @@
+<template>
+		<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<wx-parse-template :node="node" />
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+		
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate11';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+	
+	export default {
+		name: 'wxParseTemplate10',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 86 - 0
components/gaoyia-parse/components/wxParseTemplate11.vue

@@ -0,0 +1,86 @@
+<template>
+		<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<rich-text :nodes="node" :class="node.classStr" :style="'user-select:' + parseSelect"></rich-text>
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<rich-text :nodes="node" :class="node.classStr" :style="'user-select:' + parseSelect"></rich-text>
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<rich-text :nodes="node" :class="node.classStr" :style="'user-select:' + parseSelect"></rich-text>
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<rich-text :nodes="node" :class="node.classStr" :style="'user-select:' + parseSelect"></rich-text>
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
+</template>
+
+<script>
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+	
+	export default {
+		name: 'wxParseTemplate11',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 88 - 0
components/gaoyia-parse/components/wxParseTemplate2.vue

@@ -0,0 +1,88 @@
+<template>
+		<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<wx-parse-template :node="node" />
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+		
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text'">{{node.text}}</block>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate3';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+	
+	export default {
+		name: 'wxParseTemplate2',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 88 - 0
components/gaoyia-parse/components/wxParseTemplate3.vue

@@ -0,0 +1,88 @@
+<template>
+		<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<wx-parse-template :node="node" />
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+		
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate4';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+	
+	export default {
+		name: 'wxParseTemplate3',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 88 - 0
components/gaoyia-parse/components/wxParseTemplate4.vue

@@ -0,0 +1,88 @@
+<template>
+		<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<wx-parse-template :node="node" />
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+		
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate5';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+	
+	export default {
+		name: 'wxParseTemplate4',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 88 - 0
components/gaoyia-parse/components/wxParseTemplate5.vue

@@ -0,0 +1,88 @@
+<template>
+		<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<wx-parse-template :node="node" />
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+		
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate6';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+	
+	export default {
+		name: 'wxParseTemplate5',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 88 - 0
components/gaoyia-parse/components/wxParseTemplate6.vue

@@ -0,0 +1,88 @@
+<template>
+		<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<wx-parse-template :node="node" />
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+		
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate7';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+	
+	export default {
+		name: 'wxParseTemplate6',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 88 - 0
components/gaoyia-parse/components/wxParseTemplate7.vue

@@ -0,0 +1,88 @@
+<template>
+		<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<wx-parse-template :node="node" />
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+		
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate8';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+	
+	export default {
+		name: 'wxParseTemplate7',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 88 - 0
components/gaoyia-parse/components/wxParseTemplate8.vue

@@ -0,0 +1,88 @@
+<template>
+		<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<wx-parse-template :node="node" />
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+		
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate9';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+	
+	export default {
+		name: 'wxParseTemplate8',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 88 - 0
components/gaoyia-parse/components/wxParseTemplate9.vue

@@ -0,0 +1,88 @@
+<template>
+		<!--判断是否是标签节点-->
+	<block v-if="node.node == 'element'">
+		<!--button类型-->
+		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
+			<wx-parse-template :node="node" />
+		</button>
+		
+		<!--a类型-->
+		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--li类型-->
+		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+		
+		<!--table类型-->
+		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
+		
+		<!--br类型-->
+		<!-- #ifndef H5 -->
+			<text v-else-if="node.tag == 'br'">\n</text>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+			<br v-else-if="node.tag == 'br'">
+		<!-- #endif -->
+		
+		<!--video类型-->
+		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
+	
+		<!--audio类型-->
+		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
+	
+		<!--img类型-->
+		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
+	
+		<!--其他标签-->
+		<view v-else :class="node.classStr" :style="node.styleStr">
+			<block v-for="(node, index) of node.nodes" :key="index">
+				<wx-parse-template :node="node" />
+			</block>
+		</view>
+	</block>
+	
+	<!--判断是否是文本节点-->
+	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate10';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+	import wxParseTable from './wxParseTable';
+	
+	export default {
+		name: 'wxParseTemplate9',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+			wxParseTable
+		},
+		methods: {
+			wxParseATap(attr,e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				let parent = this.$parent;
+				while(!parent.preview || typeof parent.preview !== 'function') {
+					parent = parent.$parent;
+				}
+				parent.navigate(href, e, attr);
+			}
+		}
+	};
+</script>

+ 15 - 0
components/gaoyia-parse/components/wxParseVideo.vue

@@ -0,0 +1,15 @@
+<template>
+  <!--增加video标签支持,并循环添加-->
+  <view :class="node.classStr" :style="node.styleStr">
+    <video :class="node.classStr" :style="node.styleStr" class="video-video" :src="node.attr.src"></video>
+  </view>
+</template>
+
+<script>
+export default {
+  name: 'wxParseVideo',
+  props: {
+    node: {},
+  },
+};
+</script>

+ 261 - 0
components/gaoyia-parse/libs/html2json.js

@@ -0,0 +1,261 @@
+/**
+ * html2Json 改造来自: https://github.com/Jxck/html2json
+ *
+ *
+ * author: Di (微信小程序开发工程师)
+ * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
+ *               垂直微信小程序开发交流社区
+ *
+ * github地址: https://github.com/icindy/wxParse
+ *
+ * for: 微信小程序富文本解析
+ * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
+ */
+
+import wxDiscode from './wxDiscode';
+import HTMLParser from './htmlparser';
+
+function makeMap(str) {
+  const obj = {};
+  const items = str.split(',');
+  for (let i = 0; i < items.length; i += 1) obj[items[i]] = true;
+  return obj;
+}
+
+// Block Elements - HTML 5
+const block = makeMap('br,code,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video');
+
+// Inline Elements - HTML 5
+const inline = makeMap('a,abbr,acronym,applet,b,basefont,bdo,big,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var');
+
+// Elements that you can, intentionally, leave open
+// (and which close themselves)
+const closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr');
+
+function removeDOCTYPE(html) {
+  const isDocument = /<body.*>([^]*)<\/body>/.test(html);
+  return isDocument ? RegExp.$1 : html;
+}
+
+function trimHtml(html) {
+  return html
+    .replace(/<!--.*?-->/gi, '')
+    .replace(/\/\*.*?\*\//gi, '')
+    .replace(/[ ]+</gi, '<')
+    .replace(/<script[^]*<\/script>/gi, '')
+    .replace(/<style[^]*<\/style>/gi, '');
+}
+
+function getScreenInfo() {
+  const screen = {};
+  wx.getSystemInfo({
+    success: (res) => {
+      screen.width = res.windowWidth;
+      screen.height = res.windowHeight;
+    },
+  });
+  return screen;
+}
+
+function html2json(html, customHandler, imageProp, host) {
+  // 处理字符串
+  html = removeDOCTYPE(html);
+  html = trimHtml(html);
+  html = wxDiscode.strDiscode(html);
+  // 生成node节点
+  const bufArray = [];
+  const results = {
+    nodes: [],
+    imageUrls: [],
+  };
+
+	const screen = getScreenInfo();
+  function Node(tag) {
+    this.node = 'element';
+    this.tag = tag;
+		
+		this.$screen = screen;
+  }
+
+  HTMLParser(html, {
+    start(tag, attrs, unary) {
+      // node for this element
+      const node = new Node(tag);
+
+      if (bufArray.length !== 0) {
+        const parent = bufArray[0];
+        if (parent.nodes === undefined) {
+          parent.nodes = [];
+        }
+      }
+
+      if (block[tag]) {
+        node.tagType = 'block';
+      } else if (inline[tag]) {
+        node.tagType = 'inline';
+      } else if (closeSelf[tag]) {
+        node.tagType = 'closeSelf';
+      }
+
+      node.attr = attrs.reduce((pre, attr) => {
+        const { name } = attr;
+        let { value } = attr;
+        if (name === 'class') {
+          node.classStr = value;
+        }
+        // has multi attibutes
+        // make it array of attribute
+        if (name === 'style') {
+          node.styleStr = value;
+        }
+        if (value.match(/ /)) {
+          value = value.split(' ');
+        }
+
+        // if attr already exists
+        // merge it
+        if (pre[name]) {
+          if (Array.isArray(pre[name])) {
+            // already array, push to last
+            pre[name].push(value);
+          } else {
+            // single value, make it array
+            pre[name] = [pre[name], value];
+          }
+        } else {
+          // not exist, put it
+          pre[name] = value;
+        }
+
+        return pre;
+      }, {});
+
+      // 优化样式相关属性
+      if (node.classStr) {
+        node.classStr += ` ${node.tag}`;
+      } else {
+        node.classStr = node.tag;
+      }
+      if (node.tagType === 'inline') {
+        node.classStr += ' inline';
+      }
+
+      // 对img添加额外数据
+      if (node.tag === 'img') {
+        let imgUrl = node.attr.src;
+        imgUrl = wxDiscode.urlToHttpUrl(imgUrl, imageProp.domain);
+        Object.assign(node.attr, imageProp, {
+          src: imgUrl || '',
+        });
+        if (imgUrl) {
+          results.imageUrls.push(imgUrl);
+        }
+      }
+
+      // 处理a标签属性
+      if (node.tag === 'a') {
+        node.attr.href = node.attr.href || '';
+      }
+
+      // 处理font标签样式属性
+      if (node.tag === 'font') {
+        const fontSize = [
+          'x-small',
+          'small',
+          'medium',
+          'large',
+          'x-large',
+          'xx-large',
+          '-webkit-xxx-large',
+        ];
+        const styleAttrs = {
+          color: 'color',
+          face: 'font-family',
+          size: 'font-size',
+        };
+        if (!node.styleStr) node.styleStr = '';
+        Object.keys(styleAttrs).forEach((key) => {
+          if (node.attr[key]) {
+            const value = key === 'size' ? fontSize[node.attr[key] - 1] : node.attr[key];
+            node.styleStr += `${styleAttrs[key]}: ${value};`;
+          }
+        });
+      }
+
+      // 临时记录source资源
+      if (node.tag === 'source') {
+        results.source = node.attr.src;
+      }
+
+      if (customHandler.start) {
+        customHandler.start(node, results);
+      }
+
+      if (unary) {
+        // if this tag doesn't have end tag
+        // like <img src="hoge.png"/>
+        // add to parents
+        const parent = bufArray[0] || results;
+        if (parent.nodes === undefined) {
+          parent.nodes = [];
+        }
+        parent.nodes.push(node);
+      } else {
+        bufArray.unshift(node);
+      }
+    },
+    end(tag) {
+      // merge into parent tag
+      const node = bufArray.shift();
+      if (node.tag !== tag) {
+        console.error('invalid state: mismatch end tag');
+      }
+
+      // 当有缓存source资源时于于video补上src资源
+      if (node.tag === 'video' && results.source) {
+        node.attr.src = results.source;
+        delete results.source;
+      }
+
+      if (customHandler.end) {
+        customHandler.end(node, results);
+      }
+
+      if (bufArray.length === 0) {
+        results.nodes.push(node);
+      } else {
+        const parent = bufArray[0];
+        if (!parent.nodes) {
+          parent.nodes = [];
+        }
+        parent.nodes.push(node);
+      }
+    },
+    chars(text) {
+      if (!text.trim()) return;
+
+      const node = {
+        node: 'text',
+        text,
+      };
+
+      if (customHandler.chars) {
+        customHandler.chars(node, results);
+      }
+
+      if (bufArray.length === 0) {
+        results.nodes.push(node);
+      } else {
+        const parent = bufArray[0];
+        if (parent.nodes === undefined) {
+          parent.nodes = [];
+        }
+        parent.nodes.push(node);
+      }
+    },
+  });
+
+  return results;
+}
+
+export default html2json;

+ 156 - 0
components/gaoyia-parse/libs/htmlparser.js

@@ -0,0 +1,156 @@
+/**
+ *
+ * htmlParser改造自: https://github.com/blowsie/Pure-JavaScript-HTML5-Parser
+ *
+ * author: Di (微信小程序开发工程师)
+ * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
+ *               垂直微信小程序开发交流社区
+ *
+ * github地址: https://github.com/icindy/wxParse
+ *
+ * for: 微信小程序富文本解析
+ * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
+ */
+// Regular Expressions for parsing tags and attributes
+
+const startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z0-9_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/;
+const endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/;
+const attr = /([a-zA-Z0-9_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;
+
+function makeMap(str) {
+  const obj = {};
+  const items = str.split(',');
+  for (let i = 0; i < items.length; i += 1) obj[items[i]] = true;
+  return obj;
+}
+
+// Empty Elements - HTML 5
+const empty = makeMap('area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr');
+
+// Block Elements - HTML 5
+const block = makeMap('address,code,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video');
+
+// Inline Elements - HTML 5
+const inline = makeMap('a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var');
+
+// Elements that you can, intentionally, leave open
+// (and which close themselves)
+const closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr');
+
+// Attributes that have their values filled in disabled="disabled"
+const fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected');
+
+function HTMLParser(html, handler) {
+  let index;
+  let chars;
+  let match;
+  let last = html;
+  const stack = [];
+
+  stack.last = () => stack[stack.length - 1];
+
+  function parseEndTag(tag, tagName) {
+    // If no tag name is provided, clean shop
+    let pos;
+    if (!tagName) {
+      pos = 0;
+    } else {
+      // Find the closest opened tag of the same type
+      tagName = tagName.toLowerCase();
+      for (pos = stack.length - 1; pos >= 0; pos -= 1) {
+        if (stack[pos] === tagName) break;
+      }
+    }
+    if (pos >= 0) {
+      // Close all the open elements, up the stack
+      for (let i = stack.length - 1; i >= pos; i -= 1) {
+        if (handler.end) handler.end(stack[i]);
+      }
+
+      // Remove the open elements from the stack
+      stack.length = pos;
+    }
+  }
+
+  function parseStartTag(tag, tagName, rest, unary) {
+    tagName = tagName.toLowerCase();
+
+    if (block[tagName]) {
+      while (stack.last() && inline[stack.last()]) {
+        parseEndTag('', stack.last());
+      }
+    }
+
+    if (closeSelf[tagName] && stack.last() === tagName) {
+      parseEndTag('', tagName);
+    }
+
+    unary = empty[tagName] || !!unary;
+
+    if (!unary) stack.push(tagName);
+
+    if (handler.start) {
+      const attrs = [];
+
+      rest.replace(attr, function genAttr(matches, name) {
+        const value = arguments[2] || arguments[3] || arguments[4] || (fillAttrs[name] ? name : '');
+
+        attrs.push({
+          name,
+          value,
+          escaped: value.replace(/(^|[^\\])"/g, '$1\\"'), // "
+        });
+      });
+
+      if (handler.start) {
+        handler.start(tagName, attrs, unary);
+      }
+    }
+  }
+
+  while (html) {
+    chars = true;
+
+    if (html.indexOf('</') === 0) {
+      match = html.match(endTag);
+
+      if (match) {
+        html = html.substring(match[0].length);
+        match[0].replace(endTag, parseEndTag);
+        chars = false;
+      }
+
+      // start tag
+    } else if (html.indexOf('<') === 0) {
+      match = html.match(startTag);
+
+      if (match) {
+        html = html.substring(match[0].length);
+        match[0].replace(startTag, parseStartTag);
+        chars = false;
+      }
+    }
+
+    if (chars) {
+      index = html.indexOf('<');
+      let text = '';
+      while (index === 0) {
+        text += '<';
+        html = html.substring(1);
+        index = html.indexOf('<');
+      }
+      text += index < 0 ? html : html.substring(0, index);
+      html = index < 0 ? '' : html.substring(index);
+
+      if (handler.chars) handler.chars(text);
+    }
+
+    if (html === last) throw new Error(`Parse Error: ${html}`);
+    last = html;
+  }
+
+  // Clean up any remaining tags
+  parseEndTag();
+}
+
+export default HTMLParser;

+ 209 - 0
components/gaoyia-parse/libs/wxDiscode.js

@@ -0,0 +1,209 @@
+// HTML 支持的数学符号
+function strNumDiscode(str) {
+str = str.replace(/&forall;|&#8704;|&#x2200;/g, '∀');
+str = str.replace(/&part;|&#8706;|&#x2202;/g, '∂');
+str = str.replace(/&exist;|&#8707;|&#x2203;/g, '∃');
+str = str.replace(/&empty;|&#8709;|&#x2205;/g, '∅');
+str = str.replace(/&nabla;|&#8711;|&#x2207;/g, '∇');
+str = str.replace(/&isin;|&#8712;|&#x2208;/g, '∈');
+str = str.replace(/&notin;|&#8713;|&#x2209;/g, '∉');
+str = str.replace(/&ni;|&#8715;|&#x220b;/g, '∋');
+str = str.replace(/&prod;|&#8719;|&#x220f;/g, '∏');
+str = str.replace(/&sum;|&#8721;|&#x2211;/g, '∑');
+str = str.replace(/&minus;|&#8722;|&#x2212;/g, '−');
+str = str.replace(/&lowast;|&#8727;|&#x2217;/g, '∗');
+str = str.replace(/&radic;|&#8730;|&#x221a;/g, '√');
+str = str.replace(/&prop;|&#8733;|&#x221d;/g, '∝');
+str = str.replace(/&infin;|&#8734;|&#x221e;/g, '∞');
+str = str.replace(/&ang;|&#8736;|&#x2220;/g, '∠');
+str = str.replace(/&and;|&#8743;|&#x2227;/g, '∧');
+str = str.replace(/&or;|&#8744;|&#x2228;/g, '∨');
+str = str.replace(/&cap;|&#8745;|&#x2229;/g, '∩');
+str = str.replace(/&cup;|&#8746;|&#x222a;/g, '∪');
+str = str.replace(/&int;|&#8747;|&#x222b;/g, '∫');
+str = str.replace(/&there4;|&#8756;|&#x2234;/g, '∴');
+str = str.replace(/&sim;|&#8764;|&#x223c;/g, '∼');
+str = str.replace(/&cong;|&#8773;|&#x2245;/g, '≅');
+str = str.replace(/&asymp;|&#8776;|&#x2248;/g, '≈');
+str = str.replace(/&ne;|&#8800;|&#x2260;/g, '≠');
+str = str.replace(/&le;|&#8804;|&#x2264;/g, '≤');
+str = str.replace(/&ge;|&#8805;|&#x2265;/g, '≥');
+str = str.replace(/&sub;|&#8834;|&#x2282;/g, '⊂');
+str = str.replace(/&sup;|&#8835;|&#x2283;/g, '⊃');
+str = str.replace(/&nsub;|&#8836;|&#x2284;/g, '⊄');
+str = str.replace(/&sube;|&#8838;|&#x2286;/g, '⊆');
+str = str.replace(/&supe;|&#8839;|&#x2287;/g, '⊇');
+str = str.replace(/&oplus;|&#8853;|&#x2295;/g, '⊕');
+str = str.replace(/&otimes;|&#8855;|&#x2297;/g, '⊗');
+str = str.replace(/&perp;|&#8869;|&#x22a5;/g, '⊥');
+str = str.replace(/&sdot;|&#8901;|&#x22c5;/g, '⋅');
+return str;
+}
+
+// HTML 支持的希腊字母
+function strGreeceDiscode(str) {
+str = str.replace(/&Alpha;|&#913;|&#x391;/g, 'Α');
+str = str.replace(/&Beta;|&#914;|&#x392;/g, 'Β');
+str = str.replace(/&Gamma;|&#915;|&#x393;/g, 'Γ');
+str = str.replace(/&Delta;|&#916;|&#x394;/g, 'Δ');
+str = str.replace(/&Epsilon;|&#917;|&#x395;/g, 'Ε');
+str = str.replace(/&Zeta;|&#918;|&#x396;/g, 'Ζ');
+str = str.replace(/&Eta;|&#919;|&#x397;/g, 'Η');
+str = str.replace(/&Theta;|&#920;|&#x398;/g, 'Θ');
+str = str.replace(/&Iota;|&#921;|&#x399;/g, 'Ι');
+str = str.replace(/&Kappa;|&#922;|&#x39a;/g, 'Κ');
+str = str.replace(/&Lambda;|&#923;|&#x39b;/g, 'Λ');
+str = str.replace(/&Mu;|&#924;|&#x39c;/g, 'Μ');
+str = str.replace(/&Nu;|&#925;|&#x39d;/g, 'Ν');
+str = str.replace(/&Xi;|&#925;|&#x39d;/g, 'Ν');
+str = str.replace(/&Omicron;|&#927;|&#x39f;/g, 'Ο');
+str = str.replace(/&Pi;|&#928;|&#x3a0;/g, 'Π');
+str = str.replace(/&Rho;|&#929;|&#x3a1;/g, 'Ρ');
+str = str.replace(/&Sigma;|&#931;|&#x3a3;/g, 'Σ');
+str = str.replace(/&Tau;|&#932;|&#x3a4;/g, 'Τ');
+str = str.replace(/&Upsilon;|&#933;|&#x3a5;/g, 'Υ');
+str = str.replace(/&Phi;|&#934;|&#x3a6;/g, 'Φ');
+str = str.replace(/&Chi;|&#935;|&#x3a7;/g, 'Χ');
+str = str.replace(/&Psi;|&#936;|&#x3a8;/g, 'Ψ');
+str = str.replace(/&Omega;|&#937;|&#x3a9;/g, 'Ω');
+
+str = str.replace(/&alpha;|&#945;|&#x3b1;/g, 'α');
+str = str.replace(/&beta;|&#946;|&#x3b2;/g, 'β');
+str = str.replace(/&gamma;|&#947;|&#x3b3;/g, 'γ');
+str = str.replace(/&delta;|&#948;|&#x3b4;/g, 'δ');
+str = str.replace(/&epsilon;|&#949;|&#x3b5;/g, 'ε');
+str = str.replace(/&zeta;|&#950;|&#x3b6;/g, 'ζ');
+str = str.replace(/&eta;|&#951;|&#x3b7;/g, 'η');
+str = str.replace(/&theta;|&#952;|&#x3b8;/g, 'θ');
+str = str.replace(/&iota;|&#953;|&#x3b9;/g, 'ι');
+str = str.replace(/&kappa;|&#954;|&#x3ba;/g, 'κ');
+str = str.replace(/&lambda;|&#955;|&#x3bb;/g, 'λ');
+str = str.replace(/&mu;|&#956;|&#x3bc;/g, 'μ');
+str = str.replace(/&nu;|&#957;|&#x3bd;/g, 'ν');
+str = str.replace(/&xi;|&#958;|&#x3be;/g, 'ξ');
+str = str.replace(/&omicron;|&#959;|&#x3bf;/g, 'ο');
+str = str.replace(/&pi;|&#960;|&#x3c0;/g, 'π');
+str = str.replace(/&rho;|&#961;|&#x3c1;/g, 'ρ');
+str = str.replace(/&sigmaf;|&#962;|&#x3c2;/g, 'ς');
+str = str.replace(/&sigma;|&#963;|&#x3c3;/g, 'σ');
+str = str.replace(/&tau;|&#964;|&#x3c4;/g, 'τ');
+str = str.replace(/&upsilon;|&#965;|&#x3c5;/g, 'υ');
+str = str.replace(/&phi;|&#966;|&#x3c6;/g, 'φ');
+str = str.replace(/&chi;|&#967;|&#x3c7;/g, 'χ');
+str = str.replace(/&psi;|&#968;|&#x3c8;/g, 'ψ');
+str = str.replace(/&omega;|&#969;|&#x3c9;/g, 'ω');
+str = str.replace(/&thetasym;|&#977;|&#x3d1;/g, 'ϑ');
+str = str.replace(/&upsih;|&#978;|&#x3d2;/g, 'ϒ');
+str = str.replace(/&piv;|&#982;|&#x3d6;/g, 'ϖ');
+str = str.replace(/&middot;|&#183;|&#xb7;/g, '·');
+return str;
+}
+
+function strcharacterDiscode(str) {
+// 加入常用解析
+
+// str = str.replace(/&nbsp;|&#32;|&#x20;/g, "&nbsp;");
+// str = str.replace(/&ensp;|&#8194;|&#x2002;/g, '&ensp;');
+// str = str.replace(/&#12288;|&#x3000;/g, '<span class=\'spaceshow\'> </span>');
+// str = str.replace(/&emsp;|&#8195;|&#x2003;/g, '&emsp;');
+// str = str.replace(/&quot;|&#34;|&#x22;/g, "\"");
+// str = str.replace(/&apos;|&#39;|&#x27;/g, "&apos;");
+// str = str.replace(/&acute;|&#180;|&#xB4;/g, "´");
+// str = str.replace(/&times;|&#215;|&#xD7;/g, "×");
+// str = str.replace(/&divide;|&#247;|&#xF7;/g, "÷");
+// str = str.replace(/&amp;|&#38;|&#x26;/g, '&amp;');
+// str = str.replace(/&lt;|&#60;|&#x3c;/g, '&lt;');
+// str = str.replace(/&gt;|&#62;|&#x3e;/g, '&gt;');
+
+
+
+
+str = str.replace(/&nbsp;|&#32;|&#x20;/g, "<span class='spaceshow'> </span>");
+str = str.replace(/&ensp;|&#8194;|&#x2002;/g, '<span class=\'spaceshow\'> </span>');
+str = str.replace(/&#12288;|&#x3000;/g, '<span class=\'spaceshow\'> </span>');
+str = str.replace(/&emsp;|&#8195;|&#x2003;/g, '<span class=\'spaceshow\'> </span>');
+str = str.replace(/&quot;|&#34;|&#x22;/g, "\"");
+str = str.replace(/&quot;|&#39;|&#x27;/g, "'");
+str = str.replace(/&acute;|&#180;|&#xB4;/g, "´");
+str = str.replace(/&times;|&#215;|&#xD7;/g, "×");
+str = str.replace(/&divide;|&#247;|&#xF7;/g, "÷");
+str = str.replace(/&amp;|&#38;|&#x26;/g, '&');
+str = str.replace(/&lt;|&#60;|&#x3c;/g, '<');
+str = str.replace(/&gt;|&#62;|&#x3e;/g, '>');
+return str;
+}
+
+// HTML 支持的其他实体
+function strOtherDiscode(str) {
+str = str.replace(/&OElig;|&#338;|&#x152;/g, 'Œ');
+str = str.replace(/&oelig;|&#339;|&#x153;/g, 'œ');
+str = str.replace(/&Scaron;|&#352;|&#x160;/g, 'Š');
+str = str.replace(/&scaron;|&#353;|&#x161;/g, 'š');
+str = str.replace(/&Yuml;|&#376;|&#x178;/g, 'Ÿ');
+str = str.replace(/&fnof;|&#402;|&#x192;/g, 'ƒ');
+str = str.replace(/&circ;|&#710;|&#x2c6;/g, 'ˆ');
+str = str.replace(/&tilde;|&#732;|&#x2dc;/g, '˜');
+str = str.replace(/&thinsp;|$#8201;|&#x2009;/g, '<span class=\'spaceshow\'> </span>');
+str = str.replace(/&zwnj;|&#8204;|&#x200C;/g, '<span class=\'spaceshow\'>‌</span>');
+str = str.replace(/&zwj;|$#8205;|&#x200D;/g, '<span class=\'spaceshow\'>‍</span>');
+str = str.replace(/&lrm;|$#8206;|&#x200E;/g, '<span class=\'spaceshow\'>‎</span>');
+str = str.replace(/&rlm;|&#8207;|&#x200F;/g, '<span class=\'spaceshow\'>‏</span>');
+str = str.replace(/&ndash;|&#8211;|&#x2013;/g, '–');
+str = str.replace(/&mdash;|&#8212;|&#x2014;/g, '—');
+str = str.replace(/&lsquo;|&#8216;|&#x2018;/g, '‘');
+str = str.replace(/&rsquo;|&#8217;|&#x2019;/g, '’');
+str = str.replace(/&sbquo;|&#8218;|&#x201a;/g, '‚');
+str = str.replace(/&ldquo;|&#8220;|&#x201c;/g, '“');
+str = str.replace(/&rdquo;|&#8221;|&#x201d;/g, '”');
+str = str.replace(/&bdquo;|&#8222;|&#x201e;/g, '„');
+str = str.replace(/&dagger;|&#8224;|&#x2020;/g, '†');
+str = str.replace(/&Dagger;|&#8225;|&#x2021;/g, '‡');
+str = str.replace(/&bull;|&#8226;|&#x2022;/g, '•');
+str = str.replace(/&hellip;|&#8230;|&#x2026;/g, '…');
+str = str.replace(/&permil;|&#8240;|&#x2030;/g, '‰');
+str = str.replace(/&prime;|&#8242;|&#x2032;/g, '′');
+str = str.replace(/&Prime;|&#8243;|&#x2033;/g, '″');
+str = str.replace(/&lsaquo;|&#8249;|&#x2039;/g, '‹');
+str = str.replace(/&rsaquo;|&#8250;|&#x203a;/g, '›');
+str = str.replace(/&oline;|&#8254;|&#x203e;/g, '‾');
+str = str.replace(/&euro;|&#8364;|&#x20ac;/g, '€');
+str = str.replace(/&trade;|&#8482;|&#x2122;/g, '™');
+str = str.replace(/&larr;|&#8592;|&#x2190;/g, '←');
+str = str.replace(/&uarr;|&#8593;|&#x2191;/g, '↑');
+str = str.replace(/&rarr;|&#8594;|&#x2192;/g, '→');
+str = str.replace(/&darr;|&#8595;|&#x2193;/g, '↓');
+str = str.replace(/&harr;|&#8596;|&#x2194;/g, '↔');
+str = str.replace(/&crarr;|&#8629;|&#x21b5;/g, '↵');
+str = str.replace(/&lceil;|&#8968;|&#x2308;/g, '⌈');
+str = str.replace(/&rceil;|&#8969;|&#x2309;/g, '⌉');
+str = str.replace(/&lfloor;|&#8970;|&#x230a;/g, '⌊');
+str = str.replace(/&rfloor;|&#8971;|&#x230b;/g, '⌋');
+str = str.replace(/&loz;|&#9674;|&#x25ca;/g, '◊');
+str = str.replace(/&spades;|&#9824;|&#x2660;/g, '♠');
+str = str.replace(/&clubs;|&#9827;|&#x2663;/g, '♣');
+str = str.replace(/&hearts;|&#9829;|&#x2665;/g, '♥');
+str = str.replace(/&diams;|&#9830;|&#x2666;/g, '♦');
+return str;
+}
+
+function strDiscode(str) {
+  str = strNumDiscode(str);
+  str = strGreeceDiscode(str);
+  str = strcharacterDiscode(str);
+  str = strOtherDiscode(str);
+  return str;
+}
+
+function urlToHttpUrl(url, domain) {
+  if (/^\/\//.test(url)) {
+    return `https:${url}`;
+  } else if (/^\//.test(url)) {
+    return `https://${domain}${url}`;
+  }
+  return url;
+}
+
+export default {
+  strDiscode,
+  urlToHttpUrl,
+};

+ 258 - 0
components/gaoyia-parse/parse.css

@@ -0,0 +1,258 @@
+/**
+ * author: Di (微信小程序开发工程师)
+ * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
+ *         垂直微信小程序开发交流社区
+ *
+ * github地址: https://github.com/icindy/wxParse
+ *
+ * for: 微信小程序富文本解析
+ * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
+ */
+/**
+ * 请在全局下引入该文件,@import '/static/wxParse.css';
+ */
+.wxParse {
+	user-select:none;
+	width: 100%;
+	font-family: Helvetica, "PingFangSC", 'Microsoft Yahei', '微软雅黑', Arial, sans-serif;
+	color: #333;
+	line-height: 1.5;
+	font-size: 1em;
+	text-align:justify;/* //左右两端对齐 */
+}
+.wxParse view ,.wxParse uni-view{
+	word-break: break-word;
+}
+.wxParse .p {
+	padding-bottom: 0.5em;
+	clear: both;
+	/* letter-spacing: 0;//字间距 */
+}
+.wxParse .inline {
+  display: inline;
+  margin: 0;
+  padding: 0;
+}
+
+.wxParse .div {
+  margin: 0;
+  padding: 0;
+  display: block;
+}
+
+.wxParse .h1{
+  font-size: 2em;
+  line-height: 1.2em;
+  margin: 0.67em 0;
+}
+.wxParse .h2{
+  font-size: 1.5em;
+  margin: 0.83em 0;
+}
+.wxParse .h3{
+  font-size: 1.17em;
+  margin: 1em 0;
+}
+.wxParse .h4{
+  margin: 1.33em 0;
+}
+.wxParse .h5{
+  font-size: 0.83em;
+  margin: 1.67em 0;
+}
+.wxParse .h6{
+  font-size: 0.83em;
+  margin: 1.67em 0;
+}
+
+.wxParse .h1,
+.wxParse .h2,
+.wxParse .h3,
+.wxParse .h4,
+.wxParse .h5,
+.wxParse .h6,
+.wxParse .b,
+.wxParse .strong{
+  font-weight: bolder;
+}
+
+.wxParse .i,
+.wxParse .cite,
+.wxParse .em,
+.wxParse .var,
+.wxParse .address {
+  font-style: italic;
+}
+.wxParse .spaceshow{
+	  white-space: pre;
+}
+.wxParse .pre,
+.wxParse .tt,
+.wxParse .code,
+.wxParse .kbd,
+.wxParse .samp {
+  font-family: monospace;
+}
+.wxParse .pre {
+  overflow: auto;
+  background: #f5f5f5;
+  padding: 16rpx;
+  white-space: pre;
+  margin: 1em 0rpx;
+  font-size: 24rpx;
+}
+.wxParse .code {
+	overflow: auto;
+	padding: 16rpx;
+	white-space: pre;
+	margin: 1em 0rpx;
+	background: #f5f5f5;
+	font-size: 24rpx;
+}
+
+.wxParse .big {
+  font-size: 1.17em;
+}
+
+.wxParse .small,
+.wxParse .sub,
+.wxParse .sup {
+  font-size: 0.83em;
+}
+
+.wxParse .sub {
+  vertical-align: sub;
+}
+.wxParse .sup {
+  vertical-align: super;
+}
+
+.wxParse .s,
+.wxParse .strike,
+.wxParse .del {
+  text-decoration: line-through;
+}
+
+.wxParse .strong,
+.wxParse .text,
+.wxParse .span,
+.wxParse .s {
+  display: inline;
+}
+
+.wxParse .a {
+  color: deepskyblue;
+}
+
+.wxParse .video {
+  text-align: center;
+  margin: 22rpx 0;
+}
+
+.wxParse .video-video {
+  width: 100%;
+}
+.wxParse .uni-image{
+	max-width: 100%;
+}
+.wxParse .img {
+  display: block;
+  max-width: 100%;
+  margin-bottom: 0em;/* //与p标签底部padding同时修改 */
+  overflow: hidden;
+}
+
+.wxParse .blockquote {
+  margin: 10rpx 0;
+  padding: 22rpx 0 22rpx 22rpx;
+  font-family: Courier, Calibri, "宋体";
+  background: #f5f5f5;
+  border-left: 6rpx solid #dbdbdb;
+}
+.wxParse .blockquote .p {
+  margin: 0;
+}
+.wxParse .ul, .wxParse .ol {
+  display: block;
+  margin: 1em 0;
+  padding-left: 2em;
+}
+.wxParse .ol {
+  list-style-type: disc;
+}
+.wxParse .ol {
+  list-style-type: decimal;
+}
+.wxParse .ol>weixin-parse-template,.wxParse .ul>weixin-parse-template {
+  display: list-item;
+  align-items: baseline;
+  text-align: match-parent;
+}
+
+.wxParse .ol>.li,.wxParse .ul>.li {
+  display: list-item;
+  align-items: baseline;
+  text-align: match-parent;
+}
+.wxParse .ul .ul, .wxParse .ol .ul {
+  list-style-type: circle;
+}
+.wxParse .ol .ol .ul, .wxParse .ol .ul .ul, .wxParse .ul .ol .ul, .wxParse .ul .ul .ul {
+    list-style-type: square;
+}
+
+.wxParse .u {
+  text-decoration: underline;
+}
+.wxParse .hide {
+  display: none;
+}
+.wxParse .del {
+  display: inline;
+}
+.wxParse .figure {
+  overflow: hidden;
+}
+.wxParse .tablebox{
+	overflow: auto;
+	background-color: #f5f5f5;
+	background: #f5f5f5;
+	font-size: 13px;
+	padding: 8px;
+}
+.wxParse .table .table,.wxParse .table{
+	border-collapse:collapse;
+	box-sizing: border-box;
+	/* 内边框 */
+	/* width: 100%; */
+	overflow: auto;
+	white-space: pre;
+}
+.wxParse .tbody{
+	border-collapse:collapse;
+	box-sizing: border-box;
+	/* 内边框 */
+	border: 1px solid #dadada;
+}
+.wxParse .table  .thead, .wxParse  .table .tfoot, .wxParse  .table .th{
+	border-collapse:collapse;
+	box-sizing: border-box;
+	background: #ececec;
+	font-weight: 40;
+}
+.wxParse  .table .tr {
+	border-collapse:collapse;
+	box-sizing: border-box;
+	/* border: 2px solid #F0AD4E; */
+	overflow:auto;
+}
+.wxParse  .table .th,
+.wxParse  .table .td{
+	border-collapse:collapse;
+	box-sizing: border-box;
+	border: 2rpx solid #dadada;
+	overflow:auto;
+}
+.wxParse .audio, .wxParse .uni-audio-default{
+	display: block;
+}

+ 228 - 0
components/gaoyia-parse/parse.vue

@@ -0,0 +1,228 @@
+<!--**
+ * forked from:https://github.com/F-loat/mpvue-wxParse
+ *
+ * github地址: https://github.com/dcloudio/uParse
+ *
+ * for: uni-app框架下 富文本解析
+ * 
+ * 优化 by gaoyia@qq.com  https://github.com/gaoyia/parse
+ */-->
+
+<template>
+	
+	<!--基础元素-->
+	<div class="wxParse" :class="className" :style="'user-select:' + userSelect">
+		<block v-for="(node, index) of nodes" :key="index" v-if="!loading">
+			<wxParseTemplate :node="node" />
+		</block>
+	</div>
+</template>
+
+<script>
+import HtmlToJson from './libs/html2json';
+import wxParseTemplate from './components/wxParseTemplate0';
+
+	
+	export default {
+		name: 'wxParse',
+		props: {
+			// user-select:none;
+			userSelect: {
+				type: String,
+				default: 'text' //none |text| all | element
+			},
+			imgOptions: {
+				type: [Object, Boolean],
+				default: function() {
+					return {
+						loop: false,
+						indicator: 'number',
+						longPressActions: false
+						// longPressActions: {
+						// 	 itemList: ['发送给朋友', '保存图片', '收藏'],
+						// 		success: function (res) {
+						// 			console.log('选中了第' + (res.tapIndex + 1) + '个按钮');
+						// 		},
+						// 		fail: function (res) {
+						// 			console.log(res.errMsg);
+						// 		}    
+						// 	}
+						// }
+					}
+				}
+			},
+			loading: {
+				type: Boolean,
+				default: false
+			},
+			className: {
+				type: String,
+				default: ''
+			},
+			content: {
+				type: String,
+				default: ''
+			},
+			noData: {
+				type: String,
+				default: '<div style="color: red;">数据不能为空</div>'
+			},
+			startHandler: {
+				type: Function,
+				default () {
+					return node => {
+						node.attr.class = null;
+						node.attr.style = null;
+					};
+				}
+			},
+			endHandler: {
+				type: Function,
+				default: null
+			},
+			charsHandler: {
+				type: Function,
+				default: null
+			},
+			imageProp: {
+				type: Object,
+				default () {
+					return {
+						mode: 'aspectFit',
+						padding: 0,
+						lazyLoad: false,
+						domain: ''
+					};
+				}
+			}
+		},
+		components: {
+			wxParseTemplate
+		},
+		data() {
+			return {
+				nodes: {},
+				imageUrls: [],
+				wxParseWidth: {
+					value: 0
+				}
+			};
+		},
+		computed: {},
+		mounted() {
+			this.setHtml()
+		},
+		methods: {
+			setHtml() {
+				this.getWidth().then((data) => {
+					this.wxParseWidth.value = data;
+				})
+				let {
+					content,
+					noData,
+					imageProp,
+					startHandler,
+					endHandler,
+					charsHandler
+				} = this;
+				let parseData = content || noData;
+				let customHandler = {
+					start: startHandler,
+					end: endHandler,
+					chars: charsHandler
+				};
+				let results = HtmlToJson(parseData, customHandler, imageProp, this);
+
+				this.imageUrls = results.imageUrls;
+				// this.nodes = results.nodes;
+				
+				
+				this.nodes = [];
+				results.nodes.forEach((item) => {
+					setTimeout(() => {
+						this.nodes.push(item)
+					}, 0);
+				})
+			},
+			getWidth() {
+				return new Promise((res, rej) => {
+					// #ifndef MP-ALIPAY || MP-BAIDU
+					uni.createSelectorQuery()
+						.in(this)
+						.select('.wxParse')
+						.fields({
+								size: true,
+								scrollOffset: true
+							},
+							data => {
+								res(data.width);
+							}
+						).exec();
+					// #endif
+					// #ifdef MP-BAIDU
+					const query = swan.createSelectorQuery();
+					query.select('.wxParse').boundingClientRect();
+					query.exec(obj => {
+						const rect = obj[0]
+						if (rect) {
+							res(rect.width);
+						}
+					});
+					// #endif
+					// #ifdef MP-ALIPAY
+					my.createSelectorQuery()
+						.select('.wxParse')
+						.boundingClientRect().exec((ret) => {
+							res(ret[0].width);
+						});
+					// #endif
+				});
+			},
+			navigate(href, $event, attr) {
+				console.log(href, attr);
+				this.$emit('navigate', href, $event);
+			},
+			preview(src, $event) {
+				if (!this.imageUrls.length || typeof this.imgOptions === 'boolean') {
+
+				} else {
+					uni.previewImage({
+						current: src,
+						urls: this.imageUrls,
+						loop: this.imgOptions.loop,
+						indicator: this.imgOptions.indicator,
+						longPressActions: this.imgOptions.longPressActions
+					});
+				}
+				this.$emit('preview', src, $event);
+			},
+			removeImageUrl(src) {
+				const {
+					imageUrls
+				} = this;
+				imageUrls.splice(imageUrls.indexOf(src), 1);
+			}
+		},
+		// 父组件中提供
+		provide() {
+			return {
+				parseWidth: this.wxParseWidth,
+				parseSelect: this.userSelect
+				// 提示:provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的属性还是可响应的。
+			};
+		},
+		watch: {
+			content(){
+				this.setHtml()
+			}
+			// content: {
+			// 	handler: function(newVal, oldVal) {
+			// 		if (newVal !== oldVal) {
+			// 			
+			// 		}
+			// 	},
+			// 	deep: true
+			// }
+		}
+	};
+</script>

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
components/pickerAddress/data.js


+ 104 - 0
components/pickerAddress/pickerAddress.vue

@@ -0,0 +1,104 @@
+<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: [10,5,1],
+				array: [],
+				index: 0
+			}
+		},
+		created() {
+			this.initSelect()
+		},
+		methods:{
+			// 初始化地址选项
+			initSelect() {
+				this.updateSourceDate() // 更新源数据
+				.updateAddressDate() // 更新结果数据
+				.$forceUpdate()  // 触发双向绑定
+			},
+			// 地址控件改变控件
+			columnchange(d) {
+				console.log(this.value);
+				this.updateSelectIndex(d.detail.column, d.detail.value) // 更新选择索引
+				.updateSourceDate() // 更新源数据
+				.updateAddressDate() // 更新结果数据
+				.$forceUpdate()  // 触发双向绑定
+			},
+			
+			/**
+			 * 更新源数据
+			 * */
+			updateSourceDate() {
+				this.array = []
+				this.array[0] = AllAddress.map(obj => {
+					return {
+						name: obj.provinceName
+					}
+				})
+				this.array[1] = AllAddress[this.value[0]].city.map(obj => {
+					return {
+						name: obj.cityName
+					}
+				})
+				this.array[2] = AllAddress[this.value[0]].city[this.value[1]].county.map(obj => { 
+					return {
+						name: obj.countyName
+					}
+				})
+				return this
+			},
+			
+			/**
+			 * 更新索引
+			 * */
+			updateSelectIndex(column, value){
+				let arr = JSON.parse(JSON.stringify(this.value)) 
+				arr[column] = value
+				if(column === 0 ) {
+					arr[1] = 0
+					arr[2] = 0
+				}
+				if(column === 1 ) {
+					arr[2] = 0
+				}
+				this.value = arr
+				return this
+			},
+			
+			/**
+			 * 更新结果数据 
+			 * */
+			updateAddressDate() {
+				selectVal[0] = this.array[0][this.value[0]].name
+				selectVal[1] = this.array[1][this.value[1]].name 
+				selectVal[2] = this.array[2][this.value[2]].name 
+				return this
+			},
+			
+			/**
+			 * 点击确定
+			 * */
+			bindPickerChange(e) {
+				this.$emit('change', {
+					index: this.value,
+					data: selectVal
+				})
+				return this
+			}
+			
+		}
+	}
+</script>
+
+<style>
+</style>

+ 476 - 0
components/sl-filter/filter-view.vue

@@ -0,0 +1,476 @@
+<template>
+
+	<view>
+		<view style="padding: 0px 0px;">
+			<view class="filter-content" v-for="(item, index) in menuList" :key="index" v-if="menuIndex == index">
+				<view v-if="item.isSort">
+					<view class="filter-content-list">
+						<view v-for="(detailItem,idx) in selectDetailList" :key="idx" :class="detailItem.isSelected?'filter-content-list-item-active':'filter-content-list-item-default'"
+						 :style="{'color': detailItem.isSelected?themeColor:'#666666'}" @tap="sortTap(idx,selectDetailList,item.key)">
+							<text>{{detailItem.title}}</text>
+						</view>
+					</view>
+				</view>
+				<view v-else>
+					<view class="filter-content-title" v-if="item.detailTitle && item.detailTitle.length">
+						<text>{{item.detailTitle}}</text>
+					</view>
+					<scroll-view scroll-y class="filter-content-detail">
+						<text v-for="(detailItem,idx) in selectDetailList" :key="idx" class='filter-content-detail-item-default' :style="{'background-color':detailItem.isSelected?themeColor:'#FFFFFF','color':detailItem.isSelected?'#FFFFFF':'#666666'}"
+						 @tap="itemTap(idx,selectDetailList,item.isMutiple,item.key)">
+							{{detailItem.title}}
+						</text>
+					</scroll-view>
+					<view class="filter-content-footer">
+						<view class="filter-content-footer-item" style="color: #777777; background-color: #FFFFFF;" @tap="resetClick(selectDetailList,item.key)">
+							<text>重置</text>
+						</view>
+						<view class="filter-content-footer-item" :style="{'color': '#FFFFFF', 'background-color': themeColor}" @tap="sureClick">
+							<text>确定</text>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				selectArr: [],
+				result: {},
+				menuIndex: 0,
+				selectDetailList: [],
+				independenceObj: {},
+				selectedKey: '',
+				cacheSelectedObj: {},
+				defaultSelectedTitleObj: {}
+			};
+		},
+		props: {
+			themeColor: {
+				type: String,
+				default () {
+					return '#D1372C'
+				}
+			},
+			menuList: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			independence: {
+				type: Boolean,
+				default: false
+			}
+		},
+		computed: {
+			selectedTitleObj() {
+				let obj = {}
+				for (let i = 0; i < this.menuList.length; i++) {
+					let item = this.menuList[i];
+					obj[item.key] = item.title;
+				}
+				return obj;
+			},
+			defaultSelectedObj() { // 保存初始状态
+				return this.getSelectedObj()
+			},
+			selectedObj: {
+				get() {
+					return this.getSelectedObj()
+				},
+				set(newObj) {
+					return newObj;
+				}
+
+			}
+		},
+		methods: {
+			getSelectedObj() {
+				let obj = {}
+				for (let i = 0; i < this.menuList.length; i++) {
+					let item = this.menuList[i];
+					if (!this.independence && item.defaultSelectedIndex != null && item.defaultSelectedIndex.toString().length > 0) { // 处理并列菜单默认值
+
+						if (item.isMutiple) {
+							obj[item.key] = [];
+							item.detailList[0].isSelected = false;
+							if (!Array.isArray(item.defaultSelectedIndex)) { // 如果默认值不是数组
+								item.defaultSelectedIndex = [item.defaultSelectedIndex];
+							}
+							for (let j = 0; j < item.defaultSelectedIndex.length; j++) { // 将默认选中的值放入selectedObj
+								item.detailList[item.defaultSelectedIndex[j]].isSelected = true;
+								obj[item.key].push(item.detailList[item.defaultSelectedIndex[j]].value)
+							}
+
+						} else {
+							obj[item.key] = item.detailList[item.defaultSelectedIndex].value;
+							this.selectedTitleObj[item.key] = item.detailList[item.defaultSelectedIndex].title;
+							this.defaultSelectedTitleObj[item.key] = item.detailList[item.defaultSelectedIndex].title;
+							item.detailList[0].isSelected = false;
+							item.detailList[item.defaultSelectedIndex].isSelected = true;
+						}
+					} else {
+						if (item.isMutiple) {
+							obj[item.key] = [];
+						} else {
+							obj[item.key] = '';
+						}
+					}
+				}
+				this.result = obj;
+				return obj;
+			},
+			// 重置所有选项,包括默认选项,并更新result
+			resetAllSelect(callback) {
+				let titles = [];
+				for (let i = 0; i < this.menuList.length; i++) {
+					this.resetSelected(this.menuList[i].detailList,this.menuList[i].key);
+					titles[this.menuList[i].key] = this.menuList[i].title;
+				}
+				let obj = {
+					'result': this.result,
+					'titles': titles,
+					'isReset': true
+				}
+				this.$emit("confirm", obj);
+				callback(this.result);
+			},
+			// 重置选项为设置的默认值,并更新result
+			resetSelectToDefault(callback) {
+				for (let i = 0; i < this.menuList.length; i++) {
+					this.selectDetailList = this.menuList[i].detailList;
+
+					if (this.menuList[i].defaultSelectedIndex) {
+						if (Array.isArray(this.menuList[i].defaultSelectedIndex)) { // 把所有默认的为false的点为true
+							for (let j = 0; j < this.menuList[i].defaultSelectedIndex.length; j++) {
+								if (this.selectDetailList[this.menuList[i].defaultSelectedIndex[j]].isSelected == false) {
+									this.itemTap(this.menuList[i].defaultSelectedIndex[j], this.selectDetailList, this.menuList[i].isMutiple, this
+										.menuList[i].key)
+								}
+							}
+						} else {
+							this.itemTap(this.menuList[i].defaultSelectedIndex, this.selectDetailList, this.menuList[i].isMutiple, this.menuList[
+								i].key)
+						}
+
+						// 获取非默认项的下标
+						let unDefaultSelectedIndexArr = this.getUnDefaultSelectedIndex(this.menuList[i])
+						// 把所有不是默认的为true的点为false
+						for (let j = 0; j < unDefaultSelectedIndexArr.length; j++) {
+							if (this.selectDetailList[unDefaultSelectedIndexArr[j]].isSelected == true) {
+								this.itemTap(unDefaultSelectedIndexArr[j], this.selectDetailList, this.menuList[i].isMutiple, this
+										.menuList[i].key)
+							}
+						}
+					}
+
+
+				}
+
+				this.selectedObj = this.defaultSelectedObj;
+				this.result = this.defaultSelectedObj;
+				let obj = {
+					'result': this.result,
+					'titles': this.defaultSelectedTitleObj,
+					'isReset': true
+				}
+				this.$emit("confirm", obj);
+				callback(this.result)
+			},
+			getUnDefaultSelectedIndex(menuListItem) { // 获取非默认项
+				let tempDefault = menuListItem.defaultSelectedIndex;
+				if (!Array.isArray(tempDefault)) {
+					tempDefault = [tempDefault];
+				}
+				// 获取所有项的下标 组成新的数组
+				let all = [];
+				for (let i = 0; i < menuListItem.detailList.length; i++) {
+					all.push(i)
+				}
+				// 将默认选中的数组与所有项的数组的不同值合并为一个新数组
+				var unDefaultSelectedIndex = tempDefault.filter(function(v) {
+					return !(all.indexOf(v) > -1)
+				}).concat(all.filter(function(v) {
+					return !(tempDefault.indexOf(v) > -1)
+				}));
+				return unDefaultSelectedIndex;
+			},
+			resetMenuList(val) {
+				this.menuList = val;
+				this.$emit('update:menuList', val)
+			},
+			menuTabClick(index) {
+				this.menuIndex = index;
+				this.selectDetailList = this.menuList[index].detailList;
+				this.selectedKey = this.menuList[index].key;
+				// 如果是独立菜单
+				if (this.independence && !this.menuList[index].isSort) {
+					if (JSON.stringify(this.independenceObj) == '{}') {
+						this.initIndependenceObj(index);
+					} else {
+						for (let key in this.independenceObj) {
+							if (key != this.selectedKey) {
+								this.initIndependenceObj(index);
+								this.resetSelected(this.menuList[index].detailList, this.selectedKey);
+							}
+						}
+					}
+
+				}
+				if (this.independence && this.menuList[index].isSort) {
+
+					this.independenceObj = {};
+
+
+				}
+				if (this.independence) {
+					let idx = this.menuList[index].defaultSelectedIndex;
+					if (idx != null && idx.toString().length > 0) { // 处理独立菜单默认值
+						if (this.menuList[index].isMutiple) {
+							for (let i = 0; i < idx.length; i++) {
+								if (this.menuList[index].detailList[idx[i]].isSelected == false) {
+									this.itemTap(idx[i], this.menuList[index].detailList, true, this.selectedKey);
+								}
+
+							}
+						} else {
+							if (this.menuList[index].detailList[idx].isSelected == false) {
+
+								this.itemTap(idx, this.menuList[index].detailList, false, this.selectedKey);
+
+							}
+						}
+
+					}
+				}
+
+
+				// #ifdef H5
+				this.selectedObj = this.selectedObj;
+				this.$forceUpdate();
+				// #endif
+			},
+			initIndependenceObj(index) {
+				this.independenceObj = {};
+				if (this.menuList[index].isMutiple) {
+					this.independenceObj[this.selectedKey] = [];
+				} else {
+					this.independenceObj[this.selectedKey] = '';
+				}
+			},
+			itemTap(index, list, isMutiple, key) {
+				if (isMutiple == true) {
+					list[index].isSelected = !list[index].isSelected;
+					if (index == 0) {
+						this.resetSelected(list, key)
+						if (!this.independence) {
+							this.selectedTitleObj[key] = list[index].title;
+						}
+					} else {
+						list[0].isSelected = false
+						if (list[index].isSelected) {
+							if (this.independence) {
+								this.independenceObj[this.selectedKey].push(list[index].value);
+							} else {
+								this.selectedObj[key].push(list[index].value);
+							}
+						} else {
+							list[index].isSelected = false;
+							if (this.independence) {
+								var idx = this.independenceObj[this.selectedKey].indexOf(list[index].value);
+								this.independenceObj[this.selectedKey].splice(idx, 1);
+							} else {
+								var idx = this.selectedObj[key].indexOf(list[index].value);
+								this.selectedObj[key].splice(idx, 1);
+							}
+
+						}
+						if (this.independence) {
+							this.result = this.independenceObj;
+						} else {
+							this.result = this.selectedObj;
+						}
+
+					}
+				} else {
+					if (index == 0) {
+						this.resetSelected(list, key)
+						if (!this.independence) {
+							this.selectedTitleObj[key] = list[index].title;
+						}
+					} else {
+						list[0].isSelected = false
+						if (this.independence) {
+							this.independenceObj[this.selectedKey] = list[index].value;
+							this.result = this.independenceObj;
+						} else {
+							this.selectedObj[key] = list[index].value;
+							this.result = this.selectedObj;
+							this.selectedTitleObj[key] = list[index].title;
+						}
+
+						for (let i = 0; i < list.length; i++) {
+							if (index == i) {
+								list[i].isSelected = true
+							} else {
+								list[i].isSelected = false
+							}
+						}
+					}
+				}
+				// #ifdef H5
+				this.$forceUpdate();
+				// #endif
+			},
+			resetSelected(list, key) {
+				if (typeof this.result[key] == 'object') {
+					this.result[key] = [];
+					this.selectedTitleObj[key] = list[0].title;
+				} else {
+					this.result[key] = '';
+					this.selectedTitleObj[key] = list[0].title;
+				}
+				for (let i = 0; i < list.length; i++) {
+					if (i == 0) {
+						list[i].isSelected = true;
+					} else {
+						list[i].isSelected = false;
+					}
+				}
+				// #ifdef H5
+				this.$forceUpdate();
+				// #endif
+			},
+			sortTap(index, list, key) {
+				if (this.independence) {
+					this.independenceObj[this.selectedKey] = list[index].value;
+					this.result = this.independenceObj;
+				} else {
+					this.selectedObj[key] = list[index].value;
+					this.result = this.selectedObj;
+					this.selectedTitleObj[key] = list[index].title;
+				}
+
+				for (let i = 0; i < list.length; i++) {
+					if (index == i) {
+						list[i].isSelected = true;
+					} else {
+						list[i].isSelected = false;
+					}
+				}
+				let obj = {
+					'result': this.result,
+					'titles': this.selectedTitleObj,
+					'isReset': false
+				}
+				this.$emit("confirm", obj);
+			},
+			sureClick() {
+				let obj = {
+					'result': this.result,
+					'titles': this.selectedTitleObj,
+					'isReset': false
+				}
+				this.$emit("confirm", obj);
+			},
+			resetClick(list, key) {
+				this.resetSelected(list, key)
+			}
+		}
+	}
+</script>
+
+<style>
+	.filter-content {
+		background-color: #F6F7F8;
+	}
+
+	.filter-content-title {
+		border-bottom: #EEEEEE 1px solid;
+		padding: 10px 15px;
+		font-size: 13px;
+		color: #999999;
+	}
+
+	.filter-content-detail {
+		padding: 5px 15px;
+		max-height: 250px;
+	}
+
+	.filter-content-detail-item-active {
+		background-color: #D1372C;
+		color: #FFFFFF;
+		padding: 5px 15px;
+		border-radius: 20px;
+		margin-right: 10px;
+		margin-top: 10px;
+		display: inline-block;
+		font-size: 14px;
+	}
+
+	.filter-content-detail-item-default {
+		background-color: #FFFFFF;
+		color: #666666;
+		padding: 5px 15px;
+		border-radius: 20px;
+		margin-right: 10px;
+		margin-top: 10px;
+		display: inline-block;
+		font-size: 14px;
+	}
+
+	.filter-content-footer {
+		display: flex;
+		justify-content: space-between;
+		width: 100%;
+		height: 45px;
+		margin-top: 10px;
+	}
+
+	.filter-content-footer-item {
+		width: 50%;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		font-size: 16px;
+	}
+
+	.filter-content-list {
+
+		padding: 5px 15px;
+	}
+
+	.filter-content-list-item-default {
+		color: #666666;
+		width: 100%;
+		padding: 10px 0px;
+	}
+
+	.filter-content-list-item-default text {
+		width: 90%;
+		font-size: 14px;
+		display: inline-block;
+	}
+
+	.filter-content-list-item-active {
+		color: #D1372C;
+		width: 100%;
+		padding: 10px 0px;
+	}
+
+	.filter-content-list-item-active text {
+		font-size: 14px;
+		width: 90%;
+		display: inline-block;
+	}
+
+	.filter-content-list-item-active:after {
+		content: '✓';
+	}
+</style>

Fichier diff supprimé car celui-ci est trop grand
+ 2 - 0
components/sl-filter/iconfont/iconfont.css


+ 122 - 0
components/sl-filter/popup-layer.vue

@@ -0,0 +1,122 @@
+<template>
+	<scroll-view scroll-y v-show="ifshow" @tap="ableClose" @touchmove.stop.prevent class="popup-layer">
+		<view ref="popRef" class="popup-content" @tap.stop="stopEvent" :style="_location">
+			<slot></slot>
+		</view>
+	</scroll-view>
+</template>
+
+<script>
+	export default {
+		name: 'popup-layer',
+		props: {
+			direction: {
+				type: String,
+				default: 'top', // 方向  top,bottom,left,right 
+			},
+			autoClose: {
+				type: Boolean,
+				default: true,
+			},
+			isTransNav: {
+				type: Boolean,
+				default: false
+			},
+			navHeight: {
+				type: Number,
+				default: 0
+			}
+		},
+		data() {
+			return {
+				ifshow: false, // 是否展示,
+				translateValue: -100, // 位移距离
+				timer: null,
+				iftoggle: false,
+			};
+		},
+		computed: {
+			_translate() {
+				if (this.isTransNav) {
+					const transformObj = {
+						'top': `transform:translateY(${-this.translateValue}%)`,
+						'bottom': `transform:translateY(calc(${this.translateValue}% + ${this.navHeight}px))`,
+						'left': `transform:translateX(${-this.translateValue}%)`,
+						'right': `transform:translateX(${this.translateValue}%)`
+					};
+					return transformObj[this.direction]
+				} else {
+					const transformObj = {
+						'top': `transform:translateY(${-this.translateValue}%)`,
+						'bottom': `transform:translateY(${this.translateValue}%)`,
+						'left': `transform:translateX(${-this.translateValue}%)`,
+						'right': `transform:translateX(${this.translateValue}%)`
+					};
+					return transformObj[this.direction]
+				}
+
+			},
+			_location() {
+				const positionValue = {
+					'top': 'bottom:0px;width:100%;',
+					'bottom': 'top:0px;width:100%;',
+					'left': 'right:0px;height:100%;',
+					'right': 'left:0px;height:100%;',
+				};
+				return positionValue[this.direction] + this._translate;
+			}
+		},
+		methods: {
+			show() {
+				let _this = this;
+				this.ifshow = true;
+				let _open = setTimeout(() => {
+					this.translateValue = 0;
+					_open = null;
+				}, 100)
+				let _toggle = setTimeout(() => {
+					this.iftoggle = true;
+					_toggle = null;
+				}, 300);
+			},
+			close() {
+				if (this.timer !== null || !this.iftoggle) {
+					return;
+				}
+				this.translateValue = -100 - this.navHeight;
+
+				this.timer = setTimeout(() => {
+					this.ifshow = false;
+					this.timer = null;
+					this.iftoggle = false;
+				}, 300);
+				this.$emit("close")
+			},
+			ableClose() {
+				if (this.autoClose) {
+					this.close();
+				}
+			},
+			stopEvent(event) {},
+		}
+	}
+</script>
+
+<style>
+	.popup-layer {
+		position: absolute;
+		z-index: 999999;
+		background: rgba(0, 0, 0, .3);
+		height: calc(100% - 50px);
+		width: 100%;
+		left: 0px;
+		overflow: hidden;
+	}
+
+	.popup-content {
+		position: absolute;
+		z-index: 1000000;
+		background: #FFFFFF;
+		transition: all .3s ease;
+	}
+</style>

+ 302 - 0
components/sl-filter/sl-filter.vue

@@ -0,0 +1,302 @@
+<template>
+	<view class="content">
+		<view :style="{height: tabHeight + 1 +'px'}">
+			<view :class="topFixed?'select-tab-fixed-top':'select-tab'" :style="{height: tabHeight+'px'}">
+				<view class="select-tab-item" :style="{width: itemWidth}" v-for="(item,index) in titleList" :key="index" @tap="showMenuClick(index)">
+					<text :style="{color:color}">{{item.title}}</text>
+					<text class="arrows sl-font" :class="statusList[index].isActive?up:down"></text>
+				</view>
+			</view>
+		</view>
+		<popup-layer ref="popupRef" :direction="'bottom'" @close="close" :isTransNav="isTransNav" :navHeight="navHeight"
+		 :tabHeight="tabHeight">
+			<sl-filter-view :ref="'slFilterView'" :independence="independence" :themeColor="themeColor" :menuList.sync="menuListTemp"
+			 ref="slFilterView" @confirm="filterResult"></sl-filter-view>
+		</popup-layer>
+	</view>
+
+</template>
+
+<script>
+	import popupLayer from '@/components/sl-filter/popup-layer.vue';
+	import slFilterView from '@/components/sl-filter/filter-view.vue';
+	export default {
+		components: {
+			popupLayer,
+			slFilterView
+		},
+		props: {
+			menuList: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			themeColor: {
+				type: String,
+				default () {
+					return '#000000'
+				}
+			},
+			color: {
+				type: String,
+				default () {
+					return '#666666'
+				}
+			},
+			independence: {
+				type: Boolean,
+				default: false
+			},
+			isTransNav: {
+				type: Boolean,
+				default: false
+			},
+			navHeight: {
+				type: Number,
+				default: 0
+			},
+			topFixed: {
+				type: Boolean,
+				default: false
+			}
+		},
+
+		computed: {
+			itemWidth() {
+				return 'calc(100%/2)'
+			},
+			menuListTemp: {
+				get() {
+					return this.getMenuListTemp();
+				},
+				set(newObj) {
+					return newObj;
+				}
+			}
+		},
+		// #ifndef H5
+		onReady: function() {
+			let arr = [];
+			let titleArr = [];
+			let r = {};
+			for (let i = 0; i < this.menuList.length; i++) {
+				arr.push({
+					'isActive': false
+				});
+				// titleArr.push({
+				// 	'title': this.menuList[i].title,
+				// 	'key': this.menuList[i].key
+				// })
+				
+				r[this.menuList[i].key] = this.menuList[i].title;
+
+				if (this.menuList[i].reflexTitle && this.menuList[i].defaultSelectedIndex > -1) {
+					titleArr.push({
+						'title': this.menuList[i].detailList[this.menuList[i].defaultSelectedIndex].title,
+						'key': this.menuList[i].key
+					})
+				} else {
+					titleArr.push({
+						'title': this.menuList[i].title,
+						'key': this.menuList[i].key
+					})
+				}
+
+			}
+			this.statusList = arr;
+			this.titleList = titleArr;
+			this.tempTitleObj = r;
+		},
+		// #endif
+
+		// #ifdef H5
+		created: function() {
+			let arr = [];
+			let titleArr = [];
+			let r = {};
+			for (let i = 0; i < this.menuList.length; i++) {
+				arr.push({
+					'isActive': false
+				});
+				// titleArr.push({
+				// 	'title': this.menuList[i].title,
+				// 	'key': this.menuList[i].key
+				// });
+				r[this.menuList[i].key] = this.menuList[i].title;
+
+				if (this.menuList[i].reflexTitle && this.menuList[i].defaultSelectedIndex > -1) {
+					titleArr.push({
+						'title': this.menuList[i].detailList[this.menuList[i].defaultSelectedIndex].title,
+						'key': this.menuList[i].key
+					})
+				} else {
+					titleArr.push({
+						'title': this.menuList[i].title,
+						'key': this.menuList[i].key
+					})
+				}
+
+			}
+			this.statusList = arr;
+			this.titleList = titleArr;
+			this.tempTitleObj = r;
+		},
+		// #endif
+		data() {
+			return {
+				down: 'sl-down',
+				up: 'sl-up',
+				tabHeight: 50,
+				statusList: [],
+				selectedIndex: '',
+				titleList: [],
+				tempTitleObj: {}
+			};
+		},
+		methods: {
+			getMenuListTemp() {
+				let arr = this.menuList;
+				for (let i = 0; i < arr.length; i++) {
+					let item = arr[i];
+					for (let j = 0; j < item.detailList.length; j++) {
+						let d_item = item.detailList[j];
+						if (j == 0) {
+							d_item.isSelected = true
+						} else {
+							d_item.isSelected = false
+						}
+					}
+				}
+				return arr;
+			},
+			// 重置所有选项,包括默认选项,并更新result
+			resetAllSelect(callback) {
+				this.$refs.slFilterView.resetAllSelect(function(e){
+					callback(e);
+				});
+			},
+			// 重置选项为设置的默认值,并更新result
+			resetSelectToDefault(callback) {
+				this.$refs.slFilterView.resetSelectToDefault(function(e){
+					callback(e);
+				});
+			},
+			resetMenuList(val) {
+				this.menuList = val;
+				this.$emit('update:menuList', val)
+				this.$forceUpdate();
+				this.$refs.slFilterView.resetMenuList(val)
+			},
+			showMenuClick(index) {
+				this.selectedIndex = index;
+				if (this.statusList[index].isActive == true) {
+					this.$refs.popupRef.close();
+					this.statusList[index].isActive = false
+				} else {
+					this.menuTabClick(index);
+					this.$refs.popupRef.show()
+				}
+			},
+			menuTabClick(index) {
+				this.$refs.slFilterView.menuTabClick(index);
+				for (let i = 0; i < this.statusList.length; i++) {
+					if (index == i) {
+						this.statusList[i].isActive = true;
+					} else {
+						this.statusList[i].isActive = false;
+					}
+				}
+			},
+			filterResult(obj) {
+				let val = obj.result;
+				let titlesObj = obj.titles;
+				// 处理选项映射到菜单title
+				if (this.independence) {
+					if (!this.menuList[this.selectedIndex].isMutiple || this.menuList[this.selectedIndex].isSort) {
+						let tempTitle = '';
+						for (let i = 0; i < this.menuList[this.selectedIndex].detailList.length; i++) {
+							let item = this.menuList[this.selectedIndex].detailList[i];
+							if (item.value == val[this.menuList[this.selectedIndex].key]) {
+								tempTitle = item.title;
+							}
+						}
+						if (this.menuList[this.selectedIndex].reflexTitle) {
+							this.titleList[this.selectedIndex].title = tempTitle;
+						}
+					}
+				} else {
+					for (let key in titlesObj) {
+						if (!Array.isArray(titlesObj[key])) {
+							this.tempTitleObj[key] = titlesObj[key];
+						}
+
+					}
+					for (let key in this.tempTitleObj) {
+						for (let i = 0; i < this.titleList.length; i++) {
+							if (this.titleList[i].key == key) {
+								this.titleList[i].title = this.tempTitleObj[key];
+							}
+						}
+					}
+				}
+
+				this.$refs.popupRef.close()
+				if (obj.isReset) {
+					
+				} else{
+					this.$emit("result", val)
+				}
+				
+
+			},
+			close() {
+				for (let i = 0; i < this.statusList.length; i++) {
+					this.statusList[i].isActive = false;
+				}
+			}
+		}
+	}
+</script>
+
+<style>
+	@import 'iconfont/iconfont.css';
+
+	.select-tab {
+		border-bottom: #F7F7F7 1px solid;
+		background-color: #FFFFFF;
+		display: flex;
+		width: 100%;
+	}
+
+	.select-tab-fixed-top {
+		border-bottom: #F7F7F7 1px solid;
+		background-color: #FFFFFF;
+		display: flex;
+		width: 100%;
+		position: fixed;
+		/* #ifdef H5 */
+		top: 44px;
+		/* #endif */
+		/* #ifndef H5 */
+		top: 0;
+		/* #endif */
+	}
+
+	.arrows {
+		margin-left: 5px;
+	}
+
+	.select-tab .select-tab-item,
+	.select-tab-fixed-top .select-tab-item {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.select-tab .select-tab-item text,
+	.select-tab-fixed-top .select-tab-item text {
+		color: #666666;
+		font-size: 14px;
+	}
+</style>

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

@@ -0,0 +1,194 @@
+<template>
+	<view class="uni-load-more">
+		<view v-show="status === 'loading' && showIcon" class="uni-load-more__img">
+			<view class="load1">
+				<view :style="{background:color}" />
+				<view :style="{background:color}" />
+				<view :style="{background:color}" />
+				<view :style="{background:color}" />
+			</view>
+			<view class="load2">
+				<view :style="{background:color}" />
+				<view :style="{background:color}" />
+				<view :style="{background:color}" />
+				<view :style="{background:color}" />
+			</view>
+			<view class="load3">
+				<view :style="{background:color}" />
+				<view :style="{background:color}" />
+				<view :style="{background:color}" />
+				<view :style="{background:color}" />
+			</view>
+		</view>
+		<text :style="{color:color}" class="uni-load-more__text">{{ status === 'more' ? contentText.contentdown : (status === 'loading' ? contentText.contentrefresh : contentText.contentnomore) }}</text>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'UniLoadMore',
+		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: 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: .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: .13s
+	}
+
+	.load3 view:nth-child(1) {
+		animation-delay: .26s
+	}
+
+	.load1 view:nth-child(2) {
+		animation-delay: .39s
+	}
+
+	.load2 view:nth-child(2) {
+		animation-delay: .52s
+	}
+
+	.load3 view:nth-child(2) {
+		animation-delay: .65s
+	}
+
+	.load1 view:nth-child(3) {
+		animation-delay: .78s
+	}
+
+	.load2 view:nth-child(3) {
+		animation-delay: .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: .2
+		}
+	}
+</style>

+ 58 - 0
components/wxcontact/wxcontact.vue

@@ -0,0 +1,58 @@
+<template name="wxContact">
+	<view>
+		<!-- #ifdef MP-WEIXIN -->
+		<button class="cu-btn cuIcon bg-red lg shadow echo-wxcontact"  @tap="showConcatModel">
+			<text class="cuIcon-servicefill"></text>
+		</button>
+		<view class="cu-modal" :class="{show:concatModel}" @tap="hideConcatModel">
+		  <view class="cu-dialog" @tap.stop>
+			<view class="cu-card">
+				<view class="cu-item">
+					<view class="text-xl padding">人工协助</view>
+					<image :show-menu-by-longpress="true" style="width: 80%;display: block;margin: 0 auto;" :src="$getImageUrl('static/images/applet/qrcode_contact.png')"></image>
+					<view class="text-xl padding">长按图片添加好友</view>
+				</view>
+			</view>
+			<view class="padding flex flex-direction">
+				<button class="cu-btn bg-red lg" @tap="phone()">
+					拔打客服电话
+				</button>
+			</view>
+			<view class="padding flex flex-direction">
+				<button class="cu-btn bg-red lg" open-type="contact">
+					在线客服
+				</button>
+			</view>
+		  </view>
+		</view>
+	</view>
+	<!-- #endif -->
+</template>
+
+<script>
+	export default {
+		name: 'wxContact',
+		data() {
+			return {
+				concatModel: false
+			};
+		},
+		methods:{
+			showConcatModel() {
+				this.concatModel = true;
+			},
+			hideConcatModel() {
+				this.concatModel = false;
+			},
+			phone() {
+				uni.makePhoneCall({
+				   phoneNumber: '19959780161'
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	.echo-wxcontact{ position: fixed; left: 0rpx; bottom: 180rpx; border-radius: 0rpx 50% 50% 0rpx !important; }
+</style>

BIN
components/xinyi-skeleton/.DS_Store


+ 194 - 0
components/xinyi-skeleton/skeleton.vue

@@ -0,0 +1,194 @@
+<template>
+	<view>
+		<view class="lx-skeleton" v-show="loading" :class="[avatarClass,animationClass]">
+			<view class="avatar-class" :style="{width:avatarSize,height:avatarSize}" :class="[avatarShapeClass,bannerClass]"></view>
+			<view class="row" :style="{width:rowWidth}">
+				<view v-if="title" class="row-class lx-skeleton_title"></view>
+				<view v-for="(item,index) in row" :key="item" class="row-class"></view>
+			</view>
+		</view>
+		<slot v-if="!loading"></slot>
+	</view>
+</template>
+<script>
+	/**
+	 * skeleton 骨架屏
+	 * @description 用于加载数据时占位图显示,跟Vant-UI用法相似,但比Vant-UI更灵活
+	 * @property {Boolean} loading 是否显示骨架屏,默认为true
+	 * @property {Number | String} row 段落行数,默认为3
+	 * @property {Boolean | Number} rowWidth 段落行宽度,默认为100%
+	 * @property {Boolean | String} title 是否显示标题,默认为false
+	 * @property {Boolean | String} banner 是否显示banner,默认为false
+	 * @property {Boolean | String} animate 是否开启动画,默认为false
+	 * @property {Boolean | String} avatar 头像位置
+	 * @property {String} avatarSize 头像大小
+	 * @property {String} avatarShape 头像形状,默认为circle
+	 * 
+	 * */
+	export default {
+		props: {
+			loading: {
+				type: Boolean,
+				default: true
+			},
+			row: {
+				type: Number | String,
+				default: 3
+			},
+			title: {
+				type: Boolean | Number,
+				default: false
+			},
+			avatar: {
+				type: String,
+				default: ''
+			},
+			animate: {
+				type: Boolean,
+				default: false
+			},
+			avatarSize: {
+				type: String,
+			},
+			rowWidth: {
+				type: String | Number,
+				default: '100%'
+			},
+			avatarShape: {
+				type: String,
+				default: 'circle'
+			},
+			banner: {
+				type: Boolean | String,
+				default: false
+			},
+			// avator-size:{
+			// 	type: String,
+			// 	defualt: '32px'
+			// }
+		},
+		computed: {
+			avatarClass() {
+				if (this.avatar == 'top') {
+					return ['lx-skeleton_avator__top']
+				} else if (this.avatar == 'left') {
+					return ['lx-skeleton_avator__left']
+				} else {
+					return ''
+				}
+			},
+			animationClass() {
+				return [this.animate ? 'lx-skeleton_animation' : '']
+			},
+			slotClass() {
+				return [!this.loading ? 'show' : 'hide']
+			},
+			avatarShapeClass() {
+				return [this.avatarShape == 'round' ? 'lx-skeleton_avator__round' : '']
+			},
+			bannerClass() {
+				return [this.banner ? 'lx-skeleton_banner' : '']
+			}
+		},
+		data() {
+			return {
+
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.lx-skeleton {
+		background-color: #fff;
+		padding: 12px;
+	}
+
+	.lx-skeleton_avator__left {
+		display: flex;
+		width: 100%;
+	}
+
+	.avatar-class {
+		
+	}
+
+	.lx-skeleton_avator__left .avatar-class,
+	.lx-skeleton_avator__top .avatar-class {
+		background-color: #f2f3f5;
+		border-radius: 50%;
+		width: 32px;
+		height: 32px;
+	}
+
+	.lx-skeleton_avator__left .avatar-class.lx-skeleton_avator__round,
+	.lx-skeleton_avator__top .avatar-class.lx-skeleton_avator__round {
+		border-radius: 0;
+		width: 32px;
+		height: 32px;
+	}
+
+	.lx-skeleton_avator__left .avatar-class {
+		margin-right: 16px;
+	}
+
+	.lx-skeleton_avator__top .avatar-class {
+		margin: 0 auto 12px auto;
+
+	}
+
+	.row-class {
+		width: 100%;
+		height: 16px;
+		background-color: #f2f3f5;
+	}
+
+	.row-class:not(:first-child) {
+		margin-top: 12px;
+	}
+
+	.row {
+		flex: 1;
+	}
+
+	.lx-skeleton_avator__left .row {
+		width: calc(100% - 48px);
+	}
+
+	.row-class:nth-last-child(1) {
+		width: 60%;
+	}
+
+	.lx-skeleton_animation .row-class {
+		animation-duration: 1.5s;
+		animation-name: blink;
+		animation-timing-function: ease-in-out;
+		animation-iteration-count: infinite;
+	}
+
+	@keyframes blink {
+		50% {
+			opacity: 0.6;
+		}
+	}
+
+	.lx-skeleton_title {
+		width: 40%;
+	}
+
+	.show {
+		display: block;
+	}
+
+	.hide {
+		display: none;
+	}
+
+	.lx-skeleton .lx-skeleton_banner {
+		width: 92%;
+		margin: 10px auto;
+		height: 64px;
+		border-radius: 0;
+		background-color: #f2f3f5;
+	}
+</style>

+ 1078 - 0
components/yq-avatar/yq-avatar.vue

@@ -0,0 +1,1078 @@
+<template name="yq-avatar">
+	<view>
+		<image :src="imgSrc.imgSrc" @click="fSelect" :style="[ imgStyle ]" class="my-avatar"></image>
+		<canvas canvas-id="avatar-canvas" id="avatar-canvas" class="my-canvas" :style="{top: styleTop, height: cvsStyleHeight}" disable-scroll="false"></canvas>
+		<canvas canvas-id="oper-canvas" id="oper-canvas" class="oper-canvas" :style="{top: styleTop, height: cvsStyleHeight}" disable-scroll="false" @touchstart="fStart" @touchmove="fMove" @touchend="fEnd"></canvas>
+		<canvas canvas-id="prv-canvas" id="prv-canvas" class="prv-canvas" disable-scroll="false" @touchstart="fHideImg"	:style="{ height: cvsStyleHeight, top: prvTop }"></canvas>
+		<view class="oper-wrapper" :style="{display: styleDisplay}">
+			<view class="oper">
+				<view class="btn-wrapper" v-if="showOper">
+					<view @click="fSelect"  hover-class="hover" :style="{width: btnWidth}"><text>重选</text></view>
+					<view @click="fClose"  hover-class="hover" :style="{width: btnWidth}"><text>关闭</text></view>
+					<view @click="fRotate"  hover-class="hover" :style="{width: btnWidth, display: btnDsp}"><text>旋转</text></view>
+					<view @click="fPreview" hover-class="hover" :style="{width: btnWidth}"><text>预览</text></view>
+					<view @click="fUpload"  hover-class="hover" :style="{width: btnWidth}"><text>上传</text></view>
+				</view>
+				<view class="clr-wrapper" v-else>
+					<slider class="my-slider" @change="fColorChange"
+					block-size="25" value="0" min="-100" max="100" activeColor="red" backgroundColor="green" block-color="grey" show-value></slider>
+					<view @click="fPrvUpload"  hover-class="hover" :style="{width: btnWidth}"><text>上传</text></view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+	
+<script>
+	const tabHeight = 50;
+	export default {
+		name: "yq-avatar",
+		data() {
+			return {
+				cvsStyleHeight: '0px',
+				styleDisplay: 'none',
+				styleTop: '-10000px',
+				prvTop: '-10000px',
+				imgStyle: {},
+				selStyle: {},
+				showOper: true,
+				imgSrc: {
+					imgSrc: ''
+				},
+				btnWidth: '19%',
+				btnDsp: 'flex',
+			};
+		},
+		watch: {
+			avatarSrc() {
+				this.imgSrc.imgSrc = this.avatarSrc;
+			}
+		},
+		props:{
+			avatarSrc: '',
+			avatarStyle: '',
+			selWidth: '',
+			selHeight: '',
+			expWidth: '',
+			expHeight: '',
+			minScale: '',
+			maxScale: '',
+			canScale: '',
+			canRotate: '',
+			lockWidth: '',
+			lockHeight: '',
+			stretch: '',
+			lock: '',
+			noTab: '',
+			inner: '',
+			quality: '',
+			index: '',
+		},
+		created() {
+			this.ctxCanvas = uni.createCanvasContext('avatar-canvas', this);
+			this.ctxCanvasOper = uni.createCanvasContext('oper-canvas', this);
+			this.ctxCanvasPrv = uni.createCanvasContext('prv-canvas', this);
+			this.qlty = parseInt(this.quality) || 0.9;
+			this.imgSrc.imgSrc = this.avatarSrc;
+			this.letRotate = (this.canRotate === 'false' || this.inner === 'true') ? 0 : 1;
+			this.letScale = this.canScale === 'false' ? 0 : 1;
+			this.isin = this.inner === 'true' ? 1 : 0;
+			this.indx = this.index || undefined;
+			this.mnScale = this.minScale || 0.3;
+			this.mxScale = this.maxScale || 4;
+			this.noBar = this.noTab === 'true' ? 1 : 0;
+			this.stc = this.stretch;
+			this.lck = this.lock;
+			if(this.isin) {
+				this.btnWidth = '24%';
+				this.btnDsp = 'none';
+			} else {
+				this.btnWidth = '19%';
+				this.btnDsp = 'flex';
+			}
+			
+			if(this.noBar) {
+				this.moreHeight = 0;
+				this.fWindowResize();
+			} else {
+				uni.showTabBar({
+					complete:(res) => {
+						this.moreHeight = (res.errMsg === 'showTabBar:ok') ? 50 : 0;
+						this.fWindowResize();
+					}
+				});
+			}
+		},
+		methods: {
+			fWindowResize() {
+				let sysInfo = uni.getSystemInfoSync();
+				this.platform = sysInfo.platform;
+				this.pixelRatio = sysInfo.pixelRatio;
+				this.windowWidth = sysInfo.windowWidth;
+				// #ifdef H5
+				this.drawTop = sysInfo.windowTop;
+				this.windowHeight = sysInfo.windowHeight + sysInfo.windowBottom;
+				this.cvsStyleHeight = this.windowHeight - tabHeight + 'px';
+				// #endif
+				// #ifdef APP-PLUS
+				if(this.platform === 'android') {
+					this.windowHeight = sysInfo.screenHeight + sysInfo.statusBarHeight;
+					this.cvsStyleHeight = this.windowHeight - tabHeight + 'px';
+				} else {
+					this.windowHeight = sysInfo.windowHeight + this.moreHeight;
+					this.cvsStyleHeight = this.windowHeight - tabHeight + 6 + 'px';
+				}
+				// #endif
+				// #ifdef MP
+				this.windowHeight = sysInfo.windowHeight + this.moreHeight;
+				this.cvsStyleHeight = this.windowHeight - tabHeight - 2 + 'px';
+				// #endif
+				this.pxRatio = this.windowWidth/750;
+				
+				let style = this.avatarStyle;
+				if(style && style !== true && (style=style.trim()) ) {
+					style = style.split(';');
+					let obj = {};
+					for( let v of style ) {
+						if(!v) continue;
+						v = v.trim().split(':');
+						if(v[1].indexOf('upx') >= 0) {
+							let arr = v[1].trim().split(' ');
+							for( let k in arr ) {
+								if(!arr[k]) continue;
+								if(arr[k].indexOf('upx') >= 0) {
+									arr[k] = parseFloat(arr[k]) * this.pxRatio + 'px';
+								}
+							}
+							v[1] = arr.join(' ');
+						}
+						obj[v[0].trim()] = v[1].trim();
+					}
+					this.imgStyle = obj;
+				}
+				
+				this.expWidth && (this.exportWidth = this.expWidth.indexOf('upx') >= 0 ? parseInt(this.expWidth)*this.pxRatio : parseInt(this.expWidth));
+				this.expHeight && (this.exportHeight = this.expHeight.indexOf('upx') >= 0 ? parseInt(this.expHeight)*this.pxRatio : parseInt(this.expHeight));
+				
+				if(this.styleDisplay === 'flex') {
+					this.fDrawInit(true);
+				}
+				this.fHideImg();
+			},
+			fSelect() {
+				if(this.fSelecting) return;
+				this.fSelecting = true;
+				setTimeout(()=>{ this.fSelecting = false; }, 500);
+				
+				uni.chooseImage({
+					count: 1,
+					sizeType: ['original', 'compressed'],
+					sourceType: ['album', 'camera'],
+					success: (r)=>{
+						uni.showLoading({ mask: true });
+						let path = this.imgPath = r.tempFilePaths[0];
+						uni.getImageInfo({
+							src: path,
+							success: r => {
+								this.imgWidth = r.width;
+								this.imgHeight = r.height;
+								this.path = path;
+								if( !this.hasSel ) {
+									let style = this.selStyle || {};
+									if( this.selWidth && this.selHeight ) {
+										let selWidth  = this.selWidth.indexOf('upx')  >= 0 ? parseInt(this.selWidth)  * this.pxRatio: parseInt(this.selWidth),
+											selHeight = this.selHeight.indexOf('upx') >= 0 ? parseInt(this.selHeight) * this.pxRatio: parseInt(this.selHeight);
+										style.width = selWidth + 'px';
+										style.height = selHeight + 'px';
+										style.top = (this.windowHeight - selHeight - tabHeight)/2 + 'px';
+										style.left = (this.windowWidth - selWidth)/2 + 'px';
+									} else {
+										uni.showModal({
+											title: '裁剪框的宽或高没有设置',
+											showCancel: false
+										})
+										return;
+									}
+									this.selStyle = style;
+								}
+								
+								if(	this.noBar ) {
+									this.fDrawInit(true);
+								} else {
+									uni.hideTabBar({
+										complete: () => {
+											this.fDrawInit(true);
+										}
+									});
+								}
+							},
+							fail: ()=>{
+								uni.showToast({
+									title: "error3",
+									duration: 2000,
+								})
+							},
+							complete() {
+								uni.hideLoading();
+							}
+						});
+					}
+				})
+			},
+			fUpload() {
+				if(this.fUploading)	return;
+				this.fUploading = true;
+				setTimeout(()=>{ this.fUploading = false; }, 1000)
+				
+				let style = this.selStyle,
+					x = parseInt(style.left),
+					y = parseInt(style.top),
+					width = parseInt(style.width),
+					height = parseInt(style.height),
+					expWidth = this.exportWidth || width,
+					expHeight = this.exportHeight || height;
+					
+				// #ifdef H5
+				x *= this.pixelRatio;
+				y *= this.pixelRatio;
+				expWidth = width;
+				expHeight = height;
+				// #endif
+					
+				uni.showLoading({ mask: true });
+				this.styleDisplay = 'none';
+				this.styleTop = '-10000px';
+				this.hasSel = false;
+				this.fHideImg();
+				uni.canvasToTempFilePath({
+					x: x,
+					y: y,
+					width: width,
+					height: height,
+					destWidth: expWidth,
+					destHeight: expHeight,
+					canvasId: 'avatar-canvas',
+					fileType: 'png',
+					quality: this.qlty,
+					success: (r)=>{
+						r = r.tempFilePath;
+						// #ifdef H5
+						this.btop(r).then((r)=> {
+							if(this.exportWidth && this.exportHeight) {
+								let ctxCanvas = this.ctxCanvas;
+								expWidth = this.exportWidth,
+								expHeight = this.exportHeight;
+									
+								ctxCanvas.drawImage(r, 0, 0, expWidth, expHeight);
+								ctxCanvas.draw(false,()=>{
+									uni.canvasToTempFilePath({
+										x: 0,
+										y: 0,
+										width: expWidth,
+										height: expHeight,
+										destWidth: expWidth,
+										destHeight: expHeight,
+										canvasId: 'avatar-canvas',
+										fileType: 'png',
+										quality: this.qlty,
+										success: (r)=>{
+											r = r.tempFilePath;
+											this.btop(r).then((r)=> {
+												this.$emit("upload", {avatar: this.imgSrc, path: r, index: this.indx, data: this.rtn});
+											});
+										},
+										fail: ()=>{
+											uni.showToast({
+												title: "error0",
+												duration: 2000,
+											})
+										}
+									});
+								});
+							} else {
+								this.$emit("upload", {avatar: this.imgSrc, path: r, index: this.indx, data: this.rtn});
+							}
+						})
+						// #endif
+						// #ifndef H5
+						this.$emit("upload", {avatar: this.imgSrc, path: r, index: this.indx, data: this.rtn});
+						// #endif
+					},
+					fail: (res)=>{
+						uni.showToast({
+							title: "error1",
+							duration: 2000,
+						})
+					},
+					complete: () => {
+						uni.hideLoading();
+						this.noBar || uni.showTabBar();
+					}
+				}, this);
+			},
+			fPrvUpload() {
+				if(this.fPrvUploading)	return;
+				this.fPrvUploading = true;
+				setTimeout(()=>{ this.fPrvUploading = false; }, 1000)
+				
+				let style = this.selStyle,
+					destWidth = parseInt(style.width),
+					destHeight = parseInt(style.height),
+					prvX = this.prvX,
+					prvY = this.prvY,
+					prvWidth = this.prvWidth,
+					prvHeight = this.prvHeight,
+					expWidth = this.exportWidth || prvWidth,
+					expHeight = this.exportHeight || prvHeight;
+					
+				// #ifdef H5
+				prvX *= this.pixelRatio;
+				prvY *= this.pixelRatio;
+				expWidth = prvWidth;
+				expHeight = prvHeight;
+				// #endif
+					
+				uni.showLoading({ mask: true });
+				
+				this.styleDisplay = 'none';
+				this.styleTop = '-10000px';
+				this.hasSel = false;
+				this.fHideImg();
+				uni.canvasToTempFilePath({
+					x: prvX,
+					y: prvY,
+					width: prvWidth,
+					height: prvHeight,
+					destWidth: expWidth,
+					destHeight: expHeight,
+					canvasId: 'prv-canvas',
+					fileType: 'png',
+					quality: this.qlty,
+					success: (r)=>{
+						r = r.tempFilePath;
+						// #ifdef H5
+						this.btop(r).then((r)=> {
+							if(this.exportWidth && this.exportHeight) {
+								let ctxCanvas = this.ctxCanvas;
+								expWidth = this.exportWidth,
+								expHeight = this.exportHeight;
+									
+								ctxCanvas.drawImage(r, 0, 0, expWidth, expHeight);
+								ctxCanvas.draw(false, ()=>{
+									uni.canvasToTempFilePath({
+										x: 0,
+										y: 0,
+										width: expWidth,
+										height: expHeight,
+										destWidth: expWidth,
+										destHeight: expHeight,
+										canvasId: 'avatar-canvas',
+										fileType: 'png',
+										quality: this.qlty,
+										success: (r)=>{
+											r = r.tempFilePath;
+											this.btop(r).then((r)=> {
+												this.$emit("upload", {avatar: this.imgSrc, path: r, index: this.indx, data: this.rtn});
+											});
+										},
+										fail: ()=>{
+											uni.showToast({
+												title: "error0",
+												duration: 2000,
+											})
+										}
+									});
+								});
+							} else {
+								this.$emit("upload", {avatar: this.imgSrc, path: r, index: this.indx, data: this.rtn});
+							}
+						})
+						// #endif
+						// #ifndef H5
+						this.$emit("upload", {avatar: this.imgSrc, path: r, index: this.indx, data: this.rtn});
+						// #endif
+					},
+					fail: ()=>{
+						uni.showToast({
+							title: "error_prv",
+							duration: 2000,
+						})
+					},
+					complete: () => {
+						uni.hideLoading();
+						this.noBar || uni.showTabBar();
+					}
+				}, this);
+			},
+			fDrawInit(ini=false) {
+				let allWidth = this.windowWidth,
+					allHeight = this.windowHeight,
+					imgWidth = this.imgWidth,
+					imgHeight = this.imgHeight,
+					imgRadio = imgWidth/imgHeight,
+					useWidth = allWidth - 40,
+					useHeight = allHeight - tabHeight - 80,
+					pixelRatio = this.pixelRatio,
+					selWidth = parseInt(this.selStyle.width),
+					selHeight = parseInt(this.selStyle.height);
+				
+				this.fixWidth = 0;
+				this.fixHeight = 0;
+				this.lckWidth = 0;
+				this.lckHeight = 0;
+				switch(this.stc) {
+					case 'x': this.fixWidth = 1; break;
+					case 'y': this.fixHeight = 1; break;
+					case 'long': if(imgRadio > 1) this.fixWidth = 1; else this.fixHeight = 1; break;
+					case 'short': if(imgRadio > 1) this.fixHeight = 1; else this.fixWidth = 1; break;
+					case 'longSel': if(selWidth > selHeight) this.fixWidth = 1; else this.fixHeight = 1; break;
+					case 'shortSel': if(selWidth > selHeight) this.fixHeight = 1; else this.fixWidth = 1; break;
+				}
+				switch(this.lck) {
+					case 'x': this.lckWidth = 1; break;
+					case 'y': this.lckHeight = 1; break;
+					case 'long': if(imgRadio > 1) this.lckWidth = 1; else this.lckHeight = 1; break;
+					case 'short': if(imgRadio > 1) this.lckHeight = 1; else this.lckWidth = 1; break;
+					case 'longSel': if(selWidth > selHeight) this.lckWidth = 1; else this.lckHeight = 1; break;
+					case 'shortSel': if(selWidth > selHeight) this.lckHeight = 1; else this.lckWidth = 1; break;
+				}
+				if( this.fixWidth ) {
+					useWidth = selWidth;
+					useHeight = useWidth/imgRadio;
+				} else if( this.fixHeight ) {
+					useHeight = selHeight;
+					useWidth = useHeight*imgRadio;
+				} else if( imgRadio < 1 ) {
+					if( imgHeight < useHeight ) {
+						useWidth = imgWidth;
+						useHeight = imgHeight;
+					} else {
+						useHeight = useHeight;
+						useWidth = useHeight*imgRadio;
+					}
+				} else {
+					if( imgWidth < useWidth ) {
+						useWidth = imgWidth;
+						useHeight = imgHeight;
+					} else {
+						useWidth = useWidth;
+						useHeight = useWidth/imgRadio;
+					}
+				}
+				if( this.isin ) {
+					this.scaleWidth = 0;
+					this.scaleHeight = 0;
+					if(useWidth < selWidth) {
+						useWidth = selWidth;
+						useHeight = useWidth/imgRadio;
+						this.lckHeight = 0;
+					}
+					if(useHeight < selHeight) {
+						useHeight = selHeight;
+						useWidth = useHeight*imgRadio;
+						this.lckWidth = 0;
+					}
+				}
+				
+				this.scaleSize = 1;
+				this.rotateDeg = 0;
+				this.posWidth = (allWidth-useWidth)/2;
+				this.posHeight = (allHeight-useHeight-tabHeight)/2;
+				this.useWidth = useWidth;
+				this.useHeight = useHeight;
+				
+				let style = this.selStyle,
+					left = parseInt(style.left),
+					top = parseInt(style.top),
+					width = parseInt(style.width),
+					height = parseInt(style.height),
+					canvas = this.canvas,
+					canvasOper = this.canvasOper,
+					ctxCanvas = this.ctxCanvas,
+					ctxCanvasOper = this.ctxCanvasOper;
+					
+				ctxCanvasOper.setLineWidth(3);
+				ctxCanvasOper.setStrokeStyle('grey');
+				ctxCanvasOper.setGlobalAlpha(0.4);
+				ctxCanvasOper.setFillStyle('black');
+				ctxCanvasOper.strokeRect( left, top, width, height );
+				ctxCanvasOper.fillRect(0, 0, this.windowWidth, top);
+				ctxCanvasOper.fillRect(0, top, left, height);
+				ctxCanvasOper.fillRect(0, top+height, this.windowWidth, this.windowHeight-height-top-tabHeight);
+				ctxCanvasOper.fillRect(left+width, top,this.windowWidth-width-left, height);
+				ctxCanvasOper.setStrokeStyle('red');
+				ctxCanvasOper.moveTo(left+20, top);ctxCanvasOper.lineTo(left, top);ctxCanvasOper.lineTo(left, top+20);
+				ctxCanvasOper.moveTo(left+width-20, top);ctxCanvasOper.lineTo(left+width, top);ctxCanvasOper.lineTo(left+width, top+20);
+				ctxCanvasOper.moveTo(left+20, top+height);ctxCanvasOper.lineTo(left, top+height);ctxCanvasOper.lineTo(left, top+height-20);
+				ctxCanvasOper.moveTo(left+width-20, top+height);ctxCanvasOper.lineTo(left+width, top+height);ctxCanvasOper.lineTo(left+width, top+height-20);
+				ctxCanvasOper.stroke();
+				
+				ctxCanvasOper.draw(false, ()=>{
+					if( ini ) {
+						this.styleDisplay = 'flex';
+						// #ifdef H5
+						this.styleTop = this.drawTop + 'px';
+						// #endif
+						// #ifndef H5
+						this.styleTop = '0';
+						// #endif
+						ctxCanvas.setFillStyle('black');
+						this.fDrawImage();
+					}
+				});
+				
+				this.$emit("avtinit");
+			},
+			fDrawImage() {
+				let tm_now = Date.now();
+				if(tm_now - this.drawTm < 20) return;
+				this.drawTm = tm_now;
+				let ctxCanvas = this.ctxCanvas;
+				ctxCanvas.fillRect(0, 0, this.windowWidth, this.windowHeight-tabHeight);
+				ctxCanvas.translate(this.posWidth+this.useWidth/2, this.posHeight+this.useHeight/2);
+				ctxCanvas.scale(this.scaleSize, this.scaleSize);
+				ctxCanvas.rotate(this.rotateDeg * Math.PI/180);
+				ctxCanvas.drawImage(this.imgPath, -this.useWidth/2, -this.useHeight/2, this.useWidth, this.useHeight);
+				ctxCanvas.draw(false);
+			},
+			fHideImg() {
+				this.prvImg = '';
+				this.prvTop = '-10000px';
+				this.showOper = true;
+				this.prvImgData = null;
+				this.target = null;
+			},
+			fClose() {
+				this.styleDisplay = 'none';
+				this.styleTop = '-10000px';
+				this.hasSel = false;
+				this.fHideImg();
+				this.noBar || uni.showTabBar();
+			},
+			fPreview() {
+				if(this.fPreviewing) return;
+				this.fPreviewing = true;
+				setTimeout(()=>{ this.fPreviewing = false; }, 1000);
+				
+				let style = this.selStyle,
+					x = parseInt(style.left),
+					y = parseInt(style.top),
+					width = parseInt(style.width),
+					height = parseInt(style.height);
+					
+				// #ifdef H5
+				x *= this.pixelRatio;
+				y *= this.pixelRatio;
+				// #endif
+				
+				uni.showLoading({ mask: true });
+				
+				uni.canvasToTempFilePath({
+					x: x,
+					y: y,
+					width: width,
+					height: height,
+					canvasId: 'avatar-canvas',
+					fileType: 'png',
+					quality: this.qlty,
+					success: (r)=>{
+						this.prvImgTmp = r = r.tempFilePath;
+						
+						let ctxCanvasPrv = this.ctxCanvasPrv,
+							prvX = this.windowWidth,
+							prvY = parseInt(this.cvsStyleHeight),
+							prvWidth = parseInt(this.selStyle.width),
+							prvHeight = parseInt(this.selStyle.height),
+							useWidth = prvX - 40,
+							useHeight = prvY - 80,
+							radio = useWidth/prvWidth,
+							rHeight = prvHeight*radio;
+							if(rHeight < useHeight) {
+								prvWidth = useWidth;
+								prvHeight = rHeight;
+							} else {
+								radio = useHeight/prvHeight;
+								prvWidth *= radio;
+								prvHeight = useHeight;
+							}
+						ctxCanvasPrv.setFillStyle('black');
+						ctxCanvasPrv.fillRect(0, 0, prvX, prvY);
+						this.prvX = prvX = (prvX-prvWidth)/2;
+						this.prvY = prvY = (prvY-prvHeight)/2;
+						this.prvWidth = prvWidth;
+						this.prvHeight = prvHeight;
+						ctxCanvasPrv.drawImage(r, prvX, prvY, prvWidth, prvHeight);
+						ctxCanvasPrv.draw(false);
+						
+						// #ifdef H5
+						this.btop(r).then((r)=> {
+							this.showOper = false;
+							this.prvTop = this.drawTop + 'px';
+						})
+						// #endif
+						// #ifndef H5
+						if( this.platform != 'android' ) {
+							this.showOper = false;
+						}
+						this.prvTop = '0';
+						// #endif
+					},
+					fail: ()=>{
+						uni.showToast({
+							title: "error2",
+							duration: 2000,
+						})
+					}, 
+					complete: () => {
+						uni.hideLoading();
+					}
+				}, this);
+			},
+			fChooseImg(index=undefined, params=undefined, data=undefined) {
+				if(params) {
+					let selWidth = params.selWidth,
+						selHeight = params.selHeight,
+						expWidth = params.expWidth,
+						expHeight = params.expHeight,
+						quality = params.quality,
+						canRotate = params.canRotate,
+						canScale = params.canScale,
+						minScale = params.minScale,
+						maxScale = params.maxScale,
+						stretch = params.stretch,
+						inner = params.inner,
+						lock = params.lock;
+						
+					expWidth && (this.exportWidth = expWidth.indexOf('upx') >= 0 ? parseInt(expWidth)*this.pxRatio : parseInt(expWidth));
+					expHeight && (this.exportHeight = expHeight.indexOf('upx') >= 0 ? parseInt(expHeight)*this.pxRatio : parseInt(expHeight));
+					this.letRotate = canRotate === 'false' ? 0 : 1;
+					this.letScale = canScale === 'false' ? 0 : 1;
+					this.qlty = parseInt(quality) || 0.9;
+					this.mnScale = minScale || 0.3;
+					this.mxScale = maxScale || 4;
+					this.stc = stretch;
+					this.isin = inner === 'true' ? 1 : 0;
+					this.lck = lock;
+					if(this.isin) {
+						this.btnWidth = '24%';
+						this.btnDsp = 'none';
+					} else {
+						this.btnWidth = '19%';
+						this.btnDsp = 'flex';
+					}
+					
+					if( selWidth && selHeight) {
+						selWidth  = selWidth.indexOf('upx')  >= 0 ? parseInt(selWidth)  * this.pxRatio: parseInt(selWidth);
+						selHeight = selHeight.indexOf('upx') >= 0 ? parseInt(selHeight) * this.pxRatio: parseInt(selHeight);
+						this.selStyle.width = selWidth + 'px';
+						this.selStyle.height = selHeight + 'px';
+						this.selStyle.top = (this.windowHeight - selHeight - tabHeight)/2 + 'px';
+						this.selStyle.left = (this.windowWidth - selWidth)/2 + 'px';
+						this.hasSel = true;
+					}
+				}
+				this.rtn = data;
+				this.indx = index;
+				this.fSelect();
+			},
+			fRotate() {
+				// #ifdef APP-PLUS
+				if(this.platform === 'android') {
+					if(this.fRotateing) return;
+					this.fRotateing = true;
+					setTimeout(()=>{ this.fRotateing = false; }, 500);
+				}
+				// #endif
+				
+				// if(this.letRotate) {
+					this.rotateDeg += 90 - this.rotateDeg%90;
+					this.fDrawImage();
+				// }
+			},
+			fStart(e) {
+				let touches = e.touches,
+				touch0 = touches[0],
+				touch1 = touches[1];
+				
+				this.touch0 = touch0;
+				this.touch1 = touch1;
+				
+				if( touch1 ) {
+					let x = touch1.x - touch0.x,
+						y = touch1.y - touch0.y;
+					this.fgDistance = Math.sqrt(x * x + y * y);
+				}
+			},
+			fMove(e) {
+				let touches = e.touches,
+					touch0 = touches[0],
+					touch1 = touches[1];
+				
+				if( touch1 ) {
+					let x = touch1.x - touch0.x,
+						y = touch1.y - touch0.y,
+						fgDistance = Math.sqrt(x * x + y * y),
+						scaleSize = 0.005 * (fgDistance - this.fgDistance),
+						beScaleSize = this.scaleSize + scaleSize;
+						
+					do	{
+						if( !this.letScale ) break;
+						if( beScaleSize < this.mnScale) break;
+						if( beScaleSize > this.mxScale) break;
+						if(this.isin) {
+							let	imgWidth = this.useWidth*beScaleSize,
+								imgHeight = this.useHeight*beScaleSize,
+								rx0 = this.posWidth+this.useWidth/2,
+								ry0 = this.posHeight+this.useHeight/2,
+								l = rx0-imgWidth/2, t = ry0-imgHeight/2,
+								r = l+imgWidth,	    b = t+imgHeight,
+								left = parseInt(this.selStyle.left),
+								top = parseInt(this.selStyle.top),
+								width = parseInt(this.selStyle.width),
+								height = parseInt(this.selStyle.height);
+								if(left < l || left+width > r || top < t || top+height > b) break;
+								this.scaleWidth = (this.useWidth-imgWidth)/2;
+								this.scaleHeight = (this.useHeight-imgHeight)/2;
+						}
+						
+						this.scaleSize = beScaleSize;
+					} while(0);
+					this.fgDistance = fgDistance;
+			
+					if(touch1.x !== touch0.x && this.letRotate) {
+						x = (this.touch1.y - this.touch0.y)/(this.touch1.x - this.touch0.x);
+						y = (touch1.y - touch0.y)/(touch1.x - touch0.x);
+						this.rotateDeg += Math.atan((y-x)/(1+x*y)) * 180/Math.PI;
+						this.touch0 = touch0;
+						this.touch1 = touch1;
+					}
+					
+					this.fDrawImage();
+				} else if( this.touch0 ) {
+					let x = touch0.x - this.touch0.x,
+						y = touch0.y - this.touch0.y,
+						beX = this.posWidth + x,
+						beY = this.posHeight + y;
+					if(this.isin) {
+						let	imgWidth = this.useWidth*this.scaleSize,
+							imgHeight = this.useHeight*this.scaleSize,
+							rx0 = beX+this.useWidth/2,
+							ry0 = beY+this.useHeight/2,
+							l = rx0-imgWidth/2, t = ry0-imgHeight/2,
+							r = l+imgWidth,	    b = t+imgHeight,
+							left = parseInt(this.selStyle.left),
+							top = parseInt(this.selStyle.top),
+							width = parseInt(this.selStyle.width),
+							height = parseInt(this.selStyle.height);
+							if(!this.lckWidth && Math.abs(x) < 100) {
+								if(left >= l && left+width <= r) {
+									this.posWidth  = beX;
+								} else if(left < l){
+									this.posWidth = left - this.scaleWidth; 
+								} else if(left+width > r) {
+									this.posWidth = left-(imgWidth-width) - this.scaleWidth;
+								}
+							}
+							if(!this.lckHeight && Math.abs(y) < 100) {
+								if(top >= t && top+height <= b) {
+									this.posHeight  = beY;
+								} else if(top < t) {
+									this.posHeight = top - this.scaleHeight;
+								} else if(top+height > b) {
+									this.posHeight = top-(imgHeight-height) - this.scaleHeight;
+								}
+							}
+					} else {
+						if( Math.abs(x) < 100 && !this.lckWidth) this.posWidth  = beX;
+						if( Math.abs(y) < 100 && !this.lckHeight) this.posHeight = beY;
+					}
+					
+					this.touch0 = touch0;
+					this.fDrawImage();
+				}
+			},
+			fEnd(e) {
+				let touches = e.touches,
+					touch0 = touches && touches[0],
+					touch1 = touches && touches[1];
+				if(touch0) {
+					this.touch0 = touch0;
+				} else {
+					this.touch0 = null;
+					this.touch1 = null;
+				}
+			},
+			fGetImgData() {
+				return new Promise((resolve, reject)=>{
+					let prvX = this.prvX,
+						prvY = this.prvY,
+						prvWidth = this.prvWidth,
+						prvHeight = this.prvHeight;
+					// #ifdef APP-PLUS||H5
+					prvX *= this.pixelRatio;
+					prvY *= this.pixelRatio;
+					prvWidth *= this.pixelRatio;
+					prvHeight *= this.pixelRatio;
+					// #endif
+					uni.canvasGetImageData({
+						canvasId: 'prv-canvas',
+						x: prvX,
+						y: prvY,
+						width: prvWidth,
+						height: prvHeight,
+						success(res) {
+							resolve(res.data);
+						},
+						fail(err) {
+							reject(err);
+						}
+					}, this);
+				});
+			},
+			async fColorChange(e) {
+				let tm_now = Date.now();
+				if(tm_now - this.prvTm < 100) return;
+				this.prvTm = tm_now;
+				
+				uni.showLoading({ mask: true });
+				
+				if( !this.prvImgData ) {
+					if( !(this.prvImgData = await this.fGetImgData().catch((res)=>{
+						uni.showToast({
+							title: "error_read",
+							duration: 2000,
+						})
+					}))) return;
+					this.target = new Uint8ClampedArray(this.prvImgData.length);
+				}
+				
+				let data = this.prvImgData,
+					target = this.target,
+					i = e.detail.value,
+					r,g,b,a,h,s,l,d,p,q,t,min,max,hK,tR,tG,tB;
+					
+				if( i === 0 ) {
+					target = data;
+				} else {
+					i = (i+100)/200;
+					if( i < 0.005 ) i = 0;
+					if( i > 0.995 ) i = 1;
+					for( let n = data.length-1; n >= 0; n-=4 ) {
+						r = data[n-3] / 255;
+						g = data[n-2] / 255;
+						b = data[n-1] / 255;
+						max = Math.max(r,g,b);
+						min = Math.min(r,g,b);
+						d = max-min;
+						if ( max === min ){
+							h = 0 ;
+						}else if( max === r && g>=b ){
+							h = 60*( (g-b)/d ) ;
+						}else if( max === r && g<b ){
+							h = 60*( (g-b)/d ) + 360 ;
+						}else if( max === g ){
+							h = 60*( (b-r)/d ) + 120 ;
+						}else if( max === b ){
+							h = 60*( (r-g)/d ) + 240 ;
+						}
+						l = (max+min)/2 ;
+						if ( l===0 || max===min ){
+							s = 0 ;
+						}else if( 0<l && l<=0.5 ){
+							s = d/(2*l) ;
+						}else if( l>0.5 ){
+							s = d/(2-2*l) ;
+						}
+						data[n] && (a = data[n]);
+						
+						if ( i < 0.5 ){
+							s = s*i/0.5 ;
+						}else if ( i > 0.5 ){
+							s = 2*s + 2*i - (s*i/0.5) - 1 ;
+						}
+						
+						if ( s === 0 ){
+							r = g = b = Math.round( l*255 ) ;
+						}else{
+							if ( l<0.5 ){
+								q = l * ( 1 + s ) ;
+							}else if( l>=0.5 ){
+								q = l + s - ( l * s ) ;
+							}      
+							p = 2*l-q ;
+							hK = h/360 ;
+							tR = hK + 1/3 ;
+							tG = hK ;
+							tB = hK - 1/3 ;
+							let correctRGB = (t)=>{
+								if( t<0 ){
+									return t + 1.0 ;
+								}
+								if( t>1 ){
+									return t - 1.0 ;
+								}
+								return t ;
+							} ;
+							let createRGB = (t)=>{
+								if ( t<(1/6) ){
+									return p+((q-p)*6*t) ;
+								}else if( t>=(1/6) && t<(1/2) ){
+									return q ;
+								}else if( t>=(1/2) && t<(2/3) ){
+									return p+((q-p)*6*((2/3)-t)) ;
+								}
+								return p ;
+							} ;
+							r = tR = Math.round( createRGB( correctRGB( tR ) )*255 ) ;
+							g = tG = Math.round( createRGB( correctRGB( tG ) )*255 ) ;
+							b = tB = Math.round( createRGB( correctRGB( tB ) )*255 ) ;
+						}
+						a && ( target[n] = a ) ;  
+						target[n-3] = r;
+						target[n-2] = g;
+						target[n-1] = b;
+					}
+				}
+				let prvX = this.prvX,
+					prvY = this.prvY,
+					prvWidth = this.prvWidth,
+					prvHeight = this.prvHeight;
+					
+				this.ctxCanvasPrv.setFillStyle('black');
+				this.ctxCanvasPrv.fillRect(prvX, prvY, prvWidth, prvHeight);
+				this.ctxCanvasPrv.draw(true);
+				
+				// #ifdef APP-PLUS||H5
+				prvX *= this.pixelRatio;
+				prvY *= this.pixelRatio;
+				prvWidth *= this.pixelRatio;
+				prvHeight *= this.pixelRatio;
+				// #endif
+				uni.canvasPutImageData({
+					canvasId: 'prv-canvas',
+					x: prvX,
+					y: prvY,
+					width: prvWidth,
+					height: prvHeight,
+					data: target,
+					fail() {
+						uni.showToast({
+							title: 'error_put',
+							duration: 2000
+						})
+					},
+					complete() {
+						uni.hideLoading();
+					}
+				}, this);
+			},
+			btop(base64) {
+				return new Promise(function(resolve, reject) {
+					var arr = base64.split(','),
+						mime = arr[0].match(/:(.*?);/)[1],
+						bstr = atob(arr[1]),
+						n = bstr.length,
+						u8arr = new Uint8Array(n);
+					while (n--) {
+						u8arr[n] = bstr.charCodeAt(n);
+					}
+					return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([u8arr], { type: mime })));
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	.my-canvas{
+		display: flex;
+		position: fixed !important;
+		background: #000000;
+		left: 0;
+		z-index: 100000;
+		width: 100%;
+	}
+	.my-avatar {
+		width: 150upx;
+		height: 150upx;
+		border-radius: 100%;
+	}
+	.oper-canvas {
+		display: flex;
+		position: fixed !important;
+		left: 0;
+		z-index: 100001;
+		width: 100%;
+	}
+	.prv-canvas {
+		display: flex;
+		position: fixed !important;
+		background: #000000;
+		left: 0;
+		z-index: 200000;
+		width: 100%;
+	}
+	.oper-wrapper {
+		height: 50px;
+		position: fixed !important;
+		box-sizing: border-box;
+		border: 1px solid #F1F1F1;
+		background: #ffffff;
+		width: 100%;
+		left: 0;
+		bottom: 0;
+		z-index: 100009;
+		flex-direction: row;
+	}
+	.oper {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		padding: 10upx 20upx;
+		width: 100%;
+		height: 100%;
+		box-sizing: border-box;
+		align-self: center;
+	}
+	.btn-wrapper {
+		display: flex;
+		flex-direction: row;
+		/* #ifndef H5 */
+		flex-grow: 1;
+		/* #endif */
+		/* #ifdef H5 */
+		height: 50px;
+		/* #endif */
+		justify-content: space-between;
+	}
+	.btn-wrapper view {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-size: 16px;
+		color: #333;
+		border: 1px solid #f1f1f1;
+		border-radius: 6%;
+	}
+	.hover {
+		background: #f1f1f1;
+		border-radius: 6%;
+	}
+	.clr-wrapper {
+		display: flex;
+		flex-direction: row;
+		flex-grow: 1;
+	}
+	.clr-wrapper view {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-size: 16px;
+		color: #333;
+		border: 1px solid #f1f1f1;
+		border-radius: 6%;
+	}
+	.my-slider {
+		flex-grow: 1;
+	}
+</style>

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
libs/qqmap-wx-jssdk.min.js


+ 55 - 0
main.js

@@ -0,0 +1,55 @@
+import Vue from 'vue';
+import App from './App';
+
+import wxContact from './components/wxcontact/wxcontact.vue';
+
+
+Vue.config.productionTip = false;
+
+Vue.component('wxContact', wxContact);
+
+App.mpType = 'app';
+
+const app = new Vue({
+    ...App
+});
+app.$mount();
+
+// request 接口设置
+import {req} from '@/common/request/request.js';
+// let baseUrl = 'http://bd.odd_job.com/';
+let baseUrl = 'https://linggong.jinjianghc.com/';
+req.baseuUrl = baseUrl + 'mainapp.php/';
+
+req.defaultReq.type = "GET";
+req.defaultReq.baseData={      //设置公共参数,默认为空,设置此参数后每次发送请求都会带上此参数
+    access_token: uni.getStorageSync('access_token') || ""
+}
+req.defaultReq.beforeFinsh=(res)=>{
+	// console.log("res: " + JSON.stringify(res)); 
+	if (res.data.code == 0) {
+		return res.data.data;
+	} else {
+		return Promise.reject(res.data.msg);
+	}
+
+}
+Vue.prototype.$req = req;   //挂载到原型上
+
+// 判断登录
+Vue.prototype.checkLogin = function(backpage){
+    const userinfo = uni.getStorageSync('userinfo') || null;
+    if(userinfo == null){
+        uni.navigateTo({
+			url: "/pages/login/login?backpage=" + encodeURIComponent(backpage)
+		});
+        return false;
+    }
+    return userinfo;
+}
+
+Vue.prototype.$getImageUrl = function(url) {
+	return baseUrl + url;
+}
+
+

+ 116 - 0
manifest.json

@@ -0,0 +1,116 @@
+{
+    "name" : "晋江人力",
+    "appid" : "__UNI__FC4A047",
+    "description" : "晋江人力,专注于劳务工作互联网+移动信息化,为劳务中介工作的移动信息化建设提供一站式智慧解决方案。",
+    "versionName" : "1.0.0",
+    "versionCode" : 100,
+    "transformPx" : false,
+    "app-plus" : {
+        "usingComponents" : true,
+        /* 5+App特有相关 */
+        "modules" : {
+            "VideoPlayer" : {}
+        },
+        /* 模块配置 */
+        "distribute" : {
+            /* 应用发布信息 */
+            "android" : {
+                /* android打包配置 */
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ],
+                "autoSdkPermissions" : true
+            },
+            "ios" : {
+                "privacyDescription" : {
+                    "NSPhotoLibraryUsageDescription" : "此App会在上传头像图片和发布信息图片服务中访问您的相册",
+                    "NSCameraUsageDescription" : "此App会在上传头像图片和发布信息图片服务中启用您的摄像头"
+                }
+            },
+            /* ios打包配置 */
+            "sdkConfigs" : {
+                "ad" : {}
+            },
+            "icons" : {
+                "ios" : {
+                    "appstore" : "unpackage/res/icons/1024x1024.png",
+                    "ipad" : {
+                        "app" : "unpackage/res/icons/76x76.png",
+                        "app@2x" : "unpackage/res/icons/152x152.png",
+                        "notification" : "unpackage/res/icons/20x20.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "proapp@2x" : "unpackage/res/icons/167x167.png",
+                        "settings" : "unpackage/res/icons/29x29.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "spotlight" : "unpackage/res/icons/40x40.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
+                    },
+                    "iphone" : {
+                        "app@2x" : "unpackage/res/icons/120x120.png",
+                        "app@3x" : "unpackage/res/icons/180x180.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "notification@3x" : "unpackage/res/icons/60x60.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "settings@3x" : "unpackage/res/icons/87x87.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
+                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
+                    }
+                },
+                "android" : {
+                    "hdpi" : "unpackage/res/icons/72x72.png",
+                    "ldpi" : "unpackage/res/icons/48x48.png",
+                    "mdpi" : "unpackage/res/icons/48x48.png",
+                    "xhdpi" : "unpackage/res/icons/96x96.png",
+                    "xxhdpi" : "unpackage/res/icons/144x144.png",
+                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
+                }
+            }
+        }
+    },
+    /* SDK配置 */
+    "quickapp" : {},
+    /* 快应用特有相关 */
+    "mp-weixin" : {
+        "appid" : "wxad3278410c424601",
+        "setting" : {
+            "urlCheck" : false,
+            "postcss" : false,
+            "es6" : false,
+            "minified" : false
+        },
+        "usingComponents" : true,
+        "permission" : {
+            "scope.userLocation" : {
+                "desc" : "获取地理位置,推送附件门店信息。"
+            }
+        },
+        "plugins" : {
+            "ocr-plugin" : {
+                "version" : "3.1.3",
+                "provider" : "wx4418e3e031e551be"
+            }
+        },
+        "requiredPrivateInfos" : [ "chooseAddress", "getLocation" ]
+    }
+}

+ 686 - 0
pages.json

@@ -0,0 +1,686 @@
+{
+	"pages": [
+
+		{
+			"path": "pages/index/home",
+			"style": {
+				"navigationBarTitleText": "选择身份",
+				"navigationBarBackgroundColor": "#0081FF",
+				"navigationBarTextStyle": "white"
+			}
+		},
+
+		{
+			"path": "pages/index/index",
+			"style": {
+				"navigationBarTitleText": "晋江人力",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/mall/mall",
+			"style": {
+				"navigationBarTitleText": "积分商城",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/mall/detail",
+			"style": {
+				"navigationBarTitleText": "商品详情"
+			}
+		},
+		{
+			"path": "pages/mall/order",
+			"style": {
+				"navigationBarTitleText": "订单详情"
+			}
+		},
+		{
+			"path": "pages/mall/myorder",
+			"style": {
+				"navigationBarTitleText": "积分商城订单",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/ad/jinlinli",
+			"style": {
+				"navigationBarTitleText": "晋邻里"
+			}
+		},
+
+		// 职业顾问中心
+		{
+			"path": "pages/broker/center",
+			"style": {
+				"navigationBarTitleText": "工作台"
+			}
+		},
+		{
+			"path": "pages/broker/agent",
+			"style": {
+				"navigationBarTitleText": "门店列表"
+			}
+		},
+		{
+			"path": "pages/broker/brokerlist",
+			"style": {
+				"navigationBarTitleText": "经纪人列表",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/broker/broker",
+			"style": {
+				"navigationBarTitleText": "我的邀请码"
+			}
+		},
+		{
+			"path": "pages/broker/myuser",
+			"style": {
+				"navigationBarTitleText": "我的用户",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/broker/myworker",
+			"style": {
+				"navigationBarTitleText": "我的雇主",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/broker/setfollow",
+			"style": {
+				"navigationBarTitleText": "用户跟进"
+			}
+		},
+		{
+			"path": "pages/broker/myentry",
+			"style": {
+				"navigationBarTitleText": "我的报备",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/broker/setentry",
+			"style": {
+				"navigationBarTitleText": "报备信息"
+			}
+		},
+		{
+			"path": "pages/broker/myorder",
+			"style": {
+				"navigationBarTitleText": "订单信息",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/broker/getorder",
+			"style": {
+				"navigationBarTitleText": "订单详情"
+			}
+		},
+		{
+			"path": "pages/broker/income",
+			"style": {
+				"navigationBarTitleText": "订单信息",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/broker/brokerform",
+			"style": {
+				"navigationBarTitleText": "职业顾问注册申请"
+			}
+		},
+		{
+			"path": "pages/broker/setreport",
+			"style": {
+				"navigationBarTitleText": "订单报备"
+			}
+		},
+		
+		//驻场老师
+		{
+			"path": "pages/resident/resident",
+			"style": {
+				"navigationBarTitleText": "悬赏报备",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		
+		// 工作人员中心
+		{
+			"path": "pages/worker/worker",
+			"style": {
+				"navigationBarTitleText": "雇主中心"
+			}
+		},
+		{
+			"path": "pages/worker/mpaccount",
+			"style": {
+				"navigationBarTitleText": "嵌入公众号"
+			}
+		},
+		{
+			"path": "pages/worker/wshare",
+			"style": {
+				"navigationBarTitleText": "获客海报",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/worker/workerlist",
+			"style": {
+				"navigationBarTitleText": "招聘企业",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/worker/wreportlist",
+			"style": {
+				"navigationBarTitleText": "报备记录",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/worker/shop",
+			"style": {
+				"navigationBarTitleText": "招聘微店",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/worker/wcomlog",
+			"style": {
+				"navigationBarTitleText": "员工报名记录",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/worker/wcomuserdetail",
+			"style": {
+				"navigationBarTitleText": "报名人员详情",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/worker/wcomlist",
+			"style": {
+				"navigationBarTitleText": "我的招聘",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/worker/wcomform",
+			"style": {
+				"navigationBarTitleText": "发布招聘"
+			}
+		},
+		{
+			"path": "pages/worker/winfo",
+			"style": {
+				"navigationBarTitleText": "编辑雇主信息"
+			}
+		},
+		{
+			"path": "pages/worker/wupdate",
+			"style": {
+				"navigationBarTitleText": "升级为派遣公司"
+			}
+		},
+		{
+			"path": "pages/worker/workerform",
+			"style": {
+				"navigationBarTitleText": "工厂招聘"
+			}
+		},
+
+		// 订单
+		{
+			"path": "pages/demand/demand",
+			"style": {
+				"navigationBarTitleText": "派遣订单",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		}, {
+			"path": "pages/demand/detail",
+			"style": {
+				"navigationBarTitleText": "派遣订单详情"
+			}
+		}, {
+			"path": "pages/demand/snatch",
+			"style": {
+				"navigationBarTitleText": "我抢的订单",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		}, {
+			"path": "pages/demand/demandlog",
+			"style": {
+				"navigationBarTitleText": "订单报名",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+
+		// 供人
+		{
+			"path": "pages/supply/supply",
+			"style": {
+				"navigationBarTitleText": "共享用工",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		}, {
+			"path": "pages/supply/supplyform",
+			"style": {
+				"navigationBarTitleText": "发布供人"
+			}
+		}, {
+			"path": "pages/supply/detail",
+			"style": {
+				"navigationBarTitleText": "供人详情"
+			}
+		}, {
+			"path": "pages/supply/wsupplylist",
+			"style": {
+				"navigationBarTitleText": "我发布的供人",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+
+		{
+			"path": "pages/demand/wdemandlist",
+			"style": {
+				"navigationBarTitleText": "我的订单",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/demand/wdemandlog",
+			"style": {
+				"navigationBarTitleText": "我的订单",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/demand/demandform",
+			"style": {
+				"navigationBarTitleText": "发布订单"
+			}
+		},
+
+
+		// 个人中心
+		{
+			"path": "pages/my/my",
+			"style": {
+				"navigationBarTitleText": "个人中心"
+			}
+		},
+		{
+			"path": "pages/my/about",
+			"style": {
+				"navigationBarTitleText": "关于我们"
+			}
+		},
+		{
+			"path": "pages/my/feedback",
+			"style": {
+				"navigationBarTitleText": "意见反馈"
+			}
+		},
+		{
+			"path": "pages/my/system",
+			"style": {
+				"navigationBarTitleText": "系统设置"
+			}
+		},
+		{
+			"path": "pages/my/myinfo",
+			"style": {
+				"navigationBarTitleText": "基本信息"
+			}
+		},
+		{
+			"path": "pages/my/mycode",
+			"style": {
+				"navigationBarTitleText": "我的推广码"
+			}
+		},
+		{
+			"path": "pages/my/myintegral",
+			"style": {
+				"navigationBarTitleText": "我的积分",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/my/mybag",
+			"style": {
+				"navigationBarTitleText": "我的钱包",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/my/myteam",
+			"style": {
+				"navigationBarTitleText": "我的邀请",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/my/mybank",
+			"style": {
+				"navigationBarTitleText": "我的银行卡"
+			}
+		},
+		{
+			"path": "pages/my/myauth",
+			"style": {
+				"navigationBarTitleText": "实名认证"
+			}
+		},
+		{
+			"path": "pages/my/collect",
+			"style": {
+				"navigationBarTitleText": "收藏夹",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/my/mybroker",
+			"style": {
+				"navigationBarTitleText": "我的职业顾问"
+			}
+		},
+		{
+			"path": "pages/my/myentry",
+			"style": {
+				"navigationBarTitleText": "我的报备",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/my/task",
+			"style": {
+				"navigationBarTitleText": "任务中心"
+			}
+		},
+		{
+			"path": "pages/my/getmoney",
+			"style": {
+				"navigationBarTitleText": "提现"
+			}
+		},
+
+		// 代理门店
+		{
+			"path": "pages/agent/agent",
+			"style": {
+				"navigationBarTitleText": "代理门店",
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/agent/detail",
+			"style": {
+				"navigationBarTitleText": "代理门店"
+			}
+		},
+		{
+			"path": "pages/agent/agentform",
+			"style": {
+				"navigationBarTitleText": "代理门店申请"
+			}
+		},
+
+		// 企业招聘
+		{
+			"path": "pages/comjobs/comjobs",
+			"style": {
+				"navigationBarTitleText": "企业招聘",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		}, {
+			"path": "pages/comjobs/search",
+			"style": {
+				"navigationBarTitleText": "企业招聘",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		}, {
+			"path": "pages/comjobs/detail",
+			"style": {
+				"navigationBarTitleText": "企业招聘"
+			}
+		}, {
+			"path": "pages/comjobs/setreport",
+			"style": {
+				"navigationBarTitleText": "报名",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		}, {
+			"path": "pages/comjobs/log",
+			"style": {
+				"navigationBarTitleText": "招聘报名记录",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		}, {
+			"path": "pages/comjobs/star",
+			"style": {
+				"navigationBarTitleText": "我的收藏",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+
+		// 常见问题
+		{
+			"path": "pages/question/question",
+			"style": {
+				"navigationBarTitleText": "常见问题",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/question/detail",
+			"style": {
+				"navigationBarTitleText": "常见问题"
+			}
+		},
+
+		// 行业资讯
+		// {
+		// 	"path": "pages/article/article",
+		// 	"style": {
+		// 		"navigationBarTitleText": "行业资讯",
+		// 		"enablePullDownRefresh": true,
+		// 		"onReachBottomDistance": 50
+		// 	}
+		// },
+		// {
+		// 	"path": "pages/article/detail",
+		// 	"style": {
+		// 		"navigationBarTitleText": "行业资讯"
+		// 	}
+		// }, {
+		// 	"path": "pages/article/comment",
+		// 	"style": {
+		// 		"navigationBarTitleText": "行业资讯",
+		// 		"enablePullDownRefresh": true,
+		// 		"onReachBottomDistance": 50
+		// 	}
+		// },
+
+		// 通知公告
+		{
+			"path": "pages/notice/notice",
+			"style": {
+				"navigationBarTitleText": "通知公告",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},
+		{
+			"path": "pages/notice/detail",
+			"style": {
+				"navigationBarTitleText": "通知公告"
+			}
+		},
+
+		// 工具类
+		{
+			"path": "pages/tool/sinpage",
+			"style": {
+				"navigationBarTitleText": "晋江人力"
+			}
+		}, {
+			"path": "pages/tool/webview",
+			"style": {
+				"navigationBarTitleText": "晋江人力"
+			}
+		},
+
+		// 自定义表单
+		{
+			"path": "pages/form/form",
+			"style": {
+				"navigationBarTitleText": "自定义表单"
+			}
+		},
+
+		// 登录注册
+		{
+			"path": "pages/login/login",
+			"style": {
+				"navigationBarTitleText": "用户登录"
+			}
+		}, {
+			"path": "pages/login/agreement",
+			"style": {
+				"navigationBarTitleText": "用户协议"
+			}
+		}, {
+			"path": "pages/login/worker",
+			"style": {
+				"navigationBarTitleText": "注册雇主"
+			}
+		}, {
+			"path": "pages/login/sharepuser",
+			"style": {
+				"navigationBarTitleText": "微信邀请注册"
+			}
+		},
+
+		// 培训意愿
+		{
+			"path": "pages/train/joinlist",
+			"style": {
+				"navigationBarTitleText": "培训报名列表"
+			}
+		}, {
+			"path": "pages/train/list",
+			"style": {
+				"navigationBarTitleText": "培训列表"
+			}
+		},
+
+		// 简历
+		{
+			"path": "pages/resume/resume",
+			"style": {
+				"navigationBarTitleText": "简历列表"
+			}
+		}, {
+			"path": "pages/resume/detail",
+			"style": {
+				"navigationBarTitleText": "简历详情"
+			}
+		}, {
+			"path": "pages/resume/log",
+			"style": {
+				"navigationBarTitleText": "收到的邀请"
+			}
+		}, {
+			"path": "pages/worker/invite",
+			"style": {
+				"navigationBarTitleText": "我的邀请"
+			}
+		}
+	],
+	"condition": { //模式配置,仅开发期间生效
+		"current": 0, //当前激活的模式(list 的索引项)
+		"list": [{
+			"name": "swiper", //模式名称
+			"path": "pages/index/index", // 启动页面,必选   
+			"query": "" //启动参数,在页面的onLoad函数里面得到 。
+		}]
+	},
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "晋江人力",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"usingComponents": {
+			"ocr-navigator": "plugin://ocr-plugin/ocr-navigator"
+		}
+	}
+	// "tabBar": {
+	// 	"borderStyle": "black",
+	// 	"backgroundColor": "#FFFFFF",
+	// 	"color": "#999999",
+	// 	"selectedColor": "#0081ff",
+	// 	"list": [{
+	// 			"pagePath": "pages/index/index",
+	// 			"iconPath": "static/tabbar/index.png",
+	// 			"selectedIconPath": "static/tabbar/indexSelected.png",
+	// 			"text": "首页"
+	// 		},
+	// 		{
+	// 			"pagePath": "pages/comjobs/comjobs",
+	// 			"iconPath": "static/tabbar/agent.png",
+	// 			"selectedIconPath": "static/tabbar/agentSelected.png",
+	// 			"text": "招工"
+	// 		},
+	// 		{
+	// 			"pagePath": "pages/my/my",
+	// 			"iconPath": "static/tabbar/my.png",
+	// 			"selectedIconPath": "static/tabbar/mySelected.png",
+	// 			"text": "我的"
+	// 		}
+	// 	]
+	// }
+}

+ 21 - 0
pages/ad/jinlinli.vue

@@ -0,0 +1,21 @@
+<template>
+	<view>
+		<image class="qrcode" mode="widthFix" :src="$getImageUrl('static/images/applet/qrcode_jinlinli.jpg')"></image>
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {}
+		},
+		onLoad: function(option) {
+			
+		},
+	}
+</script>
+
+<style>
+	.qrcode{width:750rpx;}
+</style>

+ 99 - 0
pages/agent/agent.vue

@@ -0,0 +1,99 @@
+<template>
+	<view>
+		
+		<view class="bg-white echo-agent-list">
+			<block v-for="(item,index) in plist" :key="index">
+				<view class="flex solid-bottom padding justify-between echo-item" @tap="goDetail(item.id)">
+					<image class="radius echo-tilpic" mode="aspectFill" :src="item.tilpic"></image>
+					<view class="echo-content">
+						<view class="echo-title text-lg text-black text-bold text-cut">{{item.title}}</view>
+						<view class="echo-tags text-gray text-cut">
+							<text class="cuIcon-location padding-right-xs"></text> {{item.address}}
+						</view>
+						<view class="flex justify-between align-end text-gray">
+							<view class="echo-wagall">距离:{{item.juli}} Km</view>
+						</view>
+					</view>
+				</view>
+			</block>
+		</view>
+		
+		<view class="padding-tb-lg text-center text-gray">
+			线下服务店过多,仅显示附近{{psize}}个门店。
+		</view>
+		
+		<!-- <uni-load-more :status="pstatus"></uni-load-more> -->
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				pstatus: 'more',
+				psize: 5,
+				plist: [],
+				lat: 0.00,
+				lng: 0.00
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			uni.getLocation({
+				type: 'gcj02',
+				success: function(res) {
+					_this.lat = res.latitude;
+					_this.lng = res.longitude;
+					_this.getMore();
+				}
+			});
+		},
+		onPullDownRefresh: function() {
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "代理门店",
+				path: "/pages/agent/agent"
+		    }
+		},
+		methods: {
+			getMore: function() {
+				_this.$req.ajax({
+					path: "agent/listagent",
+					data: {
+						psize: _this.psize,
+						lat: _this.lat,
+						lng: _this.lng
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goDetail: function(agentid) {
+				uni.navigateTo({
+					url: '/pages/agent/detail?agentid=' + agentid
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+</style>

+ 146 - 0
pages/agent/agentform.vue

@@ -0,0 +1,146 @@
+<template>
+	<view>
+		
+		<image class="echo-agentformpic" mode="widthFix" :src="param.agentformpic"></image>
+		
+		<view class="padding-xl"></view>
+		<view class="cu-bar bg-white tabbar border shop foot">
+			<view class="btn-group">
+				<button class="cu-btn bg-red round shadow-blur" @tap="tabModal" style="width: 80%;">立即申请成为代理</button>
+			</view>
+		</view>
+		
+		<view class="cu-modal" :class="showform">
+			<view class="cu-dialog">
+				<view class="cu-bar bg-white justify-end">
+					<view class="content">申请成为代理</view>
+					<view class="action" @tap="tabModal">
+						<text class="cuIcon-close text-red"></text>
+					</view>
+				</view>
+				<view class="padding bg-white margin-top-xs echo-agentform">
+					<form>
+						<view class="cu-form-group">
+							<view class="title">姓名</view>
+							<input placeholder="请输入姓名" @input="bindInput" data-val="realname" :value="forminfo.realname"></input>
+						</view>
+						<view class="cu-form-group">
+							<view class="title">手机号</view>
+							<input placeholder="请输入手机号" @input="bindInput" data-val="mobile" :value="forminfo.mobile"></input>
+						</view>	
+						<view class="cu-form-group">
+							<view class="title">当前住址</view>
+							<input placeholder="请输入当前住址" @input="bindInput" data-val="address" :value="forminfo.address"></input>
+						</view>	
+						<view class="cu-form-group">
+							<view class="title">身份证号</view>
+							<input placeholder="请输入身份证号" @input="bindInput" data-val="idcard" :value="forminfo.idcard"></input>
+						</view>	
+						<view class="cu-form-group solids-bottom">
+							<view class="title">推荐人</view>
+							<input placeholder="请输入推荐人" @input="bindInput" data-val="recommender" :value="forminfo.recommender"></input>
+						</view>	
+						<view class="padding-lr padding-top flex flex-direction">
+							<button class="cu-btn bg-orange margin-tb-sm lg" @tap="regBroker">确认提交</button>
+						</view>
+					</form>
+				</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				showform: '',
+				param: {},
+				isRotate: false,
+				forminfo: {
+					realname: "",
+					mobile: "",
+					address: "",
+					idcard: "",
+					recommender: ""
+				}
+			};
+		},
+		onLoad: function(){ 
+			_this = this;
+			_this.$req.ajax({
+				path: "agent/pageform",
+				data: {}
+			}).then((data) => {
+				_this.param = data.param;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		methods: {
+			regBroker: function() {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "agent/regagent",
+					data: {
+						realname: _this.forminfo.realname,
+						mobile: _this.forminfo.mobile,
+						address: _this.forminfo.address,
+						idcard: _this.forminfo.idcard,
+						recommender: _this.forminfo.recommender
+					}
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: "注册申请提交成功,请耐心等待。",
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								_this.forminfo = {
+									realname: "",
+									mobile: "",
+									address: "",
+									idcard: "",
+									recommender: ""
+								};
+								_this.tabModal();
+							}
+						}
+					});
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			
+			bindInput: function(e) {
+				var dataval = e.currentTarget.dataset.val;
+				_this.forminfo[dataval] = e.detail.value;
+			},
+			tabModal: function() {
+				_this.showform = _this.showform=="show" ? "" : "show";
+			}
+		}
+	}
+</script>
+
+<style>
+	.echo-agentformpic{ width: 100%; display: block; }
+	.echo-agentform view.title{ text-align: left !important; width: 30%; }
+	.echo-agentform input{ text-align: left !important; width: 70%; }
+</style>
+

+ 142 - 0
pages/agent/detail.vue

@@ -0,0 +1,142 @@
+<template>
+	<view>
+		
+		<swiper class="screen-swiper square-dot" :indicator-dots="true" :circular="true"
+		 :autoplay="true" interval="5000" duration="500">
+			<swiper-item v-for="(item,index) in agent.picall" :key="index">
+				<image :src="item" mode="aspectFill"></image>
+			</swiper-item>
+		</swiper>
+		
+		<view class="bg-white padding text-xl text-black text-bold margin-bottom-sm">
+			{{agent.title}}
+		</view>
+		
+		<view class="cu-list menu margin-bottom-sm sm-border">
+			<view class="cu-item arrow">
+				<view class="content">
+					<text class="cuIcon-phone text-grey"></text>
+					<text class="text-grey">门店电话</text>
+				</view>
+				<view class="action" @tap="makePhone()">
+					<text class="text-grey">{{agent.telephone}}</text>
+				</view>
+			</view>
+			<view class="cu-item">
+				<view class="content">
+					<text class="cuIcon-similar text-grey"></text>
+					<text class="text-grey">所在市区</text>
+				</view>
+				<view class="action">
+					<text class="text-grey">{{agent.province}} {{agent.city}} {{agent.district}}</text>
+				</view>
+			</view>
+			<view class="cu-item arrow">
+				<view class="content">
+					<text class="cuIcon-location text-grey"></text>
+					<text class="text-grey">详细地址</text>
+				</view>
+				<view class="action basis-lg text-right text-cut" @tap="setAddress()">
+					<text class="text-grey">{{agent.address}}</text>
+				</view>
+			</view>
+		</view>
+		
+		<view class="cu-bar bg-white solids-bottom">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 门店介绍
+			</view>
+		</view>
+		<view class="echo-article-details bg-white margin-bottom-sm">
+			<u-parse :content="agent.details" noData="详情内容..." @navigate="navigate"></u-parse>
+		</view>
+	
+	</view>
+</template>
+
+<script>
+	import uParse from '@/components/gaoyia-parse/parse.vue';
+	var _this;
+	export default {
+		components: {
+			uParse
+		},
+		data() {
+			return {
+				userinfo: {},
+				agent: {}
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			var agentid = option.agentid || 0;
+			_this.userinfo = uni.getStorageSync('userinfo');
+			_this.$req.ajax({
+				path: "agent/getagent",
+				data: {
+					agentid: agentid
+				}
+			}).then((data) => {
+				_this.agent = data.agent;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: _this.agent.title,
+				path: "/pages/agent/detail?agentid="+_this.agent.id
+		    }
+		},
+		methods: {
+			setAddress: function() {
+				uni.openLocation({
+					latitude: parseFloat(_this.agent.latitude),
+					longitude: parseFloat(_this.agent.longitude),
+					name: _this.agent.agentname,
+					address: _this.agent.city + " " + _this.agent.district + " " + _this.agent.address,
+					success: function () {
+						console.log('success');
+					}
+				});
+			},
+			makePhone: function() {
+				uni.makePhoneCall({
+					phoneNumber: _this.agent.telephone
+				});
+			},
+			goPage: function(pageurl) {
+				uni.navigateTo({
+					url: pageurl,
+					fail: function(){
+						uni.switchTab({
+						    url: pageurl
+						});
+					}
+				});
+			},
+			goDetail: function(partjobid) {
+				uni.navigateTo({
+					url: '/pages/partjob/detail?partjobid=' + partjobid
+				});
+			},
+			navigate: function(href, e) {
+				// #ifdef H5
+				location.href = href;
+				// #endif
+				// #ifndef H5
+				uni.navigateTo({
+					url: '/pages/tool/webview?pagesrc=' + encodeURIComponent(href)
+				});
+				// #endif
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+</style>

+ 167 - 0
pages/article/article.vue

@@ -0,0 +1,167 @@
+<template>
+	<view>
+		
+		<scroll-view scroll-x class="bg-white nav text-center solid-bottom echo-fixed-top">
+			<view class="cu-item" :class="item.id==cateid?'text-blue cur':''" v-for="(item, index) in allcate" :key="item.id" @tap="tabSelect" :data-id="item.id">
+				{{item.title}}
+			</view>
+		</scroll-view>
+		<view class="echo-fixed-top-empty"></view>
+		
+		<block v-for="(item,index) in plist" :key="index">
+			<view class="cu-card article no-card solid-bottom">
+				<view class="cu-item shadow" @tap="goDetail(item.atype, item.id, item.tilurl)">
+					<view class="title"><view class="text-cut">{{item.title}}</view></view>
+					<view class="content">
+						<image :src="item.tilpic" mode="aspectFill"></image>
+						<view class="desc">
+							<view class="text-content">{{item.summary}}</view>
+							<view class="flex justify-between">
+								<view class="text-sm text-gray">{{item.createtime_text}}</view>
+								<view class="text-sm text-gray text-right" v-if="item.atype==1">
+									<text class="cuIcon-attentionfill margin-lr-xs"></text> {{item.volume}}
+									<text class="cuIcon-appreciatefill margin-lr-xs"></text> {{item.article_thumb_count}}
+									<text class="cuIcon-messagefill margin-lr-xs"></text> {{item.article_comment_count}}
+								</view>
+								<view class="text-sm text-gray text-right" v-else>
+									<text class="cuIcon-attentionfill margin-lr-xs"></text> {{item.volume}}
+									<text class="cuIcon-discoverfill margin-lr-xs"></text> 链接
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</block>
+
+		<uni-load-more :status="pstatus"></uni-load-more>
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				cateid: 0,
+				allcate: [],
+
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(option){
+			_this = this;
+			_this.cateid = option.cateid || 0;
+			_this.$req.ajax({
+				path: "article/allcate"
+			}).then((data) => {
+				_this.allcate = data.allcate;
+				_this.getMore();
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "文章资讯",
+				path: "/pages/article/article?cateid="+_this.cateid
+		    }
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			tabSelect: function(e) {
+				_this.cateid = e.currentTarget.dataset.id;
+				_this.pageRefresh();
+			},
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "article/listarticle",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						cateid: _this.cateid
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goDetail: function(atype, articleid, tilurl) {
+				if (atype==1){
+					uni.navigateTo({
+						url: '/pages/article/detail?articleid=' + articleid
+					});
+				}else{
+					_this.$req.ajax({
+						path: "article/getarticle",
+						data: {
+							articleid: articleid
+						}
+					}).then((data) => {
+						if (atype==2) {
+							uni.navigateTo({
+								url: tilurl
+							});
+						} else{
+							// #ifdef H5
+							location.href = tilurl;
+							// #endif
+							// #ifndef H5
+							uni.navigateTo({
+								url: '/pages/tool/webview?pagesrc=' + encodeURIComponent(tilurl)
+							});
+							// #endif
+						}
+					}).catch((err) => {
+						uni.showModal({
+							title: '信息提示',
+							content: err,
+							showCancel: false
+						});
+					});
+				}
+			}
+		}
+	}
+</script>
+
+<style>
+</style>

+ 212 - 0
pages/article/comment.vue

@@ -0,0 +1,212 @@
+<template>
+	<view>
+
+		<view class="cu-list menu-avatar comment solids-top">
+			<block v-for="(item,index) in plist" :key="item.id">
+				<view class="cu-item">
+					<view class="cu-avatar round" :style="'background-image:url('+item.user.avatar+');'"></view>
+					<view class="content">
+						<view class="padding-bottom-sm flex justify-between">
+							<view class="text-grey">{{item.user.nickname}}</view>
+							<view class="text-gray">
+								{{item.createtime}}
+								<text class="cuIcon-comment padding-left-sm" :data-puserid="item.userid" :data-nickname="item.user.nickname" @click="replyComment"></text>
+							</view>
+						</view>
+						<view class="text-content padding-bottom-xs">
+							<text v-if="item.puserid">回复 <text class="text-red">{{item.puser.nickname}}</text>:</text> 
+							{{item.details}}
+						</view>
+					</view>
+				</view>
+			</block>
+		</view>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		
+		<view class="cu-modal bottom-modal" :class="modalname=='commentModal'?'show':''">
+			<view class="cu-dialog" style="height: calc(100vh)">
+				<view class="cu-bar bg-white">
+					<view class="action text-grey" @tap="hideModal">取消</view>
+					<view class="action text-green" @click="sendComment">发表</view>
+				</view>
+				<view class="padding-xl text-left">
+					<textarea class="solid padding-sm" style="width: 100%;" v-show="modalname=='commentModal'?true:false" :focus="modalfocus" :fixed="true" :placeholder="placeholder" @input="bindInput" maxlength="140" :value="details"></textarea>
+				</view>
+			</view>
+		</view>
+		
+		
+		<view class="padding"></view>
+		<view class="padding"></view>
+		<view class="cu-bar input foot">
+			<input :placeholder="placeholder" @tap="showModal" disabled class="solid-bottom"></input>
+			<button class="cu-btn bg-blue shadow-blur" @click="sendComment">发表</button>
+		</view>
+		
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				isRotate: false,
+				userinfo: {},
+				
+				articleid: 0,
+				count: 0,
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: [],
+				
+				modalname: "",
+				modalfocus: false,
+				puserid: 0,
+				placeholder: "说点什么吧...",
+				details: ""
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.articleid = option.articleid || 0;
+			_this.modalname = option.modalname || "";
+			_this.userinfo = uni.getStorageSync('userinfo');
+			if (_this.articleid==0){
+				uni.showModal({
+					title: '信息提示',
+					content: '文章资讯不存在',
+					showCancel: false,
+					success: function(res) {
+						if (res.confirm) {
+							uni.navigateBack({
+								delta: 1
+							});
+						}
+					}
+				});
+			}else{
+				_this.getMore();
+			}
+			if (_this.modalname!=""){
+				_this.showModal();
+			}
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "文章资讯评论",
+				path: "/pages/article/comment?articleid="+_this.articleid
+		    }
+		},
+		onShow: function() {
+			_this.userinfo = uni.getStorageSync('userinfo');
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			showModal: function() {
+				_this.userinfo = _this.checkLogin("/pages/article/comment?articleid="+_this.articleid);
+				if (_this.userinfo===false){
+					_this.sendInitialize();
+					return false;
+				}
+				_this.modalname = "commentModal";
+				setTimeout(function (){
+					_this.modalfocus = true;
+				}, 500);
+			},
+			hideModal: function() {
+				_this.sendInitialize();
+			},
+			bindInput: function(e) {
+				_this.details = e.detail.value;
+			},
+			replyComment: function(e) {
+				_this.puserid = e.currentTarget.dataset.puserid;
+				_this.placeholder = "回复 "+e.currentTarget.dataset.nickname+":";
+				_this.showModal();
+			},
+			sendInitialize: function() {
+				_this.modalfocus = false;
+				_this.modalname = "";
+				_this.puserid = 0;
+				_this.placeholder = "说点什么吧...";
+				_this.details = "";
+			},
+			sendComment: function() {
+				_this.userinfo = _this.checkLogin("/pages/article/comment?articleid="+_this.articleid);
+				if (_this.userinfo===false){
+					return false;
+				}
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "article/sendcomment",
+					data: {
+						userid: _this.userinfo.id || 0,
+						articleid: _this.articleid,
+						puserid: _this.puserid, 
+						details: _this.details
+					}
+				}).then((data) => {
+					var comment = data.comment;
+					_this.plist = comment.concat(_this.plist);
+					_this.sendInitialize();
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "article/listcomment",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						articleid: _this.articleid, 
+						userid: _this.userinfo.id || 0
+					}
+				}).then((data) => {
+					_this.count = data.count;
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+</style>

+ 292 - 0
pages/article/detail.vue

@@ -0,0 +1,292 @@
+<template>
+	<view v-if="pageloading">
+
+		<view class="echo-article-title bg-white">
+			{{article.title}}
+		</view>
+		<view class="echo-article-meta bg-white">
+			<view class="echo-article-meta-left">
+				<text>{{article.createtime_text}}</text>
+				<text>{{article.articleCate.title}}</text>
+				<text>{{article.author}}</text>
+			</view>
+			<view class="echo-article-meta-right">
+				<text>浏览 {{article.volume}}</text>
+			</view>
+		</view>
+
+		<view class="echo-article-details bg-white">
+			<u-parse :content="article.details" noData="详情内容..." @navigate="navigate"></u-parse>
+		</view>
+		
+		
+		<view class="cu-bar bg-white solid-bottom margin-top-sm">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 用户评论
+			</view>
+			<view class="action" @click="goPage('/pages/article/comment?articleid='+article.id)">
+				<text class="text-df">共{{article.article_comment_count}}条评论 </text>
+				<view class="cuIcon-right"></view>
+			</view>
+		</view>
+		<view class="cu-list menu-avatar comment solids-top">
+			<block v-for="(item,index) in commentlist" :key="item.id">
+				<view class="cu-item" :data-puserid="item.userid" :data-nickname="item.user.nickname">
+					<view class="cu-avatar round" :style="'background-image:url('+item.user.avatar+');'"></view>
+					<view class="content">
+						<view class="padding-bottom-sm flex justify-between">
+							<view class="text-grey">{{item.user.nickname}}</view>
+							<view class="text-gray">{{item.createtime}}</view>
+						</view>
+						<view class="text-content padding-bottom-xs">
+							<text v-if="item.puserid">回复 <text class="text-red">{{item.puser.nickname}}</text>:</text> 
+							{{item.details}}
+						</view>
+					</view>
+				</view>
+			</block>
+		</view>
+		
+		
+		<view class="cu-bar bg-white solid-bottom margin-top-sm">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 相关推荐
+			</view>
+			<view class="action" @click="goPage('/pages/article/article')">
+				<text class="text-df">全部文章 </text>
+				<view class="cuIcon-right"></view>
+			</view>
+		</view>
+		<block v-for="(item,index) in articlelist" :key="index">
+			<view class="cu-card article no-card solid-bottom">
+				<view class="cu-item shadow" @tap="goArticle(item.atype, item.id, item.tilurl)">
+					<view class="title"><view class="text-cut">{{item.title}}</view></view>
+					<view class="content">
+						<image :src="item.tilpic" mode="aspectFill"></image>
+						<view class="desc">
+							<view class="text-content">{{item.summary}}</view>
+							<view class="flex justify-between">
+								<view class="text-sm text-gray">{{item.createtime_text}}</view>
+								<view class="text-sm text-gray text-right" v-if="item.atype==1">
+									<text class="cuIcon-attentionfill margin-lr-xs"></text> {{item.volume}}
+									<text class="cuIcon-appreciatefill margin-lr-xs"></text> {{item.article_thumb_count}}
+									<text class="cuIcon-messagefill margin-lr-xs"></text> {{item.article_comment_count}}
+								</view>
+								<view class="text-sm text-gray text-right" v-else>
+									<text class="cuIcon-attentionfill margin-lr-xs"></text> {{item.volume}}
+									<text class="cuIcon-discoverfill margin-lr-xs"></text> 链接
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</block>
+		
+		
+		<view class="padding"></view>
+		<view class="padding"></view>
+		<view class="cu-bar bg-white tabbar input foot">
+			<input placeholder="说点什么吧..." @tap="goPage('/pages/article/comment?articleid='+article.id+'&modalname=commentModal')" disabled class="solid-bottom"></input>
+			
+			<view class="action text-gray" @click="goPage('/pages/article/comment?articleid='+article.id)">
+				<view class="cuIcon-commentfill"></view>
+				{{article.article_comment_count}}
+			</view>
+
+			<view class="action text-gray" v-if="mythumb==0" @click="setThumb">
+				<view class="cuIcon-appreciatefill"></view>
+				{{article.article_thumb_count}}
+			</view>
+			<view class="action text-orange" v-else @click="setThumb">
+				<view class="cuIcon-appreciatefill"></view>
+				{{article.article_thumb_count}}
+			</view>
+			
+			<view class="action text-gray" v-if="mycollect==0" @click="setCollect">
+				<view class="cuIcon-favorfill"></view>
+				收藏
+			</view>
+			<view class="action text-orange" v-else @click="setCollect">
+				<view class="cuIcon-favorfill"></view>
+				已收藏
+			</view>
+			
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	import uParse from '@/components/gaoyia-parse/parse.vue';
+	var _this;
+	export default {
+		components: {
+			uParse
+		},
+		data() {
+			return {
+				pageloading: false,
+				userinfo: {},
+				
+				article: {},
+				mythumb: 0,
+				mycollect: 0,
+				
+				articlelist: [],
+				commentlist: []
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			var articleid = option.articleid || 0;
+			_this.userinfo = uni.getStorageSync('userinfo');
+			_this.$req.ajax({
+				path: "article/getarticle",
+				data: {
+					articleid: articleid,
+					userid: _this.userinfo.id || 0
+				}
+			}).then((data) => {
+				_this.article = data.article;
+				_this.mythumb = data.mythumb;
+				_this.mycollect = data.mycollect;
+				_this.articlelist = data.articlelist;
+				_this.commentlist = data.commentlist;
+				if (_this.article.atype==2) {
+					uni.redirectTo({
+						url: _this.article.tilurl
+					});
+				} else if (_this.article.atype==3) {
+					// #ifdef H5
+					location.href = _this.article.tilurl;
+					// #endif
+					// #ifndef H5
+					uni.redirectTo({
+						url: '/pages/tool/webview?pagesrc=' + encodeURIComponent(_this.article.tilurl)
+					});
+					// #endif
+				}
+				_this.pageloading = true;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: _this.article.title,
+				path: "/pages/article/detail?articleid="+_this.article.id
+		    }
+		},
+		methods: {
+			
+			setThumb: function() {
+				_this.userinfo = _this.checkLogin("/pages/article/detail?articleid="+_this.article.id);
+				if (_this.userinfo===false){
+					return false;
+				}
+				_this.$req.ajax({
+					path: "article/setthumb",
+					data: {
+						articleid: _this.article.id,
+						userid: _this.userinfo.id || 0
+					}
+				}).then((data) => {
+					_this.mythumb = data.mythumb;
+					_this.article.article_thumb_count = data.thumbcount;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			setCollect: function() {
+				_this.userinfo = _this.checkLogin("/pages/article/detail?articleid="+_this.article.id);
+				if (_this.userinfo===false){
+					return false;
+				}
+				_this.$req.ajax({
+					path: "article/setcollect",
+					data: {
+						articleid: _this.article.id,
+						userid: _this.userinfo.id || 0
+					}
+				}).then((data) => {
+					_this.mycollect = data.mycollect;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			goPage: function(pageurl) {
+				uni.navigateTo({
+					url: pageurl
+				});
+			},
+			
+			goArticle: function(atype, articleid, tilurl) {
+				if (atype==1){
+					uni.navigateTo({
+						url: '/pages/article/detail?articleid=' + articleid
+					});
+				}else{
+					_this.$req.ajax({
+						path: "article/getarticle",
+						data: {
+							articleid: articleid
+						}
+					}).then((data) => {
+						if (atype==2) {
+							uni.navigateTo({
+								url: tilurl
+							});
+						} else{
+							// #ifdef H5
+							location.href = tilurl;
+							// #endif
+							// #ifndef H5
+							uni.navigateTo({
+								url: '/pages/tool/webview?pagesrc=' + encodeURIComponent(tilurl)
+							});
+							// #endif
+						}
+					}).catch((err) => {
+						uni.showModal({
+							title: '信息提示',
+							content: err,
+							showCancel: false
+						});
+					});
+				}
+			},
+			
+			navigate: function(href, e) {
+				// #ifdef H5
+				location.href = href;
+				// #endif
+				// #ifndef H5
+				uni.navigateTo({
+					url: '/pages/tool/webview?pagesrc=' + encodeURIComponent(href)
+				});
+				// #endif
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	
+	.cu-bar.tabbar .action{ -webkit-box-flex: 0.4 !important; -webkit-flex: 0.4 !important; -ms-flex: 0.4 !important; flex: 0.4 !important; margin: 0 !important; }
+	
+</style>

+ 96 - 0
pages/broker/agent.vue

@@ -0,0 +1,96 @@
+<template>
+	<view>
+		<map :scale="scale" style="width: 750rpx; height: calc(100vh - env(safe-area-inset-bottom) * 2);"
+		enable-3D="false" show-compass="false" enable-overlooking="false"
+		:enable-satellite="false" :enable-traffic="false" show-location="false"
+		:latitude="latitude" :longitude="longitude" :markers="markers">
+		</map>
+		<view class="cu-bar tabbar bg-white foot">
+			<view class="action text-blue" @tap="goNavPage('/pages/index/index')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/indexSelected.png"></image>
+				</view>
+				首页
+			</view>
+			<view class="action text-gray" @tap="goNavPage('/pages/comjobs/comjobs')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/jobs.png"></image>
+				</view>
+				招聘
+			</view>
+			<!-- #ifndef MP-WEIXIN -->
+			<view class="action text-gray videoimg" @tap="goNavPage('/pages/video/videolist')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/video.png"></image>
+				</view>
+				微工作
+			</view>
+			<!-- #endif -->
+			
+			<view class="action text-gray" @tap="goNavPage('/pages/broker/agent')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/broker.png"></image>
+				</view>
+				经纪人
+			</view>
+			
+			<view class="action text-gray" @tap="goNavPage('/pages/my/my')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/my.png"></image>
+				</view>
+				我的
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				scale: 12,
+				title: '2', // String
+				latitude: 24.815839,
+				longitude: 118.579864,
+				callout: {
+					color: '#007AFF', // 文本颜色
+					bgColor: '#563BFF', // 背景色
+					display: "ALWAYS", // 'BYCLICK':点击显示; 'ALWAYS':常显
+					fontSize: 15,
+					textAlign: 'left', // 文本对齐方式。有效值: left, right, center
+					padding: 10, // 文本边缘留白
+					borderRadius: 5,
+					content: '腾讯地图',
+				},
+				label: {
+					content: 'Jeskson',
+					color: '#000000',
+					fontSize: 12,
+					borderWidth: 12,
+					borderColor: '#007AFF',
+					borderRadius: 5,
+					padding: 5,
+					textAlign: 'center',
+					bgColor: '#563BFF',
+				},
+				iconPath: '../../static/location.png',
+			}
+		},
+		onLoad: function() {
+			_this = this;
+			_this.userinfo = uni.getStorageSync('userinfo') || false;
+		},
+		methods: {
+			goNavPage: function(pageurl) {
+				uni.redirectTo({
+					url: pageurl
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	
+</style>

+ 147 - 0
pages/broker/broker.vue

@@ -0,0 +1,147 @@
+<template>
+	<view>
+		
+		<view class="text-center bg-white codebox">
+			<view class="text-xl padding-lr padding-top">
+				<text class="text-black">我的邀请码</text>
+			</view>
+			<view class="text-center solid-bottom text-sm padding text-grey">
+				<view>请被邀请人扫码完成注册登录</view>
+				<view>邀请成功会您将会根据任务产生收益</view>
+			</view>
+			<view class="padding">
+				<image class="codeimg" mode="widthFix" @click="refCode" :src="userinfo.wxampcode"></image>
+				<view class="flex flex-direction">
+					<button class="cu-btn round bg-gray margin-top-sm lg" @tap="saveImage">保存我的邀请码</button>
+				</view>
+			</view>
+		</view>
+		
+		<!-- <view class="text-center bg-white codebox">
+			<view class="cu-list grid col-2">
+				<view class="cu-item">
+					<view class="cuIcon text-red">{{countobj.tuser}}</view>
+					<text>今日用户</text>
+				</view>
+				<view class="cu-item">
+					<view class="cuIcon text-red">{{countobj.user}}</view>
+					<text>累计用户</text>
+				</view>
+				<block v-if="brokerinfo.powerreport==1">
+				<view class="cu-item">
+					<view class="cuIcon text-red">{{countobj.tentry}}</view>
+					<text>今日报备</text>
+				</view>
+				<view class="cu-item">
+					<view class="cuIcon text-red">{{countobj.entry}}</view>
+					<text>累计报备</text>
+				</view>
+				</block>
+			</view>
+		</view> -->
+		
+		<!-- <view class="padding-sm"></view>
+		<view class="padding-xl"></view>
+		<view class="cu-bar tabbar bg-white foot">
+			<view class="action text-blue" @tap="goNavPage('/pages/broker/broker')">
+				<view class="cuIcon-qrcode"></view>
+				邀请码
+			</view>
+			<view class="action" @tap="goNavPage('/pages/broker/myuser')">
+				<view class="cuIcon-friend"></view>
+				我的用户
+			</view>
+			<view class="action" @tap="goNavPage('/pages/my/myentry')">
+				<view class="cuIcon-upload"></view>
+				报备记录
+			</view>
+			<view class="action" @tap="goNavPage('/pages/broker/myorder')">
+				<view class="cuIcon-recharge"></view>
+				订单信息
+			</view>
+			<view class="action" @tap="goNavPage('/pages/broker/income')">
+				<view class="cuIcon-moneybag"></view>
+				我的收益
+			</view>
+		</view> -->
+		
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				userinfo: false,
+				brokerinfo: false,
+			}
+		},
+		onLoad: function() {
+			_this = this;
+			_this.userinfo = uni.getStorageSync('userinfo') || false;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			if (_this.userinfo===false || _this.brokerinfo===false){
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			if (_this.userinfo.wxampcode==""){
+				_this.refCode();
+			}
+		},
+		methods: {
+			saveImage: function() {
+				uni.downloadFile({
+				    url: _this.userinfo.wxampcode, //仅为示例,并非真实的资源
+				    success: (res) => {
+				        if (res.statusCode === 200) {
+				            uni.saveImageToPhotosAlbum({
+				            	filePath: res.tempFilePath,
+				            	success: function () {
+									uni.showModal({
+										title: '信息提示',
+										content: "邀请码已保存到手机相册,注意查收。",
+										showCancel: false
+									});
+				            	}
+				            });
+				        }
+				    }
+				});
+			},
+			
+			refCode: function() {
+				_this.$req.ajax({
+					path: "my/refcode",
+					data: {
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					_this.userinfo.wxampcode = data.wxampcode+"?" + Math.random();
+					uni.setStorageSync('userinfo', _this.userinfo);
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goNavPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.redirectTo({
+					url: pageurl
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	.codebox{ width: 680rpx; margin: 40rpx auto 0rpx auto; border-radius: 8rpx; overflow: hidden; }
+</style>

+ 216 - 0
pages/broker/brokerform.vue

@@ -0,0 +1,216 @@
+<template>
+	<view>
+		<form>
+			<view class="cu-form-group margin-top">
+				<view class="title">姓名</view>
+				<input placeholder="请输入姓名" data-val="title" @input="bindInput"></input>
+			</view>
+			<view class="cu-form-group">
+				<view class="title">手机号</view>
+				<input placeholder="请输入手机号" data-val="mobile" @input="bindInput"></input>
+			</view>
+			<view class="cu-form-group">
+				<view class="title">代理门店</view>
+				<picker mode="multiSelector" @change="MultiChange" @columnchange="MultiColumnChange" :value="multiIndex" :range="multiArray" range-key="title">
+					<view class="picker">
+						{{multiArray[0][multiIndex[0]].title}},{{multiArray[1][multiIndex[1]].title}}
+					</view>
+				</picker>
+			</view>
+			<view class="cu-form-group">
+				<view class="title">镇街</view>
+				<picker mode="multiSelector" @change="TownChange" @columnchange="TownColumnChange" :value="townIndex" :range="townArray">
+					<view class="picker">
+						{{townArray[0][townIndex[0]]}},{{townArray[1][townIndex[1]]}}
+					</view>
+				</picker>
+			</view>
+			<view class="cu-form-group">
+				<view class="title">区域</view>
+				<input placeholder="请输入区域" data-val="region" @input="bindInput"></input>
+			</view>
+			
+			<view class="padding flex flex-direction bg-white">
+				<button class="cu-btn bg-blue margin-tb-sm lg" @tap="submit">立即提交</button>
+			</view>
+		</form>
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				isRotate: false,
+				userinfo: {},
+				forminfo: {
+					title: '',
+					mobile: '',
+					region: '',
+				},
+				multiArray: [
+					[],
+					[],
+				],
+				multiIndex: [0, 0],
+				townArray: [
+					[],
+					[],
+				],
+				townIndex: [0,0],
+				village: [],
+			};
+		},
+		onLoad: function(){ 
+			_this = this;
+			_this.userinfo = _this.checkLogin("/pages/my/myinfo");
+			//公司
+			_this.$req.ajax({
+				path: "index/getWorker",
+				data: {}
+			}).then((data) => {
+				_this.multiArray = data;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+			//镇街
+			_this.$req.ajax({
+				path: "index/getTown",
+				data: {}
+			}).then((data) => {
+				_this.townArray = [data.town,data.village[0]];
+				_this.village = data.village
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		methods: {
+			bindInput(e) {
+				var dataval = e.currentTarget.dataset.val;
+				_this.forminfo[dataval] = e.detail.value;
+			},
+			MultiChange(e) {
+				this.multiIndex = e.detail.value
+			},
+			TownChange(e) {
+				this.townIndex = e.detail.value
+			},
+			MultiColumnChange(e) {
+				let multi = _this.multiIndex;
+				//公司变更
+				if (e.detail.column == 0) {
+					let workerid = _this.multiArray[0][e.detail.value].id;
+					_this.$req.ajax({
+						path: "index/getAgentByWorker",
+						data: {workerid:workerid}
+					}).then((data) => {
+						let multiArray = _this.multiArray;
+						multiArray[1] = data;
+						_this.multiArray = multiArray;
+						multi = [e.detail.value,0];
+						_this.multiIndex = multi;
+						_this.$forceUpdate();
+					}).catch((err) => {
+						uni.showModal({
+							title: '信息提示',
+							content: err,
+							showCancel: false
+						});
+					});
+				}
+				
+				//门店变更
+				if (e.detail.column == 1) {
+					multi[1] = e.detail.value;
+					_this.multiIndex = multi;
+					_this.$forceUpdate();
+				}
+			},
+			TownColumnChange(e) {
+				let townIndex = _this.townIndex;
+				//公司变更
+				if (e.detail.column == 0) {
+					_this.townArray[1] = _this.village[e.detail.value];
+					_this.townIndex = [e.detail.value,0];
+					_this.$forceUpdate();
+				}
+				
+				//街道变更
+				if (e.detail.column == 1) {
+					townIndex[1] = e.detail.value;
+					_this.townIndex = townIndex;
+					_this.$forceUpdate();
+				}
+			},
+			RegionChange(e) {
+				this.region = e.detail.value
+			},
+			submit() {
+				if (_this.isRotate) {
+					return false;
+				}
+				_this.isRotate = true;
+				
+				let data = _this.forminfo;
+				console.log(data,22);
+				let validate = {"title":"姓名","mobile":"手机号","region":"区域"};
+				for (var i in validate) {
+					if (data[i] == "") {
+						uni.showModal({
+							title: '信息提示',
+							content: validate[i]+"不能为空",
+							showCancel: false
+						});
+						_this.isRotate = false;
+						return false;
+					}
+				}
+				
+				data.userid = _this.userinfo.id;
+				data.workerid = _this.multiArray[0][_this.multiIndex[0]].id;
+				data.agentid = _this.multiArray[1][_this.multiIndex[1]].id;
+				data.town = _this.townArray[0][_this.townIndex[0]];
+				data.village = _this.townArray[1][_this.townIndex[1]];
+				
+				_this.$req.ajax({
+					path: "broker/apply",
+					data: data
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: '提交成功,等待管理员审核',
+						showCancel: false,
+						success: function() {
+							uni.reLaunch({
+							    url: '/pages/index/index'
+							});
+						},
+					});
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	.cu-form-group .title {
+		min-width: calc(4em + 15px);
+	}
+</style>
+

+ 146 - 0
pages/broker/brokerform_back.vue

@@ -0,0 +1,146 @@
+<template>
+	<view>
+		
+		<image class="echo-brokerformpic" mode="widthFix" :src="param.brokerformpic"></image>
+		
+		<view class="padding-xl"></view>
+		<view class="cu-bar bg-white tabbar border shop foot">
+			<view class="btn-group">
+				<button class="cu-btn bg-red round shadow-blur" @tap="tabModal" style="width: 80%;">立即申请成为职业顾问</button>
+			</view>
+		</view>
+		
+		<view class="cu-modal" :class="showform">
+			<view class="cu-dialog">
+				<view class="cu-bar bg-white justify-end">
+					<view class="content">申请成为职业顾问</view>
+					<view class="action" @tap="tabModal">
+						<text class="cuIcon-close text-red"></text>
+					</view>
+				</view>
+				<view class="padding bg-white margin-top-xs echo-brokerform">
+					<form>
+						<view class="cu-form-group">
+							<view class="title">姓名</view>
+							<input placeholder="请输入姓名" @input="bindInput" data-val="realname" :value="forminfo.realname"></input>
+						</view>
+						<view class="cu-form-group">
+							<view class="title">手机号</view>
+							<input placeholder="请输入手机号" @input="bindInput" data-val="mobile" :value="forminfo.mobile"></input>
+						</view>	
+						<view class="cu-form-group">
+							<view class="title">当前住址</view>
+							<input placeholder="请输入当前住址" @input="bindInput" data-val="address" :value="forminfo.address"></input>
+						</view>	
+						<view class="cu-form-group">
+							<view class="title">身份证号</view>
+							<input placeholder="请输入身份证号" @input="bindInput" data-val="idcard" :value="forminfo.idcard"></input>
+						</view>	
+						<view class="cu-form-group solids-bottom">
+							<view class="title">推荐人</view>
+							<input placeholder="请输入推荐人" @input="bindInput" data-val="recommender" :value="forminfo.recommender"></input>
+						</view>	
+						<view class="padding-lr padding-top flex flex-direction">
+							<button class="cu-btn bg-orange margin-tb-sm lg" @tap="regBroker">确认提交</button>
+						</view>
+					</form>
+				</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				showform: '',
+				param: {},
+				isRotate: false,
+				forminfo: {
+					realname: "",
+					mobile: "",
+					address: "",
+					idcard: "",
+					recommender: ""
+				}
+			};
+		},
+		onLoad: function(){ 
+			_this = this;
+			_this.$req.ajax({
+				path: "broker/pageform",
+				data: {}
+			}).then((data) => {
+				_this.param = data.param;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		methods: {
+			regBroker: function() {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "broker/regbroker",
+					data: {
+						realname: _this.forminfo.realname,
+						mobile: _this.forminfo.mobile,
+						address: _this.forminfo.address,
+						idcard: _this.forminfo.idcard,
+						recommender: _this.forminfo.recommender
+					}
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: "注册申请提交成功,请耐心等待。",
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								_this.forminfo = {
+									realname: "",
+									mobile: "",
+									address: "",
+									idcard: "",
+									recommender: ""
+								};
+								_this.tabModal();
+							}
+						}
+					});
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			
+			bindInput: function(e) {
+				var dataval = e.currentTarget.dataset.val;
+				_this.forminfo[dataval] = e.detail.value;
+			},
+			tabModal: function() {
+				_this.showform = _this.showform=="show" ? "" : "show";
+			}
+		}
+	}
+</script>
+
+<style>
+	.echo-brokerformpic{ width: 100%; display: block; }
+	.echo-brokerform view.title{ text-align: left !important; width: 30%; }
+	.echo-brokerform input{ text-align: left !important; width: 70%; }
+</style>
+

+ 347 - 0
pages/broker/brokerlist.vue

@@ -0,0 +1,347 @@
+<template>
+	<view>
+		<view class="cu-bar search bg-gray">
+			<view class="search-form round text-center">
+				<text class="cuIcon-search"></text>
+				<input @input="bindInput" :adjust-position="false" type="text" placeholder="搜索经纪人名称或区域" confirm-type="search"></input>
+			</view>
+			<view class="action" v-if="searchval!==''">
+				<button class="cu-btn bg-white shadow-blur round" @click="btnSearch()">搜索</button>
+			</view>
+		</view>
+		
+		<view class="filterbg">
+		<view class="flex justify-between solids-bottom padding bg-white">
+			<view class="text-bold">推荐</view>
+			<view class="flex justify-end">
+				<view class="cu-tag radius" data-filterbox="area" @tap="showFilter">{{arealist.title}}</view>
+			</view>
+		</view>
+		
+		<view class="filtercon" v-if="filterbox!==null">
+			<view class="grid margin-bottom text-left col-3 bg-white" v-if="filterbox=='area'">
+				<view class="solids-right padding-bottom">
+					<scroll-view scroll-y="true" style="height: 600rpx;">
+						<view class="solid-bottom text-gray padding-lr-sm padding-tb-sm">选择省</view>
+						<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(4,0)">全部</view>
+						<block v-for="(item,index) in arealist.data" :key="index">
+							<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(1,index)">{{item.title}}</view>
+						</block>
+					</scroll-view>
+				</view>
+				<view class="solids-right padding-bottom">
+					<scroll-view scroll-y="true" style="height: 600rpx;">
+						<view class="solid-bottom text-gray padding-lr-sm padding-tb-sm">选择市</view>
+						<block v-for="(item,index) in arealist.cityarr" :key="index">
+							<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(2,index)">{{item.title}}</view>
+						</block>
+					</scroll-view>
+				</view>
+				<view class="padding-bottom">
+					<scroll-view scroll-y="true" style="height: 600rpx;">
+						<view class="solid-bottom text-gray padding-lr-sm padding-tb-sm">选择区县</view>
+						<block v-for="(item,index) in arealist.districtarr" :key="index">
+							<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(3,index)">{{item.title}}</view>
+						</block>
+					</scroll-view>
+				</view>
+			</view>
+		</view>
+		</view>
+		
+		<view class="bg-white cu-list menu-avatar">
+			<block v-for="(item,index) in plist" :key="index">
+				<view class="cu-item" style="border-bottom: 0rpx !important; border-top: 0rpx !important;">
+					<view class="cu-avatar round lg" :style="'background-image:url('+(item.muser.avatar ? item.muser.avatar : $getImageUrl('static/images/applet/dfhead.jpg'))+');'"></view>
+					<view class="content" :data-index="index" @tap="showModal">
+						<view class="text-cut text-bold">{{item.title}}</view>
+					</view>
+					<view class="action">
+						<button class="cu-btn bg-blue cuIcon" :data-telephone="item.mobile" @tap="makeTelephone">
+							<text class="cuIcon-dianhua"></text>
+						</button>
+					</view>
+				</view>
+				<view class="itembox" :data-index="index" @tap="showModal">
+					<view class="itembox-til">服务区域:</view>
+					<view class="itembox-con text-gray">{{item.province}} - {{item.city}} - {{item.district}}</view>
+				</view>
+				<view class="itembox" :data-index="index" @tap="showModal">
+					<view class="itembox-til">镇/村:</view>
+					<view class="itembox-con text-gray">{{item.town}} - {{item.village}}</view>
+				</view>
+				<view class="itembox solids-bottom" style="padding-bottom: 30rpx;" :data-index="index" @tap="showModal">
+					<view class="itembox-til">区域:</view>
+					<view class="itembox-con text-gray" style="height: 75rpx; overflow: hidden;">
+						<text>{{item.region}}</text>
+					</view>
+				</view>
+				<view class="itembox solids-bottom" style="padding-bottom: 30rpx;" :data-index="index" @tap="showModal">
+					<view class="itembox-til">基本介绍:</view>
+					<view class="itembox-con text-gray" style="height: 75rpx; overflow: hidden;">
+						<text>{{item.details}}</text>
+					</view>
+				</view>
+			</block>
+		</view>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		
+		
+		<view class="cu-modal bottom-modal" :class="modal.name=='detailsbox'?'show':''">
+			<view class="cu-dialog">
+				<view class="cu-bar bg-white">
+					<view class="action text-green">确定</view>
+					<view class="action text-blue" @tap="hideModal">取消</view>
+				</view>
+				<view class="padding-tb">
+					<scroll-view scroll-y="true" style="height: 800rpx;">
+						<view class="itembox text-left">
+							<view class="itembox-til text-right">姓名:</view>
+							<view class="itembox-con text-gray">{{modal.brokerinfo.title}}</view>
+						</view>
+						<view class="itembox text-left">
+							<view class="itembox-til text-right">手机号:</view>
+							<view class="itembox-con text-gray">{{modal.brokerinfo.mobile}}</view>
+						</view>
+						<view class="itembox text-left">
+							<view class="itembox-til text-right">微信号:</view>
+							<view class="itembox-con text-gray">{{modal.brokerinfo.weixin}}</view>
+						</view>
+						<view class="itembox text-left">
+							<view class="itembox-til text-right">QQ号:</view>
+							<view class="itembox-con text-gray">{{modal.brokerinfo.qq}}</view>
+						</view>
+						
+						<view class="itembox text-left">
+							<view class="itembox-til text-right">服务区域:</view>
+							<view class="itembox-con text-gray">{{modal.brokerinfo.province}} - {{modal.brokerinfo.city}}</view>
+						</view>
+						<view class="itembox text-left" style="padding-bottom: 30rpx;" :data-index="index" @tap="showModal">
+							<view class="itembox-til text-right">基本介绍:</view>
+							<view class="itembox-con text-gray">
+								<text>{{modal.brokerinfo.details}}</text>
+							</view>
+						</view>								
+					</scroll-view>
+				</view>
+			</view>
+		</view>
+		
+		<view class="padding-sm"></view>
+		<view class="padding-xl"></view>
+		<view class="cu-bar tabbar bg-white foot">
+			<view class="action text-gray" @tap="goNavPage('/pages/index/index')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/index.png"></image>
+				</view>
+				首页
+			</view>
+			<view class="action text-gray" @tap="goNavPage('/pages/comjobs/comjobs')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/jobs.png"></image>
+				</view>
+				招聘
+			</view>
+			<!-- #ifndef MP-WEIXIN -->
+			<view class="action text-gray videoimg" @tap="goNavPage('/pages/video/videolist')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/video.png"></image>
+				</view>
+				微工作
+			</view>
+			<!-- #endif -->
+			
+			<view class="action text-blue" @tap="goNavPage('/pages/broker/brokerlist')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/brokerSelected.png"></image>
+				</view>
+				经纪人
+			</view>
+			
+			<view class="action text-gray" @tap="goNavPage('/pages/my/my')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/my.png"></image>
+				</view>
+				我的
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				filterbox: null,
+				arealist: {
+					title: "区域",
+					value: "",
+					cityarr: [],
+					districtarr: [],
+					data: []
+				},
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: [],
+				searchval: "",
+				
+				modal: {
+					name: null,
+					brokerinfo: {}
+				}
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			_this.arealist.data = require('@/common/area.json');
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.pageRefresh();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "经纪人列表",
+				path: "/pages/broker/brokerlist"
+		    }
+		},
+		methods: {
+			showFilter: function(e) {
+				var nowfilterbox = e.currentTarget.dataset.filterbox;
+				if (_this.filterbox == nowfilterbox){
+					_this.filterbox = null;
+				}else{
+					_this.filterbox = nowfilterbox;
+				}
+				uni.pageScrollTo({
+				    scrollTop: 0,
+				    duration: 300
+				});
+			},
+			checkArea: function(level, index) {
+				if (level==1){
+					_this.arealist.cityarr = _this.arealist.data[index].children;
+					_this.arealist.districtarr = [];
+				}else if (level==2){
+					_this.arealist.districtarr = _this.arealist.cityarr[index].children;
+				}else if (level==3){
+					_this.arealist.title = _this.arealist.districtarr[index].title;
+					_this.arealist.value = _this.arealist.districtarr[index].title;
+					_this.filterbox = null;
+					_this.pageRefresh();
+				}else if (level==4){
+					_this.arealist.cityarr = [];
+					_this.arealist.districtarr = [];
+					_this.arealist.title = "全部";
+					_this.arealist.value = "";
+					_this.filterbox = null;
+					_this.pageRefresh();
+				}
+			},
+			// 搜索
+			bindInput: function(e) {
+				_this.searchval = e.detail.value;
+			},
+			btnSearch: function() {
+				if (_this.searchval == "") {
+					uni.showModal({
+						title: '信息提示',
+						content: "请输入要搜索的关键字...",
+						showCancel: false
+					});
+					return false;
+				}
+				_this.pageRefresh();
+			},
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			
+			getMore: function() {
+				_this.$req.ajax({
+					path: "broker/getlistbroker",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						searchval: _this.searchval,
+						district: _this.arealist.value
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			showModal: function(e) {
+				var index = e.currentTarget.dataset.index;
+				_this.modal.name = "detailsbox";
+				_this.modal.brokerinfo = _this.plist[index]; 
+			},
+			hideModal: function(e) {
+				_this.modal.name = null;
+			},
+			// 咨询电话
+			makeTelephone: function(e) {
+				var telephone = e.currentTarget.dataset.telephone;
+				uni.makePhoneCall({
+					phoneNumber: telephone
+				});
+			},
+			
+			goNavPage: function(pageurl) {
+				uni.redirectTo({
+					url: pageurl
+				});
+			},
+			
+			goDetail: function(agentid) {
+				uni.navigateTo({
+					url: '/pages/agent/detail?agentid=' + agentid
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	.echo-agent-list .echo-item .echo-tilpic {
+		width: 120rpx;
+		height: 120rpx;
+	}
+	.echo-agent-list .echo-item .echo-content{
+		width: 550rpx;
+	}
+	
+	.cu-item:after{
+		border: 0rpx !important;
+	}
+	
+	.itembox{ padding: 10rpx 30rpx; width: 100%; display: flex; justify-content: start;}
+	.itembox-til{ width: 160rpx; }
+	.itembox-con{ width: 530rpx; }
+</style>

+ 121 - 0
pages/broker/center.vue

@@ -0,0 +1,121 @@
+<template>
+	<view>
+		<image :src="$getImageUrl('static/images/applet/brokerCenter.jpg')" class="header-image" mode="widthFix"></image>
+		<view class="cu-bar bg-white solid-bottom">
+			<view class="action">
+				<text class="cuIcon-title text-orange "></text> 我的收益
+			</view>
+			<view class="action">
+				<button class="cu-btn bg-green shadow" @click="goNavPage('/pages/broker/income')">详情</button>
+			</view>
+		</view>
+		<view class="lw-table">
+			<view class="lw-table-item padding">
+				<view class="lw-table-value text-price text-bold text-red">{{statistics.income_total}}</view>
+				<view class="lw-table-title text-gray padding-top-xs">总收益</view>
+			</view>
+			<view class="lw-table-item padding">
+				<view class="lw-table-value text-price text-bold text-red">{{statistics.income}}</view>
+				<view class="lw-table-title text-gray padding-top-xs">当前收益</view>
+			</view>
+		</view>
+		<view class="cu-bar bg-white solid-bottom margin-top">
+			<view class="action">
+				<text class="cuIcon-title text-orange "></text> 我的下线
+			</view>
+		</view>
+		<view class="lw-table">
+			<view class="lw-table-item padding" @click="goNavPage('/pages/broker/myuser')">
+				<view class="lw-table-value text-bold text-black">{{statistics.user}}</view>
+				<view class="lw-table-title text-gray padding-top-xs">我的用户</view>
+			</view>
+			<view class="lw-table-item padding" @click="goNavPage('/pages/broker/myworker')">
+				<view class="lw-table-value text-bold text-black">{{statistics.worker}}</view>
+				<view class="lw-table-title text-gray padding-top-xs">我的雇主</view>
+			</view>
+		</view>
+		<view class="cu-list grid col-3 no-border margin-top">
+			<view class="cu-item text-center" @click="goNavPage('/pages/broker/broker')">
+				<image class="myicon" :src="$getImageUrl('static/images/applet/myicon02.png')"></image>
+				<text>邀请码</text>
+			</view>
+			<view class="cu-item text-center" @click="goNavPage('/pages/broker/myorder')">
+				<image class="myicon" :src="$getImageUrl('static/images/applet/myicon04.png')"></image>
+				<text>订单信息</text>
+			</view>
+			<view class="cu-item text-center" @click="goNavPage('/pages/my/myentry')">
+				<image class="myicon" :src="$getImageUrl('static/images/applet/shebao.png')"></image>
+				<text>报备记录</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				userinfo: {},
+				brokerinfo: {},
+				statistics: {
+					income_total: 0,
+					income: 0,
+					user: 0,
+					worker: 0,
+				},
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			_this.userinfo = uni.getStorageSync('userinfo') || false;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			if (_this.userinfo===false || _this.brokerinfo===false){
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.init();
+		},
+		methods: {
+			init: function() {
+				_this.$req.ajax({
+					path: "broker/center",
+					data: {
+						brokerid: _this.brokerinfo.id
+					}
+				}).then((data) => {
+					_this.statistics = data
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goNavPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.navigateTo({
+					url: pageurl,
+					fail: function() {
+						uni.switchTab({
+							url: pageurl
+						});
+					}
+				});
+			},
+		}
+	}
+</script>
+
+<style scoped>
+	.header-image {width:750rpx;}
+	.lw-table {display: flex;align-items: center;justify-content: space-around;background: white;padding:20rpx 0;}
+	.lw-table .lw-table-item {text-align: center;}
+	.lw-table .lw-table-value {font-size:40rpx;}
+</style>

+ 155 - 0
pages/broker/getorder.vue

@@ -0,0 +1,155 @@
+<template>
+	<view>
+		
+		<scroll-view scroll-x class="bg-white radius nav echo-fixed-top">
+			<view class="flex text-center solid-bottom">
+				<view class="cu-item flex-sub" :class="1==TabCur?'text-blue cur':''" @tap="tabSelect" :data-id="1">
+					订单信息
+				</view>
+				<view class="cu-item flex-sub" :class="2==TabCur?'text-blue cur':''" @tap="tabSelect" :data-id="2">
+					报备记录
+				</view>
+			</view>
+		</scroll-view>
+		<view class="echo-fixed-top-empty"></view>
+		
+		<view class="cu-list menu margin-bottom-sm">
+			<view class="cu-item">
+				<view class="content">
+					<text>{{order.demand.title}}</text>
+				</view>
+			</view>
+			<view class="cu-item">
+				<view class="content">
+					<text>招聘公司:{{order.demand.worker.title}}</text>
+				</view>
+			</view>
+		</view>
+		
+		<block v-if="1==TabCur">
+			<view class="cu-list menu margin-bottom-sm">
+				<view class="cu-item">
+					<view class="content">
+						<text>状态</text>
+					</view>
+					<view class="action">
+						<text>{{order.status_text}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text>年龄</text>
+					</view>
+					<view class="action">
+						<text>{{order.demand.agegroup}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text>综合月薪</text>
+					</view>
+					<view class="action">
+						<text>{{order.demand.zwagall}}</text>
+					</view>
+				</view>
+			</view>
+			<view class="cu-bar bg-white solids-bottom">
+				<view class="action">
+					<text class="cuIcon-titles text-blue"></text> 岗位要求
+				</view>
+			</view>
+			<view class="echo-article-details bg-white margin-bottom-sm">
+				<text>{{order.demand.requirement}}</text>
+			</view>
+			
+			<view class="cu-bar bg-white solids-bottom">
+				<view class="action">
+					<text class="cuIcon-titles text-blue"></text> 企业简介
+				</view>
+			</view>
+			<view class="echo-article-details bg-white margin-bottom-sm">
+				<text>{{order.demand.comdetails}}</text>
+			</view>
+		</block>
+		
+		
+		<block v-if="2==TabCur">
+			<view class="padding text-center text-grey" v-if="order_log.length==0">
+				暂无报备记录...
+			</view>
+			<view v-else>
+				<view class="cu-timeline" v-for="(item,index) in order_log" :key="index">
+					<view class="cu-time">{{item.arrivetime}}</view>
+					<view class="cu-item text-blue">
+						<view class="content">
+							<view class="text-bold margin-bottom-sm">{{item.realname}}</view>
+							<view class="text-gray text-sm">电话:{{item.mobile}}</view>
+							<view class="text-gray text-sm">身份证:{{item.idcard}}</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</block>
+		
+		<view class="cu-bar bg-white tabbar border shop foot">
+			<view class="bg-blue submit echo-foot-button" @tap="goPage('/pages/broker/setreport?id=' + order.id)" v-if="order.status==2"> <text>立即报备</text> </view>
+			<view class="bg-grey submit echo-foot-button" v-else> <text>已招满</text> </view>
+		</view>
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				TabCur: 1,
+				isRotate: false,
+				brokerinfo: {},
+				order: {},
+				order_log: [],
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			var id = option.id || 0;
+			_this.$req.ajax({
+				path: "broker/getorder",
+				data: {
+					id: id,
+					brokerid: _this.brokerinfo.id
+				}
+			}).then((data) => {
+				_this.order = data.order;
+				_this.order_log = data.order_log;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		methods: {
+			tabSelect: function(e) {
+				_this.TabCur = e.currentTarget.dataset.id;
+			},
+			goPage: function(pageurl) {
+				uni.navigateTo({
+					url: pageurl,
+					fail: function() {
+						uni.switchTab({
+							url: pageurl
+						});
+					}
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	.cu-time{ width: 300rpx !important; padding-left: 30rpx !important; text-align: left !important; }
+</style>
+

+ 242 - 0
pages/broker/income.vue

@@ -0,0 +1,242 @@
+<template>
+	<view>
+		
+		<view class="padding bg-blue">
+			<view class="text-center padding-top">
+				<view class="text-sl padding-bottom-xs">{{brokerinfo.income}}</view>
+				<view>
+					当前收益
+				</view>
+				<view class="margin-top-sm">
+					<button class="cu-btn round" data-name="cash" @tap="showModal" v-if="agentinfo.is_settle == 2">提现申请</button>
+				</view>
+			</view>
+			<view class="flex solid-bottom padding-top justify-between">
+				<view>上月获得:<text>{{month_income}}</text> 元</view>
+				<view>累计已获:<text>{{brokerinfo.income_total}}</text> 元</view>
+			</view>
+		</view>
+		
+		<view class="cu-list menu">
+			<block v-for="(item,index) in plist" :key="index">
+				<view class="cu-item">
+					<view class="content padding-tb-sm padding-right-sm">
+						<view>
+							{{item.title}}
+						</view>
+						<view class="text-gray text-sm">{{item.createtime}}</view>
+						<view class="text-gray text-sm">
+							{{item.remark}}
+						</view>
+					</view>
+					<view class="action text-red">
+						<view :class="item.status == 2 ? 'text-blue' : 'text-red'">{{item.status_text}}</view>
+						<view class="text-red">{{item.value > 0 ? '+' : ''}}{{item.value}}元</view>
+					</view>
+				</view>
+			</block>
+		</view>
+		
+		<uni-load-more :status="pstatus"></uni-load-more>
+		
+		
+		<view class="cu-modal" :class="modalinfo.name=='cash'?'show':''">
+			<view class="cu-dialog">
+				<view class="cu-bar bg-white justify-end">
+					<view class="content">提现申请</view>
+					<view class="action" @tap="hideModal">
+						<text class="cuIcon-close text-grey"></text>
+					</view>
+				</view>
+				<view class="padding-xl bg-white solid-top solid-bottom">
+					<input type="number" placeholder="请输入提现金额..." data-name="value" @input="bindInput" :value="modalinfo.value" />
+				</view>
+				<view class="cu-bar bg-white justify-end">
+					<view class="action">
+						<button class="cu-btn line-grey text-grey" @tap="hideModal">取消</button>
+						<button class="cu-btn bg-green margin-left" @tap="cashModal">提交申请</button>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				agentinfo: {},
+				brokerinfo: {},
+				month_income: 0,
+				
+				modalinfo: {
+					name: null,
+					value: "",
+				},
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			if (_this.brokerinfo===false){
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.getAgent();
+			_this.getIncome();
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			showModal: function(e) {
+				_this.modalinfo.name = e.currentTarget.dataset.name;
+			},
+			hideModal: function() {
+				_this.modalinfo.name = null;
+			},
+			bindInput: function(e) {
+				var name = e.currentTarget.dataset.name;
+				_this.modalinfo[name] = e.detail.value;
+			},
+			cashModal: function() {
+				_this.$req.ajax({
+					path: "broker/cash",
+					data: {
+						value: _this.modalinfo.value,
+						brokerid: _this.brokerinfo.id
+					}
+				}).then((data) => {
+					_this.hideModal();
+					uni.showModal({
+						title: '信息提示',
+						content: '申请成功,请等待审核',
+						showCancel: false,
+						success: function() {
+							_this.ppage = 1;
+							_this.pstatus = 'more';
+							_this.plist = [];
+							_this.getMore();
+						},
+					});
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			getAgent: function() {
+				_this.$req.ajax({
+					path: "broker/agent",
+					data: {
+						agentid: _this.brokerinfo.agentid
+					}
+				}).then((data) => {
+					_this.agentinfo = data;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "broker/getIncome",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						brokerid: _this.brokerinfo.id
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			getIncome: function() {
+				_this.$req.ajax({
+					path: "broker/brokerIncome",
+					data: {
+						brokerid: _this.brokerinfo.id 
+					}
+				}).then((data) => {
+					_this.brokerinfo = data.broker;
+					_this.month_income = data.month_income;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			goLPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.navigateTo({
+					url: pageurl,
+					fail: function(){
+						uni.switchTab({
+						    url: pageurl
+						});
+					}
+				});
+			},
+			
+			goNavPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.redirectTo({
+					url: pageurl
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	.cu-list.menu-avatar .cu-item{ height: 170rpx !important; }
+</style>
+

+ 193 - 0
pages/broker/myentry.vue

@@ -0,0 +1,193 @@
+<template>
+	<view>
+		
+		<!-- 搜索 -->
+		<view class="cu-bar search bg-white solid-bottom echo-fixed-top">
+			<view class="search-form round">
+				<text class="cuIcon-search"></text>
+				<input @input="bindInput" :adjust-position="false" type="text" placeholder="搜索姓名或手机号" confirm-type="search"></input>
+			</view>
+			<view class="action">
+				<button class="cu-btn shadow-blur round" @click="btnSearch()">搜索</button>
+			</view>
+			<view class="action">
+				<button class="cu-btn bg-blue shadow-blur round" @tap="goLPage('/pages/broker/setentry?entryid=0')">新增</button>
+			</view>
+		</view>
+		<view class="echo-fixed-top-empty"></view>
+		
+		<sl-filter :ref="'slFilter'" :topFixed="false" :isTransNav="true" :navHeight="0" :color="titleColor" :themeColor="themeColor"
+		 :menuList="menuList" @result="result"></sl-filter>
+
+		<view class="cu-list menu-avatar">
+			<view class="cu-item" v-for="(item,index) in plist" :key="index">
+				<view class="content">
+					<view class="text-black">{{item.realname}} - {{item.mobile}}</view>
+					<view class="text-gray text-sm text-cut">意向工厂:{{item.reportFactory.title}}</view>
+					<view class="text-gray text-sm text-cut">报备时间:{{item.createtime}}</view>
+				</view>
+				<view class="action basis-xs">
+					<view class="text-grey text-sm">{{statusarr[item.status]}}</view>
+					<view class="cu-tag bg-blue margin-top-xs" @tap="goLPage('/pages/broker/setentry?entryid='+item.id)">查看详情</view>
+				</view>
+			</view>
+		</view>
+		
+		<uni-load-more :status="pstatus"></uni-load-more>
+		
+	</view>
+</template>
+
+<script>
+	import slFilter from '@/components/sl-filter/sl-filter.vue';
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			slFilter,
+			uniLoadMore
+		},
+		data() {
+			return {
+				brokerinfo: {},
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: [],
+				searchval: "",
+				
+				themeColor: '#0081ff',
+				titleColor: '#666666',
+				filterResult: '',
+				menuList: [{
+						'title': '报备状态',
+						'detailTitle': '请选择报备状态...',
+						'isMutiple': false,
+						'key': 'status',
+						'detailList': []
+					},
+					{
+						'title': '意向工厂',
+				        'key': 'factoryid', 
+				        'isMutiple': false,
+				        'detailTitle': '请选择意向工厂...',
+				        'detailList': []
+					}
+				],
+				status: 0,
+				factoryid: 0,
+				statusarr: ['全部','待确认', '已确认', '已入职', '未通过']
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			if (_this.brokerinfo===false){
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.$req.ajax({
+				path: "broker/pageentry",
+				data: {
+					brokerid: _this.brokerinfo.id
+				}
+			}).then((data) => {
+				_this.menuList[0].detailList = data.statuslist;
+				_this.menuList[1].detailList = data.factorylist;
+				_this.$refs.slFilter.resetMenuList(_this.menuList);
+				_this.getMore();
+			}).catch((err) => {
+				console.log("err: " + JSON.stringify(err));
+			});
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			bindInput: function(e) {
+				_this.searchval = e.detail.value;
+			},
+			btnSearch: function() {
+				_this.pageRefresh();
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "broker/listentry",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						brokerid: _this.brokerinfo.id,
+						status: _this.status,
+						factoryid: _this.factoryid,
+						searchval: _this.searchval
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			
+			result: function(e) {
+				_this.status = e.status;
+				_this.factoryid = e.factoryid;
+				_this.pageRefresh();
+			},
+			
+			goLPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.navigateTo({
+					url: pageurl
+				});
+			},
+			
+			goNavPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.redirectTo({
+					url: pageurl
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	.cu-list.menu-avatar .cu-item{ height: 170rpx !important; }
+	
+	.cu-list.menu-avatar>.cu-item .content {
+		left: 30rpx;
+		width: calc(100% - 96rpx - 60rpx - 30rpx - 20rpx);
+	}
+</style>

+ 129 - 0
pages/broker/myorder.vue

@@ -0,0 +1,129 @@
+<template>
+	<view>
+		
+		<view class="cu-list menu">
+			<block v-for="(item,index) in plist" :key="index">
+				<view class="cu-item arrow" @tap="goLPage('/pages/broker/getorder?id='+item.id)">
+					<view class="content padding-tb-sm">
+						<view>{{item.demand.title}}</view>
+						<view class="text-gray text-sm">招聘工厂:{{item.demand.worker.title}}</view>
+						<view class="text-gray text-sm">剩余人数:{{item.snatch_num}}</view>
+					</view>
+					<view class="action text-gray">{{item.status_text}}</view>
+				</view>
+			</block>
+		</view>
+		<uni-load-more :status="pstatus"></uni-load-more>
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				brokerinfo: {},
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: [],
+				
+				followstatus: 0,
+				followstatusarr: ['全部','未跟进', '未面试', '面试通过', '面试未通过', '用户放弃', '已入职', '已离职']
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			if (_this.brokerinfo===false){
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			getMore: function() {
+				_this.$req.ajax({
+					path: "broker/listorder",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						brokerid: _this.brokerinfo.id,
+						followstatus: _this.followstatus
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			tabSelect: function(e) {
+				_this.followstatus = e.currentTarget.dataset.followstatus;
+				_this.pageRefresh();
+			},
+			
+			goLPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.navigateTo({
+					url: pageurl,
+					fail: function(){
+						uni.switchTab({
+						    url: pageurl
+						});
+					}
+				});
+			},
+			
+			goNavPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.redirectTo({
+					url: pageurl
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	.cu-list.menu-avatar .cu-item{ height: 170rpx !important; }
+</style>
+

+ 150 - 0
pages/broker/myuser.vue

@@ -0,0 +1,150 @@
+<template>
+	<view>
+		<view class="cu-bar search bg-gray">
+			<view class="search-form round text-center">
+				<text class="cuIcon-search"></text>
+				<input v-model="searchval" :adjust-position="false" type="text" placeholder="搜索昵称或手机号" confirm-type="search" @confirm="pageRefresh()"></input>
+			</view>
+			<view class="action">
+				<button class="cu-btn bg-white shadow-blur round" @click="pageRefresh()">搜索</button>
+			</view>
+		</view>
+		<!-- <scroll-view scroll-x class="bg-white nav text-center solid-bottom">
+			<block v-for="(item,index) in followstatusarr" :key="index">
+			<view class="cu-item" :class="followstatus==index?'text-blue cur':''" @tap="tabSelect" :data-followstatus="index">{{item}}</view>
+			</block>
+		</scroll-view> -->
+		
+		<view class="cu-list menu-avatar">
+			<view class="cu-item" v-for="(item,index) in plist" :key="index">
+				<view class="cu-avatar round lg" :style="'background-image:url('+item.avatar+');'"></view>
+				<view class="content">
+					<view class="text-grey">{{item.nickname}}<text class="text-sm">({{item.mobile}})</text></view>
+					<view class="text-orange text-sm text-cut">{{ item.userFollow.length == 0 ? followstatusarr[item.followstatus] : item.userFollow[0].remark }}</view>
+					<view class="text-gray text-sm" v-if="item.userFollow.length == 0">注册时间:{{item.createtime}}</view>
+					<view class="text-gray text-sm" v-else>最近跟进:{{item.userFollow[0].createtime}}</view>
+				</view>
+				<view class="action basis-xs">
+					<view class="text-grey text-sm">{{followstatusarr[item.followstatus]}}</view>
+					<view class="cu-tag bg-blue margin-top-xs" @tap="goLPage('/pages/broker/setfollow?userid='+item.id)">我要跟进</view>
+				</view>
+			</view>
+		</view>
+		
+		<uni-load-more :status="pstatus"></uni-load-more>
+
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				brokerinfo: {},
+				searchval: "",
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: [],
+				
+				followstatus: 0,
+				followstatusarr: ['全部','未跟进', '未面试', '面试通过', '面试未通过', '用户放弃', '已入职', '已离职']
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			if (_this.brokerinfo===false){
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			getMore: function() {
+				_this.$req.ajax({
+					path: "broker/listuser",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						brokerid: _this.brokerinfo.id,
+						followstatus: _this.followstatus,
+						keyword: _this.searchval,
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			tabSelect: function(e) {
+				_this.followstatus = e.currentTarget.dataset.followstatus;
+				_this.pageRefresh();
+			},
+			
+			goLPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.navigateTo({
+					url: pageurl,
+					fail: function(){
+						uni.switchTab({
+						    url: pageurl
+						});
+					}
+				});
+			},
+			
+			goNavPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.redirectTo({
+					url: pageurl
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	.cu-list.menu-avatar .cu-item{ height: 170rpx !important; }
+</style>

+ 113 - 0
pages/broker/myworker.vue

@@ -0,0 +1,113 @@
+<template>
+	<view>
+		<view class="cu-bar search bg-gray">
+			<view class="search-form round text-center">
+				<text class="cuIcon-search"></text>
+				<input v-model="searchval" :adjust-position="false" type="text" placeholder="搜索店名或手机号" confirm-type="search" @confirm="pageRefresh()"></input>
+			</view>
+			<view class="action">
+				<button class="cu-btn bg-white shadow-blur round" @click="pageRefresh()">搜索</button>
+			</view>
+		</view>
+		<!-- <scroll-view scroll-x class="bg-white nav text-center solid-bottom">
+			<block v-for="(item,index) in followstatusarr" :key="index">
+			<view class="cu-item" :class="followstatus==index?'text-blue cur':''" @tap="tabSelect" :data-followstatus="index">{{item}}</view>
+			</block>
+		</scroll-view> -->
+		
+		<view class="cu-list menu-avatar">
+			<view class="cu-item" v-for="item in plist">
+				<view class="cu-avatar round lg" :style="'background-image:url('+item.tilpic+');'"></view>
+				<view class="content">
+					<view class="text-grey">{{item.title}}</view>
+					<view class="text-gray text-sm flex">
+						<text class="text-cut">{{item.mobile}}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+		<uni-load-more :status="pstatus"></uni-load-more>
+
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				brokerinfo: {},
+				searchval: "",
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: [],
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			if (_this.brokerinfo===false){
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			getMore: function() {
+				_this.$req.ajax({
+					path: "broker/listWorker",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						brokerid: _this.brokerinfo.id,
+						keyword: _this.searchval,
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+		}
+	}
+</script>
+
+<style>
+	.cu-list.menu-avatar .cu-item{ height: 170rpx !important; }
+</style>

+ 506 - 0
pages/broker/setentry.vue

@@ -0,0 +1,506 @@
+<template>
+	<view>
+		
+		<view class="cu-list menu margin-bottom">
+			<view class="cu-item">
+				<view class="content">
+					<text class="text-gray">代理门店</text>
+				</view>
+				<view class="action">
+					<text>{{broker.agent.title}}</text>
+				</view>
+			</view>
+		</view>
+		
+		<view v-if="entry==null">
+			<view class="cu-bar bg-white solids-bottom">
+				<view class="action">
+					<text class="cuIcon-titles text-blue"></text> 报备信息
+				</view>
+				<view class="action">
+					<!-- <text class="text-df text-blue">扫一扫 自动识别身份证</text> -->
+					<avatar selWidth="640rpx" selHeight="640rpx" @upload="setIdcard" :avatarSrc="$getImageUrl('static/images/applet/setidcard.png')" noTab="true" avatarStyle="width: 400rpx; height: 50rpx; border-radius: 5%;"></avatar>
+				</view>
+			</view>
+			<form>
+				<view class="cu-form-group">
+					<view class="title">姓名</view>
+					<input placeholder="请输入姓名..." @input="bindInput" data-val="realname" :value="forminfo.realname"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">手机号</view>
+					<input placeholder="请输入手机号..." @input="bindInput" data-val="mobile" :value="forminfo.mobile"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">身份证号</view>
+					<input placeholder="请输入身份证号..." @input="bindInput" data-val="idcard" :value="forminfo.idcard"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">性别</view>
+					<picker @change="genderChange" :value="forminfo.gender" :range="forminfo.genderarr">
+						<view class="picker">
+							{{forminfo.genderarr[forminfo.gender]}}
+						</view>
+					</picker> 
+				</view>
+				<view class="cu-form-group">
+					<view class="title">民族</view>
+					<input placeholder="请输入民族..." @input="bindInput" data-val="nation" :value="forminfo.nation"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">户籍地址</view>
+					<input placeholder="请输入户籍地址..." @input="bindInput" data-val="address" :value="forminfo.address"></input>
+				</view>
+				<view class="cu-form-group margin-top">
+					<view class="title">意向工厂</view>
+					<picker @change="factoryidChange" :value="forminfo.factoryid" :range="forminfo.factoryidarr">
+						<view class="picker">
+							{{forminfo.factoryidarr[forminfo.factoryid]}}
+						</view>
+					</picker> 
+				</view>
+				<view class="cu-form-group">
+					<view class="title">出发日期</view>
+					<picker mode="date" :value="forminfo.startdate" start="2019-01-01" end="2100-12-31" @change="startdateChange">
+						<view class="picker">
+							{{forminfo.startdate}}
+						</view>
+					</picker>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">到达日期</view>
+					<picker mode="date" :value="forminfo.enddate" start="2019-01-01" end="2100-12-31" @change="enddateChange">
+						<view class="picker">
+							{{forminfo.enddate}}
+						</view>
+					</picker>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">返费政策</view>
+					<input placeholder="请输入返费政策..." @input="bindInput" data-val="refpolicy" :value="forminfo.refpolicy"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">报备状态</view>
+					<picker @change="statusChange" :value="forminfo.status" :range="forminfo.statusarr">
+						<view class="picker">
+							{{forminfo.statusarr[forminfo.status]}}
+						</view>
+					</picker> 
+				</view>
+				<view class="cu-form-group align-start">
+					<view class="title">报备备注</view>
+					<textarea maxlength="140" placeholder="请输入报备备注..." @input="bindInput" data-val="agentremark" :value="forminfo.agentremark"></textarea>
+				</view>
+				
+				<view class="padding flex flex-direction">
+					<button class="cu-btn bg-orange margin-tb-sm lg" @tap="addEntry">确认提交</button>
+				</view>
+			</form>
+		</view>
+		<view v-else>
+			<view class="cu-bar bg-white solid-bottom margin-top">
+				<view class="action">
+					<text class="cuIcon-titles text-blue"></text> 报备信息
+				</view>
+			</view>
+			<view class="cu-list menu sm-border">
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">姓名</text>
+					</view>
+					<view class="action">
+						<text>{{entry.realname}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">手机号</text>
+					</view>
+					<view class="action">
+						<text>{{entry.mobile}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">性别</text>
+					</view>
+					<view class="action">
+						<text>{{entry.gender}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">民族</text>
+					</view>
+					<view class="action">
+						<text>{{entry.nation}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">地址</text>
+					</view>
+					<view class="action">
+						<text>{{entry.address}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">身份证号</text>
+					</view>
+					<view class="action">
+						<text>{{entry.idcard}}</text>
+					</view>
+				</view>
+			</view>
+			<view class="cu-list menu sm-border">
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">意向工厂</text>
+					</view>
+					<view class="action">
+						<text>{{entry.reportFactory.title}}</text>
+					</view>
+				</view>	
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">返费模式</text>
+					</view>
+					<view class="action">
+						<text>{{entry.reftype}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">返费政策</text>
+					</view>
+					<view class="action">
+						<text>{{entry.refpolicy}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">出发日期</text>
+					</view>
+					<view class="action">
+						<text>{{entry.startdate}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">到达日期</text>
+					</view>
+					<view class="action">
+						<text>{{entry.enddate}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">报备时间</text>
+					</view>
+					<view class="action">
+						<text>{{entry.createtime}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">报备备注</text>
+					</view>
+					<view class="action">
+						<text>{{entry.agentremark}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">报备状态</text>
+					</view>
+					<view class="action">
+						<text>{{statusarr[entry.status]}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">状态备注</text>
+					</view>
+					<view class="action">
+						<text>{{entry.remark}}</text>
+					</view>
+				</view>
+			</view>
+			<view class="padding flex flex-direction" v-if="entry.status==1">
+				<button class="cu-btn bg-orange margin-tb-sm lg" @tap="statusEntry">报备信息确认</button>
+				<button class="cu-btn bg-white margin-tb-sm lg" @tap="deleteEntry">删除报备信息</button>
+			</view>
+			<view class="padding"></view>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	import avatar from "@/components/yq-avatar/yq-avatar.vue";
+	var _this;
+	export default {
+		components: {
+			avatar
+		},
+		data() {
+			return {
+				isRotate: false,
+				brokerinfo: {},
+				entry: null,
+				broker: {},
+				
+				forminfo: {
+					realname: "",
+					mobile: "",
+					idcard: "",
+					gender: 0,
+					nation: "",
+					address: "",
+					factoryid: 0,
+					startdate: "",
+					enddate: "",
+					reftype: 0,
+					refpolicy: "",
+					agentremark: "",
+					status: 0,
+					
+					factoryidarr: [],
+					genderarr: ['男','女'],
+					reftypearr: ['小时工','一次性','管理费'],
+					statusarr: ['待确认', '已确认']
+				},
+				factorylist: [],
+				statusarr: ['','待确认', '已确认', '已入职', '未通过']
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			if (_this.brokerinfo===false){
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			var entryid = option.entryid || 0;
+			_this.$req.ajax({
+				path: "broker/getentry",
+				data: {
+					entryid: entryid,
+					brokerid: _this.brokerinfo.id
+				}
+			}).then((data) => {
+				_this.entry = data.entry;
+				_this.forminfo.factoryidarr = data.factoryidarr;
+				_this.forminfo.startdate = data.today;
+				_this.forminfo.enddate = data.today;
+				_this.factorylist = data.factorylist;
+				_this.broker = data.broker;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		methods: {
+			
+			// 身份证识别
+			setIdcard: function(rsp) {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajaxFile({
+					path: "attachment/tplfieldimage",
+					title:'正在上传',
+					filePath: rsp.path,
+					fileName:'file',
+				}).then((filedata) => {
+					var fdata = JSON.parse(filedata.data);
+					_this.$req.ajax({
+						path: "broker/setidcard",
+						title:'正在识别',
+						data: {
+							picpath: fdata.data.path
+						}
+					}).then((data) => {
+						// console.log("data: " + JSON.stringify(data));
+						_this.forminfo.realname = data.idcard.name;
+						_this.forminfo.idcard = data.idcard.num;
+						_this.forminfo.gender = data.idcard.sex=='男' ? 0 : 1;
+						_this.forminfo.nation = data.idcard.nationality;
+						_this.forminfo.address = data.idcard.address;
+						_this.isRotate = false;
+					}).catch((err) => {
+						uni.showModal({
+							title: '信息提示',
+							content: err,
+							showCancel: false
+						});
+						_this.isRotate = false;
+					});
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			
+			statusEntry: function() {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "broker/statusentry",
+					data: {
+						brokerid: _this.brokerinfo.id,
+						entryid: _this.entry.id
+					}
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: "报备信息确认成功。",
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								_this.entry = data.entry;
+							}
+						}
+					});
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			
+			deleteEntry: function() {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "broker/deleteentry",
+					data: {
+						brokerid: _this.brokerinfo.id,
+						entryid: _this.entry.id
+					}
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: "报备信息删除成功。",
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								uni.redirectTo({
+								    url: '/pages/broker/myentry'
+								});
+							}
+						}
+					});
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			
+			addEntry: function() {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "broker/addentry",
+					data: {
+						brokerid: _this.brokerinfo.id,
+						realname: _this.forminfo.realname,
+						mobile: _this.forminfo.mobile,
+						idcard: _this.forminfo.idcard,
+						gender: _this.forminfo.genderarr[_this.forminfo.gender],
+						nation: _this.forminfo.nation,
+						address: _this.forminfo.address,
+						factoryid: _this.factorylist[_this.forminfo.factoryid].id,
+						startdate: _this.forminfo.startdate,
+						enddate: _this.forminfo.enddate,
+						reftype: _this.forminfo.reftypearr[_this.forminfo.reftype],
+						refpolicy: _this.forminfo.refpolicy,
+						agentremark: _this.forminfo.agentremark,
+						status: parseInt(_this.forminfo.status) + 1,
+					}
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: "报备信息提交成功。",
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								_this.entry = data.entry;
+							}
+						}
+					});
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			
+			factoryidChange: function(e) {
+				_this.forminfo.factoryid = e.detail.value
+			},
+			statusChange: function(e) {
+				_this.forminfo.status = e.detail.value
+			},
+			reftypeChange: function(e) {
+				_this.forminfo.reftype = e.detail.value
+			},
+			startdateChange: function(e) {
+				_this.forminfo.startdate = e.detail.value
+			},
+			enddateChange: function(e) {
+				_this.forminfo.enddate = e.detail.value
+			},
+			genderChange: function(e) {
+				_this.forminfo.gender = e.detail.value
+			},
+			bindInput: function(e) {
+				var dataval = e.currentTarget.dataset.val;
+				_this.forminfo[dataval] = e.detail.value;
+			},
+			
+			makePhone: function() {
+				uni.makePhoneCall({
+					phoneNumber: _this.user.mobile
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	
+	.cu-form-group .title { min-width: calc(4em + 15px); }
+	
+</style>
+

+ 207 - 0
pages/broker/setfollow.vue

@@ -0,0 +1,207 @@
+<template>
+	<view>
+		
+		<scroll-view scroll-x class="bg-white radius nav echo-fixed-top">
+			<view class="flex text-center solid-bottom">
+				<view class="cu-item flex-sub" :class="1==TabCur?'text-blue cur':''" @tap="tabSelect" :data-id="1">
+					上报跟进信息
+				</view>
+				<view class="cu-item flex-sub" :class="2==TabCur?'text-blue cur':''" @tap="tabSelect" :data-id="2">
+					往期跟进记录
+				</view>
+			</view>
+		</scroll-view>
+		<view class="echo-fixed-top-empty"></view>
+		
+		<view class="cu-list menu margin-bottom-sm">
+			<view class="cu-item">
+				<view class="content">
+					<text>昵称/姓名</text>
+				</view>
+				<view class="action">
+					<text>{{user.nickname}} / {{user.realname}}</text>
+				</view>
+			</view>
+			<view class="cu-item">
+				<view class="content">
+					<text>当前状态</text>
+				</view>
+				<view class="action">
+					<text>{{forminfo.followstatusarr[parseInt(user.followstatus)-1]}}</text>
+				</view>
+			</view>
+			<view class="cu-item arrow" @tap="makePhone()">
+				<view class="content">
+					<text>手机号</text>
+				</view>
+				<view class="action">
+					<text>{{user.mobile}}</text>
+				</view>
+			</view>
+		</view>
+		
+		<form v-if="1==TabCur">
+			<view class="cu-form-group">
+				<view class="title">跟进状态</view>
+				<picker @change="followstatusChange" :value="forminfo.followstatus" :range="forminfo.followstatusarr">
+					<view class="picker">
+						{{forminfo.followstatusarr[forminfo.followstatus]}}
+					</view>
+				</picker> 
+			</view>
+			<view class="cu-form-group">
+				<view class="title">跟进方式</view>
+				<picker @change="ftypeChange" :value="forminfo.ftype" :range="forminfo.ftypearr">
+					<view class="picker">
+						{{forminfo.ftypearr[forminfo.ftype]}}
+					</view>
+				</picker> 
+			</view>
+			<view class="cu-form-group align-start">
+				<view class="title">备注信息</view>
+				<textarea maxlength="-1" placeholder="请输入跟进的具体内容..." @input="bindInput" data-val="remark" :value="forminfo.remark"></textarea>
+			</view>
+			<view class="padding flex flex-direction">
+				<button class="cu-btn bg-blue margin-tb-sm lg" @tap="sendFollow">确认提交</button>
+			</view>
+		</form>
+		
+		<block v-if="2==TabCur">
+			<view class="padding text-center text-grey" v-if="user.userFollow.length==0">
+				还没有有跟进记录...
+			</view>
+			<view v-else>
+				<view class="cu-timeline" v-for="(item,index) in user.userFollow" :key="index">
+					<view class="cu-time">{{item.createtime}}</view>
+					<view class="cu-item text-blue">
+						<view class="content">
+							<text>【{{item.ftype}}】</text> {{item.remark}}
+						</view>
+					</view>
+				</view>
+			</view>
+		</block>
+		
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				TabCur: 1,
+				isRotate: false,
+				brokerinfo: {},
+				user: {},
+				
+				forminfo: {
+					followstatusarr: ['未跟进', '未面试', '面试通过', '面试未通过', '用户放弃', '已入职', '已离职'],
+					followstatus: 0,
+					ftypearr: ['电话', '微信/QQ', '其他'],
+					ftype: 0,
+					remark: ""
+				}
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			var userid = option.userid || 0;
+			_this.$req.ajax({
+				path: "broker/getmyuser",
+				data: {
+					userid: userid,
+					brokerid: _this.brokerinfo.id
+				}
+			}).then((data) => {
+				_this.user = data.user;
+				_this.forminfo.followstatus = parseInt(data.user.followstatus) - 1;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		methods: {
+			sendFollow: function() {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "broker/sendfollow",
+					data: {
+						userid: _this.user.id,
+						followstatus: parseInt(_this.forminfo.followstatus) + 1,
+						ftype: _this.forminfo.ftypearr[_this.forminfo.ftype],
+						remark: _this.forminfo.remark
+					}
+				}).then((data) => {
+					_this.user = data.user;
+					_this.forminfo.followstatus = parseInt(data.user.followstatus) - 1;
+					uni.showModal({
+						title: '信息提示',
+						content: "跟进信息提交成功。",
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								_this.TabCur = 2;
+							}
+						}
+					});
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			
+			
+			followstatusChange: function(e) {
+				_this.forminfo.followstatus = e.detail.value
+			},
+			ftypeChange: function(e) {
+				_this.forminfo.ftype = e.detail.value
+			},
+			bindInput: function(e) {
+				var dataval = e.currentTarget.dataset.val;
+				_this.forminfo[dataval] = e.detail.value;
+			},
+			
+			makePhone: function() {
+				uni.makePhoneCall({
+					phoneNumber: _this.user.mobile
+				});
+			},
+			goLPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.navigateTo({
+					url: pageurl,
+					fail: function(){
+						uni.switchTab({
+						    url: pageurl
+						});
+					}
+				});
+			},
+			tabSelect: function(e) {
+				_this.TabCur = e.currentTarget.dataset.id;
+			}
+		}
+	}
+</script>
+
+<style>
+	.cu-time{ width: 300rpx !important; padding-left: 30rpx !important; text-align: left !important; }
+</style>
+

+ 293 - 0
pages/broker/setreport.vue

@@ -0,0 +1,293 @@
+<template>
+	<view>
+		<scroll-view scroll-x class="bg-white nav margin-bottom-xs">
+			<view class="flex text-center">
+				<view class="cu-item flex-sub" :class="tabcur==1?'text-blue cur':''" @tap="tabSelect" :data-tabcur="1">
+					报备信息
+				</view>
+				<view class="cu-item flex-sub" :class="tabcur==2?'text-blue cur':''" @tap="tabSelect" :data-tabcur="2">
+					我的用户库
+				</view>
+			</view>
+		</scroll-view>
+		
+		<view v-if="tabcur==1">
+			<!-- <view class="setidcard" @tap="setIdcard">
+				<image :src="$getImageUrl('static/images/applet/setidcard.png')"></image>
+			</view> -->
+			<form>
+				<view class="cu-form-group">
+					<view class="title">姓名</view>
+					<input placeholder="请输入姓名..." @input="bindInput" data-val="realname" :value="forminfo.realname"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">手机号</view>
+					<input placeholder="请输入手机号..." @input="bindInput" data-val="mobile" :value="forminfo.mobile"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">身份证号</view>
+					<input placeholder="请输入身份证号..." @input="bindInput" data-val="idcard" :value="forminfo.idcard"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">预计出发日期</view>
+					<picker mode="date" :value="forminfo.arrivetime" @change="arrivetimeChange">
+						<view class="picker">
+							{{forminfo.arrivetime?forminfo.arrivetime:'请选择时间'}}
+						</view>
+					</picker>
+				</view>
+				<view class="cu-form-group align-start">
+					<view class="title">报备备注</view>
+					<textarea maxlength="140" placeholder="请输入报备备注..." @input="bindInput" data-val="remark" :value="forminfo.remark"></textarea>
+				</view>
+				<view class="padding flex flex-direction">
+					<button class="cu-btn bg-blue margin-tb-sm lg" @tap="addReport">确认提交</button>
+				</view>
+			</form>
+		</view>
+		<view v-else>
+			<view class="cu-bar search bg-white solid-bottom">
+				<view class="search-form round">
+					<text class="cuIcon-search"></text>
+					<input @input="searchInput" :value="searchval" :adjust-position="false" type="text" placeholder="搜索用户昵称、姓名、手机号" confirm-type="search"></input>
+				</view>
+				<view class="action">
+					<button class="cu-btn bg-blue shadow-blur round" @click="pageRefresh()">搜索</button>
+				</view>
+			</view>
+			<view class="cu-list menu-avatar">
+				<block v-for="(item,index) in plist" :key="index">
+					<view class="cu-item" :data-index="index" @tap="checkUser">
+						<view class="cu-avatar radius lg" :style="'background-image:url('+item.avatar+');'"></view>
+						<view class="content">
+							<view>
+								<view class="text-cut">{{item.nickname}}</view>
+								<view class="cu-tag round bg-orange sm" v-if="item.authstatus==3">{{item.authstatus_text}}</view>
+							</view>
+							<view class="text-gray text-sm flex"> <view class="text-cut">{{item.mobile}} - {{item.realname}}</view></view>
+						</view>
+						<view class="action">
+							<text class="lg text-gray cuIcon-right"></text>
+						</view>
+					</view>
+				</block>
+			</view>
+			<uni-load-more :status="pstatus"></uni-load-more>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	import avatar from "@/components/yq-avatar/yq-avatar.vue";
+	var _this;
+	export default {
+		components: {
+			avatar,
+			uniLoadMore
+		},
+		data() {
+			return {
+				isRotate: false,
+				userinfo: {},
+				broker: {},
+				snatchid: 0,
+				tabcur: 1,
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: [],
+				searchval: "",
+				
+				forminfo: {
+					realname: "",
+					mobile: "",
+					idcard: "",
+					arrivetime: "",
+					remark: ""
+				}
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.snatchid = option.id || 0;
+			_this.userinfo = _this.checkLogin("/pages/my/myinfo");
+			_this.broker = uni.getStorageSync('brokerinfo');
+		},
+		onPullDownRefresh: function() {
+			_this.pageRefresh();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			
+			// 身份证识别
+			setIdcard: function(rsp) {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				uni.chooseImage({
+					count: 1,
+					sizeType: ['original', 'compressed'],
+					sourceType: ['album'],
+					success: (res) => {
+						_this.$req.ajaxFile({
+							path: "attachment/tplfieldimage",
+							title:'正在上传',
+							filePath: res.tempFilePaths[0],
+							fileName:'file',
+						}).then((filedata) => {
+							var fdata = JSON.parse(filedata.data);
+							_this.$req.ajax({
+								path: "comjobs/disidcard",
+								title:'正在识别',
+								data: {
+									picpath: fdata.data.path
+								}
+							}).then((data) => {
+								_this.forminfo.realname = data.idcard.name;
+								_this.forminfo.idcard = data.idcard.num;
+								_this.isRotate = false;
+							}).catch((err) => {
+								uni.showModal({
+									title: '信息提示',
+									content: err,
+									showCancel: false
+								});
+								_this.isRotate = false;
+							});
+						}).catch((err) => {
+							uni.showModal({
+								title: '信息提示',
+								content: err,
+								showCancel: false
+							});
+							_this.isRotate = false;
+						});
+					}
+				});
+			},
+			
+			
+			addReport: function() {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "broker/addreport",
+					data: {
+						snatchid: _this.snatchid,
+						brokerid: _this.broker.id,
+						realname: _this.forminfo.realname,
+						mobile: _this.forminfo.mobile,
+						idcard: _this.forminfo.idcard,
+						arrivetime: _this.forminfo.arrivetime,
+						remark: _this.forminfo.remark
+					}
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: "报备信息提交成功。",
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								_this.forminfo.realname = "";
+								_this.forminfo.mobile = "";
+								_this.forminfo.idcard = "";
+								_this.forminfo.remark = "";
+							}
+						}
+					});
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			
+			
+			checkBroker: function(e) {
+				var index = e.currentTarget.dataset.index;
+				_this.broker = _this.brokerall[index];
+			},
+			
+			arrivetimeChange: function(e) {
+				_this.forminfo.arrivetime = e.detail.value
+			},
+			bindInput: function(e) {
+				var dataval = e.currentTarget.dataset.val;
+				_this.forminfo[dataval] = e.detail.value;
+			},
+			
+			
+			
+			checkUser: function(e) {
+				var index = e.currentTarget.dataset.index;
+				var user = _this.plist[index];
+				_this.forminfo.realname = user.realname;
+				_this.forminfo.mobile = user.mobile;
+				_this.forminfo.idcard = user.idcard;
+				_this.tabcur = 1;
+			},
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			searchInput: function(e) {
+				_this.searchval = e.detail.value;
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "comjobs/getuserlist",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						userid: _this.userinfo.id,
+						searchval: _this.searchval
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			tabSelect: function(e) {
+				_this.tabcur = e.currentTarget.dataset.tabcur;
+				_this.pageRefresh();
+			}
+		}
+	}
+</script>
+
+<style>
+	
+	.cu-form-group .title { min-width: calc(4em + 15px); }
+	.cu-form-group input{ text-align: right; }
+	
+	.setidcard{ width: 120rpx; height: 120rpx; position: fixed; right: 60rpx; bottom: 60rpx; z-index: 999; }
+	.setidcard image{ width: 120rpx; height: 120rpx; }
+	
+</style>
+

+ 389 - 0
pages/comjobs/comjobs.vue

@@ -0,0 +1,389 @@
+<template>
+	<view>
+		<view class="cu-bar search bg-gray">
+			<view class="search-form round text-center">
+				<text class="cuIcon-search"></text>
+				<input v-model="searchval" :adjust-position="false" type="text" placeholder="搜索岗位或公司" confirm-type="search" @confirm="btnSearch()"></input>
+			</view>
+			<view class="action" v-if="searchval!==''">
+				<button class="cu-btn bg-white shadow-blur round" @click="btnSearch()">搜索</button>
+			</view>
+		</view>
+ 
+		<view class="filterbg">
+			<view class="flex justify-between solids-bottom padding bg-white">
+				<view class="text-bold"><view class="cu-tag radius bg-red" @tap="resetFilter">重置</view></view>
+				<view class="flex justify-end">
+					<view class="cu-tag radius bg-green" data-filterbox="rectype" @tap="showFilter">{{rectypelist.title}}</view>
+					<view class="cu-tag radius bg-green" data-filterbox="wtype" @tap="showFilter">{{wtypelist.title}}</view>
+					<view class="cu-tag radius bg-green" data-filterbox="cate" @tap="showFilter">{{catelist.title}}</view>
+					<view class="cu-tag radius bg-green" data-filterbox="area" @tap="showFilter">{{arealist.title}}</view>
+				</view>
+			</view>
+			 
+			<view class="filtercon" v-if="filterbox!==null" @click="hideFilter()">
+				<view class="padding bg-white" v-if="filterbox=='rectype'" @click.stop>
+					<block v-for="(item,index) in rectypelist.data" :key="index">
+						<button class="cu-btn margin-lr-xs margin-tb-xs" @click="checkRectype(item.title,item.value)">{{item.title}}</button>
+					</block>
+				</view>
+				
+				<view class="padding bg-white" v-if="filterbox=='wtype'" @click.stop>
+					<block v-for="(item,index) in wtypelist.data" :key="index">
+						<button class="cu-btn margin-lr-xs margin-tb-xs" @click="checkWtype(item.title,item.value)">{{item.title}}</button>
+					</block>
+				</view>
+				<view class="padding bg-white" v-if="filterbox=='cate'" @click.stop>
+					<block v-for="(item,index) in catelist.data" :key="index">
+						<button class="cu-btn margin-lr-xs margin-tb-xs" @click="checkCate(item.title,item.value)">{{item.title}}</button>
+					</block>
+				</view>
+				
+				<view class="grid margin-bottom text-left col-3 bg-white" v-if="filterbox=='area'" @click.stop>
+					<view class="solids-right padding-bottom">
+						<scroll-view scroll-y="true" style="height: 600rpx;">
+							<view class="solid-bottom text-gray padding-lr-sm padding-tb-sm">选择市</view>
+							<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(4,0)">全部</view>
+							<block v-for="(item,index) in arealist.data" :key="index">
+								<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(1,index)">{{item.title}}</view>
+							</block>
+						</scroll-view>
+					</view>
+					<view class="solids-right padding-bottom">
+						<scroll-view scroll-y="true" style="height: 600rpx;">
+							<view class="solid-bottom text-gray padding-lr-sm padding-tb-sm">选择区县</view>
+							<block v-for="(item,index) in arealist.cityarr" :key="index">
+								<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(2,index)">{{item.title}}</view>
+							</block>
+						</scroll-view>
+					</view>
+					<view class="padding-bottom">
+						<scroll-view scroll-y="true" style="height: 600rpx;">
+							<view class="solid-bottom text-gray padding-lr-sm padding-tb-sm">选择镇街</view>
+							<block v-for="(item,index) in arealist.districtarr" :key="index">
+								<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(3,index)">{{item.title}}</view>
+							</block>
+						</scroll-view>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+		<block v-for="(item,index) in plist" :key="index">
+			<view class="cu-card dynamic no-card solid-bottom echo-comjobs-item padding-top-sm padding-lr-sm radius">
+				<view class="cu-item shadow padding-top-sm padding-bottom" @tap="goDetail(item.id)">
+					<view class="padding-lr flex justify-between align-center">
+						<view class="basis-lg text-bold text-df text-cut">
+							{{item.title}}
+							<text class="text-red text-sm" v-if="item.wtype==1">(按月)</text>
+							<text class="text-red text-sm" v-if="item.wtype==2">(按时)</text>
+							<text class="text-red text-sm" v-if="item.wtype==3">(按件)</text>
+							<text class="text-red text-sm" v-if="item.wtype==4">(按项目)</text>
+							<text class="text-sm">{{item.recruit_num}}名</text>
+						</view>
+						<view class="basis-sm text-cut text-right text-gray text-sm">
+							<view><text class="text-red text-bold">{{item.zwagall}}</text></view>
+							<view v-if="item.recruitment_cate == 2"><text class="text-red text-bold">悬赏{{item.retmoney}}{{item.is_pay == 1 ? '(已支付)' : ''}}</text></view>
+						</view>
+					</view>
+					<view class="padding-lr padding-tb-xs text-cut">
+						<view v-for="(titem,tindex) in item.tags" :key="tindex" class="cu-tag light bg-blue lg echo-tags-item">{{titem}}</view>
+					</view>
+					<view class="padding-lr text-cut text-sm flex justify-between align-center">
+						<view class="basis-lg text-df text-cut">{{item.worker.title}}</view>
+						<view class="basis-sm text-cut text-right text-sm">
+							浏览量:{{item.volume}}
+						</view>
+					</view>
+					<!-- <view class="text-gray padding-lr flex align-center justify-between" @tap="goShop(item.workerid)">
+						<view class="flex align-center">
+							<image class="iconyrz" :src="$getImageUrl('static/images/applet/iconyrz.png')" mode="scaleToFill"></image>
+							<image class="iconwyp" :src="$getImageUrl('static/images/applet/iconwyp.png')" mode="scaleToFill" v-if="item.recruitment_cate==2"></image>
+						</view>
+						<view class="text-gray text-right basis-xs text-sm">
+							<text class="cuIcon-shop margin-right-xs text-lg"></text>
+							进店
+						</view>
+					</view> -->
+				</view>
+			</view>
+		</block>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		<wxContact></wxContact>
+		
+		<view class="padding-sm"></view>
+		<view class="padding-xl"></view>
+		<view class="cu-bar tabbar bg-white foot">
+			<view class="action text-gray" @tap="goNavPage('/pages/index/index')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/index.png"></image>
+				</view>
+				首页
+			</view>
+			<view class="action text-blue" @tap="goNavPage('/pages/comjobs/comjobs')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/jobsSelected.png"></image>
+				</view>
+				招聘
+			</view>
+			<!-- #ifndef MP-WEIXIN -->
+			<view class="action text-gray videoimg" @tap="goNavPage('/pages/video/videolist')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/video.png"></image>
+				</view>
+				微工作
+			</view>
+			<!-- #endif -->
+			
+			<view class="action text-gray" @tap="goNavPage('/pages/broker/brokerlist')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/broker.png"></image>
+				</view>
+				经纪人
+			</view>
+			
+			<view class="action text-gray" @tap="goNavPage('/pages/my/my')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/my.png"></image>
+				</view>
+				我的
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import slFilter from '@/components/sl-filter/sl-filter.vue';
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			slFilter,
+			uniLoadMore
+		},
+		data() {
+			return {
+				filterbox: null,
+				rectypelist: {
+					title: "悬赏/普通",
+					value: 0
+				},
+				wtypelist: {
+					title: "类型",
+					value: 0,
+					data: []
+				},
+				catelist: {
+					title: "岗位",
+					value: 0,
+					data: []
+				},
+				arealist: {
+					title: "区域",
+					value: "",
+					cityarr: [],
+					districtarr: [],
+					area_2: 0,
+					data: [],
+					community: "",
+				},
+				
+				searchval: "",
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(option){
+			_this = this;
+			_this.searchval = option.searchval || "";
+			_this.$req.ajax({
+				path: "comjobs/pagecomjobs",
+			}).then((data) => {
+				_this.catelist.data = data.catelist;
+				_this.wtypelist.data = data.wtypelist;
+				_this.rectypelist.data = data.rectypelist;
+				_this.arealist.data = require('@/common/area.json');
+				_this.getMore();
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onPullDownRefresh: function() {
+			_this.pageRefresh();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "企业招聘",
+				path: "/pages/comjobs/comjobs"
+		    }
+		},
+		methods: {
+			showFilter: function(e) {
+				var nowfilterbox = e.currentTarget.dataset.filterbox;
+				if (_this.filterbox == nowfilterbox){
+					_this.filterbox = null;
+				}else{
+					_this.filterbox = nowfilterbox;
+				}
+				uni.pageScrollTo({
+				    scrollTop: 0,
+				    duration: 300
+				});
+			},
+			hideFilter: function(e) {
+				_this.filterbox = null;
+			},
+			checkRectype: function(title,value) {
+				_this.rectypelist.title = title;
+				_this.rectypelist.value = value;
+				_this.filterbox = null;
+				_this.pageRefresh();
+			},
+			checkWtype: function(title,value) {
+				_this.wtypelist.title = title;
+				_this.wtypelist.value = value;
+				_this.filterbox = null;
+				_this.pageRefresh();
+			},
+			checkCate: function(title,value) {
+				_this.catelist.title = title;
+				_this.catelist.value = value;
+				_this.filterbox = null;
+				_this.pageRefresh();
+			},
+			checkArea: function(level, index) {
+				if (level==1){
+					_this.arealist.cityarr = _this.arealist.data[index].children;
+					_this.arealist.districtarr = [];
+				}else if (level==2){
+					_this.arealist.districtarr = _this.arealist.cityarr[index].children;
+					_this.arealist.area_2 = _this.arealist.cityarr[index].value;
+				}else if (level==3){
+					_this.arealist.value = _this.arealist.community = "";
+					_this.arealist.title = _this.arealist.districtarr[index].title;
+					if (_this.arealist.area_2 == "350582") {
+						//晋江
+						if (_this.arealist.cityarr[index].value == "350582") {
+							_this.arealist.value = _this.arealist.districtarr[index].title;
+						} else {
+							_this.arealist.community = _this.arealist.districtarr[index].value;
+						}
+					} else {
+						//其他区域
+						_this.arealist.value = _this.arealist.districtarr[index].title;
+					}
+					
+					_this.filterbox = null;
+					_this.pageRefresh();
+				}else if (level==4){
+					_this.arealist.cityarr = [];
+					_this.arealist.districtarr = [];
+					_this.arealist.title = "全部";
+					_this.arealist.value = "";
+					_this.filterbox = null;
+					_this.pageRefresh();
+				}
+			},
+			
+			// 搜索
+			bindInput: function(e) {
+				_this.searchval = e.detail.value;
+			},
+			btnSearch: function() {
+				if (_this.searchval == "") {
+					uni.showModal({
+						title: '信息提示',
+						content: "请输入要搜索的关键字...",
+						showCancel: false
+					});
+					return false;
+				}
+				_this.pageRefresh();
+			},
+			resetFilter: function() {
+				_this.searchval = "";
+				_this.rectypelist.title = '悬赏/普通';
+				_this.rectypelist.value = 0;
+				_this.wtypelist.title = '类型';
+				_this.wtypelist.value = 0;
+				_this.catelist.title = '岗位';
+				_this.catelist.value = 0;
+				_this.arealist.title = '区域';
+				_this.arealist.value = '';
+				_this.arealist.cityarr = [];
+				_this.arealist.districtarr = [];
+				_this.pageRefresh();
+			},
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "comjobs/listcomjobs",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						searchval: _this.searchval,
+						cateid: _this.catelist.value,
+						wtype: _this.wtypelist.value,
+						rectype: _this.rectypelist.value,
+						district: _this.arealist.value,
+						community: _this.arealist.community
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goDetail: function(comjobsid) {
+				uni.navigateTo({
+					url: '/pages/comjobs/detail?comjobsid=' + comjobsid
+				});
+			},
+			goShop: function(workerid) {
+				uni.navigateTo({
+					url: '/pages/worker/shop?workerid=' + workerid
+				});
+			},
+			result: function(e) {
+				_this.cateid = e.cateid;
+				_this.wtype = e.wtype;
+				_this.province = e.province;
+				_this.pageRefresh();
+			},
+			
+			goNavPage: function(pageurl) {
+				uni.redirectTo({
+					url: pageurl
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+</style>

+ 574 - 0
pages/comjobs/detail.vue

@@ -0,0 +1,574 @@
+<template>
+	<view v-if="pageloading">
+		<view class="padding-lr padding-tb margin-bottom-sm bg-white">
+			<view class="bg-white padding-top-sm text-xl text-black text-bold flex align-end">
+				<view class="basis-lg">
+					{{comjobs.title}}
+					<text class="text-red text-sm" v-if="comjobs.wtype==1">(按月)</text>
+					<text class="text-red text-sm" v-if="comjobs.wtype==2">(按时)</text>
+					<text class="text-red text-sm" v-if="comjobs.wtype==3">(按件)</text>
+					<text class="text-red text-sm" v-if="comjobs.wtype==4">(按项目)</text>
+					<text class="text-sm">{{comjobs.recruit_num}}名</text>
+				</view>
+				<view class="basis-sm text-right text-df">
+					<view><text class="text-red text-bold">{{comjobs.zwagall}}</text></view>
+				</view>
+			</view>
+			<view class="bg-white padding-top text-gray">
+				<view v-for="(item,index) in comjobs.tags" :key="index" class="cu-tag light bg-blue echo-tags-item">{{item}}</view>
+			</view>
+			<view class="text-gray padding-top-sm pad text-sm flex justify-between">
+				<view class="text-red">{{sex_text}}</view>
+				<view>截止日期:{{comjobs.enddate}}</view>
+			</view>
+		</view>
+		
+		<block v-if="comjobs.recruitment_cate==2">
+			<view class="cu-bar bg-white">
+				<view class="action">
+					<text class="cuIcon-titles text-blue"></text> 推广介绍
+				</view>
+			</view>
+			<view class="echo-article-details bg-white solids-bottom flex justify-between" style="padding-top: 0rpx;">
+				<view>
+					<view class="text-lg">推荐一位朋友入职奖励:<text class="text-red">{{comjobs.retmoney}}</text></view>
+					<view class="text-red" v-if="comjobs.is_pay == 1">对方已支付悬赏金</view>
+				</view>
+				<view v-if="brokertol==0" @tap="gotoBroker">
+					<image :src="$getImageUrl('static/images/applet/retmoney.png')" mode="widthFix" style="width: 64rpx;"></image> 
+				</view>
+				<navigator :url="'/pages/comjobs/setreport?comjobsid='+comjobs.id" open-type="navigate" v-else>
+					<image :src="$getImageUrl('static/images/applet/retmoney.png')" mode="widthFix" style="width: 64rpx;"></image>  
+				</navigator>
+			</view>
+		</block>
+		
+		<view class="cu-bar bg-white">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 职位详情
+			</view>
+		</view>
+		<view class="echo-article-details bg-white solids-bottom" style="padding-top: 0rpx;">
+			<text>{{comjobs.comdetails}}</text>
+		</view>
+		
+		<view class="cu-bar bg-white">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 任职要求
+			</view>
+		</view>
+		<view class="echo-article-details bg-white solids-bottom" style="padding-top: 0rpx;">
+			<text>{{comjobs.requirement}}</text>
+		</view>
+		
+		<view class="cu-bar bg-white">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 环境图片
+			</view>
+			<view class="action" data-modalname="picallModal" @tap="showModal">
+				<text class="text-df">查看全部 </text>
+				<view class="cuIcon-right"></view>
+			</view>
+		</view>
+		<view class="echo-article-details bg-white flex justify-between" v-if="comjobs.picall.length != 0" style="padding-top: 0rpx;" data-modalname="picallModal" @tap="showModal">
+			<image class="picallitem" :src="comjobs.picall[0]" mode="aspectFill"></image>
+			<image class="picallitem" :src="comjobs.picall[1]" mode="aspectFill"></image>
+		</view>
+		<view v-if="videosrc!==null" class="bg-white" style="padding: 0rpx 30rpx 30rpx 30rpx;" data-modalname="videoModal" @tap="showModal">
+			<image style="width: 690rpx;" src="https://sc.laowushangcheng.com/static/images/videobtn.jpg" mode="widthFix"></image>
+		</view>
+		<!-- <view class="echo-article-details bg-white" style="padding-top: 0rpx;">
+			<video v-if="videosrc!==null && modal.name==null" class="myVideo" poster="https://sc.laowushangcheng.com/static/images/videopic.jpg" :src="videosrc" enable-danmu :controls="true"></video>
+		</view> -->
+		
+		<view class="cu-bar bg-white solids-top">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 企业介绍
+			</view>
+		</view>
+		<view class="echo-article-details bg-white" style="padding-top: 0rpx;">
+			<text>{{comjobs.companydetails}}</text>
+		</view>
+		<view class="echo-article-details bg-white solids-bottom flex justify-start">
+			<image class="solid margin-right-sm" :src="comjobs.worker.tilpic" style="width: 150rpx; height: 150rpx;"></image> 
+			<view>
+				<view @tap="goShop(comjobs.workerid)">本信息由<text class="text-red">{{comjobs.worker.title}}</text>发布</view>
+				<view class="flex align-center justify-between padding-bottom-xs align-center" style="width: 520rpx;">
+					<view class="flex align-center">
+						<image class="iconyrz" :src="$getImageUrl('static/images/applet/iconyrz.png')" mode="scaleToFill"></image>
+						<image class="iconwyp" :src="$getImageUrl('static/images/applet/iconwyp.png')" mode="scaleToFill" v-if="comjobs.recruitment_cate==2"></image>
+					</view>
+					<view class="text-gray text-right basis-xs text-sm" @tap="goShop(comjobs.workerid)">
+						<text class="cuIcon-shop margin-right-xs text-lg"></text>
+						进店
+					</view>
+				</view>
+				<view class="text-gray" @tap="setAddress()"><text class="cuIcon-locationfill text-blue margin-right-xs"></text> {{comjobs.worker.city}} {{comjobs.worker.district}} {{comjobs.worker.address}}</view>
+			</view>
+		</view>
+		
+		<view class="cu-bar bg-white">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 服务流程
+			</view>
+		</view>
+		<view class="echo-article-details bg-white solids-bottom" style="padding-top: 0rpx;">
+			<image :src="$getImageUrl('static/images/applet/detaillc.png')" mode="widthFix" style="width: 100%;"></image>
+		</view>
+		
+		<view class="padding"></view>
+		<view class="padding"></view>
+		<view class="cu-bar bg-white tabbar border shop foot">
+			<button class="text-gray action" data-modalname="shareModal" @tap="showModal" v-if="appplatform!='ios'">
+				<view class="padding-bottom-xs">
+					<image style="width: 38rpx; height: 38rpx;" :src="$getImageUrl('static/images/applet/detshare.png')"></image>
+				</view>
+				分享
+			</button>
+			<button class="text-gray action" @tap="setComjobsStar">
+				<view class="padding-bottom-xs">
+					<image style="width: 38rpx; height: 38rpx;" :src="$getImageUrl('static/images/applet/detstar.png')"></image>
+				</view>
+				{{comjobsstar==0 ? '收藏' : '已收藏'}}
+			</button>
+			<view class="bg-blue submit echo-foot-button" @tap="setComjobsLog" v-if="comjobs.status==3"> <text>立即报名</text> </view>
+			<view class="bg-grey submit echo-foot-button" v-else> <text>已招满</text> </view>
+		</view>
+		
+		
+		<view class="cu-modal bottom-modal show" v-if="modal.name=='videoModal'" @tap="hideModal">
+			<view class="cu-dialog" @tap.stop="">
+				<view class="cu-bar bg-white">
+					<view class="action text-black">视频</view>
+					<view class="action text-blue" @tap="hideModal">取消</view>
+				</view>
+				<view class="solid-top" v-if="videosrc!==null">
+					<video class="myVideo" :src="comjobs.video" enable-danmu :controls="true"></video>
+				</view>
+			</view>
+		</view>
+		
+		<view class="cu-modal bottom-modal show" v-if="modal.name=='picallModal'" @tap="hideModal">
+			<view class="cu-dialog" @tap.stop="">
+				<view class="cu-bar bg-white">
+					<view class="action text-black">环境图片</view>
+					<view class="action text-blue" @tap="hideModal">取消</view>
+				</view>
+				<view class="solid-top">
+					<scroll-view scroll-y="true" class="bg-white padding-tb padding-lr-sm solids-top echo-picalllist">
+						<view class="flex justify-between">
+							<view class="picitem">
+								<block v-for="(item,index) in comjobs.picall" :key="index">
+									<image class="solid" :data-current="index" @tap="previewImage" v-if="index%2==0" mode="widthFix" :src="item"></image>
+								</block>
+							</view>
+							<view class="picitem">
+								<block v-for="(item,index) in comjobs.picall" :key="index">
+									<image class="solid" :data-current="index" @tap="previewImage" v-if="index%2==1" mode="widthFix" :src="item"></image>
+								</block>
+							</view>
+						</view>
+					</scroll-view>				
+				</view>
+			</view>
+		</view>
+
+		<view class="cu-modal show" v-if="modal.name=='comjobspicModal'">
+			<view class="cu-dialog picmodal">
+				<view class="bg-img">
+					<image mode="widthFix" :src="modal.comjobspic"></image>
+					<view class="cu-bar justify-end text-white picmodalclose">
+						<view class="action" @tap="hideModal">
+							<text class="cuIcon-close "></text>
+						</view>
+					</view>
+				</view>
+				<view class="cu-bar bg-white margin-top-xs">
+					<view class="action margin-0 flex-sub solid-left" @tap="saveImage">保存到相册</view>
+				</view>
+			</view>
+		</view>
+		
+		<view class="cu-modal bottom-modal show" v-if="modal.name=='shareModal'" @tap="hideModal">
+			<view class="cu-dialog" @tap.stop="">
+				<view class="cu-bar bg-white">
+					<view class="action text-black">点击海报</view>
+					<view class="action text-blue" @tap="hideModal">取消</view>
+				</view>
+				<view class="solid-top">
+					<scroll-view scroll-y="true" class="bg-white padding-tb padding-lr-sm solids-top echo-picalllist">
+						<view class="cu-list grid col-2 no-border padding-lr">
+							<block v-for="(item,index) in comjobsshare" :key="index">
+								<view class="cu-item">
+									<view class="padding-lr-sm" @tap="getComjobsImage(item.id)">
+										<view class="bg-img" :style="'background-image:url(' + item.tilpic + ');'"></view>
+										<view class="padding-tb-xs text-cut">{{item.title}}</view>
+									</view>
+								</view>
+							</block>
+						</view>
+					</scroll-view>				
+				</view>
+			</view>
+		</view>
+		<wxContact ref="wxContact"></wxContact>
+	
+	</skeleton>
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				appplatform: "",
+				pageloading: false,
+				userinfo: {},
+				comjobs: null,
+				videosrc: null,
+				
+				comjobslist: {},
+				comjobsstar: 0,
+				comjobsshare: {},
+				brokertol: 0,
+
+				modal: {
+					name: null,
+					comjobspic: ""
+				}
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			//#ifdef APP-PLUS
+			_this.appplatform = uni.getSystemInfoSync().platform;
+			//#endif
+			var comjobsid = option.comjobsid || 0;
+			var parentid = option.parentid || 0;
+			if (option.scene) {
+				const scene = decodeURIComponent(option.scene);
+				if (scene != "undefined") {
+					comjobsid = scene.split("&")[0];
+					parentid = scene.split('&')[1];
+				}
+			}
+			if(option.q){
+				const q = decodeURIComponent(option.q);
+				if (q != "undefined") {
+					comjobsid = q.split("=")[1];
+				}
+			}
+			uni.setStorageSync('parentid', parentid);
+			_this.userinfo = uni.getStorageSync('userinfo') || null;
+			_this.$req.ajax({
+				path: "comjobs/getcomjobs",
+				title: "加载中...",
+				data: {
+					comjobsid: comjobsid,
+					userid: _this.userinfo == null ? 0 : _this.userinfo.id
+				}
+			}).then((data) => {
+				_this.comjobs = data.comjobs;
+				_this.comjobslist = data.comjobslist;
+				_this.comjobsstar = data.comjobsstar;
+				_this.comjobsshare = data.comjobsshare;
+				_this.brokertol = data.brokertol;
+				
+				setTimeout(function (){
+					_this.videosrc = _this.comjobs.video=='' ? null : _this.comjobs.video;
+				}, 1500);
+				_this.pageloading = true;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onShareAppMessage: function(res) {
+			_this.$req.ajax({
+				path: "comjobs/shareComjobs",
+				title: "分享中...",
+				data: {
+					userid: _this.userinfo.id
+				}
+			})
+			return {
+				title: _this.comjobs.title,
+				path: "/pages/comjobs/detail?comjobsid=" + _this.comjobs.id + "&parentid=" + _this.userinfo == null ? 0 : _this.userinfo.id
+			}
+		},
+		methods: {
+			
+			getComjobsImage: function(shareid) {
+				_this.userinfo = _this.checkLogin("/pages/comjobs/detail?comjobsid=" + _this.comjobs.id);
+				if (_this.userinfo === false) {
+					return false;
+				}
+				_this.$req.ajax({
+					title: "推广海报生成中...",
+					path: "comjobs/getcomjobsimage",
+					data: {
+						shareid: shareid,
+						userid: _this.userinfo.id,
+						comjobsid: _this.comjobs.id
+					}
+				}).then((data) => {
+					var t1 = Math.round(Math.random()*100);
+					_this.modal.comjobspic = data.comjobspic + '?' + t1;
+					_this.modal.name = "comjobspicModal";
+				}).catch((err) => {
+					uni.showModal({
+						title: '温馨提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			getComjobsCode: function() {
+				_this.userinfo = _this.checkLogin("/pages/comjobs/detail?comjobsid=" + _this.comjobs.id);
+				if (_this.userinfo === false) {
+					return false;
+				}
+				_this.$req.ajax({
+					title: "招聘简章生成中...",
+					path: "comjobs/getcomjobscode",
+					data: {
+						comjobsid: _this.comjobs.id,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					_this.modal.comjobspic = data.comjobspic;
+					_this.modal.isshow = "show";
+				}).catch((err) => {
+					uni.showModal({
+						title: '温馨提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+
+			saveImage: function() {
+				uni.downloadFile({
+					url: _this.modal.comjobspic, 
+					success: (res) => {
+						if (res.statusCode === 200) {
+							uni.saveImageToPhotosAlbum({
+								filePath: res.tempFilePath,
+								success: function() {
+									uni.showModal({
+										title: '信息提示',
+										content: "已保存到手机相册,注意查收。",
+										showCancel: false
+									});
+								}
+							});
+						}
+					}
+				});
+			},			
+			setComjobsLog: function() {
+				_this.userinfo = _this.checkLogin("/pages/comjobs/detail?comjobsid=" + _this.comjobs.id);
+				if (_this.userinfo === false) {
+					uni.navigateTo({
+						url: "/pages/my/myinfo?pageurl=/pages/comjobs/detail/comjobsid=" + _this.comjobs.id,
+					});
+					return false;
+				}
+				//检测用户信息是否完整
+				if(_this.userinfo.education=="" || _this.userinfo.address=="" || _this.userinfo.workexperience==""){
+					uni.navigateTo({
+						url: "/pages/my/myinfo?pageurl=/pages/comjobs/detail/comjobsid=" + _this.comjobs.id,
+					});
+					return false;
+				}
+				
+				_this.$req.ajax({
+					title: "报名中",
+					path: "comjobs/setcomjobslog",
+					data: {
+						comjobsid: _this.comjobs.id,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					if (data.is_public == 1) {
+						var confirmText = '联系对方';
+					} else {
+						var confirmText = '联系客服';
+					}
+					uni.showModal({
+						title: '温馨提示',
+						content: data.msg,
+						confirmText: confirmText,
+						cancelText: "好的",
+						success: function(res){
+							if (res.confirm) {
+								if (data.is_public == 1) {
+									uni.makePhoneCall({
+									   phoneNumber: data.mobile
+									});
+								} else {
+									_this.$refs.wxContact.showConcatModel();
+								}
+							}
+						},
+					});
+				}).catch((err) => {
+					uni.showModal({
+						title: '温馨提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+
+			setComjobsStar: function() {
+				_this.userinfo = _this.checkLogin("/pages/comjobs/detail?comjobsid=" + _this.comjobs.id);
+				if (_this.userinfo === false) {
+					return false;
+				}
+				_this.$req.ajax({
+					path: "comjobs/setcomjobsstar",
+					data: {
+						comjobsid: _this.comjobs.id,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					_this.comjobsstar = data.comjobsstar;
+				}).catch((err) => {
+					uni.showModal({
+						title: '温馨提示',
+						content: err,
+						showCancel: true
+					});
+				});
+			},
+			goPage: function(pageurl) {
+				uni.navigateTo({
+					url: pageurl,
+					fail: function() {
+						uni.switchTab({
+							url: pageurl
+						});
+					}
+				});
+			},
+			gotoBroker: function() {
+				uni.showModal({
+				    title: '温馨提示',
+				    content: '您还不是经纪人,请联系客服,申请成为经纪人',
+					confirmColor: "#007aff",
+				    success: function (res) {
+				        if (res.confirm) {
+							_this.$refs.wxContact.showConcatModel();
+				            // uni.redirectTo({
+				            // 	url: '/pages/form/form?formid=4'
+				            // });
+				        }
+				    }
+				});
+			},
+			goDetail: function(comjobsid) {
+				uni.navigateTo({
+					url: '/pages/comjobs/detail?comjobsid=' + comjobsid
+				});
+			},
+			goShop: function(workerid) {
+				uni.navigateTo({
+					url: '/pages/worker/shop?workerid=' + workerid
+				});
+			},
+			navigate: function(href, e) {
+				// #ifdef H5
+				location.href = href;
+				// #endif
+				// #ifndef H5
+				uni.navigateTo({
+					url: '/pages/tool/webview?pagesrc=' + encodeURIComponent(href)
+				});
+				// #endif
+			},
+			
+			setAddress: function() {
+				uni.openLocation({
+					latitude: parseFloat(_this.comjobs.worker.latitude),
+					longitude: parseFloat(_this.comjobs.worker.longitude),
+					name: _this.comjobs.worker.title,
+					address: _this.comjobs.worker.city + " " + _this.comjobs.worker.district + " " + _this.comjobs.worker.address,
+					success: function () {
+						console.log('success');
+					}
+				});
+			},
+			makeTelephone: function(e) {
+				var telephone = e.currentTarget.dataset.telephone;
+				uni.makePhoneCall({
+					phoneNumber: telephone
+				});
+			},
+			showModal: function(e) {
+				var modalname = e.currentTarget.dataset.modalname;
+				_this.modal.name = modalname;
+			},
+			hideModal: function() {
+				_this.modal.name = null;
+			},
+			previewImage: function(e) {
+				var current = e.currentTarget.dataset.current;
+				uni.previewImage({
+					current: current,
+					urls: _this.comjobs.picall
+				});
+			}
+		},
+		computed: {
+			sex_text() {
+				const arr = ['男女不限','男','女'];
+				return arr[_this.comjobs.sex];
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.flex-1 {
+		flex: 1;
+	}
+
+	.flex-6 {
+		flex: 6;
+	}
+
+	.picmodal {
+		width: 450rpx;
+		background-color: transparent;
+	}
+
+	.picmodal image {
+		width: 100%;
+	}
+
+	.picmodal .bg-img {
+		position: relative;
+	}
+
+	.picmodalclose {
+		position: absolute;
+		top: 0rpx;
+		right: 0rpx;
+	}
+	
+	.picallitem{ width: 340rpx; height: 260rpx; }
+	
+	.echo-picalllist{ height: calc(100vh - 105rpx); }
+	.echo-picalllist .picitem{ width: 345rpx !important; }
+	.echo-picalllist image{ width: 345rpx; padding-bottom: 15rpx; }
+	
+	.cu-item .bg-img{ width: 100%; height: 390rpx; background-position: center top; }
+	
+	.myVideo{ width: 750rpx; height: calc(100vh - 130px); }
+</style>

+ 141 - 0
pages/comjobs/log.vue

@@ -0,0 +1,141 @@
+<template>
+	<view>
+		<block v-for="(item,index) in plist" :key="index">
+			<view class="cu-card dynamic no-card solid-bottom echo-comjobs-item padding-top-sm padding-lr-sm radius">
+				<view class="cu-item shadow padding-top-sm padding-bottom" @tap="goDetail(item.comjobs.id)">
+					<view class="padding-lr flex justify-between align-center">
+						<view class="basis-lg text-bold text-df text-cut">
+							{{item.comjobs.title}}
+							<text class="text-red text-sm" v-if="item.comjobs.wtype==1">(按月)</text>
+							<text class="text-red text-sm" v-if="item.comjobs.wtype==2">(按时)</text>
+							<text class="text-red text-sm" v-if="item.comjobs.wtype==3">(按件)</text>
+							<text class="text-red text-sm" v-if="item.comjobs.wtype==4">(按项目)</text>
+						</view>
+						<view class="basis-sm text-cut text-right text-gray text-sm">
+							<view class="basis-xs text-cut text-right text-gray text-sm" @tap.stop="delLog(index, item.id)">取消报名</view>
+						</view>
+					</view>
+					<view class="padding-lr flex justify-between align-bottom">
+						<view class="basis-lg text-bold text-df text-cut">
+							<view><text class="text-red text-bold">{{item.comjobs.zwagall}}</text></view>
+						</view>
+						<view class="basis-sm text-cut text-right text-red text-sm">
+							{{item.status_text}}
+						</view>
+					</view>
+					<view class="padding-lr padding-tb-xs text-cut">
+						<view v-for="(titem,tindex) in item.comjobs.tags" :key="tindex" class="cu-tag light bg-blue lg echo-tags-item">{{titem}}</view>
+					</view>
+					<view class="padding-lr text-cut text-sm flex justify-between align-center">
+						<view class="basis-lg text-df text-cut">{{item.comjobs.worker.title}}</view>
+						<view class="basis-sm text-cut text-right text-sm">
+							浏览量:{{item.comjobs.volume}}
+						</view>
+					</view>
+				</view>
+			</view>
+		</block>
+		<uni-load-more :status="pstatus"></uni-load-more>
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				userinfo: {},
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			_this.userinfo = _this.checkLogin("/pages/comjobs/log");
+			if (_this.userinfo===false){
+				return false;
+			}
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			delLog: function(index,logid) {
+				uni.showModal({
+					title: '温馨提示',
+					content: '确定要删除吗?',
+					success(res) {
+						if (res.confirm) {
+							_this.$req.ajax({
+								path: "comjobs/dellog",
+								data: {
+									logid: logid,
+									userid: _this.userinfo.id
+								}
+							}).then((data) => {
+								_this.plist.splice(index, 1);
+							}).catch((err) => {
+								uni.showModal({
+									title: '信息提示',
+									content: err,
+									showCancel: false
+								});
+							});
+						}
+					}
+				});
+				
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "comjobs/listlog",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goDetail: function(comjobsid) {
+				uni.navigateTo({
+					url: '/pages/comjobs/detail?comjobsid=' + comjobsid
+				});
+			},
+			goShop: function(workerid) {
+				uni.navigateTo({
+					url: '/pages/worker/shop?workerid=' + workerid
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+</style>

+ 153 - 0
pages/comjobs/search.vue

@@ -0,0 +1,153 @@
+<template>
+	<view>
+		<view class="cu-bar search">
+			<view class="search-form round text-center">
+				<text class="cuIcon-search"></text>
+				<input @input="bindInput" :adjust-position="false" type="text" placeholder="搜索岗位或公司" confirm-type="search"></input>
+			</view>
+			<view class="action" v-if="searchval!==''">
+				<button class="cu-btn bg-white shadow-blur round" @click="btnSearch()">搜索</button>
+			</view>
+		</view>
+		<scroll-view scroll-x class="bg-white nav solid-bottom solid-bottom">
+			<view class="flex text-center">
+				<view class="cu-item flex-sub" :class="wtype==0?'text-blue cur':''" @tap="tabSelect" data-wtype="0">全部</view>
+				<view class="cu-item flex-sub" :class="wtype==1?'text-blue cur':''" @tap="tabSelect" data-wtype="1">按月</view>
+				<view class="cu-item flex-sub" :class="wtype==2?'text-blue cur':''" @tap="tabSelect" data-wtype="2">按时</view>
+				<view class="cu-item flex-sub" :class="wtype==3?'text-blue cur':''" @tap="tabSelect" data-wtype="3">按件</view>
+				<view class="cu-item flex-sub" :class="wtype==4?'text-blue cur':''" @tap="tabSelect" data-wtype="4">按项目</view>
+				<view class="cu-item flex-sub" :class="wtype==5?'text-blue cur':''" @tap="tabSelect" data-wtype="5">其他</view>
+			</view>
+		</scroll-view>
+
+		<block v-for="(item,index) in plist" :key="index">
+			<view class="cu-card dynamic no-card solid-bottom echo-comjobs-item padding-top-sm padding-lr-sm radius">
+				<view class="cu-item shadow padding-top-sm padding-bottom" @tap="goDetail(item.id)">
+					<view class="padding-lr flex justify-between align-center">
+						<view class="basis-lg text-bold text-df text-cut">{{item.title}}</view>
+						<view class="basis-sm text-cut text-right text-gray text-sm">
+							<view v-if="item.wtype==1"><text class="text-red text-bold">{{item.zwagall}}</text></view>
+							<view v-if="item.wtype==5"><text class="text-red text-bold">其他</text></view>
+							<view v-else><text class="text-red text-bold">{{item.bwagall}}</text></view>
+						</view>
+					</view>
+					<view class="padding-lr padding-tb-xs text-cut">
+						<view v-for="(titem,tindex) in item.tags" :key="tindex" class="cu-tag light bg-blue lg echo-tags-item">{{titem}}</view>
+					</view>
+					<view class="padding-lr text-cut text-sm flex justify-between align-center">
+						<view class="basis-lg text-df text-cut">{{item.worker.title}}</view>
+						<view class="basis-sm text-cut text-right text-sm">
+							浏览量:{{item.volume}}
+						</view>
+					</view>
+				</view>
+			</view>
+		</block>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		<wxContact></wxContact>
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				searchval: "",
+				wtype: 0,
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(option){
+			_this = this;
+			_this.wtype = option.wtype || 0;
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.pageRefresh();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "企业招聘",
+				path: "/pages/comjobs/comjobs"
+		    }
+		},
+		methods: {
+			// 搜索
+			bindInput: function(e) {
+				_this.searchval = e.detail.value;
+			},
+			btnSearch: function() {
+				if (_this.searchval == "") {
+					uni.showModal({
+						title: '信息提示',
+						content: "请输入要搜索的关键字...",
+						showCancel: false
+					});
+					return false;
+				}
+				_this.pageRefresh();
+			},
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "comjobs/listcomjobs",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						searchval: _this.searchval,
+						wtype: _this.wtype
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goDetail: function(comjobsid) {
+				uni.navigateTo({
+					url: '/pages/comjobs/detail?comjobsid=' + comjobsid
+				});
+			},
+			goShop: function(workerid) {
+				uni.navigateTo({
+					url: '/pages/worker/shop?workerid=' + workerid
+				});
+			},
+			tabSelect: function(e) {
+				_this.wtype = e.currentTarget.dataset.wtype;
+				_this.pageRefresh();
+			},
+		}
+	}
+</script>
+
+<style>
+</style>

+ 331 - 0
pages/comjobs/setreport.vue

@@ -0,0 +1,331 @@
+<template>
+	<view>
+		
+		<view class="padding-lr padding-tb margin-bottom-sm bg-white">
+			<view class="bg-white padding-top-sm text-xl text-black text-bold flex align-end">
+				<view class="basis-lg">{{comjobs.title}}</view>
+			</view>
+			<view class="text-gray padding-top text-sm">{{comjobs.worker.title}}</view>
+			<view class="text-gray padding-top-sm text-sm">
+				截止日期:{{comjobs.enddate}}
+			</view>
+			
+			<view class="text-gray padding-top-sm text-sm align-center">
+				报备职业顾问:
+				<block v-for="(item,index) in brokerall" :key="index">
+					<view :class="'cu-tag '+ (item.id==broker.id?'bg-blue':'')" :data-index="index" @tap="checkBroker">{{item.title}}</view>
+				</block>
+			</view>
+		</view>
+		
+		
+		<scroll-view scroll-x class="bg-white nav margin-bottom-xs">
+			<view class="flex text-center">
+				<view class="cu-item flex-sub" :class="tabcur==1?'text-blue cur':''" @tap="tabSelect" :data-tabcur="1">
+					报备信息
+				</view>
+				<view class="cu-item flex-sub" :class="tabcur==2?'text-blue cur':''" @tap="tabSelect" :data-tabcur="2">
+					我的用户库
+				</view>
+			</view>
+		</scroll-view>
+		
+		<view v-if="tabcur==1">
+			<!-- <view class="setidcard" @tap="setIdcard">
+				<image :src="$getImageUrl('static/images/applet/setidcard.png')"></image>
+			</view> -->
+			<form>
+				<view class="cu-form-group">
+					<view class="title">姓名</view>
+					<input placeholder="请输入姓名..." @input="bindInput" data-val="realname" :value="forminfo.realname"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">手机号</view>
+					<input placeholder="请输入手机号..." @input="bindInput" data-val="mobile" :value="forminfo.mobile"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">身份证号</view>
+					<input placeholder="请输入身份证号..." @input="bindInput" data-val="idcard" :value="forminfo.idcard"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">预计出发日期</view>
+					<picker mode="date" :value="forminfo.arrivetime" @change="arrivetimeChange">
+						<view class="picker">
+							{{forminfo.arrivetime}}
+						</view>
+					</picker>
+				</view>
+				<view class="cu-form-group align-start">
+					<view class="title">报备备注</view>
+					<textarea maxlength="140" placeholder="请输入报备备注..." @input="bindInput" data-val="remark" :value="forminfo.remark"></textarea>
+				</view>
+				<view class="padding flex flex-direction">
+					<button class="cu-btn bg-blue margin-tb-sm lg" @tap="addReport">确认提交</button>
+				</view>
+			</form>
+		</view>
+		<view v-else>
+			<view class="cu-bar search bg-white solid-bottom">
+				<view class="search-form round">
+					<text class="cuIcon-search"></text>
+					<input @input="searchInput" :value="searchval" :adjust-position="false" type="text" placeholder="搜索用户昵称、姓名、手机号" confirm-type="search"></input>
+				</view>
+				<view class="action">
+					<button class="cu-btn bg-blue shadow-blur round" @click="pageRefresh()">搜索</button>
+				</view>
+			</view>
+			<view class="cu-list menu-avatar">
+				<block v-for="(item,index) in plist" :key="index">
+					<view class="cu-item" :data-index="index" @tap="checkUser">
+						<view class="cu-avatar radius lg" :style="'background-image:url('+item.avatar+');'"></view>
+						<view class="content">
+							<view>
+								<view class="text-cut">{{item.nickname}}</view>
+								<view class="cu-tag round bg-orange sm" v-if="item.authstatus==3">{{item.authstatus_text}}</view>
+							</view>
+							<view class="text-gray text-sm flex"> <view class="text-cut">{{item.mobile}} - {{item.realname}}</view></view>
+						</view>
+						<view class="action">
+							<text class="lg text-gray cuIcon-right"></text>
+						</view>
+					</view>
+				</block>
+			</view>
+			<uni-load-more :status="pstatus"></uni-load-more>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	import avatar from "@/components/yq-avatar/yq-avatar.vue";
+	var _this;
+	export default {
+		components: {
+			avatar,
+			uniLoadMore
+		},
+		data() {
+			return {
+				isRotate: false,
+				userinfo: {},
+				comjobs: {},
+				brokerall: {},
+				broker: {},
+				tabcur: 1,
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: [],
+				searchval: "",
+				
+				forminfo: {
+					realname: "",
+					mobile: "",
+					idcard: "",
+					arrivetime: "",
+					remark: ""
+				}
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			var comjobsid = option.comjobsid || 0;
+			_this.userinfo = _this.checkLogin("/pages/my/myinfo");
+
+			_this.$req.ajax({
+				path: "comjobs/setreport",
+				data: {
+					userid: _this.userinfo.id,
+					comjobsid: comjobsid
+				}
+			}).then((data) => {
+				_this.comjobs = data.comjobs;
+				_this.broker = data.brokerall[0];
+				_this.brokerall = data.brokerall;
+				_this.forminfo.arrivetime = data.arrivetime;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onPullDownRefresh: function() {
+			_this.pageRefresh();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			
+			// 身份证识别
+			setIdcard: function(rsp) {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				uni.chooseImage({
+					count: 1,
+					sizeType: ['original', 'compressed'],
+					sourceType: ['album'],
+					success: (res) => {
+						_this.$req.ajaxFile({
+							path: "attachment/tplfieldimage",
+							title:'正在上传',
+							filePath: res.tempFilePaths[0],
+							fileName:'file',
+						}).then((filedata) => {
+							var fdata = JSON.parse(filedata.data);
+							_this.$req.ajax({
+								path: "comjobs/disidcard",
+								title:'正在识别',
+								data: {
+									picpath: fdata.data.path
+								}
+							}).then((data) => {
+								_this.forminfo.realname = data.idcard.name;
+								_this.forminfo.idcard = data.idcard.num;
+								_this.isRotate = false;
+							}).catch((err) => {
+								uni.showModal({
+									title: '信息提示',
+									content: err,
+									showCancel: false
+								});
+								_this.isRotate = false;
+							});
+						}).catch((err) => {
+							uni.showModal({
+								title: '信息提示',
+								content: err,
+								showCancel: false
+							});
+							_this.isRotate = false;
+						});
+					}
+				});
+			},
+			
+			
+			addReport: function() {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "comjobs/addreport",
+					data: {
+						comjobsid: _this.comjobs.id,
+						brokerid: _this.broker.id,
+						realname: _this.forminfo.realname,
+						mobile: _this.forminfo.mobile,
+						idcard: _this.forminfo.idcard,
+						arrivetime: _this.forminfo.arrivetime,
+						remark: _this.forminfo.remark
+					}
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: "报备信息提交成功。",
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								_this.forminfo.realname = "";
+								_this.forminfo.mobile = "";
+								_this.forminfo.idcard = "";
+								_this.forminfo.remark = "";
+							}
+						}
+					});
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			
+			
+			checkBroker: function(e) {
+				var index = e.currentTarget.dataset.index;
+				_this.broker = _this.brokerall[index];
+			},
+			
+			arrivetimeChange: function(e) {
+				_this.forminfo.arrivetime = e.detail.value
+			},
+			bindInput: function(e) {
+				var dataval = e.currentTarget.dataset.val;
+				_this.forminfo[dataval] = e.detail.value;
+			},
+			
+			
+			
+			checkUser: function(e) {
+				var index = e.currentTarget.dataset.index;
+				var user = _this.plist[index];
+				_this.forminfo.realname = user.realname;
+				_this.forminfo.mobile = user.mobile;
+				_this.forminfo.idcard = user.idcard;
+				_this.tabcur = 1;
+			},
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			searchInput: function(e) {
+				_this.searchval = e.detail.value;
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "comjobs/getuserlist",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						userid: _this.userinfo.id,
+						searchval: _this.searchval
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			tabSelect: function(e) {
+				_this.tabcur = e.currentTarget.dataset.tabcur;
+				_this.pageRefresh();
+			}
+		}
+	}
+</script>
+
+<style>
+	
+	.cu-form-group .title { min-width: calc(4em + 15px); }
+	.cu-form-group input{ text-align: right; }
+	
+	.setidcard{ width: 120rpx; height: 120rpx; position: fixed; right: 60rpx; bottom: 60rpx; z-index: 999; }
+	.setidcard image{ width: 120rpx; height: 120rpx; }
+	
+</style>
+

+ 127 - 0
pages/comjobs/star.vue

@@ -0,0 +1,127 @@
+<template>
+	<view>
+		<block v-for="(item,index) in plist" :key="index">
+			<view class="cu-card dynamic no-card solid-bottom echo-comjobs-item padding-top-sm padding-lr-sm radius">
+				<view class="cu-item shadow padding-top-sm padding-bottom" @tap="goDetail(item.comjobs.id)">
+					<view class="padding-lr flex justify-between align-center">
+						<view class="basis-lg text-bold text-df text-cut">
+							{{item.comjobs.title}}
+							<text class="text-red text-sm" v-if="item.comjobs.wtype==1">(按月)</text>
+							<text class="text-red text-sm" v-if="item.comjobs.wtype==2">(按时)</text>
+							<text class="text-red text-sm" v-if="item.comjobs.wtype==3">(按件)</text>
+							<text class="text-red text-sm" v-if="item.comjobs.wtype==4">(按项目)</text>
+						</view>
+						<view class="basis-sm text-cut text-right text-gray text-sm">
+							<view class="basis-xs text-cut text-right text-gray text-sm" @tap.stop="delStar(index, item.id)">取消关注</view>
+						</view>
+					</view>
+					<view class="padding-lr flex justify-between align-bottom" @tap="goDetail(item.comjobs.id)">
+						<view><text class="text-red text-bold">{{item.comjobs.zwagall}}</text></view>
+					</view>
+					<view class="padding-lr padding-tb-xs text-cut">
+						<view v-for="(titem,tindex) in item.comjobs.tags" :key="tindex" class="cu-tag light bg-blue lg echo-tags-item">{{titem}}</view>
+					</view>
+					<view class="padding-lr text-cut text-sm flex justify-between align-center">
+						<view class="basis-lg text-df text-cut">{{item.comjobs.worker.title}}</view>
+						<view class="basis-sm text-cut text-right text-sm">
+							浏览量:{{item.comjobs.volume}}
+						</view>
+					</view>
+				</view>
+			</view>
+		</block>
+		<uni-load-more :status="pstatus"></uni-load-more>
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				userinfo: {},
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			_this.userinfo = _this.checkLogin("/pages/comjobs/star");
+			if (_this.userinfo===false){
+				return false;
+			}
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			delStar: function(index,starid) {
+				_this.$req.ajax({
+					path: "comjobs/delstar",
+					data: {
+						starid: starid,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					_this.plist.splice(index, 1);
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "comjobs/liststar",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goDetail: function(comjobsid) {
+				uni.navigateTo({
+					url: '/pages/comjobs/detail?comjobsid=' + comjobsid
+				});
+			},
+			goShop: function(workerid) {
+				uni.navigateTo({
+					url: '/pages/worker/shop?workerid=' + workerid
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+</style>

+ 387 - 0
pages/demand/demand.vue

@@ -0,0 +1,387 @@
+<template>
+	<view>
+		<view class="cu-bar search">
+			<view class="search-form round text-center">
+				<text class="cuIcon-search"></text>
+				<input @input="bindInput" :adjust-position="false" type="text" placeholder="搜索岗位或公司" confirm-type="search"></input>
+			</view>
+			<view class="action" v-if="searchval!==''">
+				<button class="cu-btn bg-white shadow-blur round" @click="btnSearch()">搜索</button>
+			</view>
+		</view>
+		
+		
+		<view class="filterbg">
+		<view class="flex justify-between solids-bottom padding bg-white">
+			<view class="text-bold">推荐</view>
+			<view class="flex justify-end">
+				<view class="cu-tag radius" data-filterbox="rectype" @tap="showFilter">{{rectypelist.title}}</view>
+				<view class="cu-tag radius" data-filterbox="wtype" @tap="showFilter">{{wtypelist.title}}</view>
+				<view class="cu-tag radius" data-filterbox="ftype" @tap="showFilter">{{ftypelist.title}}</view>
+				<view class="cu-tag radius" data-filterbox="cate" @tap="showFilter">{{catelist.title}}</view>
+				<view class="cu-tag radius" data-filterbox="area" @tap="showFilter">{{arealist.title}}</view>
+			</view>
+		</view>
+		 
+		<view class="filtercon" v-if="filterbox!==null">
+			<view class="padding bg-white" v-if="filterbox=='rectype'">
+				<block v-for="(item,index) in rectypelist.data" :key="index">
+					<button class="cu-btn margin-lr-xs margin-tb-xs" @click="checkRectype(item.title,item.value)">{{item.title}}</button>
+				</block>
+			</view>
+			
+			<view class="padding bg-white" v-if="filterbox=='wtype'">
+				<block v-for="(item,index) in wtypelist.data" :key="index">
+					<button class="cu-btn margin-lr-xs margin-tb-xs" @click="checkWtype(item.title,item.value)">{{item.title}}</button>
+				</block>
+			</view>
+			<view class="padding bg-white" v-if="filterbox=='ftype'">
+				<block v-for="(item,index) in ftypelist.data" :key="index">
+					<button class="cu-btn margin-lr-xs margin-tb-xs" @click="checkFtype(item.title,item.value)">{{item.title}}</button>
+				</block>
+			</view>
+			<view class="padding bg-white" v-if="filterbox=='cate'">
+				<block v-for="(item,index) in catelist.data" :key="index">
+					<button class="cu-btn margin-lr-xs margin-tb-xs" @click="checkCate(item.title,item.value)">{{item.title}}</button>
+				</block>
+			</view>
+			
+			<view class="grid margin-bottom text-left col-3 bg-white" v-if="filterbox=='area'">
+				<view class="solids-right padding-bottom">
+					<scroll-view scroll-y="true" style="height: 600rpx;">
+						<view class="solid-bottom text-gray padding-lr-sm padding-tb-sm">选择省</view>
+						<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(4,0)">全部</view>
+						<block v-for="(item,index) in arealist.data" :key="index">
+							<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(1,index)">{{item.title}}</view>
+						</block>
+					</scroll-view>
+				</view>
+				<view class="solids-right padding-bottom">
+					<scroll-view scroll-y="true" style="height: 600rpx;">
+						<view class="solid-bottom text-gray padding-lr-sm padding-tb-sm">选择市</view>
+						<block v-for="(item,index) in arealist.cityarr" :key="index">
+							<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(2,index)">{{item.title}}</view>
+						</block>
+					</scroll-view>
+				</view>
+				<view class="padding-bottom">
+					<scroll-view scroll-y="true" style="height: 600rpx;">
+						<view class="solid-bottom text-gray padding-lr-sm padding-tb-sm">选择区县</view>
+						<block v-for="(item,index) in arealist.districtarr" :key="index">
+							<view class="solid-bottom padding-lr-sm padding-tb-sm" @click="checkArea(3,index)">{{item.title}}</view>
+						</block>
+					</scroll-view>
+				</view>
+			</view>
+		</view>
+		</view>
+		
+		
+		<block v-for="(item,index) in plist" :key="index">
+			<view class="cu-card dynamic no-card solid-bottom echo-demand-item">
+				<view class="cu-item shadow padding-top-sm padding-bottom">
+					<view class="padding-lr padding-bottom-xs flex justify-between align-center" @tap="goDetail(item.id)">
+						<view class="basis-lg text-bold text-lg text-cut">{{item.title}}
+							<text class="text-sm text-red">({{item.type_text}})</text>
+							{{item.num}}人
+						</view>
+						<view class="basis-sm text-cut text-right text-gray text-sm">{{item.city}}</view>
+					</view>
+					<view class="padding-lr text-lg" @tap="goDetail(item.id)">
+						<view v-if="item.wtype==1"><text class="text-red text-bold">{{item.bwagall}}~{{item.zwagall}}</text> <text class="text-gray text-sm padding-left-xs">元/月</text></view>
+						<view v-if="item.wtype==2"><text class="text-red text-bold">{{item.bwagall}}</text> <text class="text-gray text-sm padding-left-xs">元/日</text></view>
+						<view v-if="item.wtype==3"><text class="text-red text-bold">{{item.bwagall}}</text> <text class="text-gray text-sm padding-left-xs">元/时</text></view>
+						<view v-if="item.wtype==4"><text class="text-red text-bold">面议</text></view>
+					</view>
+					
+					<view class="padding-lr text-cut" @tap="goDetail(item.id)">
+						<view v-for="(titem,tindex) in item.tags" :key="tindex" class="cu-tag light bg-gray text-grey sm">{{titem}}</view>
+					</view>
+					<view class="padding-lr text-sm text-cut" @tap="goShop(item.workerid)">
+						<view class="text-gray">{{item.worker.title}}</view>
+					</view>
+					<view class="text-gray text-sm padding-lr flex align-center justify-between" @tap="goShop(item.workerid)">
+						<view class="flex align-center">
+							<image class="iconwyd" style="margin: 0rpx !important;" :src="$getImageUrl('static/images/applet/iconwyd.png')" mode="scaleToFill" v-if="item.isfree==2"></image>
+						</view>
+						<view class="text-gray text-right basis-xs">
+							<text class="cuIcon-shop margin-right-xs text-lg"></text>
+							进店
+						</view>
+					</view>
+				</view>
+			</view>
+		</block>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		
+		
+		<view class="padding-sm"></view>
+		<view class="padding-xl"></view>
+		<view class="cu-bar tabbar bg-white foot">
+			<view class="action text-gray" @tap="goNavPage('/pages/worker/worker')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/windex.png"></image>
+				</view>
+				首页
+			</view>
+			<view class="action text-blue" @tap="goNavPage('/pages/demand/demand')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/wdemandSelected.png"></image>
+				</view>
+				抢单大厅
+			</view>
+			<!-- #ifndef MP-WEIXIN -->
+			<view class="action text-gray videoimg" @tap="goNavPage('/pages/video/video')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/video.png"></image>
+				</view>
+				录视频
+			</view>
+			<!-- #endif -->
+			<view class="action text-gray" @tap="goNavPage('/pages/resume/resume')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/resume.png"></image>
+				</view>
+				简历
+			</view>
+			<view class="action text-gray" @tap="goNavPage('/pages/supply/supply')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/wsupply.png"></image>
+				</view>
+				共享用工
+			</view>
+			<!--
+			<view class="action text-gray" @tap="goNavPage('/pages/worker/workerlist')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/wworker.png"></image>
+				</view>
+				企业1
+			</view>
+			-->
+		</view>
+		<wxContact></wxContact>
+	</view>
+</template>
+
+<script>
+	import slFilter from '@/components/sl-filter/sl-filter.vue';
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			slFilter,
+			uniLoadMore
+		},
+		data() {
+			return {
+				filterbox: null,
+				rectypelist: {
+					title: "悬赏/普通",
+					value: 0
+				},
+				wtypelist: {
+					title: "薪资",
+					value: 0,
+					data: []
+				},
+				ftypelist: {
+					title: "返费",
+					value: 0,
+					data: []
+				},
+				catelist: {
+					title: "岗位",
+					value: 0,
+					data: []
+				},
+				arealist: {
+					title: "区域",
+					value: "",
+					cityarr: [],
+					districtarr: [],
+					data: []
+				},
+								
+				searchval: "",
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(option){
+			_this = this;
+			_this.$req.ajax({
+				path: "demand/pagedemand",
+			}).then((data) => {
+				_this.catelist.data = data.catelist;
+				_this.wtypelist.data = data.wtypelist;
+				_this.rectypelist.data = data.rectypelist;
+				_this.ftypelist.data = data.ftypelist;
+				_this.arealist.data = require('@/common/area.json');
+				// _this.menuList[2].detailList = data.ftypelist;
+				// _this.menuList[3].detailList = data.provincelist;
+				// _this.$refs.slFilter.resetMenuList(_this.menuList);
+				_this.getMore();
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onPullDownRefresh: function() {
+			_this.pageRefresh();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "企业招聘",
+				path: "/pages/demand/demand"
+		    }
+		},
+		methods: {
+			showFilter: function(e) {
+				var nowfilterbox = e.currentTarget.dataset.filterbox;
+				if (_this.filterbox == nowfilterbox){
+					_this.filterbox = null;
+				}else{
+					_this.filterbox = nowfilterbox;
+				}
+				uni.pageScrollTo({
+				    scrollTop: 0,
+				    duration: 300
+				});
+			},
+			checkRectype: function(title,value) {
+				_this.rectypelist.title = title;
+				_this.rectypelist.value = value;
+				_this.filterbox = null;
+				_this.pageRefresh();
+			},
+			checkWtype: function(title,value) {
+				_this.wtypelist.title = title;
+				_this.wtypelist.value = value;
+				_this.filterbox = null;
+				_this.pageRefresh();
+			},
+			checkFtype: function(title,value) {
+				_this.ftypelist.title = title;
+				_this.ftypelist.value = value;
+				_this.filterbox = null;
+				_this.pageRefresh();
+			},
+			checkCate: function(title,value) {
+				_this.catelist.title = title;
+				_this.catelist.value = value;
+				_this.filterbox = null;
+				_this.pageRefresh();
+			},
+			checkArea: function(level, index) {
+				if (level==1){
+					_this.arealist.cityarr = _this.arealist.data[index].children;
+					_this.arealist.districtarr = [];
+				}else if (level==2){
+					_this.arealist.districtarr = _this.arealist.cityarr[index].children;
+				}else if (level==3){
+					_this.arealist.title = _this.arealist.districtarr[index].title;
+					_this.arealist.value = _this.arealist.districtarr[index].title;
+					_this.filterbox = null;
+					_this.pageRefresh();
+				}else if (level==4){
+					_this.arealist.cityarr = [];
+					_this.arealist.districtarr = [];
+					_this.arealist.title = "全部";
+					_this.arealist.value = "";
+					_this.filterbox = null;
+					_this.pageRefresh();
+				}
+			},
+			
+			// 搜索
+			bindInput: function(e) {
+				_this.searchval = e.detail.value;
+			},
+			btnSearch: function() {
+				if (_this.searchval == "") {
+					uni.showModal({
+						title: '信息提示',
+						content: "请输入要搜索的关键字...",
+						showCancel: false
+					});
+					return false;
+				}
+				_this.pageRefresh();
+			},
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "demand/listdemand",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						searchval: _this.searchval,
+						cateid: _this.catelist.value,
+						wtype: _this.wtypelist.value,
+						rectype: _this.rectypelist.value,
+						ftype: _this.ftypelist.value,
+						district: _this.arealist.value
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goDetail: function(demandid) {
+				uni.navigateTo({
+					url: '/pages/demand/detail?demandid=' + demandid
+				});
+			},
+			goShop: function(workerid) {
+				uni.navigateTo({
+					url: '/pages/worker/shop?workerid=' + workerid
+				});
+			},
+			result: function(e) {
+				_this.cateid = e.cateid;
+				_this.wtype = e.wtype;
+				_this.ftype = e.ftype;
+				_this.province = e.province;
+				_this.pageRefresh();
+			},
+			
+			goNavPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo === false) {
+					return false;
+				}
+				uni.redirectTo({
+					url: pageurl
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+</style>

+ 479 - 0
pages/demand/demandform.vue

@@ -0,0 +1,479 @@
+<template>
+	<view>
+		<view class="solids-bottom margin-bottom-sm">
+			<view class="bg-white padding">
+				<view class="cu-steps">
+					<view class="cu-item" :class="0>stepsnum?'':'text-blue'">
+						<text class="num" data-index="1"></text> 基本信息
+					</view>
+					<view class="cu-item" :class="1>stepsnum?'':'text-blue'">
+						<text class="num" data-index="2"></text> 详细信息
+					</view>
+					<view class="cu-item" :class="2>stepsnum?'':'text-blue'">
+						<text class="num" data-index="3"></text> 提交成功
+					</view>
+				</view>
+				<view class="text-gray text-sm padding-top">
+					请填写真是有效的信息,如有发现诈骗、虚假信息,我们会协助公安与相关法律部门进行调查。
+				</view>
+			</view>
+		</view>
+
+		<form>
+			<view class="echo-formmain" v-if="stepsnum==0">
+				<view class="cu-form-group">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 订单标题</view>
+					<input placeholder="比如:郑州富士康招聘普工" data-field="title" name="title" :value="demandinfo.title" @input="setInput"></input>
+				</view>
+				<view class="cu-form-group margin-top-sm">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 招聘人数</view>
+					<input placeholder="请输入招聘人数" data-field="num" name="num" :value="demandinfo.num" @input="setInput"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 岗位类型</view>
+					<picker mode="selector" range-key="title" name="cateid" @change="cateidChange" :value="cateidindex" :range="catelist">
+						<view class="picker">{{cateidindex>-1 ? catelist[cateidindex].title : "请选择岗位类型"}}</view>
+					</picker>
+				</view>
+				<view class="cu-form-group">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 类型</view>
+					<radio-group class="block" @change="typeChange">
+					<view class="flex justify-start">
+						<label class="flex align-center"> <radio class='blue' :class="demandinfo.type==1?'checked':''" :checked="demandinfo.type==1?true:false" value="1"></radio> <text> 代招</text></label>
+						<label class="flex align-center"> <radio class='blue' :class="demandinfo.type==2?'checked':''" :checked="demandinfo.type==2?true:false" value="2"></radio> <text> 劳务派遣</text></label>
+					</view>
+					</radio-group>
+				</view>
+				<view class="cu-form-group">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 工作地点</view>
+					<view style="flex: 1; font-size: 30rpx; color: #AAAAAA; line-height: 100rpx;">
+						<pickerAddress @change="regionChange">{{region}}</pickerAddress>
+					</view>
+				</view>
+				<view class="cu-form-group">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 招工年龄</view>
+					<input placeholder="比如:16-35岁" data-field="agegroup" name="agegroup" :value="demandinfo.agegroup" @input="setInput"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 招聘标签</view>
+					<input placeholder="比如:包食宿 高工资" data-field="tags" name="tags" :value="demandinfo.tags" @input="setInput"></input>
+				</view>
+				<view class="cu-form-group">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 截止日期</view>
+					<picker mode="date" :value="demandinfo.enddate" @change="bindDateChange">
+						<view class="picker">{{demandinfo.enddate!='' ? demandinfo.enddate : "请选择本次招聘截止日期"}}</view>
+					</picker>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">任职要求</view>
+					<view class="textareabox">
+						<textarea maxlength="-1" placeholder="请输入..." data-field="requirement" name="requirement" :value="demandinfo.requirement"
+							@input="setInput"></textarea>
+					</view>
+				</view>
+				<view class="cu-form-group align-start">
+					<view class="title">企业简介</view>
+					<view class="textareabox">
+						<textarea maxlength="-1" placeholder="请输入..." data-field="comdetails" name="comdetails" :value="demandinfo.comdetails"
+							@input="setInput"></textarea>
+					</view>
+				</view>
+				<view class="padding-tb padding-lr-xs bg-white solids-top">
+					<view class="title padding-bottom-sm text-lg">环境照片</view>
+					<view class="grid col-4 grid-square flex-sub">
+						<block v-for="(picitem,picindex) in demandinfo.picall" :key="picindex">
+							<view class="bg-img" @tap="viewImage" :data-url="picitem">
+								<image :src="picitem" mode="aspectFill"></image>
+								<view class="cu-tag bg-red" @tap.stop="delImg" :data-index="index">
+									<text class='cuIcon-close'></text>
+								</view>
+							</view>
+						</block>
+						<view class="solids" @tap="chooseImage" v-if="demandinfo.picall.length <= 12">
+							<text class='cuIcon-cameraadd'></text>
+						</view>
+					</view>
+				</view>
+				
+				<view class="padding-tb padding-lr-xs bg-white solids-top">
+					<view class="title padding-bottom-sm text-lg">上传视频</view>
+					<view class="grid col-4 grid-square flex-sub" v-if="demandinfo.video==''">
+						<view class="solids" @click="chooseVideo">
+							<text class='cuIcon-record'></text>
+						</view> 
+					</view>
+					
+					<view class="grid col-1 grid-square flex-sub" v-if="demandinfo.video!=''">
+						<view class="bg-img">
+							<video v-if="video!==null" id="myVideo" class="myVideo" :src="demandinfo.video" @error="videoErrorCallback" enable-danmu controls></video>
+							<view class="cu-tag bg-red" @tap.stop="delVideo">
+								<text class='cuIcon-close'></text>
+							</view>
+						</view>
+					</view>
+				</view>
+				
+				<view class="padding flex flex-direction bg-white">
+					<button class="cu-btn bg-blue margin-tb-sm lg" @tap="stepsNum(1)">下一步</button>
+					<view class="padding"></view>
+				</view>
+			</view>
+				
+			<view class="echo-formmain" v-if="stepsnum==1">
+				<view class="cu-form-group">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 薪资类型</view>
+					<radio-group class="block" @change="wtypeChange">
+					<view class="flex justify-start">
+						<label class="flex align-center"> <radio class='blue' :class="demandinfo.wtype==1?'checked':''" :checked="demandinfo.wtype==1?true:false" value="1"></radio> <text> 按月</text></label>
+						<label class="flex align-center"> <radio class='blue' :class="demandinfo.wtype==2?'checked':''" :checked="demandinfo.wtype==2?true:false" value="2"></radio> <text> 按时</text></label>
+						<label class="flex align-center"> <radio class='blue' :class="demandinfo.wtype==3?'checked':''" :checked="demandinfo.wtype==3?true:false" value="3"></radio> <text> 按件</text></label>
+						<label class="flex align-center"> <radio class='blue' :class="demandinfo.wtype==4?'checked':''" :checked="demandinfo.wtype==4?true:false" value="4"></radio> <text> 按项目</text></label>
+						<label class="flex align-center"> <radio class='blue' :class="demandinfo.wtype==5?'checked':''" :checked="demandinfo.wtype==5?true:false" value="5"></radio> <text> 其他</text></label>
+					</view>
+					</radio-group>
+				</view>
+				<view class="cu-form-group" v-if="demandinfo.wtype!=4">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> {{demandinfo.wtype==1?'基本':demandinfo.wtype==2?'每日':'每时'}}工资</view>
+					<input placeholder="请输入" data-field="bwagall" name="bwagall" :value="demandinfo.bwagall" @input="setInput"></input>
+					<view class="unit">元</view>
+				</view>
+				<view class="cu-form-group" v-if="demandinfo.wtype==1">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 综合月薪</view>
+					<input placeholder="请输入" data-field="zwagall" name="zwagall" :value="demandinfo.zwagall" @input="setInput"></input>
+					<view class="unit">元</view>
+				</view>
+				<view class="cu-form-group">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 返利类型</view>
+					<radio-group class="block" @change="ftypeChange">
+					<view class="flex justify-start">
+						<label class="flex align-center"> <radio class='blue' :class="demandinfo.ftype==1?'checked':''" :checked="demandinfo.ftype==1?true:false" value="1"></radio> <text> 一次性</text></label>
+						<label class="flex align-center"> <radio class='blue' :class="demandinfo.ftype==2?'checked':''" :checked="demandinfo.ftype==2?true:false" value="2"></radio> <text> 小时工</text></label>
+						<label class="flex align-center"> <radio class='blue' :class="demandinfo.ftype==3?'checked':''" :checked="demandinfo.ftype==3?true:false" value="3"></radio> <text> 管理费</text></label>
+						<label class="flex align-center"> <radio class='blue' :class="demandinfo.ftype==4?'checked':''" :checked="demandinfo.ftype==4?true:false" value="4"></radio> <text> 其他</text></label>
+					</view>
+					</radio-group>
+				</view>
+				<view class="cu-form-group">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 返费政策</view>
+					<input placeholder="比如:入职满一个月返2000元" data-field="fwagall" name="fwagall" :value="demandinfo.fwagall" @input="setInput"></input>
+				</view>
+				<view class="cu-form-group margin-top-sm">
+					<view class="title">手机号码</view>
+					<input placeholder="请输入联系人手机号码" data-field="telephone" name="telephone" :value="demandinfo.telephone" @input="setInput"></input>
+				</view>
+				<view class="cu-form-group align-start">
+					<view class="title">补充说明</view>
+					<view class="textareabox">
+					<textarea maxlength="-1" placeholder="请输入..." data-field="remark" name="remark" :value="demandinfo.remark"
+					 @input="setInput"></textarea>
+					 </view>
+				</view>
+				<view class="padding flex flex-direction bg-white">
+					<button class="cu-btn bg-blue margin-tb-sm lg" @tap="editDemand">立即提交</button>
+					<button class="cu-btn lg" @tap="stepsNum(0)">返回上一步</button>
+					<view class="padding"></view>
+				</view>
+			</view>
+		</form>
+		
+		<view class="echo-formmain padding bg-white" v-if="stepsnum==2">
+			<view class="padding">
+				<view class="flex-sub text-center padding-tb">
+					<view class="solid-bottom text-xsl padding">
+						<text class="cuIcon-emoji text-green"></text>
+					</view>
+					<view class="text-xl padding-tb">
+						<text class="text-black text-bold">招聘订单信息提交成功,请耐心等待审核!</text>
+					</view>
+					<view class="flex flex-direction padding-tb">
+						<navigator class="cu-btn bg-blue margin-tb-sm lg" open-type="redirect" url="/pages/demand/wdemandlist?status=1">我发布的订单</navigator>
+						<navigator class="cu-btn lg" open-type="redirect" url="/pages/demand/demandform">继续发布</navigator>
+					</view>
+				</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	var _this;
+	import avatar from "@/components/yq-avatar/yq-avatar.vue";
+	import pickerAddress from "@/components/pickerAddress/pickerAddress.vue";
+	export default {
+		components: {
+			avatar,
+			pickerAddress
+		},
+		data() {
+			return {
+				isRotate: false,
+				stepsnum: 0,
+				
+				userinfo: false,
+				workerinfo: false,
+				demandinfo: {
+					id: 0,
+					workerid: 0,
+					type: 1,
+					title: "",
+					num: 1,
+					cateid: 0,
+					province: "",
+					city: "",
+					district: "",
+					agegroup: "",
+					tags: "",
+					enddate: "",
+					requirement: "",
+					picall: [],
+					video: "",
+					comdetails: "",
+					wtype: 1,
+					bwagall: "",
+					zwagall: "",
+					ftype: 1,
+					fwagall: "",
+					telephone: "",
+					remark: ""
+				},
+				
+				cateidindex: -1,
+				region: "请选择工作地点",
+				
+				catelist: []
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			var demandid = option.demandid || 0;
+			_this.userinfo = _this.checkLogin("/pages/my/my");
+			_this.workerinfo = uni.getStorageSync('workerinfo') || false;
+			if (_this.userinfo === false || _this.workerinfo === false) {
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.$req.ajax({
+				path: "wdemand/getdemand",
+				data: {
+					demandid: demandid,
+					workerid: _this.workerinfo.id
+				}
+			}).then((data) => {
+				_this.catelist = data.catelist;
+				if (data.demand != "NULL") {
+					_this.demandinfo = data.demand;
+					_this.region = _this.demandinfo.province + " " + _this.demandinfo.city + " " + _this.demandinfo.district;
+					if ( _this.demandinfo.fwagall=="" ){
+						_this.isfwagall = 2;
+					}
+					for( var i=0,len=_this.catelist.length; i<len; i++ ){
+						if(_this.demandinfo.cateid == _this.catelist[i].id){
+							_this.cateidindex = i;
+						}
+					}
+				}
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		methods: {
+			// 视频上传
+			chooseVideo: function(e) {
+				uni.chooseVideo({
+					count: 1,
+					sourceType: ['camera', 'album'],
+					success: (res) => {
+						_this.$req.ajaxFile({
+							path: "attachment/tplfieldvideo",
+							title: '正在上传',
+							filePath: res.tempFilePath,
+							fileName: 'file',
+						}).then((vfiledata) => {
+							var vdata = JSON.parse(vfiledata.data);
+							_this.demandinfo.video = vdata.data.src;
+						}).catch((err) => {
+							uni.showModal({
+								title: '信息提示',
+								content: err,
+								showCancel: false
+							});
+						});
+					}
+				});
+			},
+			
+			delVideo: function(e) {
+				uni.showModal({
+					title: '信息提示',
+					content: "删除后不可恢复,确认要删除吗?",
+					showCancel: true,
+					success: function (res) {
+						if (res.confirm) {
+							_this.demandinfo.video = "";
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			
+			// 图片上传
+			chooseImage: function(e) {
+				uni.chooseImage({
+					count: 12,
+					sizeType: ['original', 'compressed'],
+					sourceType: ['album'],
+					success: (res) => {
+						_this.$req.ajaxFile({
+							path: "attachment/tplfieldimage",
+							title: '正在上传',
+							filePath: res.tempFilePaths[0],
+							fileName: 'file',
+						}).then((filedata) => {
+							var data = JSON.parse(filedata.data);
+							_this.demandinfo.picall.push(data.data.src);
+							
+							console.log("_this.demandinfo.picall: " + JSON.stringify(_this.demandinfo.picall));
+						}).catch((err) => {
+							uni.showModal({
+								title: '信息提示',
+								content: err,
+								showCancel: false
+							});
+						});
+					}
+				});
+			},
+			viewImage: function(e) {
+				uni.previewImage({
+					urls: _this.demandinfo.picall,
+					current: e.currentTarget.dataset.url
+				});
+			},
+			delImg: function(e) {
+				_this.demandinfo.picall.splice(e.currentTarget.dataset.index, 1);
+			},
+			
+			// 填写字段
+			setInput: function(e) {
+				var field = e.currentTarget.dataset.field;
+				_this.demandinfo[field] = e.detail.value;
+			},
+			bindDateChange: function(e) {
+				_this.demandinfo.enddate = e.target.value;
+			},
+			cateidChange: function(e) {
+				_this.cateidindex = e.detail.value;
+				_this.demandinfo.cateid = _this.catelist[_this.cateidindex].id;
+			},
+			regionChange: function(data) {
+				console.log("data: " + JSON.stringify(data));
+				_this.demandinfo.province = data.data[0];
+				_this.demandinfo.city = data.data[1];
+				_this.demandinfo.district = data.data[2];
+				_this.region = data.data.join(' ');
+			},
+			typeChange: function(e) {
+				_this.demandinfo.type = e.detail.value;
+			},
+			wtypeChange: function(e) {
+				_this.demandinfo.wtype = e.detail.value;
+			},
+			ftypeChange: function(e) {
+				_this.demandinfo.ftype = e.detail.value;
+			},
+	
+			// 提交信息
+			editDemand: function() {
+				if (_this.isRotate) {
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "wdemand/editdemand",
+					title: "正在提交信息",
+					data: {
+						userid: _this.userinfo.id,
+						id: _this.demandinfo.id,
+						workerid: _this.workerinfo.id,
+						title: _this.demandinfo.title,
+						num: _this.demandinfo.num,
+						cateid: _this.demandinfo.cateid,
+						province: _this.demandinfo.province,
+						city: _this.demandinfo.city,
+						district: _this.demandinfo.district,
+						agegroup: _this.demandinfo.agegroup,
+						tags: _this.demandinfo.tags,
+						enddate: _this.demandinfo.enddate,
+						requirement: _this.demandinfo.requirement,
+						comdetails: _this.demandinfo.comdetails,
+						picall: _this.demandinfo.picall.join(","),
+						video: _this.demandinfo.video,
+						wtype: _this.demandinfo.wtype,
+						bwagall: _this.demandinfo.bwagall,
+						zwagall: _this.demandinfo.zwagall,
+						ftype: _this.demandinfo.ftype,
+						fwagall: _this.demandinfo.fwagall,
+						telephone: _this.demandinfo.telephone,
+						remark: _this.demandinfo.remark
+					}
+				}).then((data) => {
+					_this.stepsNum(2);
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			
+			stepsNum: function(num) {
+				_this.stepsnum = num;
+			}
+		}
+	}
+</script>
+
+<style>
+	.echo-formmain {
+		min-height: calc(100vh - 290rpx);
+		background-color: #FFFFFF;
+		padding-left: 30rpx;
+		padding-right: 30rpx;
+	}
+	
+	.cu-form-group{ display: flex; flex-wrap: wrap; padding: 40rpx 10rpx 0rpx 10rpx; }
+	.cu-form-group .title{ width: 100%; }
+	.cu-form-group>input{ display: block; width: 670rpx; height: 100rpx; color: #AAAAAA; }
+	
+	.cu-form-group>radio-group{ width: 670rpx; height: 100rpx; line-height: 100rpx; color: #AAAAAA; text-align: left; }
+	
+	.cu-form-group .textareabox{ width: 670rpx; }
+	.cu-form-group .textareabox textarea{ width: 670rpx; margin-top: 20rpx !important; margin-bottom: 0rpx; }
+	
+	.cu-form-group .placeholder{ color: #AAAAAA; }
+	
+	.cu-form-group picker .picker{ text-align: left; color: #AAAAAA; }
+		
+	.fieldpic {
+		width: 150rpx;
+		height: 150rpx;
+	}
+
+	.fieldpictil {
+		width: 230rpx;
+		text-align: center;
+	}
+	
+	.myVideo{ width: 670rpx; height: 670rpx; }
+</style>

+ 197 - 0
pages/demand/demandlog.vue

@@ -0,0 +1,197 @@
+<template>
+	<view>
+		<scroll-view scroll-x class="bg-white nav solid-bottom solid-bottom echo-fixed-top">
+			<view class="flex text-center">
+				<view class="cu-item flex-sub" :class="status==0?'text-blue cur':''" @tap="tabSelect" data-status="0">全部</view>
+				<view class="cu-item flex-sub" :class="status==3?'text-blue cur':''" @tap="tabSelect" data-status="3">已上架</view>
+				<view class="cu-item flex-sub" :class="status==4?'text-blue cur':''" @tap="tabSelect" data-status="4">已停招</view>
+				<view class="cu-item flex-sub" :class="status==5?'text-blue cur':''" @tap="tabSelect" data-status="5">已下架</view>
+			</view>
+		</scroll-view>
+		<view class="echo-fixed-top-empty"></view>
+		
+		
+		<block v-for="(item,index) in plist" :key="index">
+			<view class="cu-card dynamic no-card solid-bottom echo-demand-item margin-tb-sm">
+				<view class="cu-item shadow padding-top-sm">
+					<view class="padding-lr padding-bottom-xs flex justify-between align-center" @tap="goDetail(item.id)">
+						<view class="basis-xl text-bold text-lg text-cut">{{item.demand.title}}</view>
+						<view class="basis-xs text-cut text-right text-gray text-sm">{{item.demand.city}}</view>
+					</view>
+					<view class="padding-lr flex justify-between align-bottom" @tap="goDetail(item.id)">
+						<view v-if="item.demand.wtype==1"><text class="text-red text-bold">{{item.demand.zwagall}}</text></view>
+						<view v-if="item.demand.wtype==5"><text class="text-red text-bold">其他</text></view>
+						<view v-else><text class="text-red text-bold">{{item.demand.bwagall}}</text></view>
+						<view class="text-red">{{item.demand.ftype_text}}:{{item.demand.fwagall}}</view>
+					</view>
+					<view class="padding-lr text-cut" @tap="goDetail(item.id)">
+						<view v-for="(titem,tindex) in item.demand.tags" :key="tindex" class="cu-tag light bg-gray sm">{{titem}}</view>
+					</view>
+					
+					<view class="text-gray padding-lr padding-tb-sm flex align-center justify-between" @tap="goShop(item.demand.workerid)">
+						<view class="text-cut basis-xl">
+							<view class="cu-capsule margin-right-sm">
+								<view class="cu-tag bg-red">
+									<text class="cuIcon-safe"></text>
+								</view>
+								<view class="cu-tag line-red">认证企业</view>
+							</view>
+							{{item.worker.title}}
+						</view>
+						<view class="text-gray text-right basis-xs">
+							<text class="cuIcon-shop margin-right-xs text-lg"></text>
+							进店
+						</view>
+					</view>
+					
+					<view class="grid solids-top text-center col-2 padding-tb-sm bg-white">
+						<view @tap="delDemandlog" :data-itemlogid="item.id" :data-itemindex="index"><text class="cuIcon-delete padding-right-xs"></text> 删除 </view>
+						<view @tap="makeTelephone" :data-telephone="item.demand.telephone"><text class="cuIcon-phone padding-right-xs"></text> 咨询 </view>
+					</view>
+				</view>
+			</view>
+		</block>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		<view class="padding"></view>
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				isRotate: false,
+				status: 3,
+				userinfo: false,
+				workerinfo: false,
+				
+				param: {},
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.status = option.status || 3;
+			_this.userinfo = _this.checkLogin("/pages/my/my");
+			_this.workerinfo = uni.getStorageSync('workerinfo') || false;
+			if (_this.userinfo === false || _this.workerinfo === false) {
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.pageRefresh();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			
+			delDemandlog: function(e) {
+				var itemlogid = e.currentTarget.dataset.itemlogid;
+				var itemindex = e.currentTarget.dataset.itemindex;
+				uni.showModal({
+					title: '信息提示',
+					content: '删除后不可恢复,确定要删除吗?',
+					success: function(res) {
+						if (res.confirm) {
+							_this.$req.ajax({
+								path: "demand/deldemandlog",
+								data: {
+									gworkerid: _this.workerinfo.id,
+									logid: itemlogid
+								}
+							}).then((data) => {
+								_this.modalName = null;
+								_this.plist.splice( itemindex, 1 );
+							}).catch((err) => {
+								uni.showModal({
+									title: '信息提示',
+									content: err,
+									showCancel: false
+								});
+							});
+						}
+					}
+				});
+			},
+			
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "demand/listdemandlog",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						status: _this.status,
+						gworkerid: _this.workerinfo.id
+					}
+				}).then((data) => {
+					_this.param = data.param;
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			tabSelect: function(e) {
+				_this.status = e.currentTarget.dataset.status;
+				_this.pageRefresh();
+			},
+			
+			makeTelephone: function(e) {
+				var telephone = e.currentTarget.dataset.telephone;
+				uni.makePhoneCall({
+					phoneNumber: telephone
+				});
+			},
+			
+			goDetail: function(comjobsid) {
+				uni.navigateTo({
+					url: '/pages/comjobs/detail?comjobsid=' + comjobsid
+				});
+			},
+			goShop: function(workerid) {
+				uni.navigateTo({
+					url: '/pages/worker/shop?workerid=' + workerid
+				});
+			},
+		},
+	}
+</script>
+
+<style>
+	.picmodal{ width: 640rpx; background-color: transparent; }
+	.picmodal image{ width: 100%; }
+	
+	.picmodal .bg-img{ position: relative; }
+	.picmodalclose{ position: absolute; top: 0rpx; right: 0rpx; }
+</style>

+ 541 - 0
pages/demand/detail.vue

@@ -0,0 +1,541 @@
+<template>
+	<view v-if="pageloading">
+		
+		<view class="padding-lr padding-tb margin-bottom-sm bg-white">
+			<view class="bg-white padding-top-sm text-xl text-black text-bold flex align-end">
+				<view class="basis-lg">{{demand.title}}
+					<text class="text-sm text-red">({{demand.type_text}})</text>
+					{{demand.num}}人
+				</view>
+				<view class="basis-sm text-right text-df">
+					<view v-if="demand.wtype==1"><text class="text-red text-bold">{{demand.zwagall}}</text></view>
+					<view v-if="demand.wtype==5"><text class="text-red text-bold">其他</text></view>
+					<view v-else><text class="text-red text-bold">{{demand.bwagall}}</text></view>
+				</view>
+			</view>
+			<view class="bg-white padding-top text-gray">
+				<view v-for="(item,index) in demand.tags" :key="index" class="cu-tag light bg-blue echo-tags-item">{{item}}</view>
+			</view>
+			<view class="text-gray padding-top-sm pad text-sm flex justify-between">
+				<view class="text-red">{{demand.ftype_text}}:{{demand.fwagall}}</view>
+				<view>截止日期:{{demand.enddate}}</view>
+			</view>
+		</view>
+		
+
+		<view class="cu-bar bg-white solids-bottom">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 任职要求
+			</view>
+		</view>
+		<view class="echo-article-details bg-white margin-bottom-sm">
+			<text>{{demand.requirement}}</text>
+		</view>
+
+		<!-- <view class="cu-bar bg-white">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 环境图片
+			</view>
+			<view class="action" data-modalname="picallModal" @tap="showModal">
+				<text class="text-df">查看全部 </text>
+				<view class="cuIcon-right"></view>
+			</view>
+		</view>
+		<view class="echo-article-details bg-white flex justify-between" v-if="demand.picall.length != 0" style="padding-top: 0rpx;" data-modalname="picallModal" @tap="showModal">
+			<image class="picallitem" :src="demand.picall[0]" mode="aspectFill"></image>
+			<image class="picallitem" :src="demand.picall[1]" mode="aspectFill"></image>
+		</view> -->
+		<view v-if="videosrc!==null" class="bg-white" style="padding: 0rpx 30rpx 30rpx 30rpx;" data-modalname="videoModal" @tap="showModal">
+			<image style="width: 690rpx;" src="https://sc.laowushangcheng.com/static/images/videobtn.jpg" mode="widthFix"></image>
+		</view>
+		
+		<!-- <view class="echo-article-details bg-white" style="padding-top: 0rpx;">
+			<video v-if="videosrc!==null && modal.name==null" class="myVideo" poster="https://sc.laowushangcheng.com/static/images/videopic.jpg" :src="videosrc" enable-danmu :controls="true"></video>
+		</view> -->
+		
+		<view class="cu-bar bg-white solids-top">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 企业介绍
+			</view>
+		</view>
+		<view class="echo-article-details bg-white" style="padding-top: 0rpx;">
+			<text>{{demand.comdetails}}</text>
+		</view>
+		<view class="echo-article-details bg-white solids-bottom flex justify-start">
+			<image class="solid margin-right-sm" :src="demand.worker.tilpic" style="width: 150rpx; height: 150rpx;"></image> 
+			<view>
+				<view @tap="goShop(demand.workerid)">本信息由<text class="text-red">{{demand.worker.title}}</text>发布</view>
+				<view class="flex align-center justify-between padding-bottom-xs align-center" style="width: 520rpx;">
+					<view class="flex align-center">
+						<image class="iconyrz" :src="$getImageUrl('static/images/applet/iconyrz.png')" mode="scaleToFill"></image>
+						<image class="iconwyp" :src="$getImageUrl('static/images/applet/iconwyp.png')" v-if="demand.recruitment_cate==2"></image>
+					</view>
+					<view class="text-gray text-right basis-xs text-sm" @tap="goShop(demand.workerid)">
+						<text class="cuIcon-shop margin-right-xs text-lg"></text>
+						进店
+					</view>
+				</view>
+				<view class="text-gray" @tap="setAddress()"><text class="cuIcon-locationfill text-blue margin-right-xs"></text> {{demand.worker.city}} {{demand.worker.district}} {{demand.worker.address}}</view>
+			</view>
+		</view>
+		
+		
+
+		<view class="cu-bar bg-white solids-bottom margin-top-sm">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 店铺推荐
+			</view>
+			<view class="action" @tap="goPage('/pages/worker/shop?workerid='+demand.workerid)">
+				<text class="text-df">进店看看 </text>
+				<view class="cuIcon-right"></view>
+			</view>
+		</view>
+
+		<block v-for="(item,index) in demandlist" :key="index">
+			<view class="cu-card dynamic no-card solid-bottom echo-demand-item">
+				<view class="cu-item shadow padding-top-sm padding-bottom">
+					<view class="padding-lr padding-bottom-xs flex justify-between align-center" @tap="goDetail(item.id)">
+						<view class="basis-lg text-bold text-lg text-cut">{{item.title}}</view>
+						<view class="basis-sm text-cut text-right text-gray text-sm">{{item.city}}</view>
+					</view>
+					<view class="padding-lr text-lg" @tap="goDetail(item.id)">
+						<view v-if="item.wtype==1"><text class="text-red text-bold">{{item.bwagall}}~{{item.zwagall}}</text> <text class="text-gray text-sm padding-left-xs">元/月</text></view>
+						<view v-if="item.wtype==2"><text class="text-red text-bold">{{item.bwagall}}</text> <text class="text-gray text-sm padding-left-xs">元/日</text></view>
+						<view v-if="item.wtype==3"><text class="text-red text-bold">{{item.bwagall}}</text> <text class="text-gray text-sm padding-left-xs">元/时</text></view>
+						<view v-if="item.wtype==4"><text class="text-red text-bold">面议</text></view>
+					</view>
+					
+					<view class="padding-lr text-cut" @tap="goDetail(item.id)">
+						<view v-for="(titem,tindex) in item.tags" :key="tindex" class="cu-tag light bg-gray text-grey sm">{{titem}}</view>
+					</view>
+					<view class="padding-lr text-sm text-cut" @tap="goDetail(item.id)">
+						<view class="text-gray">{{item.worker.title}}</view>
+					</view>
+					<view class="text-gray text-sm padding-lr flex align-center justify-between" @tap="goShop(item.workerid)">
+						<view class="flex align-center">
+							<image class="iconwyd" style="margin: 0rpx !important;" :src="$getImageUrl('static/images/applet/iconwyd.png')" mode="scaleToFill"></image>
+						</view>
+						<view class="text-gray text-right basis-xs">
+							<text class="cuIcon-shop margin-right-xs text-lg"></text>
+							进店
+						</view>
+					</view>
+				</view>
+			</view>
+		</block>
+
+
+		<view class="padding"></view>
+		<view class="padding"></view>
+		<view class="cu-bar bg-white tabbar border shop foot">
+			<view class="action" @tap="goPage('/pages/worker/shop?workerid='+demand.workerid)">
+				<view class="cuIcon-shop"></view>
+				进店
+			</view>
+
+			<!-- <button class="action" open-type="share">
+				<view class="cuIcon-weixin text-green">
+					<view class="cu-tag badge" style="font-size: 16rpx;">邀好友</view>
+				</view>
+				分享
+			</button> -->
+
+			<view class="action" v-if="demand.telephone!=''" :data-telephone="demand.telephone" @tap="makeTelephone">
+				<view class="cuIcon-dianhua text-red"></view>
+				电话
+			</view>
+
+			<view class="bg-red submit echo-foot-button" @tap="showSnatch" v-if="demand.status==3"> <text>立马抢单</text> </view>
+			<view class="bg-grey submit echo-foot-button" v-else> <text>已停招</text> </view>
+		</view>
+		
+		
+		<view class="cu-modal bottom-modal show" v-if="modal.name=='videoModal'" @tap="hideModal">
+			<view class="cu-dialog" @tap.stop="">
+				<view class="cu-bar bg-white">
+					<view class="action text-black">视频</view>
+					<view class="action text-blue" @tap="hideModal">取消</view>
+				</view>
+				<view class="solid-top" v-if="videosrc!==null">
+					<video class="myVideo" :src="demand.video" enable-danmu :controls="true"></video>
+				</view>
+			</view>
+		</view>
+		
+		<view class="cu-modal bottom-modal show" v-if="modal.name=='picallModal'" @tap="hideModal">
+			<view class="cu-dialog" @tap.stop="">
+				<view class="cu-bar bg-white">
+					<view class="action text-black">环境图片</view>
+					<view class="action text-blue" @tap="hideModal">取消</view>
+				</view>
+				<view class="solid-top">
+					<scroll-view scroll-y="true" class="bg-white padding-tb padding-lr-sm solids-top echo-picalllist">
+						<view class="flex justify-between">
+							<view class="picitem">
+								<block v-for="(item,index) in demand.picall" :key="index">
+									<image class="solid" :data-current="index" @tap="previewImage" v-if="index%2==0" mode="widthFix" :src="item"></image>
+								</block>
+							</view>
+							<view class="picitem">
+								<block v-for="(item,index) in demand.picall" :key="index">
+									<image class="solid" :data-current="index" @tap="previewImage" v-if="index%2==1" mode="widthFix" :src="item"></image>
+								</block>
+							</view>
+						</view>
+					</scroll-view>				
+				</view>
+			</view>
+		</view>
+
+		<view class="cu-modal show" v-if="modal.name=='demandpicModal'">
+			<view class="cu-dialog picmodal">
+				<view class="bg-img">
+					<image mode="widthFix" :src="modal.demandpic"></image>
+					<view class="cu-bar justify-end text-white picmodalclose">
+						<view class="action" @tap="hideModal">
+							<text class="cuIcon-close "></text>
+						</view>
+					</view>
+				</view>
+				<view class="cu-bar bg-white margin-top-xs">
+					<view class="action margin-0 flex-sub solid-left" @tap="saveImage">保存到相册</view>
+				</view>
+			</view>
+		</view>
+		
+		<modal v-if="snatchShow" title="输入人数" confirm-text="抢单" cancel-text="取消" @cancel="cancelSnatch" @confirm="confirmSnatch">
+			<input type="number" style="background-color: #eee;" v-model="num" placeholder="请输入人数"></input>
+		</modal>
+		
+		<wxContact></wxContact>
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				pageloading: false,
+				userinfo: false,
+				workerinfo: false,
+				param: {},
+				demand: null,
+				videosrc: null,
+				iscantele: false,
+				demandlist: {},
+
+				modal: {
+					name: "",
+					demandpic: ""
+				},
+				
+				snatchShow: false,
+				num: '',
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			var demandid = option.demandid || 0;
+			var parentid = option.parentid || 0;
+			if (option.scene) {
+				const scene = decodeURIComponent(option.scene);
+				if (scene != "undefined") {
+					demandid = scene.split("&")[0];
+					parentid = scene.split('&')[1];
+				}
+			}
+			uni.setStorageSync('parentid', parentid);
+			_this.userinfo = _this.checkLogin("/pages/my/my");
+			_this.workerinfo = uni.getStorageSync('workerinfo') || false;
+			if (_this.userinfo === false || _this.workerinfo === false) {
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.$req.ajax({
+				path: "demand/getdemand",
+				title: "加载中...",
+				data: {
+					demandid: demandid,
+					userid: _this.userinfo == null ? 0 : _this.userinfo.id
+				}
+			}).then((data) => {
+				_this.param = data.param;
+				_this.demand = data.demand;
+				_this.iscantele = data.iscantele;
+				_this.demandlist = data.demandlist;
+				
+				setTimeout(function (){
+					_this.videosrc = _this.demand.video=='' ? null : _this.demand.video;
+				}, 1500);
+				_this.pageloading = true;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: _this.demand.title,
+				path: "/pages/demand/detail?demandid=" + _this.demand.id + "&parentid=" + _this.userinfo == null ? 0 : _this.userinfo.id
+			}
+		},
+		methods: {
+			getDemandCode: function() {
+				_this.userinfo = _this.checkLogin("/pages/demand/detail?demandid=" + _this.demand.id);
+				if (_this.userinfo === false) {
+					return false;
+				}
+				_this.$req.ajax({
+					title: "招聘简章生成中...",
+					path: "demand/getdemandcode",
+					data: {
+						demandid: _this.demand.id,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					_this.modal.demandpic = data.demandpic;
+					_this.modal.isshow = "demandpicModal";
+				}).catch((err) => {
+					uni.showModal({
+						title: '温馨提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+
+			saveImage: function() {
+				uni.downloadFile({
+					url: _this.modal.demandpic, //仅为示例,并非真实的资源
+					success: (res) => {
+						if (res.statusCode === 200) {
+							uni.saveImageToPhotosAlbum({
+								filePath: res.tempFilePath,
+								success: function() {
+									uni.showModal({
+										title: '信息提示',
+										content: "已保存到手机相册,注意查收。",
+										showCancel: false
+									});
+								}
+							});
+						}
+					}
+				});
+			},
+			
+			goPage: function(pageurl) {
+				uni.navigateTo({
+					url: pageurl,
+					fail: function() {
+						uni.switchTab({
+							url: pageurl
+						});
+					}
+				});
+			},
+			goDetail: function(demandid) {
+				uni.navigateTo({
+					url: '/pages/demand/detail?demandid=' + demandid
+				});
+			},
+			goShop: function(workerid) {
+				uni.navigateTo({
+					url: '/pages/worker/shop?workerid=' + workerid
+				});
+			},
+			navigate: function(href, e) {
+				// #ifdef H5
+				location.href = href;
+				uni.navigateTo({
+					url: '/pages/tool/webview?pagesrc=' + encodeURIComponent(href)
+				});
+				// #endif
+			},
+			
+			// 接单
+			setDemandLog: function() {
+				uni.showModal({
+					title: '信息提示',
+					content: '接单&咨询该订单会扣除'+_this.param.teldemand+'积分,确定要接单&咨询该订单吗?',
+					success: function(res) {
+						if (res.confirm) {
+							_this.$req.ajax({
+								title: "接单中",
+								path: "demand/setdemandlog",
+								data: {
+									demandid: _this.demand.id,
+									gworkerid: _this.workerinfo.id,
+									userid: _this.userinfo.id
+								}
+							}).then((data) => {
+								_this.iscantele = true;
+								uni.showModal({
+									title: '温馨提示',
+									content: "恭喜您,接单成功,请尽快提供就业人员。",
+									showCancel: false
+								});
+							}).catch((err) => {
+								uni.showModal({
+									title: '温馨提示',
+									content: err,
+									showCancel: false
+								});
+							});
+						}
+					},
+				});
+			},
+			
+			// 弹窗显示隐藏
+			showModal: function(e) {
+				var modalname = e.currentTarget.dataset.modalname;
+				_this.modal.name = modalname;
+			},
+			hideModal: function() {
+				_this.modal.name = null;
+			},
+			// 工作环境
+			previewImage: function(e) {
+				var current = e.currentTarget.dataset.current;
+				uni.previewImage({
+					current: current,
+					urls: _this.demand.picall
+				});
+			},
+			
+			setAddress: function() {
+				uni.openLocation({
+					latitude: parseFloat(_this.demand.worker.latitude),
+					longitude: parseFloat(_this.demand.worker.longitude),
+					name: _this.demand.worker.title,
+					address: _this.demand.worker.city + " " + _this.demand.worker.district + " " + _this.demand.worker.address,
+					success: function () {
+						console.log('success');
+					}
+				});
+			},
+			// 咨询电话
+			makeTelephone: function(e) {
+				var telephone = e.currentTarget.dataset.telephone;
+				if (_this.iscantele){
+					uni.makePhoneCall({
+						phoneNumber: telephone
+					});
+					return;
+				}
+				uni.showModal({
+					title: '信息提示',
+					content: '报名&咨询该订单会扣除'+_this.param.teldemand+'积分,确定要报名&咨询该订单吗?',
+					success: function(res) {
+						if (res.confirm) {
+							_this.$req.ajax({
+								path: "demand/setdemandlog",
+								data: {
+									demandid: _this.demand.id,
+									gworkerid: _this.workerinfo.id,
+									userid: _this.userinfo.id
+								}
+							}).then((data) => {
+								_this.iscantele = true;
+								uni.makePhoneCall({
+									phoneNumber: telephone
+								});
+							}).catch((err) => {
+								uni.showModal({
+									title: '信息提示',
+									content: err,
+									showCancel: false
+								});
+							});
+						}
+					}
+				});
+			},
+			
+			cancelSnatch() {
+				_this.snatchShow = false;
+			},
+			showSnatch() {
+				_this.snatchShow = true;
+			},
+			confirmSnatch() {
+				if (isNaN(_this.num)) {
+					uni.showModal({
+						title: '信息提示',
+						content: "请输入数字",
+						showCancel: false
+					});
+				}
+				
+				_this.$req.ajax({
+					title: "抢单中",
+					path: "demand/demandSnatch",
+					data: {
+						id: _this.demand.id,
+						workerid: _this.workerinfo.id,
+						num: _this.num,
+					}
+				}).then((data) => {
+					_this.iscantele = true;
+					_this.snatchShow = false;
+					uni.showModal({
+						title: '温馨提示',
+						content: "恭喜您,接单成功,请尽快提供就业人员。",
+						showCancel: false
+					});
+				}).catch((err) => {
+					uni.showModal({
+						title: '温馨提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.flex-1 {
+		flex: 1;
+	}
+
+	.flex-6 {
+		flex: 6;
+	}
+
+	.picmodal {
+		width: 640rpx;
+		background-color: transparent;
+	}
+
+	.picmodal image {
+		width: 100%;
+	}
+
+	.picmodal .bg-img {
+		position: relative;
+	}
+
+	.picmodalclose {
+		position: absolute;
+		top: 0rpx;
+		right: 0rpx;
+	}
+	
+	
+	.picallitem{ width: 340rpx; height: 260rpx; }
+	
+	.echo-picalllist{ height: calc(100vh - 105rpx); }
+	.echo-picalllist .picitem{ width: 345rpx !important; }
+	.echo-picalllist image{ width: 345rpx; padding-bottom: 15rpx; }
+	
+	.myVideo{ width: 750rpx; height: calc(100vh - 130px); }
+</style>

+ 203 - 0
pages/demand/snatch.vue

@@ -0,0 +1,203 @@
+<template>
+	<view>
+		<scroll-view scroll-x class="bg-white nav solid-bottom solid-bottom echo-fixed-top">
+			<view class="flex text-center">
+				<view class="cu-item flex-sub" :class="status==0?'text-blue cur':''" @tap="tabSelect" data-status="0">全部</view>
+				<view class="cu-item flex-sub" :class="status==1?'text-blue cur':''" @tap="tabSelect" data-status="1">待审核</view>
+				<view class="cu-item flex-sub" :class="status==2?'text-blue cur':''" @tap="tabSelect" data-status="2">审核通过</view>
+				<view class="cu-item flex-sub" :class="status==3?'text-blue cur':''" @tap="tabSelect" data-status="3">已完成</view>
+			</view>
+		</scroll-view>
+		<view class="echo-fixed-top-empty"></view>
+		
+		
+		<block v-for="(item,index) in plist" :key="index">
+			<view class="cu-card dynamic no-card solid-bottom echo-demand-item margin-tb-sm">
+				<view class="cu-item shadow padding-top-sm">
+					<view class="padding-lr padding-bottom-xs flex justify-between align-center" @tap="goDetail(item.demand_id)">
+						<view class="basis-xl text-bold text-lg text-cut">{{item.demand.title}}</view>
+						<view class="basis-xs text-cut text-right text-gray text-sm">{{item.demand.city}}</view>
+					</view>
+					<view class="padding-lr flex justify-between align-bottom" @tap="goDetail(item.demand_id)">
+						<view><text class="text-red text-bold">{{item.demand.zwagall}}</text></view>
+						<view><text class="text-red text-bold">{{item.demand.wtype_text}}</text></view>
+						<view class="text-red">{{item.demand.ftype_text}}:{{item.demand.fwagall}}</view>
+					</view>
+					<view class="padding-lr text-cut" @tap="goDetail(item.demand_id)">
+						<view v-for="(titem,tindex) in item.demand.tags" :key="tindex" class="cu-tag light bg-gray sm">{{titem}}</view>
+					</view>
+					
+					<view class="text-gray padding-lr padding-tb-sm flex align-center justify-between" @tap="goShop(item.demand.workerid)">
+						<view class="text-cut basis-xl">
+							<view class="cu-capsule margin-right-sm">
+								<view class="cu-tag bg-red">
+									<text class="cuIcon-safe"></text>
+								</view>
+								<view class="cu-tag line-red">认证企业</view>
+							</view>
+							{{item.worker.title}}
+						</view>
+						<view class="text-gray text-right basis-xs">
+							<text class="cuIcon-shop margin-right-xs text-lg"></text>
+							进店
+						</view>
+					</view>
+					
+					<view class="grid solids-top text-center col-2 padding-tb-sm bg-white">
+						<view @tap="showReport"><text class="cuIcon-edit padding-right-xs"></text> 报备情况 </view>
+						<view @tap="makeTelephone" :data-telephone="item.demand.telephone"><text class="cuIcon-phone padding-right-xs"></text> 联系对方 </view>
+					</view>
+				</view>
+			</view>
+		</block>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		<view class="padding"></view>
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				isRotate: false,
+				status: 0,
+				userinfo: false,
+				workerinfo: false,
+				
+				param: {},
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.status = option.status || 0;
+			_this.userinfo = _this.checkLogin("/pages/my/my");
+			_this.workerinfo = uni.getStorageSync('workerinfo') || false;
+			if (_this.userinfo === false || _this.workerinfo === false) {
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.pageRefresh();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			
+			delDemandlog: function(e) {
+				var itemlogid = e.currentTarget.dataset.itemlogid;
+				var itemindex = e.currentTarget.dataset.itemindex;
+				uni.showModal({
+					title: '信息提示',
+					content: '删除后不可恢复,确定要删除吗?',
+					success: function(res) {
+						if (res.confirm) {
+							_this.$req.ajax({
+								path: "demand/deldemandlog",
+								data: {
+									gworkerid: _this.workerinfo.id,
+									logid: itemlogid
+								}
+							}).then((data) => {
+								_this.modalName = null;
+								_this.plist.splice( itemindex, 1 );
+							}).catch((err) => {
+								uni.showModal({
+									title: '信息提示',
+									content: err,
+									showCancel: false
+								});
+							});
+						}
+					}
+				});
+			},
+			
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "demand/listSnatch",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						status: _this.status,
+						workerid: _this.workerinfo.id
+					}
+				}).then((data) => {
+					_this.param = data.param;
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			tabSelect: function(e) {
+				_this.status = e.currentTarget.dataset.status;
+				_this.pageRefresh();
+			},
+			
+			makeTelephone: function(e) {
+				var telephone = e.currentTarget.dataset.telephone;
+				uni.makePhoneCall({
+					phoneNumber: telephone
+				});
+			},
+			
+			goDetail: function(id) {
+				uni.navigateTo({
+					url: '/pages/demand/detail?demandid=' + id
+				});
+			},
+			goShop: function(workerid) {
+				uni.navigateTo({
+					url: '/pages/worker/shop?workerid=' + workerid
+				});
+			},
+			showReport() {
+				uni.showModal({
+					title: '信息提示',
+					content: '请上PC端查看报备详情',
+					showCancel: false
+				});
+			},
+		},
+	}
+</script>
+
+<style>
+	.picmodal{ width: 640rpx; background-color: transparent; }
+	.picmodal image{ width: 100%; }
+	
+	.picmodal .bg-img{ position: relative; }
+	.picmodalclose{ position: absolute; top: 0rpx; right: 0rpx; }
+</style>

+ 276 - 0
pages/demand/wdemandlist.vue

@@ -0,0 +1,276 @@
+<template>
+	<view>
+		<scroll-view scroll-x class="bg-white nav solid-bottom solid-bottom echo-fixed-top">
+			<view class="flex text-center">
+				<view class="cu-item flex-sub" :class="status==0?'text-blue cur':''" @tap="tabSelect" data-status="0">全部</view>
+				<view class="cu-item flex-sub" :class="status==1?'text-blue cur':''" @tap="tabSelect" data-status="1">待修改</view>
+				<view class="cu-item flex-sub" :class="status==2?'text-blue cur':''" @tap="tabSelect" data-status="2">待审核</view>
+				<view class="cu-item flex-sub" :class="status==3?'text-blue cur':''" @tap="tabSelect" data-status="3">已上架</view>
+				<view class="cu-item flex-sub" :class="status==4?'text-blue cur':''" @tap="tabSelect" data-status="4">已停招</view>
+				<view class="cu-item flex-sub" :class="status==5?'text-blue cur':''" @tap="tabSelect" data-status="5">已下架</view>
+			</view>
+		</scroll-view>
+		<view class="echo-fixed-top-empty"></view>
+		
+		
+		<block v-for="(item,index) in plist" :key="index">
+			<view class="cu-card dynamic no-card solid-bottom echo-demand-item margin-tb-sm">
+				<view class="cu-item shadow padding-top-sm padding-bottom">
+					<view class="padding-lr padding-bottom-xs flex justify-between align-center">
+						<view class="basis-xl text-bold text-lg text-cut">{{item.title}}</view>
+						<view class="basis-xs text-cut text-right text-gray text-sm">{{item.city}}</view>
+					</view>
+					<view class="padding-lr flex justify-between align-bottom">
+						<view v-if="item.wtype==1"><text class="text-red text-bold">{{item.zwagall}}</text></view>
+						<view v-if="item.wtype==5"><text class="text-red text-bold">其他</text></view>
+						<view v-else><text class="text-red text-bold">{{item.bwagall}}</text></view>
+						<view class="text-red">{{item.ftype_text}}:{{item.fwagall}}</view>
+					</view>
+					<view class="padding-lr padding-bottom-sm text-cut">
+						<view v-for="(titem,tindex) in item.tags" :key="tindex" class="cu-tag light bg-gray sm">{{titem}}</view>
+					</view>
+					
+					<view class="grid solids-top text-center col-2" v-if="item.status==1">
+						<view @tap="goDemandform" :data-demandid="item.id" class="padding-top"><text class="cuIcon-write padding-right-xs"></text> 编辑 </view>
+						<view @tap="statusDemand" :data-demandid="item.id" :data-status="2" class="padding-top"><text class="cuIcon-pulldown padding-right-xs"></text> 提交审核 </view>
+					</view>
+					<view class="grid solids-top text-center col-1" v-if="item.status==2">
+						<view @tap="goDemandform" :data-demandid="item.id" class="padding-top"><text class="cuIcon-write padding-right-xs"></text> 编辑 </view>
+					</view>
+					<view class="grid solids-top text-center col-5" v-if="item.status==3">
+						<view @tap="goDemandform" :data-demandid="item.id" class="padding-top"><text class="cuIcon-write padding-right-xs"></text> 编辑 </view>
+						<view @tap="statusDemand" :data-demandid="item.id" :data-status="5" class="padding-top"><text class="cuIcon-pulldown padding-right-xs"></text> 下架 </view>
+						<view @tap="updateTime" :data-demandid="item.id" class="padding-top"><text class="cuIcon-top padding-right-xs"></text> 置顶 </view>
+						<view @tap="goWdemandLog" :data-demandid="item.id" class="padding-top"><text class="cuIcon-list padding-right-xs"></text> 记录 </view>
+						<view @tap="goDemandDetail" :data-demandid="item.id" class="padding-top"><text class="cuIcon-text padding-right-xs"></text> 详情 </view>
+					</view>
+					<view class="grid solids-top text-center col-4" v-if="item.status==4">
+						<view @tap="goDemandform" :data-demandid="item.id" class="padding-top"><text class="cuIcon-write padding-right-xs"></text> 编辑 </view>
+						<view @tap="statusDemand" :data-demandid="item.id" :data-status="5" class="padding-top"><text class="cuIcon-pulldown padding-right-xs"></text> 下架 </view>
+						<view @tap="goWdemandLog" :data-demandid="item.id" class="padding-top"><text class="cuIcon-list padding-right-xs"></text> 记录 </view>
+						<view @tap="goDemandDetail" :data-demandid="item.id" class="padding-top"><text class="cuIcon-text padding-right-xs"></text> 详情 </view>
+					</view>
+					<view class="grid solids-top text-center col-3" v-if="item.status==5">
+						<view @tap="goDemandform" :data-demandid="item.id" class="padding-top"><text class="cuIcon-write padding-right-xs"></text> 编辑 </view>
+						<view @tap="statusDemand" :data-demandid="item.id" :data-status="4" class="padding-top"><text class="cuIcon-pullup padding-right-xs"></text> 上架 </view>
+						<view @tap="goWdemandLog" :data-demandid="item.id" class="padding-top"><text class="cuIcon-list padding-right-xs"></text> 记录 </view>
+					</view>
+					
+				</view>
+			</view>
+		</block>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		<view class="padding"></view>
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				isRotate: false,
+				status: 3,
+				userinfo: false,
+				workerinfo: false,
+				
+				param: {},
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: [],
+				
+				modal:{
+					isshow: "",
+					demandpic: ""
+				}
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.status = option.status || 3;
+			_this.userinfo = _this.checkLogin("/pages/my/my");
+			_this.workerinfo = uni.getStorageSync('workerinfo') || false;
+			if (_this.userinfo === false || _this.workerinfo === false) {
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.pageRefresh();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			
+			goDemandDetail: function(e) {
+				var demandid = e.currentTarget.dataset.demandid;
+				uni.navigateTo({
+				    url: '/pages/demand/detail?demandid='+demandid
+				});
+			},
+			
+			goWdemandLog: function(e) {
+				var demandid = e.currentTarget.dataset.demandid;
+				uni.navigateTo({
+				    url: '/pages/demand/wdemandlog?demandid='+demandid
+				});
+			},
+			
+			goDemandform: function(e) {
+				var demandid = e.currentTarget.dataset.demandid;
+				uni.navigateTo({
+				    url: '/pages/demand/demandform?demandid='+demandid
+				});
+			},
+			
+			saveImage: function() {
+				uni.downloadFile({
+				    url: _this.modal.demandpic, //仅为示例,并非真实的资源
+				    success: (res) => {
+				        if (res.statusCode === 200) {
+				            uni.saveImageToPhotosAlbum({
+				            	filePath: res.tempFilePath,
+				            	success: function () {
+									uni.showModal({
+										title: '信息提示',
+										content: "已保存到手机相册,注意查收。",
+										showCancel: false
+									});
+				            	}
+				            });
+				        }
+				    }
+				});
+			},
+			hideModal: function() {
+				_this.modal.isshow = "";
+			},
+			shareDemand: function(e) {
+				var demandid = e.currentTarget.dataset.demandid;
+				_this.$req.ajax({
+					title: "招聘简章生成中...",
+					path: "demand/getdemandcode",
+					data: {
+						demandid: demandid,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					_this.modal.demandpic = data.demandpic;
+					_this.modal.isshow = "show";
+				}).catch((err) => {
+					uni.showModal({
+						title: '温馨提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			statusDemand: function(e) {
+				var demandid = e.currentTarget.dataset.demandid;
+				var status = e.currentTarget.dataset.status;
+				_this.$req.ajax({
+					path: "wdemand/statusdemand",
+					data: {
+						demandid: demandid,
+						userid: _this.userinfo.id,
+						workerid: _this.workerinfo.id,
+						status: status
+					}
+				}).then((data) => {
+					_this.pageRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			updateTime: function(e) {
+				var demandid = e.currentTarget.dataset.demandid;
+				uni.showModal({
+					title: '信息提示',
+					content: '每次置顶会扣除'+_this.param.topdemand+'积分,确定要做置顶操作吗?',
+					success: function(res) {
+						if (res.confirm) {
+							_this.$req.ajax({
+								path: "wdemand/updatedemand",
+								data: {
+									demandid: demandid,
+									userid: _this.userinfo.id,
+									workerid: _this.workerinfo.id
+								}
+							}).then((data) => {
+								_this.pageRefresh();
+							}).catch((err) => {
+								uni.showModal({
+									title: '信息提示',
+									content: err,
+									showCancel: false
+								});
+							});
+						}
+					}
+				});
+			},
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "wdemand/listdemand",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						status: _this.status,
+						workerid: _this.workerinfo.id
+					}
+				}).then((data) => {
+					_this.param = data.param;
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			tabSelect: function(e) {
+				_this.status = e.currentTarget.dataset.status;
+				_this.pageRefresh();
+			},
+		},
+	}
+</script>
+
+<style>
+	.picmodal{ width: 640rpx; background-color: transparent; }
+	.picmodal image{ width: 100%; }
+	
+	.picmodal .bg-img{ position: relative; }
+	.picmodalclose{ position: absolute; top: 0rpx; right: 0rpx; }
+</style>

+ 186 - 0
pages/demand/wdemandlog.vue

@@ -0,0 +1,186 @@
+<template>
+	<view>
+		<view class="bg-white padding text-xl text-black text-bold">
+			{{demand.title}}(<text class="text-red text-bold">{{demand.num}}人</text>)
+		</view>
+		<view class="bg-white padding-lr padding-bottom">
+			<view class="text-lg text-red text-bold">{{demand.ftype_text}}:{{demand.fwagall}}</view>
+		</view>
+		<view class="bg-white padding-lr padding-bottom flex justify-between">
+			<view><text class="text-red text-bold">{{demand.wtype_text}}</text></view>
+			<view><text class="text-red text-bold">{{demand.zwagall}}</text></view>
+			<text class="text-sm text-gray">{{demand.city}} {{demand.district}}</text>
+		</view>
+		<view class="bg-white padding-lr padding-bottom margin-bottom-sm align-center">
+			<view v-for="(item,index) in demand.tags" :key="index" class="cu-tag light bg-grey margin-bottom-xs">{{item}}</view>
+		</view>
+		
+		<view class="cu-bar bg-white solids-bottom">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 接单记录
+			</view>
+			<view class="action">
+				<text class="text-df">共 {{logcount}} 条 </text>
+				<view class="cuIcon-right"></view>
+			</view>
+		</view>
+		<view class="cu-list menu-avatar">
+			<block v-for="(item,index) in plist" :key="index">
+				<view class="cu-item ">
+					<view class="cu-avatar radius lg" :style="'background-image:url('+item.worker.tilpic+');'"></view>
+					<view class="content">
+						<view class="text-black">
+							<view class="text-cut">{{item.worker.title}}(<text class="text-red text-bold">{{item.num}}人</text></view>)
+						</view>
+						<view class="text-gray text-sm flex">
+							<view class="text-cut">接单时间:{{item.createtime}}</view>
+						</view>
+					</view>
+					<view class="action">
+						<button class="cu-btn bg-blue cuIcon" @tap="makeTelephone" :data-telephone="item.worker.mobile">
+							<text class="cuIcon-phone"></text>
+						</button>
+					</view>
+				</view>
+			</block>
+		</view>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				isRotate: false,
+				userinfo: false,
+				workerinfo: false,
+				demand: {},
+				logcount: 0,
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(option) {
+			_this = this;
+			var demandid = option.demandid || 0;
+			_this.userinfo = _this.checkLogin("/pages/my/my");
+			_this.workerinfo = uni.getStorageSync('workerinfo') || false;
+			if (_this.userinfo === false || _this.workerinfo === false) {
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.$req.ajax({
+				path: "wdemand/pagewdemandlog",
+				data: {
+					demandid: demandid,
+					workerid: _this.workerinfo.id
+				}
+			}).then((data) => {
+				_this.demand = data.demand;
+				_this.logcount = data.logcount;
+				_this.getMore();
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onPullDownRefresh: function() {
+			_this.pageRefresh();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "wdemand/wdemandloglist",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						workerid: _this.workerinfo.id,
+						demandid: _this.demand.id
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			delWorderlog: function(e) {
+				var itemlogid = e.currentTarget.dataset.itemlogid;
+				var itemindex = e.currentTarget.dataset.itemindex;
+				uni.showModal({
+					title: '信息提示',
+					content: '删除后不可恢复,确定要删除吗?',
+					success: function(res) {
+						if (res.confirm) {
+							_this.$req.ajax({
+								path: "worder/dellog",
+								data: {
+									userid: _this.userinfo.id,
+									getworkerid: _this.workerinfo.id,
+									logid: itemlogid
+								}
+							}).then((data) => {
+								_this.modalName = null;
+								_this.plist.splice( itemindex, 1 );
+							}).catch((err) => {
+								uni.showModal({
+									title: '信息提示',
+									content: err,
+									showCancel: false
+								});
+							});
+						}
+					}
+				});
+			},
+			
+			tabSelect: function(e) {
+				_this.status = e.currentTarget.dataset.status;
+				_this.pageRefresh();
+			},
+			
+			makeTelephone: function(e) {
+				var telephone = e.currentTarget.dataset.telephone;
+				uni.makePhoneCall({
+					phoneNumber: telephone
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+</style>

+ 441 - 0
pages/form/form.vue

@@ -0,0 +1,441 @@
+<template>
+	<view>
+		<view class="padding-sm bg-red text-center" v-if="form.usernumber>0 && form.form_log_count>=form.usernumber">因提交次数过多,您已不能再提交该表单</view>
+		<view class="bg-white padding solids-bottom">
+			<view class="cu-steps">
+				<view class="cu-item" :class="0>stepsnum?'':'text-blue'">
+					<text class="num" data-index="1"></text> 说明
+				</view>
+				<view class="cu-item" :class="1>stepsnum?'':'text-blue'">
+					<text class="num" data-index="2"></text> 填写
+				</view>
+				<view class="cu-item" :class="2>stepsnum?'':'text-blue'">
+					<text class="num" data-index="3"></text> 完成
+				</view>
+			</view>
+		</view>
+
+		<view class="echo-formmain padding bg-white" v-if="stepsnum==0">
+			<u-parse :content="form.explain" noData="详情内容..." @navigate="navigate"></u-parse>
+			<view class="padding-xl"></view>
+		</view>
+		<view class="cu-bar bg-white tabbar border shop foot" v-if="stepsnum==0">
+			<view class="bg-blue submit" @tap="stepsNum(1)">下一步</view>
+		</view>
+		
+		<form @submit="formSubmit" v-if="stepsnum==1">
+			<view class="echo-formmain padding bg-white">
+				<block v-for="(item,index) in form.formItem" :key="index">
+					<view>
+						<view class="cu-bar bg-white">
+							<view class="action" style="margin-left: 0rpx;">
+								<text class="cuIcon-title text-red" v-if="item.imust==1"></text>
+								<text class="text-sm">{{item.title}}</text>
+							</view>
+							<view class="action" v-if="item.itype==8">
+								{{setform['item'+item.id].length}}/{{item.picnumber}}
+							</view>
+						</view>
+
+						<view class="padding-sm radius bg-white solid-bottom" v-if="item.itype==1">
+							<input :name="'item'+item.id" :data-itemid="item.id" @input="setInput" placeholder="请输入..."></input>
+						</view>
+
+						<view class="padding-sm radius bg-white solid-bottom" v-if="item.itype==2">
+							<textarea class="echo-formmain-textarea" :name="'item'+item.id" :data-itemid="item.id" @input="setInput"
+							 maxlength="-1" placeholder="请输入..."></textarea>
+						</view>
+
+						<view class="padding-sm radius bg-white solid-bottom" v-if="item.itype==3">
+							<picker mode="selector" :name="'item'+item.id" :data-itemid="item.id" @change="pickerChange" :value="setform['item'+item.id]"
+							 :range="item.options">
+								<view class="picker">{{setform['item'+item.id]>-1 ? item.options[setform['item'+item.id]] : "请选择..."}}</view>
+							</picker>
+						</view>
+
+						<view class="radius bg-white solid-bottom" v-if="item.itype==4">
+							<radio-group class="block" :name="'item'+item.id" :data-itemid="item.id" @change="radioChange">
+								<label class="cu-form-group" v-for="(oitem,oindex) in item.options" :key="oindex">
+									<view class="title">{{oitem}}</view>
+									<radio :class="setform['item'+item.id]==oindex?'checked':''" :checked="setform['item'+item.id]==oindex?true:false"
+									 :value="oindex"></radio>
+								</label>
+							</radio-group>
+						</view>
+
+						<view class="radius bg-white solid-bottom" v-if="item.itype==5">
+							<checkbox-group class="block" :name="'item'+item.id" :data-itemid="item.id" @change="checkboxChange">
+								<label class="cu-form-group" v-for="(oitem,oindex) in item.options" :key="oindex">
+									<view class="title">{{oitem}}</view>
+									<checkbox :class="setform['item'+item.id][oindex].checked?'checked':''" :checked="setform['item'+item.id][oindex].checked?true:false"
+									 :value="oindex"></checkbox>
+								</label>
+							</checkbox-group>
+						</view>
+
+						<view class="padding-sm radius bg-white solid-bottom" v-if="item.itype==6">
+							<picker mode="date" :name="'item'+item.id" :data-itemid="item.id" :value="setform['item'+item.id]" @change="dateChange">
+								<view class="picker">
+									{{setform['item'+item.id]}}
+								</view>
+							</picker>
+						</view>
+
+						<view class="padding-sm radius bg-white solid-bottom" v-if="item.itype==7">
+							<picker mode="time" :name="'item'+item.id" :data-itemid="item.id" :value="setform['item'+item.id]" @change="timeChange">
+								<view class="picker">
+									{{setform['item'+item.id]}}
+								</view>
+							</picker>
+						</view>
+
+						<view class="grid col-4 grid-square flex-sub" v-if="item.itype==8">
+							<block v-for="(picitem,picindex) in setform['item'+item.id]" :key="picindex">
+								<view class="bg-img" :data-itemid="item.id" @tap="viewImage" :data-url="picitem">
+									<image :src="picitem" mode="aspectFill"></image>
+									<view class="cu-tag bg-red" :data-itemid="item.id" @tap.stop="delImg" :data-index="index">
+										<text class='cuIcon-close'></text>
+									</view>
+								</view>
+							</block>
+							<view class="solids" :data-itemid="item.id" :data-picnumber="item.picnumber" @tap="chooseImage" v-if="setform['item'+item.id].length < item.picnumber">
+								<text class='cuIcon-cameraadd'></text>
+							</view>
+						</view>
+
+						<view class="padding-top-xs text-gray text-sm">{{item.placeholder}}</view>
+					</view>
+				</block>
+				<view class="padding-xl"></view>
+				<!-- <view class="padding-tb flex flex-direction">
+					<button class="cu-btn lg bg-blue margin-bottom" form-type="submit" v-if="form.usernumber==0 || form.form_log_count<form.usernumber">立即提交</button>
+					<button class="cu-btn lg" @tap="stepsNum(0)">返回上一步</button>
+				</view> -->
+			</view>
+			<view class="cu-bar bg-white tabbar border shop foot" v-if="stepsnum==1">
+				<view class="submit" @tap="stepsNum(0)">上一步</view>
+				<button class="bg-blue submit" style="border-radius: 0rpx !important;" form-type="submit" v-if="form.usernumber==0 || form.form_log_count<form.usernumber">立即提交</button>
+			</view>
+		</form>
+
+		<view class="echo-formmain padding bg-white" v-if="stepsnum==2">
+			<view class="padding">
+				<view class="flex-sub text-center padding-tb">
+					<image :src="$getImageUrl('static/images/applet/formend.jpg')" mode="widthFix" style="width: 370rpx; height: 350rpx;"></image>
+					<view class="text-lg padding-tb">
+						<text class="text-black">《{{form.title}}》信息提交成功</text>
+					</view>
+					<view class="flex flex-direction padding-xl">
+						<button class="cu-btn lg bg-blue" @tap="toIndex">返回首页</button>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uParse from '@/components/gaoyia-parse/parse.vue';
+	var _this;
+	export default {
+		components: {
+			uParse
+		},
+		data() {
+			return {
+				isRotate: false,
+				userinfo: {},
+				form: {},
+				stepsnum: 0,
+				setform: {}
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			var formid = option.formid || 0;
+			_this.userinfo = _this.checkLogin("/pages/form/form?formid=" + formid);
+			if (_this.userinfo === false) {
+				return false;
+			}
+			_this.$req.ajax({
+				path: "form/getform",
+				data: {
+					formid: formid
+				}
+			}).then((data) => {
+				_this.form = data.form;
+				for (let key in data.form.formItem) {
+					var item = data.form.formItem[key];
+					var date = new Date();
+					switch (item.itype) {
+						case 1:
+						case 2:
+							_this.$set(_this.setform, 'item' + item.id, "");
+							break;
+						case 3:
+						case 4:
+							_this.$set(_this.setform, 'item' + item.id, -1);
+							break;
+						case 5:
+							var optionsarr = [];
+							for (var i = 0, lenI = item.options.length; i < lenI; ++i) {
+								optionsarr.push({
+									name: item.options[i],
+									value: i,
+									checked: false
+								});
+							}
+							_this.$set(_this.setform, 'item' + item.id, optionsarr);
+							break;
+						case 6:
+							_this.$set(_this.setform, 'item' + item.id, _this.formatDate(date));
+							break;
+						case 7:
+							_this.$set(_this.setform, 'item' + item.id, _this.formatTime(date));
+							break;
+						case 8:
+							_this.$set(_this.setform, 'item' + item.id, []);
+							break;
+						default:
+							_this.$set(_this.setform, 'item' + item.id, "");
+							break;
+					}
+				}
+				uni.setNavigationBarTitle({
+					title: _this.form.title
+				});
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: _this.form.sharetil,
+				path: "/pages/form/form?formid=" + _this.form.id,
+				imageUrl: _this.form.sharepic
+			}
+		},
+		methods: {
+			// 提交表单
+			formSubmit: function(e) {
+				if (_this.isRotate) {
+					return false;
+				}
+				_this.isRotate = true;
+				var formdata = {
+					userid: _this.userinfo.id,
+					formid: _this.form.id
+				};
+				for (let key in _this.form.formItem) {
+					var item = _this.form.formItem[key];
+					switch (item.itype) {
+						case 1:
+							formdata['item' + item.id] = _this.setform['item' + item.id];
+							break;
+						case 2:
+							formdata['item' + item.id] = _this.setform['item' + item.id];
+							break;
+						case 3:
+							formdata['item' + item.id] = _this.setform['item' + item.id] == -1 ? "" : item.options[_this.setform['item' +
+								item.id]];
+							break;
+						case 4:
+							formdata['item' + item.id] = _this.setform['item' + item.id] == -1 ? "" : item.options[_this.setform['item' +
+								item.id]];
+							break;
+						case 5:
+							formdata['item' + item.id] = "";
+							var optionsarr = _this.setform['item' + item.id];
+							for (var i = 0, lenI = optionsarr.length; i < lenI; ++i) {
+								if (optionsarr[i].checked) {
+									formdata['item' + item.id] += "###" + item.options[optionsarr[i].value];
+								}
+							}
+							if (formdata['item' + item.id].substr(0, 3) == '###') {
+								formdata['item' + item.id] = formdata['item' + item.id].substr(3);
+							}
+							break;
+						case 6:
+							formdata['item' + item.id] = _this.setform['item' + item.id];
+							break;
+						case 7:
+							formdata['item' + item.id] = _this.setform['item' + item.id];
+							break;
+						case 8:
+							formdata['item' + item.id] = _this.setform['item' + item.id].join("###");
+							break;
+						default:
+							formdata['item' + item.id] = _this.setform['item' + item.id];
+							break;
+					}
+					if (item.imust == 1 && formdata['item' + item.id] == "") {
+						uni.showModal({
+							title: '信息提示',
+							content: item.title + " 为必填项,不能为空。",
+							showCancel: false
+						});
+						_this.isRotate = false;
+						return false;
+					}
+				}
+				_this.$req.ajax({
+					path: "form/setform",
+					data: formdata,
+				}).then((data) => {
+					_this.isRotate = false;
+					_this.stepsNum(2);
+				}).catch((err) => {
+					_this.isRotate = false;
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+
+			// 单行输入框 & 多行输入框
+			setInput: function(e) {
+				var itemid = e.currentTarget.dataset.itemid;
+				_this.setform['item' + itemid] = e.detail.value;
+			},
+			// 普通选择
+			pickerChange: function(e) {
+				var itemid = e.currentTarget.dataset.itemid;
+				_this.setform['item' + itemid] = e.detail.value;
+			},
+			// 单选选择
+			radioChange: function(e) {
+				var itemid = e.currentTarget.dataset.itemid;
+				_this.setform['item' + itemid] = e.detail.value;
+			},
+			// 多选选择
+			checkboxChange: function(e) {
+				var itemid = e.currentTarget.dataset.itemid;
+				var items = _this.setform['item' + itemid];
+				var values = e.detail.value;
+				for (var i = 0, lenI = items.length; i < lenI; ++i) {
+					items[i].checked = false;
+					for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
+						if (items[i].value == values[j]) {
+							items[i].checked = true;
+							break
+						}
+					}
+				}
+			},
+			// 日期选择
+			dateChange: function(e) {
+				var itemid = e.currentTarget.dataset.itemid;
+				_this.setform['item' + itemid] = e.detail.value
+			},
+			// 时间选择
+			timeChange: function(e) {
+				var itemid = e.currentTarget.dataset.itemid;
+				_this.setform['item' + itemid] = e.detail.value
+			},
+			// 图片上传
+			chooseImage: function(e) {
+				var itemid = e.currentTarget.dataset.itemid;
+				var picnumber = e.currentTarget.dataset.picnumber;
+				uni.chooseImage({
+					count: picnumber,
+					sizeType: ['original', 'compressed'],
+					sourceType: ['album'],
+					success: (res) => {
+						_this.$req.ajaxFile({
+							path: "attachment/tplfieldimage",
+							title: '正在上传',
+							filePath: res.tempFilePaths[0],
+							fileName: 'file',
+						}).then((filedata) => {
+							var data = JSON.parse(filedata.data);
+							_this.setform['item' + itemid].push(data.data.src);
+						}).catch((err) => {
+							uni.showModal({
+								title: '信息提示',
+								content: err,
+								showCancel: false
+							});
+						});
+					}
+				});
+			},
+			viewImage: function(e) {
+				var itemid = e.currentTarget.dataset.itemid;
+				uni.previewImage({
+					urls: _this.setform['item' + itemid],
+					current: e.currentTarget.dataset.url
+				});
+			},
+			delImg: function(e) {
+				var itemid = e.currentTarget.dataset.itemid;
+				_this.setform['item' + itemid].splice(e.currentTarget.dataset.index, 1);
+			},
+			// 日期时间格式
+			formatDate: function(date) {
+				var myyear = date.getFullYear();
+				var mymonth = date.getMonth() + 1;
+				var myweekday = date.getDate();
+				if (mymonth < 10) {
+					mymonth = "0" + mymonth;
+				}
+				if (myweekday < 10) {
+					myweekday = "0" + myweekday;
+				}
+				return (myyear + "-" + mymonth + "-" + myweekday);
+			},
+			formatTime: function(date) {
+				var myhours = date.getHours();
+				var myminutes = date.getMinutes();
+				if (myhours < 10) {
+					myhours = "0" + myhours;
+				}
+				if (myminutes < 10) {
+					myminutes = "0" + myminutes;
+				}
+				return (myhours + ":" + myminutes);
+			},
+
+			stepsNum: function(num) {
+				_this.stepsnum = num;
+			},
+
+			toIndex: function() {
+				uni.reLaunch({
+					url: '/pages/index/home'
+				});
+			},
+
+			navigate: function(href, e) {
+				// #ifdef H5
+				location.href = href;
+				// #endif
+				// #ifndef H5
+				uni.navigateTo({
+					url: '/pages/tool/webview?pagesrc=' + encodeURIComponent(href)
+				});
+				// #endif
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.echo-formmain {
+		min-height: calc(100vh - 182rpx);
+	}
+
+	.echo-formmain-textarea {
+		width: 100%;
+		height: 4.6em;
+	}
+
+	.echo-top-height {
+		height: 180rpx;
+	}
+</style>

+ 248 - 0
pages/index/home.vue

@@ -0,0 +1,248 @@
+<template>
+	<view class="page">
+		
+		<view class="bg-white homepage">
+			<view>
+				<view class="" @tap="checkWorker">
+					<view class="padding"></view>
+					<image mode="widthFix" style="width: 100%;" :src="zqtop"></image>
+					<view class="padding text-center text-blue">我要招聘</view>
+				</view>
+				<view class="" @tap="goUser">
+					<image mode="widthFix" style="width: 100%; position: fixed; left: 0; bottom: 160rpx;" :src="zqbottom"></image>
+					<view class="padding text-center text-blue" style="width: 100%; position: fixed; left: 0; bottom: 40rpx;">我要求职</view>
+				</view>
+			</view>
+		</view>
+	
+		<view class="cu-modal" :class="modalName=='workerModal'?'show':''">
+			<view class="cu-dialog">
+				<view class="cu-bar bg-white justify-end">
+					<view class="content">身份切换</view>
+					<view class="action" @tap="hideModal">
+						<text class="cuIcon-close text-red"></text>
+					</view>
+				</view>
+				<view class="padding-tb-sm">
+					
+					<view class="cu-list menu">
+						<block v-if="workerall!=null">
+							<view class="cu-item arrow" v-for="(item,index) in workerall" :key="index" @tap="goWorker" :data-index="index">
+								<view class="content text-left">
+									<text class="cuIcon-settings text-grey"></text>
+									<text>{{item.title}}</text>
+								</view>
+								<view class="action">
+									<text class="text-grey">
+										<text class="margin-left text-red" v-if="item.status==1">待审核</text>
+										<text class="margin-left text-red" v-if="item.status==4">升级审核</text>
+									</text>
+								</view>
+							</view>
+						</block>
+						<view class="cu-item arrow" @click="goLogin(1)">
+							<view class="content text-left">
+								<text class="cuIcon-settings text-grey"></text>
+								<text>个人雇主注册</text>
+							</view>
+						</view>
+						<view class="cu-item arrow" @click="goLogin(2)">
+							<view class="content text-left">
+								<text class="cuIcon-settings text-grey"></text>
+								<text>企业雇主注册</text>
+							</view>
+						</view>
+					</view>
+					
+				</view>
+			</view>
+		</view>
+		
+		<view class="cu-modal" :class="modalName=='apptreatyModal'?'show':''">
+			<view class="cu-dialog">
+				<view class="cu-bar bg-white justify-end">
+					<view class="content">服务协议和隐私政策</view>
+				</view>
+				<view class="padding-tb-sm">
+					<scroll-view class="xy-content text-left" scroll-y>
+						<text>请你务必审慎阅读、充分理解“用户服务协议”和“隐私政策”各条款,包括但不限于:为了向你提供即时招聘讯息、内容分享等服务,我们需要收集你的设备信息、操作日志等个人信息。</text> <br/>
+						<view>你可阅读
+							<text class="text-blue" @tap="goPage('/pages/tool/sinpage?field=service')">《用户服务协议》</text>
+							和<text class="text-blue" @tap="goPage('/pages/tool/sinpage?field=privacy')">《隐私政策》</text>
+							了解详细信息,如你同意,请点击“我同意”开始接受我们等服务。
+						</view>
+					</scroll-view>
+				</view>
+				<view class="cu-bar bg-white justify-end">
+					<view class="action">
+						<button class="cu-btn line-blue text-blue" @tap="outApptreaty">不同意</button>
+						<button class="cu-btn bg-blue margin-left" @tap="setApptreaty">我同意</button>
+					</view>
+				</view>
+			</view>
+		</view>
+
+		
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				identityinfo: false,
+				userinfo: false,
+				workerinfo: null,
+				workerall: null,
+				
+				modalName: null,
+				apptreaty: "",
+				
+				zqtop: '',
+				zqbottom: ''
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.getImage();
+			_this.identityinfo = uni.getStorageSync('identityinfo') || false;
+			_this.userinfo = uni.getStorageSync('userinfo') || false;
+			_this.workerinfo = uni.getStorageSync('workerinfo') || null;
+			if (_this.identityinfo==true && _this.workerinfo!=null){
+				uni.reLaunch({
+					url: "/pages/worker/worker"
+				});
+				return;
+			}
+			if (_this.identityinfo==true){
+				uni.reLaunch({
+					url: "/pages/index/index"
+				});
+				return;
+			}
+			_this.$req.ajax({
+				path: "index/gethomedata",
+				data: {
+					userid: _this.userinfo==false ? 0 : _this.userinfo.id
+				}
+			}).then((data) => {
+				_this.apptreaty = data.apptreaty;
+				_this.workerall = data.workerall;
+				
+				// #ifdef APP-PLUS
+				_this.modalName = uni.getStorageSync('apptreatyModal') || "apptreatyModal";
+				// #endif  
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+			
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "晋江人力",
+				path: "/pages/index/home"
+		    }
+		},
+		methods: {
+			// 获取图片
+			getImage: function() {
+				_this.$req.ajax({
+					path: "my/getauthimg",
+					data: {}
+				}).then((data) => {
+					_this.zqtop = data.head1;
+					_this.zqbottom = data.head2;
+				}).catch((err) => {});
+			},
+			setApptreaty: function() {
+				uni.setStorageSync('apptreatyModal', "hideapptreatyModal");
+				_this.modalName = null;
+			},
+			outApptreaty: function() {
+				plus.runtime.quit();  
+			},
+			goPage: function(pageurl) {
+				uni.navigateTo({
+					url: pageurl,
+					fail: function() {
+						uni.switchTab({
+							url: pageurl
+						});
+					}
+				});
+			},
+			
+			
+			checkWorker: function() {
+				if (_this.workerall=='null'){
+					uni.navigateTo({
+						url: "/pages/login/worker"
+					});
+					return false;
+				}
+				_this.modalName = "workerModal";
+			},
+			hideModal: function(e) {
+				_this.modalName = null;
+			},
+			goWorker: function(e) {
+				var index = e.currentTarget.dataset.index;
+				if (_this.workerall[index].status==1){
+					// uni.showModal({
+					// 	title: '信息提示',
+					// 	content: "信息审核中,请耐心等待。",
+					// 	showCancel: false
+					// });
+					// return;
+				}
+				uni.setStorageSync('identityinfo', true);
+				uni.setStorageSync('workerinfo', _this.workerall[index]);
+				uni.reLaunch({
+					url: "/pages/worker/worker"
+				});
+			},
+			
+			
+			goLogin: function(wtype) {
+				uni.setStorageSync('identityinfo', true);
+				uni.navigateTo({
+					url: "/pages/login/worker?wtype="+wtype
+				});
+			},
+			
+			goUser: function() {
+				_this.userinfo = _this.checkLogin("/pages/index/index");
+				uni.setStorageSync('identityinfo', true);
+				uni.setStorageSync('workerinfo', null);
+				uni.reLaunch({
+					url: "/pages/index/index"
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	page{ background-color:#fffff6; text-align: center;}
+	bg-color{ background-color:#fffff6;}
+	.homepage{ height: calc(100vh); background-repeat: no-repeat; background-size: 100%; background-position: bottom center;  }
+	.homepage image{ width: 100%; }
+	.homepage image.homebg{ width: 750rpx; position: fixed; bottom: 0rpx; }
+	
+	.homebox{  }
+	.homebox image{ width: 280rpx; }
+	
+	.xy-content{padding:10rpx 30rpx; background:#F6F6F6; line-height:50rpx; font-size:28rpx; text-align: justify; box-sizing:border-box;}
+	.padding{ padding: 40rpx;}
+	.padding15 {
+		padding: 15rpx;
+	}
+	.padding10 {
+		padding: 10rpx;
+	}
+</style>

+ 227 - 0
pages/index/homebak.vue

@@ -0,0 +1,227 @@
+<template>
+	<view>
+		
+		<view class="bg-white homepage">
+			<view>
+				<!-- <view class="padding"></view> -->
+				<image mode="widthFix" :src="$getImageUrl('static/images/applet/homebg.jpg')"></image>
+				<view class="padding"></view>
+				
+				<view class="padding-tb padding-lr-xl flex justify-between homebox">
+					<image mode="widthFix" :src="$getImageUrl('static/images/applet/homebtn1.jpg')" @tap="goUser"></image>
+					
+					<image mode="widthFix" :src="$getImageUrl('static/images/applet/homebtn2.jpg')" @tap="checkWorker"></image>
+				</view>
+			</view>
+			
+			
+			<!-- <image mode="widthFix" src="../../static/images/home2.png" @tap="goUser"></image>
+			<view class="padding"></view>
+			<image mode="widthFix" src="../../static/images/home3.png" @tap="checkWorker"></image> -->
+			
+			
+			<!-- <image class="homebg" mode="widthFix" src="../../static/images/home4.png"></image> -->
+		</view>
+	
+		<view class="cu-modal" :class="modalName=='workerModal'?'show':''">
+			<view class="cu-dialog">
+				<view class="cu-bar bg-white justify-end">
+					<view class="content">身份切换</view>
+					<view class="action" @tap="hideModal">
+						<text class="cuIcon-close text-red"></text>
+					</view>
+				</view>
+				<view class="padding-tb-sm">
+					
+					<view class="cu-list menu">
+						<block v-if="workerall!=null">
+							<view class="cu-item arrow" v-for="(item,index) in workerall" :key="index" @tap="goWorker" :data-index="index">
+								<view class="content text-left">
+									<text class="cuIcon-settings text-grey"></text>
+									<text>{{item.ftitle}}</text>
+								</view>
+								<view class="action">
+									<text class="text-grey">
+										<text class="margin-left text-red" v-if="item.status==1">待审核</text>
+										<text class="margin-left text-red" v-if="item.status==4">升级审核</text>
+									</text>
+								</view>
+							</view>
+						</block>
+						<view class="cu-item arrow" @click="goLogin">
+							<view class="content text-left">
+								<text class="cuIcon-settings text-grey"></text>
+								<text>注册劳务公司</text>
+							</view>
+						</view>
+					</view>
+					
+				</view>
+			</view>
+		</view>
+		
+		<view class="cu-modal" :class="modalName=='apptreatyModal'?'show':''">
+			<view class="cu-dialog">
+				<view class="cu-bar bg-white justify-end">
+					<view class="content">服务协议和隐私政策</view>
+				</view>
+				<view class="padding-tb-sm">
+					<scroll-view class="xy-content text-left" scroll-y>
+						<text>请你务必审慎阅读、充分理解“用户服务协议”和“隐私政策”各条款,包括但不限于:为了向你提供即时招聘讯息、内容分享等服务,我们需要收集你的设备信息、操作日志等个人信息。</text> <br/>
+						<view>你可阅读
+							<text class="text-blue" @tap="goPage('/pages/tool/sinpage?field=service')">《用户服务协议》</text>
+							和<text class="text-blue" @tap="goPage('/pages/tool/sinpage?field=privacy')">《隐私政策》</text>
+							了解详细信息,如你同意,请点击“我同意”开始接受我们等服务。
+						</view>
+					</scroll-view>
+				</view>
+				<view class="cu-bar bg-white justify-end">
+					<view class="action">
+						<button class="cu-btn line-blue text-blue" @tap="outApptreaty">不同意</button>
+						<button class="cu-btn bg-blue margin-left" @tap="setApptreaty">我同意</button>
+					</view>
+				</view>
+			</view>
+		</view>
+
+		
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				identityinfo: false,
+				userinfo: false,
+				workerinfo: null,
+				workerall: null,
+				
+				modalName: null,
+				apptreaty: ""
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.identityinfo = uni.getStorageSync('identityinfo') || false;
+			_this.userinfo = uni.getStorageSync('userinfo') || false;
+			_this.workerinfo = uni.getStorageSync('workerinfo') || null;
+			if (_this.identityinfo==true && _this.workerinfo!=null){
+				uni.reLaunch({
+					url: "/pages/worker/worker"
+				});
+				return;
+			}
+			if (_this.identityinfo==true){
+				uni.reLaunch({
+					url: "/pages/index/index"
+				});
+				return;
+			}
+			_this.$req.ajax({
+				path: "index/gethomedata",
+				data: {
+					userid: _this.userinfo==false ? 0 : _this.userinfo.id
+				}
+			}).then((data) => {
+				_this.apptreaty = data.apptreaty;
+				_this.workerall = data.workerall;
+				
+				// #ifdef APP-PLUS
+				_this.modalName = uni.getStorageSync('apptreatyModal') || "apptreatyModal";
+				// #endif  
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+			
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "晋江人力",
+				path: "/pages/index/home"
+		    }
+		},
+		methods: {
+			setApptreaty: function() {
+				uni.setStorageSync('apptreatyModal', "hideapptreatyModal");
+				_this.modalName = null;
+			},
+			outApptreaty: function() {
+				plus.runtime.quit();  
+			},
+			goPage: function(pageurl) {
+				uni.navigateTo({
+					url: pageurl,
+					fail: function() {
+						uni.switchTab({
+							url: pageurl
+						});
+					}
+				});
+			},
+			
+			
+			checkWorker: function() {
+				if (_this.workerall=='null'){
+					uni.navigateTo({
+						url: "/pages/login/worker"
+					});
+					return false;
+				}
+				_this.modalName = "workerModal";
+			},
+			hideModal: function(e) {
+				_this.modalName = null;
+			},
+			goWorker: function(e) {
+				var index = e.currentTarget.dataset.index;
+				if (_this.workerall[index].status==1){
+					// uni.showModal({
+					// 	title: '信息提示',
+					// 	content: "信息审核中,请耐心等待。",
+					// 	showCancel: false
+					// });
+					// return;
+				}
+				uni.setStorageSync('identityinfo', true);
+				uni.setStorageSync('workerinfo', _this.workerall[index]);
+				uni.reLaunch({
+					url: "/pages/worker/worker"
+				});
+			},
+			
+			
+			goLogin: function() {
+				uni.setStorageSync('identityinfo', true);
+				uni.navigateTo({
+					url: "/pages/login/worker"
+				});
+			},
+			
+			goUser: function() {
+				_this.userinfo = _this.checkLogin("/pages/index/index");
+				uni.setStorageSync('identityinfo', true);
+				uni.setStorageSync('workerinfo', null);
+				uni.reLaunch({
+					url: "/pages/index/index"
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	.homepage{ height: calc(100vh); background-repeat: no-repeat; background-size: 100%; background-position: bottom center;  }
+	.homepage image{ width: 100%; }
+	.homepage image.homebg{ width: 750rpx; position: fixed; bottom: 0rpx; }
+	
+	.homebox{  }
+	.homebox image{ width: 280rpx; }
+	
+	.xy-content{padding:10rpx 30rpx; background:#F6F6F6; line-height:50rpx; font-size:28rpx; text-align: justify; box-sizing:border-box;}
+</style>

+ 714 - 0
pages/index/index.vue

@@ -0,0 +1,714 @@
+<template>
+	<view>
+		
+		<view class="bg-white echo-top">
+			<image class="echo-topbg" mode="widthFix" :src="param.indextopbg"></image>
+			<view style="position: relative;">
+				<view class="cu-bar search" style="position: absolute; left: 0px; right: 0px; margin: 0px auto; top: 0rpx; z-index: 999; width: 90%;">
+					<view class="search-form round text-center">
+						<text class="cuIcon-search"></text>
+						<input @input="bindInput" :adjust-position="false" type="text" placeholder="搜索职位或公司" confirm-type="search"></input>
+					</view>
+					<view class="action" v-if="searchval!==''">
+						<button class="cu-btn bg-white shadow-blur round" @click="btnSearch()">搜索</button>
+					</view>
+				</view>
+				<swiper class="screen-swiper round-dot" style="min-height: 280rpx !important;" :indicator-dots="true" :circular="true"
+				 :autoplay="true" interval="5000" duration="500">
+					<block v-for="(item,index) in slide" :key="index">
+						<swiper-item @tap="pageUrl(item.stype, item.tilurl)">
+							<image :src="item.tilpic" mode="scaleToFill"></image>
+						</swiper-item>
+					</block>
+				</swiper>
+			</view>
+			<!-- 招聘头条 -->
+			<!-- <view class="uni-swiper-msg bg-white solid-top padding-lr-sm solid-bottom noticbox" v-if="article.length>0">
+				<view class="uni-swiper-msg-icon text-xl">
+					<image :src="$getImageUrl('static/images/applet/iconNotice.png')"></image>
+				</view>
+				<swiper :autoplay="true" :circular="true" :vertical="true" interval="5000">
+					<swiper-item v-for="(item, index) in article" :key="index">
+						<navigator :url="'/pages/article/detail?articleid='+item.id">{{item.title}}</navigator>
+					</swiper-item>
+				</swiper>
+			</view> -->
+			<!-- 加群 -->
+			<view class="bg-white join-group" @tap="showConcatModel">
+				<view class="join-left">
+					<image class="myicon" mode="widthFix" :src="$getImageUrl('static/images/applet/wechat_group.png')"></image>
+				</view>
+				<view class="join-right">
+					<view class="arrow">
+						添加企业微信拉你入群<text class="text-blue margin-left-sm">加入群聊</text>
+					</view>
+					<view class="arrow">
+						客服电话<text class="margin-left-sm">19959780161</text><text class="text-blue margin-left-sm">联系客服</text>
+					</view>
+				</view>
+			</view>
+			<!-- 导航 -->
+			<!-- <view class="text-center">
+				<view class="cu-list grid col-4 no-border echo-grid">
+					<block v-for="(item,index) in navigation" :key="item.id">
+						<view class="cu-item" @tap="pageUrl(item.ntype, item.tilurl)">
+							<image :src="item.tilpic" mode="widthFix"></image>
+							<text>{{item.title}}</text>
+						</view>
+					</block>
+				</view>
+			</view> -->
+			<view class="lw-nav-broker">
+				<image class="img" @tap="pageUrl(1,'/pages/broker/brokerform')" :src="$getImageUrl('static/images/applet/index_incon1.png')" mode="widthFix"></image>
+			</view>
+			<view class="lw-nav">
+				<image class="img" @tap="goNavPage('/pages/comjobs/comjobs')" :src="$getImageUrl('static/images/applet/index_incon2.png')" mode="widthFix"></image>
+				<image class="img" @tap="develop()" :src="$getImageUrl('static/images/applet/index_incon3.png')" mode="widthFix"></image>
+				<image class="img" @tap="develop()" :src="$getImageUrl('static/images/applet/index_incon4.png')" mode="widthFix"></image>
+				<image class="img" @tap="develop()" :src="$getImageUrl('static/images/applet/index_incon5.png')" mode="widthFix"></image>
+			</view>
+		</view>
+		
+
+		<!-- 企业招聘 -->
+		<view class="text-bold padding-left-lg bg-white text-xl">推荐职位</view>
+		<view class="cu-bar bg-white" style="text-align: center; height: 80rpx !important; min-height: 80rpx !important;">
+			<!--<image :src="$getImageUrl('static/images/applet/indextil.png')" style="width: 150rpx; height: 35rpx; margin: 0 auto;"></image>-->
+				
+				<view class="flex text-center padding-lr-xs" style="width: 100%; height: 80rpx; font-size: 35rpx; font-weight: bold;line-height: 80rpx;">
+					<view class="cu-item text-df margin-lr-sm" :class="status==0?'text-blue cur selectok':''" @tap="tabSelect" data-status="0">热门推荐</view>
+					<view class="cu-item text-df margin-lr-sm" :class="status==1?'text-blue cur selectok':''" @tap="tabSelect" data-status="1">附近职位</view>
+					<view class="cu-item text-df margin-lr-sm" :class="status==2?'text-blue cur selectok':''" @tap="tabSelect" data-status="2" v-if="userinfo">猜你喜欢</view>
+				</view>
+			
+		</view>
+		<view  v-if="status==0">
+		<block v-for="(item,index) in plist" :key="index">
+			<view class="cu-card dynamic no-card solid-bottom echo-comjobs-item padding-top-sm padding-lr-sm radius">
+				<view class="cu-item shadow padding-top-sm padding-bottom" @tap="goDetail(item.id)">
+					<view class="padding-lr flex justify-between align-center">
+						<view class="basis-lg text-bold text-df text-cut">
+							{{item.title}}
+							<text class="text-red text-sm" v-if="item.wtype==1">(按月)</text>
+							<text class="text-red text-sm" v-if="item.wtype==2">(按时)</text>
+							<text class="text-red text-sm" v-if="item.wtype==3">(按件)</text>
+							<text class="text-red text-sm" v-if="item.wtype==4">(按项目)</text>
+							<text class="text-sm">{{item.recruit_num}}名</text>
+						</view>
+						<view class="basis-sm text-cut text-right text-gray text-sm">
+							<view><text class="text-red text-bold">{{item.zwagall}}</text></view>
+						</view>
+					</view>
+					<view class="padding-lr padding-tb-xs text-cut">
+						<view v-for="(titem,tindex) in item.tags" :key="tindex" class="cu-tag light bg-blue lg echo-tags-item">{{titem}}</view>
+					</view>
+					<view class="padding-lr text-cut text-sm flex justify-between align-center">
+						<view class="basis-lg text-df text-cut">{{item.worker.title}}</view>
+						<view class="basis-sm text-cut text-right text-sm">
+							浏览量:{{item.volume}}
+						</view>
+					</view>
+					<!-- <view class="text-gray padding-lr flex align-center justify-between" @tap="goShop(item.workerid)">
+						<view class="flex align-center">
+							<image class="iconyrz" :src="$getImageUrl('static/images/applet/iconyrz.png')" mode="scaleToFill"></image>
+							<image class="iconwyp" :src="$getImageUrl('static/images/applet/iconwyp.png')" mode="scaleToFill" v-if="item.recruitment_cate==2"></image>
+						</view>
+						<view class="text-gray text-right basis-xs text-sm">
+							<text class="cuIcon-shop margin-right-xs text-lg"></text>
+							进店
+						</view>
+					</view> -->
+				</view>
+			</view>
+		</block>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		</view>
+		<view  v-if="status==1">
+		<!-- <view class="cu-card dynamic no-card solid-bottom echo-comjobs-item">
+			<view class="cu-item shadow padding-top-sm padding-bottom" style="padding-left: 35rpx;">
+				您当前的位置:经度 {{longitude}} 纬度 {{latitude}}<br>
+				{{useraddress}}				
+			</view>
+		</view>	 -->
+		<block v-for="(item,indexn) in plistn" :key="indexn">
+			<view class="cu-card dynamic no-card solid-bottom echo-comjobs-item padding-top-sm padding-lr-sm radius">
+				<view class="cu-item shadow padding-top-sm padding-bottom" @tap="goDetail(item.id)">
+					<view class="padding-lr flex justify-between align-center">
+						<view class="basis-lg text-bold text-df text-cut">
+							{{item.title}}
+							<text class="text-red text-sm" v-if="item.wtype==1">(按月)</text>
+							<text class="text-red text-sm" v-if="item.wtype==2">(按时)</text>
+							<text class="text-red text-sm" v-if="item.wtype==3">(按件)</text>
+							<text class="text-red text-sm" v-if="item.wtype==4">(按项目)</text>
+							<text class="text-sm">{{item.recruit_num}}名</text>
+						</view>
+						<view class="basis-sm text-cut text-right text-gray text-sm">
+							<view><text class="text-red text-bold">{{item.zwagall}}</text></view>
+						</view>
+					</view>
+					<view class="padding-lr padding-tb-xs text-cut">
+						<view v-for="(titem,tindex) in item.tags" :key="tindex" class="cu-tag light bg-blue lg echo-tags-item">{{titem}}</view>
+					</view>
+					<view class="padding-lr text-cut text-sm flex justify-between align-center">
+						<view class="basis-lg text-df text-cut">{{item.worker.title}}</view>
+						<view class="basis-sm text-cut text-right text-sm">
+							浏览量:{{item.volume}}
+						</view>
+					</view>
+					<view class="padding-lr text-cut text-sm flex justify-between align-center">
+						<view class="basis-lg text-df text-cut"></view>
+						<view class="basis-sm text-cut text-right text-sm">
+							{{item.distance}}
+						</view>
+					</view>
+				</view>
+				<!-- <view class="cu-item shadow padding-top-sm padding-bottom">
+					<view class="padding-lr padding-bottom-xs flex justify-between align-center" @tap="goDetail(item.id)">
+						<view class="basis-xl text-bold text-lg text-cut">{{item.title}}</view>
+						<view class="basis-xs text-cut text-right text-gray text-sm">{{item.city}}</view>
+					</view>
+					<view class="padding-lr flex justify-between align-bottom" @tap="goDetail(item.id)">
+						<view v-if="item.wtype==1"><text class="text-red text-bold">{{item.zwagall}}</text></view>
+						<view v-if="item.wtype==5"><text class="text-red text-bold">其他</text></view>
+						<view v-else><text class="text-red text-bold">{{item.bwagall}}</text></view>
+						<view class="text-red">{{item.fwagall}}</view>
+					</view>
+					<view class="padding-lr text-cut" @tap="goDetail(item.id)">
+						<view v-for="(titem,tindex) in item.tags" :key="tindex" class="cu-tag light bg-blue sm echo-tags-item">{{titem}}</view>
+					</view>
+					<view class="padding-lr flex justify-between align-bottom" @tap="goDetail(item.id)">						
+						<view>{{item.worker.title}}</view>
+						<view class="text-red">{{item.distance}}</view>
+					</view>
+					<view class="text-gray padding-lr flex align-center justify-between" @tap="goShop(item.workerid)">
+						<view class="flex align-center">
+							<image class="iconyrz" src="../../static/images/iconyrz.png" mode="scaleToFill"></image>
+							<image class="iconwyp" src="../../static/images/iconwyp.png" mode="scaleToFill" v-if="item.recruitment_cate==2"></image>
+						</view>
+						<view class="text-gray text-right basis-xs text-sm">
+							<text class="cuIcon-shop margin-right-xs text-lg"></text>
+							进店
+						</view>
+					</view>
+				</view> -->
+			</view>
+		</block>
+		<uni-load-more :status="pstatusn"></uni-load-more>
+		</view>
+		
+		<view  v-if="status==2">
+		<block v-for="(item,index) in plistl" :key="index">
+			<view class="cu-card dynamic no-card solid-bottom echo-comjobs-item padding-top-sm padding-lr-sm radius">
+				<view class="cu-item shadow padding-top-sm padding-bottom" @tap="goDetail(item.id)">
+					<view class="padding-lr flex justify-between align-center">
+						<view class="basis-lg text-bold text-df text-cut">
+							{{item.title}}
+							<text class="text-red text-sm" v-if="item.wtype==1">(按月)</text>
+							<text class="text-red text-sm" v-if="item.wtype==2">(按时)</text>
+							<text class="text-red text-sm" v-if="item.wtype==3">(按件)</text>
+							<text class="text-red text-sm" v-if="item.wtype==4">(按项目)</text>
+							<text class="text-sm">{{item.recruit_num}}名</text>
+						</view>
+						<view class="basis-sm text-cut text-right text-gray text-sm">
+							<view><text class="text-red text-bold">{{item.zwagall}}</text></view>
+							<view v-if="item.recruitment_cate == 2"><text class="text-red text-bold">悬赏{{item.retmoney}}{{item.is_pay == 1 ? '(已支付)' : ''}}</text></view>
+						</view>
+					</view>
+					<view class="padding-lr padding-tb-xs text-cut">
+						<view v-for="(titem,tindex) in item.tags" :key="tindex" class="cu-tag light bg-blue lg echo-tags-item">{{titem}}</view>
+					</view>
+					<view class="padding-lr text-cut text-sm flex justify-between align-center">
+						<view class="basis-lg text-df text-cut">{{item.worker.title}}</view>
+						<view class="basis-sm text-cut text-right text-sm">
+							浏览量:{{item.volume}}
+						</view>
+					</view>
+					<!-- <view class="text-gray padding-lr flex align-center justify-between" @tap="goShop(item.workerid)">
+						<view class="flex align-center">
+							<image class="iconyrz" :src="$getImageUrl('static/images/applet/iconyrz.png')"></image>
+							<image class="iconwyp" :src="$getImageUrl('static/images/applet/iconwyp.png')" mode="scaleToFill" v-if="item.recruitment_cate==2"></image>
+						</view>
+						<view class="text-gray text-right basis-xs text-sm">
+							<text class="cuIcon-shop margin-right-xs text-lg"></text>
+							进店
+						</view>
+					</view> -->
+				</view>
+			</view>
+		</block>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		</view>
+		
+		
+		<!-- <button class="cu-btn bg-blue lg shadow echo-gohome" @tap="goHome"> 切换身份 </button> -->
+		
+		<view class="padding-sm"></view>
+		<view class="padding-xl"></view>
+		<view class="cu-bar tabbar bg-white foot">
+			<view class="action text-blue" @tap="goNavPage('/pages/index/index')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/indexSelected.png"></image>
+				</view>
+				首页
+			</view>
+			<view class="action text-gray" @tap="goNavPage('/pages/comjobs/comjobs')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/jobs.png"></image>
+				</view>
+				招聘
+			</view>
+			<!-- #ifndef MP-WEIXIN -->
+			<view class="action text-gray videoimg" @tap="goNavPage('/pages/video/videolist')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/video.png"></image>
+				</view>
+				微工作
+			</view>
+			<!-- #endif -->
+			
+			<view class="action text-gray" @tap="goNavPage('/pages/broker/brokerlist')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/broker.png"></image>
+				</view>
+				经纪人
+			</view>
+			
+			<view class="action text-gray" @tap="goNavPage('/pages/my/my')">
+				<view class="cuIcon-cu-image">
+					<image src="../../static/tabbar/my.png"></image>
+				</view>
+				我的
+			</view>
+		</view>
+		
+		<wxContact ref="wxContact"></wxContact>
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	import QQMapWX from '@/common/qqmap-wx-jssdk';
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				userinfo: null,
+				workerinfo: null,
+				param: [],
+				slide: [],
+				cardCur: 0,
+
+				searchval: "",
+
+				article: [],
+				navigation: [],
+
+				pstatus: 'more',
+				pstatusn: 'more',
+				ppage: 1,
+				ppagen: 1,
+				psize: 20,
+				psizen: 20,
+				plist: [],
+				plistn: [],
+				plistl: [],
+				status: 0,
+				latitude:0.000000,
+				longitude:0.000000,
+				useraddress:"",
+			};
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.status = option.status || 0;
+			_this.userinfo = uni.getStorageSync('userinfo') || false;
+			_this.workerinfo = uni.getStorageSync('workerinfo') || false;
+			if (_this.workerinfo !== false) {
+				uni.reLaunch({
+					url: "/pages/worker/worker"
+				});
+				return false;
+			}
+			uni.getLocation({
+			    success: function (res) {
+					console.log(res);
+			        console.log('纬度:' + res.latitude);
+			        console.log('经度:' + res.longitude);
+					_this.latitude = res.latitude;
+					_this.longitude = res.longitude;
+					// _this.qqmapsdk.reverseGeocoder({
+					// 	    location: {
+					// 	        latitude: res.latitude,
+					// 			longitude: res.longitude
+					// 	    },
+					// 	    success: function (res) {
+					// 			console.log(res.result.address_component);
+					// 			//addressinfo=res.result.address_component;		
+					// 			_this.useraddress = res.result.address_component.province + " " + res.result.address_component.city + " " + res.result.address_component.district;
+					// 	    },
+					// 	    fail: function (res) {
+					// 		    console.log(res)
+					// 		},
+					// 		complete: function (res) {
+					// 		    // console.log(res)
+					// 	    }
+					// })						
+			    }
+			});
+			_this.$req.ajax({
+				path: "index/getindexdata",
+			}).then((data) => {
+				_this.param = data.param;
+				_this.slide = data.slide;
+				_this.navigation = data.navigation;
+				_this.article = data.article;
+				_this.getMore();
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+			_this.qqmapsdk = new QQMapWX({
+				// 在腾讯平台自己申请的秘钥
+				key: 'L2PBZ-J53WR-FUXW6-WB3SD-NWCFO-WYBS6' 
+			});
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "晋江人力",
+				path: "/pages/index/index"
+			}
+		},
+		onPullDownRefresh: function() {			
+			if(_this.status==0){
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.pstatus = 'more';
+			}else if(_this.status==1){
+				_this.ppagen = 1;
+				_this.plistn = [];
+				_this.pstatusn = 'more';
+			}else if(_this.status==2){
+				_this.ppagen = 1;
+				_this.plistn = [];
+				_this.plistl = 'more';
+			}
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if(_this.status==0){
+				if (_this.pstatus !== 'more') {
+					return;
+				}
+			}else{
+				if (_this.pstatusn !== 'more') {
+					return;
+				}
+			}
+			_this.getMore();
+		},
+		methods: {
+			showConcatModel: function() {
+				this.$refs.wxContact.showConcatModel();
+			},
+			goHome: function() {
+				uni.setStorageSync('identityinfo', false);
+				uni.setStorageSync('workerinfo', null);
+				uni.reLaunch({
+					url: "/pages/index/home"
+				});
+			},
+			tabSelect: function(e) {
+				_this.status = e.currentTarget.dataset.status;
+				_this.pageRefresh();
+			},
+			// 搜索
+			bindInput: function(e) {
+				_this.searchval = e.detail.value;
+			},
+			btnSearch: function() {
+				if (_this.searchval == "") {
+					uni.showModal({
+						title: '信息提示',
+						content: "请输入要搜索的关键字...",
+						showCancel: false
+					});
+					return false;
+				}
+				uni.navigateTo({
+					url: '/pages/comjobs/comjobs?searchval=' + _this.searchval
+				});
+			},
+			pageRefresh: function() {
+				if(_this.status==0){
+					_this.pstatus = 'more';
+					_this.ppage = 1;
+					_this.plist = [];
+				}else if(_this.status==1){
+					_this.pstatusn = 'more';
+					_this.ppagen = 1;
+					_this.plistn = [];
+				} else if(_this.status==2){
+					_this.pstatusn = 'more';
+					_this.ppagen = 1;
+					_this.plistl = [];
+				}
+				_this.getMore();
+			},
+			getMore: function() {
+				// 热门职位
+				if(_this.status==0){
+					_this.$req.ajax({
+						path: "index/listcomjobs",
+						data: {
+							ppage: _this.ppage,
+							psize: _this.psize
+						}
+					}).then((data) => {
+						_this.pstatus = data.pstatus;
+						_this.plist = _this.plist.concat(data.plist);
+						_this.ppage += 1;
+						uni.stopPullDownRefresh();
+					}).catch((err) => {
+						uni.showModal({
+							title: '信息提示',
+							content: err,
+							showCancel: false
+						});
+					});
+				}else if(_this.status==1){
+					// 附近职位
+					_this.$req.ajax({
+						path: "index/listComjobsofnear",
+						data: {
+							ppage: _this.ppagen,
+							psize: _this.psizen,
+							lat: _this.latitude,
+							lng: _this.longitude
+						}
+					}).then((data) => {
+						_this.pstatusn = data.pstatus;
+						_this.plistn = _this.plistn.concat(data.plist);
+						_this.ppagen += 1;
+						uni.stopPullDownRefresh();
+					}).catch((err) => {
+						uni.showModal({
+							title: '信息提示',
+							content: err,
+							showCancel: false
+						});
+					});
+				}else if(_this.status==2){
+					// 猜你喜欢
+					_this.$req.ajax({
+						path: "index/listComjobsLike",
+						data: {
+							ppage: _this.ppagen,
+							psize: _this.psizen,
+							userid: _this.userinfo.id,
+						}
+					}).then((data) => {
+						_this.pstatusn = data.pstatus;
+						_this.plistl = _this.plistl.concat(data.plist);
+						_this.ppagen += 1;
+						uni.stopPullDownRefresh();
+					}).catch((err) => {
+						uni.showModal({
+							title: '信息提示',
+							content: err,
+							showCancel: false
+						});
+					});
+				}
+			},
+			
+			goDetail: function(comjobsid) {
+				uni.navigateTo({
+					url: '/pages/comjobs/detail?comjobsid=' + comjobsid
+				});
+			},
+			goShop: function(workerid) {
+				uni.navigateTo({
+					url: '/pages/worker/shop?workerid=' + workerid
+				});
+			},
+			onClick: function(index) {
+				var nav = that.navigation[index.index];
+				if (nav.type == 1) {
+					uni.navigateTo({
+						url: nav.link
+					});
+				} else {
+					// #ifdef H5
+					location.href = nav.link;
+					// #endif
+					// #ifndef H5
+					uni.navigateTo({
+						url: '/pages/tool/webview?pagesrc=' + encodeURIComponent(nav.link)
+					});
+					// #endif
+				}
+			},
+			
+			develop() {
+				uni.showModal({
+					title: '信息提示',
+					content: '正在开发中,敬请期待',
+					showCancel: false
+				});
+			},
+			goNavPage: function(pageurl) {
+				uni.redirectTo({
+					url: pageurl
+				});
+			},
+			// 轮播图
+			cardSwiper: function(e) {
+				_this.cardCur = e.detail.current
+			},
+			pageUrl: function(type, tilurl) {
+				if (type == 1) {
+					uni.navigateTo({
+						url: tilurl,
+						fail: function() {
+							uni.switchTab({
+								url: tilurl
+							});
+						}
+					});
+				} else {
+					uni.navigateTo({
+						url: '/pages/tool/webview?pagesrc=' + encodeURIComponent(tilurl)
+					});
+				}
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	.selectok{ border-bottom: #007AFF solid 2px;}
+	.echo-top {
+		position: relative;
+	}
+
+	.echo-topbg {
+		width: 750rpx;
+		position: absolute;
+		top: 0rpx;
+		z-index: 0;
+	}
+
+	.cu-list.grid {
+		background-color: transparent !important;
+	}
+
+	.card-swiper {
+		height: 300rpx !important;
+	}
+
+	/* 通知 */
+	.noticbox {
+		display: flex;
+		align-items: center;
+
+		image {
+			display: block;
+			margin: 0rpx;
+			padding: 0rpx;
+			width: 150rpx;
+			height: 35rpx;
+		}
+		.uni-swiper-msg-icon {
+			width: 150rpx;
+		}
+		swiper-item {
+			line-height: 80rpx !important; 
+		}
+		swiper {
+			height: 80rpx;
+		}
+		navigator {
+			display: block;
+			line-height: 80rpx;
+			height: 80rpx;
+			font-size: 32rpx;
+		}
+	}
+
+	/* 热门岗位 */
+	.echo-page-title {
+		width: 660rpx;
+		border-radius: 8rpx 8rpx 0rpx 0rpx;
+	}
+
+	.echo-comjobs-list-item {
+		padding: 30rpx 15rpx;
+		margin: 0rpx 17rpx 20rpx 17rpx;
+		border-radius: 8rpx;
+	}
+
+	.echo-comjobs-list-item:first-child {
+		border-radius: 0rpx 0rpx 8rpx 8rpx;
+	}
+	
+	.join-group {
+		display: flex;
+		margin-top: 20px;
+		box-sizing: border-box;
+		width:100%;
+		padding:0 60rpx;
+	}
+	.join-group .join-right {
+		margin-left: 40rpx;
+		width: 450rpx;
+	}
+	.join-group .arrow{position: relative;}
+	.join-group .arrow:before {
+	    position: absolute;
+	    top: 0;
+	    right: -20rpx;
+	    bottom: 0;
+	    display: block;
+	    margin: auto;
+	    width: 30rpx;
+	    height: 30rpx;
+	    color: var(--grey);
+	    content: "\e6a3";
+	    text-align: center;
+	    font-size: 34rpx;
+	    font-family: "cuIcon";
+	    line-height: 30rpx;
+	    margin-top: auto;
+	    margin-right: auto;
+	    margin-bottom: auto;
+	    margin-left: auto;
+	}
+	.lw-nav-broker {
+		width:710rpx;
+		padding:20rpx 0 10rpx 0;
+		margin:0 auto;
+		display: flex;
+		justify-content: space-around;
+	}
+	.lw-nav-broker .img{
+		width: 710rpx;
+		height: 160rpx;
+	}
+	.lw-nav {
+		width:710rpx;
+		padding:10rpx 0 20rpx 0;
+		margin:0 auto;
+		display: flex;
+		justify-content: space-around;
+	}
+	.lw-nav .img {
+		width: 160rpx;
+		height: 160rpx;
+	}
+</style>

+ 58 - 0
pages/login/agreement.vue

@@ -0,0 +1,58 @@
+<template>
+	<view class="login-page">
+		<view class="agreement padding">
+			<view>人才网注册协议</view>
+			<view>《人才网用户服务协议》</view>
+			<view>人才网所提供的各项服务的所有权和运营权归人才网所有。</view>
+			<view>人才网提供的服务仅适用于招聘单位、信息发布商(统称注册公司)和求职者,三方行为必须受以下陈述协议制约,如若不接受该协议,则不能成为人才网的会员,该协议一经接受立即生效。人才网保留更新本协议,之后再通知会员的权利。如果您对人才网声明有关本协议的任何更改都是不可接受的,这样您享有的会员资格与服务即被取消;否则人才网将默认您的行为构成对本协议更改的接受。</view>
+			<view>一、用户服务基本条款</view>
+			<view>1. 用户(求职者)</view>
+			<view>求职者必须同意使用人才网仅用于合法的目的,也就是说,仅用于求职。已注册求职者可以把个人简历通过本网站或直接发送给在本网站已注册的公司。在此种情况下,求职者个人简历仍储存在人才网数据库中,直至求职者把个人简历从其中删除为止。人才网保留对求职者个人简历进行修改的权利。未经求职者的许可,人才网不会把求职人员的个人简历转发给任何未经注册的潜在雇主,但对本网站会员或通过使用本网站搜索引擎及其他方式的第三方用户有权查询到求职者的所有资料,求职人员须同意人才网可以采用其个人资料作为营销的用途。求职者必须独自全部承担由于向注册公司或其他用户发送个人资料所形成的一切风险。人才网对于任何公司(不管它是否在中国境内)与求职者之间所造成的任何纠纷,概不负责。</view>
+			<view>2. 用户(注册公司)</view>
+			<view>人才网一经确认收到注册公司所须的相关服务费用,注册公司即享有人才网正式会员的资格,允许在一段特定的时间内在本网站发布招聘信息或其他信息。人才网正式会员有权进入人才网数据库进行购买服务权限范围内的查询,但禁止利用此项权利进行查询人才以外的其他用途。注册公司须独自对登记在人才网上及其他链接页面上的内容的正确性负责。人才网保留对注册公司资料进行修改的权力。人才网保留在适当的时候制订新的服务收费标准的权力。人才网对拒绝接受新的收费标准的公司,保留延缓或中止该公司会员资格的权利,而且,本网站的这种行为不构成任何侵权和豁免于一切损害赔偿。</view>
+			<view>3. 明令禁止条款(适用于求职者与注册公司)</view>
+			<view>求职者与注册公司严禁使用人才网试图实现以下所列之目的。</view>
+			<view>-求职者不能登记(或邮寄)不完全的、虚假的个人信息。</view>
+			<view>-求职者试图获取职位以外的内容;用人单位试图得到求职者个人简历以外的其他信息。</view>
+			<view>-任何用户不得通过打印、下载、拷贝或其他方式再造其他用户的可辨认的信息。未经特定用户同意的上述任何操作都被严格禁止。</view>
+			<view>-任何用户不得删除或更改其他个人或实体登记的资料。</view>
+			<view>-严禁任何用户侵犯或试图侵犯人才网网站的安全性。包括:登录没有对其授权进入的服务器或帐号;进入没有对其开放的本网站数据库;试图探测或测试本网站及其系统的薄弱点;试图干扰本网站对用户提供的服务;向用户发送包括促销产品广告或服务之类的未经相关用户允诺的电子邮件。对人才网网站系统或网络安全造成损害或破坏的所有个人或实体,人才网将依法追究其法律责任。</view>
+			<view>-任何用户不得使用人才网传发或储存任何违反适用法律或法规的资料;不得以任何形式侵犯其他实体的版权、商标权、商业秘密或其他知识产权;不得侵犯个人和社会大众的隐私安全;禁止传输任何非法的、骚扰性的、中伤性的、辱骂性的、恐吓性的、伤害性、庸俗或淫秽的信息。</view>
+			<view>二、版权、商标权等</view>
+			<view>版权: 人才网网站定义的内容包括:所有图标、图表、文字、声音、相片、录像、软件;广告中的全部内容;电子邮件的全部内容;人才网网站为用户提供的商业信息。所有这些内容受版权、商标及其他相关法律的保护。没有本网站明确的书面批准,任何个人或实体不能擅自复制,再造这些内容,或创造与内容有关的派生产品。</view>
+			<view>三、责任和义务</view>
+			<view>人才网无需全天监控人才网的运作;但拥有该项权利。本网站所有用户必须认可自己所输入的表格、内容、简历的正确性;独立对链接的页面、内容承担责任。人才网对任何与本网站链接的网站的内容的正确性不承担任何责任。人才网不承诺特定用户或特定数量的用户浏览任何个人简历、招聘信息或链接页面。人才网不承诺能够长期无错误运营;不保证其服务器免受病毒或其他机械故障的侵扰。如果用户在使用人才网网站时造成需要维修、更换设备或丢失数据的情况,本网站对这些损失不承担任何责任。就法律所允许的范围内,本网站放弃承诺无机械故障;放弃承诺免使第三方权利受到侵害;放弃承诺本网站内容、服务、软件、文本、图像、链接等的适用性、精确性、可靠性、完整性。</view>
+			<view>四、个人风险条款</view>
+			<view>用户必须同意独自承担由于登录人才网或通过人才网登录到其他站点而形成的全部风险。所有用户独立承担与他人交流信息及发送应聘/招聘意向所造成的后果。本公司不担保用户发送给另一方用户的资料的真实性、精确性与可靠性。用户对所接受的资料的信任纯属个人风险。人才网一经发现任何有违反本协议或侵犯法律的行为,有权马上解除该用户的会员资格及禁止其再次登录本网站。人才网保留删除一切非法的、辱骂性的及不健康的资料的权力。</view>
+			<view>五、赔偿</view>
+			<view>所有用户须承诺保障和维护人才网全体成员的利益;承诺对人才网网站及其领导层、雇员和代理商免受索赔和诉讼;承诺赔偿由于其违反本协议及/或使用本网站而造成的对上述人员的损害。人才网将尽快对上述索赔、诉讼知照或传唤相关人士。</view>
+			<view>六、不承诺条款</view>
+			<view>在任何情况下,人才网及其领导人、主管、雇员和代理商拒绝对由于用户使用本网站及其内容或不能使用本网站而造成的一切损失提供任何担保。</view>
+			<view>七、有限责任条款</view>
+			<view>用户对人才网提出的索赔金额以该用户对本网站缴交的最高款项为限。</view>
+			<view>八、适用法律和管辖权限条款</view>
+			<view>本协议服从中华人民共和国法律解释;用户与人才网双方都必须遵守中华人民共和国的司法管辖。如发生本协议相关条款与中华人民共和国法律相抵触时,则该条款将按相关法律重新解释,而其他条款则依旧保持对用户产生法律效力和影响。</view>
+			<view>为了提供更完善的服务,我们将定时寄发电子邮件、电子贺卡、资讯或电子杂志给注册用户,若您接受项服务款,即表示您同意收到我们的电子邮件、电子贺卡、资讯或电子杂志。</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				
+			};
+		},
+		onLoad: function(option) {
+			
+		},
+		methods: {
+			
+		}
+	}
+</script>
+<style>
+	.agreement{}
+</style>

+ 501 - 0
pages/login/login.vue

@@ -0,0 +1,501 @@
+<template>
+	<view class="login-page">
+		
+		<view style="width: 100%; height: 80rpx;"></view>
+		<view class="padding">
+			<checkbox-group @change="handelChange">
+				<label class="text-center">
+					<checkbox value="1" style="transform:scale(0.7)" :checked="isChecked"/>
+					我已阅读并同意
+				</label>
+				<text class="text-blue" @click="goPage('/pages/login/agreement')">《晋江人力用户服务协议》</text>
+			</checkbox-group>
+		</view>
+		<!-- #ifdef MP-WEIXIN -->
+		<view class="padding flex flex-direction" v-if="formName=='wxLoginForm'">
+			<button class="cu-btn bg-green margin-tb-sm lg" @click="wxLogin">授权登录</button>
+			<button class="cu-btn margin-tb-sm lg" @tap="toPage">返回</button>
+		</view>
+		<view class="padding flex flex-direction" v-if="formName=='wxCheckMobileForm'">
+			<button class="cu-btn bg-green margin-tb-sm lg" open-type="getPhoneNumber" @getphonenumber="wxMobile">手机号快捷登录</button>
+			<button class="cu-btn margin-tb-sm lg" @tap="checkMobile" data-formname="editMobileModal">其他手机号绑定</button>
+			<button class="cu-btn margin-tb-sm lg" @tap="toPage">取消注册登录操作</button>
+		</view>
+		<view class="padding flex flex-direction" v-if="formName=='editMobileModal'">
+			<form>
+				<view class="cu-form-group">
+					<view class="title">手机号码</view>
+					<input type="number" placeholder="请输入手机号..." @input="wxInput" data-val="editmobile" :value="weixinInfo.editmobile"></input>
+				</view>
+				<view class="cu-form-group margin-bottom solids-bottom">
+					<view class="title">验证码</view>
+					<input type="number" placeholder="请输入验证码..." @input="wxInput" data-val="editcode" :value="weixinInfo.editcode"></input>
+					<button class='cu-btn bg-green shadow' @click="getSmsCode(weixinInfo.editmobile)">{{smsinfo.text}}</button>
+				</view>
+			</form>
+			<button class="cu-btn bg-green margin-tb-sm lg" open-type="getUserInfo" @getuserinfo="editMobile">手机号快捷登录</button>
+			<button class="cu-btn margin-tb-sm lg" @tap="checkMobile" data-formname="wxCheckMobileForm">返回</button>
+		</view>
+		<!-- #endif -->
+		
+		<!-- #ifdef APP-PLUS -->
+		<view class="padding flex flex-direction">
+			<form>
+				<view class="cu-form-group">
+					<view class="title">手机号码</view>
+					<input type="number" placeholder="请输入手机号..." @input="appInput" data-val="editmobile" :value="mobileInfo.editmobile"></input>
+				</view>
+				<view class="cu-form-group margin-bottom solids-bottom">
+					<view class="title">验证码</view>
+					<input type="number" placeholder="请输入验证码..." @input="appInput" data-val="editcode" :value="mobileInfo.editcode"></input>
+					<button class='cu-btn bg-green shadow' @click="getSmsMCode(mobileInfo.editmobile)">{{smsinfo.text}}</button>
+				</view>
+			</form>
+			<button class="cu-btn bg-green margin-tb-sm lg" @tap="regMobile">立即登录</button>
+		</view>
+		<!-- #endif -->
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				isChecked: false,
+				isRotate: false,
+				backpage: "/pages/index/index",
+				formName: "editMobileModal",
+				weixinInfo: {
+					parentid: 0,
+					openid: "",
+					nickname: "",
+					avatar: "",
+					editmobile: "",
+					editcode: ""
+				},
+				
+				mobileInfo: {
+					parentid: 0,
+					editmobile: "",
+					editcode: ""
+				},
+
+				timerId: null,
+				smsinfo: {
+					text: '获取验证码',
+					status: false,
+					codeTime: 60,
+					smscodepass: ""
+				}
+			};
+		},
+		onLoad: function(option) {
+			_this = this;
+			var backpage = option.backpage || "/pages/index/index";
+			_this.backpage = decodeURIComponent(backpage);
+			_this.isLogin();
+			_this.weixinInfo.parentid = uni.getStorageSync('parentid') || 0;
+			_this.mobileInfo.parentid = uni.getStorageSync('parentid') || 0;
+			_this.formName = "wxLoginForm";
+		},
+		onHide: function() {
+			clearInterval(_this.timerId);
+		},
+		onUnload: function() {
+			clearInterval(_this.timerId);
+		},
+		methods: {
+			
+			// 判断是否已登录
+			isLogin: function() {
+				try {
+					const userinfo = uni.getStorageSync('userinfo') || null;
+					if (userinfo) {	
+						_this.checkuserinfoall(userinfo);
+						_this.toPage();
+					}
+				} catch (e) {
+					console.log("e: " + JSON.stringify(e));
+				}
+			},
+			handelChange: function (e){
+				_this.isChecked = (e.detail.value.length > 0);
+			},
+			showAgreement: function () {
+				
+			},
+			checkuserinfoall: function(userinfo){
+				_this.$req.ajax({
+					path: "my/getuser",
+					title: "正在获取用户信息",
+					data: {
+						userid: userinfo.id,								
+					}
+				}).then((data) => {
+					//判断用户资料是否完善
+					// if(data.user.education=="" || data.user.address=="" || data.user.workexperience=="" || data.user.eduexperience==""){								
+					// 	uni.navigateTo({
+					// 		url: "/pages/my/myinfo"
+					// 	});
+					// 	return false;
+					// }
+					//判断用户是否已实名认证
+					_this.toPage();
+					if(data.user.authstatus==1){
+						uni.navigateTo({
+							url: "/pages/my/myauth"
+						});
+						return false;
+					}
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});	
+			},
+			// 页面跳转
+			toPage: function() {
+				uni.reLaunch({
+					url: _this.backpage,
+					fail: function() {
+						uni.switchTab({
+							url: _this.backpage
+						});
+					}
+				});
+			},
+			goPage: function(pageurl) {
+				uni.navigateTo({
+					url: pageurl,
+					fail: function() {
+						uni.switchTab({
+							url: pageurl
+						});
+					}
+				});
+			},
+			
+			
+			// S 微信端登录注册
+			// 自填手机号
+			editMobile: function() {
+				if (_this.isRotate) {
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "login/seteditmobile",
+					title: "正在授权登录",
+					data: {
+						parentid: _this.weixinInfo.parentid,
+						openid: _this.weixinInfo.openid,
+						nickname: _this.weixinInfo.nickname,
+						avatar: _this.weixinInfo.avatar,
+						editmobile: _this.weixinInfo.editmobile,
+						editcode: _this.weixinInfo.editcode,
+						smscodepass: _this.smsinfo.smscodepass
+					}
+				}).then((data) => {
+					uni.setStorageSync('userinfo', data.userinfo);
+					_this.toPage();
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+
+			// 微信手机号
+			wxMobile: function(e) {
+				if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
+					uni.showModal({
+						title: '警告',
+						content: '您点击了拒绝授权,将无法正常注册登录,点击确定重新获取授权。',
+						showCancel: false
+					});
+				} else {
+					if (_this.isRotate) {
+						return false;
+					}
+					_this.isRotate = true;
+					_this.$req.ajax({
+						path: "login/setwxmobile",
+						title: "正在授权登录",
+						data: {
+							parentid: _this.weixinInfo.parentid,
+							openid: _this.weixinInfo.openid,
+							session_key: _this.weixinInfo.session_key,
+							nickname: _this.weixinInfo.nickname,
+							avatar: _this.weixinInfo.avatar,
+							iv: e.detail.iv,
+							encryptedData: encodeURIComponent(e.detail.encryptedData)
+						}
+					}).then((data) => {
+						uni.setStorageSync('userinfo', data.userinfo);
+						_this.checkuserinfoall(data.userinfo);
+						_this.toPage();
+						_this.isRotate = false;
+					}).catch((err) => {
+						uni.showModal({
+							title: '信息提示',
+							content: err,
+							showCancel: false
+						});
+						_this.isRotate = false;
+					});
+				}
+			},
+
+			// 获取OpenId
+			wxLogin: function() {
+				if (!_this.isChecked) {
+					uni.showModal({
+						title: '警告',
+						content: '请先查看并勾选协助。',
+						showCancel: false
+					});
+					return false;
+				}
+				uni.login({
+					provider: 'weixin',
+					success: function(loginRes) {
+						if (_this.isRotate) {
+							return false;
+						}
+						_this.isRotate = true;
+						_this.$req.ajax({
+							path: "login/getwxopenid",
+							title: "正在授权登录",
+							data: {
+								code: loginRes.code
+							}
+						}).then((data) => {
+							if (data.userinfo == null) {
+								uni.showModal({
+									title: '温馨提示',
+									content: '亲,授权微信登录后才能正常使用小程序功能',
+									success(res) {
+										//如果用户点击了确定按钮
+										if (res.confirm) {
+											uni.getUserProfile({
+												desc: '获取你的昵称、头像、地区及性别',
+												success: infoRes => {
+													_this.weixinInfo.openid = data.openid;
+													_this.weixinInfo.session_key = data.session_key;
+													_this.weixinInfo.nickname = infoRes.userInfo.nickName;
+													_this.weixinInfo.avatar = infoRes.userInfo.avatarUrl;
+													_this.formName = "wxCheckMobileForm";
+												},
+												fail: res => {
+													uni.showModal({
+														title: '警告',
+														content: '您点击了拒绝授权,将无法正常注册登录,点击确定重新获取授权。',
+														showCancel: false,
+														success: function(res) {
+															if (res.confirm) {
+																uni.openSetting();
+															}
+														}
+													});
+												}
+											});
+										} else if (res.cancel) {
+											//如果用户点击了取消按钮
+											uni.showToast({
+												title: '警告',
+												content: '您点击了拒绝授权,将无法正常注册登录,点击确定重新获取授权。',
+												icon: 'error',
+												duration: 2000
+											});
+											return;
+										}
+									}
+								});
+								// uni.getUserProfile({
+								// 	desc:"获取个人信息",
+								// 	provider: 'weixin',
+								// 	withCredentials: true,
+								// 	success: function(infoRes) {
+								// 		console.log(infoRes);
+								// 		return false;
+								// 		_this.weixinInfo.openid = data.openid;
+								// 		_this.weixinInfo.session_key = data.session_key;
+								// 		_this.weixinInfo.nickname = infoRes.userInfo.nickName;
+								// 		_this.weixinInfo.avatar = infoRes.userInfo.avatarUrl;
+								// 		_this.formName = "wxCheckMobileForm";
+								// 	},
+								// 	fail: function(res) {
+								// 		console.log(res);
+								// 		uni.showModal({
+								// 			title: '警告',
+								// 			content: '您点击了拒绝授权,将无法正常注册登录,点击确定重新获取授权。',
+								// 			showCancel: false,
+								// 			success: function(res) {
+								// 				if (res.confirm) {
+								// 					uni.openSetting();
+								// 				}
+								// 			}
+								// 		});
+								// 	}
+								// });
+							} else {
+								uni.setStorageSync('userinfo', data.userinfo);
+								_this.checkuserinfoall(data.userinfo);
+								_this.toPage();
+							}
+							_this.isRotate = false;
+						}).catch((err) => {
+							uni.showModal({
+								title: '信息提示',
+								content: err,
+								showCancel: false
+							});
+							_this.isRotate = false;
+						});
+					}
+				});
+			},
+			
+			checkMobile: function(e) {
+				_this.formName = e.currentTarget.dataset.formname;
+			},
+
+			// 获取短信验证码
+			getSmsCode: function(mobile) {
+				if (_this.smsinfo.status) {
+					return false;
+				}
+				_this.smsinfo.status = true;
+				_this.$req.ajax({
+					path: "login/smsregister",
+					data: {
+						identifier: mobile
+					}
+				}).then((data) => {
+					_this.smsinfo.smscodepass = data.smscodepass;
+					_this.timerId = setInterval(() => {
+						var codeTime = _this.smsinfo.codeTime;
+						codeTime--;
+						_this.smsinfo.codeTime = codeTime;
+						_this.smsinfo.text = codeTime + "s 后重新发送";
+						if (codeTime < 1) {
+							clearInterval(_this.timerId);
+							_this.smsinfo.text = "重新获取";
+							_this.smsinfo.codeTime = 60;
+							_this.smsinfo.status = false;
+						}
+					}, 1000);
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.smsinfo.status = false;
+				});
+			},
+			
+			wxInput: function(e) {
+				var dataval = e.currentTarget.dataset.val;
+				_this.weixinInfo[dataval] = e.detail.value;
+			},
+			// E 微信端登录注册
+			
+			// S APP端登录注册
+			appInput: function(e) {
+				var dataval = e.currentTarget.dataset.val;
+				_this.mobileInfo[dataval] = e.detail.value;
+			},
+			// 获取短信验证码
+			getSmsMCode: function(mobile) {
+				if (_this.smsinfo.status) {
+					return false;
+				}
+				_this.smsinfo.status = true;
+				_this.$req.ajax({
+					path: "login/smsmobilelogin",
+					data: {
+						identifier: mobile
+					}
+				}).then((data) => {
+					_this.smsinfo.smscodepass = data.smscodepass;
+					_this.timerId = setInterval(() => {
+						var codeTime = _this.smsinfo.codeTime;
+						codeTime--;
+						_this.smsinfo.codeTime = codeTime;
+						_this.smsinfo.text = codeTime + "s 后重新发送";
+						if (codeTime < 1) {
+							clearInterval(_this.timerId);
+							_this.smsinfo.text = "重新获取";
+							_this.smsinfo.codeTime = 60;
+							_this.smsinfo.status = false;
+						}
+					}, 1000);
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.smsinfo.status = false;
+				});
+			},
+			regMobile: function() {
+				if (_this.isRotate) {
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "login/mobilelogin",
+					title: "正在登录",
+					data: {
+						parentid: _this.mobileInfo.parentid,
+						editmobile: _this.mobileInfo.editmobile,
+						editcode: _this.mobileInfo.editcode,
+						smscodepass: _this.smsinfo.smscodepass
+					}
+				}).then((data) => {
+					uni.setStorageSync('userinfo', data.userinfo);
+					_this.toPage();
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			}
+			// E APP端登录注册
+		},
+		
+		onShareAppMessage: function(res) {
+			return {
+				title: "登录注册",
+				path: "/pages/login/login"
+			}
+		}
+	}
+</script>
+
+<style>
+	.login-page {
+		width: 100%;
+		height: 100vh;
+		background-color: #FFFFFF;
+	}
+
+	.cu-form-group .title {
+		min-width: calc(4em + 15px);
+	}
+</style>

+ 32 - 0
pages/login/sharepuser.vue

@@ -0,0 +1,32 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {}
+		},
+		onLoad: function(option) {
+			_this = this;
+			const parentid = option.parentid;
+			if ( isNaN(parentid)==false ){
+				uni.setStorageSync('parentid', parentid);
+			} else {
+				const scene = decodeURIComponent(option.scene);
+				if ( isNaN(scene)==false ){
+					uni.setStorageSync('parentid', scene);
+				}
+			}
+			uni.reLaunch({
+			    url: "/pages/my/my"
+			});
+		},
+	}
+</script>
+
+<style>
+</style>

+ 318 - 0
pages/login/worker.vue

@@ -0,0 +1,318 @@
+<template>
+	<view>
+		
+		<scroll-view scroll-x class="bg-white nav solid-bottom">
+			<view class="flex text-center">
+				<view class="cu-item flex-sub" :class="forminfo.wtype==1?'text-blue cur':''" @tap="tabSelect" data-wtype="1">个人雇主注册</view>
+				<view class="cu-item flex-sub" :class="forminfo.wtype==2?'text-blue cur':''" @tap="tabSelect" data-wtype="2">企业雇主注册</view>
+			</view>
+		</scroll-view>
+
+		<form>
+			<!-- <view class="cu-form-group margin-top-xs">
+				<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 微店图标</view>
+				<view class="cu-avatar radius bg-gray">
+					<avatar selWidth="640upx" selHeight="640upx" @upload="setTilpic" :avatarSrc="forminfo.tilpic" noTab="true" avatarStyle="width: 75upx; height: 75upx; border-radius: 5%;"></avatar>
+				</view>
+			</view> -->
+			
+			<view class="cu-form-group margin-top-sm">
+				<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 姓名</view>
+				<input placeholder="请输入..." data-field="realname" name="realname" :value="forminfo.realname" @input="setInput"></input>
+			</view>
+			<view class="cu-form-group">
+				<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 手机号</view>
+				<input placeholder="请输入..." data-field="mobile" name="mobile" :value="forminfo.mobile" @input="setInput"></input>
+			</view>
+			<!-- <view class="cu-form-group">
+				<view class="title"> 微信号</view>
+				<input placeholder="请输入..." data-field="weixin" name="weixin" :value="forminfo.weixin" @input="setInput"></input>
+			</view> -->
+
+			<!-- <view class="cu-form-group margin-top-sm">
+				<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 公司名称</view>
+				<input placeholder="请输入..." data-field="title" name="title" :value="forminfo.title" @input="setInput"></input>
+			</view> -->
+			<!-- <view class="cu-form-group">
+				<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 微店名称</view>
+				<input placeholder="请输入..." data-field="ftitle" name="ftitle" :value="forminfo.ftitle" @input="setInput"></input>
+			</view> -->
+			<view class="cu-form-group">
+				<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 用工地点</view>
+				<view style="text-align: right; flex: 1; font-size: 30rpx;">
+					<pickerAddress @change="regionChange">{{forminfo.region}}</pickerAddress>
+				</view>
+			</view>
+			<view class="cu-form-group">
+				<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 详细地址</view>
+				<input placeholder="请输入..." data-field="address" name="address" :value="forminfo.address" @input="setInput"></input>
+			</view>	
+			<block v-if="forminfo.wtype==1">
+				<view class="cu-form-group">
+					<view class="grid col-2 grid-square flex-sub">
+						<view class="bg-img solids" style="margin-bottom: 0rpx !important;" data-fieldimage="idcardzpic" @tap="chooseImage">
+							<text v-if="forminfo.idcardzpic==''" class='cuIcon-cameraadd'></text>
+							<image v-else :src="forminfo.idcardzpic" mode="aspectFill"></image>
+						</view> 
+						<view class="bg-img solids" style="margin-bottom: 0rpx !important;" data-fieldimage="idcardfpic" @tap="chooseImage">
+							<text v-if="forminfo.idcardfpic==''" class='cuIcon-cameraadd'></text>
+							<image v-else :src="forminfo.idcardfpic" mode="aspectFill"></image>
+						</view> 
+					</view>
+				</view>
+				<view class="cu-form-group" style="border-top: 0rpx; text-align: center;">
+					<view class="grid col-2 flex-sub">
+						<view>身份证正面</view>
+						<view>身份证反面</view>
+					</view>
+				</view>
+				<view class="cu-form-group align-start">
+					<view class="title">备注介绍</view>
+					<textarea maxlength="-1" placeholder="请输入..." data-field="details" name="details" :value="forminfo.details" @input="setInput"></textarea>
+				</view>	
+			</block>
+			<!-- <view class="cu-form-group align-start">
+				<view class="title">公司介绍</view>
+				<textarea maxlength="-1" placeholder="请输入..." data-field="details" name="details" :value="forminfo.details" @input="setInput"></textarea>
+			</view> -->
+
+			<block v-if="forminfo.wtype==2">
+				<view class="cu-form-group margin-top-sm">
+					<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 公司名称</view>
+					<input placeholder="请输入..." data-field="title" name="title" :value="forminfo.title" @input="setInput"></input>
+				</view>	
+				<view class="cu-form-group align-start">
+					<view class="title">公司介绍</view>
+					<textarea maxlength="-1" placeholder="请输入..." data-field="details" name="details" :value="forminfo.details" @input="setInput"></textarea>
+				</view>	
+				<view class="cu-bar bg-white margin-top">
+					<view class="action">
+						 <text class="text-red text-bold padding-right-xs">*</text> 
+						相关资质
+					</view>
+				</view>
+				<view class="cu-form-group">
+					<view class="grid col-3 grid-square flex-sub">
+						<view class="bg-img solids" style="margin-bottom: 0rpx !important;" data-fieldimage="picone" @tap="chooseImage">
+							<text v-if="forminfo.picone==''" class='cuIcon-cameraadd'></text>
+							<image v-else :src="forminfo.picone" mode="aspectFill"></image>
+						</view> 
+						<!-- <view class="bg-img solids" style="margin-bottom: 0rpx !important;" data-fieldimage="pictwo" v-if="forminfo.wtype==2" @tap="chooseImage">
+							<text v-if="forminfo.pictwo==''" class='cuIcon-cameraadd'></text>
+							<image v-else :src="forminfo.pictwo" mode="aspectFill"></image>
+						</view> 
+						<view class="bg-img solids" style="margin-bottom: 0rpx !important;" data-fieldimage="picthr" v-if="forminfo.wtype==2" @tap="chooseImage">
+							<text v-if="forminfo.picthr==''" class='cuIcon-cameraadd'></text>
+							<image v-else :src="forminfo.picthr" mode="aspectFill"></image>
+						</view> -->
+					</view>
+				</view>
+				<view class="cu-form-group" style="border-top: 0rpx; text-align: center;">
+					<view class="grid col-3 flex-sub">
+						<view>营业执照</view>
+						<!-- <view v-if="forminfo.wtype==2">派遣许可证</view>
+						<view v-if="forminfo.wtype==2">人力资源许可证</view> -->
+					</view>
+				</view>
+			</block>
+
+			<view class="padding flex flex-direction">
+				<button class="cu-btn bg-green margin-tb-sm lg" @tap="regWorker">立即提交</button>
+			</view>
+			<view class="padding"></view>
+		</form>
+
+	</view>
+</template>
+
+<script>
+	var _this;
+	import avatar from "@/components/yq-avatar/yq-avatar.vue";
+	import pickerAddress from "@/components/pickerAddress/pickerAddress.vue";
+	export default {
+		components: {
+			avatar,
+			pickerAddress
+		},
+		data() {
+			return {
+				isRotate: false,
+				userinfo: {},
+				forminfo: {
+					wtype: 1,
+					title: "",
+					ftitle: "",
+					tilpic: "",
+
+					realname: "",
+					mobile: "",
+					weixin: "",
+
+					province: "",
+					city: "",
+					district: "",
+					region: "请选择...",
+					address: "",
+					picone: "",
+					pictwo: "",
+					picthr: "",
+					details: "",
+					idcardzpic: "",
+					idcardfpic: "",
+				}
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.userinfo = _this.checkLogin("/pages/my/my");
+			if (_this.userinfo === false) {
+				return false;
+			}
+			_this.forminfo.wtype =option.wtype;
+			_this.forminfo.realname = _this.userinfo.realname;
+			_this.forminfo.mobile = _this.userinfo.mobile;
+		},
+		methods: {
+			// 填写字段
+			tabSelect: function(e) {
+				_this.forminfo.wtype = e.currentTarget.dataset.wtype;
+			},
+
+			// 图片上传
+			chooseImage: function(e) {
+				var fieldimage = e.currentTarget.dataset.fieldimage;
+				uni.chooseImage({
+					count: 1,
+					sizeType: ['original', 'compressed'],
+					sourceType: ['album'],
+					success: (res) => {
+						_this.$req.ajaxFile({
+							path: "attachment/tplfieldimage",
+							title: '正在上传',
+							filePath: res.tempFilePaths[0],
+							fileName: 'file',
+						}).then((filedata) => {
+							var data = JSON.parse(filedata.data);
+							_this.forminfo[fieldimage] = data.data.src;
+						}).catch((err) => {
+							uni.showModal({
+								title: '信息提示',
+								content: err,
+								showCancel: false
+							});
+						});
+					}
+				});
+			},
+			
+			setTilpic: function(rsp) {
+				_this.$req.ajaxFile({
+					path: "attachment/tplfieldimage",
+					title: '正在上传',
+					filePath: rsp.path,
+					fileName: 'file',
+				}).then((filedata) => {
+					var data = JSON.parse(filedata.data);
+					_this.forminfo.tilpic = data.data.src;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			setInput: function(e) {
+				var field = e.currentTarget.dataset.field;
+				_this.forminfo[field] = e.detail.value;
+			},
+			regionChange: function(data) {
+				_this.forminfo.province = data.data[0];
+				_this.forminfo.city = data.data[1];
+				_this.forminfo.district = data.data[2];
+				_this.forminfo.region = data.data.join(' ');
+			},
+			
+			// 提交注册
+			regWorker: function() {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo === false) {
+					return false;
+				}
+				if (_this.isRotate) {
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "wlogin/regworker",
+					title: "正在提交注册",
+					data: {
+						userid: _this.userinfo.id,
+						wtype: _this.forminfo.wtype,
+						title: _this.forminfo.title,
+						ftitle: _this.forminfo.ftitle,
+						tilpic: _this.forminfo.tilpic,
+						realname: _this.forminfo.realname,
+						mobile: _this.forminfo.mobile,
+						weixin: _this.forminfo.weixin,
+						province: _this.forminfo.province,
+						city: _this.forminfo.city,
+						district: _this.forminfo.district,
+						address: _this.forminfo.address,
+						picone: _this.forminfo.picone,
+						pictwo: _this.forminfo.pictwo,
+						picthr: _this.forminfo.picthr,
+						idcardzpic: _this.forminfo.idcardzpic,
+						idcardfpic: _this.forminfo.idcardfpic,
+						details: _this.forminfo.details
+					}
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: '您的公司已注册成功,请耐心等待管理员的审核!',
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								uni.reLaunch({
+									url: "/pages/index/home"
+								});
+							}
+						}
+					});
+					// uni.setStorageSync('identityinfo', false);
+					// uni.setStorageSync('workerinfo', data.worker);
+					// uni.switchTab({
+					// 	url: "/pages/index/home"
+					// });
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	.cu-form-group .title {
+		min-width: calc(5em + 15px);
+	}
+	
+	.cu-form-group input {
+		text-align: right;
+	}
+
+	.fieldpic {
+		width: 150rpx;
+		height: 150rpx;
+	}
+	.fieldpictil {
+		width: 230rpx;
+		text-align: center;
+	}
+</style>

+ 190 - 0
pages/mall/detail.vue

@@ -0,0 +1,190 @@
+<template>
+	<view>
+
+
+		<swiper class="screen-swiper square-dot" :indicator-dots="true" :circular="true" :autoplay="true" interval="5000"
+		 duration="500">
+			<swiper-item v-for="(item,index) in goods.picall" :key="index">
+				<image :src="item" mode="aspectFill"></image>
+			</swiper-item>
+		</swiper>
+
+
+		<view class="echo-article-title bg-white">
+			<text class="text-xl">{{goods.title}}</text>
+		</view>
+		<view class="echo-article-meta bg-white">
+			<text>{{goods.summary}}</text>
+		</view>
+		<view class="echo-article-meta bg-white">
+			<text class="text-xl text-red">{{goods.integral}}积分 + ¥{{goods.paymoney}}</text>
+		</view>
+		<view class="echo-article-meta bg-white">
+			<view class="echo-article-meta-left">
+				<text>库存: {{goods.stock}}件</text>
+			</view>
+			<view class="echo-article-meta-right">
+				<text>已兑出:{{goods.sales}}件</text>
+			</view>
+		</view>
+		<view class="bg-white padding-top-xs padding-bottom-sm margin-bottom"></view>
+
+		<view class="cu-bar bg-white solids-bottom">
+			<view class="action">
+				<text class="cuIcon-titles text-blue"></text> 商品详情
+			</view>
+		</view>
+		<view class="echo-article-details bg-white">
+			<u-parse :content="goods.details" noData="详情内容..." @navigate="navigate"></u-parse>
+		</view>
+
+		<view class="padding-xl"></view>
+		<view class="cu-bar bg-white tabbar border shop foot">
+			<view class="bg-white submit">
+				<view class="btn-group text-xxl flex justify-around">
+					<view class="cuIcon-move" @tap="setNumber(-1)"></view>
+					<view>{{buynumber}}</view>
+					<view class="cuIcon-add" @tap="setNumber(1)"></view>
+				</view>
+			</view>
+			<view class="bg-orange submit  flex-wrap">
+				<view style="width: 100%;">{{integral}} 积分</view>
+				<view style="width: 100%;">¥{{paymoney}}</view>
+			</view>
+			<view class="bg-red submit" @tap="setOrder">立即订购</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import uParse from '@/components/gaoyia-parse/parse.vue';
+	var _this;
+	export default {
+		components: {
+			uParse
+		},
+		data() {
+			return {
+				goods: {},
+				
+				isRotate: false,
+				buynumber: 1,
+				integral: 0,
+				paymoney: 0.00
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			var goodsid = option.goodsid || 0;
+			_this.$req.ajax({
+				path: "mall/getgoods",
+				data: {
+					goodsid: goodsid
+				}
+			}).then((data) => {
+				_this.goods = data.goods;
+				_this.setNumber(0);
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: _this.goods.title,
+				path: "/pages/mall/detail?goodsid=" + _this.goods.id
+			}
+		},
+		methods: {
+			setOrder: function() {
+				if(_this.isRotate){
+					return false;
+				}
+				_this.isRotate = true;
+				var userinfo = uni.getStorageSync('userinfo') || false;
+				if (userinfo == false) {
+					uni.showModal({
+						title: '信息提示',
+						content: "你还未登录账号。",
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								uni.navigateTo({
+									url: '/pages/login/login'
+								});
+								_this.isRotate = false;
+							}
+						}
+					});
+					return false;
+				}
+				var msg = "提交该订单将会扣除" + _this.integral + "积分";
+				if (_this.paymoney != 0.00) {
+					msg += ",并需要支付¥" + _this.paymoney + "元";
+				}
+				msg += "。确认要提交订单吗?";
+				uni.showModal({
+					title: '信息提示',
+					content: msg,
+					success: function(res) {
+						if (res.confirm) {
+							_this.$req.ajax({
+								path: "mall/setorder",
+								data: {
+									goodsid: _this.goods.id,
+									userid: userinfo.id,
+									buynumber: _this.buynumber
+								}
+							}).then((data) => {
+								uni.navigateTo({
+									url: '/pages/mall/order?orderid=' + data.orderid
+								});
+								_this.isRotate = false;
+							}).catch((err) => {
+								uni.showModal({
+									title: '信息提示',
+									content: err,
+									showCancel: false
+								});
+							});
+						} else if (res.cancel) {
+							_this.isRotate = false;
+						}
+					}
+				});
+
+			},
+
+
+			setNumber: function(val) {
+				var newbuynumber = parseInt(_this.buynumber) + val;
+				newbuynumber = Math.max(1, newbuynumber);
+				newbuynumber = Math.min(newbuynumber, parseInt(_this.goods.stock));
+				_this.integral = (newbuynumber * _this.goods.integral);
+				_this.paymoney = (newbuynumber * _this.goods.paymoney).toFixed(2);
+				_this.buynumber = newbuynumber;
+			},
+
+			navigate: function(href, e) {
+				// #ifdef H5
+				location.href = href;
+				// #endif
+				// #ifndef H5
+				uni.navigateTo({
+					url: '/pages/tool/webview?pagesrc=' + encodeURIComponent(href)
+				});
+				// #endif
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.screen-swiper {
+		height: 750rpx;
+	}
+</style>

+ 171 - 0
pages/mall/mall.vue

@@ -0,0 +1,171 @@
+<template>
+	<view>
+
+		<scroll-view scroll-x class="bg-white nav text-center solid-bottom echo-fixed-top">
+			<view class="cu-item" :class="0==cateid && userid==0?'text-blue cur':''" @tap="tabSelect" data-id="0" data-userid="0"> 全部 </view>
+			<view class="cu-item" v-if="userinfo!=false" :class="0==cateid && userid==userinfo.id?'text-green cur':''" @tap="tabSelect" data-id="0" :data-userid="userinfo.id"> 我可兑购的 </view>
+			<view class="cu-item" :class="item.id==cateid && userid==0?'text-blue cur':''" v-for="(item, index) in allcate" :key="item.id" @tap="tabSelect" :data-id="item.id" data-userid="0">
+				{{item.title}}
+			</view>
+		</scroll-view>
+		<view class="echo-fixed-top-empty"></view>
+
+		<view class="padding-sm bg-white">
+			<view class="echo-img-card">
+				<block v-for="(item,index) in plist" :key="index">
+					<navigator class="item" :url="'/pages/mall/detail?goodsid='+item.id">
+						<image :src="item.tilpic" mode="aspectFill"></image>
+						<view class="title">{{item.title}}</view>
+						<view class="price">{{item.integral}}积分 + ¥{{item.paymoney}}</view>
+					</navigator>
+				</block>
+			</view>
+		</view>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		
+		<button class="cu-btn bg-blue lg shadow echo-gomyorder" @tap="goMyOrder"> 我的订单 </button>
+
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				userinfo: false,
+				cateid: 0,
+				userid: 0,
+				allcate: [],
+
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.cateid = option.cateid || 0;
+			_this.userid = option.userid || 0;
+			_this.userinfo = uni.getStorageSync('userinfo') || false;
+			_this.$req.ajax({
+				path: "mall/allcate",
+			}).then((data) => {
+				_this.allcate = data.allcate;
+				_this.getMore();
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false
+				});
+			});
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "积分商城",
+				path: "/pages/mall/mall"
+			}
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			goMyOrder: function() {
+				uni.navigateTo({
+					url: "/pages/mall/myorder"
+				});
+			},
+			tabSelect: function(e) {
+				_this.cateid = e.currentTarget.dataset.id;
+				_this.userid = e.currentTarget.dataset.userid;
+				_this.pageRefresh();
+			},
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "mall/listgoods",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						cateid: _this.cateid,
+						userid: _this.userid
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goDetail: function(goodsid) {
+				uni.navigateTo({
+					url: '/pages/mall/detail?goodsid=' + goodsid
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	.echo-img-card {
+		display: flex;
+		flex-direction: row;
+		flex-wrap: wrap;
+		justify-content: space-between;
+	}
+
+	.echo-img-card>.item {
+		width: 340rpx;
+		margin: 15rpx 0rpx 30rpx 0rpx;
+		overflow: hidden;
+		font-size: 0;
+		position: relative;
+	}
+
+	.echo-img-card>.item>image {
+		width: 340rpx;
+		height: 340rpx;
+	}
+
+	.echo-img-card>.item>.title {
+		width: 100%;
+		font-size: 28rpx;
+		margin-top: 3px;
+		height: 80rpx;
+		line-height: 40rpx;
+		overflow: hidden;
+		color: #333333;
+	}
+
+	.echo-img-card>.item>.price {
+		line-height: 46rpx;
+		color: #FF0036;
+		font-size: 32rpx;
+	}
+</style>

+ 215 - 0
pages/mall/myorder.vue

@@ -0,0 +1,215 @@
+<template>
+	<view>
+
+		<scroll-view scroll-x class="bg-white nav text-center solid-bottom echo-fixed-top">
+			<view class="cu-item flex-sub" data-status="0" :class="status=='0'?'text-orange cur':''" @tap="tabSelect">全部</view>
+			<view class="cu-item flex-sub" data-status="2" :class="status=='2'?'text-orange cur':''" @tap="tabSelect">待支付</view>
+			<view class="cu-item flex-sub" data-status="3" :class="status=='3'?'text-orange cur':''" @tap="tabSelect">已支付</view>
+			<view class="cu-item flex-sub" data-status="4" :class="status=='4'?'text-orange cur':''" @tap="tabSelect">已完成</view>
+			<view class="cu-item flex-sub" data-status="5" :class="status=='5'?'text-orange cur':''" @tap="tabSelect">已退单</view>
+			<view class="cu-item flex-sub" data-status="1" :class="status=='1'?'text-orange cur':''" @tap="tabSelect">已取消</view>
+		</scroll-view>
+		<view class="echo-fixed-top-empty"></view>
+
+		<block v-for="(item,index) in plist" :key="item.id">
+			<view class="cu-item bg-white margin-top-sm">
+				<view class="cu-list menu-avatar">
+					<view class="cu-item">
+						<view class="cu-avatar lg" :style="'background-image:url('+ item.tilpic +');'"></view>
+						<view class="content echo-order-venue">
+							<view class="text-grey">
+								<text class="text-cut">{{item.title}}</text>
+							</view>
+							<view class="text-gray text-sm flex">
+								<view class="text-cut">
+									订单号:{{item.ordersn}}
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+
+				<view class="cu-list menu sm-border solid-bottom" style="margin-top: 0rpx;">
+					<view class="cu-item">
+						<view class="content">
+							<text class="text-grey">订单状态</text>
+						</view>
+						<view class="action">
+							<text class="text-lg text-right basis-sm text-grey" v-if="item.status==1">已取消</text>
+							<text class="text-lg text-right basis-sm text-red" v-if="item.status==2">待支付</text>
+							<text class="text-lg text-right basis-sm text-green" v-if="item.status==3">已支付</text>
+							<text class="text-lg text-right basis-sm text-green" v-if="item.status==4">已完成</text>
+							<text class="text-lg text-right basis-sm text-orange" v-if="item.status==5">已退单</text>
+						</view>
+					</view>
+					<view class="cu-item">
+						<view class="content">
+							<text class="text-grey">兑购数量</text>
+						</view>
+						<view class="action">
+							<text class="text-lg">{{item.buynumber}} 件</text>
+						</view>
+					</view>
+					<view class="cu-item">
+						<view class="content">
+							<text class="text-grey">积分&金额</text>
+						</view>
+						<view class="action">
+							<text class="text-lg">{{item.integral}}积分 + ¥{{item.paymoney}}</text>
+						</view>
+					</view>
+				</view>
+				<view class="solid-top grid text-center col-2" v-if="item.status==1">
+					<view class="padding-tb text-grey solid-right" @tap="deleteOrder(item.id)">删除订单</view>
+					<view class="padding-tb" @tap="goPage('/pages/mall/order?orderid='+item.id)">订单详情</view>
+				</view>
+				<view class="solid-top grid text-center col-2" v-else-if="item.status==2">
+					<view class="padding-tb text-grey solid-right" @tap="closeOrder(item.id)">取消订单</view>
+					<view class="padding-tb text-red" @tap="goPage('/pages/mall/order?orderid='+item.id)">立即支付</view>
+				</view>
+				<view class="solid-top grid text-center col-1" v-else>
+					<view class="padding-tb" @tap="goPage('/pages/mall/order?orderid='+item.id)">订单详情</view>
+				</view>
+			</view>
+		</block>
+		<uni-load-more :status="pstatus"></uni-load-more>
+
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				userinfo: false,
+				status: 0,
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(option) {
+			_this = this;
+			var userinfo = uni.getStorageSync('userinfo') || false;
+			if (userinfo == false) {
+				uni.redirectTo({
+					url: '/pages/login/login'
+				});
+				return false;
+			}
+			_this.userinfo = userinfo;
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			closeOrder: function(orderid) {
+				_this.$req.ajax({
+					path: "mall/closeorder",
+					data: {
+						orderid: orderid,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: '订单取消成功。',
+						showCancel: false,
+						success: function(res) {
+							_this.pageRefresh();
+						}
+					});
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			deleteOrder: function(orderid) {
+				_this.$req.ajax({
+					path: "mall/deleteorder",
+					data: {
+						orderid: orderid,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: '订单删除成功。',
+						showCancel: false,
+						success: function(res) {
+							_this.pageRefresh();
+						}
+					});
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "mall/listorder",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						userid: _this.userinfo.id,
+						status: _this.status
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			tabSelect: function(e) {
+				_this.status = e.currentTarget.dataset.status;
+				_this.pageRefresh();
+			},
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			goPage: function(pageurl) {
+				uni.navigateTo({
+					url: pageurl
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	.cu-list.menu-avatar>.cu-item .content {
+		width: calc(100% - 96rpx - 60rpx - 20rpx) !important;
+	}
+</style>

+ 272 - 0
pages/mall/order.vue

@@ -0,0 +1,272 @@
+<template>
+	<view>
+
+		
+
+
+		<view class="cu-card article no-card margin-tb">
+			<view class="cu-item shadow">
+				<view class="title">
+					<view class="text-cut">订单号:{{order.ordersn}}</view>
+				</view>
+				<view class="content">
+					<image :src="order.tilpic" mode="aspectFill"></image>
+					<view class="desc">
+						<view class="text-content">{{order.title}}</view>
+						<view>
+							<view class="cu-tag bg-red light sm round">{{order.gintegral}}积分 + ¥{{order.gpaymoney}}</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+
+
+		<view class="cu-list menu sm-border margin-bottom">
+			<view class="cu-item">
+				<view class="content">
+					<text class="cuIcon-tag text-grey"></text>
+					<text class="text-grey">兑购量</text>
+				</view>
+				<view class="action">
+					<text class="text-lg">{{order.buynumber}} 件</text>
+				</view>
+			</view>
+			<view class="cu-item">
+				<view class="content">
+					<text class="cuIcon-choiceness text-grey"></text>
+					<text class="text-grey">订单积分</text>
+				</view>
+				<view class="action">
+					<text class="text-lg" v-if="order.status==2">已扣除</text> <text class="text-lg"> {{order.integral}}积分</text>
+				</view>
+			</view>
+			<view class="cu-item">
+				<view class="content">
+					<text class="cuIcon-moneybag text-grey"></text>
+					<text class="text-grey">订单金额</text>
+				</view>
+				<view class="action">
+					<text class="text-lg">¥ {{order.paymoney}}</text>
+				</view>
+			</view>
+		</view>
+
+		<radio-group class="block margin-bottom" v-if="order.status==2">
+			<view class="cu-form-group">
+				<view class="title padding-left-xs">微信支付</view>
+				<radio class="checked" checked="true"></radio>
+			</view>
+		</radio-group>
+		<view class="cu-list menu sm-border margin-bottom" v-if="order.status>=3">
+			<view class="cu-item">
+				<view class="content">
+					<text class="cuIcon-pay text-grey"></text>
+					<text class="text-grey">支付方式</text>
+				</view>
+				<view class="action">
+					<text class="text-lg">微信支付</text>
+				</view>
+			</view>
+		</view>
+		
+		<view class="cu-list menu sm-border margin-bottom">
+			<view class="cu-item arrow">
+				<view class="content">
+					<text class="cuIcon-location text-grey"></text>
+					<text class="text-grey">收件信息</text>
+				</view>
+				<view class="action" @tap="selAddress" v-if="order.status==2">
+					<text class="text-lg">点击选择</text>
+				</view>
+			</view>
+			<view class="padding-lr padding-tb-sm bg-white" v-if="order.username!=''">
+				<view class="text-bold margin-bottom-sm">
+					<text>{{order.username}}</text>
+					<text class="margin-left">{{order.usermobile}}</text>
+				</view>
+				<view>
+					<text>{{order.province}} {{order.city}} {{order.county}} {{order.detailinfo}}</text>
+				</view>
+			</view>
+		</view>
+			
+		<view class="padding-tb padding-lr solid-bottom bg-white text-red" v-if="order.mallGoods.oremark!=''">{{order.mallGoods.oremark}}</view>
+		<view class="cu-form-group" v-if="order.status==2">
+			<textarea maxlength="-1" @input="remarkInput" placeholder="请输入备注信息..." :value="order.remark"></textarea>
+		</view>
+		<view class="cu-form-group padding-tb" v-else>
+			<text>{{order.remark}}</text>
+		</view>
+
+		<view class="padding-sm"></view>
+		<view class="padding-xl"></view>
+		<view class="cu-bar bg-white tabbar border shop foot" v-if="order.status==2">
+			<view class="bg-white submit flex align-end">
+				<text class="text-sm">需支付金额:</text>
+				<text class="text-lg text-red">¥{{order.paymoney}}元</text>
+			</view>
+			<view class="bg-red submit" @click="payOrder">立即支付</view>
+		</view>
+		<view class="cu-bar bg-white tabbar border shop foot" v-else>
+			<view class="bg-white submit flex align-end">
+				<text class="text-sm">订单金额:</text>
+				<text class="text-lg text-red">¥{{order.paymoney}}元</text>
+			</view>
+			<view class="bg-red submit" v-if="order.status==1">订单已取消</view>
+			<view class="bg-red submit" v-if="order.status==3">订单已支付</view>
+			<view class="bg-red submit" v-if="order.status==4">订单已完成</view>
+			<view class="bg-red submit" v-if="order.status==5">订单已退单</view>
+		</view>
+
+	</view>
+</template>
+
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				isRotate: false,
+				userinfo: false,
+				order: {}
+			};
+		},
+		onLoad: function(option) {
+			_this = this;
+			var userinfo = uni.getStorageSync('userinfo') || false;
+			if (userinfo == false) {
+				uni.redirectTo({
+					url: '/pages/login/login'
+				});
+				return false;
+			}
+			_this.userinfo = userinfo;
+			var orderid = option.orderid || 0;
+			_this.$req.ajax({
+				path: "mall/getorder",
+				data: {
+					orderid: orderid,
+					userid: userinfo.id
+				}
+			}).then((data) => {
+				_this.order = data.order;
+			}).catch((err) => {
+				uni.showModal({
+					title: '信息提示',
+					content: err,
+					showCancel: false,
+					success: function(res) {
+						uni.redirectTo({
+							url: '/pages/mall/myorder'
+						});
+					}
+				});
+			});
+
+		},
+		methods: {
+			payOrder: function(e) {
+				if (_this.isRotate) {
+					return false;
+				}
+				_this.isRotate = true;
+				_this.$req.ajax({
+					path: "mall/payorder",
+					title: "支付处理中",
+					data: {
+						orderid: _this.order.id,
+						userid: _this.userinfo.id,
+						remark: _this.order.remark
+					}
+				}).then((data) => {
+					console.log("data: " + JSON.stringify(data));
+					if (data.ostatus == 3) {
+						uni.showModal({
+							title: '信息提示',
+							content: '支付成功。',
+							showCancel: false,
+							success: function(res) {
+								uni.redirectTo({
+									url: '/pages/mall/myorder'
+								});
+							}
+						});
+					} else if (data.ostatus == 2) {
+						var payinfo = data.payinfo;
+						uni.requestPayment({
+							provider: 'wxpay',
+							timeStamp: payinfo.timeStamp.toString(),
+							nonceStr: payinfo.nonceStr,
+							package: payinfo.package,
+							signType: payinfo.signType,
+							paySign: payinfo.paySign,
+							success: function(res) {
+								uni.showModal({
+									title: '信息提示',
+									content: '支付成功。',
+									showCancel: false,
+									success: function(res) {
+										uni.redirectTo({
+											url: '/pages/mall/myorder'
+										});
+									}
+								});
+							},
+							fail: function(err) {
+								console.log('fail:' + JSON.stringify(err));
+							}
+						});
+					}
+					_this.isRotate = false;
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			selAddress: function(e) {
+				wx.chooseAddress({
+					success(res) {
+						_this.$req.ajax({
+							path: "mall/setorderaddress",
+							data: {
+								orderid: _this.order.id,
+								userid: _this.userinfo.id,
+								username: res.userName,
+								usermobile: res.telNumber,
+								province: res.provinceName,
+								city: res.cityName,
+								county: res.countyName,
+								detailinfo: res.detailInfo,
+							}
+						}).then((data) => {
+							_this.order = data.order;
+						}).catch((err) => {
+							uni.showModal({
+								title: '信息提示',
+								content: err,
+								showCancel: false,
+								success: function(res) {
+									uni.redirectTo({
+										url: '/pages/mall/myorder'
+									});
+								}
+							});
+						});
+					}
+				});
+			},
+			remarkInput: function(e) {
+				_this.order.remark = e.detail.value
+			},
+		},
+	}
+</script>
+
+<style>
+</style>

+ 72 - 0
pages/my/about.vue

@@ -0,0 +1,72 @@
+<template name="myabout">
+	<view class="cu-list menu sm-border">
+		<view class="cu-item arrow" @click="goPage('/pages/tool/sinpage?field=aboutus')">
+			<view class="content">
+				<text class="cuIcon-info text-grey"></text>
+				<text>关于我们</text>
+			</view>
+		</view>
+		<view class="cu-item arrow" @click="goPage('/pages/tool/sinpage?field=service')">
+			<view class="content">
+				<text class="cuIcon-text text-grey"></text>
+				<text>用户协议</text>
+			</view>
+		</view>
+		<view class="cu-item arrow" @click="goPage('/pages/tool/sinpage?field=privacy')">
+			<view class="content">
+				<text class="cuIcon-safe text-grey"></text>
+				<text>隐私政策</text>
+			</view>
+		</view>
+		<view class="cu-item arrow" @click="makeTelephone">
+			<view class="content">
+				<text class="cuIcon-phone text-grey"></text>
+				<text>客服电话</text>
+			</view>
+		</view>
+		<view class="cu-item arrow" @tap="loginOut">
+			<view class="content">
+				<text class="cuIcon-exit text-grey"></text>
+				<text>退出登录</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+			}
+		},
+		onLoad: function() {
+			_this = this;
+			//#ifdef APP-PLUS
+			_this.appplatform = uni.getSystemInfoSync().platform;
+			//#endif
+		},
+		methods: {
+			// 咨询电话
+			makeTelephone: function() {
+				var telephone = '19959780161';
+				uni.makePhoneCall({
+					phoneNumber: telephone
+				});
+			},
+			goPage: function(pageurl) {
+				uni.navigateTo({
+					url: pageurl,
+					fail: function() {
+						uni.switchTab({
+							url: pageurl
+						});
+					}
+				});
+			},
+		},
+	}
+</script>
+
+<style>
+</style>

+ 122 - 0
pages/my/collect.vue

@@ -0,0 +1,122 @@
+<template>
+	<view>
+
+		<block v-for="(item,index) in plist" :key="index">
+			
+			<view class="cu-card article no-card solid-bottom">
+				<view class="cu-item shadow">
+					<view class="title" @click="goDetail(item.article.id)"><view class="text-cut">{{item.article.title}}</view></view>
+					<view class="content">
+						<image :src="item.article.tilpic" mode="aspectFill" @click="goDetail(item.article.id)"></image>
+						<view class="desc">
+							<view class="text-content" @click="goDetail(item.article.id)">{{item.article.summary}}</view>
+							<view class="flex justify-between">
+								<view class="text-gray text-sm">收藏于:{{item.createtime}}</view>
+								<view class="cu-tag bg-red light sm round" @click="delCollect(index)">删除</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</block>
+
+		
+		<uni-load-more :status="pstatus"></uni-load-more>
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				userinfo: {},
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			_this.userinfo = _this.checkLogin("/pages/my/collect");
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			getMore: function() {
+				_this.$req.ajax({
+					path: "my/listcollect",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goDetail: function(articleid) {
+				uni.navigateTo({
+					url: '/pages/article/detail?articleid=' + articleid
+				});
+			},
+			delCollect: function(index) {
+				console.log("_this.plist[index].id: " + JSON.stringify(_this.plist[index].id));
+				_this.$req.ajax({
+					path: "my/delcollect",
+					data: {
+						id:  _this.plist[index].id,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					uni.showModal({
+						title: '信息提示',
+						content: '收藏移除成功',
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								_this.plist.splice(index, 1);
+							}
+						}
+					});
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+</style>

+ 97 - 0
pages/my/feedback.vue

@@ -0,0 +1,97 @@
+<template>
+	<view>
+		<form>
+			<view class="cu-form-group margin-top">
+				<view class="title">姓名</view>
+				<input placeholder="请输入姓名" data-field="name" @input="bindInput"></input>
+			</view>
+			<view class="cu-form-group">
+				<view class="title">联系方式</view>
+				<input placeholder="请输入联系方式" data-field="mobile" @input="bindInput"></input>
+			</view>
+			<view class="cu-form-group">
+				<textarea maxlength="-1" @input="bindInput" data-field="content" placeholder="请输入您的意见和建议"></textarea>
+			</view>
+			<view class="cu-bar bg-white justify-end margin-top">
+				<view class="action">
+					<button class="cu-btn bg-green margin-left" @tap="subModal">确定</button>
+				</view>
+			</view>
+		</form>
+	</view>
+</template>
+
+<script>
+	var _this;
+	
+	export default {
+		data() {
+			return {
+				userinfo: {},
+				info: {
+					name: '',
+					mobile: '',
+					content: '',
+					userid: 0,
+				},
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			_this.userinfo = _this.checkLogin("/pages/my/myinfo");
+			_this.info.userid = _this.userinfo.id;
+		},
+		methods: {
+			textareaAInput(e) {
+				_this.info.content = e.detail.value;
+			},
+			bindInput: function(e) {
+				_this.info[e.currentTarget.dataset.field] = e.detail.value;
+			},
+			subModal() {
+				if (_this.info.name == '') {
+					uni.showModal({
+						title: '信息提示',
+						content: '姓名不能为空',
+						showCancel: false
+					});
+					return false;
+				}
+				if (_this.info.mobile == '') {
+					uni.showModal({
+						title: '信息提示',
+						content: '联系方式不能为空',
+						showCancel: false
+					});
+					return false;
+				}
+				if (_this.info.content == '') {
+					uni.showModal({
+						title: '信息提示',
+						content: '反馈内容不能为空',
+						showCancel: false
+					});
+					return false;
+				}
+				_this.$req.ajax({
+					path: "my/feedback",
+					data: _this.info,
+				}).then((data) => {
+					uni.navigateBack();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	.cu-form-group .title {
+		min-width: calc(4em + 30rpx);
+	}
+</style>

+ 176 - 0
pages/my/getmoney.vue

@@ -0,0 +1,176 @@
+<template>
+	<view>
+		<view class="padding bg-blue">
+			<view class="text-center padding-top">
+				<view class="text-sl padding-bottom-xs">{{user_balance}}</view>
+				<view>
+					余额
+				</view>
+			</view>
+			<view class="cu-list grid col-3 no-border">
+			    <view class="cu-item" v-for="(v,k) in param">
+					<view class="money-box" @click="cash(k)">
+					  {{v.money}}元
+					  <view class="cu-tag badge">
+						{{v.type == 1 ? '总共' : '每天'}}
+						{{v.num}}次
+					  </view>
+					</view>
+			    </view>
+			</view>
+		</view>
+
+		<view class="cu-list menu">
+			<block v-for="(item,index) in plist" :key="index">
+				<view class="cu-item">
+					<view class="content padding-tb-sm padding-right-sm">
+						<view>
+							{{item.remark}}
+						</view>
+						<view class="text-gray text-sm">{{item.createtime}}</view>
+					</view>
+					<view class="action">{{item.money}}元</view>
+				</view>
+			</block>
+		</view>
+		
+		<uni-load-more :status="pstatus"></uni-load-more>
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+import { userInfo } from "os";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				userinfo: {},
+				param: [],
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: []
+			};
+		},
+		onLoad: function(){ 
+			_this = this;
+			_this.userinfo = _this.checkLogin("/pages/my/getmoney");
+			if (_this.userinfo===false){
+				return false;
+			}
+			_this.myGetmoney();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			getMore: function() {
+				_this.$req.ajax({
+					path: "my/getmoneylist",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						userid: _this.userinfo.id
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			myGetmoney: function() {
+				_this.$req.ajax({
+					path: "my/getmoneyparam",
+					data: {
+						userid: _this.userinfo.id 
+					}
+				}).then((data) => {
+					if (data.getmoney.length === 0) {
+						uni.showModal({
+							title: '信息提示',
+							content: '请联系管理员配置参数',
+							showCancel: false,
+							success: (res) => {
+								uni.navigateBack();
+							}  
+						});
+						return false;
+					}
+					_this.param = data.getmoney;
+					_this.getMore();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			cash: function(index) {
+				uni.showModal({
+					title: '信息提示',
+					content: '确定要提现?',
+					showCancel: true,
+					success: (res) => {
+						_this.$req.ajax({
+							path: "my/cash",
+							data: {
+								index: index,
+								userid: _this.userinfo.id
+							}
+						}).then((data) => {
+							_this.userinfo = data;
+							uni.setStorageSync('userinfo', data);
+							_this.ppage = 1;
+							_this.pstatus = 'more';
+							_this.plist = [];
+							_this.getMore();
+							uni.showModal({
+								title: '提现成功',
+								content: '到账略有延迟,如果长时间未到账,请联系管理员',
+								showCancel: false
+							});
+						}).catch((err) => {
+							uni.showModal({
+								title: '信息提示',
+								content: err,
+								showCancel: false
+							});
+						});
+					}  
+				});
+			}
+		},
+		computed: {
+			user_balance() {
+				let balance = parseFloat(this.userinfo.balance);
+				return balance.toFixed(2);
+			}
+		}
+	}
+</script>
+
+<style>
+	.money-box{width:80%;height:60rpx;line-height:60rpx;margin:0 auto;border-radius: 5rpx;border:1rpx solid #eee;font-size:40rpx;color:black;}
+</style>

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